SlideShare a Scribd company logo
1 of 50
Download to read offline
JAVASCRIPT EVERYWHERE
       - NODE.JS
     다음 모바일 기술1팀
         임강석
목차

1. node.js 적용 사례
- 소개
- 왜 node.js?
- DStudio, cloud9
- demo

2. node.js 알아보기 1 (살짝만)
- node.js
- npm

3. 실생활에 적용해 본 예제
- 애니팡가이드
- jenkins dashboard

4. node.js 알아보기 2 (좀 더)
- node.js는 완전히 새로운 기술인가?
- node.js 장단점

5. 결론
node.js 적용 사례
about me


아주 간단하게

~ 2003
 win32 애플리케이션
 MS 기술 기반 웹서버

~ 2008
 다음 카페 등 커뮤니티 개발

~ 2012
 다음 지도, 다음 TV, 다음앱 개발 리더




                      twitter : http://twitter.com/illb
왜 node.js를?


* DStudio
사내 개발 클라우드 IDE

JavaScript를 이용해 아이폰, 안드로이드
하이브리드앱을 만드는 것이 목표
1차적인 목표는 js를 기반으로 하는
빠른 하이브리드 앱 프로토타이핑

웹 IDE인 cloud9 기반으로 커스터마이징
cloud9이 nodejs
cloud9




언제 어디서나 브라우저만 있으면 개발 가능
(좋아해야 할 기능인지는 각자 ^^)

front-end, back-end 모두 js로 이루어져 있으며 js 개발에 최적화된 IDE
(c9으로 c9을 고쳐보니 편하더라... 하지만 잘못 수정해서 서버가 안뜨면...)

무료도 있으니 써보시면
 https://c9.io/

소스는 여기 있으니 로컬에서 써보시려면
 https://github.com/ajaxorg/cloud9
cloud9
JavaScript는


웹 브라우저, 모바일 앱, 데스크탑 앱, 서버 등
어디서나 쓸 수 있는 현실적으로 유일한 언어

V8의 등장과 함께 빠른 스크립트 언어로 등극

태생적 특성상 비동기가 일상인 언어
(closure/callback function를 이용한 async)

오픈 소스의 대세인 github에서
제일 인기가 많은 언어
JavaScript는
DStudio
사내 모바일 라이브러리




로그인 라이브러리   UI Frame 라이브러리 브라우저 라이브러리   지도 라이브러리   푸쉬 라이브러리




    업로드 라이브러리
                    음성 검색 라이브러리
                                                  코드 라이브러리
                            음악 검색 라이브러리   사물 검색 라이브러리
node.js 알아보기 1 (살짝만)
Hello node.js




2009/02/15 Ryan Dahl node.js 프로젝트 시작 (github)

0.6 이후 어느정도 정리가 되었고 어느정도 안정화 되었음

0.x 의 홀수 버전은 개발 버전(development), 짝수 버전은 안
정화(stable) 버전

license는 MIT니 원하는대로 수정해서 사용 가능
간단 node.js 특징


* Evented IO
* Async & NonBlock
Server-Side JavaScript
내부는 저수준 Event-loop로 고속 처리 (epoll, kqueue, /dev/poll, select)

구글 크롬의 JavaScript 엔진인 V8을 이용한
빠른 JavaScript 속도

사용자가 작성한 모듈은 single thread

common.js 스펙을 적용하여 표준화

HOT trend!!
node.js Async

var stats = fs.statSync(path);
console.log(‘stats : ‘, stats);




fs.stat(path, function(err, stats) {
 if (err) throw err;
 console.log(‘stats : ‘, stats);
});


CPS (Continuation Passing Style)
리턴 대신에 콜백을 호출한다

http://en.wikipedia.org/wiki/Continuation-passing_style
Hello npm




2009/09/29 Issac Schlueter npm package manager 시작 (github)

아주 빠르게 성장하는 module!!!
https://github.com/joyent/node/wiki/modules




https://npmjs.org : 15,831 packages
실생활에 적용해 본 예제
애니팡 가이드
애니팡 가이드



폰의 화면을 캡쳐하여
이동 가능한 동물(?)을 알려줍니다.

원래는 애니팡 오토를 만들려 했으나...


“오토 프로그램 제작·배포는 불법 맞다”
http://www.thisisgame.com/board/view.php?id=1247211&category=117



예제는 예제일 뿐 오해하지 말자!
Flow


            html,
browser   websocket




                      aniguide
                      (node.js)


          snapshot
            (adb)
