SlideShare une entreprise Scribd logo
1  sur  95
Télécharger pour lire hors ligne
one years ago…

somewhere…
My personal dev era...

PHP 개발
(in my opinion)
- Easy to learn and use

- First 5 pages for 5 hours
  (exclude design works)
My personal dev era...

Java기반 웹 개발로 전환...
My personal dev era...

I need...
여기에는 사실...
Front-end 기술들은 제외하고!
우리의 관심을 분산시키는

이런저런 기술들도 제외하고!
???         ???         ???         ???

  ???             ???           ???       ???


       그리고도 VVMM (...)
???                     ???                 ???
            ???                     ???
                        ???                 ???
 ???
We are
 here




         IT Universe
My personal dev era...

Java 기반 웹 개발
(in my opinion)

- NOT easy to learn and use
- First 5 pages for 50 hours !!
Someone says…


    No Pain,
    No Gains !
No!!! No More
 Pain!!
잠깐! 그런데,
우리가 지금
뭘 하고 싶은 거죠
?
Developing WEB
one tool dummy!
발표자소개

 채수원          SUWON, CHAE

 - NHN Open Publishing Team, nFORGE Dev.
 - node.js community octoberskyjs leader
 - blog.doortts.com
 - twitter.com/doortts
- 개발자 노트란 무엇인가?
- 개발자 노트의 아키텍처
- 왜 node.js를 선택했는가?
- 생산성과 효용은?
- 문제와 선택들!
- node.js를 이용한 웹 개발에 대한 Lessons Learned
- Tips
- Q&A
helloworld 세미나에서 다룬 내용은 조금 생략합니다.
^^;
- node.js 창발의 순간
- node.js는 무엇인가?
- node.js을 시작하게 된 계기
- node.js 기본 문법
- 외국 사례
- 성능 (Benchmarks)


등등..
왜냐하면
이것 말고도 이야기 해보고 싶은 내용이 많습니다!
 Node.js는 실질적으로 서버사이드 자바스크립트 실행환경과 라이브러리,
 이렇게 두 가지로 이루어져 있습니다.
 고성능 네트워크 라이브러리
 저수준 Event-loop를 이용한 callback을 이용해
                                        그래서, Node.js는 무엇인가?
다양한 I/O 작업을 non-blocking 방식으로 처리        http://blog.doortts.com/214
 Project N4(nFORGE 4)의 Sub Project
 wiki와 매뉴얼 작성
 open source
 Simple, Distributive & Collective merge
 node.js 로 개발
 git과 호환되는 파일시스템
https://github.com/nforge/devnote
 nFORGE 서브 프로젝트로 개발
 오픈소스로 공개




 삽질 비용을 먼저 치루고 그 결과를 공유/공개한다.
 node.js 기술 확산에 기여한다.
 우리나라에서도 웹 개발에 spring 말고 다른 걸 사용해 보자.
내부 모듈 아키텍처를 잠깐 볼게요..
v2012.4.20
                                                Template Engine    Automation Test
         App Server                                    Jade
User                                                                       Mocha
                                      Route
                     ExpressJS        module
                                                  CSS foundation
                     app.coffee                       Twitter
                                                     Bootstrap
                                                                     Browser Emulation
                                                                          Zombie.js

                                                                       Controller Test
           Wiki System                                                    Expresso


                                                                          Unit Test
                 -   Markdown         wiki.js                              Assert
        Renderer
                 -   Preview
                 -   Syntax highlighter
                 -   diff




        Storage - Git compatible
                                                                     Project Builder
                                                        Disk
                       gitfs.js                                             Jake
v2012.6.25
                                                              Template Engine             Automation Test
                       App Server                                     Jade
User                                                                                                Mocha
                                                    Route
                                   ExpressJS        module
                                                                CSS foundation
                                   app.coffee                        Twitter
                                                                    Bootstrap
                                                                                              Browser Emulation
                                                                                                   Zombie.js


                                                              Real-Time Feedback                Controller Test
             i18n
                         Wiki System                                                                Expresso
             Node-                                                   Socket.io                        (TBD)
              i18n
                                                                                                   Unit Test
                               -   Markdown         wiki.js                                          Assert
                      Renderer
                               -   Preview                          Flow control
          Mailing              -   Syntax highlighter
        nodemailer             -   diff                                 step

                                                                                         Dependency Management
                                                                        async
                                                                                         / installer
                                                                                                      NPM
 Crypto
                      Storage - Git compatible                           *Git tools
  jshashes
                                                                                             Project Builder
                                                                       Disk
                                     gitfs.js                                                         Jake
  Logger

  winston


                                                                                      *Git official command line tools
 AppServer                        Test Framework
    Express, Restify, Meteor          Mocha, Vows, Nodeunit
 Template Engine                  Browser Emulation Test
    Jade, EJS                         Zombie.js, Phantom.js + Casper.js
 CSS Foundation
    Bootstrap, ZURA Foundation
 Code Editor
    CodeMirror, Plain TextArea
 View MVC
    backbone.js, ember.js         쓰고 싶었지만 지나치게 복잡해
                                 질 우려가 있어 자제함!
 AppServer             Sugar Language            Project Builder
    Express                coffeescript               jake
 Template Engine       i18n                      Logger
    Jade                   node-i18n                  winston
 CSS Foundation        Email Sender
    Bootstrap              nodemailer
 Code Editor           Browser Emulation Test
    CodeMirror             Zombie.js
 Real-time feedback    Test Framework
    socket.io              Mocha
 가만히 놔둬도 성장한다.
 빠르게 만들 수 있다. 나머지 부분을 개발하면 되니까.




 비슷한 모듈들이 있을때는 뭐가 좋은지 판단이 어렵다.
 타인의 취향에 휘둘릴 수 있다.
 정확히 원하는 기능은 없는 경우가 종종 있다.
 라인을 잘 못 타면 오랫동안 피곤해 진다.
  -> 발전을 기대하기 보다 현재 기능이 현재 우리에게 맞는가에 집중한다.
  -> 최악을 가정
