Recommended
PDF
An Internal of LINQ to Objects
PDF
PPT
PDF
PDF
PDF
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
PDF
PDF
PPTX
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
PDF
Reactive Extensionsで非同期処理を簡単に
PDF
PDF
lazy var の特徴を知る #cocoa_kansai #cswift
PDF
PDF
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
PDF
なかったらINSERTしたいし、あるならロック取りたいやん?
PDF
C#次世代非同期処理概観 - Task vs Reactive Extensions
PPTX
PDF
PDF
PPTX
PDF
PDF
可変値変数 var を極力避けることを模索するための事前知識 #cswift
PPTX
PDF
PDF
PPTX
PDF
More Related Content
PDF
An Internal of LINQ to Objects
PDF
PPT
PDF
PDF
PDF
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
PDF
PDF
What's hot
PPTX
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
PDF
Reactive Extensionsで非同期処理を簡単に
PDF
PDF
lazy var の特徴を知る #cocoa_kansai #cswift
PDF
PDF
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
PDF
なかったらINSERTしたいし、あるならロック取りたいやん?
PDF
C#次世代非同期処理概観 - Task vs Reactive Extensions
PPTX
PDF
PDF
PPTX
PDF
PDF
可変値変数 var を極力避けることを模索するための事前知識 #cswift
PPTX
PDF
PDF
Similar to たのしいNode.js
PPTX
PDF
PPTX
how to create a web server with a raspberry pi
PDF
PDF
PPTX
PDF
PPT
PDF
PDF
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
PDF
PPT
PPTX
PDF
PDF
東京Node学園#3 Domains & Isolates
PDF
18166746-NeverBlock-RubyKaigi2009
PDF
Windows 8時代のUXを支える非同期プログラミング
PPTX
PDF
PPTX
JavaOne 2016 Report for Java EE
More from ishiki-takai
PPTX
PPTX
PPTX
PPTX
プログラミング学習サイト+ブラウザ上での音声読上げ
PPTX
Stack Overflow+英文読む時、便利なツール
PPTX
PPTX
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
PPTX
たのしいNode.js 1. 2. 3. 12/04の私
• いいネタがない
– クラウドとはなんだったのか
– 「伽藍とバザール」「UNIXという考え方」
– 投資のやりかた
・・・ピンとこない
• じゃあネタを借りよう! ⇒ node.js
node.jsという環境
特にイベントドリブン・非同期I/Oを知ってもらおう!
4. 5. 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. Echo Server
var 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. イベントドリブンとは
• 並列プログラミングモデル
– 内部状態の通知によってプログラムが動く
– 同時に動いているプログラムは1つ
手続き型・同期I/O イベントドリブ
ン・非同期I/O
ファイルを読み込む ファイルを読み込む
裏方が
待ってる 別の作業
仕事
読み込みおわった 読み込みおわった
読んだファイル 読んだファイル
に対する作業 に対する作業
9. 非同期I/O
var 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. ライブラリ
• Web Framework
– Express
• Middleware
– RDB, NoSQL(CouchDB, MongoDB, Redis),
Memcached, AMQP
• Template Engine
– ejs, Jade
• Real-Time Web(Comet, WebSocket)
– socket.io
11. 使用例
• Web GUIを持つTVサーバ
主な仕事
1. チューナから映像が来たら:
• UDPでストリーミング
2. Webサーバにアクセスされた
ら:
• Webページを返す
3. チャネルを選ばれたら:
• 切り替える
12. 使用例
• Web GUIを持つTVサーバ
従来型(マルチスレッ イベントドリブン 非同期
ド) I/O 暇
(ストリーミングスレッ 映像がきた
映像がきた 映像待ち
ド)
ストリーミング
ストリーミング
送信中
暇
WebAPIチャネル変更
映像くれ
チャネル
映像待ち Webレスポンス
変更
同期ロック,スレッドセー
フ,ワークメモリ・・・
13. うれしくないこと
1. CPUが早くなるわけじゃない
– あたりまえ
– ほとんどがCPU処理のアプリにはあまり意味無し
2. イベントドリブン・非同期I/Oへの慣れ
– 人間は仕事を直列な手続きとして考えたがる
– どんなスケーラブル・プログラミングモデルに慣れ
るか?
3. シングルスレッドなのでマルチコアが使えない
– ミドルウェアによるクラスタ化
• (memcacheによる共有メモリ,RedisやRabbitMQによるPub/Sub)