セレクタの最後にはスペース入れようよ。ルールセットの中はインデントしようよ。宣言のコロンのあとにスペース入れようよ。

  1. トップ
  2. css
  3. 他人の CSS なんて読むものじゃない
  1. トップ
  2. web
  3. 他人の CSS なんて読むものじゃない

先々週友人と集まったとき、断片化の話をした。というのもどっかのインタビューでBURGER NUDS が日本語で洋楽みたいな感じをとか言っていたからなんだけど、URL を忘れてしまったので探し出した。んで見つけたのが BURGER NUDS

かなりまえのものだけど意外にも残ってた。残ってなくても Web Archive があるけど。

該当部分がすごく印象が濃かったんだけど、他の部分も今読むと面白い。

  1. トップ
  2. music
  3. BURGER NUDS のインタビューを再読する。
  1. トップ
  2. net
  3. BURGER NUDS のインタビューを再読する。

/img/remains/title.jpg

そろそろいぢるの飽きたので公開。

#top の画像に微妙なトリック使ってファイルサイズ軽減。NULL::something の部分は別の画像にして重ねてある。おかげで全体的に圧縮率を上げられる。1px バグで時々ズレる。

  1. トップ
  2. css
  3. 新しい CSS を適用
  1. トップ
  2. web
  3. 新しい CSS を適用

http://null.lowreal.net/d/latest.rdf が登録されしまっていて、301 Moved Permanently と Location: http://lowreal.net/logs/latest.rdf を投げているのだけど、いつまでたっても更新されない。更新されている人とうちとの違いがわからん。

3日様子見のあと更新されるとか書いてあったと思うんだけどなぁ。

  1. トップ
  2. web
  3. Bloglines がいつまでたっても新しいほうを読んでくれない
  1. トップ
  2. service
  3. Bloglines がいつまでたっても新しいほうを読んでくれない

CGI から extconf.rb 起動させたら have_library で異常に時間がかかって Kill される。しかたないのでコメントアウトして強制的に Makefile 作らせて make してみたけど Resource temporarily unavailable で進まない。

FTP も NLST コマンドが通らないことが多い。謎すぎ。

SFTP で接続しても一定時間で予期しない切断をされる。ダメすぎ。

  1. トップ
  2. xrea
  3. s63.xrea.com がどう考えてもぶっとんでおかしい

Flickr: Creative Commonsピアノの鍵盤の写真を見たのが昨日の夜。一時間ぐらいで他のやつとてきとーなことして年賀状作成。たぶん作り直すんだろうな、と思いつつ。

今日の夕方になってそれ派生させた CSS を書き始める。どう考えてもリキッドにならなくて、いっそ固定レイアウトにしちまえよという悪魔のささやきに微妙な抵抗をしながら、適当に CSS 書いていると、ナイスな偶然に見舞われ一件落着。面倒くさかったけど……んで、さっきクロスブラウザ化を終える。テスト用のドキュメント作ってスクロールして眺める。ひたすら眺める。とりあえず眺める。そうやって眺めているとモニタに可愛い女の子が見えてくるがそれは幻想だから気をつけろ、と言い聞かせる。どうでもいいけどタオルが耳鼻科の臭い (ネブライザー) を放っている。なんだこのタヲルわっ。

さっき気付いたんだけど、今のスタイルになってから一年ほどになるらしい。なんか無駄に長いこと適用してんなぁ。そして長いこと適用していると、別のスタイルを適用させるのが怖くなってくる。何が怖いって共通 CSS (base.css) に、そのスタイルに微妙に依存するルールとか書いちゃっているからなんだよね。頭悪いな。

一旦ブラウザスタイルをリセットする CSS をかませようと思ったんだけど、読み込むファイルが増えるのでやめた。base.css に書いちゃうと別のスタイルがおかしくなるし……

そんなこんなで map 要素は Opera で inline である罠にひっかかったりした。map なんて使ってる人少ないから気にしないんだよな。

  1. トップ
  2. css
  3. カススタスタタ、タラスタタ
  1. トップ
  2. web
  3. カススタスタタ、タラスタタ