기본적으로는 아키텍처 구성도의 모듈들을
사용하셔서 개발하시면 충분합니다.




              삽질은 저희가 이미…
nodejs.org



- NHN 기술투자
- 다수 플랫폼을 지원하는 개발환경 필요
- 개발팀 멤버들이 Spring Framework을 잘 몰라서
 PHP개발자, Java 클라이언트 개발자
- 멤버 중 한 명이 node.js 커뮤니티 리더라서…
 자바스크립트! 자바스크립트! 자바스크립트!
 레퍼런스가 없어서 고생을 할 가능성이 높음
 개발하면서 스타일이 변해감. 혹은 어느쪽이 좋은지에 대한 판단이 어려움
 function export  function object  prototype으로 함수를 지정함


see codes…
expressjs.com


- 웹 앱서버가 필요함
- node.js로 웹 개발하는 사람들이 가장 대중적으로 사용
 나름 오래 되었고 2.0 이상부터는 기본적으로 웹서버가 가져야 하는 기능들이
잘 들어 있음
 문서화가 부족 (계속 발전중. 코드를 보고 이해해야 함)
 개인의 취향이 반영되어 개발되는 경향이 있음
Tj Holowaychuk이라는 종합예술가가 대부분의 코드를 개발함
자기 마음대로 모듈을 없애버리거나 사용법을 바꾸거나 함
 Windows Azure를 지원하는 MS WebMatrix의 기본 웹 앱서버로 탑재되어 있음
 하지만 현실적으로 가장 많은 사례가 있기 때문에 대안이 많지 않음
 Meteor에 기대를 해봄
  Spring Framework Creator ‘Rod Johnson’ 합류
jade-lang.com


- express와 함께 쓸 view template이 필요함
-선택지가 별로 없음. jade / ejs
 Express와 궁합이 좋음
 JSP보다는 나음
 view 코드량이 줄어듬 (약간 zen coding 느낌도)




But..


 살짝 독특한 문법을 배워야 함
 마크업 개발자와 협업에 난항이 있음
coffeescript.org


- 어차피 자바스크립트도 잘 모르니까…
- Best Practice들의 자연스러운 적용
- 간결한 코드
 작성 코드량 감소  코드 복잡도 감소  가독성 증가
 자바스크립트의 best practice들과 defects 를 배울 수 있음


한편으론…


자바스크립트도 잘 모르면서!
 디버깅
    javascript source maps이 빨리 완성되기를! ?
    but … it's a browser technique!
    http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
http://visionmedia.github.com/mocha/


- 기본 assert만으로는 부족
- async 및 callback에 대한 테스트가 필요
 다양한 Report와 스타일 지원
 … 형태, 보고서 형태, html, json 등. see page..
 … BDD, TDD,
 Coffeescript지원
 다른 라이브러리와 함께 쓸 수 있음
 should.js, expect.js, chai
 async test 지원
간단한 global leak을 잡아준다.

             for(idx in files){
               console.log(files[idx])
               …                          No고민!
             }
                                          그냥쓰면 된다!
https://github.com/mde/jake


- Build Script도 Javascript로!
- sh, make, cake, ant 등등을 대체
 Ant와 비슷
 쓸만함
 단, 자바스크립트로 작성되기때문에 깔끔함은 조금 적음.
 커피스크립트도 사용할 수 있음
 Jake를 커맨드 라인에서 쓰려면 global로 미리 인스톨 해 놓아야 함
그렇지 않으면 우회방법으로
 node node_modules/jake/bin/cli.js build
https://github.com/assaf/zombie


- controller 대신 웹 브라우저 테스트를 하기로 정함



- 일종의 웹 브라우저 에뮬레이션
 브라우저를 실제로 띄워서 테스트 하지 않아도 됨
 테스트 스크립트 작성이 간단함
 client side 자바스크립트 테스트도 가능함


