〜2004年11月下旬〜
思いつき。たとえばmsvcrt.dllからmsvcr71.dllへのforwarding DLLを作ればmsvcrt.dll用に作られた拡張ライブラリは救済できるのか?
% gcc -E -P -xc-header msvcrt.def.in |\ sed '/^\(EXPORT\|^;\)/!s/\([^ ]*\)/\1=msvcr71.\1/' >msvcrt-fwd.def % i686-pc-cygwin-dllwrap --driver-name=i686-pc-cygwin-gcc -mno-cygwin \ --target=i386-mingw32 --def=msvcrt-fwd.def \ --dlltool-name=i686-pc-cygwin-dlltool -o msvcrt.dll
てな感じで。でも、
% i686-pc-cygwin-objdump -p msvcrt.dll |grep 'DLL Name' DLL Name: KERNEL32.dll DLL Name: msvcrt.dll
という結果を見ると、ここでも specs.msvcr71は必要な気もする。 今日は時間切れ。
msvcrt.def.inはmingw-runtime-3.5-1-src.tar.bz2の中にある。 ミラーサイトを参照。
最近ForecastFoxでLight Rain Showerとか表示されてるのを見て雨に気づくことが多い。 今日なんかは特に雨が降るとは思ってなかっただけに、間違っているとばかり。
forwarding DLLを試しみた。全然だめっぽい。こりゃ一本取られたね。
Changes:
This release fixes a couple of minor bugs. One is associated with the use of IPv6 on Linux, and the other with multiple ranges of addresses for DHCP allocation on a single subnet. There's no reason to upgrade unless you've hit either of these bugs.
遅延が全然解消されない。むしろ悪くなってる。何を改善したのか?
恐るべしあるある効果。
-yオプションなんてあったのか。
-y --yydebug Turns on compiler debug mode. Ruby will print a bunch of internal state messages during compiling scripts. You don't have to specify this switch, unless you are going to debug the Ruby interpreter.
CVS 1.11から1.12へバージョンアップするときに注意しないといけないのが、loginfoの引数の扱い。
% tail -1 loginfo DEFAULT echo %s >> $CVSROOT/CVSROOT/commitlog
という内容のloginfoを用意して実際にcommitしてみるとわかる。
% tail -2 $CVSROOT/CVSROOT/commitlog CVSROOT loginfo loginfo
上が1.11で下が1.12での結果。 1.11ではmoduleに相当するものがあるが1.12にはない。 その代わり
%p = path relative to repository %r = repository (path portion of $CVSROOT)
が使える。さらに%{sVv}とした場合はカンマ区切りかどうかという違いもある。
% tail -2 $CVSROOT/CVSROOT/commitlog CVSROOT loginfo,1.24,1.25 commitinfo,1.3,1.4 loginfo 1.25 1.26 commitinfo 1.4 1.5
Rubyの場合は単に%sとして使っているので、スクリプトの中でmoduleが取り出せればいい。 天泣記 に書かれてるように
そっか。Update of ... のにところには %r/%p が書いてあって、環境変数 CVSROOT には %r が入っているから、その差から %p 相当の情報が得られるではないか。
ということらしいので、loginfo_ruby.rbを確認してみると
case l when /^Update of (.*)/ modulename = $1.strip.sub(/^#{Regexp.quote($cvsroot)}\//, "") append_line($modulesfile, modulename) next
のようにそれらしいことはやってる。 でもその前に
$cvsroot, $cvsuser, $cvsarg, $mailaddr = ARGV.slice!(0, 4) ... cvsargtk = $cvsarg.split(/ /) modulename = cvsargtk.shift
のように引数を処理するコードもあって一筋縄ではいかないようだ。 Update ofの処理を前に移動できるか?
古いままだったので上げてみた。
% cpan Mail::SpamAssassin
と実行して、適当にリターンキーを押してればインストール完。
% spamassassin --lint
してみるとなんかfailed to parse lineが結構多い。 report_headerもREADMEを見ると
The "report_header" and "defang_mime" options are also deprecated as a result. Read the docs for "report_safe" for details.
ということらしい。しかも2.4での変更だよこりゃ。 user_prefsを見直さないといけないな。
body IMAGE_JPEG /^\337\330/ describe IMAGE_JPEG Image file score IMAGE_JPEG 5
というのを入れてみたが、うまくヒットしないようだ。 なかなか難しい。
6個目のchannelへjoinしたのでF6で切り替えようと思ったが、なかなかうまくいかない。
assign fk.11 parse window swap 1 assign fk.12 parse window swap 2 assign fk.13 parse window swap 3 assign fk.14 parse window swap 4 assign fk.15 parse window swap 5
がF1からF5の設定だから、F6は当然
assign fk.16 parse window swap 6
になると思うよね、ふつうは。ところが正解は
assign fk.17 parse window swap 6
なのだ。ここからなぜか1個ずれる。
ソフマップから発送したよとメールが来た。間違って明日配送されたらちょっとだけうれしいんだけど。
Changes:
This release fixes a few minor memory leaks, tries to support ucs16 strings, and adds FreeBSD version parsing code. There were also modifications to the file magic, most notably for MPEG animations. Furthermore, the copyright clauses were slightly changed.
誰かがどこかで動かしていたらしいんだが、それをこっちに振られても困る。 chroot環境だからもうこれ以上perlとかsendmailを入れたくないし。 といいつつもRubyで書くかと思ったり、Ruby Quizにでもしてくれとか。
link: Adding Projects - CIA
ドラクエ三昧。しかし変わらないねえ。ソフトリセットできないのはつらいけど。
それにしても、他人の家のタンスや宝箱を開けたり壷や樽を壊したり、とても勇者のとる行動ではないな。 そのあたりの挙動がリアルに表現されるようになってかえって気になる。
ええと、どこで見たか忘れたけど入れてみた。 とりあえずプレーヤとして xmmsを選ぶ。 ちゃんとCharacter Encodingに日本語(Shift_JIS)も用意されてる。 ステータスラインに化けずに表示される。すばらしい。
FoxyTunesのプレーヤの選択枝にあった Music Player Daemonが気になったので、これも入れてみた。
まずは libaoが古かったので0.8.5へ更新。 あとは普通にインストール。設定は~/.mpdconfに
port "6600" music_directory "~/mp3" playlist_directory "~/mp3/playlists" log_file "~/mp3/mpd.log" error_file "~/mp3/mpd.err" mixer_type "oss" mixer_device "/dev/mixer" mixer_control "PCM" ao_driver "oss" ao_driver_options "dsp=/dev/dsp" audio_output_format "48000:16:2"
と書いた。これでmpdと実行するだけでdaemonを起動できる。 最初の一回だけは~/mp3/配下の音楽ファイルを全部なめてデータベースを作るので時間がかかるが、二回目以降は瞬時に立ち上がる。 逆に言うと後から音楽ファイルを追加しても認識してくれないので、
% mpd --update-db
のようにデータベースを更新する必要がある。
ついでにncurses clientの ncmpcをインストールして確認。 glibが2.3.6と古かったため、こちらは日本語が化けてしまうようだが、 ちゃんとプレーヤとして機能した。もちろん肝心のFoxyTunesは日本語もok。
configure時に
configure: WARNING: glib-2.4 is required for NLS support!
という警告が出てたのでglib 2.4ならちゃんと日本語も出そう。 明日試してみよう。
古田が三段というのはまあいいとして、長嶋が五段というのは意外だ。 なんかいきなり怪しい段位に思えてくるから不思議だ。
さっそくmake。いわゆる--enable-shared相当で。
% ./configure.gnu -Dccflags=-DDEBUGGING \ -Dusedl=true -Duseshrplib=true % LD_RUN_PATH=/usr/local/lib/perl5/5.8.6/i686-linux/CORE make
うーむなぜかmake testでforkが失敗する。いちおう
% export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; cd t; ./perl harness
は全部通ったからよしとしよう。
なぜか今日は mpdが立ち上がらない。 mpd.errを見ると
error parsing state file "/home/watanabe/mp3/playlists/mpdstate"
とあった。実は あれから
state_file "~/mp3/playlists/mpdstate"
を追加していたんだけど、こうすることで
state_file <file> This specifies if a state file is used and where it is located. The file path should be an absolute path. The state of mpd will be saved to this file when mpd is terminated by a TERM signal or by the "kill" command.
のようにSIGTERMを送ればそのときの状態を保存できるようになる。
で、実際にmpdstateを確認してみるとplaylist_beginはあるが、 最後にplaylist_endがない。 /etc/rc.d/rc.6でkillall5 -15してるからちょうどいいやと思っていたが、 どうやら保存処理が間に合わないこともあるようだ。 shutdownの前に明示的にkillall mpdしよう。