2015년 2월 10일 화요일

Node.js 대충 정리

[참고]
http://nodejs.org/

http://en.wikipedia.org/wiki/Node.js
http://ko.wikipedia.org/wiki/Node.js
http://www.slideshare.net/kazikai/nodejs-29836481 (내용 괜찮음)
http://bcho.tistory.com/885
http://www.nodebeginner.org/index-kr.html
http://helloworld.naver.com/helloworld/textyle/12864
http://nodeqa.com/nodejs_ref/65


[History]
- Node.js는 Ryan Dahl(Joyent사)에 의해 처음 시작. (2009년)
 : Flickr의 file upload 진행창을 보았을 때, 업로드 상태를 알지 못해 서버로 Query를 해야 한다는 점을 고민하다 Node.js를 고안하였다고 함.

- 최초 Node.js 버전은 Linux 기반으로 출시. (2009년)
 : Inangural JSConf EU conference에서 발표 후 국제적인 관심을 끌기 시작함.

- Node.js의 패키지매니저인 npm은 2011년에 처음 소개되었다.

- Microsoft는 Joyent사와 파트너쉽을 맺음 (2011년 6월)
 : Node.js의 Windows버전을 7월에 출시 (2011년 7월)

[특징]
- 구글 크롬 웹브라우저의 자바스크립트 엔진인 V8 기반 TCP library와 HTTP 서버 제공
- Single Thread 기반 Event driven 방식
- Non-Blocking I/O
- CommonJS 모듈 시스템 => http://helloworld.naver.com/helloworld/textyle/12864
- C, C++로 만들어짐.


[기본 module]

. Node.js 는 stable api / unstable api 가 나눠짐
. 각 api 의 level이 있음 : http://nodejs.org/api/documentation.html
. 개발시에 필히 몇레벨인지 확인한후, 사용하는것이 필요


[클러스터]
. 노드는 싱글 스레드로 동작하기 때문에 멀티프로세스의 이점을 얻지 못함.
. I/O에 대한 처리는 이벤트 루프를 통해 좋은 성능을 보여주지만 CPU 계산량이 많은 부분에는 취약한 면이 있음.
. 이를 클러스터 모듈을 통해 해소할 수 있음.


[유용한 확장 모듈들]

[node-supervisor, 스크립트 수정 시 재실행 해주는 확장 모듈]
. 변경된 스크립트를 재실행 하지 않아도 종료 후 다시 실행해 줌.
. 또한 application이 종료되면 무한으로 다시 실행 함.

. 설치
 : npm install –g supervisor
. 사용 방법
 : supervisor xxxx.js

[node-schedule, 스케줄링 확장 모듈]

. Crontab과 같이 스케줄링 관리를 하는 모듈 
. 세가지 스케줄링 방법 제공
 1. new Data로 지정한 날짜와 시간에 작동
 2. RecurrenceRule 함수로 동작할 시간의 규칙 지정
 3. 크론 스타일의 반복 주기 설정

[forever, 노드 애플리케이션 관리 확장 모듈]

. 데몬을 사용해서 node 애플리케이션을 실행하는 것과 같이 실행, 관리를 도움
. cmdline에서 사용하는 명령형 도구 이므로 글로벌로 설치
. 실행중인 프로세스 리스트, 정보 확인 가능, stop/restart 관리 가능
. 어플리 종료되면 자동으로 재실행

. 설치
 1. cmdline에서 사용
  $ [sudo] npm install forever -g
 2. 프로그래밍에서 사용
  $ cd /path/to/your/project
  $ [sudo] npm install forever-monitor

. 주요 명령어
 1. 실행
  $ forever start xxxx.js
 2. 실행 리스트 확인
  $ forever list
 3. 실행 중지 (리스트의 [X] 번호)
  $ forever stop 번호
 4. 재시작
  $ forever restart 번호


[npm]
https://www.npmjs.com/
http://en.wikipedia.org/wiki/Npm_(software)
http://forum.falinux.com/zbxe/index.php?document_srl=572898&mid=lecture_tip

. 아이작 슐레터(Isaac Z. Schlueter)가 만든 노드를 위한 패키지 매니저
. 노드에서 사용되는 모듈들의 설치 및 의존성을 관리해 주는 도구
. Java의 maven 처럼 package.json 파일에 modul간 dependenc에 따라서 의존성이 있는 모듈들을 같이 설치 함.
. 주요 명령어
 - npm list xxxx [-g]
 - npm install xxxx [-g]
 - npm remove xxxx [-g]

- windows에서 설치 후 npm 실행 안될 때
c:\users\아이디\AppData\Roaming\npm 폴더 생성
(win 7 기준이고 에러 발생 시 경로가 나옴)

- proxy 설정
npm config set proxy http://xxxxx:yyyy
npm config set https-proxy http://xxxx:yyyy

- UNABLE_TO_VERIFY_LEAF_SIGNATURE 가 발생할 경우
npm config set strict-ssl false
(왠만하면 인증서 등록해서 true로 다시 변경하는게 좋음)


[socket.io]

http://socket.io/


댓글 없음:

댓글 쓰기