とつぜん余裕ができると何をしていいかわからなくなる。 とりあえず ruby 1.8.2 のテストでもやってみよう。
うむ。868 tests, 9000 assertions, 3 failures, 36 errors と来たか。 起きてるのは全部 dRuby だな。 エラーには二種類あって、一つめは ECONNRESET になるやつ。
1) Failure: test_03(TestDRbSSLCore) [/usr/users/aamine/src/ruby-1.8.2/test/drb/drbtest.rb:126]: <ArgumentError> exception expected but was Class: <Errno::ECONNRESET> Message: <"Connection reset by peer"> ---Backtrace--- /usr/local/pkg/ruby-1.8.2-p2/lib/ruby/1.8/drb/drb.rb:878:in `close' /usr/local/pkg/ruby-1.8.2-p2/lib/ruby/1.8/drb/drb.rb:878:in `close' /usr/local/pkg/ruby-1.8.2-p2/lib/ruby/1.8/drb/ssl.rb:170:in `close' /usr/local/pkg/ruby-1.8.2-p2/lib/ruby/1.8/drb/drb.rb:1108:in `close' /usr/local/pkg/ruby-1.8.2-p2/lib/ruby/1.8/drb/drb.rb:1090:in `open' /usr/local/pkg/ruby-1.8.2-p2/lib/ruby/1.8/drb/drb.rb:1014:in `method_missing' /usr/users/aamine/src/ruby-1.8.2/test/drb/drbtest.rb:127:in `test_03' /usr/users/aamine/src/ruby-1.8.2/test/drb/drbtest.rb:126:in `assert_raise' /usr/users/aamine/src/ruby-1.8.2/test/drb/drbtest.rb:126:in `test_03' ---------------
もう一種類は nil になってる。
5) Error: test_08_here(TestDRbSSLCore): NoMethodError: undefined method `stop_service' for nil:NilClass /usr/users/aamine/src/ruby-1.8.2/test/drb/drbtest.rb:66:in `teardown'
エラーが起きてるクラスは SSLCore、Safe1、UNIXAry、UNIXCore、DRbYield と幅が広く何が何やらわからない。 そのうえ、バラバラにテストを実行すると数が減る。なんだそれは。
うーむ。どうも SSL 関係が怪しい。OpenSSL が古かったりするのかなあ。 その影響で dRuby + SSL が失敗し、 ついでに UNIXSocket 関係が落ちてると考えると全体に筋が通る。 このへんをさらに調べてみることにしよう。
(19:54)
makerss プラグインを入れようとして tDiary 関連コンポーネントの連鎖アップデートにはまる。
(20:53)
(追記) 完了。output_rdf から makerss にした。
digital PersonalWorkstation 600au が不調。 久しぶりに起動したらなぜか ARC になってる。 この時点で何かおかしい。
時刻がリセットされてる。 この時点で明らかにおかしい。
OS が認識されてない。これはまあ理解できる。 ext2fs しかないから ARC には見えないだろうな。
ARC がモデルナンバーを 600a と認識している。 これも……まあ、ARC だからだろう。
ファームウェアを SRM に切り替えられなくない。これはすごく困る。 たぶん、600a と認識されてしまった余波だな。
ていうか、ブートできねえじゃねえか。
ちょうどいいので、ファームウェアの更新を試みる。 Tru64UNIX 5.1B についてきたファームウェアの更新ディスクのでよさそうだ。
ファームウェア更新中、今度はモデルが 433au と認識されたものの 書き換えは成功した。状況には変化なし。やっぱだめか。
うーむ……、状況から類推するに CMOS バッテリが死んでるのかなあ。 だけどそれだけでこんな妙な事態になるだろうか。 なるかもしれないなあ。とりあえず電池を換えてみよう。
(21:52)
SRM に切り替えられなくなったというのは嘘だった。 "CMOS Setup" → (F6) で Advanced CMOS Setting というのが出てくるので、 そこで "Console Selection: UNIX Console (SRM)" を選べばいい。 ずいぶん奥まったところに置くよなあ……。
で、それとは別にやっぱり電池が切れてるっぽいので、 電池を交換した。バッテリーは BR2032 (3V リチウム電池)。
それにつけても、ケーブルを一切抜き差しせずに ロジックボードを引き抜ける dpw の匡体は凄い。
(04:08)
そんなわけで dpw600au のために BR2032 を探しに行ったのだが、 深夜のコンビニにあったのは CR2032 だけだった。 リチウムで 3V でボタン型という点では全く同じに見えるので、 とりあえず CR2032 を買ってみた。
BR と CR の違いは何なんだろう。 意外に BR 電池の情報は少なかったが、電池屋さんで情報を発見した。 やはり餅は餅屋か。
http://www.asahi-battery.co.jp/
ここの情報によると、CR 系と BR 系の違いは自己放電の量のようだ。 BR 系のほうが 「自己放電が小さく長期の保存にも安定した特性を示すため、 低負荷でのバックアップ用途に特に適してい」るという。 なるほどね。納得がいった。
つまり、性質として向いてるか向いてないかがあるだけで、 BR の代わりに CR を使っても特にヤバいことは起こらないようだな。 とりあえず CR2032 を入れておこう。
(04:09)
うー、だめだ、なかなかテンポが戻らない。
えーと、とりあえず CVS アカウントをもらわないとコミットできないな。 GPG の操作は初めてだからどうもよくわからん。
まずは中田さんがパッチを書いてくれた [ruby-talk:101077] から見よう。 ディレクトリをそのまま (a/* を b/* に) コピーしたいのか。 cp -r a b で b/a ができるのは cp(1) に合わせた仕様なのでしょーがない。
ああそうか、中田さんのパッチはこれを a/* → b/* にするパッチなのか……。 これは仕様が変わっちゃうからちょっと無理だなあ。
それより glob を使ってるほうがエラーになってるのが気になる。 これはいったいどういう状況で起きてるんだ。
うーむ、手元だと何も起きない。困ったな。 何なんだろう。シンボリックリンクかなあ。
うわあ、シンボリックリンクがコピーされてないよ! というか dereference されてるよ! これはまずいな。新たなバグと認定。 とりあえずテストだけ書いておこう。
そんでエラーは何なんだろうなあ。 ……あ、そうか、やっぱりシンボリックリンクか。 存在しないファイルを指すシンボリックリンクがあるとエラーになるんだ。 それじゃあさっきのバグを直せば自動的に直るってことだな。
(18:27)
でも dereference できないとそれはそれで不便かなあ。 うーん…… cp(1) にもそういうオプションはないのか。じゃあいいや。
シンボリックリンク以外はどうだろう。 GNU の cp -R だとデバイスファイルとか FIFO はファイル自体をコピーするんだよな。 デバイスファイルの中身をコピーしたいってことはそうそうなさそうだし、 cp_r を cp -R 相当にしたほうが安全か。 よし、そうしよう。
(18:49)
あれえ、mknod ってないんだっけ?
ありゃ、mkfifo もない?
そうか、それで実装してなかったのか。 あ、[ruby-talk:91735] で中田さんがすでにパッチを出している。さすがだ。
うむむ、どうしようかな。 とりあえず外形だけ用意しておいて、 スキップするか……いや例外のほうがマシだ。
(20:11)
想像以上に大きい変更になった。 きっと根源的にコピーという操作がややこしすぎるのだ。
なんで FileUtils.install に preserve なんてオプションがあるんだよ。 インストールするときにパーミッションを保持してどうする。 そのくせ owner と group がないというのがまた謎だ。 追加しておこう。
よし次。[ruby-talk:106434] は……NTFS かよ。やだなあ。 だいたいなんだ、なんで rm とマウントが関係あるんだ。 わけわかんねええよ。
(01:24)
まさか 2 日目をまるごと寝過ごすとは思わなかった。 起きたら 19:00ってなんだよ。 今回の LL は 1 日目の CommonLisp も Groovy も見られなかったんだよなあ。 アタフタしてるうちに懇親会の申し込みも終わってたし。鬱。
(05:19)
マウントしたボリュームの中で rm_rf すると 勝手にアンマウントされるという報告。
予想通り、再現しねえし。
いちおう例外を探してみると、マウントポイント (正確にはリパースポイント re-parse point って言うんだっけ?) それ自体を消すとアンマウントされたことになっている。 マウントしてるのに消せるってのはちょっと驚いたけどな。
(07:54)
LLW の乏しい経験を元に書いておこう。
今回、「Haskellはわかんねーよ!」という感想が けっこう頻繁に見られるのは Haskell にとっては非常に有意義ではないでしょうか。 なにしろ、これまでは視野に入ってすらいなかっただろうし。
(10:58)
とりあえず parse.y を以前と全く変わりなく動かすのが最優先。
~/c/ruby % ./ruby test/runner.rb Loaded suite test Started ............................................................... ............................................................... ..................................................... /usr/lib/ruby/1.9/erb.rb:177: [BUG] unknown type 0x22 (0x12 given) ruby 1.9.0 (2004-08-09) [i686-linux] zsh: 22414 abort (core dumped) ./ruby test/runner.rb
キタ―――!
来るな。
(13:12)
~/c/ruby % ./ruby test/runner.rb Loaded suite test Started ............................................................... ............................................................... ............................................................E.. ............................................................... ........................... /test/openssl/test_x509name.rb:106: [BUG] Segmentation fault ruby 1.9.0 (2004-08-09) [i686-linux] zsh: 22466 abort (core dumped) ./ruby test/runner.rb
キタ―――――――――ッ!
とでも言うと思ったか! そんなマンネリな叫びを発するかよ! とかいう問題じゃなくて、この SEGV は ripper がマージされてない ruby でも同じように起こるからいいんだよ問題ないんだよ!
でも、E が気になるなあ。
fileutils だった……ちくせう
(13:29)
■ ささだ [また豪快な。]
よく考えると Ripper なんていじってる余裕はなかった。 夏休みになったんだからアレをやらねば……。
fileutils の件はだいたいかたづいたと考えていいな。 1.8 へのバックポートだけやれば終わりでいいだろう。
RDtool の話は急ぐつもりはないのでマターリやろう。
夏休み中には TD4 を完成させたいなあーと思ってます。 実は、裏でこっそり進行しているのだ。
夏休み中には "Conceptual Mathematics" を読み終わりたいなあーと思ってます。 実は、裏でこっそり読んでいる……ということはなくて 30 ページくらいで止まっています。
(06:26)
丸型 tdiarytimes のギザギザについて、 半径 4 倍にして作ってから縮小すればもっときれいになるのではないか、 というアイデアを教えてもらったのだった。
(19:18)
必要にかられて Pentium II 333MHz を買いに秋葉原に行ったんだけど、 なかなか見付からなくて困った。 一昔前はザルいくらで売るほどあったのになあ。
ついでにシリアルのクロスケーブルも探してたんだが、 これも全然見付からないね。 探してたのはコネクタの組み合わせが珍しいから それはないかもしれないなあとは思ってたけど、 いくらなんでもシリアルケーブル自体が見当たらないとは思わなかった。 一昔前は一本 100 円でダンボール箱にたくさん入ってたんだけどなあ。
(12:43)
その前に今日は何日、というか何曜日だっけ。 え、14 日の土曜日? やばいじゃん。8 月ほとんど半分終わりじゃん。 まずいなまずいなー。
(13:01)
■
MoonWolf [Ripper復活期待age
new parserは今年度は無いらしいし、YARVもparserはかかないらしいのでRipperに特に期待です。
はやくCVSに入らないかなぁ]
BitChannelをちょっと改造したらviewcvsっぽくなった。 ような気がする。
その副産物 (1) として read only モードが入ったらしい。
その副産物 (2) として文法がスイッチ可能になったらしい。
その副産物 (3) として「まだ見てないdiff」のバグが修正されたらしい。
(20:46)
■
anonyomous [日本語表記のリンクとか、BracketNameにスペースを含む場合とか
一瞬対応したんだけど0.2.1にあげるときに上書きしてしまったので
対応を〜_no
日本語については設定で方法が選べれば良いのかなあと思うのだけど
前は確か単にURLエンコード下だけだった気がする
kakasi対応してみようかなあ。]
(たぶん半年くらい前の記録です)
ようやく楽しい CPU 本体がやってきた。
どこからつないだものかな。 まず 5V と GND を全部つないでおくのは前提としよう。 んで IC は配線面から見て下図のように並んでいるのだが、
PC I/O regB regA 161 161 161 161 ←隙間A (bit0-3,CK,RST) ALU selectB selectA 283 153 153 ←隙間B carry decodeNOT decode3AND 74 32 10
まずクロックとリセットは部品面でつないでしまうことにする。 この二つはほとんど隙間 A にあるのだが、 ここにはレジスタと ALU をつなぐループ回線もあるので非常に混雑している。 そこで裏表を両方使えばリード線本数を根本的に減らせるわけだ。
ということはクロックとリセットを先につながなければならないことが 自動的に決定するわけだ。
(ここに半年くらいのタイムラグが)
ということはクロックとリセットを先につながなければならないことが 自動的に決定するわけだ。
とか書いてあるのにつながってないじゃないかよ! 4 ビット分の配線が邪魔すぎる……。
いいんだよ回路さえつながってれば!
(17:33)
http://dontstopmusic.no-ip.org/diary/20040815.html#p02
新しいページを作るときにエラーになるバグを修正しました。
自分とこでは HEAD を使ってないのがバレバレだな。 こないだの大改造はそろそろ安定したはずだし、うちもアップデートするか。 → した。
いいかげん 0.3 を出すか。 よし、DS20 のパッチ当てが終わったらやろう。
(18:02)
http://i.loveruby.net/d/20040817.html#c01
日本語ページ名ですか……。うーん。
まず、なぜ日本語ページ名が実装されないかと言えば仕様が決まらないからです。 単に○○を実装すればよいと決まってればとっくに実装してます。 そこのところを御理解ください。
あと、設定で選択ってのは最後の手段にしたいです。 特にページ名は互換性がからむので、 設定を変えたらページが見えなくなる可能性があるからです。
いやそれでも自分とこだけでもなんでもいいから実装したいということならば、 bitchannelrc で実装してください。 そのときに再定義しやすいようにコードのここを変えてくれとかいう話なら できるだけ対応しましょう。
(18:28)
なんかもうわけがわからなくなってきたんだが、 いったん現状をまとめる。
発生しているエラーは Error と Failure でパターンが分かれていて、 F がこうなり
1) Failure: test_03(TestDRbSSLCore) [/usr/users/aamine/src/ruby/test/drb/drbtest.rb:132]: <ArgumentError> exception expected but was Class: <Errno::ECONNRESET> Message: <"Connection reset by peer"> ---Backtrace--- /usr/local/lib/ruby/1.9/drb/drb.rb:878:in `close' /usr/local/lib/ruby/1.9/drb/drb.rb:878:in `close' /usr/local/lib/ruby/1.9/drb/ssl.rb:170:in `close' /usr/local/lib/ruby/1.9/drb/drb.rb:1108:in `close' /usr/local/lib/ruby/1.9/drb/drb.rb:1090:in `open' /usr/local/lib/ruby/1.9/drb/drb.rb:1014:in `method_missing' /usr/users/aamine/src/ruby/test/drb/drbtest.rb:133:in `test_03' /usr/users/aamine/src/ruby/test/drb/drbtest.rb:132:in `assert_raise' /usr/users/aamine/src/ruby/test/drb/drbtest.rb:132:in `test_03' ---------------
E がこうなる。
5) Error: test_08_here(TestDRbSSLCore): NoMethodError: undefined method `stop_service' for nil:NilClass /usr/users/aamine/src/ruby/test/drb/drbtest.rb:72:in `teardown'
また、全テストを一度に動かすとエラー件数はこんな感じなのだが、
tunami.loveruby.net ruby 1.9.0 (2004-08-09) [alphaev6-osf5.1b] openssl 0.9.6g #1 1495 tests, 10614 assertions, 3 failures, 37 errors #2 1495 tests, 10613 assertions, 3 failures, 37 errors openssl 0.9.7d #1 1495 tests, 10623 assertions, 4 failures, 37 errors as500.loveruby.net ruby 1.9.0 (2004-08-09) [alphaev56-osf5.1b] openssl 0.9.6g #1 1495 tests, 10613 assertions, 1 failures, 37 errors #2 1495 tests, 10616 assertions, 0 failures, 37 errors
test_drb*.rb を一つずつバラで動かすと test_drbssl.rb だけが失敗し、 エラーの数が減る。
#1 20 tests, 34 assertions, 3 failures, 4 errors #2 20 tests, 34 assertions, 3 failures, 4 errors
また全テストを動かしたときは drb プロセスが生き残っている。
~/src/ruby/test % ps ax | grep ruby 41799 pts/1 I 0:00.11 ruby /usr/users/aamine/src/ruby/test/drb/ut_safe1.rb druby://tunami.loveruby.net:3172 ut_safe1.rb 41803 pts/1 I 0:00.11 ruby /usr/users/aamine/src/ruby/test/drb/ut_array_drbunix.rb druby://tunami.loveruby.net:3172 ut_array_drbunix.rb 41808 pts/1 I 0:00.12 ruby /usr/users/aamine/src/ruby/test/drb/ut_drb_drbunix.rb druby://tunami.loveruby.net:3172 ut_drb_drbunix.rb
ソケットもたくさん……
~/src/ruby/test % ls /tmp druby10030.0 druby10340.0 druby39894.0 druby40240.0 druby10037.0 druby25704.0 druby39906.0 druby41803.0 druby10333.0 druby25711.0 druby40233.0 druby41808.0
さらに、ログを取ろうと思ってリダイレクトすると ruby が SEGV する。
(ladebug) where >0 0x3ff800e93f8 in __kill(...) in /usr/shlib/libc.so #1 0x3ff80213190 in UnknownProcedure18FromFile10(...) in /usr/shlib/libc.so #2 0x3ff8013bfd4 in __tis_raise(...) in /usr/shlib/libc.so #3 0x3ff801c97c8 in abort(...) in /usr/shlib/libc.so #4 0x120057ee0 in rb_bug(fmt=0x1400088f8="Segmentation fault") "/usr/users/aamine/src/ruby/error.c":214 #5 0x1200a7374 in sigsegv(sig=11) "/usr/users/aamine/src/ruby/signal.c":446 #6 0x3ff800d5b40 in __sigtramp(...) in /usr/shlib/libc.so #7 0x3ff80205964 in UnknownProcedure14FromFile22(...) in /usr/shlib/libc.so #8 0x1200509f4 in obj_free(obj=5391766328) "/usr/users/aamine/src/ruby/gc.c":1153 #9 0x120050380 in gc_sweep() "/usr/users/aamine/src/ruby/gc.c":1026 #10 0x120050fc8 in rb_gc() "/usr/users/aamine/src/ruby/gc.c":1390 #11 0x12004f408 in rb_newobj() "/usr/users/aamine/src/ruby/gc.c":380 #12 0x12005ac58 in str_alloc(klass=5369351944) "/usr/users/aamine/src/ruby/string.c":44 #13 0x12005af50 in str_new3(klass=5369351944, str=5382187920) "/usr/users/aamine/src/ruby/string.c":120 #14 0x12005b00c in rb_str_new3(str=5382187920) "/usr/users/aamine/src/ruby/string.c":135 #15 0x12002a930 in rb_eval(self=5397852672, n=0x140cdab68) "/usr/users/aamine/src/ruby/eval.c":3610
環境は以下の通り。
いま OS にパッチキットを当ててるので、 そのあとでもう一回試してから dev に報告する予定。
ああそうか、このさい gcc で起こらなければあきらめるというのも手だな。 gcc も試してみよっと。
(19:34)
通った! やったー!
勝利の瞬間
tunami:~/obj/ruby-g % ./ruby -I./.ext -I./.ext/alphaev6-osf5.1b ~/src/ruby/test/runner.rb ~/src/ruby/test/drb/test_*.rb Loaded suite [/usr/users/aamine/src/ruby/test/drb/test_acl.rb, /usr/users/aamine/src/ruby/test/drb/test_drb.rb, /usr/users/aamine/src/ruby/test/drb/test_drbssl.rb, /usr/users/aamine/src/ruby/test/drb/test_drbunix.rb] Started ................................................... ................................................... ...... Finished in 52.285745 seconds. 108 tests, 447 assertions, 0 failures, 0 errors
まあ、代わりに openssl で落ちるようになりましたけどね。
(22:02)
今週末 21 日 (土) に開催です。 今回は場所がいつもと違うので要注意。
(04:19)
■
なかむら(う) [うう、うちのNetBSD(もちろんgcc)でも
NoMethodError: undefined method `stop_service' for nil:NilClass
が出るので、あおきさんのデバッグにひそかに期待してたのですが…… orz]
■
青木 [む、他のOSでも起きるんですか。
何が共通点なのかなあ。]
■ なかむら(う) [複数のプロセスが実行されているときに、どっちかのプロセスでエラーが出たらnilになるのかなあ、とかまでは考えました。]
■
anonyomous [kakasi対応した。
* [[世界の中心出会いを叫ぶ]]
?sekainochuushindeaiwosakebu
* [[世界の中心で愛を叫ぶ]]
?sekainochuushindeaiwosakebu
今は反省している。]
うーん。BitChannel の日本語ページ名はどうしてものかなあ。 いろいろ考えた結果、 以下のようなていどで妥協しようかという気分になってきた。
日本語ページ名にはいくつか制限をかける。
なんとか [[...]] を回避したいのだが思いつかない。
できれば同音異義語対策もしたいけど、 簡単な方法が思いつかないのであきらめよう。
今回の案のポイントは、日本語ページ名は あくまでページを編集する時点でだけ有効ということだな。 セーブすると WikiName に統一されるので 「途中でエイリアスが変わったらどうする問題」や 「ページを作るときは後で日本語ページ名に直さないといけないの?」問題を回避できる。
……そうか、逆もやればいいんじゃないか。 別名が宣言されているページは、 WikiName を別名に変換して表示すればいいんだ。 これは意外といいかも。
(04:43)
■ anonyomous [ページローカルな別名であればはてなみたいに無意味なリンクが出来にくいはずなので良いと思います。]
人間あきらめが肝心だよね。
もう部屋の掃除が進みまくりですわ。
日記を書く気がしなかったので放置してたら五日もあいていた。
Ripper さあ。 今週末にコミットするぜーとか言ったけどできるわけないって。 つーかその間にまた parse.y がアップデートされてるし (泣) なんか特定プラットフォーム (よくわかんない) で変な動作をするらしいので、調査中。
BitChannel がいじりたいけど、今は耐える……。
(21:37)
BitChannel 0.2.x 以前のすべてのバージョンに XSS 脆弱性が発見されました。 BracketName を使って、空白以外の任意の ASCII 文字列を埋め込めます。 公開サーバに BitChannel を設置している方は できるだけ早急にアップデートしてください。
ついでに 0.3 にしました。
(12:31)
(追記) いちおう 0.2 ブランチ (-r V0-2) でも修正しておきました。
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
■ なかだ [installのpreserveが保持するのはタイムスタンプでは。]
■ 青木 [あ、そうでした。
しかし、それはそれで非統一な感じ……(まあいいか)]