Top

[50가지 예제로 배우는]
노드 프로그래밍

  • 원서명Node Cookbook (ISBN 9781849517188)
  • 지은이데이비드 마크 클레멘츠
  • 옮긴이홍영택, 정대원
  • ISBN : 9788960774544
  • 35,000원
  • 2013년 07월 31일 펴냄 (절판)
  • 페이퍼백 | 424쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

50개의 간단한 예제 코드를 제공함으로써 서버 환경에서 발생하는 다양한 문제를 노드를 사용해서 해결하는 방법을 자세히 설명한다. 간단한 웹 서버를 만드는 것을 시작으로 웹 애플리케이션과 커맨드라인 애플리케이션을 구현하고 노드 모듈을 직접 작성하는 방법에 대해 알아본다. 또한 다양한 보안 이슈에 대해 알아보고 웹 소켓을 사용하는 방법, MySQL, MongoDB, Redis 같은 다양한 백엔드 데이터베이스와 SMTP와 같은 네트워크 프로토콜에 접근하는 방법을 살펴본다. 노드 모듈을 실제 배포하고 운영하는 방법에 대해 다룬다. 노드 프로그래밍은 물론이고 서버 프로그래밍 기초를 배우는 데도 좋은 시작점이 될 것이다.


[ 이 책에서 다루는 내용 ]

■ 노드 모듈을 직접 작성하고 배포하기
■ 다양한 데이터베이스에 연결
■ 데이터 스트림 처리
■ 파일 업로드와 POST 데이터 다루기
■ 익스프레스 프레임워크를 사용한 빠른 웹 개발
■ 보안, 암호화, 인증 기술
■ 무거운 연산을 처리하는 모범 사례


[ 이 책의 대상 독자 ]

자바스크립트에 대한 약간의 지식이 있고, 빠르고 효과적이며 확장 가능한 클라이언트-서버 솔루션을 구축하길 원하는 사람에게 추천한다. 이미 노드를 접한 경험이 있다면 개인 기술 발전에 도움이 될 것이며, 개발 경험이 없더라도 노드를 시작하는 좋은 출발점이 될 것이다.


[ 이 책의 구성 ]

1장. 웹 서버 만들기에서는 동적 콘텐츠와 정적 콘텐츠를 제공하는 방법과 메모리에 파일 캐시하기, 디스크로부터 큰 파일을 스트리밍하기, 웹 서버의 보안 처리를 다룬다.

2장. HTTP 객체 살펴보기에서는 POST 요청을 받아 처리하는 방법과 파일 업로드, 노드를 HTTP 클라이언트로 사용하기, 다운로드 속도를 조절하는 방법을 설명한다.

3장. 데이터 직렬화 처리에서는 애플리케이션에서 데이터를 브라우저로 전송하는 방법과 서드파티 API에 사용하기 위해 XML, JSON 포맷으로 변환하는 방법을 설명한다.

4장. 데이터베이스 인터페이스에서는 레디스(Redis)나 카우치디비(CouchDB), 몽고디비(MongoDB), MySQL, 또는 일반 CSV 파일 같은 영속적인(persistent) 데이터 저장소와의 연동 방법을 다룬다.

5장. 웹소켓을 사용해 AJAX 뛰어넘기에서는 최신 브라우저에서 제공하는 웹소켓을 사용해 실시간 애플리케이션을 만들고 롱폴링(long-polling)과 기타 방법들을 Socket.io를 사용해 대체하는 방법을 설명한다.

6장. 익스프레스를 사용한 쾌속 개발에서는 익스프레스(express)프레임워크를 활용해 빠르게 웹 개발을 진행한다. 또한 템플릿 언어와 LESS, 스타일러스(Stylus) 같은 CSS 엔진에 대해 알아본다.

7장. 보안, 암호화, 인증 구현에서는 강력한 암호 해시(Hash)를 생성하는 암호화 모듈을 사용하는 방법과 크로스사이트 요청 위조(cross-site request forgery) 공격으로부터 사용자를 보호하는 방법, SSL 보안 웹 서버를 설정하는 방법을 알아본다.

8장. 네트워크 패러다임 통합에서는 메일을 전송하는 방법, 메일 서버를 구축하는 방법, SMS 메시지 전송, 가상 호스트 구현, 원시 TCP와 관련된 내용들을 다룬다.

9장. 자신만의 노드 모듈 작성에서는 테스트 스위트(suite)를 생성하는 방법과 노드 모듈을 직접 작성하고 리팩토링하는 방법, 개선하고 확장하는 방법, 배포하는 방법을 다룬다.

