You are currently browsing the archives for the category: tech

March 1, 2008

.forward and procmail

forwardとprocmail関係で少しもめた(?)のでメモ。 “|IFS=’ ‘ && exec /usr/bin/procmail -Yf- || exit 75 #username” “|exec /usr/bin/mailfilter | /usr/bin/procmail -Yf- || exit 75” などなどの違いと意味について。以下、smtpdの中身の議論の際は、postfixのみを想定。 1. IFSって何 IFS = Internal Field Separatorの略 bashなどのシェルでの引数展開の際の参照変数(環境変数?)となる。で、変更するとセキュリティー問題を引き起こす、という警告をどこかのマニュアルで見たような。 2. そもそも||とか&&って何 || : 前のコマンドの終了ステータスが0でない(異常終了)のときに実行 && : 前のコマンドの終了ステータスが0のときに実行 ということで、普通のシェルを実行するときのと同じですな。どちみち、forwardを解釈するlocalは、global/pipe_commandに投げるので、fork/execするだけだったりしますが。場所としてはlocal/deliver_command()関数。 3. exit 75は? posix shellでのexitステータスコード75は、EX_TEMPFAILで、一時エラーを意味する。まぁ、もう一度実行したら成功するかもねぇ~、と、呼び出しもとのコマンドにいう、という感じ。 /usr/include/sysexits.h:#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */ localでは、投げつけたコマンドからの戻り値などは、global/pipe_commandの最後でPIPE_STAT_*になったものを受け取って判断する、ので、終了ステータスがどう反映されるかは、ここを見る必要がある。 […]

more...
February 21, 2008

Perlパフォーマンス測定

LpSolitがBugzilla->loginのボトルネック測定に-DPref使ってるけど何かいいのない?とかぼやいてたので、Devel::Profilerとか、Benchmarkとかを提案してみる。Benchmarkのほうは、スクリプト全体を突っ込めない(もしくは、shebangに突っ込めない)ので却下だったらしいけど。 LpSolit> “NOTE: If Devel::DProf works for your application then there is no reason to use this module.” LpSolit> taken from the Devel::Profiler docs :) himorin> heh :) LpSolit> oh, I like the bad_pkgs argument LpSolit> very useful to ignore DBI and Template とかゆってたので満足したんでしょう。 もともとは、DPrefだと出力ファイルがtmon.proに固定されているのが不満で、CGI経由で実行毎に違うファイル名で吐いてほしかったらしい。その機能は使ったことはあったので知ってたけど、bad_pkgsとかまではperldocを読んでなかったので、そのうち一度ザーッと見てみることにする。

more...