본문 바로가기
기타 도서 리뷰/기타

Redis와 Node.js를 사용한 웹 애플리케이션 개발 - 조슈아 조하난 지음

by java개발자 2015. 9. 29.

Redis와 Node.js를 사용한 웹 애플리케이션 개발 - 조슈아 조하난 지음

 

<정리>
요약 :

node.js의 기본은 미리 알고 있어야 한다.

여러가지 많은 오픈소스를 사용한다. 그래서 각각에 대한 설명이 부족하다.

그저... 이런것이 있구나... 말로만 듣던 것을 눈으로 보는 정도로 만족...
새로운 많은 기능들을 엿보고, 테스트해볼 수 있지만... 깊이 있는 테스트는 개인에게 맡겨진 셈이다.
많은 것을 다루다 보니, redis나 다른 promise 등의 nodejs 모듈에 대해서는 따로 검색을 많이 해봐야겠다.
일본, 한국서적처럼 일일이 떠먹여주는 것이 아닌, 직접 인터넷에서 발품을 많이 팔아야 한다.
또한, 원본에 번역을 하다보니...  소스에 대한 설명부분을 읽고 있어도, 잘 이해 가지 않는다.
그냥 소스를 run 해보고, 직접 결과를 눈으로 확인한 후에, 직접 소스의 로직을 분석해본 후... 다시 글을 읽으면, 조금은 이해가 간다.
여러 오픈 소스를 이용했을때 에러, 예외 상황에 대한 처리가 부족함이 아쉽다. 예를 들어 python 3.x에서는 SimpleHTTPServer 가 아니라 http.server 였다.

특징 : 1장부터 10장까지 1소스 프로젝트로 진행한다.
프로젝트에 기능을 조금씩 붙이는 식이다. 몇개는 단위 테스트용 프로젝트도 있다.

 

목차

1.익스프레스를 사용한 백엔드 개발
        express 모듈 사용
        라우트
        404, 500 에러핸들러
        로그처리
        정적파일 서비스

        ejs 템플릿 - Java의 JSP와 거의 비슷하다.
        레이아웃 - express-partials
                로그인/로그아웃 상단

        쿠키 cookie-parser
        세션 express-session
        레디스연동 - 세션스토어 기능 connect-redis

        폼 - body 파싱 body-parser
        CSRF - 크로스사이트 리퀘스트 포저리(위조) csurf
        인증(로그인)
        플래시 메시지 connect-flash
        config 공통 변수
2.socket.IO를 사용한 확장
        프로젝트 3개
        first_app : 소켓io 통신 주고 받기, 파이썬으로 웹서버
        second_app : nodejs. 네임스페이스 기능, Room 기능 예제
        packtchat_again(1장 프로젝트 이어서) : express에 소켓io 연동, 레디스 적용
3.사용자 인증(2장 프로젝트 이어서) - passport(OAuth 연동), scmp
        페이스북 인증 로그인
        구글 인증 로그인
        로컬 인증 로그인 - salt, pbkdf2
4.RabbitMQ로 메시지 큐잉하는 법
        프로젝트 3개
        rabbit_first : RabbiMQ 매니지먼트 및 amqp 단위 테스트(pub/sub), RabbiMQ을 설치하기 위해서는 erlang을 미리 설치해야 한다.
        rabbit_second : RabbiMQ와 소켓통신
        packtchat(3장 이어서) : 페이지접속 로그처리를 RabbitMQ에 적용, q의 Promise 적용
5.애플리케이션 데이터 저장소로 레디스 사용
        프로젝트 3개
        redis_first_app : 레디스 단위 테스트
        redis_second_app : 메시지 큐로 레디스 사용하기
        packtchat(4장 이어서) : 채팅방 기능 구현(사용자 추가/조회, 룸 추가/조회, 메시지 추가/조회) - 실행은 안함. 구동화면없음
6.바우어를 사용한 프론트엔드 의존성 관리

        프로젝트2개
        react : bower를 이용한 설치(git 설치 필요), 렌더링 단위 테스트, bower를 설치하기 위해서는 git이 필요하다.(포터블도 괜찮다. 환경변수에 path만 추가해주면)
        backbone : 모델 데이터 변경 감시... 단위 테스트

 

6장부터 흥미를 잃었다...

리엑트와 백본에 대한 설명이 부족해서...이해가 안된다-_-;;;

 

7.DOM 이벤트를 위한 백본과 리액트 사용

        다 하면.... 채팅방 생성 및 실제 2인 이상 채팅을 할 수 있다.

