久しぶりにRuby勉強会に行ってきました。
コンビニで並んでたら前の人が店員に「このへんに王将はありますか」とか聞きだして、バスに乗り遅れそうになったり、id:hakobe932さんが「前に来たことあるからさくさく行ける」とおっしゃってたので、ついて行ったら、全然違う方向に行ってしまってめちゃくちゃ迷ったりしたのですが、間に合ったし、勉強もできました。
後学のためにメモを取っていたので、掲載しておきます。
id:zhestoさんに誤りを指摘していただいたので、一部修正しました。修正箇所はコメントをご覧ください。
2009-01-31 13:15~17:00
Gmail4Domain、Rails、Godを使っためっちゃこすいメールからの投稿受付 by waku さん
- 本業は建築
- 飯旨・酒旨なお店の紹介ブログ | メシウマ
- Gmail 4 Domain(Google Appsのやつ)
- God
質問
- monitと比べてどこがすばらしい?
- monitはよく知らない
- railsの中に取り込めるのでバージョン管理できる
- プロセスの監視などができると聞いたが
- リソースが足りないときにうまく動かないことがある
- godがなんとかしてくれると思った
- 泊まったときに再起動のほかにできることは?
- スクリプトを呼ぶだけなので、何でもできる(リソースが足りないことの報告など)
- Exception Monitorで起きた例外を見ることができる
Fiber使ってみた by サイロス誠 さん
- 大阪のプログラマー
- Miyakoで自作プレゼンツール
- Fiber
- スレッドの一部
- ブロックやスクリプトを平行処理
- 特徴
- 生成と開始は別
- 作った瞬間に実行されるのではなくて、あとで開始する
- シンプル
- Fiber.new
- Fiber#resume
- Fiber.yield
- 生成と開始は別
- Fiber.new
- Fiberのインスタンスを作製
- 評価するブロックを引数として渡す
- ブロック比キスは省略可能
- Fiber#resume
- ブロックを評価
- resume;yield;
- yieldするとよび元に戻る
- FiberError
- Fiber.yield
- resumeした位置の次の行に戻る
- resumeメソッドの戻り値を引数に取る
- 例の実行と解説(添付資料)
- Threadはどこに行くか分からないが、Fiberの場合は異動先が分かりやすくなっている
- 実例
- Generator
- 1.9.1のEnumulatorでFiberが使われている
- while trueの中からでないので、11から順にインクリメントされる
- ゲーム等でのシナリオとメインの実装
- メインから、シナリオをresumeする
- 補足
- require fiber
- パンドラの箱なので省略
- 質問
- 1.8で同じことをやるには?
- callccが使われていた
- 使いにくく、速度も劣る
- スライド中に書き込むのはMiyakoの機能?
- はい
- 左クリックで書き込み、右クリックで消せる
- Generator、@stをインスタンス変数にして引数にしなくてもできるのでは?
- たしかに
XMPPでMicrobloggingを - xmpp4r+ramaze+sequel webアプリ by ストヤンさん
- ストヤン
- SEMM
- 家のパソコン使えない
- Web 3.0(RealTimeWeb)
- RSSでは足りない(1万人でフィードを読むと落ちる)
- うまくやる方法
- SUP
- フィードの中の差分を取れる
- Webhooks(今日は話しない)
- 今日の話はXMPP
- London-Calcutta間の通信時間
- 1800:2年 帆船
- ...
- 1994 10分 メール
- 1999 1秒 IM
- XMPP
- JID(IDをもらえる)
- node@server/Resource
- オープンプロトコル
- サーバー分散
- ドキュメント
- RFC 3290, 3291を読めばよい(簡単)
- XMPP extension proctocols(XEP)
- 2方向でXMLをストリーム
- presenceつき
- オンラインになったらすぐわかる
- One-to-one IM
- 人と人
- アプリケーション間
- グループチャット
- Geolocation
- (どこから送ったか)
- 送り元をGoogleマップに出したりとか
- security
- 次の話
- Microbloggint
- Web3.0
- PubSub
- ...
- ややこしいので自分で作る
- XMPPbot
- XMPPサーバーとつながって、メッセージを受信して何かする
- 簡単なAPI
- web frontend
- 参考になるやつ
- juick.com(ロシア)
- kwippy.com(インド)
- Model
- Things
- User
- Micro
- Relations User to User
- Subscribe User to Micro
- Like User to Micro
- Relations(Sequel)
- XMPP bot
- nutrun.comの記事を読めば分かる(http://tr.im/emxmpp)
- 平行性
- 処理に時間がかるworkerのcallbackを指定できる
- include EM::Deferrable
- APIの説明
- いろいろ
- Web(Ramaze)
- 見やすい
- Demo
- openfire
- iChatと会話できる
- 返信だけ流れてくる
- メッセージ単位でfollow, unfollowとかできる
- Webから見られる
- Twitterっぽいけど全部リアルタイムでウェブからも見える
- やりたいこと
- Ragelでコマンドをパース
- XMPP すごい
- eventmachine network library
- sequel つかえるORM
- rameze 使える
- 質問
- bot,平行性があるのにスレッドではない?
- OS別にpoll,kquueとかを使い分ける?
- pollはどこでも動くけど、もっと速くしたかったらよりよくできる
- libevent
- http://monkey.org/~provos/libevent/
Ruby 初級者向けレッスン第 26 回 by okkez さん
- お知らせ
- ジュンク堂大阪本店
- 松本さんと卜部さん
- トークショー(満員)
- 宴会はまだあいてる(cotocoto)
- NEWS
- 長い(418行)
- 互換性
- 言語仕様
- それぞれ、コアとライブラリ
(資料があったので、気になったことだけメモを取っています)
- ブロック引数がブロックローカル
- 上書きされない
- これに依存したコードを書いてた人は反省
- 組み込みクラスとオブジェクト
- Kernel#methodsがシンボルの配列を返す
- 名前の配列は大体シンボル
- Exception
- 例外クラスの比較、同じクラスで同じメッセージとバックとレースを持つ場合に真
- Array
- choiseがなくなったのでsampleを使う
- sampleに引数を渡すとその個数取ってくれる
- IO
- String
- ?cが文字を返す
- Time and Date
- parseがdd/mm/yyyyからmm/dd/yyyyに
- Win32API
- 削除されたのでdlライブラリを使う
- test/unit
- minitestとして再実装(完全に互換はない)
- lambda
c = 1
-> (a, b; c){c = a + b}.call(1,2)
p c #=> 1
- cはlambda内で利用されるローカル変数
- 三項演算子
- :の前後で改行できる
- procがProc.newとおなじ
- Proc#curry
- Fiber
- 今日来た人には説明済み
- Array.to_sがinspectと同じに
- Symbol
- 空文字列のシンボルができる
- 挙動がStringっぽい(grepできるとか)
- source_location
- cool
- どこの何行目かわかる
- __callee__
- 自分の名前が分からないときに再起ができる
- 行頭ドットで行継続できる
- 長いメソッドチェインとか
- begin...end以外でretryできない
- 実装がめんどかったといううわさ
- RubyGems
- 追加
- 注意すること
- man rubyですべてのオプションを見られる
- ruby --helpは1画面分だけ出るので大事なオプションがなかったりする
- gemを使わないとき、--disable-gemsするとちょっと速い
- 2回目以降はキャッシュされるからそう変わらない
- $SAFE=1で実行時に動的に$LOAD_PATHを追加できない
- 今のところ安全なウェブアプリケーションを作れない
- バグかもしれない
- m17n
- その他
- String#==はエンコーディングも見る
- まとめ
- Ruby1.9.1すごい
- 変更点たくさん
- 普通に使う分には大丈夫
- 行儀の悪いことをしてたらやばい
- 質問
- エンコーディングは何がサポートされているのか
- Encoding.name_list
- ダミーがあるので、名前はサポートされていても違ったりする
- エンコードを気にせず、ただのバイト列として扱うには?
- Ascii-8bitとかBinaryとか
- each_bytesとか
- default_internal
- 明示的に指示しなくても、openするときに勝手に変わる
- 危険
- okkezさんは今日から移行される?
- どっちも使いたいので共存できるように考えてから
- [].each{|@a|}とかはできない?
- できなくなった
- プログラミング言語Ruby
- 買ってください
- 9章までで、誤植が6つだけ(高品質)
- 関数型プログラミングとか
次回
- 未定
- 3月濃厚
- 2月はイベントたくさん
- ジュンク堂でトークセッションとか
- デブサミとか
- 未発表のイベントたくさん