前回 (2004-12-01) と全く同じ。

  1. Cron のメールが来ない。
  2. 前日のメールには Killed が含まれてる (でも見る限り Namazu ではなくて、変換している Ruby スクリプトが殺されてる)
  3. NMZ.lock2 が残っている。
  4. NMZ.lock2 を削除して mknmz すると検索結果がズレる。
  5. インデックスファイル全削除で対処。
  • なぜ Kill されるのか。
  • なぜ NMZ.lock2 が残るのか。
  • なぜ検索結果がズレるのか。

わかんねーw

  1. トップ
  2. web
  3. Namazu Cron

IE でもぐにゅーんってなるようにした。情報はでない。高さが auto だから計算できない。その代わり title 属性は削除しない。

とりあえず Gecko と IE で動いて、Opera で確認したらダメ。仕方ないのでブラウザ振り分けコードがいっぱいちらばってる。うぜー

問題点は position: relative なのに、元の位置で大きさが反映されちゃうことだったわけ (後続する要素がズレる) なので、相殺 margin 仕掛けて解決した。relative である限りは margin しかけようが何しようがいいはず (たぶん) だけど、Opera (7.6 preview) だと崩れましたみたいな。

  1. トップ
  2. web
  3. Album 画像のぽぷあぷの続き IE
  1. トップ
  2. music
  3. Album 画像のぽぷあぷの続き IE

村。人たくさん。復讐。「何であっちには誰もいないんだ?」。葬儀屋。学校。階段。スキー。

  1. トップ
  2. self
  3. 夢。葬儀屋

デフォルトスタイルシートをクリスマス風に。クリスマスだから何だっつう勢いプラス赤と緑かpgrみたいな……

  1. トップ
  2. web
  3. クリスマス風に

病院の中の温泉。海の中の温泉。ボーイ。話すのが遅い。小学生。写真。制服。小説を書く体育教師。

  1. トップ
  2. self
  3. 夢・温泉めぐり

アルバム画像の下にアルバムの情報を表示するようになった

opacity とか使ってる。IE はそもそも無理ですよ。Opera は特に対策しなくてもそのままいけたっぽい。

かなり微妙と思われるのは、ブラウザデフォルトのツールチップを消すために title 属性とかを DOM から消しちゃってるところ。そういう系ブラウザが Javascript をどの程度解釈するかよくわからないけど、もしかしたら結構アレすぎるんじゃないかとか思ったりもする。どうなんだろ。

ブラウザのツールチップを消す方法が他に思いつかないんだよなぁ……stopPropagation とかでもしかしたら?とか思ったらできなかった。切ない。

前回に続き例の画像のジャケットがアートなのはアートのジャケットは全体的に好きっつうかかっこいから。それ関係で amazon に Requiem for Innocence のジャケット画像 (が中でも一番好き) がないのがすげーアレなんですけど。

  1. トップ
  2. web
  3. Album 画像のポプアプの続き
  1. トップ
  2. music
  3. Album 画像のポプアプの続き

コードに色づけ Firefox でしか試してません。Opera ではもしかしたら動くかもしれないけれど、IE では絶対動きません。コアな部分 (つまりコードをマークアップするとこ) はブラウザにあんまり依存しないみたいなので、ブックマークレット化する部分をクロスブラウザすれば OK だけど面倒臭い。

  1. ブックマークレット起動
  2. 色づけしたいテキストをクリック (カーソルが I ビームになるとこ)
  3. プロンプトに使用するシンタックスを入力。

ECMAScript, Ruby, Lisp, XML, CSS, PHP, Io, Perl が適当に色づけ可能だと思うけど Perl はよく知らないし、Lisp はそもそもキーワード的なものがないので微妙。Javascript も JScript も ActionScript でも ECMAScript のスーパーセットである限りは ECMAScript でそこそこ色づけできるはず。HTMLXML でソレっぽくなるはず。

このスクリプトは少なくともコード部だけは独立してマークアップされてる必要があります。

<p>ほげほげ</p>
<pre>code</pre>
<span>code</span>
<code>code</code>
<p class="foo">code</p>

上のは OK. 下のは NG

<p>ほげ<em>ほげ</em>うげ
code</p>

子要素を持った要素は無理 (テキストノードに兄弟要素があるとダメ) ってことっす。

巨大なコードをやると死ぬかも。でも俺は謝らない。

