SlideShare une entreprise Scribd logo
1  sur  12
NODE.JS
4장. npm을 이용한 의존성 확장 모듈
관리
5장. 트위터 백업 어플리케이션 예제

검색광고서비스개발2팀 허원진
4.1 npm소개
npm : 노드를 위한 패키지 매니저, 확장 모듈의 관리를 쉽게 하게 도와주는 것
(MAVEN 과 같은 의존성 라이브러리 관리 기능과 비슷함)

-중앙 저장소 : 모든 사용자가 접근할 수 있는 곳
-package.json : 프로젝트 관련 정보 저장, 의존선 확장 모듈 정보도 담겨 있어 공유
각 개발자가 자신의 로컬 환경에서 필요한 의존 모듈을 설치할 수 있음
4.2 npm 설치
노드 0.6.3부터 npm이 노드에 포함되어 함께 설치된다.
다음 명령어를 통해 설치 여부를 확인 할 수 있다.
$ npm –v
1.1.0-beta-4
4.3 npm을 이용한 확장 모듈
설치 /usr/local/lib과 같은 node설치 경로에
글로벌 설치 : 커맨드 창에서 직접 쓰는 경우.
node_modules디렉토리 아래에 설치
로컬 설치 : require(‘모듈명’) 으로 접근하는 경우. 현재 위치 기준 node_modules
디렉토리에 설치
글로벌 설치
[nodemon : 커맨드라인에서 유틸리티 도구 처럼 사용하는 모듈]
$ npm install nodemon –g
$ npm list –g
로컬 설치
[ request 모듈]
$ npm install request

npm [명령어] [타겟 모듈이름] [옵션]
http://search.npmjs.org
4.5 설치된 확장 모듈 관리
모듈 업데이트 : $ npm update 모듈명
특정 버전 설치 : $ npm install 모듈명@버전
버전 확인 : $ npm info 모듈명
모듈 삭제 : $ npm uninstall 모듈명
4.6 package.json을 이용한 프로젝트 관리
{
“name” : “application-name”
, “version” : “0.0.1”
, “private” : true
, “dependencies” : {
“express” : “2.4.6”
, “jade” : “>= 0.0.1”
}
}

name, version, description,
keywords, homepage,
author, contributors,
repository, scripts, config,
private, dependencies 등

package.json 자동 생성
$ npm init : 기본적인 package.json을 만들 수 있음
$ npm install 모듈명 –save : dependencies필드에 자동으로 모듈에 대한 정보를 추가
5.1 restler를 이용한 트위터 REST API
사용
트위터의 Open API : http://search.twitter.com/search.json?q=test&result_type=recent&
rpp=100&seince_id=1
{ completed_in : 0.222,
max_id : 1245919293949919192390,
max_id_str : ‘124518862616213312’,
next_page : ‘?page=2&max_id=1245188626151213312&q=text&rpp=100’,
page : 1,
query : ‘text’,
refresh_url : ‘?since_id = 124518852515213312&q=text’,
results:
[ { created_at: ‘Thu, 13 Oct 2011 16:16:22 +0000’,
from_user: ‘twitpiclvr’,
…
}],
results_per_page : 100,
since_id : 1,
since_id_str :’1’}
5.1 restler를 이용한 트위터 REST API
사용
REST 클라이언트 라이브러리 restler 설치
$ npm install restler
get(url, options)
post(url, options)

 get 과 post로 요청을 보내고, 콜백을 통해 응답을 받고 restler가 content-type에 따라
