39
Winter Workshop 2014 2014. 02. 15 25기 박철우

Node.js Jaram Winter Workshop 2014

Embed Size (px)

DESCRIPTION

Jaram Winter Workshop 2014 Node.js 세미나 자료

Citation preview

Page 1: Node.js Jaram Winter Workshop 2014

Winter����������� ������������������  Workshop����������� ������������������  2014����������� ������������������  2014.����������� ������������������  02.����������� ������������������  15����������� ������������������  25기����������� ������������������  박철우

Page 2: Node.js Jaram Winter Workshop 2014

V8����������� ������������������  JavaScript����������� ������������������  Engine

Page 3: Node.js Jaram Winter Workshop 2014

Ryan����������� ������������������  Dahl

Page 4: Node.js Jaram Winter Workshop 2014

컨셉

Ryan����������� ������������������  Dahl

Page 5: Node.js Jaram Winter Workshop 2014

–Ryan Dahl

‘I/O needs to be done differently.’

Page 6: Node.js Jaram Winter Workshop 2014

result����������� ������������������  =����������� ������������������  query(‘select����������� ������������������  *����������� ������������������  from����������� ������������������  T’);����������� ������������������  

//����������� ������������������  use����������� ������������������  result

일반적으로����������� ������������������  사용되는����������� ������������������  쿼리

Page 7: Node.js Jaram Winter Workshop 2014

result����������� ������������������  =����������� ������������������  query(‘select����������� ������������������  *����������� ������������������  from����������� ������������������  T’);����������� ������������������  

//����������� ������������������  use����������� ������������������  result

소프트웨어는����������� ������������������  ?

일반적으로����������� ������������������  사용되는����������� ������������������  쿼리

Page 8: Node.js Jaram Winter Workshop 2014

result����������� ������������������  =����������� ������������������  query(‘select����������� ������������������  *����������� ������������������  from����������� ������������������  T’);����������� ������������������  

//����������� ������������������  use����������� ������������������  result

소프트웨어는����������� ������������������  ?

일반적으로����������� ������������������  사용되는����������� ������������������  쿼리

Page 9: Node.js Jaram Winter Workshop 2014

result����������� ������������������  =����������� ������������������  query(‘select����������� ������������������  *����������� ������������������  from����������� ������������������  T’);����������� ������������������  

//����������� ������������������  use����������� ������������������  result

BLOCK����������� ������������������  !

일반적으로����������� ������������������  사용되는����������� ������������������  쿼리

Page 10: Node.js Jaram Winter Workshop 2014

해결은…⋯

나?����������� ������������������  쓰레드!

Page 11: Node.js Jaram Winter Workshop 2014

멀티����������� ������������������  쓰레드의����������� ������������������  사용

Page 12: Node.js Jaram Winter Workshop 2014

멀티����������� ������������������  쓰레드의����������� ������������������  사용����������� ������������������  =����������� ������������������  다수의����������� ������������������  실행����������� ������������������  스택����������� ������������������  &����������� ������������������  컨텍스트����������� ������������������  스위칭

Page 13: Node.js Jaram Winter Workshop 2014

멀티����������� ������������������  쓰레드의����������� ������������������  사용����������� ������������������  =����������� ������������������  여러개의����������� ������������������  실행����������� ������������������  스택����������� ������������������  &����������� ������������������  컨텍스트����������� ������������������  스위칭����������� ������������������  

����������� ������������������  =����������� ������������������  비용����������� ������������������  UP

Page 14: Node.js Jaram Winter Workshop 2014
Page 15: Node.js Jaram Winter Workshop 2014
Page 16: Node.js Jaram Winter Workshop 2014

result����������� ������������������  =����������� ������������������  query(‘select����������� ������������������  *����������� ������������������  from����������� ������������������  T’);����������� ������������������  

//����������� ������������������  use����������� ������������������  result

일반적으로����������� ������������������  사용되는����������� ������������������  쿼리

Page 17: Node.js Jaram Winter Workshop 2014

!

!

query(‘select����������� ������������������  *����������� ������������������  from����������� ������������������  T’,����������� ������������������  function����������� ������������������  (result)����������� ������������������  {����������� ������������������  

//����������� ������������������  use����������� ������������������  result����������� ������������������  

});����������� ������������������  

콜백����������� ������������������  함수를����������� ������������������  사용한����������� ������������������  코드

Page 18: Node.js Jaram Winter Workshop 2014

!

!

query(‘select����������� ������������������  *����������� ������������������  from����������� ������������������  T’,����������� ������������������  function����������� ������������������  (result)����������� ������������������  {����������� ������������������  

//����������� ������������������  use����������� ������������������  result����������� ������������������  

});����������� ������������������  

콜백함수

콜백����������� ������������������  함수를����������� ������������������  사용한����������� ������������������  코드

Page 19: Node.js Jaram Winter Workshop 2014

커피를����������� ������������������  기다리듯…⋯

콜백함수

Page 20: Node.js Jaram Winter Workshop 2014

puts(“이름을����������� ������������������  입력하세요:����������� ������������������  ”);����������� ������������������  

var����������� ������������������  name����������� ������������������  =����������� ������������������  gets();����������� ������������������  

puts(“이름:����������� ������������������  ”����������� ������������������  +����������� ������������������  name);����������� ������������������  

…⋯

Page 21: Node.js Jaram Winter Workshop 2014

puts(“이름을����������� ������������������  입력하세요:����������� ������������������  ”);����������� ������������������  

