태그 글목록: node.js

how to install zmq on ubuntu

/* 우분투 리파지토리에 node 리파지토리를 추가후 nodejs 인스톨 */
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

/* node 관련 폴더들을 현재 사용자 소유로 만든다. */
sudo chown -R `whoami` ~/.npm
sudo chown -R `whoami` /usr/lib/node_modules
sudo chown -R `whoami` /usr/local

/* node-gyp 를 인스톨한다. 노드에서 사용할 네이티브들을 컴파일 가능하게 해준다.*/
sudo npm install -g node-gyp

/* libzmq3-dev를 인스톨한다. */
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libzmq3-dev

/* 이제 zmq npm 패키지를 인스톨한다. */
npm install -g zmq

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious
ice_logo-5dcea9e47b780ff52f75c3c3304d54827f56211e[2]

maria backup script 를 node로

ice_logo-5dcea9e47b780ff52f75c3c3304d54827f56211e[2]

 

마리아디비도 mysqldump 명령으로 한줄이면 끝날것을 node 로 뻥튀기.

node 로 maria 디비에 접근한걸 의미로 둠

순서는대강 이렇슴.

1. 마리아에서 table 목록을 가져온다.

2. 현재 날짜로 folder 를 만든다.

3. folder 에 table 별로 화일을 만든다.

민망한 소스는 공개 ^^;

https://github.com/ppillip/nodejs_maria_dump

이어지는 포스팅은 maria 2 mongodb 소스를 적는걸로

 

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious

신조어 생성 – 계정 샤딩

신조어 – 계정 샤딩 

미션 – UI 의 모든 이벤트를 로그로 쌓는다. 공짜로.

방법 : 계정샤딩(ID Sharding) 

준비물  : 구글 계정 10개, 노드 서비스 하나 호스팅 (appfog정도면 훌륭)

1. 준비한 구글계정 10개로 mongohq 계정 10개 판다.

2. 로그를 저장할 프로그램에서 id 를 atoz로 10개 계정으로 나눠서 저장하는 코드를 짠다.
-> 어짜피 json 은 join 이런거 후져서 다때려박으니(embedded pattern) 문제없음.

3. 생성할때는 10개의 서버가 있는셈 : 겁나 빠르겠지?
조회할때는 10개큐에 계정정보를 동시에 날려서 promise (jQuery promise같은거 구현해야겠다) 받은뒤, 리턴받은 10개를 reduce 구현 하면 됨. 하둡이 따로없어!!

p.s : 몽고 샤딩:계정샤딩 = 파티션테이블:프로그램코딩

이랄까?

와 진짜 좋은생각~!!! 잠이 확깬다~!! 계정 샤딩 만쉐~!!

일단 ID 샤딩 구현하고 , 그담번에는 계정 레플리카도 생각해봐야지… 씐난다~!

 

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious

Node Crypto 연습 (암복호화 모듈)