어떻게 진행?



적절한 모듈 사용을 위해
github 탐방
https://github.com/joyent/node/wiki/modules

필요한 기능이 모두 있으므로 스크린 샷 한장으로
알고리즘 구현
adb.js




안드로이드의 디버깅 모듈인 adb를 이용해
폰의 스크린 샷을 떠오자
node-canvas




HTML5 canvas API를 서버에서 구현
canvas를 잘 지원하는 브라우저에서는 client에서 그리고
canvas를 지원이 모자란 브라우저에서는 server에서 그리는 것이 가능

Author : TJ Holowaychuk

여기서는 이미지를 읽고 결과 이미지를 서버에서 만드는데 사용
처리 로직


1. 이미지의 동물 영역(?)을 잘라서

2. 각셀의 색의 평균값으로 블럭을 인식

3. 각 셀의 가로/세로를 모두 한번씩 움직이며 움
직인 셀 부터 시작하는 연속된 3개의 셀이 있는지
를 판단 (recursive)

4. 연속된 3개의 셀이 있으면 사람이 인식 할 수 있
도록 적당히 가이드를 그려줌
node-canvas

필요한 이미지를 자르고




셀의 이미지 데이터를 얻어옴
express




ruby Sinatra inspired

가장 유명하며 쉬움

sinatra도 복잡해 지면 rails를 고려하듯
좀 복잡해 질 것 같으면 railway 고려하는 것도 필요

Author : TJ Holowaychuk
express




routes/index.js
ejs




Jade와 함께 express의 view template engine

계속 혼자 개발할 것이라 생각되는 프로젝트는 Jade 유리
html 협업을 해야 한다면 ejs를 선택하는 것이 유리

Jade는 문법을 따로 배워야 해서 ejs 선택

Author : TJ Holowaychuk
socket.io




node.js의 킬러 모듈

WebSocket을 지원하지 않는 브라우저가 많은데
그런 브라우저의 경우 대안 기술을 사용할 수 있도록 해주는 모듈

서버, 클라이언트 모두 JavaScript Interface
socket.io

server-side
결과 이미지를 string으로 변환해 주기적으로 전송




client-side
bootstrap, jquery




UI 구성은 bootstrap
(12 컬럼 그리드, 반응형 웹 지원)

jquery는 javascript core script
애니팡 가이드 Demo
Jenkins Dashboard
Jenkins Dashboard




CI 툴인 jenkins의 기본 dashboard는 별 쓸모가 없음

설정이 제대로 되었는지 한눈에 확인하고
naming convention에 따라 분류를 자동으로 해주며
정적 분석 자료를 한눈에 볼 수 있으며
필요에 따라 변경해 가며 사용하고 싶음
Jenkins Dashboard
jenkins




아주 직관적인 설명과 제목
네트웍 처리이므로 Async
async




jenkins job들을 가져오고
job들의 정보를 얻어오고
xml parsing등을 하는 중첩의   중첩
옆을 줄이려다 밑이 늘어나는 결과를 보이기도 함
error arg가 제일 앞에 오는 nodejs 컨벤션을 잘 지켜야 함
필요할 때가 생기는데 error 처리에 신경을 잘 써야 함

결국 함수/모듈 분리를 잘 하는 것이 최선
async
xml2js




xml을 js object 로 바꿔서 쉽게 처리
connect-asset




 coffee-script, javascript, css, less 등

 개발환경에서는 원본 그대로 추가를 하며
 실환경에서는 합치기, 최적화 등 수행

assets/js/application.js




ejs에서 사용
그 외 알아둘만한 모듈

node-inspector : 노드 디버깅

node-dev : 저장을 하면 바로 restart

forever : 서버가 죽으면 다시 시작

n : 여러 버전 관리

underscore : 여러 유틸리티의 모음 (함수형 기능)
             브라우저용(backbone의 코어)이었으나
             node에도 사용 가능

jake : build script

colors : 커멘드라인 출력에 색을 넣어 줄 수 있음

mocha : test framework로 TJ Holowaychuck이 만듬

browserify : node 모듈을 브라우저에서 사용할 수 있도록 만들어 줌

phantomjs : server side webview
node.js 알아보기 2 (좀 더)
node.js는 완전히 새로운 기술인가?


c10k problem(동시에 10000 connection 유지)을
해결하는 솔루션으로는

