데이비드 헤론 저, 손병대 옮김, 에이콘 출판
[ 한단락으로 말하자면, ]
" PHP나 JSP, DB와 SQL, JavaScript 기초가 있으면 보기 편할 듯 하다.
덤으로 아파치를 설치 및 설정해 본 경험이 있다면 금상첨화. "
대략 훑은 후 정리된 내용을 정독한 다음, 이해가 부족한 부분을 집중적으로 2~5번 정독하는 식으로 이책을 봤다. 절반정도 봤을때, Node 플랫폼이 어떤존재인지 알았고, 한 섹션씩 지날 때 노드가 왜 좋다는 것인지 조금이나마 느낄 수 있었다. 내가 이해하기로 노드는 웹 기반이 아니라, 네이티브 언어처럼, 또는 콘솔에서 실행할 수 있도록 제공해주는 플랫폼으로 이해했다. 그중에 Express라는 프레임워크는 Node 플랫폼에서 서버의 기능을 원활히 할 수 있도록 도와주는 하나의 체계다. Java Script로 웹기반의 클라이언트에서 실행하는 보조적인 인터프리터 언어가 아닌, 마치 네이티브 언어와 맞설 수 있도록 해주는 것이다.
이 책에서 노드를 통해 서버의 기능을 할 수 있는 기본적인 부분에 대해서 설명해 주었다.
- Node로 서버를 구동할 수 있다는 것. ( 아파치나 다른 서버 구동 프로그램 못지 않게 서비스를 제공 )
- Node로 구성된 서버를 [ 클라이언트 Code ]를 작성하여 테스트 할 수 있다는 것.
- Node는 서버 구성에 필요한 플랫폼이다. HTML은 필수적으로 알아야 한다.
PHP나 JSP로 서버사이드 코드를 작성할때, listen 처리 후 index.html로 보내주는 것과 다를 것 없다.
- 다른 웹프로그래밍 언어처럼 DB를 연동하여 사용한다.
- Express는 Node 플랫폼으로 서버를 구동할 수 있도록 해주는 프레임워크다.
난 Node가 서버구동에만 사용되는 플랫폼이 아니란 생각이 든다.
[ 읽은 후 요약 ]
노드개요
* 웹 브라우저 밖에서 살아가는 자바스크립트
* 비동기와 블록킹 I/O의 차이점
* 노드에 대한 간단한 소개
* 노드의 성능
노드 설치
* 노드 소스코드를 다운로드하고 컴파일하는 방법
* 개발을 위해 노드를 홈 폴더나 다른 시스템 폴더에 설치하는 방법
* 업계 표준인 패키지 매니저를 설치하는 방법
* 노드 스크립트나 노드 서버의 실행
* 노드를 안정적인 백그라운드 프로세스로 실행시키기 위한 요구 사항
* 모든 CPU 코어를 사용하는 멀티 프로세스
노드 모듈
* 모듈을 require( 'moduleName' );을 읽어올때, [ index.js ], [ package.json ] 파일중 하나가 반드시 해당 모듈안에 있어야 한다.
* 모듈과 패키지를 구현하는 방법
- module2.js에서 require('module1') 을 했을때, module1의 var값을 접근할수 없다 접근하기 위해 export해줄 함수를 구현해주어야 한다.
* 설치된 모듈과 패키지를 관리하는 방법
* 노드가 모듈을 위치시키는 방법
웹 어플리케이션 응용
* 요청 처리와 모듈을 분리하는 방법
* HTTP 서버 객체를 이용해 웹 애플리케이션을 만드는 방법과 Connect와 Express 프레임워크를 사용해 만드는 방법
- Connect 프레임워크는 Http Server 객체이며, Express 프레임워크의 기반이 되었다.
* 오래 걸리는 계산이 서버에 미치는 영향과 사용자 만족도, 그리고 메소드 수정방법
* 비동기 모듈을 사용함으로써 비동기 코딩 스타일을 익히는 방법
* Connect와 Express를 이용해 전체 웹 애플리케이션 제작 과정을 일부 맛보기
* Connect와 Express의 라우팅 규칙으로 다른 HTTP 요청 방법( method )을 다루는 방법
* Express에서 URL을 파라미터화 해서 사용하는 방법
- app.get( '/user/:id', function(req,res) {...}); 에서 id는 req.params.id로 인식하여 사용함. 플레이스홀더 토큰 대신 정규표현식 패턴을 이용해 처리할수도있다. [ '/user/:id' ]대신 [ /^\/user\/(\d+)/ ]의 정규표현식 패턴을 req.params[0]로 받는다.
* 계산 부하를 나누기 위한 REST 스타일의 벡엔드 서버 구현 방법
- 백엔드서버에서 app.get(...)함수로 리스닝하고 있고, 프런트서버에서 req.on('data', ...)의 콜백으로 백엔드서버에 매칭되어 작용한다. 벡엔드서버에서 처리 완료후 req.send(...)함수를 통해 결과물을 프런트서버에서 처리한다.
간단한 웹 서버, 이벤트 이미터, HTTP 클라이언트
* EventEmitter 객체와 ( HTTP 클라이언트와 서버에서 ) EventEmitter의 역할
- EventEmitter를 상속받아 Http client와 server를 구현한다. instance.on( 'eventName', callback( param, .. ) )으로 콜백받고, self.emit( 'eventName', param, ... );으로 이벤트를 호출한다.
* EventEmitter 객체를 사용해 데이터를 수신하는 메커니즘에서 HTTP 요청 데이터에 대한 행동을 분리하는 방법
* 디버깅 도구로HTTP 객체와 다른 EventEmitter 객체의 이벤트 모니터링
- 위의 EventEmiiter를 이용하여 request 이벤트를 추적하여 sniff한다.
* HTTP 서버 구현
* HTTP 서버로 들어오는 요청 라우팅
* 콘텐츠의 데이터 타입 확인을 위한 MIME 프로토콜 사용
* HTTP 클라이언트 구현( 쿠키 사용법 )
데이터 스토리지와 검색
* 노드는 내장 데이터 스토리지 엔진이 없다. 하지만 노드 커뮤니티에서는 데이터 스토리지 엔진과 연동할 수 있는 모듈을 많이 만들었고, 이런 모듈들은 알고 있는 것보다 더 많다.
* 데이터 스토리지 엔진과 연결할 수 있는 노드 모듈을 설치한다는 의미는 관련된 스토리지 엔진의 서버와 클라이언트 라이브러리 모두를 설치한다는 의미다.
* SQLite3는 따로 설치하거나 설정할 필요없이 바로 SQL 애플리케이션을 개발할 수 있다.
- require( './notesdb-sqlite3' ) 또는 require( './notesdb-mongoose' )로 불러와서 사용할 수 있다.
* 거의 동일한 웹 애플리케이션으로 SQL이나 몽고DB 데이터 스토리지 중 하나를 연결 해 쓸 수 있다.
* ORM 기술은 SQL 데이터 스토리지에서 가장 많이 사용되지만, 어쨌든 커뮤니티에서는 몽고DB와 코치DB를 위한 ORM을 개발했다.
* Express를 기반으로 하는 애플리케이션에서 폼을 전송하는 방법을 배웠다.
* 몽고DB같은 문서지향 데이터베이스 시스템이 SQL보다 현대적인 프로그래밍 언어와 애플리케이션에 가깝다.
'책 > 독서후정리' 카테고리의 다른 글
[책] 문제는 경제다. (0) | 2012.12.13 |
---|---|
[책] 부자들에겐 뭔가 특별한 것이 있다. (0) | 2012.09.11 |
[책] 만들면서 배우는 LISP 프로그래밍 (0) | 2012.08.07 |
[책] 지금 당장 환율공부 시작하라 ( 2010개정판 ) (0) | 2012.08.06 |
[책] 모르며 손해보는 국민연금 활용하기 (0) | 2012.07.06 |