誰が言ったんだろコレ。担任がオリンピックがどうたら言って、こんなことを言ってたわけだけど、柔道の井上康生とか努力してなかったって意味なんだろうか。まぁそれは五輪に興味が薄いからどうでもいいや。

「努力しろよ」とか、その意味にとれる「がんばれ」をいうやつはインチキ臭い。

  1. トップ
  2. life
  3. 努力は期待を裏切らない。

やっぱロードパスがおかしい。全然おかしい。dem_open_file("foo.xml") をやると cannot open file 'c:/program files/apache group/apache/foo.xml' が出る。どうやって直すか。ぐぐってもソレっぽいのが出てこない。お手上げ。

もしかして domxml って古いのか。XSLT とか XML を使うんだろうか……なんかよくわからないなぁ。

とりあえず php のバージョンをあげる。xrea と同じ (4.3.8) にしよう。インスコしたけど 4.3.8 にならない orz. 上書きしてるのになぁ……

php.exe は php -v でちゃんと 4.3.8 ってでる。(でも何故か cgi 版のほうは php_mcrypt が見つからないというエラーを出す。意味分からん。php.ini ではコメントアウトしてるんだけどなぁ)

  1. トップ
  2. prog
  3. Windows 版 Apache + Sablotron

全くツイてない一日だった。何処がどうツイてないか書くとめげるので止める事にする。

その代わりちょっといいことを書く。入院して誰かの見舞いのために最寄の大学病院に行った。なんか高校生が病院内見学(?)みたいなのがやってて素敵女の子がいた。それだけ。

  1. トップ
  2. life
  3. ダメな一日

土曜日は朝から「なんで土曜日に学校なんかいかなきゃいけないんだ。しかもあの糞学校に」と考え、日曜日は「あぁまた明日から糞学校か」と凹み、平日は淡々と脳みそがやせていく日々である。

  1. トップ
  2. life
  3. ひたすら面白くない日々と、ひたすら面白いことを考える日々

どこの大学に入ってもインチキ野郎が大量にいるんじゃないかと思うこの頃。周りに誰がいるかとかそういうのって全部運じゃないか……

じゃあどこにインチキ野郎がいないかって言ったら、いないとこなんてないんじゃないかと思うこの頃。どれぐらいいるんだろう。

関係ないけど、妙に気取ってる人が苦手だ。すごいくだらないんだけど、高校生なら「高校生らしく」するべきで、たかが粋がってるだけの高校生が「飲みいこうぜ、のみ」とか言ってるのはなんか胡散臭いって思うような。別に粋がってるやつだけじゃなくて、言葉(文字)遣いが気取ってたり、格がないのに一人称が「私」だったりするとなんかめげる。

人のこと言ってるんじゃねぇよ。 さて、自分で判断できないことはどうやって直せばいいだろう。

  1. トップ
  2. life
  3. ○×+運

domxml は PHP5 で使えなくて、DOMDocument とか XSL は 4 では使えないってか。ローカルで xslt_process のロードするときのパスがオカシイのでいちいち fopen する必要ありまくりですか。めんどくさい。

  1. トップ
  2. prog
  3. php ?

別ファイルに定義されたクラスを動的に読み直したいのだけど、どうやっていいやら。単に eval とかやると同じクラス名はもう使ってるぜ?って警告されるわけだし、Class::new do ... end は違うくさいし、remove_const はメソッド内から呼べないself.remove_const がないよって怒られるわけだから、他に方法があるのかもしれない? 定義したクラス名.class_eval("remove_const(:CONST)")ってやればいいらしい([ruby-list:38594] Re: cgi.rbのremove_const)。これで上手くいくかどうか実装してみよう。し。

プラグインみたいな。ずっと動きっぱなしのプログラムで、ある一部分だけソースからもう一度読み直してやりたい。

# ML の過去ログで面白いのハケン [ruby-list:27327] Haiku. こういうの好き

class PluginManager
def initialize
@plugins = {}
end
def class_name(filename)
File::basename(filename, ".rb").capitalize
end
def load(filename)
class_name = class_name(filename)
eval(open(filename) {|f| f.read }, binding)
# インスタンス作成して @plugin に突っ込む。
eval("@plugins[class_name] = #{class_name}::new")
end
def unload(filename)
class_name = class_name(filename)
PluginManager.class_eval("remove_const(:#{class_name})")
@plugins.delete(class_name)
end
def each
@plugins.each do |k,v|
yield k, v
end
end
end
pm = PluginManager::new
pm.load("foo.rb")
f = PluginManager::Foo::new
pm.unload("foo.rb")
f = PluginManager::Foo::new # => uninitialized constant PluginManager::Foo (NameError)
=begin
# foo.rb
class Foo
end
=end