event 기반 솔루션은 성능이 검증된 모델
이미 python의 twisted, ruby의 Event Machine 같은 멋진
event 기반 솔루션이 존재

CPS보다 쉬운 coroutine을 사용할 수 있는 python greenlet이나
언어 레벨에서 동시성 처리에 최적화된 erlang도 있음

node.js 이전에도 server side JavaScript는 존재
(ex. ASP JScript, appjet)
기존 기술은


python, ruby, perl 같은 나름 유명한 서버 사이드 스크립트는
수많은 라이브러리가 존재하지만 거의 이벤트 기반이 아님

기존의 라이브러리와 이벤트 기반 라이브러리를 같이 사용하기
에 어려움

erlang 개발자를 어디에서 찾지?

python의 gevent 정도가 매력적

결국 c10k 문제를 해결하려 하면
프로그래밍 관습과 기존 라이브러리가 발목을 잡는 셈
node.js의 매력


JavaScript는 태생적으로 비동기에 최적화 되어있기 때문에
JavaScript 개발자의 문화는 비동기에 익숙하기 때문에
c10k 해결에 적절

nodejs는 새로 만들어졌기 때문에
새로운 문화를 만들기 적절하며
다른 언어에서 검증된 모듈들이 깔끔하게 정리되어 넘어옴

적절한 시기
web 2.0, 모바일 웹, HTML5 와 함께 JavaScript에 대한 관심
급 증가

적절한 조합
V8 + common.js + event driven IO + async
node.js의 장점




   자바스크립트
   개발자의 수
컴파일 언어에 비해
모든 스크립트 언어가 그렇듯이 빠른 개발이 가능
node.js의 단점



중첩 들여쓰기

빠르게 변화하기 때문에 모듈 호환성 유지가 쉽지 않음

컴파일 언어에 비해 모든 스크립트 언어가 그렇듯이
런타임 에러와 사투를 벌여야 하며 리팩토링이 어려움
결론
결론



대세 github에서
가장 인기 있는 언어
JavaScript는

front-end, back-end, mobile app, shell 등
어디에서나 사용할 수 있습니다.
결론

다른 서버 사이드 스크립트에 익숙하지 않다면

front-end 개발자라 JavaScript에 익숙하다면

이 언어 저 언어 배우기 귀찮다면

대세 github에서
가장 인기 있는 back-end
node.js에 빠져 보세요!!!

More Related Content

What's hot

Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료shanka2
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기JeongHun Byeon
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015Goonoo Kim
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XpressEngine
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기John Kim
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015sung yong jung
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스Dan Kang (강동한)
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
Python server-101
Python server-101Python server-101
Python server-101Huey Park
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
Beejei node.js & web service
Beejei   node.js & web serviceBeejei   node.js & web service
Beejei node.js & web serviceBumjin Kim
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나JeongHun Byeon
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장Woo Yeong Choi
 
Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용지원 이
 
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs[C5]deview 2012 nodejs
[C5]deview 2012 nodejsNAVER D2
 

What's hot (20)

Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
Python server-101
Python server-101Python server-101
Python server-101
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Vert.x
Vert.xVert.x
Vert.x
 
Beejei node.js & web service
Beejei   node.js & web serviceBeejei   node.js & web service
Beejei node.js & web service
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장
 
Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용
 
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs[C5]deview 2012 nodejs
[C5]deview 2012 nodejs
 

Viewers also liked

E1_Deview nhn애자일개발 세션소개
E1_Deview nhn애자일개발 세션소개E1_Deview nhn애자일개발 세션소개
E1_Deview nhn애자일개발 세션소개NAVER D2
 
Redmine키노트
Redmine키노트Redmine키노트
Redmine키노트명규 장
 
Template method Pattern 살펴보기
Template method Pattern 살펴보기Template method Pattern 살펴보기
Template method Pattern 살펴보기JinKwon Lee
 
대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기Jaikwang Lee
 
『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기복연 이
 
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...Dennis Kim
 
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)KOS-ROBOT
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화none
 
Spring환경설정하기
Spring환경설정하기Spring환경설정하기
Spring환경설정하기ChangJoo Park
 
[2주차] 알파유저를 위한 AWS 스터디
[2주차] 알파유저를 위한 AWS 스터디[2주차] 알파유저를 위한 AWS 스터디
[2주차] 알파유저를 위한 AWS 스터디Amazon Web Services Korea
 