"\n\n".replace(/$/, "!") //=> "\n\n!"
"\n\n".replace(/$/m, "!") //=> "!\n\n"
"\n\n".replace(/$/mg, "!") //=> "!\n!\n!"

問答無用で \n の前にマッチすると思ってた。m つけなければ \Z っぽく使えるのね。

  1. トップ
  2. script
  3. ECMAScript RegExp $

ふと気がつくと一昨日やったことなんて微塵も覚えていないのだけれど、こうやって日記を書いていると一応「何か」をやっていたことはわかる。不思議なことだ。

tDiary を使って日記をつけはじめたのが 2003-08-20 らしい。それより前も PHP で書かれたクソスクリプトを用いて書いていた。手元には一切データが残っていないので、Web Archive で調べてみると 2003-02-04 から独り言とかいう名前で書いていた。クソみたいな HTML ソースだなぁ。でも2年前の日記はクソみたいな HTML より吐き気を催す危険物。どうでもいいけど NULL::something っていう名前は 2003-02 - 2003-04 の間についたらしい。へぇ。

だんだん一日に書く文章量が増えてる。なんでだろう。余計なことくっつけすぎなのかな。

それにしてもその日記を書いたのが2年間前とはとても思えない。もっと前に思える。それっぽいウェブサイトを構築できるようにはなったけれど、それ以外のことはなにもできていない。しかもそのウェブサイトを構築できるというのも趣味の域を出ていない。

俺はプログラム (とりわけスクリプト) の話をよくするけど、本当のところ殆どプログラムなんて書けない。頭が普通についていけない。多くの場合、俺の書くスクリプトは他人の考えたアルゴリズムをいくつか組み合わせたにすぎない。レゴを組み立てるようなもんだ。考える必要のあるパズルではなくて、積み木。それに俺が思いつくアイデアは既に実装されているのでアルゴリズムを新たに考える必要性があまりない。

願わくば、イメージをそのままウェブサイトのデザインにしたり、文章にしたりしたい。今のところ手が勝手に何かを作るのを見てイメージを逆算している感じでしかない。数うちゃ当たる、みたいな。この方法は趣味ではいいけど、作りたいイメージをすぐに作れるわけじゃない (手が作ってくれるのを待つしかない) から責任があるときにこの方法は使えない。

それにしても責任という言葉はあまりに重いと思う。義務と言い換えてもいい。少し前によく書いていた「頑張れ」も、義務を追加する言葉になりえる。素直に受け取れといわれても、それはチャーハンに混ぜられた嫌いな食べ物みたいなものだから、どうしようもない。

日記の話からだいぶズレたけど、結局俺が言いたいのは、日記を書くのがそれなりに楽しいことだっていうこと。

  1. トップ
  2. thinking
  3. 日記・日記
  1. トップ
  2. life
  3. 日記・日記

某サイトに 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

excludez

  1. トップ
  2. blosxom
  3. entries_kache & wikieditish.cgi
  1. トップ
  2. web
  3. entries_kache & wikieditish.cgi
  1. トップ
  2. script
  3. entries_kache & wikieditish.cgi