But…
 기동에 조금 시간이 걸려서 테스트 타임아웃을 조금 여유있게 잡아야 함
 정교한 테스트는 작성에 시간이 많이 걸리거나 어려움
 개발자의 정신세계가 조금…
https://github.com/mashpie/i18n-node


- i18n 처리
 최초 단어 등록시 message file에 추가할 필요 없이 메시지를 바로 사용하면
파일에 알아서 저장이 됨.
 단어를 바꿔대면 기존 단어를 지워주지는 않기 때문에 언어 파일이 지저분 해 짐
 한 번 단어를 읽어 들인 상태에서 번역을 변경하면, 서버를 재시작 해야 함
step: https://github.com/creationix/step
async: https://github.com/caolan/async


- continuation style에서의 코드 가독성 증가
 step이 훨씬 깔끔하게 나오지만, 기능은 단순
 async는 세계정복을 꿈꾸는 수준으로 기능이 많음.
<= 자칫하면 이해하기 더 어렵게 변할 가능성도 있음




                                  둘 다 추천!
node.js         Java
 windows   4M    88M
 mac os    8M    144M
 linux     5M    120M
 vi
 sublime text 2




 web storm / IntelliJ
 eclipse
 Aptana
 console.log
   don’t use console.log(‘>>>’ + abc ) style
   see the cases..
 debugger
    node debug app.js
 node-inspector
    https://github.com/dannycoates/node-inspector
lessons & Learned + 고생의 결과들
getDecoratedUser('doortts', function(err, user) {
          if (err) throw err;
          console.log(user.name);
    });


var getDecoratedUser= function(username, callback){
     var err;
     if(username === undefined ) err = new Error(‘…’);
     callback(err, ’[‘ + username + ‘]’);
}
블럭킹 콜백(blocking callback)
   호출한 다음 실행 결과를 대기
 지연 콜백(deffered callback)
   호출한 다음 실행 결과는 나중에 받는다.