귀찮은 기능, jQuery Library 에 맡겨버리자!
귀찮은 기능, jQuery Library 에 맡겨버리자!귀찮은 기능, jQuery Library 에 맡겨버리자!
귀찮은 기능, jQuery Library 에 맡겨버리자!KYUNGSUK Cho
 
Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅JinKwon Lee
 
JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!Eric Wendelin
 
스프링공부1
스프링공부1스프링공부1
스프링공부1NaKaNaRa
 
SOSCON2015 Robot Framework
SOSCON2015 Robot FrameworkSOSCON2015 Robot Framework
SOSCON2015 Robot FrameworkSung Hoon Moon
 
문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시동현 조
 
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망동현 조
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구ByungJoon Lee
 

Viewers also liked (20)

E1_Deview nhn애자일개발 세션소개
E1_Deview nhn애자일개발 세션소개E1_Deview nhn애자일개발 세션소개
E1_Deview nhn애자일개발 세션소개
 
Jenkins
JenkinsJenkins
Jenkins
 
Redmine키노트
Redmine키노트Redmine키노트
Redmine키노트
 
Template method Pattern 살펴보기
Template method Pattern 살펴보기Template method Pattern 살펴보기
Template method Pattern 살펴보기
 
Jenkins소개
Jenkins소개Jenkins소개
Jenkins소개
 
대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기
 
『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기
 
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
 
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
[전문가 발표] DRC참가기 & 로봇 정신 (한재권 박사)
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화
 
Spring환경설정하기
Spring환경설정하기Spring환경설정하기
Spring환경설정하기
 
[2주차] 알파유저를 위한 AWS 스터디
[2주차] 알파유저를 위한 AWS 스터디[2주차] 알파유저를 위한 AWS 스터디
[2주차] 알파유저를 위한 AWS 스터디
 
귀찮은 기능, jQuery Library 에 맡겨버리자!
귀찮은 기능, jQuery Library 에 맡겨버리자!귀찮은 기능, jQuery Library 에 맡겨버리자!
귀찮은 기능, jQuery Library 에 맡겨버리자!
 
Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅
 
JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!
 
스프링공부1
스프링공부1스프링공부1
스프링공부1
 
SOSCON2015 Robot Framework
SOSCON2015 Robot FrameworkSOSCON2015 Robot Framework
SOSCON2015 Robot Framework
 
문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시
 
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 

Similar to Javascript everywhere - Node.js | Devon 2012

Single-page Application
Single-page ApplicationSingle-page Application
Single-page ApplicationSangmin Yoon
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월월간 IT 슬라이드
 
최근 Javascript framework 조사
최근 Javascript framework 조사최근 Javascript framework 조사
최근 Javascript framework 조사Kichul Jung
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임sung ki choi
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER Engineering
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 SuHyun Jeon
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 jeong seok yang
 
[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 - 3rdPark Jonggun
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Minsu Park
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기NAVER D2
 
Node.js 살펴보기
Node.js 살펴보기Node.js 살펴보기
Node.js 살펴보기명신 김
 
올챙이 현재와 미래
올챙이 현재와 미래올챙이 현재와 미래
올챙이 현재와 미래cho hyun jong
 
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트Rhio Kim
 
E-Gov 기반 Mobile Web Friendly 개발
E-Gov 기반 Mobile Web Friendly 개발E-Gov 기반 Mobile Web Friendly 개발
E-Gov 기반 Mobile Web Friendly 개발JavaCommunity.Org
 

Similar to Javascript everywhere - Node.js | Devon 2012 (20)

Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
 
최근 Javascript framework 조사
최근 Javascript framework 조사최근 Javascript framework 조사
최근 Javascript framework 조사
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
 
[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
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기
 
Node week1
Node week1Node week1
Node week1
 
Node.js 살펴보기
Node.js 살펴보기Node.js 살펴보기
Node.js 살펴보기
 
올챙이 현재와 미래
올챙이 현재와 미래올챙이 현재와 미래
올챙이 현재와 미래
 
hexa core
hexa corehexa core
hexa core
 
요즘웹개발
요즘웹개발요즘웹개발
요즘웹개발
 
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
 
E-Gov 기반 Mobile Web Friendly 개발
E-Gov 기반 Mobile Web Friendly 개발E-Gov 기반 Mobile Web Friendly 개발
E-Gov 기반 Mobile Web Friendly 개발
 

More from Daum DNA

Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)
Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)
Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)Daum DNA
 
Daum OAuth 2.0
Daum OAuth 2.0Daum OAuth 2.0
Daum OAuth 2.0Daum DNA
 
Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)Daum DNA
 