10장. 노드 애플리케이션의 배포에서는 실제 서버에 애플리케이션을 배포한 후 장애 복구 기술을 사용해 서비스를 유지하고 지속적인 배포(continuous deployment)를 적용하는 워크플로우를 구현하거나 단순히 PaaS(Platform as a Service)에 배포하는 방법을 다룬다.

저자/역자 소개

[ 저자 서문 ]

오늘날 웹에서 비동기 이벤트 중심 프로그래밍의 원칙은 효과적인 실시간 애플리케이션을 구축하고 확장성을 보장하는 것이다. 90년대부터 서버 측에도 자바스크립트가 도입됐고, 최근 개발된 노드(Node)는 미래의 PHP라는 찬사를 받으며 많은 커뮤니티로부터 각광을 받고 있다.

이 책은 기존 자바스크립트 기술을 서버 프로그래밍에 적용하는 방법을 설명한다. 간단한 예제와 코드를 제공함으로써 다양한 상황이나 환경에 따른 문제를 해결하는 방법과 보안 실수를 회피하는 방법 등을 설명한다.

간단한 웹 서버를 직접 만드는 것을 시작으로 점차 웹 애플리케이션과 커맨드 라인 애플리케이션, 노드 모듈을 작성하는 실용적인 방법을 다룬다. 또한 웹 소켓을 사용해 MySQL, 몽고디비(MongoDB), 레디스(Redis) 같은 다양한 백엔드 데이터베이스와 SMTP 같은 네트워크 프로토콜에 접근하는 방법을 살펴본다. 게다가 데이터 스트림 처리와 보안 처리, 노드 모듈을 직접 작성하는 방법과 작성한 웹 애플리케이션을 실행하고 운영하는 방법도 알아본다.


[ 저자 소개 ]

데이비드 마크 클레멘츠(David Mark Clements)
북 아일랜드에서 웹 에이전시를 운영 중이다. 어릴 때부터 프로그래밍과 컴퓨터에 흥미가 많아, 9살에는 처음 접한 언어인 베이식(BASIC)으로 프로그래밍 실력을 키웠으며, 12살부터 자바스크립트를 시작했다. 10대에는 리눅스와 PHP에 관심을 가졌다.
현재 20대인 마크는 기술을 비즈니스에 적용해 맞춤형 웹사이트, 창고 관리 시스템에 전자상거래 솔루션을 통합하는 등 다양한 서비스를 구축한다. 다재다능함과 강력한 인터페이스 때문에 주요 도구로 노드를 사용한다.
컴퓨터를 하지 않을 때는 노숙자 호스텔에서 봉사하거나 리빙리버스(Living Rivers) 예배 팀에서 베이스 연주자로 활동한다. 또한 여자 친구 맥신과 허스키 강아지 제시와 함께 시간을 보내는 것을 좋아한다


[ 옮긴이의 말 ]

구글, 유튜브, 페이스북 같은 성공적인 서비스를 지켜보며 웹이 가진 무한한 가능성에 공감하는 이들이 많아졌다. 웹 페이지는 링크를 포함하는 단순한 문서를 넘어 애플리케이션으로 자리 잡았고, 그 구조는 더 복잡해지고 사용자의 요구 사항 또한 높아졌다.

이러한 시대에 개발자들에게는 끊임없는 학습이 요구되며, 프론트엔드와 백엔드 영역을 나누지 않고 전방위로 개발하는 풀스택(full-stack) 개발자가 활약할 시대가 왔다. 노드의 서버 측 자바스크립트라는 특징은 기존 웹 클라이언트가 자바스크립트로 구현돼 있을 때 동일한 언어로 프론트엔드와 백엔드를 다룰 수 있다는 점에서 매우 매력적이다. 또한 노드의 민첩함은 아이디어를 빠르게 구현하는 데 적합하다.

노드 커뮤니티는 젊고 스마트한 개발자들이 참여하면서 급속도로 성장 중이다. 노드 팀은 빠르게 새 버전을 릴리즈하며, 마치 온갖 종류의 소프트웨어들이 모두 노드로 개발될 것만 같은 분위기다. 노드 생태계는 하루가 멀다 하고 변화하는 중이다. 이런 분위기에 동참하는 것만으로도 개인 역량 발전에 많은 도움이 될 것이다.