みたいな感じかなぁ……もっとスマートにできるような気がする。しかもコレだと PluginManager の外からロードしたクラスにアクセスできる(丁度上の f のように )んだよね。もう一個 Plugin クラスとか作ってその中にロードしたクラスのインスタンス突っ込んでやろうか。

  1. トップ
  2. prog
  3. Ruby プラグインっぽいもん

外側からアクセスできるのはそんな大きな問題にはならないような気がするので、このまま実装してこう。まぁクラスオブジェクトを適当に突っ込んだらすぐに remove_const すればいいような気がしないでもない。この辺考えよう……

前回ロード時のファイル日時と比べて更新されてたらリロードするメソッドとかとか。

ちなみに結構命名規則がいいかげんな感じで統一してたりする。クラス名とかモジュール名は単語先頭を大文字にする(どっちにしろクラス名先頭は大文字だし)形で、メソッド名とか変数名はアンダースコアで単語つなぐ、ってのを基本として適当に単語作ったり略したり。

foo_bar
普通
FooBar
WinAPI とか、C とかっぽい気がする。読み難いし書きづらいし間違いやすい。
FOO_BAR
定数
fooBar
なんかダサい
Foo_Bar
Foo_bar
あんまり見かけない
激しくダサい

どうでもいい話だ。でも Ruby のメソッド名に大文字が混ざってると違和感! Javascript だといろいろ混ざったりとか……キタネ

ていうか、インスタンス作ったらすぐに remove_const やってもいいのかな。

  1. トップ
  2. prog
  3. Ruby PluginManager と命名規則

initialize にディレクトリ渡して、それ以下のファイルを全て読むようにしてみる。ただし先頭にアンダースコア付いてるときは無視。一定時間ごとに reload_if_modified っつうのを呼び出せば勝手に読み込まれるし、アンダースコアをつければ勝手に開放される。

結局宣言して、インスタンスを作成して適当なクラス変数につっこんだら直ぐに remove_const してみてる。

さーIRC BOT で使ってみよう。

RO チャンネル用に告知巡回と鯖チェック・モンスデータ取得とか。モンスデータは今のところ回避しかやってないけど必中とかもやりたいもんだ。いちいちブラウザ起動するより早い。どっかに生のデータないのかな。ローカルで MySQL に突っ込んだらよさそ。

  1. トップ
  2. prog
  3. Ruby PluginManager 3

このメソッドの挙動がよくわからない。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 も外側ってことになってるのかな。

  1. トップ
  2. prog
  3. class_eval のブロックを与えたときと文字列を与えたときの違い

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 がインスコできない。バージョン管理云々のせいだろうけどめんどいので放置。正式版はまだ遠い?

  1. トップ
  2. soft
  3. Firefox 1.0 PR (NOT FINAL)

ネットサービス関連でなんか俺とすごく温度差がある人がいるなぁ。野球に興味がある人とない人ぐらい。

なんだろ。心構えが違うっつうか、なんだろ……なんで違うかよく分からない。

  1. トップ
  2. net
  3. 温度差

商店街を走っていた。向かうところがあるのだ。日はまだ完全に昇りきっていない。にもかかわらず店は開いているし、人は多かった。

ときおり変な場所を通る。チーズを使った商品だけを扱うファーストフード店がある。緑の地に白の文字で店の名前が書いてある。数名しか座れないカウンター席と、二人がけのテーブル席が二つある。店内は殆ど満席だ。もちろん僕は急いでいる。食べずに裏側に抜ける出口をくぐる。階段状になっていて、妙に狭い。蝋でできた商品サンプルがある。出るときには周りにあるものに気をつけて出なければいけない。そして狭い商店街にまた出る。まだ先だ。まだ僕は走る必要がある。もっと先にある何処かに行かなくてはいけない。そこで誰かが待っている。

  1. トップ
  2. self
  3. 夢:チーズ専門ファーストフード店

クラス移動を忘れてしまい、今から行ったら遅刻ついちゃうよぉ、ってことで図書室。

