この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。
xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法やインストールメモやXREA + tDiary + Namazuをどうぞ。
undefineduniversityuponustream の日だった。 メールを誤読していて、10日かと勘違いしていたが、今日だった。
今回は YouTube の再生環境として、 live-helper で作成した netboot の lenny を使用した。
live-helper での作成方法として、 2010-01-19 の sid で「lh config --mirror-bootstrap "http://apt.example.jp:9999/debian" --mirror-chroot "http://apt.example.jp:9999/debian" --mirror-binary "http://apt.example.jp:9999/debian" --mirror-chroot-security "http://apt.example.jp:9999/security" --mirror-binary-security "http://apt.example.jp:9999/security" -a i386 --binary-images net -d lenny --hostname debian-live-nfs -l ja --archive-areas "main" --net-root-path "/srv/nfs/debian-live" --net-root-server 192.168.0.46 --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106 timezone=Asia/Tokyo utc=no" -k 686 -p lxde --packages "lv ttf-vlgothic epdfview curl uim uim-anthy bash-completion"」という感じのオプションを指定してビルドした。 lenny の live-helper と違って squeeze に入る予定の live-helper では、コマンドが lh_config などから lh に統合されている。
できたファイルを /var/lib/tftpboot/debian-live/i386/ 以下と /srv/nfs/debian-live に置いた。 flash player はライセンスの問題がありそうなので、起動後にインストールするためのシェルスクリプトを用意しておくことにした。
% ls /var/lib/tftpboot/debian-live/i386 boot-screens/ memtest vmlinuz-2.6.26-2-486 initrd.img-2.6.24-26-generic pxelinux.0* vmlinuz-2.6.26-2-686 initrd.img-2.6.26-2-486 pxelinux.cfg/ initrd.img-2.6.26-2-686 vmlinuz-2.6.24-26-generic % ls /srv/nfs/debian-live doc/ install-libflashplayer.sh* live/ md5sum.txt % cat /srv/nfs/debian-live/install-libflashplayer.sh #!/bin/sh wget -N http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.tar.gz mkdir -p $HOME/.mozilla/plugins tar xf install_flash_player_10_linux.tar.gz mv libflashplayer.so $HOME/.mozilla/plugins %
dhcpd.conf では以下のような感じで設定した。
host mebius {
hardware ethernet 08:00:1f:XX:XX:XX;
fixed-address 192.168.0.110;
next-server 192.168.0.4;
}
/etc/exports では以下のように設定した。
/srv/nfs/debian-live *(ro,sync,no_subtree_check,no_root_squash)
後からまとめたので抜けがあるかもしれないが、以上のような感じで起動した環境を使った。
http://redmine.ruby-lang.org/issues/show/2965 をみて試そうと思って「ruby-trunk bin/termtter」としてみたら、「Could not find RubyGem rubytter (>= 0.11.0) (Gem::LoadError)」と出たのであきらめた。rubytter の gem を入れればいいんだろうけど、ruby-trunk の環境は出来るだけ gem を入れていないので。 何か設定ファイルを用意しないとこけるかと思ったらそれ以前の問題だったという話でした。
原因を調べてみるとgcov.logに「.../amalgalite-0.12.0/lib/amalgalite/statement.rb:303:in `next_row': Amalgalite::SQLite3::Error: SQLITE ERROR 5 (BUSY) : database is locked (Sequel::DatabaseError)」と出ていた。
何かプロセスが残っているのではないかと言われて調べてみると「git --git-dir /home/chkbuild/concov-data/source.db/git --work-t ree /home/chkbuild/concov-data/source.db/work rm -r --cached .」が標準エラー出力への出力の write システムコールで止まっていて、その親プロセスの「.../ruby-1.9.1-p378/bin/ruby /home/concov/concov/bin/concov -c /home/concov/concov/concov.conf register -d 20100313 /home/chkbuild/build/ruby-trunk-coverage/20100313T000000」が止まっていて、git を kill すると処理が進んでこの日のデータは登録が出来たように見える。 数日分抜けるけど、仕方がないのであきらめることに。
http://d.hatena.ne.jp/ku-ma-me/20090729/p1 のupdate.rb は reopen した $stdout と $stderr を戻していないという問題があるのがわかったので、その周りを以下のように修正して、update.rb も ruby 1.9.1 で動かすようにした。
# build ディレクトリで gcov を走らせ、.gcov ファイルを生成する
pwd = File.join(build_dir, "ruby")
open(File.join(pwd, "gcov.log"), "w") do |log|
Dir.chdir(pwd)
Dir.glob("**/*.gcda") do |path|
dir, path = path[/\Aenc/] ? [".", path] : File.split(path)
Dir.chdir(File.join(pwd, dir))
pid = Process.spawn("gcov", "-l", "-p", "-o", File.dirname(path), path, :out => log, :err => log)
Process.waitpid(pid)
end
end
update.rb を動かすのに ~/.rvm/bin/ruby-1.9.1-p378 を使っていたら、中身が bash スクリプトで PATH に ~/.rvm/rubies/ruby-1.9.1-p378/bin も足されてしまっていて、concov 用パッチをあてた chkbuild も ruby 1.9.1 で動いていて、途中で止まってしまっていた。 勝手に環境変数を設定している rvm もひどいけど、concov 用パッチをあてた chkbuild が ruby 1.9 で動かないのも問題がありそう。
結局 ~/.rvm/bin/ruby-1.9.1-p378 ではなく ~/.rvm/rubies/ruby-1.9.1-p378/bin/ruby で update.rb を動かせば問題なく動いた。
Rubyist Magazine 0029 号 がリリースされました。 公開されてから ruby-list にアナウンスが流れるまでに時間がかかっていたので、正式にリリースされる前に見えてしまっていましたが、 ruby-list にリリースアナウンスが流れた時点で正式リリースと言うことになっているようです。
今号は久しぶりに標準添付ライブラリ紹介を書きました。 tmpdir, tempfile についてです。 1.8.7 で Dir.mktmpdir が増えていたり Tempfile の方は拡張子を指定できるようになっていたりなど便利になっているので、すでに使っている人も新しい機能をチェックしてみると良いのではないでしょうか。
使用例では 1.8 でも動く (代わりに fork がない環境で使えない) fork と exec を使っていますが、ruby 1.9 以降のみなら concov の update.rb のように Process.spawn と組み合わせる方がよさそうです。
以下の環境の組み合わせでファイルがダウンロードできなくてパッケージのインストールに失敗するという現象が起きた。
config/chroot_local-hooks/ のシェルスクリプトに env を入れて確認してみると以下のように空文字列の http_proxy が設定されているのが原因とわかった。
HOME=/root http_proxy= TERM=screen DEBIAN_PRIORITY=critical PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ftp_proxy= DEBIAN_FRONTEND=noninteractive PWD=/ DEBCONF_NOWARNINGS=yes XORG_CONFIG=custom
空文字列の http_proxy 環境で他のものはどうなるかいくつかのプログラムで試してみたところ、以下のように試した範囲ではすべて無視されていた。
久しぶりに参加したかもしれない。 spawnの使用例とか、ActiveScaffold の使用例は参考になったし、WebCam の発表に間に合わなかった AR のデバッグは見ていておもしろかった。 Ruby 初級者向けレッスンの時間はがんばってるりまの更新をしてみようとしたが、NetWalker しか持って行っていなかったこともあって、多少更新は出来たけど、最後のコミットまで出来なくて、後からコミットした。
ヨドバシ梅田で17時に入荷と書いてあったので、その少し後ぐらいに行ってみたら余裕で買えた。
トルミルを有効にするには torne の方に行く前にいちいちサインインしておかないといけないとか、 http://www.jp.playstation.com/support/torne/ のソフトウェア解説書の29ページにある「カーソルを移動する(1日単位)」がワイヤレスコントローラとPSPにしかなくて、BDリモコンだと出来ないとか、いくつかはまりどころはあったけど、見て消すだけの使い方なら便利そうな感じ。
他のHDDレコーダとかで録画したときには出せない字幕も残ってるのがいいかもしれない。