Your SlideShare is downloading. ×
0
たのしいnode.jsイベントドリブンの世界
ある日のkanpou_さん
12/04の私• いいネタがない – クラウドとはなんだったのか – 「伽藍とバザール」「UNIXという考え方」 – 投資のやりかた         ・・・ピンとこない• じゃあネタを借りよう! ⇒ node.js        node.js...
おもいっきり技術志向です。残念ながら楽しげなスライドになりませんでした。
node.jsとは?• サーバーサイドJavaScript環境  – Ruby, Python, perl   ⇔   (node.js & JavaScript)• 特長  – 単一プロセス、単一スレッド  – イベントドリブン・非同期I/O...
何がうれしいのか• みんな大好きJavaScript  – Google Chrome V8 JavaScript Engine     • C言語より高速なJavaScriptによるバイナリ操作が話題 « A-       Listers h...
Echo Servervar net = require(‘net’);var srv = net.createServer(function (sock) {  sock.on(‘data’, function (buf, err) {   ...
イベントドリブンとは • 並列プログラミングモデル   – 内部状態の通知によってプログラムが動く   – 同時に動いているプログラムは1つ 手続き型・同期I/O                     イベントドリブ ン・非同期I/O    ...
非同期I/Ovar fs = require(‘fs’);//’/to/a’, ‘/to/b’は同時に読み込まれる//タイマー等他イベントは読み込みが完了してなくても処理されるfs.readFile(‘/to/a’, function (err...
ライブラリ• Web Framework  – Express• Middleware  – RDB, NoSQL(CouchDB, MongoDB, Redis),    Memcached, AMQP• Template Engine  –...
使用例• Web GUIを持つTVサーバ                主な仕事                1.   チューナから映像が来たら:                     • UDPでストリーミング              ...
使用例• Web GUIを持つTVサーバ  従来型(マルチスレッ      イベントドリブン 非同期       ド)         I/O 暇  (ストリーミングスレッ            映像がきた  映像がきた 映像待ち       ...
うれしくないこと1. CPUが早くなるわけじゃない – あたりまえ – ほとんどがCPU処理のアプリにはあまり意味無し2. イベントドリブン・非同期I/Oへの慣れ – 人間は仕事を直列な手続きとして考えたがる – どんなスケーラブル・プログラミ...
Upcoming SlideShare
Loading in...5
×

たのしいNode.js

1,951

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,951
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "たのしいNode.js"

  1. 1. たのしいnode.jsイベントドリブンの世界
  2. 2. ある日のkanpou_さん
  3. 3. 12/04の私• いいネタがない – クラウドとはなんだったのか – 「伽藍とバザール」「UNIXという考え方」 – 投資のやりかた ・・・ピンとこない• じゃあネタを借りよう! ⇒ node.js node.jsという環境特にイベントドリブン・非同期I/Oを知ってもらおう!
  4. 4. おもいっきり技術志向です。残念ながら楽しげなスライドになりませんでした。
  5. 5. node.jsとは?• サーバーサイドJavaScript環境 – Ruby, Python, perl ⇔ (node.js & JavaScript)• 特長 – 単一プロセス、単一スレッド – イベントドリブン・非同期I/O – C10K問題クリア• 続きはWebで!http://nodejs.org/
  6. 6. 何がうれしいのか• みんな大好きJavaScript – Google Chrome V8 JavaScript Engine • C言語より高速なJavaScriptによるバイナリ操作が話題 « A- Listers http://tech.a-listers.jp/2012/10/10/faster-than-c/ – YUIも jQueryも• ネットワークプログラム(含Web)が超ラク – ソケット処理はライブラリ丸投げ – イベントドリブン• (うまく書けば)高パフォーマンス – 非同期I/O前提の環境: CPU Idleを活用
  7. 7. Echo Servervar net = require(‘net’);var srv = net.createServer(function (sock) { sock.on(‘data’, function (buf, err) { sock.write(buf); });});srv.listen(4050); //TCP port 4050 イベント コールバック
  8. 8. イベントドリブンとは • 並列プログラミングモデル – 内部状態の通知によってプログラムが動く – 同時に動いているプログラムは1つ 手続き型・同期I/O イベントドリブ ン・非同期I/O ファイルを読み込む ファイルを読み込む 裏方が 待ってる 別の作業 仕事 読み込みおわった 読み込みおわった読んだファイル 読んだファイルに対する作業 に対する作業
  9. 9. 非同期I/Ovar fs = require(‘fs’);//’/to/a’, ‘/to/b’は同時に読み込まれる//タイマー等他イベントは読み込みが完了してなくても処理されるfs.readFile(‘/to/a’, function (err, data) { //読み込んだ結果を表示 console.log(data);});fs.readFile(‘/to/b’, function (err, data) { //読み込んだ結果を表示 console.log(data);});
  10. 10. ライブラリ• Web Framework – Express• Middleware – RDB, NoSQL(CouchDB, MongoDB, Redis), Memcached, AMQP• Template Engine – ejs, Jade• Real-Time Web(Comet, WebSocket) – socket.io
  11. 11. 使用例• Web GUIを持つTVサーバ 主な仕事 1. チューナから映像が来たら: • UDPでストリーミング 2. Webサーバにアクセスされた ら: • Webページを返す 3. チャネルを選ばれたら: • 切り替える
  12. 12. 使用例• Web GUIを持つTVサーバ 従来型(マルチスレッ イベントドリブン 非同期 ド) I/O 暇 (ストリーミングスレッ 映像がきた 映像がきた 映像待ち ド) ストリーミング ストリーミング 送信中 暇 WebAPIチャネル変更 映像くれ チャネル 映像待ち Webレスポンス 変更同期ロック,スレッドセーフ,ワークメモリ・・・
  13. 13. うれしくないこと1. CPUが早くなるわけじゃない – あたりまえ – ほとんどがCPU処理のアプリにはあまり意味無し2. イベントドリブン・非同期I/Oへの慣れ – 人間は仕事を直列な手続きとして考えたがる – どんなスケーラブル・プログラミングモデルに慣れ るか?3. シングルスレッドなのでマルチコアが使えない – ミドルウェアによるクラスタ化 • (memcacheによる共有メモリ,RedisやRabbitMQによるPub/Sub)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×