海辺のカフカ読み終わった。もっといろいろ空から降ってくるといいなぁとかねー(わらい

あーあ。何かワクワクすることないかな。

  1. トップ
  2. book
  3. nothing

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 時間制限付きでユーザコードを実行する。

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

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

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

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

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

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

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

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

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

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

  1. トップ
  2. web
  3. tabindex=?

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

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

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

  1. トップ
  2. music
  3. シンクロナイズド ロッカーズ / the pillows tribute

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

  1. トップ
  2. self
  3. ../../../ ...

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

  1. トップ
  2. music
  3. Delayedead / Syrup16g

変なおっさん(カーネルサンダース的)がマントを広げてる夢を見た。マントの内側は真っ黒。光を全く反射しない。マントを広げて入れと言う。入るのはよくない。むしろ入っちゃいけない。でも夢の中で夢を変えようとするのはとても難しい。何か知らんけど苦しさを伴う。だから入ってしまった。後にどうなったかは知らない。とりあえず悪夢。

とにかく走ってた。財布の中には福沢諭吉が数枚入っている。家を出てきた。でも家出じゃない。何かを探してるはずだけどよくわからない。とりあえず飛行機で韓国に行った。韓国に行っても走ってた。でも戻ってきた。また走った。ずっと夜。ずっと。でも駅や空港は明るかった。唐突に新幹線にのることになった。乗ったのは埼玉か山梨。たぶんあとは電車に乗って帰ってきた。

バスで観光らしきものをしている。ある小さい湖にくる。市役所が湖のほとりにある。でもガイドが言うには普通に車で走っていたら気づかない。確かにそうだと思った。市役所が小さいんじゃなくて、なんか見つけにくいだけ。バスは市役所に停車する。降りる。湖をライトアップすることができるという。でもライトはいささか小さすぎる。くだらない。相撲。腹の辺りに湧き上がる気持ち。

  1. トップ
  2. self
  3. 夢:湖の周りとか、マントの暗闇の奥とか

昨日で切れた。しばらくはやらない。とにかく RO をやってる間は何も考えてないので、脳みそに悪い。非常に悪い。学校で寝て、家帰ってきてネトゲ、じゃあ何時俺は脳みそを使っているやら。とりあえず、そこそこ面白いこともあったし、「やっぱり」と改めて諦めなければいけないことに気付く事もあったので良いってことにしとこう。

本当にくだらない話。「頑張れ」とかいう言葉が多すぎ。ほとんど無意識で言ってるんだろうなぁ……自分は言わないように気をつけようと思う。強く。

  1. トップ
  2. life
  3. RO のチケ切れとその他考える事

他人にすぐ相談する人を見ると教えて君を思い出す。最初から答えが決まっているのに相談するのはどうなのよ。「相談にのるよ」は何かアレ。自意識過剰っぽい。ついでに「私でよかったら」とか付くともっと素敵だ。どうでもいいか。

  1. トップ
  2. life
  3. 相談?

今日は雨が降っていて寒い。なんとなくアートを聞きつつ、もうすぐ冬だなぁと思う。そしてアートって冬属性ついているなぁとか思う。じゃあ他のアーティストはどうなのよとか思う。

BURGER NUDS
~夏
Syrup16g
~冬
ART-SCHOOL
秋~
BUMP OF CHICKEN
the pillows
季節なし
NUMBER GIRL

バンプについちゃスノースマイルとかあったりするけどアレは例外だよね。例外。rescue SnowSmile だよね。でも SnowSmile って親クラス何よ。あるいは SnowSmile はエラークラスじゃなくて bump_of_chicken():snow_smile を与えたら RangeError みたいな?

  1. トップ
  2. music
  3. 季節 ART-SCHOOL

借りたライトノベルを消化(わら)。何か突然ノルウェイの森が読みたくなる。でもあれは学校の図書室で読んでいたやつだから家にはないんだ。残念。今度余裕があったら買おう。できれば海辺のカフカも。

なんで村上春樹を読み始めようと思ったのか全く覚えてない。ネット回ってて面白い人が「いいね」とか言ってたからだったかなぁ。

ノルウェイの森はフレーズだけ考えるとアートの UNDER MY SKIN やら MISS WORLD あたりを思い出すような。逆だろうけど。ノルウェイの森読んでてゾクゾクするのは突撃隊から貰った蛍のあたりなんだよね。もうなんともいえない。

MISS WORLD は俺がアートを好きになるキッカケ。歌詞に似たフレーズがある。どの部分かっていうのを正確にうまくいえない(全体的にかな)んだけど、なんか好き。あれかな 光のほうへ 君は 手を伸ばす あたりが一番印象深いかもしれない。

どっちも(ノルウェイの森も、MISS WORLD も)光の粒子を掴もうとするシーンが好き。ふと気付くと頭に浮かぶ。でもノルウェイの森の場合は男が手を伸ばしている映像で、MISS WORLD では女性が手を伸ばしている映像になる。面白い。

  1. トップ
  2. book
  3. なかったんだよね。その本
  1. トップ
  2. music
  3. なかったんだよね。その本

日記に関して、危ない系じゃなかったら他人がどう思うかなんぞ考えるのはやめよう。アフォくさいし、そういう思考しながら書いてる自分がインチキくさい。

  1. トップ
  2. self
  3. 格好悪いなと思うことをやるという苦手

学校のクソ共(の中でもコンピュータに疎い連中)が iPod がどうとかでクソでかい声を出していたわけで、CCCD は消滅方向にちゃくちゃくと進んでるわけで、SONY とか AVEX とかが必死こいて CCCD の扱いをどうにかしようとしてるのが笑える。まぁ AVEX が CCCD やめても買うアーティストなんていないんですけど。

  1. トップ
  2. music
  3. iPod 効果らしいよ