iOS 랑 데이터를 주고받아야 하는데, http로 할려다 보니까 암호화가 필요 했다. https 로 해도 일부 해결 되겠지만, 내친 김에 Node에 있는 함수들로 구현해봄. (그동안 너무 헬스블로그로 운영한듯 하기도 하고 😉

Node API Reference
– http://nodejs.org/api/crypto.html#crypto_class_cipher

자.. 이제 시작

var crypto = require("crypto");

function encrypt(text,key){
 /* 알고리즘과 암호화 key 값으로 셋팅된 클래스를 뱉는다 */
    var cipher = crypto.createCipher('aes-256-cbc',key); 

 /* 컨텐츠를 뱉고 */
    var encipheredContent = cipher.update(text,'utf8','hex'); 

 /* 최종 아웃풋을 hex 형태로 뱉게 한다*/
    encipheredContent += cipher.final('hex');

    return encipheredContent;
}

/*암호화나 복호화나 자세히 보면 비슷함*/
function decrypt(text,key){

    var decipher = crypto.createDecipher('aes-256-cbc',key);

    var decipheredPlaintext = decipher.update(text,'hex','utf8');

    decipheredPlaintext += decipher.final('utf8');

    return decipheredPlaintext;
}

/*이제 테스트 해봐야지*/
var key = "tHis_iS_privaTe_kEy";
var text = "우리는 민족중흥의 역사적 사명을 띄고 이땅에 태어 났다. 조상에 빛난 얼을 오늘에 되살려 안으로 자주독립 자세를 확립
하고 밖으로 인류공영에 이바지할 때다. 박정희 아자씨 시러요";
var hw = encrypt(text,key);
console.log("################### 인코딩 ##################");
console.log(hw);

console.log("################### 디코딩 ##################");
console.log( decrypt(hw,key) );

이제 iOS 랑 테스트 해볼 일만 남았네 ㅋ

(https://gist.github.com/3973544 에 저장)

P.S : 암호화 3가지 패턴에 대하여
(http://debop.egloos.com/2304757)

1. Hashing : 한방향으로 암호화후 비교만 가능
ex) MD5, SHA1, SHA256, SHA384, SHA512

2. Symmetric : 양방향 암복호화 가능 private key 사용
 ex) DES, TripleDES, Rijndael, RC2 

3. Asymmetric : 양방향 암복호화 가능 private,public key 사용
공인인증서에서 쓴단다.
ex)  DSA, RSA

 

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious

cloud9 IDE 설치

우분투에 node를 설치 했으니 여러가지 방법으로 개발을 할 수 있겟지만. cloud9 IDE가 최근 node v0.6.16지원으로 다시 돌아 왔고, 여지없이 고놈이 제일 멋있어 보인다. (브라우져에서 개발과 디버깅, 콘솔까지!거부할수가 없어!)

이틀간 병신짓을 간략히 요약해보면

1. node 최신버전 (v0.8.9) 설치
2. sm 설치
3. cloud9 설치
->안된다ㅜㅜ
4. nvm 설치후 node 버전 다운그레이드 (v0.6.16)
->역시나 cloud9 횽아들은 node 버전업 되도 개무시하는가바
5. cloud9 재설치
6. 잘된다!
7. node 버전을 최신버전으로 다시 바꿈(v0.8.9)
8. 잘된다!!!!!!!!

지금은 그냥

~/cloud9/bin/cloud9.sh -w ~/ProjectsN/ -l 192.168.207.131
해서 잘 쓰고 있다.

아.. 아름다와..

ubuntu 12.04 LTE (64bit)에 완벽한 NODE 개발 환경이 갖추어진 VM 을 가지게 됬다!

행복해!

기념으로 인증샷~!!! ㅋ

아~ 참고로 윈도우에서는 이거 안됨 ㅜ.ㅜ

 

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious

nvm (node version manager) 사용해보기