最近 Gecko -> IE と確認して終わったなぁって感じで Opera で見ると見事に崩れることが多い。やれやれ。Gecko 以外のレンダリングエンジンいらんよ(素

でもなんか Gecko も border: none な状態だと margin だかなんだかが盛大にぶっとんだりする。なんなんだ。

  1. トップ
  2. css
  3. CSS Opera
  1. トップ
  2. web
  3. CSS Opera

学校で暇つぶしにドキュメント眺めていたらメソッドが増えていたのでちょっといぢってみる。cygwin 版が微妙に古く、mingw 版はまともに動かないとか言ってたら kiyoya さん がビルドしてくれた。ありがたう。

結論から言えば何もできなかった。blosxom 劣化クローンを作れないかなぁと思っていたんだけど、途中で完全にめんどうになってやめた。んで、もうちょい楽なのを考えていたら Tropy が浮かんだので作ってたんだけど、もうちょいってとこで強制終了連打されたので諦めた。Win32 だからかもしれないが。

join の位置がおかしいのはどうにかならないんだろうか。List にあるべきメソッドだよなぁ。

SequenceString の区別がかなりうざい。"literal" は immutable Sequence とか言われて、直接 "literal" replaceSeq("li", "il") とかやることができない。エラーがでる。Sequence clone appendSeq("literal") replaceSeq("li", "il") とかやる必要がある。しかしながら appendSeq にバグがあるっぽく強制終了をよく食らう。よくわからん。

Tropio: Tropy クローン試行の残骸。動きません。動くかもしれないけど俺にはムリ。

  1. トップ
  2. script
  3. Io (iolanguage) いぢくる。
  1. トップ
  2. io
  3. Io (iolanguage) いぢくる。

電撃 hp のインタビューの写真を見ているとどうしても胸が痛くなる (謎) んだけれど、例えばあの写真が、音楽と人の1ページであったり、あるいは Web Designing に1ページであったりしたら、こんな気持ちにはならないんだろうなぁ、と考えたところで、環境の重要さを再確認した。

誰が悪いわけじゃなくて、その写っている人が悪いわけじゃなくて、しかも誰にもどうしようもないことであるから、アレなわけですよ。

  1. トップ
  2. thinking
  3. 環境光

久しぶりに SONIC DEAD KIDS を聞きなおす。やっぱ、全然今のアートとは違う。昔のほうが好きだ、とあらためて思った。一番好きなのは MISS WORLD だけど。

  1. トップ
  2. music
  3. レモン畑であの娘は

はてなの入力欄で動く xml-modeそれのナロー化 css-mode

バグバグだけどなんか今日はもうやる気しない。留年しそうなんだもん。一個単位数え間違えてた。これから軽く必死こいても、あがれる確立20%ぐらい。はぁーうまくいかない。

  • インデントしないエリアにバグ。閉じた直後の RET がおかしい。いままでずっと CDATA で囲ってたから気付かなかった。
  • css-mode の開き括弧直後の RET がおかしい。
  • 補完リストの位置がおかしい。offsetLeft がおかしいのか?
  • はてなのエリアだと右下の広げるやつを一回やっとかないと横に伸びる。はてなの JS とのコンフリクト

物好きの方がいたらどうぞ。eta.user.js

余計なことしなくていいよモード (謎) は M-x c RET

  1. トップ
  2. javascript
  3. GreaseMonkey スクリプトのデバッグが激しく面倒くさい
  1. トップ
  2. firefox
  3. GreaseMonkey スクリプトのデバッグが激しく面倒くさい
  1. トップ
  2. script
  3. GreaseMonkey スクリプトのデバッグが激しく面倒くさい
  1. トップ
  2. xml
  3. GreaseMonkey スクリプトのデバッグが激しく面倒くさい

XML 宣言を省略したことにより、IE で描画モードが変わっていたせいみたいだ。唐突に思い出して omit-xml-declaration="no" にしたらなおった。でも CSS で解決する方法がないっぽいのはどうすればいいんだろ。標準モードで描画させないほうがいいんじゃないか。

  1. トップ
  2. css
  3. なぜホームページだけ表示が崩れていたか
  1. トップ
  2. web
  3. なぜホームページだけ表示が崩れていたか

ちゃんとエラークラス吐くバージョンがリリース。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

スレッドの切り替えってどういうタイミングなんだろう。

  1. トップ
  2. xslt
  3. ruby-xslt 0.9.1
  1. トップ
  2. ruby
  3. ruby-xslt 0.9.1
  1. トップ
  2. xml
  3. ruby-xslt 0.9.1

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 になりまくる。いぢめ。

  1. トップ
  2. xrea
  3. visitors on xrea
  1. トップ
  2. log
  3. visitors on xrea

違いがわからんうえに、ちゃんとキーボードと対応してない。英語キーボードだとちゃんと対応してんのか?

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なんだろう。わからん。

  1. トップ
  2. javascript
  3. Event.which, Event.charCode, Event.keyCode
  1. トップ
  2. script
  3. Event.which, Event.charCode, Event.keyCode
  1. トップ
  2. dom
  3. Event.which, Event.charCode, Event.keyCode