Daum 검색/지도 API (이정주)
Daum 검색/지도 API (이정주)Daum 검색/지도 API (이정주)
Daum 검색/지도 API (이정주)Daum DNA
 
오픈 API 활용방법(Daum 사례 중심, 윤석찬)
오픈 API 활용방법(Daum 사례 중심, 윤석찬)오픈 API 활용방법(Daum 사례 중심, 윤석찬)
오픈 API 활용방법(Daum 사례 중심, 윤석찬)Daum DNA
 
Daum 티스토리 API (천정환)
Daum 티스토리 API (천정환)Daum 티스토리 API (천정환)
Daum 티스토리 API (천정환)Daum DNA
 
Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)Daum DNA
 
FT직군의 현재와 미래 - 홍윤표
FT직군의 현재와 미래 - 홍윤표FT직군의 현재와 미래 - 홍윤표
FT직군의 현재와 미래 - 홍윤표Daum DNA
 
웹접근성과 장애인 차별 금지법 - 장성민
웹접근성과 장애인 차별 금지법 - 장성민웹접근성과 장애인 차별 금지법 - 장성민
웹접근성과 장애인 차별 금지법 - 장성민Daum DNA
 
반응형 웹 디자인은 만능인가? - 신현석
반응형 웹 디자인은 만능인가? - 신현석반응형 웹 디자인은 만능인가? - 신현석
반응형 웹 디자인은 만능인가? - 신현석Daum DNA
 
Daum devday 13 [bap]
Daum devday 13  [bap]Daum devday 13  [bap]
Daum devday 13 [bap]Daum DNA
 
Daum DevDay 13-힐링이 필요해
Daum DevDay 13-힐링이 필요해Daum DevDay 13-힐링이 필요해
Daum DevDay 13-힐링이 필요해Daum DNA
 
Daum DevDay 13 - 마음의 소리
Daum DevDay 13 - 마음의 소리Daum DevDay 13 - 마음의 소리
Daum DevDay 13 - 마음의 소리Daum DNA
 
Daum DevDay 13 - OpenBrace
Daum DevDay 13 - OpenBraceDaum DevDay 13 - OpenBrace
Daum DevDay 13 - OpenBraceDaum DNA
 
Daum DevDay 13 - Ogangjang
Daum DevDay 13 - OgangjangDaum DevDay 13 - Ogangjang
Daum DevDay 13 - OgangjangDaum DNA
 
Daum DevDay 13 - Mook
Daum DevDay 13 - MookDaum DevDay 13 - Mook
Daum DevDay 13 - MookDaum DNA
 
Daum DevDay 13 - Moonlight
Daum DevDay 13 - MoonlightDaum DevDay 13 - Moonlight
Daum DevDay 13 - MoonlightDaum DNA
 
Daum DevDay 13 - In-N-Out
Daum DevDay 13 - In-N-OutDaum DevDay 13 - In-N-Out
Daum DevDay 13 - In-N-OutDaum DNA
 
Daum DevDay 13 - i-DF
Daum DevDay 13 - i-DFDaum DevDay 13 - i-DF
Daum DevDay 13 - i-DFDaum DNA
 
Daum 키노트 | Devon 2012
Daum 키노트 | Devon 2012Daum 키노트 | Devon 2012
Daum 키노트 | Devon 2012Daum DNA
 

More from Daum DNA (20)

Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)
Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)
Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)
 
Daum OAuth 2.0
Daum OAuth 2.0Daum OAuth 2.0
Daum OAuth 2.0
 
Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)
 
Daum 검색/지도 API (이정주)
Daum 검색/지도 API (이정주)Daum 검색/지도 API (이정주)
Daum 검색/지도 API (이정주)
 
오픈 API 활용방법(Daum 사례 중심, 윤석찬)
오픈 API 활용방법(Daum 사례 중심, 윤석찬)오픈 API 활용방법(Daum 사례 중심, 윤석찬)
오픈 API 활용방법(Daum 사례 중심, 윤석찬)
 
Daum 티스토리 API (천정환)
Daum 티스토리 API (천정환)Daum 티스토리 API (천정환)
Daum 티스토리 API (천정환)
 
Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)
 
FT직군의 현재와 미래 - 홍윤표
FT직군의 현재와 미래 - 홍윤표FT직군의 현재와 미래 - 홍윤표
FT직군의 현재와 미래 - 홍윤표
 