우리가 써야 하는건
지연 콜백!!
(혹은 async callback이라고도 불림)
diagonal sequence
   var result, isUserExist;
   getUser ('doortts', function (err, user) {
        if (err) throw err;
        isExist(user, function(err, isExist){
              isUserExist = isExist;
           }
           if (isUserExist)
              console.log(result.name + ":" + result.email);
    });
diagonal sequence
   var result, isUserExist;
   getUser ('doortts', function (err, user) {
        if (err) throw err;
        isExist(user, function(err, isExist){
              isUserExist = isExist;
           }
           if (isUserExist)
              console.log(result.name + ":" + result.email);
    });
diagonal sequence
   var result, isUserExist;
   getUser ('doortts', function (err, user) {
        if (err) throw err;
        isExist(user, function(err, isExist){
              isUserExist = isExist;
           }
           if (isUserExist)
              console.log(result.name + ":" + result.email);
    });
ECMA Script 3, 5



 (0.1 + 0.2) == 0.3
 sort…
 see the codes
 서버사이드 개발자? 프론트앤드 개발자?
 큰 고민없이 사용해도 괜찮은 성능
 다양한 모듈을 통한 손쉬운(?) 개발
 많은 개발자들이 (미친듯이) 뛰어들고 있음
 크락포드 아저씨마저..
 미래에 대한 준비
 안드로이드/아이폰의 교훈
 사실 단일 언어라고 하기엔 살짝 무리가 있지만 매우 매력적임
 웹 개발 하려면 어차피 자바스크립트 배워야 함
 극단적인 코드 재활용
 Server-side / front-end 양쪽에서 사용가능한 코드 작성가능
 생각보다는 어렵지만, 한편으로는 생각보다는 간결한 언어인 자바스크립트
 처음엔 완전 재밌음!
 하지만…
 성능이 정말 좋은가?
 Single Thread 라며?
 Multicore CPU 활용은?
 CPU 집중적인 일은 좀…
 우리나라에서는 쫌…
 socket.io 쓰려고 node.js 배워요!




                       커뮤니티에서 더 많은 이야기 나눠요~ ^^;
                       facebook.com/octoberskyjs
Thread Pool
 concepts
 modules
  core module, file modules
 npm



 ECMA 3, ECMA 5
 예) JSON.parse(text [, reviver])


 Profiling, ArrayBuffer


                                   참고
                                   이쁜 자식 매 하나 더 준다는 심정으로 쓰는 node.js 이야기
                                   http://blog.doortts.com/262
 node.js mailling list
 Scoop-it - http://www.scoop.it/t/nodejs-code
 facebook.com/octoberskyj, nodejskr.org
 Mozilla Developer Network – Javascript
  https://developer.mozilla.org/en-US/docs/JavaScript


 자바스크립트 코딩 기법과 핵심 패턴
 자바스크립트 핵심 가이드
 타입체크도 안되고 뒷 감당 안됩니다!
 가독성도 여차하면 무너지는데 테스트 없으면 힘들때 많습니다.
 사실 있어도 힘듭니다.



 웹 개발이 스프링은 아니잖아요!




열심히 할게요!
반대로 모르면 피곤한..
 한번만 로드된다.
 따라서 재기동을 해야 모듈이 새로 반영된다.
 캐시를 지우면 되지만 개발때 이외에는 사용금지



 event-loop clock time으로 한 타임 뒤로 작업을 미룬다.
 heavy한 일을 처리할 때 전체 작업이 멈추는 일이 없게 하려면 꼭 써야함
 setTimeout( callback, 0 )보다 효율이 좋음!
var name = o && o.getName();
var name = otherName || "default";




switch(a) {
    case 1: // fallthrough
    case 2:
      eatit();
      break;
    default:
      donothing();
}
for (var i = 0; i < a.length; i++) {
    ...
}
console.log(i);



- 만약 debugger 명령어로 debug가 잘 안될때는 --debug-brk 옵션을 사용한다.



- 메모리 Leak의 위험이 크다. 이벤트 등록/해제를 잘 해주어야 한다.
if (typeof module !== 'undefined' && module.exports) {
    module.exports = _;
}




var exports = module.exports = Emailer




- 크롬은 favicon을 찾기위해 따로 request를 보낸다.
-local variable, cached
- module.exports === exports
- Core modules
- File modules
 .js, .json, .node




- async를 쓸거면 node.js를 왜쓰니? 라고 말 할 수도 있지만,
생각보다 많은 경우 sync 메소드가 유리할때가 있다.
특히 timming 문제의 경우.
- getter/setter
 see codes


- Object.preventExtentions(object)
- Object.seal(object): configurable bits off
- Object.freeze(object): writeable bits off, 결과적으로 immutable을 만들수 있다.
node -e 'console.log(require("fs").watch+"")'




var getUser = function( name, callback) {
    …
    callback(err, data );
}


                            이 외 더 많은 내용은 시간관계상… 이라는 말로
                            얼버무릴 예정입…
                            helloworld 블로그, 책 등을 통해 더 이야기 드릴게요
광고 – 발표자가 되어주세요!

 nodejs korea conference
 11월 20일 (화)
 node committer 및 core contributor 참석 예정
 facebook.com/octoberskyjs 에서 소식을 귀 기울여 주세요! ^,^)/
[C5]deview 2012 nodejs

Contenu connexe

Tendances

Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장Woo Yeong Choi
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Paprikhan
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래JeongHun Byeon
 
Python server-101
Python server-101Python server-101
Python server-101Huey Park
 
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...Dennis Kim
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나JeongHun Byeon
 
실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기Haze Lee
 
Node.js
Node.jsNode.js
Node.jsymtech
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angularredribbon1307
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
 
공성대전 C# 사용기
공성대전 C# 사용기공성대전 C# 사용기
공성대전 C# 사용기Myoung-gyu Gang
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 

Tendances (20)

Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래
 
Python server-101
Python server-101Python server-101
Python server-101
 
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의 가능...
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기
 
Node.js
Node.jsNode.js
Node.js
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
공성대전 C# 사용기
공성대전 C# 사용기공성대전 C# 사용기
공성대전 C# 사용기
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 

En vedette

Becoming Node.js ninja on Cloud Foundry
Becoming Node.js ninja on Cloud FoundryBecoming Node.js ninja on Cloud Foundry
Becoming Node.js ninja on Cloud FoundryRaja Rao DV
 
Testing nodejs apps
Testing nodejs appsTesting nodejs apps
Testing nodejs appsfelipefsilva
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS偉格 高
 
Asynchronous Module Definition (AMD)
Asynchronous Module Definition (AMD)Asynchronous Module Definition (AMD)
Asynchronous Module Definition (AMD)xMartin12
 
HTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityHTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityPeter Lubbers
 
System webpack-jspm
System webpack-jspmSystem webpack-jspm
System webpack-jspmJesse Warden
 
Ionic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksIonic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksJuarez Filho
 
Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011rogerbodamer
 
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6Dmitry Soshnikov
 
Compose Async with RxJS
Compose Async with RxJSCompose Async with RxJS
Compose Async with RxJSKyung Yeol Kim
 
The Art of AngularJS - DeRailed 2014
The Art of AngularJS - DeRailed 2014The Art of AngularJS - DeRailed 2014
The Art of AngularJS - DeRailed 2014Matt Raible
 
AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)Nitya Narasimhan
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - PolymerJae Sung Park
 
React in Native Apps - Meetup React - 20150409
React in Native Apps - Meetup React - 20150409React in Native Apps - Meetup React - 20150409
React in Native Apps - Meetup React - 20150409Minko3D
 
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)USABLE 윤
 
React JS and why it's awesome
React JS and why it's awesomeReact JS and why it's awesome
React JS and why it's awesomeAndrew Hull
 

En vedette (20)

