Submit Search
node.jsによる お手軽画像uploader実装
4 likes
6,301 views
Y
Yohei Fushii
1 of 18
Download now
Downloaded 17 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
More Related Content
PDF
New Generation Build System "Fly"
deepblue will
PDF
Poolboy
Yusuke Muraoka
PDF
Webサーバ勉強会_#1_108-114:ログとか
Dai Utsui
PDF
Test::WWW::Stub
ast_j
PDF
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
hecomi
PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
PDF
コマンド実行結果のログ取得について
Koji Kawaguchi
PDF
Nginx lua
Moriyoshi Koizumi
New Generation Build System "Fly"
deepblue will
Poolboy
Yusuke Muraoka
Webサーバ勉強会_#1_108-114:ログとか
Dai Utsui
Test::WWW::Stub
ast_j
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
hecomi
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
コマンド実行結果のログ取得について
Koji Kawaguchi
Nginx lua
Moriyoshi Koizumi
What's hot
(20)
PDF
Slub data structure
Masami Ichikawa
PDF
Siv3Dで楽しむゲームとメディアアート開発
Ryo Suzuki
ODP
0x300
geek_alice
PDF
CHP survey
Makoto Kishimoto
PDF
AVAの話 #mentaicojs
Hiroyuki Anai
PPTX
Functions
do_aki
PDF
Local php-100828 2
Akio Ishida
PDF
VarnishではじめるESI
Iwana Chan
PDF
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
PPTX
Javascript basic code
Shinsuke Matsuda
PDF
Spectacular Future with clojure.spec
Kent Ohashi
PDF
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
Masahiro Nagano
PDF
オンプレでPrivate Registry使ったDockerイメージの運用について
YASUKAZU NAGATOMI
KEY
Development app-with-elixir
k1complete
PDF
Testman
makoto tsuyuki
PDF
静岡のHaskellerはEmacsを使う
Kazufumi Ohkawa
PDF
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
Atsushi Tadokoro
PDF
Cross Platform Make
Tatsumi Naganuma
PDF
自作saoriの紹介
wizstargaer
PDF
Slub alloc and free
Masami Ichikawa
Slub data structure
Masami Ichikawa
Siv3Dで楽しむゲームとメディアアート開発
Ryo Suzuki
0x300
geek_alice
CHP survey
Makoto Kishimoto
AVAの話 #mentaicojs
Hiroyuki Anai
Functions
do_aki
Local php-100828 2
Akio Ishida
VarnishではじめるESI
Iwana Chan
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
Javascript basic code
Shinsuke Matsuda
Spectacular Future with clojure.spec
Kent Ohashi
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
Masahiro Nagano
オンプレでPrivate Registry使ったDockerイメージの運用について
YASUKAZU NAGATOMI
Development app-with-elixir
k1complete
Testman
makoto tsuyuki
静岡のHaskellerはEmacsを使う
Kazufumi Ohkawa
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
Atsushi Tadokoro
Cross Platform Make
Tatsumi Naganuma
自作saoriの紹介
wizstargaer
Slub alloc and free
Masami Ichikawa
Ad
Similar to node.jsによる お手軽画像uploader実装
(20)
PDF
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
PDF
関西FirefoxOS勉強会6thGiG「アプリ間通信」
Noritada Shimizu
PPTX
HTML5&API総まくり
Shumpei Shiraishi
PPTX
Develop Web Application with Node.js + Express
Akinari Tsugo
PDF
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
KEY
JavaScript on GitHub (#kyotojs)
y_uuki
PDF
2013 Ignite UI 最新情報 in 岡山
インフラジスティックス・ジャパン株式会社
PDF
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
PDF
Node.jsアプリの開発をモダン化するために取り組んできたこと
bitbank, Inc. Tokyo, Japan
PPTX
オタク×Node.js勉強会
虎の穴 開発室
PPTX
React+redux+saga 03
TIS Inc
PDF
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
インフラジスティックス・ジャパン株式会社
PDF
Tokyo React.js #3 Meetup (ja): Missing Pages: ReactJS/GraphQL/RelayJS
Khor SoonHin
PDF
20130412 titanium meetupvol7
Hiroshi Oyamada
PDF
Backbone.js入門
AdvancedTechNight
PDF
Componentization for Reality
Yusuke Goto
PDF
Sencha Touch working with AWS
久司 中村
PDF
SocketStream入門
Kohei Kadowaki
PDF
実践 NestJS
Ayumi Goto
PDF
RESTful Web アプリの設計レビューの話
Takuto Wada
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
関西FirefoxOS勉強会6thGiG「アプリ間通信」
Noritada Shimizu
HTML5&API総まくり
Shumpei Shiraishi
Develop Web Application with Node.js + Express
Akinari Tsugo
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
JavaScript on GitHub (#kyotojs)
y_uuki
2013 Ignite UI 最新情報 in 岡山
インフラジスティックス・ジャパン株式会社
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
Node.jsアプリの開発をモダン化するために取り組んできたこと
bitbank, Inc. Tokyo, Japan
オタク×Node.js勉強会
虎の穴 開発室
React+redux+saga 03
TIS Inc
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
インフラジスティックス・ジャパン株式会社
Tokyo React.js #3 Meetup (ja): Missing Pages: ReactJS/GraphQL/RelayJS
Khor SoonHin
20130412 titanium meetupvol7
Hiroshi Oyamada
Backbone.js入門
AdvancedTechNight
Componentization for Reality
Yusuke Goto
Sencha Touch working with AWS
久司 中村
SocketStream入門
Kohei Kadowaki
実践 NestJS
Ayumi Goto
RESTful Web アプリの設計レビューの話
Takuto Wada
Ad
More from Yohei Fushii
(6)
PDF
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
PDF
Enhance Anime Watching with Programming
Yohei Fushii
PDF
Unite with script
Yohei Fushii
PDF
ページャ実装マニアックス
Yohei Fushii
PDF
Perlで学ぶコルーチン
Yohei Fushii
PDF
初めてのMoose
Yohei Fushii
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
Enhance Anime Watching with Programming
Yohei Fushii
Unite with script
Yohei Fushii
ページャ実装マニアックス
Yohei Fushii
Perlで学ぶコルーチン
Yohei Fushii
初めてのMoose
Yohei Fushii
node.jsによる お手軽画像uploader実装
1.
node.jsによる お手軽画像uploader実装
id:hakobe932 1
2.
id:hakobe932
3.
id:hakobe932 ❖ 普段やってること • エンジニア
@はてな ‣ はてなブックマーク ‣ 関西最速アニメ調査 ❖ 好きなプログラミング言語 •Perl/Ruby/Scala •JavaScript ← new!!! 3
4.
tray
5.
tray ❖ 画像アップローダ •お手軽D&Dアップロード •アップロード数の制限 • ❖ リアルタイム
少し遊んでみましょう!! •http://tray.douzemille.net:8080 5
6.
簡単インストール $ brew install
node $ brew install redis $ git clone https://github.com/ hakobe/tray.git $ cd tray $ npm install $ node app.js 6
7.
実装
8.
trayの実装
Client アップロード 画像リスト 更新通知 Server express socket.io Node Redis 8
9.
API(app.js) ❖ express でディスパッチ
1 app.get( // トップページ 2 '/', routes.index.index); 3 app.get( // パネル一覧 4 '/api/panels.json', routes.api.panels); 5 app.post( // パネル画像アップロード 6 '/api/upload.json', routes.api.upload); 9
10.
routes/api.js // 画像一覧 exports.panels =
function(req, res) { var from = req.query.from; panelManager.retrievePanels(from, function( panels ) { res.json(200, panels); }); redisから }; 画像リスト取得 // 画像アップロード exports.upload = function(req, res) { var file = req.files; if (file && file.imageFile) { // ... 省略中 ... } 次のスライドで説明 } 10
11.
画像の登録
アップロードされた panelManager.createId(function(id) { ファイルを移動 fs.rename( req.files.imageFile.path, path, function(err) { var panel = { id : id, imageName : path.basename(path), }; panelManager.addPanel( panel ); res.redirect('/'); panelManagerが登録 }); }); • expressがアップロードをハンドル ‣ bodyParserのuploadDirを指定しとく • 追加はPanelManagerが担当 11
12.
PanelManager •
Redisに画像の情報を追加 PanelManager.prototype.addPanel = function(panel) { redisClient.zadd( redisKey('panels'), panel.id, Sorted Setにデータ追加 JSON.stringify(panel), redis.print ); this.emit('add', panel); return panel; add イベントをemit }, 12
13.
EventEmitter • オブジェクトがイベントを発行可能に function
PanelManager() { events.EventEmitter.call(this); } util.inherits(PanelManager, events.EventEmitter); PanelManager.prototype.addPanel = function(panel) { // ... いろんなメソッドの実装 ... 13
14.
PanelManager.prototype.addPanel = function(panel)
{ redisClient.zadd( redisKey('panels'), panel.id, JSON.stringify(panel), redis.print ); this.emit('add', panel); return panel; }, 別のコンテキストで登録された 処理を実行 var panelManager = new PanelManager(); panelManager.on('add', function() { // panelManager.emit('add') されたときの処理 }); 14
15.
socket.io (app.js) ❖ パネル追加時クライアント全体に通知 var
io = require('socket.io').listen(server); var panelManager = new PanelManager(); panelManager.on('add', function(panel) { io.sockets.emit('paneladd'); }) クライアント全体に paneladd イベントを通知 PanelManagerとsocket.ioの 振舞いを分離しておける 15
16.
socket.io(クライアント) ❖ 通知が来たら再読み込み var socket
= io.connect(location.href); socket.on('paneladd', function () { showPanels(); }); 16
17.
その他 •クライアントサイド ‣ Drag and
Drop API ‣ FromData ‣ Zepto 17
18.
まとめ ❖ tray •
お手軽画像アップローダ • node.jsっぽい技術つまみぐい • 12枚のパネルをきれいにそろえよう Fork me on GitHub https://github.com/hakobe/tray 18
Download