タグ

ブックマーク / bayashi.net (5)

  • Perlでテストがこけて泣きそうなときのTIPS

    Perl 書いてりゃ Test::More でテスト書きまくると思うのですが、Test::More っていうか、まあ別に Test::More だけがそうというわけでもないのですが、テストこけたときのケアが十分じゃないなと思うときがけっこうあります。 開発過程で書いてるコードというのは、いつもいつも確信を持って書いているわけではないわけで、それでなくてもうっかり間違うときもあり、せっかくテスト書いているのに何だかよくわからない理由でこけてパスできなくて時間を浪費してしまったりが日常になってたりしませんか? そういうのを繰り返しているとやがてテスト嫌いになりテスト書かなくなって番コードにデバッグコードが入り乱れ、リファクタもどんどん不可能になって小回り効かないままプロジェクトが失敗して彼女に振られてしまうわけですね。困ります。 note diag explain Test::More には

    Perlでテストがこけて泣きそうなときのTIPS
  • daemontools

    インストール 環境はCentOS5.5 RPMソース持ってきて入れる。 sudo su; mkdir work; cd work; wget -nd http://www.qmailtoaster.com/download/stable/daemontools-toaster-0.76-1.3.6.src.rpm rpmbuild --rebuild daemontools-toaster-0.76-1.3.6.src.rpm mv /usr/src/redhat/RPMS/i386/daemontools-toaster-0.76-1.3.6.i386.rpm ./ rpm -Uvh daemontools-toaster-0.76-1.3.6.i386.rpm init.d にコントロールスクリプトを仕込む。 wget -nd http://www.emaillab.org/djb/d

    daemontools
    hiroyukim
    hiroyukim 2013/06/20
  • さくっと Perl のメトリクスを取得する

    ローカルにあるやつもリモートにあるやつも、ファイルごとでもディレクトリ内まとめてでも、よしなにサクッと Perl コードのメトリクスを取得したかったので書きました。 App::plmetrics cpanm App::plmetrics App::plmetrics をインストールすると、plmetrics コマンドが使えるようになります。 Perl::Metrics::Lite に同梱されている measureperl はローカルファイルまたはディレクトリを対象に解析を行いますが、plmetrics はローカルのものだけでなく、リモートの git リポジトリや tar.gz を対象に解析することが可能です。 plmetrics モジュール名で解析。--module $ plmetrics --module Test::AllModules /usr/lib/perl5/site_perl

    さくっと Perl のメトリクスを取得する
    hiroyukim
    hiroyukim 2013/06/16
  • CoW 要点まとめ

    CoW とは CoW = Copy-On-Write [ CoW - Wikipedia ] プロセスのコピーを作成 (fork) するとき、書き換えることのないメモリページは、両方のプロセス(元のプロセスと生成されたプロセス)で共用し、書き換える可能性のあるメモリページは、新たなメモリページを割り当ててコピーを作成する 鉄則 fork するプロセスを生成する場合、親子間でメモリ共有した方が良い forkする前に確保したメモリ領域は子プロセスとの間で共有される 共有されたメモリ領域に対して書き込みを行うと共有は解除(コピー)される forkした後に確保したメモリ領域は子プロセスごとに確保される(共有されない) どのプロセスでも同じように参照するだけの(書き換えない)データは、fork前に確保して共有した方が全体でのメモリ使用量を小さく保てる。つまり、fork 数を多くしたりできる。そして、

    CoW 要点まとめ
    hiroyukim
    hiroyukim 2013/05/23
    fork先でオブジェクトキャッシュ等を使用するとCow率が下がって個々のworkderのメモリ占有率があがり結果としてworker数を下げる必要性が生じるかも。
  • Plack アプリのプロファイリング by Devel::NYTProf

    特に、Plack アプリに限定する話でもない部分は多々ありますが、Plack アプリを Devel::NYTProf でプロファイリングする方法について。 シングルプロセスの場合 plackup -MDevel::NYTProf 開発環境で plackup する場合など、シングルプロセスで起動する Plack アプリでプロファイルを取得するには、以下のように実行します。 NYTPROF="sigexit=int" plackup -MDevel::NYTProf -e 'sub { [200, [], ["ok $$"]] }' 通常なら、-d:NYTProf とするところを、-MDevel::NYTProf としていますが、動作は同じです。 環境変数 NYTPROF に設定している sigexit=int は、ワンライナーの実行を Ctrl + C で止めたときに、profiling

    Plack アプリのプロファイリング by Devel::NYTProf
    hiroyukim
    hiroyukim 2013/03/05
  • 1