Your SlideShare is downloading. ×
  • Like
2012-09-09.nagoyapm07
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

2012-09-09.nagoyapm07

  • 486 views
Published

2012-09-09 Nagoya.pm #7 での資料.Perl で Socket.IO することについて簡単に.

2012-09-09 Nagoya.pm #7 での資料.Perl で Socket.IO することについて簡単に.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
486
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Perl + Socket.IO 2012-09-09 Nagoya.pm #7 岩田 享 / issm
  • 2. 大盛況おめでとうございます! 2012-09-09 Nagoya.pm #7
  • 3. あと 2012-09-09 Nagoya.pm #7
  • 4. なごやか Scala #4休んでスミマセン>< 2012-09-09 Nagoya.pm #7
  • 5. アジェンダ自己紹介Socket.IOPerl で Socket.IO応用 1応用 2まとめと課題 2012-09-09 Nagoya.pm #7
  • 6. アジェンダ自己紹介Socket.IOPerl で Socket.IO応用 1応用 2まとめと課題 2012-09-09 Nagoya.pm #7
  • 7. おまえだれよ?岩田 享 / issm(いわた)http://blog.iss.ms/@issm, qr/issmx{,2}/個人事業 とある「商品」を販売 → 発注 → 発送管理 などするためのシステムを開発していたりPerl / JavaScript CoffeeScript 2012-09-09 Nagoya.pm #7
  • 8. 引っ越し! 2012-09-09 Nagoya.pm #7
  • 9. 入院! 2012-09-09 Nagoya.pm #7
  • 10. 夏のイベント参加不可!orz 2012-09-09 Nagoya.pm #7
  • 11. そんな 8月 2012-09-09 Nagoya.pm #7
  • 12. x10くらい x2 2012-09-09 Nagoya.pm #7
  • 13. 本題 2012-09-09 Nagoya.pm #7
  • 14. アジェンダ自己紹介Socket.IOPerl で Socket.IO応用 1応用 2まとめと課題 2012-09-09 Nagoya.pm #7
  • 15. Socket.IOWebSocket 通信なライブラリ http://socket.io/サーバサイド:socket.io node 向けモジュールクライアントサイド:socket.io.js クロスブラウザ(Websocket API, XHR, Flash) 2012-09-09 Nagoya.pm #7
  • 16. Socket.IO[server]var app = ... , io = require(‘socket.io’).listen(app); 2012-09-09 Nagoya.pm #7
  • 17. Socket.IO[server]io.sockets.on( ‘connection’, function(socket){...}); 2012-09-09 Nagoya.pm #7
  • 18. Socket.IO[server]// in ‘connection’ handersocket.emit(‘hello’, {foo: ‘bar’});socket.on( ‘event’, function(msg){ console.log(msg); }); 2012-09-09 Nagoya.pm #7
  • 19. Socket.IO[client]var socket = io.connect(); 2012-09-09 Nagoya.pm #7
  • 20. Socket.IO[client]socket.on( ‘hello’, function(msg){ alert(‘hello’); });socket.emit( ‘event’, { a: ‘hoge: b: [‘fuga’, ‘piyo’] }); 2012-09-09 Nagoya.pm #7
  • 21. アジェンダ自己紹介Socket.IOPerl で Socket.IO応用 1応用 2まとめと課題 2012-09-09 Nagoya.pm #7
  • 22. Perl で Socket.IOPocketIO 元 Plack::Middleware::SocketIO (DEPRECATED!) node の socket.io モジュール非依存 % cpanm PocketIO Webサーバには Twiggy を使う! % plackup -s Twiggy -a app.psgi 2012-09-09 Nagoya.pm #7
  • 23. Perl で Socket.IOSYNOPSIS# app.psgiuse Plack::Builder;use PocketIO;builder { mount ‘/socket.io/’ => PocketIO->new( handler => sub { my ($socket) = @_, ... }, ); mount ‘/’ => sub { my $app = ... };}; 2012-09-09 Nagoya.pm #7
  • 24. Perl で Socket.IOSYNOPSIS# in handlermy ($socket) = @_;$socket->on( event => sub { my ($self, $msg) = @_; use Data::Dumper; warn Dumper $msg; });$socket->emit( ‘hello’, { foo => ‘bar’ } ); 2012-09-09 Nagoya.pm #7
  • 25. Perl で Socket.IOクライアント JavaScript 側 socket.io.js をそのまま使える! 2012-09-09 Nagoya.pm #7
  • 26. アジェンダ自己紹介Socket.IOPerl で Socket.IO応用 1応用 2まとめと課題 2012-09-09 Nagoya.pm #7
  • 27. 応用 1SiTeWiki 自作の Textile 記法による Wiki っぽい何か https://github.com/issm/SiTeWiki 2012-09-09 Nagoya.pm #7
  • 28. 応用 1 2012-09-09 Nagoya.pm #7
  • 29. 応用 1リアルタイムプレビュー(Markdown記法) http://d.hatena.ne.jp/sugyan/ 20110722/1311302687 http://www.songmu.jp/riji/archives/2012/09/ pocketio.html 2012-09-09 Nagoya.pm #7
  • 30. Textile記法でも! 2012-09-09 Nagoya.pm #7
  • 31. 2012-09-09 Nagoya.pm #7
  • 32. デモ 2012-09-09 Nagoya.pm #7
  • 33. アジェンダ自己紹介Socket.IOPerl で Socket.IO応用 1応用 2まとめと課題 2012-09-09 Nagoya.pm #7
  • 34. 応用 2SiTeWiki 自作の Textile 記法による Wiki っぽい何か https://github.com/issm/SiTeWiki データ格納ディレクトリを設定可能 Dropbox共有下においてリモートで編集 2012-09-09 Nagoya.pm #7
  • 35. 応用 2データディレクトリを監視して変更があれば対応するページを開いているクライアントに通知して表示を更新したい! Client Client 監視 ClientEditor Data 変更 2012-09-09 Nagoya.pm #7
  • 36. デモ 2012-09-09 Nagoya.pm #7
  • 37. 応用 2監視ツールの概要 Filesys::Notify::Simple で監視 イベントを emit するスクリプトを呼ぶ Protocol::WebSocket とか使えば Perlでも書けるんだろうけど(ry 2012-09-09 Nagoya.pm #7
  • 38. 応用 2イベント emit スクリプト PhantomJS で WebSocket通信 「データが更新された」イベントを emit 2012-09-09 Nagoya.pm #7
  • 39. 応用 2 はじめての PhantomJS#!/usr/bin/env phantomjsvar args = [];phantom.args.forEach( function (n) { args.push(n) } );var target, paths;target = args.shift();paths = args || [];var page = require(webpage).create();page.open(target, function (status) { page.evaluate(function (paths) { var socket = io.connect(); socket.emit(data_updated, { paths: paths }); }, paths); 2012-09-09 Nagoya.pm #7
  • 40. アジェンダ自己紹介Socket.IOPerl で Socket.IO応用 1応用 2まとめと課題 2012-09-09 Nagoya.pm #7
  • 41. まとめと課題PocketIO で Perl でも WebSocket できるよ!リアルタイムプレビュー的な機能を実装してみた 実際に動くのを見るとやっぱりオモシロイ! 2012-09-09 Nagoya.pm #7
  • 42. まとめと課題WebSocket 通信をnginx 経由でリバースプロキシできない>< HTTP 1.1 における “Upgrade” がどうのこうの nginx_tcp_proxy_module で解決できるらしい https://github.com/yaoweibin/nginx_tcp_proxy_module 2012-09-09 Nagoya.pm #7
  • 43. ご静聴ありがとうございました! 2012-09-09 Nagoya.pm #7
  • 44. Q? 2012-09-09 Nagoya.pm #7