何も考えてない……何も考えられない。やばいな。危機感だけ感じる。とりあえず言えるのは英語の授業がまるで大学に行こうとしてる高校生が受けているものじゃなかったってこと。
../../../ ...
Delayedead / Syrup16g
フリスロのやつがとりなおしだとは思わなかった。やっぱフリスロはキラキラしてるなぁ。他は別に書くこと思い浮かばない。
tabindex=?
tabindex は絶対に指定すべき? それより不自然にならない順番でソース書けばいいような気がしないでもない。でも tabindex="0" にはしとけって話なのか……指定してあるサイトで逆に使いにくいのがあったりなかったり。
シンクロナイズド ロッカーズ / the pillows tribute
なんていうか、ELLEGARDEN が Funny Bunny なのは何だか面白いなぁ(w)。俺脳内だと ELLEGARDEN の 風の日 と Funny Bunny が微妙にかぶってる(風の強い日~あたりで)から今どっち聞いてるかワカンネェヨ的な感じになったりならなかったり。
BUMP OF CHICKEN が最初のほうアコースティックに始めるから、もしかしてこのまま最後まで行く気ですかとデジャヴって不安になったけど予想がはずれてよかった。
あとは RUNNERS HIGH (ストレイテナー)と カーニバル (佐藤竹善)が面白かった。
def foobar arg, arg
メソッド定義で括弧省略するのって死ぬほど読み難いと思うんだけど、実際使ってる人は読みやすいとか思ってんのかな。
まぁ人の勝手ですね。そうですね。
マウスうごかね
箱
箱がある。良いことじゃないものが少しずつ溜まっていく箱。残りの空白は謙虚さとか、そういうもの。最初は空っぽで、段々灰色の煙のようなものが底に溜まっていく。空気より重いんだ。もちろんずっと溜まり続けるわけじゃない。箱の容量には上限がある。でも少しずつ溢れたり、にじみ出てきたりはしない。この箱は結構ちゃんと密閉してある。でも箱自体はそんなに強くない。つまり、ある時をもって爆発する。箱は完全に破壊される。箱はそもそも「保つ」ためにあるものだから、壊れたときには、また新しい箱ができるまで「保つ」ことができなくなる。だいたい箱に煙がたまって爆発するまで一年。新しい箱を作るまで三日ぐらいかかる。それが繰り返しくる。箱は何時でも感じることができるし、どれぐらい溜まっているかも大体わかる。でも爆発から再生までの周期は殆ど変わらないし、破壊されるのはどうしよもないみたいだ。
センター
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
ラヴィ(・∀・)!!
メモ。 via ぎるちゃ。きみのためなら死ねる わらた。
nothing
夢:チーズ専門ファーストフード店
商店街を走っていた。向かうところがあるのだ。日はまだ完全に昇りきっていない。にもかかわらず店は開いているし、人は多かった。
ときおり変な場所を通る。チーズを使った商品だけを扱うファーストフード店がある。緑の地に白の文字で店の名前が書いてある。数名しか座れないカウンター席と、二人がけのテーブル席が二つある。店内は殆ど満席だ。もちろん僕は急いでいる。食べずに裏側に抜ける出口をくぐる。階段状になっていて、妙に狭い。蝋でできた商品サンプルがある。出るときには周りにあるものに気をつけて出なければいけない。そして狭い商店街にまた出る。まだ先だ。まだ僕は走る必要がある。もっと先にある何処かに行かなくてはいけない。そこで誰かが待っている。
温度差
Firefox 1.0 PR (NOT FINAL)
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.3) Gecko/20040907 Firefox/1.0 PR (NOT FINAL) にした。
Feed Back Agent のインスコ中にエラーでてインストーラ止まったのでタスクマネージャから強制終了。まぁ関係ないからヨシ。AiO がインスコできない。バージョン管理云々のせいだろうけどめんどいので放置。正式版はまだ遠い?
Ruby PluginManager 3
initialize にディレクトリ渡して、それ以下のファイルを全て読むようにしてみる。ただし先頭にアンダースコア付いてるときは無視。一定時間ごとに reload_if_modified っつうのを呼び出せば勝手に読み込まれるし、アンダースコアをつければ勝手に開放される。
結局宣言して、インスタンスを作成して適当なクラス変数につっこんだら直ぐに remove_const してみてる。
さーIRC BOT で使ってみよう。
RO チャンネル用に告知巡回と鯖チェック・モンスデータ取得とか。モンスデータは今のところ回避しかやってないけど必中とかもやりたいもんだ。いちいちブラウザ起動するより早い。どっかに生のデータないのかな。ローカルで MySQL に突っ込んだらよさそ。
class_eval のブロックを与えたときと文字列を与えたときの違い
このメソッドの挙動がよくわからない。PluginBase.class_eval(%Q|@@irc = irc|) では思ったとおりだけど、PluginBase.class_eval { @@irc = irc } だと uninitilized class variable が出る。とりあえず前者にしとけば動くのでいいけど、なんか気持ち悪い。
プラグイン側に API を提供しようってわけだけど、そんなこと最初考えてなかったとかいうアフォさなので全てのプラグインの先祖としてインターフェイスを宣言している PluginBase のクラス変数に適当なメソッドを持ったオブジェクトを入れておけば、それにアクセスしてアレコレできんじゃねぇかなぁと。(継承したクラスとかでも全て共有されるし)
上の irc は class_eval の前で irc = self とかやってるやつ。だからプラグイン側でオーバーライドしてる on_join メソッド内で @@irc.notice(message, channel) とかやればメッセージが送れるハズ。って自分で書いてて思うけど意味わからん。
あぁ。もしや @@irc も外側ってことになってるのかな。