웹접근성과 장애인 차별 금지법 - 장성민
웹접근성과 장애인 차별 금지법 - 장성민웹접근성과 장애인 차별 금지법 - 장성민
웹접근성과 장애인 차별 금지법 - 장성민
 
반응형 웹 디자인은 만능인가? - 신현석
반응형 웹 디자인은 만능인가? - 신현석반응형 웹 디자인은 만능인가? - 신현석
반응형 웹 디자인은 만능인가? - 신현석
 
Daum devday 13 [bap]
Daum devday 13  [bap]Daum devday 13  [bap]
Daum devday 13 [bap]
 
Daum DevDay 13-힐링이 필요해
Daum DevDay 13-힐링이 필요해Daum DevDay 13-힐링이 필요해
Daum DevDay 13-힐링이 필요해
 
Daum DevDay 13 - 마음의 소리
Daum DevDay 13 - 마음의 소리Daum DevDay 13 - 마음의 소리
Daum DevDay 13 - 마음의 소리
 
Daum DevDay 13 - OpenBrace
Daum DevDay 13 - OpenBraceDaum DevDay 13 - OpenBrace
Daum DevDay 13 - OpenBrace
 
Daum DevDay 13 - Ogangjang
Daum DevDay 13 - OgangjangDaum DevDay 13 - Ogangjang
Daum DevDay 13 - Ogangjang
 
Daum DevDay 13 - Mook
Daum DevDay 13 - MookDaum DevDay 13 - Mook
Daum DevDay 13 - Mook
 
Daum DevDay 13 - Moonlight
Daum DevDay 13 - MoonlightDaum DevDay 13 - Moonlight
Daum DevDay 13 - Moonlight
 
Daum DevDay 13 - In-N-Out
Daum DevDay 13 - In-N-OutDaum DevDay 13 - In-N-Out
Daum DevDay 13 - In-N-Out
 
Daum DevDay 13 - i-DF
Daum DevDay 13 - i-DFDaum DevDay 13 - i-DF
Daum DevDay 13 - i-DF
 
Daum 키노트 | Devon 2012
Daum 키노트 | Devon 2012Daum 키노트 | Devon 2012
Daum 키노트 | Devon 2012
 