gets(function����������� ������������������  (name)����������� ������������������  {����������� ������������������  

puts(“이름:����������� ������������������  ”����������� ������������������  +����������� ������������������  name);����������� ������������������  

});����������� ������������������  

…⋯����������� ������������������  

Page 22: Node.js Jaram Winter Workshop 2014

puts(“이름을����������� ������������������  입력하세요:����������� ������������������  ”);����������� ������������������  

gets(function����������� ������������������  (name)����������� ������������������  {����������� ������������������  

puts(“이름:����������� ������������������  ”����������� ������������������  +����������� ������������������  name);����������� ������������������  

});����������� ������������������  

…⋯����������� ������������������  

Non-Blocking

����������� ������������������  I/O

Page 23: Node.js Jaram Winter Workshop 2014

puts(“이름을����������� ������������������  입력하세요:����������� ������������������  ”);����������� ������������������  

gets(function����������� ������������������  (name)����������� ������������������  {����������� ������������������  

puts(“이름:����������� ������������������  ”����������� ������������������  +����������� ������������������  name);����������� ������������������  

});����������� ������������������  

…⋯����������� ������������������  

Non-Blocking

����������� ������������������  I/O

Event����������� ������������������  Loop

Page 24: Node.js Jaram Winter Workshop 2014

그래서?

Page 25: Node.js Jaram Winter Workshop 2014

그래서?대규모����������� ������������������  네트워크����������� ������������������  프로그램을����������� ������������������  개발하기����������� ������������������  적합!

Page 26: Node.js Jaram Winter Workshop 2014

그����������� ������������������  외에도

•자바스크립트����������� ������������������  

•점점����������� ������������������  빨라지는����������� ������������������  V8����������� ������������������  자바스크립트����������� ������������������  엔진����������� ������������������  

• C++을����������� ������������������  사용하여����������� ������������������  확장

Page 27: Node.js Jaram Winter Workshop 2014

이건����������� ������������������  좀…⋯

•자바스크립트����������� ������������������  <����������� ������������������  C,����������� ������������������  C++����������� ������������������  

•버전이����������� ������������������  1.0도����������� ������������������  안돼요…⋯

Page 28: Node.js Jaram Winter Workshop 2014

Node.js����������� ������������������  시작하기

Page 29: Node.js Jaram Winter Workshop 2014

설치

Page 30: Node.js Jaram Winter Workshop 2014

Windows����������� ������������������  /����������� ������������������  OS����������� ������������������  X는����������� ������������������  Installer로����������� ������������������  간단히!

Page 31: Node.js Jaram Winter Workshop 2014

Ubuntu(Linux)는

압축����������� ������������������  해제����������� ������������������  후����������� ������������������  ����������� ������������������  !$����������� ������������������  sudo����������� ������������������  apt-get����������� ������������������  install����������� ������������������  build-essential����������� ������������������  libssl-dev����������� ������������������  !$./configure����������� ������������������  !$make����������� ������������������  $sudo����������� ������������������  make����������� ������������������  install����������� ������������������  

Page 32: Node.js Jaram Winter Workshop 2014

REPL(Read����������� ������������������  Eval����������� ������������������  Print����������� ������������������  Loop)각����������� ������������������  프롬프트에서����������� ������������������  node����������� ������������������  입력����������� ������������������  

(Windows����������� ������������������  :����������� ������������������  cmd,����������� ������������������  Linux����������� ������������������  /����������� ������������������  OS����������� ������������������  X����������� ������������������  :����������� ������������������  터미널)����������� ������������������  

Page 33: Node.js Jaram Winter Workshop 2014

>����������� ������������������  console.log(‘Hello����������� ������������������  World!’)

Page 34: Node.js Jaram Winter Workshop 2014

이번엔����������� ������������������  파일로

Page 35: Node.js Jaram Winter Workshop 2014

$����������� ������������������  node����������� ������������������  hello.js

Page 36: Node.js Jaram Winter Workshop 2014

이제����������� ������������������  웹서버를

Page 37: Node.js Jaram Winter Workshop 2014

//����������� ������������������  http����������� ������������������  모듈을����������� ������������������  추출����������� ������������������  

var����������� ������������������  http����������� ������������������  =����������� ������������������  require('http');����������� ������������������  

//����������� ������������������  웹����������� ������������������  서버����������� ������������������  생성����������� ������������������  및����������� ������������������  실행����������� ������������������  

http.createServer(function����������� ������������������  (req,����������� ������������������  res)����������� ������������������  {����������� ������������������  

����������� ������������������  ����������� ������������������  res.writeHead(200,����������� ������������������  {����������� ������������������  'Content-Type':����������� ������������������  'text/html'����������� ������������������  });����������� ������������������  

����������� ������������������  ����������� ������������������  res.end('<h1>Winter����������� ������������������  Workshop����������� ������������������  2014����������� ������������������  !</h1>');����������� ������������������  

}).listen(3000,����������� ������������������  function()����������� ������������������  {����������� ������������������  

����������� ������������������  ����������� ������������������  console.log('Server����������� ������������������  running����������� ������������������  at����������� ������������������  http://localhost:3000/');����������� ������������������  

});

Page 38: Node.js Jaram Winter Workshop 2014

Q����������� ������������������  &����������� ������������������  A

Page 39: Node.js Jaram Winter Workshop 2014

http://www.nodebeginner.org/index-kr.html