이 책 『노드 프로그래밍』은 간단한 웹 서버 구현을 시작으로 웹 애플리케이션과 커맨드라인 애플리케이션, 노드 모듈을 구현하는 방법뿐 아니라 모듈 설치 방법, 배포 방법, 서비스를 운영하는 방법 등 노드 프로그래밍의 전반적인 이슈를 소개한다. 또한 기존 프론트엔드 개발자에게는 익숙한 자바스크립트로 서버 프로그래밍의 기초를 배우는 데 좋은 시작점이 될 것이다.


[ 옮긴이 소개 ]


홍영택
해커가 되고 싶은 개발자로, 훌륭한 동료들과 함께 개발한 서비스로는 네이버오피스가 있다. Vim으로 코딩하는 것을 즐기며, 자바스크립트를 좋아한다. 최근에는 오픈소스에 관심이 있으며, 다양한 분야에 가치 있는 소프트웨어를 만들고 싶어 한다. 『Ext JS 4 First Look 한국어판』(에이콘출판, 2012)을 번역했다.

정대원
프로그래밍 언어를 좋아하는 개발자로, 프로그래밍을 더 잘 할 수 있는 방법에 관심이 많으며 언제나 더 좋은 방법이 있다고 생각한다. 꿈의 에디터인 Emacs와 해피해킹 키보드의 사용을 즐긴다. 훌륭한 동료들과 함께 네이버오피스를 개발했다. 『Ext JS 4 First Look 한국어판』(에이콘출판, 2012)을 번역했다.

목차

목차
  • 1장 웹 서버 만들기
    • 소개
    • 경로 설정
    • 정적 파일 제공
    • 빠른 전송을 위해 메모리에 콘텐츠 캐싱
    • 스트리밍으로 성능 최적화
    • 파일 시스템 해킹 공격에 대한 보안 처리
  • 2장 HTTP 객체 살펴보기
    • 소개
    • POST 데이터 처리
    • 파일 업로드 처리
    • 노드를 HTTP 클라이언트로 사용
    • 다운로드 스로틀링 구현
  • 3장 데이터 직렬화 처리
    • 소개
    • 객체를 JSON으로 변환하고 되돌리기
    • 객체를 XML로 변환하고 되돌리기
    • AJAX를 사용해 브라우저와 서버 전송
    • 실제 데이터 처리: 최신 유행 트윗 가져오기
  • 4장 데이터베이스 인터페이스
    • 소개
    • CSV 파일 작성
    • MySQL 서버에 접속하고 SQL 전송
    • 몽고디비에 데이터 저장과 조회
    • 몽고스킨에 데이터 저장과 조회
    • 크래들로 카우치디비에 데이터 저장
    • 크래들로 카우치디비 변경 스트림에 접근
    • 레디스에 데이터 저장과 조회
    • 레디스로 발행/구독 구현
  • 5장 웹소켓을 사용해 AJAX 뛰어넘기
    • 소개
    • 웹소켓 서버 작성
    • socket.io를 사용해 웹소켓 대체 연결
    • socket.io를 사용해 콜백 함수 전송
    • 실시간 위젯 작성
  • 6장 익스프레스를 사용한 쾌속 개발
    • 소개
    • 익스프레스 스케폴딩 작성
    • 환경설정과 적용
    • 동적 경로 설정
    • 익스프레스 템플릿
    • 익스프레스 CSS 엔진
    • 세션 초기화와 사용
    • 익스프레스 웹 애플리케이션 작성
  • 7장 보안, 암호화, 인증 구현
    • 소개
    • HTTP 기본 인증 구현
    • 암호화된 패스워드 해싱
    • 다이제스트 인증 구현
    • HTTPS 웹 서버 설정
    • 크로스사이트 요청 위조 방지
  • 8장 네트워크 패러다임 통합
    • 소개
    • 이메일 전송
    • TCP 통신
    • SMTP 서버 구현
    • 가상 호스팅 패러다임 구현
  • 9장 자신만의 노드 모듈 작성
    • 소개
    • 테스트 기반 모듈 API 정의
    • 함수 스타일로 모듈 작성
    • 함수를 프로토타입으로 리펙토링
    • 모듈 API를 확장
    • npm에 모듈 배포
  • 10장 노드 애플리케이션의 배포
    • 소개
    • 서버 환경에 배포
    • 자동 충돌 복구
    • 지속적인 배포
    • PaaS에 서비스 호스팅

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

p.188 예제

socket.on(''helloback, function (from) { → socket.on('helloback', function (from) {