YAPC::Asia 1日目

今週、金曜日と土曜日。perlのカンファレンスに行ってきました。
今年で4回目の参加になります。

IMG_1690

2日分あるのでまず1日目から。

Stylish: Perl ♥ Emacs(Jonathan Rockway)

emacsというエディタでperlをするにはー。みたいなセッション。
・・・・の予定だったのですが、しゃべる人が無断欠席!なんてこったい!
という訳で中止になりました。うー。

なので、

CloudForecastの紹介(長野雅広)

を聞いてきました。
要約すると、yamlで監視先のサーバー情報を書くと、RDDtoolでグラフ作りますよ。
ってな物でした。

次。

モダンな Perl5 開発環境について – Modern Perl5 Development Environment – 2010年代を生きのびる Perl5 活用術(Tokuhiro Matsuno)

そのとき取ったメモをべた張り。

12:15
perl5のバージョン
 systemパーツ使うのだせぇ!
  OSに元から入ってるやつ。
  コンパイルオプションが普通すぎ。
  perlのコンパイルは自前でやったほうがいいよねー。

  perl5.10.0
   できがよくねえ。正規表現使うとメモリーリークししたりする。<無いわー
   駄目!絶対駄目!

  perl5.x.0はクオリティー高くない。
   本番環境で使うべきではない。

  5.12.2を使うのが吉。
   スピーカーさんは特に問題おきたこと無いよ。
  安定志向なら5.8.9で。

  5.10系いいよー
   given/when使えたり。他もいろいろ便利な関数あるよ。
   deined of (//) がよい。<・・・何それ?

 perlbrew・・・・自分のHOMEに自分の好きなバージョンのperlインスコできます。
12:23
  簡単インスコ
  なんもかんがえんでよい
  perlbrewでCPANモジュール入れると、各々のperlbrewの下にインスコさせる。

cpanm
 cpan
  初回起動時メンドイ。
  indexのスキャンが遅い!
 メモリの少ないvpsでCPAN雨後かねー。→軽いの作ったよ!=cpanm

cpan-outdateモジュール・・・・古いcpanモジュール探して列挙する。
 cpan-outdate | cpanm とかすれば古いモジュール一括アップデートできる。

cpanf
12:34
 f=フレッシュのF。
 CPANモジュールに更新が合った場合、ミラーサーバーに反映されるまで数時間かかる。
 cpanf -m DateTime とかすればcpan.org?ともかくお

pm-uninstall
 モジュールを消すモジュール
 pm-uninstall DateTime とかつかう。

12:36
deployment
 いろんな鯖にperl環境をコピーするにはrsyncを使おう。らくだから。おぬぬめ。


CPANモジュールの選び方
 8万6千くらいある。えらべん!
 日付系(Date)だけで3500くらいある。わけわけめ。
 答え=みんなが使ってるモジュールを使おう!
  ircで聞けばおk。<えー。はずい!
  <googlecodeで use hoge;で検索した数が多いのとどうか?
  ツイッターの@perlism、@lestrratとか。
 答え=有名なperlハッカーが使ってるモジュールを使う。
  <プラガーとか?カタリストとか?むーすとか?
 新しいモジュールがいいとわ限らない。
 2004年以前のモジュールは腐ってるから使うべきではない。
 testがこけたまま長い間放置されてるモジュールはいくない。

perl5の開発がしやすくなるツールがここ1年で増えてきた。
 どんどん使って恩恵を受けましょう。
perl is unded.

How to test scraping(Kuzuha)

HOW TO test スクレーピング

13:04
 id:kuzuha
  ドワンゴの中の人。
  25歳になりました。<おめでとー
  姉が結婚します

テスト書いてますか?
 つかテストの無いものは製品とは呼びません!
 CPANにはテストモジュールいっぱいあるよ!使えよ!
 <一番いいテストフレームワークを頼む。

 継続的なテストをするもの。=hudson


外部のものに依存したテストってどう書くの?ってのがこのセッション。
 相手依存多すぎ。制御できんし。
  信頼性
  ページ構成の変化
  アクセス数制限
  ID・パスワード
  リファーとか、クッキーとか。

 各ページをローカルに保存する。んでテスト。
 ページ繊維のテストができない。けどま、いっか。

 バグ報告来ますた。orxz
  自動リトライ機能付けました。
  html再収集するようにしました。

  ・・・きりなくね?

 解決策=自前で相手のwebサイトっぽい動きをするものを作成しました。
  自前サービス->串->相手サービス
       串が肝なんだろうな。

TODO
 クッキーの有効期限とか
 CPANに公開したいー。
  自社製品なのですが、CPANに公開したいです。

13:17

Studying HTTP with Perl(mala)

perlで学ぶHTTP

15:00
 web情報ゲットだぜ!
  並列じゃないモジュール。
   lib::www::perl
   LWP::Useragentな。
   LWP::robbtUAなるもののある。bot作成に特化。

   Uri::Fetch
    キャッシュの効くLWP::Useragent。304をまともに処理。<便利かも。
   Http::Lite
    依存が少ないLWP::Useragent。HTTPSが使えない。
   WWW::Curl
    癖がある。早い。つかいづれぇ。
   他にもあるらしいが、大体こんなもん。

  並列処理できるモジュール

  HTTP::async、LWP::パラレルはオススメしない。古い。

  AnyEvent::HTTP
   AnyEventで書かれたLWP。ストリーミング対応。使い方簡単。
  Coro::LWP
   LWPをCoro化するらしい。<なんぞ?わけわかめ
   Coro=マルチスレッド化するものらしい。
   あんま使うべきではないっぽい。影響範囲がでかいらしい。LWPとかがらりる。

   <AnyEvent::HTTPしか使えるのねーじゃん!

  LWP重ー。
   200回/秒を超えるリクエストを扱う場合は CとかXSつかいませう。

  AnyEnevt::Curl作ったよ!
   Dos攻撃とかにおすすめ!やんなよ!絶対にやんなよ!
   LWPの8~10倍早いよ!
   LWP互換機能も付けたから、それ使えば置換が楽ですよー。

  並列処理
   fork使う。
   thread使う←バグってる。使うな。
    の2個あるけど実質一択。Fork使え。

   coroを使う。
    簡単だがはまりやすい。

  AnyEnevt::*
   いろんなものを並列処理してくれるもの?
   去年のYAPCでいっぱい発表があったらしい。


 パラレルフォーク+WWW::Curlが最速。


httpクライアントのテストの書き方。
 Test::TCPを使おう。
  ローカルマシン内に仮サーバーを立ち上げられる。
  オフラインでも実行できるよ!
 

AnyEventとEC2を使ったクローリングツールのご紹介((株)GaiaX Songhee Han, 荘野和也)

AnyEventとEC2でクローラーを作る。

ハニービーというクローラー作りました。
 ハニービー::Bee=webのデータを取ってくるpelrのプログラム。クロール担当。
  bi=受け取ったURLをすくレイプして、結果をJSONで返す。
  環境依存が少なく、他サーバーに切り離して動作可能。スケールしやすい。

 ハニービー::Hive=URLをデータベースに格納するモジュール
  beeの管理を行ってる。
  2個のデーモン。
  クローラーデーモン
   インスタンスの管理
    クローリング処理の実行
   フローマネージャー
    全体的な何かを処理担当

Perl プログラマが PHP大規模開発の会社に入って(伊藤直也)

perlからPHPへの移行はそんなに大変じゃないらしい。
  <そりゃ貴方レベルだからだろう・・・・

Lightning Talks Day One

とにかく面白かった!
スピーチが全部早かった!
忍者が出てきた。

以上です。1日目のレポート終了。以下、会場の写真。

IMG_1692

IMG_1694

IMG_1695

IMG_1696

IMG_1698

IMG_1701

未分類

Posted by namahage