Hokkaido.pm#6開催のお知らせ | event | Hokkaido Perl Mongers
自分メモ。
- aloelight(YSASAKI)さん 「Carton使ってみた」
- akiymさん 「botのつくりかた」
- nekokakさん
- まだ転んでないよ!
- JobQueue & Message Queue
- Distributed Job Queueについて
- なぜ作ったか どういうフローで どういう思考で開発したか
- 経緯
- daemontoolsの情報をwebで見たい
- webのユーザでsudoさせるのはイヤ
- そこでqueueを介してやれば…?
- Gearman
- しかしこんなちょっとしたツールのためにgearmandは ><
- workerプロセス常駐させる無駄とか
- ZeroMQ
- しかしまだ仕様が変わるらしいとの噂
- 自分が望むのは
- workerプロセス自体がlistenして待ち受けるような
- せっかくだから自分の思うがままに
- どういう風に作ったのか
- 自分の理想とする仕様をとにかく考える
- 自分が使うとしたらどういうI/Fが良いか
- さっくりI/Fを書いてみる
- 使用イメージの疑似コード
- それから実装
- みんなは?
- どんなこと考えながら設計したり実装したりしてるの?
- Clutch
- 簡単なプロトコル
- "$function\r\n$args\r\n" argsはData::MessagePackで
- Storableの問題点 バージョン違うとserialize/deserialize失敗したり
- Data::WeightedRoundRobin
- 重み付けRR
- すべて同じweightでも完全に均等になるとは限らない、のは注意ね
- DEMO ...どっかいった
- 分散
- admin
- clientがadminに問い合わせてworkerを知るようにする
- 使うケース、使わないケースでDEMO
- adminからworkerの生存確認、除外などできたら良いかも?
- clientでやりたいこと
- multicast requestを実装したい
- 例えばMySQLレプリ遅延防ぐために全部に同時にクエリ投げる
- MQ的な投げっぱなし
- Job Queueを作る際に気をつけること
- Jobは可能な限り保護する必要があるか?
- lockの粒度、lock方法
- qps
- 重要なこと
- どんなモジュールを知っているか、使い方を知っているか
- 仕事で使わないようなものでもかじっておくと、幅が拡がる
- hirataraさん 「循環参照について」
- 循環参照とは
- Perlはreference counterを使っている
- 循環参照の例:
- Template::Plugin::Filter
- AnyEvent subが実行されてundefされれば問題ない
- ちょっと変な例
- Devel:Peekで確認
- リークを見つける5つの方法
- psする ("ps -o rss= -p $$")
- OSからの情報なので確実
- Test::LeakTrace
- Test::Moreと合わせて no_leaks_ok
- Devel::Cycle
- 結果が見やすい 見つけられるのは基本的に循環参照のみ
- Devel::Leak::Object
- Objectに対して
- DESTROYをいじる
- DESTROY時にwarnをはさんで調べる…!
- 解放順を追いやすい
- おまけ: Devel::Gladiator...?
- 循環参照を直す5つの方法: コールバック周りは循環参照しやすい
- 鎖を切る(undefする)
- 切り忘れするとリークする
- Scalar::Util::weaken
- 弱参照にしてやる
- オーナーを意識しないと解放されてしまうので注意
- 必要な部分だけを保持する
- 他の変数に代入して使う
- 引数渡しにする
- クロージャでなくする
- Data::Decycle
- 生存期間中はquardオブジェクトを保持する必要あり
- まとめ
- 循環参照はリークの素なので避ける
- 様々な方法で調査しよう
- リークしないようなコードを書こう
- onagataniさん 「YAPC::Asia Hokkaido実現に向けて」
- スタッフ募集!
- 大枠のスケジュールを確定させる
- 会計処理 超重要
- 参加者増の施策を