응답을 자동으로 JSON이나 XML로 파싱해 준다.
5.1 restler를 이용한 트위터 REST API
사용
var rest=require('restler')
, fs = require('fs')
, schedule = require('node-schedule');
var Tweet = {
sinceId: '1'
, isOpened: false
, getTweets: function(search, callback){
search = encodeURIComponent(search);
fs.readFile('./maxid.txt', function(err, maxId){
if(err){Tweet.sinceId=1;}
else{ Tweet.sinceId=maxId;}
…
5.1 restler를 이용한 트위터 REST API
사용
rest.get(
'http://search.twitter.com/search.json?q=' + search +
'&result_type=recent' + '&rpp=100' +
'&since_id=' + this.sinceId
).on('complete', function(data){

var text="";
data.results.forEach(function(elem, index, array){
text += elem.from_user+':'+
elem.text + ' at' + elem.created_at +'n';
});
if(!Tweet.isOpened){
fs.open('./tweets.txt','a',0666,function(err,fd){
if(err){throw err;}
…
5.1 restler를 이용한 트위터 REST API
사용
isOpened=true;
var buffer = new Buffer(text);
fs.write(fd, buffer, 0, buffer.length, null
,function(err){
fs.close(fd,function(){
tweet.isOpened = false;
fs.writeFile('./maxid.txt'
, data.max_id.toString()
,function(err){}
);
});

});
});
}
});
});
}
}
…
5.1 restler를 이용한 트위터 REST API
사용
var rule = new schedule.RecurrenceRule();
rule.hour = new schedule.Range(0,23);
rule.minute = [0,5, 10,15, 20,25, 30,35, 40,45, 50];
var j = schedule.scheduleJob(rule, function(){
Tweet.getTweets('#nodejs');
console.log('Backup is completed at ' + new Date());
});

Contenu connexe

Tendances

WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
trustinlee
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
흥배 최
 
XECon PHPFest 2014 - 쉽고 강력한 XE 웹사이트 만들기
XECon PHPFest 2014 - 쉽고 강력한 XE 웹사이트 만들기XECon PHPFest 2014 - 쉽고 강력한 XE 웹사이트 만들기
XECon PHPFest 2014 - 쉽고 강력한 XE 웹사이트 만들기
경원 홍
 
Drawing web app in amazon server
Drawing web app in amazon serverDrawing web app in amazon server
Drawing web app in amazon server
SangHun Lee
 

Tendances (20)

Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
Netty 시작하기 (1)
Netty 시작하기 (1)Netty 시작하기 (1)
Netty 시작하기 (1)
 
피들러 신명대
피들러 신명대피들러 신명대
피들러 신명대
 
Python machine learning Chapter 02
Python machine learning Chapter 02Python machine learning Chapter 02
Python machine learning Chapter 02
 
1. 미티어의 폴더구조
1. 미티어의 폴더구조1. 미티어의 폴더구조
1. 미티어의 폴더구조
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment Setting
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
nodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOnodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IO
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
 
Node mcu 셋업하기
Node mcu 셋업하기Node mcu 셋업하기
Node mcu 셋업하기
 
Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼
 
Bug sense 분석
Bug sense 분석Bug sense 분석
Bug sense 분석
 
맛만 보자 Undertow
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertow
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
 
2016-05-16
2016-05-162016-05-16
2016-05-16
 
Web socket
Web socketWeb socket
Web socket
 
[개인프로젝트]리눅스 도난 방비 모듈
[개인프로젝트]리눅스 도난 방비 모듈[개인프로젝트]리눅스 도난 방비 모듈
[개인프로젝트]리눅스 도난 방비 모듈
 
XECon PHPFest 2014 - 쉽고 강력한 XE 웹사이트 만들기
XECon PHPFest 2014 - 쉽고 강력한 XE 웹사이트 만들기XECon PHPFest 2014 - 쉽고 강력한 XE 웹사이트 만들기
XECon PHPFest 2014 - 쉽고 강력한 XE 웹사이트 만들기
 
Drawing web app in amazon server
Drawing web app in amazon serverDrawing web app in amazon server
Drawing web app in amazon server
 

En vedette

10 minute a day social media routine
10 minute a day  social media routine10 minute a day  social media routine
10 minute a day social media routine
Audacious Leap
 
Nursing consults power point presentation
Nursing consults power point presentationNursing consults power point presentation
Nursing consults power point presentation
Miriam Macdonald
 

En vedette (19)

General quiz - 2015
General quiz - 2015General quiz - 2015
General quiz - 2015
 
Michael Jackson quiz - part - 8
Michael Jackson quiz - part - 8Michael Jackson quiz - part - 8
Michael Jackson quiz - part - 8
 
Debon delicatesson
Debon delicatessonDebon delicatesson
Debon delicatesson
 
10 ways to create social media content
10 ways to create social media content10 ways to create social media content
10 ways to create social media content
 
