TIL 2022/06/22

김병영·2022년 6월 22일
0

TIL

목록 보기
12/19
post-thumbnail

1일1로그 100일완성 IT지식

028 구글 같은 서비스는 어떻게 개발할까?

프로그램을 개발할 때 집을 짓는 것처럼 완전히 처음부터 새로 만들어지지 않는다. 다른 사람들이 만들어 놓은 여러 가지 구성 요소를 바로 구해서 사용할 수 있다. 가장 단순한 수준에서 프로그래밍 언어는 함수(function)을 제공한다. 함수는 그 내부 작동 방식을 모르더라도 프로그램에 사용할 수 있는 형태로 제공된다.

  • 라이브러리 : 연관된 함수들의 모음. API(Application Programming Interface)로 프로그래머에게 제공. 요즘 대규모 시스템은 복잡한 소프트웨어 라이브러리를 잘 다룰 수 있도록 SDK(Software Development Kit)를 포함한다.

    API : 포함하는 함수와 더불어 함수의 용도가 무엇인지, 함수를 어떻게 사용해야 하는지, 어떤 입력 데이터를 요구하는지, 어떤 값을 만들어 내는지를 나열

029 구글과 오라클의 저작권 소송

지적재산권은 발명이나 저작 같은 개인의 창작 활동에서 생겨난 다양한 종류의 무형 자산을 일컫는다. 소프트웨어는 지적 재산권의 중요한 예다. 소프트웨어에는 지적 재산권을 보호하는 몇 가지 법적 메커니즘이 있는데 영업 비밀, 상표, 저작권, 특허, 라이선스가 포함된다.

  • 영업 비밀(trade secret) : 지적 재산권은 소유자만 그 비밀을 보유하고, 기밀 유지 협약서 같은 법적 구속력이 있는 계약에 의해서만 다른 이에게 공개된다. 소프트웨어에서는 파워포인트나 포토샵 같은 주요 시스템의 구현 코드가 영업 비밀에 해당한다.

  • 상표(trademark) : 회사의 상품이나 서비스를 구별해 주는 단어나 문구, 이름, 로고, 특정한 생삭을 의미. 맥 노트북 표면의 빛나는 음각 로고, 마이크로소프트의 프로그램에 나타나는 4색 로고 등이 있다.

  • 저작권(copyright) : 다른 이들이 복제하지 못하도록 창작물을 보호하며, 창작자에게 제한된 기간에 걸쳐 작품을 활용하고 수익을 얻을 권리. 프로그램의 서식과 모든 변수의 이름만 바꾸는 것은 침해에 해당하지만 교묘하게 변경하면 침해 여부가 모호해지고 값비싼 법적 절차를 통해서만 해결할 수 있다.

  • 특허(patent) : 발명에 대한 법적 보호를 제공한다. 애초엔 소프트웨어, 즉 알고리즘과 프로그램은 특허를 받을 수 없었다. 소프트웨어는 '수학'이라고 여겨져, 특허법의 범위에 들지 않았기 때문이다. 하지만 이후 아마존의 원클릭 특허 논쟁을 통해 특허가 인정되었고 허가 없이 사용한 회사에 대해 사용 금지 명령을 할 수 있는 권한을 받아 냈다.

  • 라이선스(license) : 제품을 사용할 권한을 승인하는 법적 합의. 디지털 상품 공급자는 동봉된 라이선스하에 상품을 판매하는데, 이 라이선스는 상품의 소유권을 공급자가 보유하도록 하며 사본을 라이선스하에 제한적으로 이용하도록 한다.

JAVASCRIPT

Map 객체

기존 객체와는 다르게 메소드만을 이용하여 값을 넣고 뺄 수 있다. 객체(Object)와 다르게 문자열이 아닌 값도 키로 사용 가능하며 추가된 순서대로 반복이 가능하다.

const testMap = new Map([
  [1, '숫자'],
  ['1', '문자'],
  [true, 'boolean']
])

console.log(testMap.get(1))		// '숫자'
console.log(testMap.get('1'))	// '문자'
console.log(testMap.get(true))	// 'boolean'

for (const [key, value] of testMap) {
	console.log(key + " : " + value)
}

// 1 : 숫자 
// 1 : 문자
// true : boolean

  • set(), get(), has(), delete(), clear(), size 메소드
const map = new Map()

map.set(1, '1')
map.set(2, '2')

console.log(map.get(1))		// 1
console.log(map.get(2))		// 2

console.log(map.has(1))		// true
console.log(map.has('1'))	// false

map.delete(2)
console.log(map.has(2))		// false

map.clear()

console.log(map.size)		// 0

  • keys(), values(), entries() 메소드
const map = new Map([
	[1, 4],
	[2, 5],
	[3, 6]
])

for (let key of map.keys()) {
	console.log(key)	// 1 2 3
}

for (let value of map.values()) {
	console.log(value)	// 4 5 6
}

for (let entry of map.entries()) {
	console.log(entry)	// [1, 4] [2, 5] [3, 6]
}

오늘의 한줄
프로그램을 보호하기 위한 여러 법적 메커니즘에 대해 간단하게 알게 되었다. 특허, 저작권, 라이선스 등 들어는 봤지만
정확하게 어떤 개념인지 까지는 따로 찾아본 적 없는데 이 책을 통해 간략하게나마 알게 되었다.

최근 코딩테스트 공부를 하면서 Object, Array로 테스트를 통과하고 다른 사람의 정답을 보았을 때 Map을 사용한 것을
보게 되었고 꼭 코딩테스트 뿐만 아니라 업무나 프로젝트에서 유용하게 사용할 수 있을것 같아 따로 공부하였다.
profile
--- 생각중 ---

0개의 댓글