Becoming Node.js ninja on Cloud Foundry
Becoming Node.js ninja on Cloud FoundryBecoming Node.js ninja on Cloud Foundry
Becoming Node.js ninja on Cloud Foundry
 
Testing nodejs apps
Testing nodejs appsTesting nodejs apps
Testing nodejs apps
 
RESTful API Design, Second Edition
RESTful API Design, Second EditionRESTful API Design, Second Edition
RESTful API Design, Second Edition
 
The SPDY Protocol
The SPDY ProtocolThe SPDY Protocol
The SPDY Protocol
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS
 
Asynchronous Module Definition (AMD)
Asynchronous Module Definition (AMD)Asynchronous Module Definition (AMD)
Asynchronous Module Definition (AMD)
 
HTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityHTML5 Real-Time and Connectivity
HTML5 Real-Time and Connectivity
 
System webpack-jspm
System webpack-jspmSystem webpack-jspm
System webpack-jspm
 
Ionic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksIonic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocks
 
Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011
 
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
 
Compose Async with RxJS
Compose Async with RxJSCompose Async with RxJS
Compose Async with RxJS
 
The Art of AngularJS - DeRailed 2014
The Art of AngularJS - DeRailed 2014The Art of AngularJS - DeRailed 2014
The Art of AngularJS - DeRailed 2014
 
Angular2 ecosystem
Angular2 ecosystemAngular2 ecosystem
Angular2 ecosystem
 
AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
 
React in Native Apps - Meetup React - 20150409
React in Native Apps - Meetup React - 20150409React in Native Apps - Meetup React - 20150409
React in Native Apps - Meetup React - 20150409
 
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
서비스디자인, 서비스산업을 다시 디자인하다 (2016.4. PPT)
 
React JS and why it's awesome
React JS and why it's awesomeReact JS and why it's awesome
React JS and why it's awesome
 
Grid FS
Grid FSGrid FS
Grid FS
 

Similaire à [C5]deview 2012 nodejs

웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트Rhio Kim
 
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
웹표준 프레임워크   메타웍스3의 적용 사례와 생산성웹표준 프레임워크   메타웍스3의 적용 사례와 생산성
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성영재 김
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER Engineering
 
[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
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!SangHoon Han
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기Jae Sung Park
 
스마트 모바일 앱 개발 방법론(2)
스마트 모바일 앱 개발 방법론(2)스마트 모바일 앱 개발 방법론(2)
스마트 모바일 앱 개발 방법론(2)mosaicnet
 
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)mosaicnet
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
요즘 웹 배포
요즘 웹 배포요즘 웹 배포
요즘 웹 배포명호 박
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page ApplicationSangmin Yoon
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview민태 김
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?VMware Tanzu Korea
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsKyunghun Jeon
 
실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기IMQA
 

Similaire à [C5]deview 2012 nodejs (20)

웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
 
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
웹표준 프레임워크   메타웍스3의 적용 사례와 생산성웹표준 프레임워크   메타웍스3의 적용 사례와 생산성
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
[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...
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기
 
스마트 모바일 앱 개발 방법론(2)
스마트 모바일 앱 개발 방법론(2)스마트 모바일 앱 개발 방법론(2)
스마트 모바일 앱 개발 방법론(2)
 
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
구글 앱 엔진을 이용한 소셜네트워크게임(SNG) 개발(2)
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
2015 oce specification
2015 oce specification2015 oce specification
2015 oce specification
 
요즘 웹 배포
요즘 웹 배포요즘 웹 배포
요즘 웹 배포
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
 
N02 gae v1.1_20110220
N02 gae v1.1_20110220N02 gae v1.1_20110220
N02 gae v1.1_20110220
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build tools
 
실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기
 

Plus de NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

Plus de NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

[C5]deview 2012 nodejs

  • 1.
  • 3. My personal dev era... PHP 개발 (in my opinion) - Easy to learn and use - First 5 pages for 5 hours (exclude design works)
  • 4. My personal dev era... Java기반 웹 개발로 전환...
  • 5. My personal dev era... I need...
  • 9. ??? ??? ??? ??? ??? ??? ??? ??? 그리고도 VVMM (...) ??? ??? ??? ??? ??? ??? ??? ???
  • 10. We are here IT Universe
  • 11. My personal dev era... Java 기반 웹 개발 (in my opinion) - NOT easy to learn and use - First 5 pages for 50 hours !!
  • 12. Someone says… No Pain, No Gains !
  • 13. No!!! No More Pain!!
  • 14. 잠깐! 그런데, 우리가 지금 뭘 하고 싶은 거죠 ?
  • 16.
  • 18. 발표자소개 채수원 SUWON, CHAE - NHN Open Publishing Team, nFORGE Dev. - node.js community octoberskyjs leader - blog.doortts.com - twitter.com/doortts
  • 19. - 개발자 노트란 무엇인가? - 개발자 노트의 아키텍처 - 왜 node.js를 선택했는가? - 생산성과 효용은? - 문제와 선택들! - node.js를 이용한 웹 개발에 대한 Lessons Learned - Tips - Q&A
  • 20. helloworld 세미나에서 다룬 내용은 조금 생략합니다. ^^; - node.js 창발의 순간 - node.js는 무엇인가? - node.js을 시작하게 된 계기 - node.js 기본 문법 - 외국 사례 - 성능 (Benchmarks) 등등..
  • 21. 왜냐하면 이것 말고도 이야기 해보고 싶은 내용이 많습니다!
  • 22.  Node.js는 실질적으로 서버사이드 자바스크립트 실행환경과 라이브러리, 이렇게 두 가지로 이루어져 있습니다.  고성능 네트워크 라이브러리  저수준 Event-loop를 이용한 callback을 이용해 그래서, Node.js는 무엇인가? 다양한 I/O 작업을 non-blocking 방식으로 처리 http://blog.doortts.com/214
  • 23.
  • 24.  Project N4(nFORGE 4)의 Sub Project  wiki와 매뉴얼 작성  open source  Simple, Distributive & Collective merge  node.js 로 개발  git과 호환되는 파일시스템
  • 26.  nFORGE 서브 프로젝트로 개발  오픈소스로 공개  삽질 비용을 먼저 치루고 그 결과를 공유/공개한다.  node.js 기술 확산에 기여한다.  우리나라에서도 웹 개발에 spring 말고 다른 걸 사용해 보자.
  • 27. 내부 모듈 아키텍처를 잠깐 볼게요..
  • 28. v2012.4.20 Template Engine Automation Test App Server Jade User Mocha Route ExpressJS module CSS foundation app.coffee Twitter Bootstrap Browser Emulation Zombie.js Controller Test Wiki System Expresso Unit Test - Markdown wiki.js Assert Renderer - Preview - Syntax highlighter - diff Storage - Git compatible Project Builder Disk gitfs.js Jake
  • 29. v2012.6.25 Template Engine Automation Test App Server Jade User Mocha Route ExpressJS module CSS foundation app.coffee Twitter Bootstrap Browser Emulation Zombie.js Real-Time Feedback Controller Test i18n Wiki System Expresso Node- Socket.io (TBD) i18n Unit Test - Markdown wiki.js Assert Renderer - Preview Flow control Mailing - Syntax highlighter nodemailer - diff step Dependency Management async / installer NPM Crypto Storage - Git compatible *Git tools jshashes Project Builder Disk gitfs.js Jake Logger winston *Git official command line tools
  • 30.  AppServer  Test Framework Express, Restify, Meteor Mocha, Vows, Nodeunit  Template Engine  Browser Emulation Test Jade, EJS Zombie.js, Phantom.js + Casper.js  CSS Foundation Bootstrap, ZURA Foundation  Code Editor CodeMirror, Plain TextArea  View MVC backbone.js, ember.js  쓰고 싶었지만 지나치게 복잡해 질 우려가 있어 자제함!
  • 31.  AppServer  Sugar Language  Project Builder Express coffeescript jake  Template Engine  i18n  Logger Jade node-i18n winston  CSS Foundation  Email Sender Bootstrap nodemailer  Code Editor  Browser Emulation Test CodeMirror Zombie.js  Real-time feedback  Test Framework socket.io Mocha
  • 32.  가만히 놔둬도 성장한다.  빠르게 만들 수 있다. 나머지 부분을 개발하면 되니까.  비슷한 모듈들이 있을때는 뭐가 좋은지 판단이 어렵다.  타인의 취향에 휘둘릴 수 있다.  정확히 원하는 기능은 없는 경우가 종종 있다.  라인을 잘 못 타면 오랫동안 피곤해 진다. -> 발전을 기대하기 보다 현재 기능이 현재 우리에게 맞는가에 집중한다. -> 최악을 가정
  • 33.
  • 34. 기본적으로는 아키텍처 구성도의 모듈들을 사용하셔서 개발하시면 충분합니다. 삽질은 저희가 이미…
  • 35. nodejs.org - NHN 기술투자 - 다수 플랫폼을 지원하는 개발환경 필요 - 개발팀 멤버들이 Spring Framework을 잘 몰라서 PHP개발자, Java 클라이언트 개발자 - 멤버 중 한 명이 node.js 커뮤니티 리더라서…
  • 36.
  • 37.  자바스크립트! 자바스크립트! 자바스크립트!  레퍼런스가 없어서 고생을 할 가능성이 높음  개발하면서 스타일이 변해감. 혹은 어느쪽이 좋은지에 대한 판단이 어려움 function export  function object  prototype으로 함수를 지정함 see codes…
  • 38. expressjs.com - 웹 앱서버가 필요함 - node.js로 웹 개발하는 사람들이 가장 대중적으로 사용
  • 39.
  • 40.  나름 오래 되었고 2.0 이상부터는 기본적으로 웹서버가 가져야 하는 기능들이 잘 들어 있음  문서화가 부족 (계속 발전중. 코드를 보고 이해해야 함)  개인의 취향이 반영되어 개발되는 경향이 있음 Tj Holowaychuk이라는 종합예술가가 대부분의 코드를 개발함 자기 마음대로 모듈을 없애버리거나 사용법을 바꾸거나 함  Windows Azure를 지원하는 MS WebMatrix의 기본 웹 앱서버로 탑재되어 있음  하지만 현실적으로 가장 많은 사례가 있기 때문에 대안이 많지 않음  Meteor에 기대를 해봄  Spring Framework Creator ‘Rod Johnson’ 합류
  • 41. jade-lang.com - express와 함께 쓸 view template이 필요함 -선택지가 별로 없음. jade / ejs
  • 42.
  • 43.  Express와 궁합이 좋음  JSP보다는 나음  view 코드량이 줄어듬 (약간 zen coding 느낌도) But..  살짝 독특한 문법을 배워야 함  마크업 개발자와 협업에 난항이 있음
  • 44. coffeescript.org - 어차피 자바스크립트도 잘 모르니까… - Best Practice들의 자연스러운 적용 - 간결한 코드
  • 45.
  • 46.  작성 코드량 감소  코드 복잡도 감소  가독성 증가  자바스크립트의 best practice들과 defects 를 배울 수 있음 한편으론… 자바스크립트도 잘 모르면서!  디버깅  javascript source maps이 빨리 완성되기를! ?  but … it's a browser technique!  http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
  • 47. http://visionmedia.github.com/mocha/ - 기본 assert만으로는 부족 - async 및 callback에 대한 테스트가 필요
  • 48.
  • 49.  다양한 Report와 스타일 지원 … 형태, 보고서 형태, html, json 등. see page.. … BDD, TDD,  Coffeescript지원  다른 라이브러리와 함께 쓸 수 있음 should.js, expect.js, chai  async test 지원 간단한 global leak을 잡아준다. for(idx in files){ console.log(files[idx]) … No고민! } 그냥쓰면 된다!
  • 50. https://github.com/mde/jake - Build Script도 Javascript로! - sh, make, cake, ant 등등을 대체
  • 51.
  • 52.  Ant와 비슷  쓸만함  단, 자바스크립트로 작성되기때문에 깔끔함은 조금 적음.  커피스크립트도 사용할 수 있음  Jake를 커맨드 라인에서 쓰려면 global로 미리 인스톨 해 놓아야 함 그렇지 않으면 우회방법으로 node node_modules/jake/bin/cli.js build
  • 53. https://github.com/assaf/zombie - controller 대신 웹 브라우저 테스트를 하기로 정함 - 일종의 웹 브라우저 에뮬레이션
  • 54.
  • 55.  브라우저를 실제로 띄워서 테스트 하지 않아도 됨  테스트 스크립트 작성이 간단함  client side 자바스크립트 테스트도 가능함 But…  기동에 조금 시간이 걸려서 테스트 타임아웃을 조금 여유있게 잡아야 함  정교한 테스트는 작성에 시간이 많이 걸리거나 어려움  개발자의 정신세계가 조금…
  • 57.
  • 58.  최초 단어 등록시 message file에 추가할 필요 없이 메시지를 바로 사용하면 파일에 알아서 저장이 됨.  단어를 바꿔대면 기존 단어를 지워주지는 않기 때문에 언어 파일이 지저분 해 짐  한 번 단어를 읽어 들인 상태에서 번역을 변경하면, 서버를 재시작 해야 함
  • 59. step: https://github.com/creationix/step async: https://github.com/caolan/async - continuation style에서의 코드 가독성 증가
  • 60.
  • 61.
  • 62.  step이 훨씬 깔끔하게 나오지만, 기능은 단순  async는 세계정복을 꿈꾸는 수준으로 기능이 많음. <= 자칫하면 이해하기 더 어렵게 변할 가능성도 있음 둘 다 추천!
  • 63.
  • 64. node.js Java windows 4M 88M mac os 8M 144M linux 5M 120M
  • 65.  vi  sublime text 2  web storm / IntelliJ  eclipse  Aptana
  • 66.  console.log don’t use console.log(‘>>>’ + abc ) style see the cases..  debugger node debug app.js  node-inspector https://github.com/dannycoates/node-inspector
  • 67. lessons & Learned + 고생의 결과들
  • 68. getDecoratedUser('doortts', function(err, user) { if (err) throw err; console.log(user.name); }); var getDecoratedUser= function(username, callback){ var err; if(username === undefined ) err = new Error(‘…’); callback(err, ’[‘ + username + ‘]’); }
  • 69. 블럭킹 콜백(blocking callback) 호출한 다음 실행 결과를 대기 지연 콜백(deffered callback) 호출한 다음 실행 결과는 나중에 받는다. 우리가 써야 하는건 지연 콜백!! (혹은 async callback이라고도 불림)
  • 70. diagonal sequence var result, isUserExist; getUser ('doortts', function (err, user) { if (err) throw err; isExist(user, function(err, isExist){ isUserExist = isExist; } if (isUserExist) console.log(result.name + ":" + result.email); });
  • 71. diagonal sequence var result, isUserExist; getUser ('doortts', function (err, user) { if (err) throw err; isExist(user, function(err, isExist){ isUserExist = isExist; } if (isUserExist) console.log(result.name + ":" + result.email); });
  • 72. diagonal sequence var result, isUserExist; getUser ('doortts', function (err, user) { if (err) throw err; isExist(user, function(err, isExist){ isUserExist = isExist; } if (isUserExist) console.log(result.name + ":" + result.email); });
  • 73. ECMA Script 3, 5  (0.1 + 0.2) == 0.3  sort… see the codes
  • 74.  서버사이드 개발자? 프론트앤드 개발자?
  • 75.  큰 고민없이 사용해도 괜찮은 성능  다양한 모듈을 통한 손쉬운(?) 개발  많은 개발자들이 (미친듯이) 뛰어들고 있음 크락포드 아저씨마저..  미래에 대한 준비 안드로이드/아이폰의 교훈
  • 76.  사실 단일 언어라고 하기엔 살짝 무리가 있지만 매우 매력적임  웹 개발 하려면 어차피 자바스크립트 배워야 함  극단적인 코드 재활용 Server-side / front-end 양쪽에서 사용가능한 코드 작성가능  생각보다는 어렵지만, 한편으로는 생각보다는 간결한 언어인 자바스크립트
  • 77.  처음엔 완전 재밌음!  하지만…
  • 78.  성능이 정말 좋은가?  Single Thread 라며?  Multicore CPU 활용은? CPU 집중적인 일은 좀…  우리나라에서는 쫌…  socket.io 쓰려고 node.js 배워요! 커뮤니티에서 더 많은 이야기 나눠요~ ^^; facebook.com/octoberskyjs
  • 80.  concepts  modules core module, file modules  npm  ECMA 3, ECMA 5 예) JSON.parse(text [, reviver])  Profiling, ArrayBuffer 참고 이쁜 자식 매 하나 더 준다는 심정으로 쓰는 node.js 이야기 http://blog.doortts.com/262
  • 81.  node.js mailling list  Scoop-it - http://www.scoop.it/t/nodejs-code  facebook.com/octoberskyj, nodejskr.org  Mozilla Developer Network – Javascript https://developer.mozilla.org/en-US/docs/JavaScript  자바스크립트 코딩 기법과 핵심 패턴  자바스크립트 핵심 가이드
  • 82.
  • 83.  타입체크도 안되고 뒷 감당 안됩니다!  가독성도 여차하면 무너지는데 테스트 없으면 힘들때 많습니다.  사실 있어도 힘듭니다.  웹 개발이 스프링은 아니잖아요! 열심히 할게요!
  • 85.  한번만 로드된다.  따라서 재기동을 해야 모듈이 새로 반영된다.  캐시를 지우면 되지만 개발때 이외에는 사용금지  event-loop clock time으로 한 타임 뒤로 작업을 미룬다.  heavy한 일을 처리할 때 전체 작업이 멈추는 일이 없게 하려면 꼭 써야함  setTimeout( callback, 0 )보다 효율이 좋음!
  • 86. var name = o && o.getName(); var name = otherName || "default"; switch(a) { case 1: // fallthrough case 2: eatit(); break; default: donothing(); }
  • 87. for (var i = 0; i < a.length; i++) { ... } console.log(i); - 만약 debugger 명령어로 debug가 잘 안될때는 --debug-brk 옵션을 사용한다. - 메모리 Leak의 위험이 크다. 이벤트 등록/해제를 잘 해주어야 한다.
  • 88. if (typeof module !== 'undefined' && module.exports) { module.exports = _; } var exports = module.exports = Emailer - 크롬은 favicon을 찾기위해 따로 request를 보낸다.
  • 89. -local variable, cached - module.exports === exports - Core modules - File modules .js, .json, .node - async를 쓸거면 node.js를 왜쓰니? 라고 말 할 수도 있지만, 생각보다 많은 경우 sync 메소드가 유리할때가 있다. 특히 timming 문제의 경우.
  • 90.
  • 91. - getter/setter see codes - Object.preventExtentions(object) - Object.seal(object): configurable bits off - Object.freeze(object): writeable bits off, 결과적으로 immutable을 만들수 있다.
  • 92. node -e 'console.log(require("fs").watch+"")' var getUser = function( name, callback) { … callback(err, data ); } 이 외 더 많은 내용은 시간관계상… 이라는 말로 얼버무릴 예정입… helloworld 블로그, 책 등을 통해 더 이야기 드릴게요
  • 93.
  • 94. 광고 – 발표자가 되어주세요! nodejs korea conference 11월 20일 (화) node committer 및 core contributor 참석 예정 facebook.com/octoberskyjs 에서 소식을 귀 기울여 주세요! ^,^)/