Posted at 2007/02/23 12:22
in Ruby
マニュアル読むと Symbol が使えるサンプルがあるのだけど、実際やってみるとエラーになる in 1.8.4 and 5。
#!/usr/bin/env ruby
Foo = Struct.new(:foo, :bar, :baz)
obj = Foo.new('FOO', 'BAR', 'BAZ')
p :bar.to_i
p obj.values_at(0, :bar, 'baz') # => ["FOO", "BAR", "BAZ"]
とやると
bash-3.2$ ./test.rb
10345
./test.rb:5:in `values_at': offset 10345 too large for struct(size:3) (IndexError) from ./test.rb:5
bash-3.2$
となってしまう。どうも :bar をハンドルに強制変換して範囲エラーになってる気がしてソースを読んでみると(struct.c)、数値と範囲と強制数値変換は実装されているけど、Symbol や 文字列から index を算出するようなコードが見当たらないので、未実装……なのかな??
(どうでもいいけど、Struct の中身って実装レベルだと Array なのね)
Posted at 2007/02/21 18:24
in Diary
* 18:20 「ある有名鑑定士が「偽手紙」を見破った理由」
面白い。感想はコメントアウト。\
Posted at 2007/02/20 22:06
in Diary|Opera
* 22:10 はてブ登録時にタグをインクリメンタルサーチ
したいなーと前々から思ってたので、DOM やりはじめたことだし習作として作ってみ……る前に、既存でないかなと検索してみると、IE と firefox では標準でできるらしい。ぇぇ……。
他の機能は動いてるのでこれだけ動かないのも変だなーと思ってはてブのソース見てみると、tag_suggest.js で Opera8 決め打ち判定してるのを発見 orz
とりあえずバグ報告しておいたけど、user.jsで
if (location.href.indexOf("http://b.hatena.ne.jp/") == 0)
{
document.addEventListener('load', function()
{
isOpera8 = true;
}
, false);
}
とかやって変数上書きしたら、現状でも動作するようになった。
2007.05.14:やっとなおった。
Posted at 2007/02/19 11:26
in Diary|Unix
* 11:25 一度 tty から起動したプロセス
一度 tty から起動したプロセスをバックグラウンドで動かしてシェルから抜けた後も動かし続けるにはどうしたらいいんだろ。
あれ、うち(FreeBSD)だと、バックグランドで動かしたままシェル終了しても普通にそのまま動いてるけどなあ(tiarra はそうやって常駐してる)……と気になって man してみると、bash ではデフォルトでシェル終了時に子プロセスに SIGHUP 送りまくるのに対して、(t)cshではデフォルトではシェル終了時に子プロセスに SIGHUP しないらしい。そういうことか……。
この動作を制御するには、hup/nohup付きで起動するか((t)csh)、disown で joblist からジョブを削除すればいいらしい(bash)。
* 23:20
↑の話、bash 関係は微妙に勘違いしてるぽいので修正というか削除。
Posted at 2007/02/15 11:57
in Diary|WebDev
* 11:30
本サイト右上のはてブ表示は、blosxom の plugin でキャッシュして1時間程度毎に更新してるのだけど、更新の際にページ全体の表示が止まるのが微妙だったので、AJAX + JSON(Perl) で遅延非同期表示するように改造してみた。
ちなみに、初めて AJAX 使ったけど(今更)、document/view が自然に分離できるし、クロスブラウザ対策も DOM と IE 程度を考慮すればいいし(なにしろ「古いブラウザ捨て捨て」が通用する!)、案外楽だった。IEだけでも何種類もあったり、全部 Perl でモノリシックにやってたりしてた頃とは隔世の感があるなあ。いい時代だ。
* 24:10
いろいろ調整。ヘッダの画像、下端が切れてたし……。