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

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

  1. トップ
  2. prog
  3. def foobar arg, arg

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

  1. トップ
  2. life
  3. マウスうごかね

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

  1. トップ
  2. self
  1. トップ
  2. life

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

  1. トップ
  2. self
  3. センター
  1. トップ
  2. life
  3. センター

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
  1. トップ
  2. prog
  3. Ruby 時間制限付きでユーザコードを実行する。