土曜日は朝から「なんで土曜日に学校なんかいかなきゃいけないんだ。しかもあの糞学校に」と考え、日曜日は「あぁまた明日から糞学校か」と凹み、平日は淡々と脳みそがやせていく日々である。
○×+運
どこの大学に入ってもインチキ野郎が大量にいるんじゃないかと思うこの頃。周りに誰がいるかとかそういうのって全部運じゃないか……
じゃあどこにインチキ野郎がいないかって言ったら、いないとこなんてないんじゃないかと思うこの頃。どれぐらいいるんだろう。
関係ないけど、妙に気取ってる人が苦手だ。すごいくだらないんだけど、高校生なら「高校生らしく」するべきで、たかが粋がってるだけの高校生が「飲みいこうぜ、のみ」とか言ってるのはなんか胡散臭いって思うような。別に粋がってるやつだけじゃなくて、言葉(文字)遣いが気取ってたり、格がないのに一人称が「私」だったりするとなんかめげる。
人のこと言ってるんじゃねぇよ。 さて、自分で判断できないことはどうやって直せばいいだろう。
php ?
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 やってもいいのかな。
ダメな一日
Windows 版 Apache + Sablotron
やっぱロードパスがおかしい。全然おかしい。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
努力は期待を裏切らない。
誰が言ったんだろコレ。担任がオリンピックがどうたら言って、こんなことを言ってたわけだけど、柔道の井上康生とか努力してなかったって意味なんだろうか。まぁそれは五輪に興味が薄いからどうでもいいや。
「努力しろよ」とか、その意味にとれる「がんばれ」をいうやつはインチキ臭い。
Apache on win + Apache on cygwin
やはり AnHTTPD だと心もとないというか、PHP スクリプト実行してるといきなり落ちたりする。ってなわけで Win な Apache を入れようかと……でも面倒なのでやってないっつう。少し弄るだけなんだけども。
インスコしたけど 500 でちゃう orz. また今度にしよう
バーチャルホストの設定変えるとおかしいから、そこへんかと思ってたら違う罠。.htaccess で php_flag とか使ってるくせに mod_php 入れてないせいですた。アフォか俺は。
とりえあず……CGI の実行プログラムを拡張子によって強制できないかな…… cygwin 版は #! 読んでもらって構わないわけですが、win 版だと実行できないじゃんと。
Action ディレクティブ使うのかな。でも 500 出る。めんどくせー。ごく簡単なスクリプトだと動いてるから、どっかパス関連でダメなんだろうなぁ……そのまま動かないんじゃダメじゃん。
あと mod_php でバーチャルホストの DocumentRoot が上書きされてないような…… Sablotron が変なとこ読みにいってる。
つーか K2Editor を Ruby ファイル編集に使ってるんですが、一回バックにいったあとにマウスで移動できなくなる。UZEEEE
AddHandler cgi-script-rb .rb と Action cgi-script-rb D:/usr/bin/ruby を加えてやってみたらとりあえず実行はできる。でも最初の行の #! も読んでるらしく、つけてると動作しない。無視するにはどうすればいいのか……これは間違い。たまたま動いてただけ。
Action ディレクティブは違う気がする。
ScriptInterpreterSource 以外それっぽいのがないからこれでやろう……関連付け変更するのは嫌だけれども。
とりあえず CGI はいいとして、domxml_open_file が動いてない。カレントディレクトリが PHP スクリプトの位置じゃない。なんでだ!
ロイディ
セッション * PHP
PHP のセッション管理は便利だなぁ。アホでも作れる。
No Unco No Life
学校。もう少しで学校。行けばもれなくインチキクラスメイト共とイカサマ教師のハーモニーが味わえます^^ 楽しみすぎて吐き気でますね。いや、寝てないからかもしれないけど。だって寝たら学校が近くなるじゃん。
一年後ぐらいに、この心持がいい思い出になっていること切に願う。
閉じタグを省略すると上手くいかない要素
XSLT とかやると空要素は勝手に省略されるわけですが、一部要素で不具合があるわけです。具体的には textarea, script なんですけれども。これ内容に <xsl:value-of select="/.."/> とでも書いておけば省略されないことを発見。value-of 使えばいいらしい。sab なんとかでしかできないだろうけど。
XML にユーザ入力のデータを保存
元データを忠実にマークアップして保存しておけばいいだけだね。っていってもユーザ入力のデータで保存するのは改行ぐらいだろうから、l 要素に各行格納してつっこめばOKな気がする。必要なら文中の URI をマークしてもいいかもしれない。
バソプ
Google のインデックス化について
Google が拾ってくれた @2004年8月の湾岸日記 から特に検索キー与えないでなんちゃらっつうのを見て、あーもしやとか。site:lowreal.net で検索してみると一応各ページがヒットする。でも中身拾ってもらってないみたいだ。むむむ。ググル弾きなんてしないけどなぁ。軽く無意味なコンネゴの弊害か何かかしら……
職とか金儲けについて
社会に出てちゃんと働けるかが激しく不安だ。そういうところでは電車で異臭を放ってデカイ声で電話に話しかけているおっさんも尊敬できる……ふつーに凄いと思うよホントに。
つかどういう系になるんだろ……IT 系がギリギリぐらいかなぁとか思うのですが、何かムリくさ……。
願わくばカコイイウェブサイトを strict で構築したい。
掲示板システムを XML 化?
掲示板のデータを XML にすることは意味あるだろうか……再利用性はあがるけれど、掲示板のデータを再利用することなんてあるのかとか。むしろいちいち DOM を使うことによって一部複雑になる気もする。無限スレッドみたいなのは得意だろうけど、ログが溜まってくると処理がもたつくし、過去ログを作るとしたらどうやって作るかとか。まぁ DOM で XPath 使って古い数件を別ファイルにするような感じになるのかな。
とりあえずやってみれば問題点が出てきそう。
つまりやろうとしてるスクリプトが激しく面倒くさいので、PHP+DOM による書き込み編集をどうやって綺麗に実装しようか考えるのに掲示板というのはシンプルでいいんじゃん? 的な目論見があるのです。
メッセージ本文をそのまま保存したら直接 XSLT に放り込めないよなぁ。だからといって変換してからだと編集とかがやりにくそう。出力するときも DOM 使って読み出せばいいんだけどね……独自データ用にパーサーを用意しなくていいのはいいんだけどなぁ。
Single Window
1.0 リリースあたりまで TBE の代わりに Single Window を試してみる。タブダブルクリックでリロードとか、ブックマークからは必ず新規タブとかがない (Single Window ってだけだしね) のでちょっと戸惑う。でもまぁちょっと軽くなった気がする。
Firefox 拡張で 2ch ブラウザがあればなぁ。サイドバーにスレ一覧がでるのよ。右クリックメニューから板選択とかできる。ブックマークしたアドレスが 2ch のスレだったら自動的に拡張経由で読むの。あー便利そうー。