책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 웹디자인/홈페이지 > HTML/JavaScript
· ISBN : 9788998139636
· 쪽수 : 516쪽
· 출판일 : 2014-08-28
책 소개
목차
[1부] 노드의 기반 기술
▣ 01장: 노드에 오신 것을 환영합니다
_1.1 자바스크립트 기반
_1.2 비동기와 이벤트: 브라우저
_1.3 비동기와 이벤트: 서버
_1.4 DIRTy 애플리케이션
_1.5 DIRTy의 기본 요소
__1.5.1 간단한 비동기 예제
__1.5.2 Hello World HTTP 서버
__1.5.3 스트리밍 데이터
_1.6 요약
▣ 02장: 다중 채팅방 애플리케이션 만들기
_2.1 애플리케이션 개요
_2.2 애플리케이션 요구사항과 초기 설정
__2.2.1 HTTP와 웹소켓 서비스
__2.2.2 애플리케이션의 파일 구조 생성
__2.2.3 의존성 모듈 명시
__2.2.4 의존성 모듈 설치
_2.3 HTML, CSS, 클라이언트 측 자바스크립트 서비스
__2.3.1 기본적인 정적 파일 서버 생성
__2.3.2 HTML과 CSS 파일 추가
_2.4 SocketIO를 이용한 채팅 관련 메시지 처리
__2.4.1 SocketIO 서버 구성
__2.4.2 애플리케이션 시나리오와 이벤트 처리
_2.5 애플리케이션의 사용자 인터페이스를 위한 클라이언트 측 자바스크립트
__2.5.1 메시지와 닉네임/채팅방 변경 요청을 서버로 전달
__2.5.2 메시지 및 입장할 수 있는 채팅방 목록을 사용자 인터페이스에 보여주기
_2.6 요약
▣ 03장: 노드프로그래밍의 기본
_3.1 노드의 기능 관리와 재사용
__3.1.1 모듈 생성
__3.1.2 moduleexports를 이용해 잘 정비된 모듈 생성하기
__3.1.3 node_modules 디렉터리로 모듈 재사용하기
__3.1.4 알아둘 점
_3.2 비동기 프로그래밍 기법
__3.2.1 일회성 이벤트를 콜백으로 처리하기
__3.2.2 반복적인 이벤트를 이벤트 발생자로 처리하기
__3.2.3 비동기 개발의 어려운 점
_3.3 비동기 로직의 순서 배열하기
__3.3.1 직렬 흐름 제어를 사용하는 경우
__3.3.2 직렬 흐름 제어 구현하기
__3.3.3 병렬 흐름 제어 구현
__3.3.4 커뮤니티 도구 활용하기
_3.4 요약
[2부] 노드를 이용한 웹 애플리케이션 개발
▣ 04장: 노드 웹 애플리케이션 만들기
_4.1 HTTP 서버의 기본
__4.1.1 노드가 HTTP 요청을 개발자에게 전달하는 방법
__4.1.2 "Hello World"로 응답하는 기본적인 HTTP 서버
__4.1.3 요청 헤더 읽기와 응답 헤더 설정하기
__4.1.4 HTTP 응답 상태 코드 설정하기
_4.2 RESTful 웹 서비스 만들기
__4.2.1 POST 요청으로 자원 생성하기
__4.2.2 GET 요청으로 자원 가져오기
__4.2.3 DELETE 요청으로 자원 삭제하기
_4.3. 정적 파일 서비스하기
__4.3.1 정적 파일 서버 만들기
__4.3.2 서버 오류 처리하기
__4.3.3 fsstat을 이용한 선제 오류 처리
_4.4 폼에서 사용자 입력받기
__4.4.1 제출된 폼 항목 처리하기
__4.4.2 formidable을 이용한 파일 업로드 처리하기
__4.4.3 업로드 진행 상황 계산하기
_4.5 HTTPS를 이용한 애플리케이션 보안
_4.6 요약
▣ 05장: 노드 애플리케이션 데이터 저장하기
_5.1 서버가 없는 데이터 저장소
__5.1.1 인메모리 저장소
__5.1.2 파일 기반 저장소
_5.2 관계형 데이터베이스 관리 시스템
__5.2.1 MySQL
__5.2.2 PostgreSQL
_5.3 NoSQL 데이터베이스
__5.3.1 레디스
__5.3.2 몽고디비
__5.3.3 몽구스
_5.4 요약
▣ 06장: 커넥트
_6.1 커넥트 애플리케이션 준비
_6.2 커넥트 미들웨어의 동작방식
__6.2.1 로그를 남기는 커넥트 미들웨어
__6.2.2. "hello world"로 응답하는 미들웨어
_6.3 미들웨어 순서의 중요성
__6.3.1 미들웨어가 next ( )를 호출하지 않을 때
__6.3.2 미들웨어 순서를 사용해 인증하기
_6.4 미들웨어와 서버 마운팅
__6.4.1 인증 미들웨어
__6.4.2 관리영역을 보여주는 미들웨어 컴포넌트
_6.5 설정 가능한 미들웨어 만들기
__6.5.1 설정 가능한 logger 미들웨어 컴포넌트 만들기
__6.5.2 router 미들웨어 컴포넌트 만들기
__6.5.3 URL을 다시 만드는 미들웨어 컴포넌트
_6.6 에러 핸들링 미들웨어 사용
__6.6.1 커넥트의 기본 에러 핸들러
__6.6.2 애플리케이션 에러 직접 다루기
__6.6.3 다수의 에러 핸들링 미들웨어 컴포넌트 사용
_6.7 요약
▣ 07장: 커넥트의 내장 미들웨어
_7.1 쿠키와 요청 본문, 쿼리 스트링을 해석하는 미들웨어
__7.1.1 cookieParser ( ): HTTP 쿠키 해석
__7.1.2 bodyParser ( ): 요청 본문 해석
__7.1.3 limit ( ): 요청 본문의 크기 제한
__7.1.4 query ( ): 쿼리 스트링 파서
_7.2 핵심 웹 애플리케이션 기능을 실행하는 미들웨어
__7.2.1 logger ( ): 요청 로그 남기기
__7.2.2 favicon ( ): 파비콘 서비스
__7.2.3 methodOverride ( ): 위조 HTTP 메서드
__7.2.4 vhost(): 가상 호스트
__7.2.5 session ( ): 세션 관리
_7.3 웹 애플리케이션의 보안을 다루는 미들웨어
__7.3.1 basicAuth ( ): HTTP 기본 인증
__7.3.2 csrf ( ): 사이트 간 요청 위조 방어
__7.3.3 errorHandler ( ): 개발 에러 핸들링
_7.4 정적 파일 서비스 미들웨어
__7.4.1 static ( ): 정적 파일 서비스
__7.4.2 compress ( ): 정적 파일 압축
__7.4.3 directory ( ): 디렉터리 목록
_7.5 요약
▣ 08장: 익스프레스
_8.1 애플리케이션의 뼈대 만들기
__8.1.1 익스프레스가 실행되게 설치하기
__8.1.2 애플리케이션 생성하기
__8.1.3 애플리케이션 둘러보기
_8.2 익스프레스 및 애플리케이션 설정하기
__8.2.1 환경 기반 설정
_8.3 뷰 렌더링
__8.3.1 뷰 시스템 설정
__8.3.2 뷰 찾기
__8.3.3 뷰에 데이터 노출하기
_8.4 폼과 파일 업로드를 다루는 방법
__8.4.1 사진의 데이터 모델 구현하기
__8.4.2 사진 업로드 폼 생성하기
__8.4.3 업로드한 사진 목록 보여주기
_8.5 자원 내려받기 다루기
__8.5.1 사진 내려받을 경로 생성하기
__8.5.2 사진 내려받을 경로 구현하기
_8.6 요약
▣ 09장: 고급 익스프레스
_9.1 사용자 인증하기
__9.1.1 사용자를 저장하고 불러오기
__9.1.2 새로운 사용자 등록하기
__9.1.3 등록된 사용자 로그인
__9.1.4 사용자 정보를 불러오는 미들웨어
_9.2 고급 라우팅 기술
__9.2.1 사용자가 제출한 데이터 검증
__9.2.2 경로에 특화된 미들웨어
__9.2.3 페이징 구현
_9.3 공개 REST API 생성하기
__9.3.1 API 설계하기
__9.3.2 기본 인증 추가하기
__9.3.3 라우팅 구현하기
__9.3.4 내용 협상 기능
_9.4 에러 다루기
__9.4.1 404 에러 다루기
__9.4.2 에러 다루기
_9.5 요약
▣ 10장: 노드 애플리케이션 테스트
_10.1 단위 테스트
__10.1.1 assert 모듈
__10.1.2 노드 유닛
__10.1.3 모카
__10.1.4 보우즈
__10.1.5 shouldjs
_10.2 인수 테스트
__10.2.1 토비
__10.2.2 소다
_10.3 요약
▣ 11장: 웹 애플리케이션 템플릿
_11.1 템플릿으로 코드 깔끔하게 유지하기
__11.1.1 템플릿 사용하기
_11.2 임베디드 자바스크립트 템플릿
__11.2.1 템플릿 생성하기
__11.2.2 EJS 필터로 템플릿 데이터 변경하기
__11.2.3 애플리케이션에 EJS 통합하기
__11.2.4 클라이언트 측 애플리케이션에서 EJS 사용하기
_11.3 호간으로 머스태쉬 템플릿 언어 사용하기
__11.3.1 템플릿 생성하기
__11.3.2 머스태쉬 태그
__11.3.3 호간 세부 조정하기
_11.4 제이드 템플릿
__11.4.1 제이드 기초
__11.4.2 제이드 템플릿의 로직
__11.4.3 제이드 템플릿 구성하기
_11.5 요약
[3부] 노드로 할 수 있는 더 많은 것들
▣ 12장: 노드 애플리케이션의 배포와 가동시간 관리
_12.1 노드 애플리케이션 호스팅
__12.1.1 전용 서버와 가상 사설 서버
__12.1.2 클라우드 호스팅
_12.2 간단한 배포
__12.2.1 깃 저장소에서 배포
__12.2.2 노드 실행 유지
_12.3 서버 가동 시간과 성능의 최대화
__12.3.1 Upstart로 가동 시간 관리
__12.3.2 클러스터 API: 다중 코어의 장점 활용
__12.3.3 정적 파일 서비스와 프록시
_12.4 요약
▣ 13장: 웹 서버 이외의 것들
_13.1 SocketIO
__13.1.1 간단한 SocketIO 애플리케이션 만들기
__13.1.2 SocketIO를 사용한 페이지 동작과 CSS 리로드
__13.1.3 SocketIO의 또 다른 사용법
_13.2 TCP/IP 네트워크
__13.2.1 버퍼와 바이너리 데이터 사용
__13.2.2 TCP 서버 생성
__13.2.3 TCP 클라이언트 생성
_13.3 운영체제와 상호작용하는 데 필요한 도구
__13.3.1 process 전역 싱글톤
__13.3.2 파일 시스템 모듈 사용
__13.3.3 외부 프로세스 생성
_13.4 개발 명령행 도구
__13.4.1 명령행 인자 해석
__13.4.2 표준 입력과 표준 출력 처리
__13.4.3 색상이 들어간 결과 추가
_13.5 요약
▣ 14장: 노드 생태계
_14.1 노드 개발자를 위한 온라인 자원
__14.1.1 노드와 모듈 레퍼런스
__14.1.2 구글 그룹스
_14.1.3 IRC
__14.1.4 깃허브 이슈
_14.2 깃허브
__14.2.1 깃허브 시작하기
__14.2.2 깃허브에 프로젝트 추가하기
__14.2.3 깃허브에서 함께 개발하기
_14.3 npm 저장소에 기여하기
__14.3.1 패키지 준비
__14.3.2 패키지 명세 작성하기
__14.3.3 패키지 테스트 및 배포
_14.4 요약
▣ 부록A: 노드 및 커뮤니티 부가 프로그램 설치하기
_A.1 맥 OS X에서 설치하기
_A.1.1 Homebrew로 설치하기
_A.2 윈도우에서 설치하기
_A.3 리눅스에서 설치하기
__A.3.1 우분투에 설치할 때 필요한 패키지
__A.3.2 CentOS에 설치 시 필요한 패키지
_A.4 노드 컴파일하기
_A.5 노드 패키지 매니저 사용하기
__A.5.1 패키지 검색하기
__A.5.2 패키지 설치하기
__A.5.3 문서와 패키지 코드 찾아보기
▣ 부록B: 노드 디버깅
_B.1 JSHint로 코드 분석하기
_B.2 디버깅 정보 출력하기
__B.2.1 console 모듈로 디버깅하기
__B.2.2 디버깅 출력을 관리하는 디버그 모듈 사용하기
_B.3 노드의 내장 디버거
__B.3.1 디버거 네비게이션
__B.3.2 디버거로 상태 확인 및 조작하기
_B.4 노드 인스펙터
__B.4.1 노드 인스펙터 시작하기
__B.4.2 노드 인스펙터 네비게이션
__B.4.3 노드 인스펙터에서 상태 둘러보기
▣ 부록C: 익스프레스 확장 및 설정하기
_C.1 익스프레스 확장하기
__C.1.1 템플릿 엔진 등록하기
__C.1.2 consolidatejs로 템플릿 작성하기
__C.1.3 익스프레스 확장 및 프레임워크
_C.2 고급 설정
__C.2.1 JSON 응답 조작하기
__C.2.2 JSON 응답 포맷 만들기
_C.2.3 역방향 프록시 헤더 필드 신뢰하기
저자소개
리뷰
책속에서
노드에 관한 책을 쓰는 것은 매우 도전적인 과제다. 노드는 비교적 최신 플랫폼이며 이제서야 막 안정화되기 시작했다. 노드의 핵심부는 나날이 발전하고 있으며 사용자 제작 모듈과 관련된 커뮤니티는 그 누구도 따라잡을 수 없을 만큼의 속도로 폭발적인 증가세를 보이고 있다. 노드 커뮤니티는 여전히 그 정체성을 찾아가고 있다. 이러한 역동적인 대상을 책에 담기 위한 유일한 방법은 노드의 본질은 무엇이며 어떻게 성공의 길을 걸어왔는지 다루는 것이다. 여기 그 일을 해낸 노드의 베테랑들이 있다. 마이크 켄탤론은 노드 커뮤니티에서 노드에 관한 실험과 이야기로 대단히 적극적으로 활동하는 사람이다. 그는 노드를 언제 사용하는 것이 적합하고 (아마도 더 중요할지 모르는) 언제 사용하기에 적합하지 않은지에 대한 탁월한 판단력을 가지고 있다. T.J. 할로웨이척은 엄청난 인기를 누리고 있는 웹 프레임워크인 익스프레스(Express )를 포함해서 가장 많은 노드 모듈을 개발한 개발자 중 한 명이다. TooTallNate로 더 잘 알려진 나단 라즈리치는 지금까지 꽤 오랫동안 노드의 핵심 커미터로 활동했으며 노드가 현재 모습으로 성숙하기까지 플랫폼 개발에 적극적으로 참여하고 있다.
이 책은 그들의 상당한 경험을 토대로 컴퓨터에 노드를 설치하는 초기 작업부터 제품 애플리케이션을 생성, 디버깅, 배포하는 방법까지 모든 단계에 걸친 내용을 담고 있다. 이 책을 통해 노드가 흥미로운 이유를 알게 될 것이며 저자들의 종합적인 지식을 통해 노드 프로젝트가 뻗어 나갈 미래의 방향도 엿볼 수 있을 것이다. 무엇보다 인상적인 것은 각 단계의 선행 학습을 기반으로 책의 내용이 기본에서부터 고급까지 무리없이 잘 진행된다는 것이다.
노드는 상승 중인 로켓과 같으며 저자들은 독자들이 이 로켓에 함께 탑승할 수 있게 멋진 일을 해냈다. 노드 인 액션이 여러분 자신의 지평선을 탐험할 수 있는 발사대가 되길 바란다.
- 추천사 중에서