8.애플리케이션 개발을 위한 자바스크립트 사용 사례

        nodeunit을 이용해서 테스트하는 과정이 있다.

        instanbul을 이용해서 테스트하는데... 명령어가 잘 못 된듯 하다. 모르겠다.-_-;;

        환경설정 파일을 만드는 과정이 있는데 windows는 없다.-_-;;; 이럴거면 처음부터 windows는 안한다고 하던가-_-;;;;

        grunt.... 흥미 사라짐.............~~%$%^&*

9.배치와 확장성

        아마존 클라우드에 세팅하는 방법.... 관심이 없소....

10.디버깅과 문제 해결

        크롬 개발자 모드는...대부분 상식으로 알고 있지 않나?

        node-inspector를 이용한 백엔드 디버깅은 놀라울 따름... 하지만... 정확히 변수값을 가져오는 방법을 아직 모르겠음.

       webkit-devtools-agent를 설치할려면 node의 gyp이 필요한데 , 이것은 현재 python최신버전은 지원하지 못한다-_-; 맞나???? 2.x 설치해도...안된다---ㅜㅜㅜ...

기타 사용법

npm

        npm install : package.json 내용 전체를 설치한다.

        npm install express : express를 설치한다.

        npm install express -g : express를 글로벌로 설치한다.(C:\Users\Administrator\AppData\Roaming\npm 여기에 설치됨)

        npm init : 현재 설치된 상태를 package.json 파일로 작성한다.

        npm list : ?? 현재 설치 상태 확인??? 에러난다...

바우어

        bower install

        bower init

레디스 명령어

        keys * : 키목록 조회

        flushdb : 모든 키 삭제, 복구 불가

        get test : test 키 조회

        hgetall test1 : test1 해시(맵)를 조회

        hget test1 name : test1의 데이터중 name을 조회

        lrange test2 : test2 배열을 조회

 

        set : key1, value1 추가

        hset : key1, key1-1, value1-1 추가

        lpush : 배열에 추가

 

        zadd

        zrem

        del

        zrange

 

        expire test3 60 : test3을 60초 만기로

        setex test4 'expi' 60 : test4에 expi를 value로... 60초 만기

        ttl test4 : 만기시간 조회

 

        pubsub channels : 현재 구독중인 채널 조회

        pubsub numsub "test5" : test5채널의 구독자 수 조회

        publish 'test5' 'hello' : 발송

        subscribe 'test5' : 구독

파이썬 2.x

        Python -m SimpleHTTPServer

파이썬 3.x

        Python -m http.server

 


<정오표>

Var -> var
p57, 10행
p58, 9행
p65, 5행
p103, 22행
p107, 3행, 12행
p110, 마지막행

p83
"//script 태그 아래" 행 바로 위에 var $sent = $('#sent'); 누락

p84
7행, 우리 리스트나 -> 우리 리스트가
밑에서 5행, 모든 사람에게 모낸다. -> 모든 사람에게 보낸다.

p102
밑에서 5행, npm.install -> npm install

p104
밑에서 8행, </scri pt> -> </script>

p143
2행, index.js -> utilities.js

p165
13행, "express": "4.9.4", 누락

p183
3행, 않아 4장 -> 않아 1장

p222
12행, SimpleHTTPSever -> SimpleHTTPServer

 

 

 

총평 : 깊게 빨대를 꽂은 느낌이다.

그래서 옆에 있는 것은 무언인지 알지 못하고, 그저 최종 목표만을 향해서 돌진하는 모습니다.

그래서 한 STEP을 놓치면, 더 앞으로 나가기 어렵다. 흥미를 잃기 때문이다.

node.js 와 redis와의 연동을 목표로 책을 구매했으므로, 소정의 성과는 달성했지만...

조금은 아쉽다.

더 나아가....

nodejs 중급서

이것이 레디스다

프론트엔드 - 리엑트, 백본

이스탄불, 그런트 관련된 책을 기본부터 다시 봐야 할 것 같다.

 

node.js 의 모듈은 굉장히 많다.

그래서 같은 기능을 하는 모듈이 중복되어 존재한다.

그래서 책마다 그런 기능을 수행하기 위해 사용되는 모듈이 제각각이다.

그러므로 하나의 책에서 사용된 모듈을 맹신하지는 말자...!!!

 

 

 

 

 

 

 

 

 

 

'기타 도서 리뷰 > 기타' 카테고리의 다른 글

이것이 레디스다 - 정경석 지음  (0) 2015.10.05