土曜日は朝から「なんで土曜日に学校なんかいかなきゃいけないんだ。しかもあの糞学校に」と考え、日曜日は「あぁまた明日から糞学校か」と凹み、平日は淡々と脳みそがやせていく日々である。
○×+運
どこの大学に入ってもインチキ野郎が大量にいるんじゃないかと思うこの頃。周りに誰がいるかとかそういうのって全部運じゃないか……
じゃあどこにインチキ野郎がいないかって言ったら、いないとこなんてないんじゃないかと思うこの頃。どれぐらいいるんだろう。
関係ないけど、妙に気取ってる人が苦手だ。すごいくだらないんだけど、高校生なら「高校生らしく」するべきで、たかが粋がってるだけの高校生が「飲みいこうぜ、のみ」とか言ってるのはなんか胡散臭いって思うような。別に粋がってるやつだけじゃなくて、言葉(文字)遣いが気取ってたり、格がないのに一人称が「私」だったりするとなんかめげる。
人のこと言ってるんじゃねぇよ。 さて、自分で判断できないことはどうやって直せばいいだろう。
関連エントリー
php ?
domxml は PHP5 で使えなくて、DOMDocument とか XSL は 4 では使えないってか。ローカルで xslt_process のロードするときのパスがオカシイのでいちいち fopen する必要ありまくりですか。めんどくさい。
関連エントリー
Ruby プラグインっぽいもん
別ファイルに定義されたクラスを動的に読み直したいのだけど、どうやっていいやら。単に 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 クラスとか作ってその中にロードしたクラスのインスタンス突っ込んでやろうか。
関連エントリー
Ruby PluginManager と命名規則
外側からアクセスできるのはそんな大きな問題にはならないような気がするので、このまま実装してこう。まぁクラスオブジェクトを適当に突っ込んだらすぐに remove_const
すればいいような気がしないでもない。この辺考えよう……
前回ロード時のファイル日時と比べて更新されてたらリロードするメソッドとかとか。
ちなみに結構命名規則がいいかげんな感じで統一してたりする。クラス名とかモジュール名は単語先頭を大文字にする(どっちにしろクラス名先頭は大文字だし)形で、メソッド名とか変数名はアンダースコアで単語つなぐ、ってのを基本として適当に単語作ったり略したり。
- foo_bar
- 普通
- FooBar
- WinAPI とか、C とかっぽい気がする。読み難いし書きづらいし間違いやすい。
- FOO_BAR
- 定数
- fooBar
- なんかダサい
- Foo_Bar
- Foo_bar
- あんまり見かけない
- 激しくダサい
どうでもいい話だ。でも Ruby のメソッド名に大文字が混ざってると違和感! Javascript だといろいろ混ざったりとか……キタネ
ていうか、インスタンス作ったらすぐに remove_const やってもいいのかな。