Mar tech debriefing 2015
Mar tech debriefing 2015Mar tech debriefing 2015
Mar tech debriefing 2015
 
Fotos!
Fotos!Fotos!
Fotos!
 
New Horizons lll - Executive Summary
New Horizons lll - Executive SummaryNew Horizons lll - Executive Summary
New Horizons lll - Executive Summary
 
Psychic Medium Orange County
Psychic Medium Orange CountyPsychic Medium Orange County
Psychic Medium Orange County
 
Children's wear
Children's wearChildren's wear
Children's wear
 
Mathematics quiz - 4
Mathematics quiz  -  4Mathematics quiz  -  4
Mathematics quiz - 4
 
Quotation for occasions
Quotation for occasionsQuotation for occasions
Quotation for occasions
 
Power Marketing Summit
Power Marketing SummitPower Marketing Summit
Power Marketing Summit
 
Ubd 3
Ubd 3Ubd 3
Ubd 3
 
Treinamento Sentey 2013
Treinamento Sentey 2013Treinamento Sentey 2013
Treinamento Sentey 2013
 
10 minute a day social media routine
10 minute a day  social media routine10 minute a day  social media routine
10 minute a day social media routine
 
debon ice cream retailer
  debon ice cream retailer   debon ice cream retailer
debon ice cream retailer
 
Sistema imunológica
Sistema imunológicaSistema imunológica
Sistema imunológica
 
Treinamento intel 2012
Treinamento intel 2012Treinamento intel 2012
Treinamento intel 2012
 
Nursing consults power point presentation
Nursing consults power point presentationNursing consults power point presentation
Nursing consults power point presentation
 

Similaire à Nodejs4

패키지 매니저의 요건
패키지 매니저의 요건패키지 매니저의 요건
패키지 매니저의 요건
Ohgyun Ahn
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
Tommy Lee
 

Similaire à Nodejs4 (20)

