본문 바로가기

전체 글

(113)
Bitcoin and Cryptocurrencies Week 2 (Blockchain History: From the Cypherpunk Movement to JP Morgan Chase) 1. Pre-Bitcoin: Libertarian Dreams In the face of increasingly powerful banks and national agencies, the Cypherpunks and Crypto-anarchists of the late 1980s advocated the use of cryptography to preserve privacy, which they defined as the power to selectively reveal oneself. They sought to devleop an anonymous digital transaction system. In October 2008, Satoshi Nakamoto released the Bitcoin whit..
Bitcoin and Cryptocurrencies Week 1 (Bitcoin Protocol & Consensus: A High Level Overview) What is Bitcoin? Cryptocurrency is a completely digital, formless currency, tied together using computer science, cryptography and economics. Bitcoin is the first and most widely used cryptocurrency. Bitcoin is inspired by the Cypherpunk Movement in the 1980s, which advocated for protection of privacy from external entities using cryptography. Satoshi Nakamoto first outlined and created Bitcoin ..
Learning JavaScript 요약 정리 (4) 12장 ~ 14장 (이터레이터와 제너레이터, 비동기 프로그래밍) 12장 이터레이터와 제너레이터 이터레이터 이터레이터는 '지금 어디 있는지' 파악할 수 있도록 돕는다는 면에서 일종의 책갈피와 비슷한 개념이다. 배열은 이터러블 객체의 좋은 예이다. const it = book.values(); let current = it.next(); while(!current.done){ console.log(current.value); current = it.next(); } 제너레이터 제너레이터란 이터레이터를 사용해 자신의 실행을 제어하는 함수이다. 제너레이터는 두 가지 새로운 개념을 도입했다. 함수의 실행을 개별적 단계로 나눔으로써 함수의 실행을 제어한다는 것과 실행 중인 함수와 통신한다는 것이다. 제너레이터는 언제든 호출자에게 제어권을 넘길 수 있다. 제너레이터는 호출한 즉시..
Learning JavaScript 요약 정리 (3) 8장~10장 (배열, 객체지향 프로그래밍, 맵과 셋) 8장 배열과 처리 배열의 마법 reduce 누적값이 제공되지 않으면 reduce는 첫 번째 배열 요소를 초기값으로 보고 두 번째 요소에서부터 함수를 호출한다. const words = ["Beachball", "Rodeo", "Angel", "Aardvark", "Xylophone", "Npvember", "Chocolate"]; const longWords = words.reduce((a, w) => w.length>6 ? a + " " + w : a, "").trim(); 9장 객체와 객체지향 프로그래밍 OOP의 기본 아이디어는 단순하고 직관적이다. 객체는 데이터와 기능을 논리적으로 묶어놓은 것이다. OOP의 기본 용어에 대해 알아보자. 클래스 : 추상적이고 범용적인 것 (ex. 어떤 자동차) 인스턴..
Learning JavaScript 요약 정리 (2) 7장 (스코프) 7장 스코프 스코프는 변수와 상수, 매개변수가 언제 어디서 정의되는지 결정한다. 가시성(visibility) 이라고도 불리는 스코프는 프로그램의 현재 실행 중인 부분, 즉 실행 컨텍스트에서 현재 보이고 접근할 수 있는 식별자들을 말한다. 반면 존재한다는 말은 그 식별자가 메모리가 할당된(예약된) 무언가를 가리키고 있다는 뜻이다. 정적 스코프와 동적 스코프 자바스크립트의 스코프는 정적이다. 소스 코드만 봐도 변수가 스코프에 있는지 판단할 수 있다는 뜻이다. 다만, 소스 코드만 봐도 즉시 스코프를 분명히 알 수 있다는 뜻은 아니다. 정적 스코프는 어떤 변수가 함수 스코프 안에 있는지 함수를 정의할 때 알 수 있다는 뜻이다. 호출할 때 알 수 있는 것은 아니다. const x = 3; function f(){..
Learning JavaScript 요약 정리 (1) (2장 ~ 6장) 2장 자바스크립트 개발 도구 깃 : 프로젝트가 커져도 쉽게 관리할 수 있고 다른 개발자와 협력할 수 있게 돕는 버전 컨트롤 도구. 노드 : 브라우저 밖에서 자바스크립트를 실행할 수 있게 하는 도구. 노드와 함꼐 설치되는 npm은 이 리스트의 다른 도구를 설치할 때 필요. 걸프 : 반복적인 개발 작업을 자동화하는 빌드 도구. 그런트도 널리 쓰임. (현재는 웹팩.. 아니 parcel?) 바벨 : ES6 코드를 ES5 코드로 변환하는 트랜스컴파일러. ES린트 : 자주 하는 실수를 피하고 더 나은 프로그래머가 되도록 돕는 린트 프로그램. 새 프로젝트 시작시 필요한 것. 프로젝트에 사용할 전용 디렉터리. 이 디렉터리를 프로젝트 루트라고 부른다. 깃 저장소 (git init) package.json 파일 (npm ..
JavaScript 표준의 선구자들 : CommonJS와 AMD 범용적으로 JavaScript를 사용하기 위해 필요한 조건은 모듈화입니다. 이 모듈화 작업의 선두 주자는 CommonJS와 AMD입니다. CommonJS와 AMD의 JavaScriot 모듈화에 대해 간략하게 살펴봅시다. CommonJS JS를 브라우저에서뿐만 아니라, 서버사이드 애플리케이션이나 데스크톱 애플리케이션에서도 사용하려고 조직한 자발적 워킹 그룹. CommonJS의 'Common'은 JS를 브라우저에서만 사용하는 언어가 아닌 일반적인 범용 언어로 사용할 수 있도록하겠다는 의지를 나타내고 있는 것이라고 이해할 수 있다. 이 그룹은 JS를 범용적으로 사용하기 위해 필요한 '명세(Specification)'를 만드는 일을 한다. 탄생 배경 1996년 JS가 탄생한 후, JS를 브라우저 밖에서도 사용하..
뒤늦은 React 입문기 정리 (라이프 사이클, 렌더링 과정) render() 함수를 호출할 때 render() 함수는 React에서 사용하는 타입의 컴포넌트를 생성. 이 때 생성하는 컴포넌트는 다음과 같다. ReactCompositeComponent 객체 : DOM이 아닌 컴포넌트를 생성할 때 사용됨. ReactDOMComponent 객체 : DOM을 만들 때 사용하는 컴포넌트. render() 함수가 생성한 컴포넌트를 React 컴포넌트에 마운트하기 위해 ReactReconciler.mountComponent() 메서드를 호출. 이 메서드에서는 ReactCompositeComponent 객체와 ReactDOMComponent 객체의 mountComponent() 메서드를 호출하며, 이 시점에 주요 작업이 시작됨. ReactCompositeComponent 객체의..