Kamakura.pm #002 with BEAR!

2012/02/24 Fri
20:00 開始

1. Perlハジメマシタ @massat

以上宣伝

  • Perl歴1ヶ月からの「Perlハジメマシタ」
  • 前会社からJavaの経験はあり。村式からPHP
  • PerlBigeners #1
    • (僕もそっちだったかも。。。。)
  • 村式はPHPを6年メインに
  • PHP dis?
    • 別にいいけれど、Perlは憧れるよね
    • Rubyでもよかった
    • 次のステージへ
  • なぜPerl
    • Ruby VS Perl
    • Perlは古い。敷居が高そう。
    • Perl Mongersの愛は異常
  • Bootstrap
    • はじめてのPerl
    • モダンPerl
    • いそいで書けるようにならないと!
      • AdventCalenderなどで
  • よくなったこと
    • 環境がかっこよくなった
      • MAMPからperlbrewとか
    • エディタがかっこよくなった!
      • eclipseからemacs
      • かすたまいじー。かっこいい、もてる!
  • 配列とリファレンスでハマる
  • bless が好きになる
    • かわいい、かっこいい
    • ふぅーってやってオブジェクト完成
  • 気になること
    • try-catchない
    • public/privateない
    • リストとかハッシュとかの使い分け
    • 環境どうする?
  • Perlを1ヶ月をすると
    • わくわく
    • いけてる感じ
    • でもまだハマる
      • try-catchみたいなことをしようとするとevalやらしないといけない
    • でも書き続ける

2. CPANモジュールを作る人を増やす @songmu

  • Perlと中国語が好き
  • CPANは怖い?
  • PerlCPANの文化
  • 小さいものほど良い
    • 小粒なイノベーションが生まれやすい
    • quick hack文化 サクっと作る
    • Sub::Retry Array::Diff
    • 小粒でピリリとおもしろいモジュールが生まれる
  • 誰もやらないことをやる!
  • @songmuの最近のモジュール
    • HTTP::MobileAgent::Plugin
      • $agent->is_iphone
      • iosのバージョンが取りたかった
    • Encode::JP::Mobile::UnicodeEmoji
    • iOS5からキャリア絵文字からユニコード絵文字へ
      • MySQL5.1とかにはいんない
      • Unicode -> Google -> Encode::JP::Mobile
      • Fallbackちゃんとやっていないのでパッチ歓迎
      • モバイルサービス向け
  • CPAN Authorになる方法
    • PAUSE登録
      • 英語でCPAN Authorになりたい理由を書く
  • shipit!で一発アップ
  • 普段からちゃんとPOD書くようになる……?
  • Test::Spelling
  • 自分をオープンにして要望に対応して最終的にいいものになる!

3. typester的Perlの勉強の仕方 @typester

  • まとめ
    • 本からスタートはしない
    • いきなり何かを書く
    • 他人のコードリーディング
  • 本からスタートしない理由
    • 本で覚えるとつまらない
    • 眠くなる。最後まで読みきれない
    • 一切読まないわけではない
    • 本は情報が古い場合が多い。それに左右されないでスタートできる
    • 本の綺麗な書き方だけでは普通じゃないコードは読めなくなる
  • 作りたいもの駆動
    • 新しい言語でやってみる?
    • 言語の得意分野もある
  • PerlきっかけはBlogブーム。MTをいれる
    • でもMTでかいし、いじるの難しいからblosxomにした
    • blosxomをいじりながらPerlを覚えた
  • blosxom
    • すごく小さい
    • plugin拡張。PerlHackersっぽい思想
    • shibuya.pm.orgはblosxom
    • コードの難易度たかし hackishで楽しい部分を
  • Catalyst DBIx::Class
    • WAFとORM
    • コミットしてた。OSSの開発手法を学ぶ。IRCベース
    • mixinの設計手法
    • 本だと遅くなる部分
  • Plagger
    • miyagawaさんのコード綺麗
    • 美しくシンプルなコードの書き方を学ぶ
  • 他の言語
    • C
      • lighttpd, nginx, picoevのリーディング
      • node.jsのCの部分 ネットワークプログラミングにオススメ Ver0.4推奨
      • XSはData::MessagePackのソースを切り口にperldoc
      • XSはPerlとCの橋渡し 意外と簡単
    • Objective-C
      • CにPerlみたいな皮をかぶせた言語
      • Apple公式ドキュメントで学ぶ
      • Mooseで書いて、Objective-Cに移植
  • コツ
    • わかんないことはほっとかないこと
    • 解釈は厳密
  • 他人のコードリーディング大事!
    • Audryのコードはいみわかんなすぎだけれど天才
  • こんなに読んでいるのに未だに知らないことが出てくるPerlはほんとうに面白いですね!
  • オススメのPerlコード
    • AnyEventはおもしろい
  • Perlを初めて一ヶ月だと?
    • Plaggerを読む
      • 実際に使えて試せるのが面白いよね

4. 某SNSでfluentdとMongoDBを入れた話 @sfujiwara

  • SNSで取っているログ
  • 行動ログ
    • ユーザのアクション
    • ユーザのアクティビティの調査等に利用
  • 問い合わせ対応に重要
    • 管理画面からログが見えると捗る
    • 「コメントが多くて困る」粘着されているんじゃないのかとか
    • textだとssh&grep
  • fluentdとMongoDB
    • 以前: gearman > rsyslog > text
    • 今は: gearman > fluentd > mongo
    • 直接fluentd投げれるが、新しい技術なので、一旦gearmanに投げる
    • お試しなので落ちちゃうと取れない
    • 今は並行で使っている
  • なんで?
    • Fluentd::Loggerを書いたし
    • 実際に使ってみないとわからないよね
    • ある程度の規模で使ってみたかった、でもぶっつけ本番は不安
    • 万が一落ちても大丈夫
    • 運用の知見をためてみる
  • デモ
    • (超便利そう!)
    • Mongo > Ark > JSON
    • 管理ログ追っかけられる ほぼリアルタイムで見れる
  • やってみて
    • プログラマの手間が減る
    • ストーカーするなよ
    • 管理画面のログも取ってあるよ!
    • 使い方によっては危ない
  • job workerログにも導入
    • 問い合わせ番号を投稿後に表示(=job id)
  • 今まで全くログを吐いていなかった
  • warn()で吐き出すようにした
    • なにがなんだかになってしまった
  • 擬似シグナルハンドラ __WARN__
    • warnで吐かれるログをキャッチして投げる
  • MongoDBはJSでクエリ投げれるからいろんなことできるよ!
  • まとめ
    • ログ閲覧を管理画面化してプログラマの負担を下げる
    • fluentdは便利
    • 動作はかなり安定しているが枯れてはいない
    • 設定はわかりやすい。rsyslogは難しい
    • 新しいものなので、平行稼動できるところで
  • fluentdのバージョンアップ
    • rpmでかんたんに
    • アップデート時の取りこぼし
    • PerlのFluent::Loggerでメモリバッファ
  • MongoDBはまだ枯れていない
    • データベース単位でロックされる
    • 普通のデータベースとしてもログ取り用途にも
    • capped collection 容量制限を設定してログをとれる
      • (エンドレスカセットテープみたいなもんですね)
  • fluentdのパフォーマンス
    • 実用十分ぐらい出る
  • 普通に使う分にはRubyなしでもfluentd使える