[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장
 
NPM Library Deploy
NPM Library DeployNPM Library Deploy
NPM Library Deploy
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
패키지 매니저의 요건
패키지 매니저의 요건패키지 매니저의 요건
패키지 매니저의 요건
 
Maven
MavenMaven
Maven
 
RHEL8 Kernel Management Manual in Korean
RHEL8 Kernel Management Manual in KoreanRHEL8 Kernel Management Manual in Korean
RHEL8 Kernel Management Manual in Korean
 
Node.js intro
Node.js introNode.js intro
Node.js intro
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
Python machine learning_chap02
Python machine learning_chap02Python machine learning_chap02
Python machine learning_chap02
 
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
Atom package part1
Atom package part1Atom package part1
Atom package part1
 
Internship backend
Internship backendInternship backend
Internship backend
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영
 
React Redux React Native
React Redux React NativeReact Redux React Native
React Redux React Native
 
보안프로젝트 세미나 Viper-v1.2
보안프로젝트 세미나 Viper-v1.2보안프로젝트 세미나 Viper-v1.2
보안프로젝트 세미나 Viper-v1.2
 
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
 
One-day-codelab
One-day-codelabOne-day-codelab
One-day-codelab
 

Nodejs4

  • 1. NODE.JS 4장. npm을 이용한 의존성 확장 모듈 관리 5장. 트위터 백업 어플리케이션 예제 검색광고서비스개발2팀 허원진
  • 2. 4.1 npm소개 npm : 노드를 위한 패키지 매니저, 확장 모듈의 관리를 쉽게 하게 도와주는 것 (MAVEN 과 같은 의존성 라이브러리 관리 기능과 비슷함) -중앙 저장소 : 모든 사용자가 접근할 수 있는 곳 -package.json : 프로젝트 관련 정보 저장, 의존선 확장 모듈 정보도 담겨 있어 공유 각 개발자가 자신의 로컬 환경에서 필요한 의존 모듈을 설치할 수 있음
  • 3. 4.2 npm 설치 노드 0.6.3부터 npm이 노드에 포함되어 함께 설치된다. 다음 명령어를 통해 설치 여부를 확인 할 수 있다. $ npm –v 1.1.0-beta-4
  • 4. 4.3 npm을 이용한 확장 모듈 설치 /usr/local/lib과 같은 node설치 경로에 글로벌 설치 : 커맨드 창에서 직접 쓰는 경우. node_modules디렉토리 아래에 설치 로컬 설치 : require(‘모듈명’) 으로 접근하는 경우. 현재 위치 기준 node_modules 디렉토리에 설치 글로벌 설치 [nodemon : 커맨드라인에서 유틸리티 도구 처럼 사용하는 모듈] $ npm install nodemon –g $ npm list –g 로컬 설치 [ request 모듈] $ npm install request npm [명령어] [타겟 모듈이름] [옵션] http://search.npmjs.org
  • 5. 4.5 설치된 확장 모듈 관리 모듈 업데이트 : $ npm update 모듈명 특정 버전 설치 : $ npm install 모듈명@버전 버전 확인 : $ npm info 모듈명 모듈 삭제 : $ npm uninstall 모듈명
  • 6. 4.6 package.json을 이용한 프로젝트 관리 { “name” : “application-name” , “version” : “0.0.1” , “private” : true , “dependencies” : { “express” : “2.4.6” , “jade” : “>= 0.0.1” } } name, version, description, keywords, homepage, author, contributors, repository, scripts, config, private, dependencies 등 package.json 자동 생성 $ npm init : 기본적인 package.json을 만들 수 있음 $ npm install 모듈명 –save : dependencies필드에 자동으로 모듈에 대한 정보를 추가
  • 7. 5.1 restler를 이용한 트위터 REST API 사용 트위터의 Open API : http://search.twitter.com/search.json?q=test&result_type=recent& rpp=100&seince_id=1 { completed_in : 0.222, max_id : 1245919293949919192390, max_id_str : ‘124518862616213312’, next_page : ‘?page=2&max_id=1245188626151213312&q=text&rpp=100’, page : 1, query : ‘text’, refresh_url : ‘?since_id = 124518852515213312&q=text’, results: [ { created_at: ‘Thu, 13 Oct 2011 16:16:22 +0000’, from_user: ‘twitpiclvr’, … }], results_per_page : 100, since_id : 1, since_id_str :’1’}
  • 8. 5.1 restler를 이용한 트위터 REST API 사용 REST 클라이언트 라이브러리 restler 설치 $ npm install restler get(url, options) post(url, options)  get 과 post로 요청을 보내고, 콜백을 통해 응답을 받고 restler가 content-type에 따라 응답을 자동으로 JSON이나 XML로 파싱해 준다.
  • 9. 5.1 restler를 이용한 트위터 REST API 사용 var rest=require('restler') , fs = require('fs') , schedule = require('node-schedule'); var Tweet = { sinceId: '1' , isOpened: false , getTweets: function(search, callback){ search = encodeURIComponent(search); fs.readFile('./maxid.txt', function(err, maxId){ if(err){Tweet.sinceId=1;} else{ Tweet.sinceId=maxId;} …
  • 10. 5.1 restler를 이용한 트위터 REST API 사용 rest.get( 'http://search.twitter.com/search.json?q=' + search + '&result_type=recent' + '&rpp=100' + '&since_id=' + this.sinceId ).on('complete', function(data){ var text=""; data.results.forEach(function(elem, index, array){ text += elem.from_user+':'+ elem.text + ' at' + elem.created_at +'n'; }); if(!Tweet.isOpened){ fs.open('./tweets.txt','a',0666,function(err,fd){ if(err){throw err;} …
  • 11. 5.1 restler를 이용한 트위터 REST API 사용 isOpened=true; var buffer = new Buffer(text); fs.write(fd, buffer, 0, buffer.length, null ,function(err){ fs.close(fd,function(){ tweet.isOpened = false; fs.writeFile('./maxid.txt' , data.max_id.toString() ,function(err){} ); }); }); }); } }); }); } } …
  • 12. 5.1 restler를 이용한 트위터 REST API 사용 var rule = new schedule.RecurrenceRule(); rule.hour = new schedule.Range(0,23); rule.minute = [0,5, 10,15, 20,25, 30,35, 40,45, 50]; var j = schedule.scheduleJob(rule, function(){ Tweet.getTweets('#nodejs'); console.log('Backup is completed at ' + new Date()); });