Javascript everywhere - Node.js | Devon 2012

  • 1. JAVASCRIPT EVERYWHERE - NODE.JS 다음 모바일 기술1팀 임강석
  • 2. 목차 1. node.js 적용 사례 - 소개 - 왜 node.js? - DStudio, cloud9 - demo 2. node.js 알아보기 1 (살짝만) - node.js - npm 3. 실생활에 적용해 본 예제 - 애니팡가이드 - jenkins dashboard 4. node.js 알아보기 2 (좀 더) - node.js는 완전히 새로운 기술인가? - node.js 장단점 5. 결론
  • 4. about me 아주 간단하게 ~ 2003 win32 애플리케이션 MS 기술 기반 웹서버 ~ 2008 다음 카페 등 커뮤니티 개발 ~ 2012 다음 지도, 다음 TV, 다음앱 개발 리더 twitter : http://twitter.com/illb
  • 5. 왜 node.js를? * DStudio 사내 개발 클라우드 IDE JavaScript를 이용해 아이폰, 안드로이드 하이브리드앱을 만드는 것이 목표 1차적인 목표는 js를 기반으로 하는 빠른 하이브리드 앱 프로토타이핑 웹 IDE인 cloud9 기반으로 커스터마이징 cloud9이 nodejs
  • 6. cloud9 언제 어디서나 브라우저만 있으면 개발 가능 (좋아해야 할 기능인지는 각자 ^^) front-end, back-end 모두 js로 이루어져 있으며 js 개발에 최적화된 IDE (c9으로 c9을 고쳐보니 편하더라... 하지만 잘못 수정해서 서버가 안뜨면...) 무료도 있으니 써보시면 https://c9.io/ 소스는 여기 있으니 로컬에서 써보시려면 https://github.com/ajaxorg/cloud9
  • 8. JavaScript는 웹 브라우저, 모바일 앱, 데스크탑 앱, 서버 등 어디서나 쓸 수 있는 현실적으로 유일한 언어 V8의 등장과 함께 빠른 스크립트 언어로 등극 태생적 특성상 비동기가 일상인 언어 (closure/callback function를 이용한 async) 오픈 소스의 대세인 github에서 제일 인기가 많은 언어
  • 11. 사내 모바일 라이브러리 로그인 라이브러리 UI Frame 라이브러리 브라우저 라이브러리 지도 라이브러리 푸쉬 라이브러리 업로드 라이브러리 음성 검색 라이브러리 코드 라이브러리 음악 검색 라이브러리 사물 검색 라이브러리
  • 12. node.js 알아보기 1 (살짝만)
  • 13. Hello node.js 2009/02/15 Ryan Dahl node.js 프로젝트 시작 (github) 0.6 이후 어느정도 정리가 되었고 어느정도 안정화 되었음 0.x 의 홀수 버전은 개발 버전(development), 짝수 버전은 안 정화(stable) 버전 license는 MIT니 원하는대로 수정해서 사용 가능
  • 14. 간단 node.js 특징 * Evented IO * Async & NonBlock Server-Side JavaScript 내부는 저수준 Event-loop로 고속 처리 (epoll, kqueue, /dev/poll, select) 구글 크롬의 JavaScript 엔진인 V8을 이용한 빠른 JavaScript 속도 사용자가 작성한 모듈은 single thread common.js 스펙을 적용하여 표준화 HOT trend!!
  • 15. node.js Async var stats = fs.statSync(path); console.log(‘stats : ‘, stats); fs.stat(path, function(err, stats) { if (err) throw err; console.log(‘stats : ‘, stats); }); CPS (Continuation Passing Style) 리턴 대신에 콜백을 호출한다 http://en.wikipedia.org/wiki/Continuation-passing_style
  • 16. Hello npm 2009/09/29 Issac Schlueter npm package manager 시작 (github) 아주 빠르게 성장하는 module!!! https://github.com/joyent/node/wiki/modules https://npmjs.org : 15,831 packages
  • 19. 애니팡 가이드 폰의 화면을 캡쳐하여 이동 가능한 동물(?)을 알려줍니다. 원래는 애니팡 오토를 만들려 했으나... “오토 프로그램 제작·배포는 불법 맞다” http://www.thisisgame.com/board/view.php?id=1247211&category=117 예제는 예제일 뿐 오해하지 말자!
  • 20. Flow html, browser websocket aniguide (node.js) snapshot (adb)
  • 21. 어떻게 진행? 적절한 모듈 사용을 위해 github 탐방 https://github.com/joyent/node/wiki/modules 필요한 기능이 모두 있으므로 스크린 샷 한장으로 알고리즘 구현
  • 22. adb.js 안드로이드의 디버깅 모듈인 adb를 이용해 폰의 스크린 샷을 떠오자
  • 23. node-canvas HTML5 canvas API를 서버에서 구현 canvas를 잘 지원하는 브라우저에서는 client에서 그리고 canvas를 지원이 모자란 브라우저에서는 server에서 그리는 것이 가능 Author : TJ Holowaychuk 여기서는 이미지를 읽고 결과 이미지를 서버에서 만드는데 사용
  • 24. 처리 로직 1. 이미지의 동물 영역(?)을 잘라서 2. 각셀의 색의 평균값으로 블럭을 인식 3. 각 셀의 가로/세로를 모두 한번씩 움직이며 움 직인 셀 부터 시작하는 연속된 3개의 셀이 있는지 를 판단 (recursive) 4. 연속된 3개의 셀이 있으면 사람이 인식 할 수 있 도록 적당히 가이드를 그려줌
  • 25. node-canvas 필요한 이미지를 자르고 셀의 이미지 데이터를 얻어옴
  • 26. express ruby Sinatra inspired 가장 유명하며 쉬움 sinatra도 복잡해 지면 rails를 고려하듯 좀 복잡해 질 것 같으면 railway 고려하는 것도 필요 Author : TJ Holowaychuk
  • 28. ejs Jade와 함께 express의 view template engine 계속 혼자 개발할 것이라 생각되는 프로젝트는 Jade 유리 html 협업을 해야 한다면 ejs를 선택하는 것이 유리 Jade는 문법을 따로 배워야 해서 ejs 선택 Author : TJ Holowaychuk
  • 29. socket.io node.js의 킬러 모듈 WebSocket을 지원하지 않는 브라우저가 많은데 그런 브라우저의 경우 대안 기술을 사용할 수 있도록 해주는 모듈 서버, 클라이언트 모두 JavaScript Interface
  • 30. socket.io server-side 결과 이미지를 string으로 변환해 주기적으로 전송 client-side
  • 31. bootstrap, jquery UI 구성은 bootstrap (12 컬럼 그리드, 반응형 웹 지원) jquery는 javascript core script
  • 34. Jenkins Dashboard CI 툴인 jenkins의 기본 dashboard는 별 쓸모가 없음 설정이 제대로 되었는지 한눈에 확인하고 naming convention에 따라 분류를 자동으로 해주며 정적 분석 자료를 한눈에 볼 수 있으며 필요에 따라 변경해 가며 사용하고 싶음
  • 36. jenkins 아주 직관적인 설명과 제목 네트웍 처리이므로 Async
  • 37. async jenkins job들을 가져오고 job들의 정보를 얻어오고 xml parsing등을 하는 중첩의 중첩 옆을 줄이려다 밑이 늘어나는 결과를 보이기도 함 error arg가 제일 앞에 오는 nodejs 컨벤션을 잘 지켜야 함 필요할 때가 생기는데 error 처리에 신경을 잘 써야 함 결국 함수/모듈 분리를 잘 하는 것이 최선
  • 38. async
  • 39. xml2js xml을 js object 로 바꿔서 쉽게 처리
  • 40. connect-asset coffee-script, javascript, css, less 등 개발환경에서는 원본 그대로 추가를 하며 실환경에서는 합치기, 최적화 등 수행 assets/js/application.js ejs에서 사용
  • 41. 그 외 알아둘만한 모듈 node-inspector : 노드 디버깅 node-dev : 저장을 하면 바로 restart forever : 서버가 죽으면 다시 시작 n : 여러 버전 관리 underscore : 여러 유틸리티의 모음 (함수형 기능) 브라우저용(backbone의 코어)이었으나 node에도 사용 가능 jake : build script colors : 커멘드라인 출력에 색을 넣어 줄 수 있음 mocha : test framework로 TJ Holowaychuck이 만듬 browserify : node 모듈을 브라우저에서 사용할 수 있도록 만들어 줌 phantomjs : server side webview
  • 43. node.js는 완전히 새로운 기술인가? c10k problem(동시에 10000 connection 유지)을 해결하는 솔루션으로는 event 기반 솔루션은 성능이 검증된 모델 이미 python의 twisted, ruby의 Event Machine 같은 멋진 event 기반 솔루션이 존재 CPS보다 쉬운 coroutine을 사용할 수 있는 python greenlet이나 언어 레벨에서 동시성 처리에 최적화된 erlang도 있음 node.js 이전에도 server side JavaScript는 존재 (ex. ASP JScript, appjet)
  • 44. 기존 기술은 python, ruby, perl 같은 나름 유명한 서버 사이드 스크립트는 수많은 라이브러리가 존재하지만 거의 이벤트 기반이 아님 기존의 라이브러리와 이벤트 기반 라이브러리를 같이 사용하기 에 어려움 erlang 개발자를 어디에서 찾지? python의 gevent 정도가 매력적 결국 c10k 문제를 해결하려 하면 프로그래밍 관습과 기존 라이브러리가 발목을 잡는 셈
  • 45. node.js의 매력 JavaScript는 태생적으로 비동기에 최적화 되어있기 때문에 JavaScript 개발자의 문화는 비동기에 익숙하기 때문에 c10k 해결에 적절 nodejs는 새로 만들어졌기 때문에 새로운 문화를 만들기 적절하며 다른 언어에서 검증된 모듈들이 깔끔하게 정리되어 넘어옴 적절한 시기 web 2.0, 모바일 웹, HTML5 와 함께 JavaScript에 대한 관심 급 증가 적절한 조합 V8 + common.js + event driven IO + async
  • 46. node.js의 장점 자바스크립트 개발자의 수 컴파일 언어에 비해 모든 스크립트 언어가 그렇듯이 빠른 개발이 가능
  • 47. node.js의 단점 중첩 들여쓰기 빠르게 변화하기 때문에 모듈 호환성 유지가 쉽지 않음 컴파일 언어에 비해 모든 스크립트 언어가 그렇듯이 런타임 에러와 사투를 벌여야 하며 리팩토링이 어려움
  • 49. 결론 대세 github에서 가장 인기 있는 언어 JavaScript는 front-end, back-end, mobile app, shell 등 어디에서나 사용할 수 있습니다.
  • 50. 결론 다른 서버 사이드 스크립트에 익숙하지 않다면 front-end 개발자라 JavaScript에 익숙하다면 이 언어 저 언어 배우기 귀찮다면 대세 github에서 가장 인기 있는 back-end node.js에 빠져 보세요!!!