D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

2011年08月

昨日の夜、ビールの缶のプルトップをぷしゅっ!とあけてぐびぐびと一番うまい最初の一口を飲んで、ベッドの上からツイッターに発泡酒よかビールのほうがうまい、とか書いてたらtwitterで今年のWhite Camel Awardをもらったということを聞いた。ちなみに以前の受賞者には@miyagawaさんとかがいます。

本人いないところでやるのはどうなのよ、とは思いつつも(まぁしょうがないっすよね!)、大変ありがたい話です。White Camel Awardが何か知らない人に説明すると、要はPerlの技術とかそういうところでの貢献ではなくて、コミュニティであったりイベントであったりマーケティングとかそういうところでPerlに貢献した人を表彰してくれるっていうヤツです。JPAとかの活動により、ということらしいです

 でも仕事の大部分をしているのはYAPCを任せている櫛井さんであったり、JPAの中の人達だったり、僕から無茶ぶりな仕事を請け負ってもらっている方達だったり、JPAの経理を全部やってる嫁あたりなんですが、代表ということでありがたくいただいておきます!あと、もちろんスポンサーの企業の皆様もそうですね。YAPC, JPAともスポンサーの皆様のおかげで運営できております

前にもtwitterには書いたんだけど、折角こういう形で海外にも少し名前は売れてますし、英語もボチボチ喋る事ができるんで今後は日本での活動を海外にもアピールしていくっていうスタンスで僕はやっていきたいなぁ、と考えています。

そういう意味では国内の事は誰かに禅譲できるといいなぁ、とかなんとか考えております・・・団体としてちゃんとサポートするから、良い後継者いませんかね。公な活動というのもなかなか楽しいですよ!
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

今回複数の非常にたくさんのデータが入ったファイルをCoroとかでFurlを非同期に使いながらほげほげする・・・ってことをしたんだけど、その際わりとずーっと普通の動作をしてるのにどこかで突然使用メモリが倍々ゲームになる症状がでてしまった。

基本的にやってることはこう:
   my @files = @ARGV;
   foreach my $file (@files) {
      # use Coro::Semaphore and what not to limit the number of
      # simultaneous files being processed to < 5
      ... snip ...

      async_pool {
         while( my $line = <$fh> ) {
             do_furl_stuff( $line );
         }
      };
    }

で、まぁ多分async_poolしてるから、async_pool内でがっつり確保したメモリを解放してないとか、そういう理由な気がするんだけど。でもasyncしてた時も同じ症状だったし・・・まぁともかくなにかあるんだろうけど、それをデバッグしてる時間がなかった。それにそのメモリ部分以外はちゃんと動いてるし!

ってことでどうせ一回しか動かさないスクリプトなので、こんな形でざっくりとワークアラウンドした。これだとメモリを食う"realscript.pl"は5ファイル処理した後終了するので、少なくとも一定時間で入れ替わる。

    my @files = glob( "data/*.txt" );
    while ( @files ) {
         my @args = splice @files, 0, 5;
         system "realscript.pl", @args;
    }
というわけで本日の教訓は「メモリがないなら定期的に世代交代すればいいじゃない!」でした。本当の教訓は「Coroとか使うときはきちんとメモリの管理を考えようね!」だけど、TPOによってはこれもありかなー(と、お茶を濁す)。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

このページのトップヘ