Niigata.pm 決起集会がありました
Niigata.pm が正式にpm.orgに登録されたので、何かやろうということでLT大会と飲み会です。(また写真撮ってない...)
LTのメモ (初参加ではない方の自己紹介は割愛)
- mazhulin さん
- 質問たくさんしてくれました
- 僕的に丁寧な回答出来なかったのでなんかすみません
- id:jewel12 さん
- 居酒屋LTと初心者向けRubyわーくしょっぷをやります
- 新潟の Rubyist が集まるイベント 居酒屋LT
- 初心者向けわーくしょっぷ
- 6.23 14:30-17:00
- ギークハウス新潟
- といあわせは jewel_x12 さん
- hachioji.pm の id:uzulla さん
- IRCが嫌いなので yancha 作った(から使え) http://yairc.cfe.jp:3000/
- チャンネルじゃなくてタグ
- pocket.io
- 勉強会の次はプロダクトをつくるといいよ(コードでコミニュケーション)<- 重要!!!!!!
- YAPCのトーク申請
- LTじゃなかった
- IRCが嫌いなので yancha 作った(から使え) http://yairc.cfe.jp:3000/
- ishiduca
- psgiアプリのストリーミングパターン
- インストール済みのnode.js モジュールの READMEとコードを読むやつ
- RiceCurryNodle さん
- 長岡技大生 && これからPerl ということなので、寝る間を惜しんでコード書いて欲しい
- id:aokcub さん
- hayajyo さん
- iPad手書きプレゼン
- Fluentdはキュー
- terminalでじゃんけん?
- 隠れて面白ことしてる
- Takashi Yukawa さん
- neko_gata_s さん
- YAPCのトーク申請
- リアルタイム通知の概要
- むかし、XMLHttpRequest等によるクライアントからのリクエストとレスポンス
- リクエストとレスポンスは一続き
- 頻繁におこる通信のコスト
- リアルタイムではない
- さいきん、longpollingとかwebsocketとか
- push型
- 「リクエストとレスポンス」という関係じゃない(場合がある)
- 複雑な構造
- ユーザの個別は簡単じゃない
- neko_gata_s 式リアルタイム通信の実装
- YAPCで話したい(ので投票してね)
- むかし、XMLHttpRequest等によるクライアントからのリクエストとレスポンス
- 委譲について
- LTじゃなかった
- バラエティに富んだ人たちが来たなー という印象
自分のLTネタ
psgiアプリのストリーミングパターン
既出のネタだけど、Dancer を使った場合のストリーミングでいい方法がわかんなかったのでいいかなと
use strict; use warnings; use Plack::Builder; # 基本 my $app0 = sub { my $env = shift; [ 200 , [ 'Content-Type' => 'text/plain' ] , [ "Hello PSGI\n" ] ]; }; # ストリーミングの基本的なやつ my $app2 = sub { my $env = shift; sub { my $respond = shift; my $writer = $respond->([ 200, ['Content-Type' => 'text/plain']]); for (1..3) { sleep 1; $writer->write("$_\n"); } $writer->close(); }; }; # sleepによるプロセスのブロッキングを回避するのに AnyEventを使うやつ use AnyEvent; my $app3 = sub { my $env = shift; unless ($env->{'psgi.streaming'}) { return [ 500, ['Content-Type' => 'text/plain'], [ "this app can not streaming" ] ]; } sub { my $respond = shift; my $writer = $respond->([ 200, ['Content-Type' => 'text/plain']]); my $c = 1; my $t; $t = AE::timer 1, 1, sub { if ($c > 3) { undef $t; $writer->close(); } eval { # こうしないと broken pipe とかなる $writer->write("$c\n"); $c++; } }; }; }; # Dancer つかってみた use Dancer; get '/' => sub { my $data = ""; send_file \$data, streaming => 1, callbacks => { override => sub { my($respond, $dancer_resp) = @_; my $writer = $respond->([ 200, ['Content-Type' => 'text/plain']]); for (1..3) { sleep 1; $writer->write("$_\n"); } }, }; }; builder { mount "/hello" => $app0; mount "/sleep" => $app2; mount "/timer" => $app3; mount "/dancer" => dance; };
Dancerでのstreamingの最適解あったら教えて欲しい
インストール済みのnode.js モジュールの READMEとコードを読むやつ
node.jsのコード書いてて、関数の使い方を調べるのに perldoc みたいなのあったらいいなという動機で
- Perlのようなドキュメントから ReadMe.md があったら、読めるようにする
- `nodedoc module_name`
- (ReadMe.md がなくても)コードをよめるようにする
- `nodedoc -m module_name`
- インストール済みのモジュールの一覧を出す(`npm ls` 相当の事をやる)
- `nodedoc -ls`
- モジュールのパスを表示する
- `nodedoc -l module_name`
ようなのを書いてお茶濁した。機能追加したらそれなりに使えるかもしれないので todo としては
- 依存モジュールは未対応なので依存モジュールも扱えるようにする
- "./lib" 以下の jsファイルのコードを読めるようにする
- package.json とか gyp の内容を表示できるようにする
- シンタックスハイライトを使えるようにする
「あっという間」というには短すぎた二時間でした
次回のテーマは「データ」です。