やば。やばい。翌日。
s63.xrea.com がどう考えてもぶっとんでおかしい
CGI から extconf.rb 起動させたら have_library で異常に時間がかかって Kill される。しかたないのでコメントアウトして強制的に Makefile 作らせて make してみたけど Resource temporarily unavailable で進まない。
FTP も NLST コマンドが通らないことが多い。謎すぎ。
SFTP で接続しても一定時間で予期しない切断をされる。ダメすぎ。
カススタスタタ、タラスタタ
Flickr: Creative Commons でピアノの鍵盤の写真を見たのが昨日の夜。一時間ぐらいで他のやつとてきとーなことして年賀状作成。たぶん作り直すんだろうな、と思いつつ。
今日の夕方になってそれ派生させた CSS を書き始める。どう考えてもリキッドにならなくて、いっそ固定レイアウトにしちまえよという悪魔のささやきに微妙な抵抗をしながら、適当に CSS 書いていると、ナイスな偶然に見舞われ一件落着。面倒くさかったけど……んで、さっきクロスブラウザ化を終える。テスト用のドキュメント作ってスクロールして眺める。ひたすら眺める。とりあえず眺める。そうやって眺めているとモニタに可愛い女の子が見えてくるがそれは幻想だから気をつけろ、と言い聞かせる。どうでもいいけどタオルが耳鼻科の臭い (ネブライザー) を放っている。なんだこのタヲルわっ。
さっき気付いたんだけど、今のスタイルになってから一年ほどになるらしい。なんか無駄に長いこと適用してんなぁ。そして長いこと適用していると、別のスタイルを適用させるのが怖くなってくる。何が怖いって共通 CSS (base.css) に、そのスタイルに微妙に依存するルールとか書いちゃっているからなんだよね。頭悪いな。
一旦ブラウザスタイルをリセットする CSS をかませようと思ったんだけど、読み込むファイルが増えるのでやめた。base.css に書いちゃうと別のスタイルがおかしくなるし……
そんなこんなで map 要素は Opera で inline である罠にひっかかったりした。map なんて使ってる人少ないから気にしないんだよな。
ECMAScript RegExp $
"\n\n".replace(/$/, "!") //=> "\n\n!" "\n\n".replace(/$/m, "!") //=> "!\n\n" "\n\n".replace(/$/mg, "!") //=> "!\n!\n!"
問答無用で \n の前にマッチすると思ってた。m つけなければ \Z っぽく使えるのね。
日記・日記
ふと気がつくと一昨日やったことなんて微塵も覚えていないのだけれど、こうやって日記を書いていると一応「何か」をやっていたことはわかる。不思議なことだ。
tDiary を使って日記をつけはじめたのが 2003-08-20 らしい。それより前も PHP で書かれたクソスクリプトを用いて書いていた。手元には一切データが残っていないので、Web Archive で調べてみると 2003-02-04 から独り言とかいう名前で書いていた。クソみたいな HTML ソースだなぁ。でも2年前の日記はクソみたいな HTML より吐き気を催す危険物。どうでもいいけど NULL::something っていう名前は 2003-02 - 2003-04 の間についたらしい。へぇ。
だんだん一日に書く文章量が増えてる。なんでだろう。余計なことくっつけすぎなのかな。
それにしてもその日記を書いたのが2年間前とはとても思えない。もっと前に思える。それっぽいウェブサイトを構築できるようにはなったけれど、それ以外のことはなにもできていない。しかもそのウェブサイトを構築できるというのも趣味の域を出ていない。
俺はプログラム (とりわけスクリプト) の話をよくするけど、本当のところ殆どプログラムなんて書けない。頭が普通についていけない。多くの場合、俺の書くスクリプトは他人の考えたアルゴリズムをいくつか組み合わせたにすぎない。レゴを組み立てるようなもんだ。考える必要のあるパズルではなくて、積み木。それに俺が思いつくアイデアは既に実装されているのでアルゴリズムを新たに考える必要性があまりない。
願わくば、イメージをそのままウェブサイトのデザインにしたり、文章にしたりしたい。今のところ手が勝手に何かを作るのを見てイメージを逆算している感じでしかない。数うちゃ当たる、みたいな。この方法は趣味ではいいけど、作りたいイメージをすぐに作れるわけじゃない (手が作ってくれるのを待つしかない) から責任があるときにこの方法は使えない。
それにしても責任という言葉はあまりに重いと思う。義務と言い換えてもいい。少し前によく書いていた「頑張れ」も、義務を追加する言葉になりえる。素直に受け取れといわれても、それはチャーハンに混ぜられた嫌いな食べ物みたいなものだから、どうしようもない。
日記の話からだいぶズレたけど、結局俺が言いたいのは、日記を書くのがそれなりに楽しいことだっていうこと。
同じ月を見ているの CM
最後のほうの月バックのシーンがアレとかぶる。つまり窪塚洋介が夏目 (誰) っぽい。しかし絶対に見ない系の映画だ、と思った。
entries_kache & wikieditish.cgi
某サイトに entries_kache を導入したんだけど、改行コードが混ざっていてうまく動かない。wikieditish.cgi を使って Win から更新してるせい。めんどくせーなー、とか思いつつ、entries_kache 側で強制的に改行コードを統一させるようにして (if の条件いぢって強制再書き込みさせた) 一件落着……と思いきや動かなかったんだけどプラグインの実行順だった。
- wikieditish.cgi.unite_crlf.patch
- 常に LF で保存するように。
- entries_kache.unite_crlf-keep_utime.patch
- LF になるように保険。デフォルトの wikieditish.cgi は \n と \r\n が混ざるので。上のやつ修正したあとじゃいらない。あとは、メタデータ書き込むときにファイルの時刻変えるのがうざいので設定しなおす。メタデータ読むんだから関係ないんだけど、精神衛生上よくない。
- alternate
- 全然関係ないけど、代替フレーバーのリンク用プラグイン。
<link rel="alternate" type="text/plain" title="Plain Text" href="/$alternate::path.text"/>とかやる。
特定のディレクトリ以下を例外的にトップページとか、一覧に表示させないようにしたい。プラグインがあるだろうけど探すのがめんどい。かといって書こうと思っても Perl のツン具合に萎える。
exclude Not Found
CSS Opera
Io (iolanguage) いぢくる。
学校で暇つぶしにドキュメント眺めていたらメソッドが増えていたのでちょっといぢってみる。cygwin 版が微妙に古く、mingw 版はまともに動かないとか言ってたら kiyoya さん がビルドしてくれた。ありがたう。
結論から言えば何もできなかった。blosxom 劣化クローンを作れないかなぁと思っていたんだけど、途中で完全にめんどうになってやめた。んで、もうちょい楽なのを考えていたら Tropy が浮かんだので作ってたんだけど、もうちょいってとこで強制終了連打されたので諦めた。Win32 だからかもしれないが。
join の位置がおかしいのはどうにかならないんだろうか。List にあるべきメソッドだよなぁ。
Sequence と String の区別がかなりうざい。"literal" は immutable Sequence とか言われて、直接 "literal" replaceSeq("li", "il") とかやることができない。エラーがでる。Sequence clone appendSeq("literal") replaceSeq("li", "il") とかやる必要がある。しかしながら appendSeq にバグがあるっぽく強制終了をよく食らう。よくわからん。
Tropio: Tropy クローン試行の残骸。動きません。動くかもしれないけど俺にはムリ。
環境光
レモン畑であの娘は
久しぶりに SONIC DEAD KIDS を聞きなおす。やっぱ、全然今のアートとは違う。昔のほうが好きだ、とあらためて思った。一番好きなのは MISS WORLD だけど。
GreaseMonkey スクリプトのデバッグが激しく面倒くさい
はてなの入力欄で動く xml-mode と それのナロー化 css-mode
バグバグだけどなんか今日はもうやる気しない。留年しそうなんだもん。一個単位数え間違えてた。これから軽く必死こいても、あがれる確立20%ぐらい。はぁーうまくいかない。
- インデントしないエリアにバグ。閉じた直後の RET がおかしい。いままでずっと CDATA で囲ってたから気付かなかった。
- css-mode の開き括弧直後の RET がおかしい。
補完リストの位置がおかしい。offsetLeft がおかしいのか?はてなのエリアだと右下の広げるやつを一回やっとかないと横に伸びる。はてなの JS とのコンフリクト
物好きの方がいたらどうぞ。eta.user.js
余計なことしなくていいよモード (謎) は M-x c RET。
なぜホームページだけ表示が崩れていたか
XML 宣言を省略したことにより、IE で描画モードが変わっていたせいみたいだ。唐突に思い出して omit-xml-declaration="no" にしたらなおった。でも CSS で解決する方法がないっぽいのはどうすればいいんだろ。標準モードで描画させないほうがいいんじゃないか。
ruby-xslt 0.9.1
ちゃんとエラークラス吐くバージョンがリリース。kiyoya さんのパッチ。
ruby extconf.rb --enable-error-handler して Makefile 作成。ちゃんと exslt もリンクさせるため、OBJS に /lib/libxml2.dll.a /lib/libexslt.dll.a /lib/libxslt.dll.a を追加。なんか知らんけど明示的に指定しないとリンクされなくて ld が怒る@cygwin (このバージョンに限らず)
XML::XSLT::XSLTError と、そのサブクラス XML::XSLT::ParsingError, XML::XSLT::TransformationError が追加される。変換用 XML ファイルのエラーなのか、XSLT ファイルのエラーなのかはわからなく。そのかわりエラー発生のタイミングが変わった。serve 時ではなく、xml= のときに出るようになった。だから問題ない。
エラーの message の意味がないっぽいので、--enable-error-handler 時には rb_raise 第2引数を STR2CSTR(rb_ary_to_s(rb_cvar_get(cXSLT, rb_intern("@@errors")))) とかにしたほうがいい感じ。--enable-error-handler は errors が定義されるのがキモイけど俺はそんなに気にならない。
第二引数を変えるだけだと以下のコードがダメ。
xslt = XML::XSLT.new()
xslt2 = XML::XSLT.new()
begin
xslt.xml = File.read("examples/fuzface.xml")
xslt.xsl = File.read("examples/fuzface.xsl")
out = xslt.serve()
print out;
rescue XML::XSLT::XSLTError => e
p XML::XSLT.class_eval("@@errors") #=> (1)
p e.message #=> (2)
end
p XML::XSLT.class_eval("@@errors") #=> (3)
begin
xslt2.xml = File.read("examples/fuzface.xml")
xslt2.xsl = File.read("examples/fuzface.xsl")
out = xslt2.serve()
print out;
rescue XML::XSLT::XSLTError => e
p e.message #=> (4)
end
(3) で (2) のときと同じ (4) のとき前のエラーメッセージが紛れ込む。クラス変数使ってるからだろうけど、単純にインスタンス変数にしないのにはなんか理由があるんだろうからとりあえずそのままにして、
void xslt_raise(VALUE cError) {
#ifdef USE_ERROR_HANDLER
VALUE errors = rb_cvar_get(cXSLT, rb_intern("@@errors"));
VALUE error_str = rb_ary_to_s(errors);
rb_ary_clear(errors);
rb_raise(cError, STR2CSTR(error_str));
return;
#endif
rb_raise(cError, "");
} とか作って経由させ、リセットさせてみる。XML::XSLT.errors は常に空の配列が返るようになって無意味になる。
ruby-xslt.0.9.1.error_message.patch
スレッドの切り替えってどういうタイミングなんだろう。
visitors on xrea
Visitors を XREA 上で使う。のりさんにコレいいよ、とか教えてもらったので以下略
特に何も考えなくても make できる。
XREA の生ログは最新5日分しか保存されないので、CRON でバックアップをとるようにする。んで、ついでに visitors 解析。
#!/bin/sh cd log DOMAIN="lowreal.net no-real.net headphone.lowreal.net" #DOMAIN=`ls *[^0-9].log | sed s/\.log$//` for domain in $DOMAIN do echo $domain.log gzip $domain.log mv $domain.log.gz $domain.log.`date +%Y-%m-%d`.gz zcat $domain.log.`date +%Y-%m`-[0-9][0-9].gz > tmp # パイプると Resource temporarily unavailable ? ../visitors tmp -A -o html -f ../public_html/log/$domain.log.html --trails --prefix http://$domain done rm tmp
上のようなのを FTP ログイン後のルートに visitors と一緒に突っ込んどく。んで、毎朝6時ぐらいに実行されるようにしとけばあとはてきとう。
しかし XREA でコマンド実行しようとすると Resource temporarily unavailable
になりまくる。いぢめ。
Event.which, Event.charCode, Event.keyCode
違いがわからんうえに、ちゃんとキーボードと対応してない。英語キーボードだとちゃんと対応してんのか?
e.which, e.charCode, e.keyCode, String.fromCharCode(e.which) の順で、前者が keydown、後者が keypress。環境は Firefox 1.0.7
- ;
- 61 0 61 = / 59 59 0 ;
- C-;
- 61 0 61 = / 61 61 0 =
- C-+ (Ctrl+Shidt+;) テンキー側の C-+ は問題なし
- 61 0 61 = / 61 61 0 =
- C-:
- 59 0 59 ; / 59 59 0 ;
- C-| (Ctrl+Shift+\)
- 220 0 220 テ・ / 発生しない
- C-a
- 65 0 65 A / 97 97 0 a
- C-F1
- 112 0 112 p / 0 0 112
差が一定ってわけじゃないし、どうやってマッピングすればいいか見当がつかない。さらに IE だとイベントが発生するタイミングがまた全然違う。帰れ。
Gecko_DOM_Reference:Examples#Example_7:_Displaying_Event_Object_Constants
つまり、正確に処理するにはキーボード配置を自分で作らないとダメなわけか。入力された文字を取得したいのに、入力されたキーしか取得できない。Gecko の e.charCode って charCode じゃないだろ。
それにしてもなんでセミコロンの位置でDOM_VK_EQUALSなんだろう。わからん。
*-mode in textarea
テキストエリアの管理部分と、モード用機能を分離してみた。似非ミニバッファ搭載!
新しくモード用のオブジェクト (関数) をつくればいい感じに。まぁあんまり綺麗な実装じゃないんだけど……
似非ミニバッファは M-x でフォーカス移動。入力した内容を eval した結果を挿入。M-x new Date() RET とかやれば Sat Nov 05 2005 06:57:29 GMT+0900
みたいに挿入される。ただの eval なのでグローバルに見えてる関数じゃないと使いにくい。
モードはテスト用に xml と c (中身は未実装)。M-x c RET とかやるとモード変更。これは特別に判定させてる。
余談だけど M-x (new Date()).w3cdtf() RET とか眠い。
再び Firefox 限定になりました。IE と Gecko とだと、イベント起きたときの e.which とか e.keyCode とかがバラバラなんだもん。IE は Ctrl+* で keypress が発生しないし。
まぁ色分けできない textarea ではかなり微妙な感じになってきました。XML はインデントさえまともなら色ついてなくてもいい (逆にインデントがまともじゃないと色がついてても読めない) んだけどねぇ。
リージョンをサポート。C-SPC でマーク。C-w (kill-region), M-w (copy-region-as-kill), C-y (yank), C-x n (narrow-to-region), C-x w (widen)
しにがみのバラッド。@電撃hp 38
電撃 hp 2005 OCTOBER VOLUME 38 「しにがみのバラッド。てのひらの銀河<前編> Cherish You (Side-A)」 76ページ にヘッドフォン娘がっていう話を友人から聞いて貸してもらった。絵のやつはアートモニターシリーズっぽいヘッドフォン。
作中にデムパったヘッドフォンガールがでてくるんだけど、名前が黒崎クロエ。笑うって。笑うって。
樋浦トイロってなんだっけっていう感じだったけど親父の話が出てきたところで思い出す。あぁ。あぁ。とかなんとか。
臭いがするのは、メロディーフラッグ (BUMP OF CHICKEN)・MISS WORLD (ART-SCHOOL)・乾いた花 (ART-SCHOOL)・鋼鉄の朝 (BURGER NUDS) trick or treat (Good Dog Happy Men)
なんか消化しきれてないんだなぁって思った。ばらばらというか、なんというか。思い込みの激しい登場人物が多いとかなんとか誰かが言ってました。
ヘッドフォンの役割は理想的だった。役割なんて1つしかないけど。
スウィングガールズ
動的補完 in textarea
textarea で動く劣化コピー xml-mode 続き。
TAB 入力時動的補完リストを表示させてみる。たいして意味がない気がする。xyzzy の dabbrev に相当。
デフォルトの内容で j[TAB] とすると ja, javascript, js が候補にあがる。Down/Up で選択してもう一度 TAB を押すと補完される。
「動的」なので、適当に vfsgergfherkgr とか入力したあと、vfs[TAB] とかやれば補完される。
似非 xml-mode じゃホント意味ないなぁ。っていうかほんとはタグの予測補完をやろうと思ったんだけどめんどくてやめたんです。動的補完のが簡単だけどソレなりの面白さはあるかなと。
関係ないところでは C-x h を入力したときキーバインド一覧をだすようにしてみた。微妙。
直前に動的補完できそうな文字がない場合は、親要素に合わせて開始タグ候補をリストするようにしてみた。
xml.complementList = {
"head" : ['<meta name="" content=""/>', '<link rel="" href=""/>'],
"body" : ['<div class="section"', "<p>", "<address>"],
"div" : ['<div class="section"', "<p>"],
"p" : ['<abbr title', "<span class"],
"ul" : ["<li>"],
"ol" : ["<li>"],
"dl" : ["<dt>", "<dd>"]
"pre" : ["<![CDATA["]
};
Bloglines can't find my feed
2005-10-20 を最後に更新されてないらしいです。たぶん DNS エントリ消したせいなので復活させて 301 投げなおします。いままで 301 返してたつもりだったんだけどなぁ。今 eNom がメンテ中でなにもできん。
DNS 更新 / ドメイン設定 / リダイレクト設定 が終わった。Bloglines 巡回待ち。
1時間以上たったけど更新されないな。ちゃんとリダイレクトされているんだけど。Bloglines の挙動をまとめたページとかないのかなぁ。わけわからんよ。
似非 xml-mode in textarea
制限つきながら、IE でも動くように。閉じタグ補完とかだけ。
Ajax による Full IME のコードをパクっています。
keypress 時のコードがうまくかければもうちょい使えるだろうけど、いかんせん IE はデバッグしにくいのでやる気起きない。Opera も。
Feed クロールの混乱
mixi の最新日記も更新されないなぁ。わからん。なにが悪いのか全然分からん。
Fucking IE
IE がモノとして存在していたら、とりあえず床に叩きつけ、五階建てマンションのベランダから踏み切りにほうりなげ、電車によりつぶされる様なストーリーを連想したりするんだけど、きっと IE がモノとして存在するとすれば、東京タワーあるいはもっとよくわからんデカイものなのだろうから、叩きつけることも、五階建てマンションのベランダから放り投げることもできないし、ましてや踏み切りにいきなり東京タワーなんて現れた日には事故どころじゃないよサイコキネシスだ、とここまで書いてちょっと切なくなってきた。つまるところ今なんでこのトップページだけが IE でズレて表示されるのか全くわからなくてむかついていたわけです。CSS のどこ書き換えてもなおらねぇ。a { border: 1px solid red } とかやるとなおるけどな!!
というか、なんでトップページだけなんだよと。意味わかんねぇよと。IE なんて死んでしまえばいいんだ。ほんとうに。でも俺と IE どっちのほうが価値があるかっていったら明らかに IE さんなわけで、あぁ、これはきっと僻みなんだな。俺ってばバカなやつ、あはは。とかなんとか。
自動筆記で日記書くのって頭悪いなぁ。なぁ。
そんなわけで、もう知らない。知らないったら知らないよ!!!!
Bloglines sanitize <script>alert("unco");</script>
なんか Bloglines が title を sanitize しない気が。。。
title に &lt;textarea&gt; って書いたやつ (すなわちタグじゃなく実態参照) からバグって表示される。なんですか。いぢめ食らってますか僕。
script じゃダメっぽいな。textarea だけか。
で、いつリダイレクトのほうの URL に書き換わるんだろう。