Opera で一応動くように修正。リンクに %22 とか含まないようにしたのと、中途半端な IE 対策 (コピペなので) を削除。

  1. トップ
  2. prog
  3. コードに色をつける bookmarkletcode coloring bookmarklet
  1. トップ
  2. web
  3. コードに色をつける bookmarkletcode coloring bookmarklet

昨日は12時ぐらいから18時ぐらいまで寝てた。日の光が気持ちよすぎた。それだけ寝てもまだ眠い。やりたくないことが多いときは眠くなる。現実逃避。

夢。見た夢。書こうと思ってたのに忘れてた。そして忘れた。そんなにいい夢じゃなかった。

  1. トップ
  2. life
  3. 寝すぎでも寝よう

Trackback URI がコピーしやすい用に Trackback URI (本体のほう) をクリックするとプロンプトに URI 表示するようにしてみた。まぁ Trackback 自体殆ど来ないし、来まくっても困るんですけど……コメントとか削除するシステム作ってないので手動削除だし。

  1. トップ
  2. web
  3. Trackback URI の UI
  1. トップ
  2. prog
  3. Trackback URI の UI

SWAN SONG (ART-SCHOOL) を聞いてて音量あげようとおもってキーボードに手を伸ばしたときにデジャヴ。部屋は机の上の蛍光灯だけ。もう眠い。でも寝たらネタが思いつかない。ネタ?

  1. トップ
  2. life
  3. デジャヴ

UA 文字列を Javascript から得るにあたり検索をかけてみたのだけど、UA 文字列にある文字列 (eg. “MSIE”) があるか調べるときに String.prototype.indexOf の結果が -1 であるかを調べているのが多かった。これはやっぱ String.prototype.match だと遅いとかそういう問題があるからなのだろうか……なんかダサいので今回自分は String.prototype.match を使ったけど、どうなんだろ。

if (navigator.userAgent.indexOf("MSIE") != -1)
// do something for MSIE
if (navigator.userAgent.match(/MSIE/))
// do something for MSIE

さらに && とか使おうとすると演算子の優先順位 (よく忘れる) とか考えることになって面倒臭い……

  1. トップ
  2. prog
  3. ua.indexOf("MSIE") != -1 ?
  1. トップ
  2. web
  3. ua.indexOf("MSIE") != -1 ?

pre に現れるコードを Javascript で着色 (Javascript でやってるのはマークアップ) してみる。重い?

少し前からこれがやってみたかったので class 属性に使用してる言語を書いていたりした。言語ごとにトークンを使いわけたようと思ってたわけだけど、実際そこまでやるのってどうなのよ、とか思い始めた。そのうちやってみて、いけそうだったら採用してみよう。

現状でもかなり重い気が……長くとれるトークンを増やせば (ループ量が減って) 軽くなるかもしれないけど微妙。実際一文字ずつループまわしてるからなぁ。やりすぎか。

Ruby と ECMAScript は別のトークンテーブル使うようにしてみた。別にパースしてるわけじゃない (スキャンだけ) なので微妙にアレな状況が既にいくつか思いつくわけですが……例えば式展開の引数で括ってるクオーテーションつかっちゃうとかが絶対おかしくなる。

それとループ回数を減らすために /[a-z][a-z0-9]*/i は identifer ってことにしてスキップしてる。

Lisp と XML もすっごい適当に加えた。

サンプル 重いので移した。

正規表現はブラウザ毎の違いが殆どない気もする。気付いてないだけかもしれないけど。

FF で右クリックから View Selection Source すると内部 DOM の内容もソースとして出てくるのが役に立った……

そもそもスキャナの実装が激しく間違ってたので修正。根本的な部分を変えたのでバグがあるかもしれない。

  1. トップ
  2. prog
  3. code をクライアント側で着色
  1. トップ
  2. web
  3. code をクライアント側で着色

Audioscrobbler で最近 Recent Tracks に聞いてない曲が混ざることがある。バンプ が車輪の唄のシングルカットしてたなんてそもそも知らないのに、それのカップリングのやつが Recent Tracks に混ざっていたりする。

無作為に混ざっているわけじゃないらしく?同じアーティスト聞いてると混ざるみたい?

  1. トップ
  2. web
  3. Audioscrobbler で他人のやつ混ざる

ポップアップしてみた画像

INTO THE WORLD :: ネタメモ とか見て、あーポップアップさせてーとか思って Javascript でポップアップさせてみた。

でかい画像と小さい画像を XHTML でどう関連付けるか考えたりするのが面倒なので全部でかい画像になってます。ブラウザにリサイズをまかせてます。小さい画像が汚いのはそのせいです。

IE だけ CSS の扱いがおかしいのでダメです。でも Opera と IE の区別がわからんので放置です。IE 知りません。

リサイズイン (っていうの?) ズームインするようにしてみた。リサイズアウト (ってい(ry) ズームアウトもやろうとしたけど Interval の競合?か何かでバグるのでやめた。ブラウザ判定を素直に UserAgent でやるようにした。偽装している人は偽装しているリスクみたいなものがわかっている人だからいいかと思った。MSIE が含まれている場合は処理しない。ただし、Opera が含まれている場合は処理をする。Opera が含まれている場合は画面の描画リフレッシュがおかしいので style.overflow をいちいち更新してる。っていう感じ。

  1. トップ
  2. prog
  3. Album 画像のポップアップ
  1. トップ
  2. web
  3. Album 画像のポップアップ
  1. トップ
  2. music
  3. Album 画像のポップアップ

赤本とスピーカー買いに新宿へ。赤本の値段を 1200 円だと思っていたので困った。

それはいいとして、新宿みたいな人が無駄に多いところは歩くだけでめちゃくちゃ疲れる。歩くのが遅いくせに道をふさいで歩いてるとかはしょっちゅうなわけだけど、まぁとにかくドコにいてもタバコかしょんべんの臭いしかしないというナニ。歩きタバコでもしてるのかと思って回りを見回してもパッっと見吸ってる人がいない。町に染み付いたにおいなのかなんなのか。

  1. トップ
  2. life
  3. 新宿

やらなければならないことが多すぎだけれど、やらなければいけないことは何時もやりたくないことだ。つまり、さっきまでやりたかったこともやらなければならないことになったらやる気がなくなる。そしてぎりぎりでやる。卒業文集とか完全に忘れてた。卒業できるかわからない (わらい?) のに書いておくとは不思議。

ヒーローが現れるべき状況だけれど実際現れない。脇役さえまだ出てきていない。エキストラが見え隠れするぐらい。

  • ヒーロー
  • 想像力
  • あこがれ
  1. トップ
  2. life
  3. MUST

昨日の cron メールにまた Killed が含まれて (HTML に変換する Ruby スクリプトで) いて、今日の cron メールが来なかった (この時点で謎すぎ)。さらに NMZ.lock2 が残っていた。NMZ.lock2 を削除して手動で cron tab に設定してあるスクリプトを実行してみると、とりあえず成功。まぁ……と予測しつつ一番新しいセクションのタイトル (must) を検索してみるとそのキーワードを全く含んでいないセクションがヒットする。前に起きた検索結果がズレるようなやつと全く同じ現象……仕方ないのでインデックスファイルを全部削除して mknmz やりなおした。何が原因かが全く解らない。

  1. トップ
  2. web
  3. cron & Namazu

"foo#{bar}baz"'foo'+bar+'baz' も同じで、 '+..+'#{..} になっただけなのに何か凄く便利。書きやすいのもあるし、文字列の纏まりがちゃんと引用符で纏まってるのがカッコイイ。

  1. トップ
  2. prog
  3. Ruby の式展開が好き

似たようなバイト配列が同じぐらいの数値になるハッシュ関数がなんとなく欲しいけどどうやればいいかサッパリわからねー。最終的にやりたいことはある文字列から自動的にカラーコードを生成されることなんだけど、まぁそれ自体が目的で何かに使うってわけじゃないわけですけれど……

似たような、っていう条件をとれば 既存の MD5 とかのハッシュ関数使えば超簡単に実装できる。むしろ実装っていうほどのものじゃなくなる。一行で終る。"#%06x" % (Digest::MD5.hexdigest(str).to_i(16) >> 104)

似ている っつうのが抽象的っつうかなんつーか……面倒だからいいか。

  1. トップ
  2. prog
  3. 似たようなのは似たように

飽きるまで Io。

case がないので作ってみる。

簡単なとこばっかやりすぎな気が。super とかの使いどころがわからない。正規表現が微妙な時点で実用性がうっすいんですけど……組み込んで初めて力発揮しそうな。すくなくとも CGI 作るのにはアドオンが弱すぎ。

メッセージ書かない (何もしないと意図する) とエラーになって使えないのでコメンツアウト。邪魔なだけ。

  1. トップ
  2. prog
  3. iolanguage case-when

むー。長く書けば書くほど何やってるか分からなくなるなぁ。Lisp に似てる。なんていうか、コメントが必要な言語だ……

  1. トップ
  2. prog
  3. iolanguage