SlideShare a Scribd company logo
1 of 13
たのしいnode.js

イベントドリブンの世界
ある日のkanpou_さん
12/04の私
• いいネタがない
 – クラウドとはなんだったのか
 – 「伽藍とバザール」「UNIXという考え方」
 – 投資のやりかた
         ・・・ピンとこない

• じゃあネタを借りよう! ⇒ node.js
        node.jsという環境
特にイベントドリブン・非同期I/Oを知ってもらおう!
おもいっきり技術志向です。

残念ながら楽しげなスライドになりませんでした。
node.jsとは?
• サーバーサイドJavaScript環境
  – Ruby, Python, perl   ⇔   (node.js & JavaScript)
• 特長
  – 単一プロセス、単一スレッド
  – イベントドリブン・非同期I/O
  – C10K問題クリア


• 続きはWebで!http://nodejs.org/
何がうれしいのか
• みんな大好き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を活用
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

                             イベント
                            コールバック
イベントドリブンとは
 • 並列プログラミングモデル
   – 内部状態の通知によってプログラムが動く
   – 同時に動いているプログラムは1つ
 手続き型・同期I/O                     イベントドリブ
 ン・非同期I/O

          ファイルを読み込む             ファイルを読み込む


                                            裏方が
  待ってる                  別の作業
                                             仕事

          読み込みおわった              読み込みおわった


読んだファイル               読んだファイル
に対する作業                に対する作業
非同期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);
});
ライブラリ
• Web Framework
  – Express
• Middleware
  – RDB, NoSQL(CouchDB, MongoDB, Redis),
    Memcached, AMQP
• Template Engine
  – ejs, Jade
• Real-Time Web(Comet, WebSocket)
  – socket.io
使用例
• Web GUIを持つTVサーバ
                主な仕事
                1.   チューナから映像が来たら:
                     • UDPでストリーミング
                2.   Webサーバにアクセスされた
                     ら:
                     • Webページを返す
                3.   チャネルを選ばれたら:
                     • 切り替える
使用例
• Web GUIを持つTVサーバ
  従来型(マルチスレッ      イベントドリブン 非同期
       ド)         I/O 暇
  (ストリーミングスレッ            映像がきた
  映像がきた 映像待ち
       ド)
                         ストリーミング
  ストリーミング
         送信中
                    暇
                        WebAPIチャネル変更
  映像くれ
                 チャネル
         映像待ち           Webレスポンス
                  変更
同期ロック,スレッドセー
フ,ワークメモリ・・・
うれしくないこと
1. CPUが早くなるわけじゃない
 – あたりまえ
 – ほとんどがCPU処理のアプリにはあまり意味無し

2. イベントドリブン・非同期I/Oへの慣れ
 – 人間は仕事を直列な手続きとして考えたがる
 – どんなスケーラブル・プログラミングモデルに慣れ
   るか?

3. シングルスレッドなのでマルチコアが使えない
 – ミドルウェアによるクラスタ化
   • (memcacheによる共有メモリ,RedisやRabbitMQによるPub/Sub)

More Related Content

What's hot

TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口Sunao Tomita
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化Gosuke Miyashita
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリットIto Kohta
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?ichirin2501
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsYoshifumi Kawai
 
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単にReactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単にYoshifumi Kawai
 
lazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswiftlazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswiftTomohiro Kumagai
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたしRyunosuke SATO
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようShigeo Ueda
 
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__Tomohiro Kumagai
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEWMasahiro Wakame
 
Reactive Extensions v2.0
Reactive Extensions v2.0Reactive Extensions v2.0
Reactive Extensions v2.0Yoshifumi Kawai
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswiftTomohiro Kumagai
 

What's hot (20)

TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
Nodejs
NodejsNodejs
Nodejs
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
 
Study Swift
Study Swift Study Swift
Study Swift
 
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単にReactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
 
Node native ext
Node native extNode native ext
Node native ext
 
lazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswiftlazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswift
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
 
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
 
Reactive Extensions v2.0
Reactive Extensions v2.0Reactive Extensions v2.0
Reactive Extensions v2.0
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
歌舞伎座Tech Rx会
歌舞伎座Tech Rx会歌舞伎座Tech Rx会
歌舞伎座Tech Rx会
 
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
 

Similar to たのしいNode.js

17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLBYuki KAN
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境Fumihito Yokoyama
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発Tatsumi Naganuma
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用Shinya Okano
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見るkishima7
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usageirix_jp
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
NodeにしましょうYuzo Hebishima
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門irix_jp
 
Bossan dentoo
Bossan dentooBossan dentoo
Bossan dentookubo39
 
Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門Manabu Shinsaka
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話Masataka Tsukamoto
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツールtamtam180
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編Asami Abe
 
OSC2012 Nagoya - OpenStack - Storage System; Overview
OSC2012 Nagoya - OpenStack - Storage System; OverviewOSC2012 Nagoya - OpenStack - Storage System; Overview
OSC2012 Nagoya - OpenStack - Storage System; Overviewirix_jp
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)OSgeo Japan
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 

Similar to たのしいNode.js (20)

17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
 
計算機理論入門07
計算機理論入門07計算機理論入門07
計算機理論入門07
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usage
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
 
Bossan dentoo
Bossan dentooBossan dentoo
Bossan dentoo
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 
Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツール
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
OSC2012 Nagoya - OpenStack - Storage System; Overview
OSC2012 Nagoya - OpenStack - Storage System; OverviewOSC2012 Nagoya - OpenStack - Storage System; Overview
OSC2012 Nagoya - OpenStack - Storage System; Overview
 
Osoljp201204
Osoljp201204Osoljp201204
Osoljp201204
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 

More from ishiki-takai

プログラミング学習サイト+ブラウザ上での音声読上げ
プログラミング学習サイト+ブラウザ上での音声読上げプログラミング学習サイト+ブラウザ上での音声読上げ
プログラミング学習サイト+ブラウザ上での音声読上げishiki-takai
 
保険のはなし
保険のはなし保険のはなし
保険のはなしishiki-takai
 
モノポリーと会社経営
モノポリーと会社経営モノポリーと会社経営
モノポリーと会社経営ishiki-takai
 
Stack Overflow+英文読む時、便利なツール
Stack Overflow+英文読む時、便利なツールStack Overflow+英文読む時、便利なツール
Stack Overflow+英文読む時、便利なツールishiki-takai
 
アイディアの育て方
アイディアの育て方アイディアの育て方
アイディアの育て方ishiki-takai
 
モチベーション3.0
モチベーション3.0モチベーション3.0
モチベーション3.0ishiki-takai
 
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかったishiki-takai
 

More from ishiki-takai (8)

プログラミング学習サイト+ブラウザ上での音声読上げ
プログラミング学習サイト+ブラウザ上での音声読上げプログラミング学習サイト+ブラウザ上での音声読上げ
プログラミング学習サイト+ブラウザ上での音声読上げ
 
Defcon
DefconDefcon
Defcon
 
保険のはなし
保険のはなし保険のはなし
保険のはなし
 
モノポリーと会社経営
モノポリーと会社経営モノポリーと会社経営
モノポリーと会社経営
 
Stack Overflow+英文読む時、便利なツール
Stack Overflow+英文読む時、便利なツールStack Overflow+英文読む時、便利なツール
Stack Overflow+英文読む時、便利なツール
 
アイディアの育て方
アイディアの育て方アイディアの育て方
アイディアの育て方
 
モチベーション3.0
モチベーション3.0モチベーション3.0
モチベーション3.0
 
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Recently uploaded (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

たのしいNode.js

  • 3. 12/04の私 • いいネタがない – クラウドとはなんだったのか – 「伽藍とバザール」「UNIXという考え方」 – 投資のやりかた ・・・ピンとこない • じゃあネタを借りよう! ⇒ node.js node.jsという環境 特にイベントドリブン・非同期I/Oを知ってもらおう!
  • 5. node.jsとは? • サーバーサイドJavaScript環境 – Ruby, Python, perl ⇔ (node.js & JavaScript) • 特長 – 単一プロセス、単一スレッド – イベントドリブン・非同期I/O – C10K問題クリア • 続きはWebで!http://nodejs.org/
  • 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)