2004年 09月 23日

../../../ ...

何も考えてない……何も考えられない。やばいな。危機感だけ感じる。とりあえず言えるのは英語の授業がまるで大学に行こうとしてる高校生が受けているものじゃなかったってこと。

Delayedead / Syrup16g

フリスロのやつがとりなおしだとは思わなかった。やっぱフリスロはキラキラしてるなぁ。他は別に書くこと思い浮かばない。

2004年 09月 20日

tabindex=?

tabindex は絶対に指定すべき? それより不自然にならない順番でソース書けばいいような気がしないでもない。でも tabindex="0" にはしとけって話なのか……指定してあるサイトで逆に使いにくいのがあったりなかったり。

シンクロナイズド ロッカーズ / the pillows tribute

なんていうか、ELLEGARDEN が Funny Bunny なのは何だか面白いなぁ(w)。俺脳内だと ELLEGARDEN の 風の日 と Funny Bunny が微妙にかぶってる(風の強い日~あたりで)から今どっち聞いてるかワカンネェヨ的な感じになったりならなかったり。

BUMP OF CHICKEN が最初のほうアコースティックに始めるから、もしかしてこのまま最後まで行く気ですかとデジャヴって不安になったけど予想がはずれてよかった。

あとは RUNNERS HIGH (ストレイテナー)と カーニバル (佐藤竹善)が面白かった。

2004年 09月 19日

def foobar arg, arg

メソッド定義で括弧省略するのって死ぬほど読み難いと思うんだけど、実際使ってる人は読みやすいとか思ってんのかな。

まぁ人の勝手ですね。そうですね。

マウスうごかね

マウスがおかしい。机の模様のせい?でちゃんと動いてくれない。まともなマウスパッドが欲しい。でもお金なんてない。変な木目とかついてない机が欲しい。

2004年 09月 18日

箱がある。良いことじゃないものが少しずつ溜まっていく箱。残りの空白は謙虚さとか、そういうもの。最初は空っぽで、段々灰色の煙のようなものが底に溜まっていく。空気より重いんだ。もちろんずっと溜まり続けるわけじゃない。箱の容量には上限がある。でも少しずつ溢れたり、にじみ出てきたりはしない。この箱は結構ちゃんと密閉してある。でも箱自体はそんなに強くない。つまり、ある時をもって爆発する。箱は完全に破壊される。箱はそもそも「保つ」ためにあるものだから、壊れたときには、また新しい箱ができるまで「保つ」ことができなくなる。だいたい箱に煙がたまって爆発するまで一年。新しい箱を作るまで三日ぐらいかかる。それが繰り返しくる。箱は何時でも感じることができるし、どれぐらい溜まっているかも大体わかる。でも爆発から再生までの周期は殆ど変わらないし、破壊されるのはどうしよもないみたいだ。

センター

センター試験の申込書ですよ。何かイマイチ自分が受験するっていう感覚じゃない……説明聞いてても他人事みたいな。勉強しないといけないですよ。少なくとも英語はやる必要がある……

2004年 09月 16日

Ruby 時間制限付きでユーザコードを実行する。

IRC BOT に Ruby 式評価する機能でもと。

def safe(lvl, tm=1)
result = nil
Thread::start(lvl, tm) do |level, time|
$SAFE = level
Thread::exclusive do
timeout(time) do
tl = Thread::list
result = yield
(Thread::list - tl).each {|th| th.join}
end
end
end.join
result
end

果たしてこれでいいかは不明だけど、たぶんちゃんと動いてる。Thread.start { loop { sleep 0.1 } }; Thread.start { loop {sleep 0.1} } みたいなのを投げても大丈夫。でも何かデッドロッ(あqwせdrftgyふじこlp

だめだ。上のじゃだめ。やっぱデッドロックしてるっぽい(Thread::critical = true してみればエラーになる。 exclusive はエラー処理やってるから分からないだけだ)。他のスレッドに処理が移ってスレッド作られると困るから exclusive してるんだけど、なんか上手くいってない。とりあえず今のところ他のスレッドで新しいスレッド作ることはないから exclusive をコメントアウト。

まぁ原因は (Thread::list - tl) なんだけど。何故か全部のスレッドが入ってる。

よく分からないけど書き換え。critical 設定するとダメくさいのでもうアレやこれや。

def safe(lvl, tm=1)
result = nil
tl = Thread::list
t = Thread::start(lvl) do |level|
$SAFE = level
result = yield
end.join(tm)
(Thread::list - tl).each {|th| th.kill}
raise TimeoutError unless t
result
end