〜2001年10月下旬〜
checking the maximum length of command line arguments...
と表示したきり長い時間が掛かる。メッセージの通りのチェックをしてるわけだが、 実際の処理はこんな感じで再帰的に自分自身を呼ぶようになっている。
if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<EOF $* EOF exit 0 fi i=0 testring="ABCD" # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while test "X"`$CONFIG_SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \ = "XX$testring" && new_result=`expr "X$testring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` testring=$testring$testring done testring= # add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. 1/4 # should be good. len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len - $len`
testringが倍倍で増えていくので、いつかE2BIGになる。
家の環境だとそれほど時間が掛からない。 家はbash 2.05のstatic link、会社はPlamo 2.2そのままのbash 2.04。 家のbash 2.04でも遅いのでやはり2.04が原因か?
$ time hoge $(ruby -e 'puts "a"*1024*8') bash: hoge: command not found real 0m1.451s user 0m1.400s sys 0m0.050s $ time hoge $(ruby -e 'puts "a"*1024*16') bash: hoge: command not found real 0m6.074s user 0m5.970s sys 0m0.080s $ time hoge $(ruby -e 'puts "a"*1024*32') bash: hoge: command not found real 0m25.440s user 0m25.370s sys 0m0.050s $ time hoge $(ruby -e 'puts "a"*1024*64') bash: hoge: command not found real 1m39.601s user 1m39.480s sys 0m0.110s $ time hoge $(ruby -e 'puts "a"*1024*128') bash: hoge: command not found real 6m27.637s user 6m27.540s sys 0m0.070s
見事なまでにコマンドラインのバイト数の2乗にほぼ比例してる。 2.05だと一瞬だ。
$ time hoge $(ruby -e 'puts "a"*1024*128') bash: hoge: command not found real 0m0.631s user 0m0.510s sys 0m0.120s
Mean Machine AyumiでGoogleしてみるとやはり「スワロウテイル」の伊藤歩らしい。
吉澤安倍後藤のユニットかと思った。
qmailでPOPもAPOPもIMAPも使いたいので、UW-IMAPDてんこもり拡張パックを入れた。 で、なぜかユーザからメールが0通のままだと苦情がくる。
# ls /home/*/Maildir/new
するとそれなりにスプールされてるし、何が原因かさっぱりわからない。 しかも俺だけはPOPで読めたりする。 なにが違うのかいろいろ探ってみると、俺だけ~/.qmailがある。 これか。ダミーユーザを作って試すとやっぱそうだ。うーむ。
~/.qmailがないときのデフォルト Maildir ~/Maildir
って書いてあるんだけどなあ。なぜに?
# cd /home # for i in *; do su $i -c 'echo ./Maildir/ >> $HOME/.qmail'; done
としたら、ばんばんメール読めるようになったって。めでたしめでたし。 あ、C-x *してftpとwatanabeは外したのでそこんとこよろしく。
21.1がemacs 21の正式リリースになるのか? たしかに今までが21.0.xだったから、21.0にするわけにはいかないよねえ。 会社のも21.0.105から21.1へ更新。
NISの設定もとりあえずできて、home directoryがautomountで共有できるようになった。 が、突然Solaris 2.5でshが動かなくなる。
% sh couldn't set locale correctly sh: -1: bad number
てな感じだ。localeは
% echo $LANG ja_JP.eucJP
がいけないのはすぐわかった。 OSTYPEかなにかを見て判断すればよさそう。
% LANG=ja % sh sh: -1: bad number
一個減った。この-1は一体どこからくるんだ?環境変数か?
% env - sh $ exit %
そうみたいだ。じゃgrepしてみよう。
% env |grep -e -1 MAILCHECK=-1
MAILCHECKか。適当に-1で実験してたのを忘れてた。
% unset MAILCHECK % sh $ exit %
なるほどね。それにしてもその程度でshも死ななくてもいいじゃん。
お約束なので入れた。 というか実は昨日2.4.12-ac5を入れたばかりだったりするのだが。
2ヶ月毎に出すという例の約束をきっちり守っているね。
さっそくgcc 3.0.2でmakeしたら2時間半かかった。
% time make oldconfig dep clean bzImage modules ... 7144.81s user 1275.32s system 93% cpu 2:29:54.49 total
もう出てるよ。
% time make oldconfig dep clean bzImage modules ... 5545.09s user 903.97s system 93% cpu 1:54:23.40 total
あれ?なぜそんなに違う? 違いと言えばac1自体は2.4.13のオリジナルのカーネル上で、 ac2はac1のカーネル上でmakeしてる。 acで採用されてるVMのほうが速いってことか?
爆発してるなあ。
imap-2001.RC1-qmav.4を調べてみると、
--- src/osdep/unix/maildir.c.orig Wed Oct 3 10:23:24 2001 +++ src/osdep/unix/maildir.c Sat Oct 27 23:52:09 2001 @@ -357,3 +357,3 @@ if (*maildir == '/') { - snprintf (dst,MAILTMPLEN,"%scur",maildir); + snprintf (dst,MAILTMPLEN,"%s/cur",maildir); } else {
が、正解だと思う。maildir.hでは
#define MAILDIRPATH "Maildir"
となってて、それがmaildirに入り、最終的にdstは
/home/watanabe/Maildircur
という感じになってしまう。 qmail的にはMAILDIRPATHを"Maildir/"とするのもありだと思うが。
結局youbindに手を入れることにした。 これ がパッチ。 強制的にEMPTYにする命令を追加して、定期的なspool_check()をやめた。 do_Emptyはdo_Updateをそのままコピーし、up->sizeとup->timeを0にしただけ。 で、 先日のスクリプト と組み合わせて、 たとえば
sendto youbindが動いてるホスト biff "EMPT 0 $USER"
を実行すればyoubindから各クライアントへ"STAT 0 0"が届き、 めでたく旗が寝ることになる。
先日のスクリプトの副産物として、 /var/spool/mail/watanabeのサイズを見ると受け取ったメールの総数がわかるようになった。 crontabで1/1の00:00にリセットしよう。
youbindに手を入れてしまったんだから、biffの中身もちゃんと解析しようかな。
offset@watanabe:/var/spool/mail/watanabe
という感じで来るので、procmailで場所を変えればいいはずだ。 /var/spool/mail/を使うのはやはり抵抗がある。
ひょっとしてcompilercacheが原因かと思いPATHから外してみる。
% time make oldconfig dep clean bzImage modules ... 4212.13s user 425.59s system 95% cpu 1:20:58.53 total
え、そんなに速いの?うーむ。 同じバージョンのカーネルを何度もmakeするときは効くんだろうけど、 -acとかは結局cppしても結果がまったく同じにはならないんだろう。 というわけでruby binariesをmakeするときだけcompilercacheを使うようにしよう
PPxPを新しくしたら動かなくなってしまった。 結局0.99120923に戻したわけだが、 それにしても、なぜtap1になってしまうんだろう?
なるほど。もうethertapは要らないわけか。でも
% ppxp SysIfOpen: No such device % ppxp PPxP version 2001080415 interface: tun0 ppxp> quit
と一回目だけ失敗する。OS/Linux/netif.cでDEBUG_IFをdefineしてみると、 DummyIoctl("tun")でloadできて二回目からは大丈夫という感じだ。 ということはmoduleにしなければうまくいくんだろうか? こんな感じ にすると一回で成功する。
-ac4を試す暇もなく-ac5だ。 CONFIG_NETLINKをnにしてCONFIG_TUNをmにした。
mingw32ではなぜかmatherr()がないんですよね。 というわけでtcltklib.cはこうなってます。
#if !defined __MINGW32__ /* * The following variable is a special hack that is needed in order for * Sun shared libraries to be used for Tcl. */ extern int matherr(); int *tclDummyMathPtr = (int *) matherr; #endif
mswin32版tcltklib.soだとmatherrがundefinedになるんだと思います。 適当にreturn 0;だけのmatherr()を用意すべきかなあ。
更新。
mailboxがあふれてるらしいです。と今頃書いても遅いか。 旅行中?
いきなりRe:をつけてくるspamが最近の流行りか? たしかにRe:があれば無条件によしとするfilterはありがちだ。 いかにも商談相手と間違えてMLへ送ってしまったという振りをする手口もあった。 たぶん気づかない人のほうが多いと思う。凝り過ぎ。
10月のspamは全部で35通。 今月は韓国からのspamが多かった。ってどうせなら読める人を選んでから送ってくれ。