nvm 은 (https://github.com/creationix/nvm) <– 에 가면 설치 방법이 나온다
(당연히 git 은 깔려 있어야 함 )

Installation

>git clone git://github.com/creationix/nvm.git ~/nvm

>. ~/nvm/nvm.sh

 

Usage

nvm install v0.6.16 <- 특정버전 설치

nvm ls <- 목록보기

nvm use v0.6.16 <- 특정버전으로 사용하기

 

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious

Create a node webapp with express.js

웹서버를 노드에서 돌리는거는 오방 간단한데… (node.js 사이트 가보면 젤먼저 나오는 6줄 짜리 테스트 코드) 첨부터 끝까지 api 가지고 개발할려면 안습.

역시 양깨들의 힘을 빌어 express.js 님을 (http://expressjs.com/) 이용해서 웹서버하나 돌려 봐야지

시작~

1. express.js install

>npm install -g express

* 위에처럼 뜨면 성공.. (아..캡처 뜨고 minus 에 이미지 올리고 할려니 너무 힘들다;; 있어보이기는 하는데 앞으로는 걍 하지 말아야지)

 

2. express simpleWeb (simpleWeb 프로젝트) 만들어보기 

ppillip@ubuntu:~$ cd ProjectsN/
ppillip@ubuntu:~/ProjectsN$ express simpleWeb <— 요기가 커맨드

create : simpleWeb
create : simpleWeb/package.json
create : simpleWeb/app.js
create : simpleWeb/public
create : simpleWeb/public/javascripts
create : simpleWeb/public/images
create : simpleWeb/public/stylesheets
create : simpleWeb/public/stylesheets/style.css
create : simpleWeb/routes
create : simpleWeb/routes/index.js
create : simpleWeb/routes/user.js
create : simpleWeb/views
create : simpleWeb/views/layout.jade
create : simpleWeb/views/index.jade

install dependencies:
$ cd simpleWeb && npm install

run the app:
$ node app

ppillip@ubuntu:~/ProjectsN$

* express 를 -g 옵션으로 설치 햇으니 마치 우붕 유틸처럼 잘도 됨

 

3. 관련 패키지 설치

>cd simpleWeb
*express 가 만들어준 폴더에 들어가서

>npm install
*추가 옵션없이 바로 명령어 실행하면 현재 디렉토리(simpleWeb) package.json 을 읽고 그안에 있는것을 추가 install 한다.

ppillip@ubuntu:~/ProjectsN/simpleWeb$ npm install <— package.json 을 읽고 실행됨
npm WARN package.json application-name@0.0.1 No README.md file found!
npm http GET https://registry.npmjs.org/express/3.0.0rc4
npm http GET https://registry.npmjs.org/jade
npm http 200 https://registry.npmjs.org/express/3.0.0rc4
npm http GET https://registry.npmjs.org/express/-/express-3.0.0rc4.tgz
npm http 200 https://registry.npmjs.org/jade
npm http GET https://registry.npmjs.org/jade/-/jade-0.27.4.tgz
npm http 200 https://registry.npmjs.org/express/-/express-3.0.0rc4.tgz
npm http 200 https://registry.npmjs.org/jade/-/jade-0.27.4.tgz
npm http GET https://registry.npmjs.org/connect/2.4.4
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
npm http GET https://registry.npmjs.org/cookie/0.0.4
npm http GET https://registry.npmjs.org/crc/0.2.0
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.0.4
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/connect/2.4.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm http 304 https://registry.npmjs.org/cookie/0.0.4
npm http 304 https://registry.npmjs.org/mkdirp/0.3.3
npm http 304 https://registry.npmjs.org/crc/0.2.0
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm WARN package.json methods@0.0.1 No README.md file found!
npm http 304 https://registry.npmjs.org/send/0.0.4
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.4.2
npm http GET https://registry.npmjs.org/formidable/1.0.11
npm http GET https://registry.npmjs.org/bytes/0.1.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/qs/0.4.2
npm http 304 https://registry.npmjs.org/formidable/1.0.11
npm http 304 https://registry.npmjs.org/bytes/0.1.0
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/pause/0.0.1
jade@0.27.4 node_modules/jade
├── commander@0.6.1
└── mkdirp@0.3.4

express@3.0.0rc4 node_modules/express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie@0.0.4
├── crc@0.2.0
├── commander@0.6.1
├── debug@0.7.0
├── mkdirp@0.3.3
├── send@0.0.4 (mime@1.2.6)
└── connect@2.4.4 (pause@0.0.1, bytes@0.1.0, qs@0.4.2, formidable@1.0.11)

먼가 오방 인스톨 하는게 보임.. package.json 에 관련된거 싸그리 ㅋ 잘보면 jade랑 express 랑 설치 된것인데 , 여기서 express는 npm_moudles 에 들어가서 내 프로젝트의 라이브러리로서 작용 하는것. (-g 의 프로젝트 생성해주는 유틸과는 다른 것).

게다가 jade하위 프로젝트(lib)들 , express 하위프로젝트들 죄다 설치됨.

 

4. node app.js 

위와 같은 커맨드로 app.js 를 실행해보기

브라우져에서 요런게 보였다면 helloWold 성공 ~!

 

덧붙이기 :

a. express.js 는 npm  -g 옵션으로 선택해서 설치 하면 콘솔에서 “express 프로젝트명” 이런 사용법으로 유틸처럼씀

b. “npm install 패키지명” 하면 해당 패키지가 설치됨, 만약 패키지명 생략하면 현재디렉토리의 package.json 을 찾아서 싸그리 설치함

c.  node app.js 형태로 실행함

 

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious

우분투에 node 개발환경 만들기

node.js 가 업뎃도 되고 (http://nodejs.org/)

윈도우 node를 쓰니 “이건 먼가 좀 커피 쏟아 말라 비틀어진 장판에 발이 쩍 달라붙은 느낌” 처럼 찜찜한게 있다.

게다가 사용중에 이래저래 귀찮은 일이 벌어진다. (가령 forever 가 소스 반영된걸 감지 못한다던가)

또한 윈도용으로 나오는 솔루션들은 항상 릴리즈나 트러블 슈팅이 조금씩?늦다.  없을수도;; (meteor는 안대!)

사실 마이크로소프트횽아들이 전폭적인? 지원을 하고 있다고 하지만  웬지 미심쩍은 곳도 있고.

그렇다고 Mac 을 사자니 돈도 없고….

결국, 이상적이고 포터블한 개발환경은 스펙(http://spectrumdig.blogspot.kr/)말대로 우분투 vm 헤드리스모드가 답인듯.

몇일전 작업 이지만 우분투에 history 가 남았으니 설명을  덧붙여서 작성하게 되었슴.
*솔직히 이글 남길려고 wordpress 설치하고 blog.ppillip.com 계정 연결하고 웬갖 삽질 다하고나서
이제야 남기네… ㅜ.ㅜ

 

이제 작업 시작

일단 vm ware 에 ubuntu 를 최~에신 버전을 설치한다 (난 쌔거가 무조껀 좋아 : 현재 12.04 LTS)

1. ssh 설치 한다

sudo apt-get install ssh
service ssh start

* 일단 vm 을 띄워서 run in background 로 돌리고 나머지 작업은 ssh 접속해서 터미널로 작업 할려고 그랫음

 

2. 사전 필요 모듈 들 설치

sudo apt-get install -y g++ apache2-utils git git-core curl build-essential openssl libssl-dev libxml2-dev

* 하나하나 필요한곳이 잇는데 사실 apache2-utils 예는 머하는건지 나중에 찾아봐야 할듯

 

3. node source 다운로드 하기

mkdir node
git clone git://github.com/joyent/node.git && cd node
git checkout v0.8.9  <– 요고는 원하는데로 버전을 변경할수 있어서 좋다 
(“git checkout 버전”)

*일단 여러가지 방법이 있는데 난 그냥 소스 받아서 컴파일 하는 방법을 택함.

 

4. 컴파일 (node 받은 디렉토리로 이동)

./configure
make
sudo make install

*요대목에서 생각보다 시간 엄청 걸림 ㅋ

 

5. npm 다운로드 및 설치

curl http://npmjs.org/install.sh | sh

*node package manager 다운로드 요거없음 상당히 불편

 

6. 현재유저(ppillip)한테 로컬 폴더 권한주기 

sudo chown -R $USER /usr/local

* -g 옵션(글로발)으로 설치 할려면 이게 있어야지 안그럼 sudo로 npm 실행해야 하는데 그건 좀 사절

 

설치된 기념으로 다가 잇증샷 ㅋ

 

난 애라나도 최신꺼가 젤좋아 ㅋㅋㅋㅋㅋㅋ

사실 궁극의 목적은 웹 IDE 인 cloud9 을 설치 하는것!  설정 완료 되면 다음에 또 포스팅 ㅎㅎ

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious