본문 바로가기
해커, 광기의 랩소디 이 글은 한빛미디어 도서 서평단 나는 리뷰어다 2021을 통해 책을 제공받아 작성하였습니다. 이 책은 번역서 '파이썬으로 살펴보는 아키텍처 패턴(Architecture Patterns with Python)(해리 퍼시벌, 밥 그레고리 지음, 오현석 옮김, 한빛미디어)' 입니다. 이 책은 1900년대 중후반, 컴퓨터를 좋아하던 사람들의 이야기를 다루고 있습니다. 컴퓨터에 대한 열정으로 세상을 바꾼 사람들에 대해 소개해주는 이야기 중심의 책입니다. 실제 컴퓨터를 초창기에 만들어낸 해커 이야기와 컴퓨터를 조립하고 사용 가능하게 만드는 하드웨어 해커 이야기, 하드웨어가 전파될 때 상업적으로 이익을 얻으려는 게임 해커 이야기, 그리고 시간이 지나면서 변화하는 해커의 뒷이야기로 구성되어 있습니다. 1900년대 후반.. 2021. 7. 25.
자바스크립트 object 거의 모든 object는 prototype을 상속한다. 하지만 몇몇 object만 prototype property를 간진다. let o1 = Object.create({x: 1, y: 2}); // o1은 property x와 y를 상속 // Object.create()은 새로운 object을 만들고, // 인자는 해당 object의 prototype이 된다 let o2 = Object.create(null); // o2는 어떤 property나 method를 상속하지 않는다 // null을 전달하면 toString()같은 기본적인 메소드도 상속하지 않는다 let o3 = Object.create(Object.prototype); // {}나 new Object()와 같음 object의 prototyp.. 2021. 7. 25.
자바스크립트 jump mainloop: while (token !== null) { // -- snip -- continue mainloop; // -- snip -- } 2021. 7. 23.
자바스크립트 반복문 for/of, for/in for/of for/of은 ES6에서 정의되었다. for/of은 iterable 객체에서 동작한다. 이러한 객체에는 배열, 문자열, 집합, 맵 등이 있다. let data = [1, 2, 3, 4], sum = 0; for (let element of data) { sum += element; } object는 기본적으로 iterable이 아니므로 for/of을 사용하면 runtime에 TypeError가 난다. Object.keys() 메소드를 이용해 해결할 수 있다. let o = { x: 1, y: 2 }; for (let element of o) { // Throws TypeError console.log(element); } // *** let o = { x: 1, y: 2 }; for (let.. 2021. 7. 23.
자바스크립트 first-defined ?? ES2020에서 정의되었다. ??는 nullish coalescing 연산자라고 부른다. ??의 왼쪽 피연산자가 null이 아니고 undefined도 아니면 해당 값을 그대로 반환하고, 아니면 오른쪽에 있는 피연산자를 반환한다. a ?? b // 아래와 같음 (a !== null && a !== undefined) ? a : b 아래 코드 처럼 ??는 첫 번째 피연산자가 false 값이더라도 그 값을 반환한다. let max = maxWidth || 500; // maxWidth가 숫자 0이나 empty string이면 false이므로 500이 반환 let max = maxWidth ?? 500; // maxWidth가 숫자 0이면 그대로 0이 반환된다 2021. 7. 23.
머신 러닝 Murphy 2장 probability "동전을 던졌을 때 앞면이 나올 확률은 0.5이다."를 빈도주의적 관점과 베이지안 관점에서 해석해보자. 빈도주의적(frequentist) 관점으로 보면 동전을 많이 던졌을 때 절반만큼 앞면이 나올 것으로 기대한다고 해석할 수 있다. 베이지안(Bayesian) 관점으로 보면, 동전을 다음 번에 던졌을 때 앞면 또는 뒷면이 나올 가능성은 같다고 해석할 수 있다. 베이지안 관점은 불확실성(uncertainty)를 정량화한다고 말한다. 베이지안 해석의 장점은 장기적인 관점에서 빈도를 가지지 않는 사건에 대한 불확실성을 모델링할 수 있다는 점이다. 예를 들자면, 극지방의 얼음이 녹을 확률을 계산한다든지. 얼음이 녹는 사건은 일어나던지 일어나지 않던지 둘 중 하나이며, 빈도를 가지고 반복적으로 일어날 수는 없는 사.. 2021. 7. 23.
머신러닝 Murphy 1장 1.3 Unsupervised learning unsupervised learning에 대해 알아본다. 비지도 학습은 출력 데이터만 주어지며, 입력은 주어지지 않는다. 목표는 데이터에서 흥미로운 구조를 발견하는 것. 즉, knowledge discovery. 지도 학습은 각각의 입력에 대해 출력이 주어지지만, 비지도 학습은 그렇지 않음. 대신, density estimation의 일종으로 볼 수 있다. 즉, $p(\bold{x}_{i} | \bold{ \theta } )$ 꼴의 모델을 만드는 것이 목표이다. 지도 학습과는 두 가지 차이점이 존재한다. 첫째, 지도학습은 $p(y_{i} | \bold{x}_{i}, \bold{ \theta } )$과 같은 형태를 썻다. 즉, 지도학습은 조건부 밀도 추정(co.. 2021. 7. 22.