2004-12-01 ========== CSS/Ruby -------- Reference URI: http://lowreal.net/logs/2004/12/01/1 Written Time: 2004-12-01T02:15:44+09:00 Tags: web prog スキャナ&パーサーだけで力尽きた…… racc [css.y](/2004/css.y) ホントはアクション部分も少し書いたんだけど、どうも上手くいかないので削除って、とり あえず分離させておくことにしてみた。パーサーから構文木作るところって普通はどういう 風に実装するだろう。再帰定義の部分で汚くなっちゃうんだよなぁ。スーパー簡単なサンプ ルが欲しい…… あーあと、Invalid なものが突っ込まれたとき、その部分を無視してパースを続ける、って いうのはどうやって書くんだろう。謎ががががが。 パースエラーは error に還元される。だから、右辺の正しい場所に error を置いとけば無 視できると。CSS (Cascading Style Sheets) の ruleset を処理中にパースエラーが起きたら ruleset : error とか書いておけばそこ を飛ばして次のやつを探す?みたいな? 適当にやってみよう。 error トークン書くと on_error 呼ばれないのか。なんかどういう風にエラーを処理するの かわからん。 Namazu ------ Reference URI: http://lowreal.net/logs/2004/12/01/2 Written Time: 2004-12-01T03:26:57+09:00 Tags: web soft なんだか今度は Done までいかずに死んだらしくインデックスが壊れた (?) らしい。新しいファイルが追加され てなかった。インデックス削除したらなおった。 正確には追加されてるみたいなんだけど、検索すると別の文書がヒットする。ポインタ (? ) がズレてる感じ。二回目だ…… 2004-12-02 ========== CSS/Ruby -------- Reference URI: http://lowreal.net/logs/2004/12/02/1 Written Time: 2004-12-02T01:29:20+09:00 Tags: web prog 思いつきでごにょったら Ruby のオブジェクトとして再現できた。めでたしめでたし。んで ごちゃってみたけど用途すくな。読み込むだけだからなぁ…… 2004-12-03 ========== REXML の謎。 ------------ Reference URI: http://lowreal.net/logs/2004/12/03/1 Written Time: 2004-12-03T01:59:27+09:00 Tags: web 何だか知らないけど [文字列から Source をそれっぽくやるハック](my:2004-10-22#s2) が XREA の鯖上ではできない。uninitialized constant REXML::Parsers::TreeParser というエラーが出てしまう。ローカルだと上手くいくんだけどなぁ……意味わからん。な んでだろう? ってまさかと思ったら site_ruby に新しい rexml が入ってた。めんどくさ…… build メソッドを Ruby デフォルトについてくるほう (の document.rb) に書き換えた。動 いてるもより。これで view-image でファイルリストも RDF (Resource Description Framework) として渡すように。RDF (Resource Description Framework) to XHTML (Extensible Hyper Text Markup Language) が汚いけど仕方ない。しばらくやりたくない。 syrup16g DVD? ------------- Reference URI: http://lowreal.net/logs/2004/12/03/2 Written Time: 2004-12-03T10:44:07+09:00 Tags: music [syrup16g DVD発売 - daimas の日記](http://d.hatena.ne.jp/daimas/20041202) チョーキモチイイ? ライブとか全然いけないから、DVD (Digital Versatile Disc) とか嬉しい。 Ruby における elsif ------------------- Reference URI: http://lowreal.net/logs/2004/12/03/3 Written Time: 2004-12-03T11:28:45+09:00 Tags: prog Ruby の elsif が嫌い。elsif 書くなら case & when 使う。なんか elsif ってソースのバ ランスが変。 if a =~ /foo/ # doelsif a =~ /bar/ # doelsif a =~ /baz/ # doendcasewhen a =~ /foo/ # dowhen a =~ /bar/ # dowhen a =~ /baz/ # doend 夢。6時間と学校 --------------- Reference URI: http://lowreal.net/logs/2004/12/03/4 Written Time: 2004-12-03T18:14:41+09:00 Tags: self 笑っていいとも見てたら寝てて、気付いたら6時。 変な夢を見た。茶色い変態でデブなおっさん。バレーボールが得意で厳つい数学教師。校庭 に入る口実を作るためにソフトボールを投げ込む生徒。途中で海を見た気がする。あんまり 覚えてない。 2004-12-04 ========== DNA checksum ------------ Reference URI: http://lowreal.net/logs/2004/12/04/1 Written Time: 2004-12-04T00:32:43+09:00 Tags: web life DNA (Deoxyribonucleic Acid) をデジタル化して CD (Compact Disc) か何かに記録するサービスとかやったら面白そうなのに。どっかの研究所で。 ある意味究極の個人情報だから色々めんどくさそ。 むしろ、何かこう、適当にサンプル与えるとどんどんデジタル化する機械って作れないのか な。 XML の属性の名前空間 -------------------- Reference URI: http://lowreal.net/logs/2004/12/04/2 Written Time: 2004-12-04T00:59:06+09:00 Tags: web ここ最近気になっていたのでちゃんと解消しておこう。基礎が出来てなきゃダメダメ。 まず重要なのは、属性にはデフォルトネームスペースが適用されないのにされると勘違いしていたこと。属性と要素では属する partition が違う。接頭辞がな い属性がよくある (たとえば XHTML (Extensible Hyper Text Markup Language) とか) せいで完全に勘違い。 同じように見える属性でも厳密には違う場合が存在する。見た目的には接頭辞がついている 属性と、付いていない属性では差がある。 この例で attr="ex" と f:attr="ex" は属している名前空間は同じにも関わらず展開すると異なる。これも partition の違い。 partition には三つあって、一つは全ての要素が属するとこ。あとは属性の属する partit ion で、一つはグローバルな属性が属する (上の例では f:attr) とこ、もう一つは要素ご との別々な属性が属する (上の例で attr) とこ。かなーりややこしい! partition の種類は三つ。一つは要素が属する partition で、これは特に問題にならない でそのまんま。属性は残りの二つのどちらかに属するんだけどこれが面倒くさい。違いは名 前空間にグローバルかローカルか。接頭辞をつける属性は名前空間にグローバル。接頭辞を つけない属性は要素名を経由する (ローカル)。たぶんこれは展開された名前とかを見るとわかりやすいと思う。 の attr="ex": {http://example.com/foo}far@attr f:far に属している attr という感じ。 far を経由して認識 (っていうのかな) される。 の f:attr="ex": {http://example.com/foo}@attr b:bar は関係なく、名前空間 URI (Uniform Resource Identifer | Universal Resource Identifer) がそのまま属性の名前にくっつく 接頭辞をそのまま名前空間の URI (Uniform Resource Identifer | Universal Resource Identifer) に置き換える (ようは展開することなんだけど) だけでだいぶイメージしやすいと思う。 一般的な XML (Extensible Markup Language) では (XHTML (Extensible Hyper Text Markup Language) とかじゃなくて) 普通接頭辞をつけることになりそう? この辺わかってない。むしろ要素 ごとに別々の意味をもつ要素を定義できるかっつうとできないような。 - [XML名前空間の簡単な説明](http://www.kanzaki.com/docs/sw/names.html) - [XML名前空間の落とし穴](http://www.atmarkit.co.jp/fxml/ddd/ddd001/ddd001-namespaces1.html) - [XML-NS Main Spec.](http://www.y-adagio.com/public/standards/tr_xml_ns/annexa.htm#ns-breakdown) バカすぎるスペルミスを修正。 気になっていたことを一つ試したのでメモ。 としたときエラーになるか、ということと、実際 XPath (XML Path language) からはどちらにもアクセスできるのかということ。結果的にはエラーにならないし、XPath (XML Path language) からはどちらにもアクセスできる。f:foo/@f:attr = 'a1', f:foo/@attr = 'a2' XML (Extensible Markup Language) Schema についてで [なぜ属性宣言を避けるべきか](http://www.horobi.com/xml/XMLSchemaDosAndDONTs.ja.html#avoid_attribute) ってのがあった。これは XML (Extensible Markup Language) 名前空間の partition を理解していればひっかかりにくい (ひっかかっても直ぐに気付け る) とこだなぁ。 :first-letter & :hover on Gecko ------------------------------- Reference URI: http://lowreal.net/logs/2004/12/04/3 Written Time: 2004-12-04T02:39:43+09:00 Tags: web soft [404 : :first-letter と動的擬似クラス](http://404.junkwork.net/2004/12/040157) そんなわけでそういう修正をしてみた。 #content .section h2:first-letter { color: #09f;}#content .section h2 a:hover: after { content: ""; line-height: 0;}空文字でも効果があるみたい。ようは content の指定でスタイルの指定しなおし (?) が働 けばいいらしい。 line-height: 0 は何か知らないけど高さが変わって、後続するやつが全部ピコピコするのをなくすため。 関係ないけど擬似をずっと模擬って読んでいた。アフォすぎ! CSS を RDF で ------------- Reference URI: http://lowreal.net/logs/2004/12/04/4 Written Time: 2004-12-04T18:14:03+09:00 Tags: web なんていうか頭が悪いネタですよ。[css.rdf](/2004/css.rdf), [この RDF (Resource Description Framework) をそれっぽく XHTML (Extensible Hyper Text Markup Language) に](/view-rdf/2004/css.rdf) 2004-12-05 ========== 延長コード ---------- Reference URI: http://lowreal.net/logs/2004/12/05/1 Written Time: 2004-12-05T14:18:11+09:00 Tags: life 先日駅で延長コードだけひっかけられて持っていかれたので、仕方なく新しいのを買おうと 思った。近くで売ってそうなところを見てみた。唯一あったとこ (ツタヤ) で 760 円だっ た。ぼったくりだろコレ。オス・メスプラグがそれぞれ 100円 & コード 1m で 760 円もい くわけない……ついでに今まで使っていたやつは前に買ったヘッドフォン (3k ぐらい) に ついてきたやつ。コードが 760 円もしたら笑える。 xyzzy で前の行のインデントを保持して改行する。 ---------------------------------------------- Reference URI: http://lowreal.net/logs/2004/12/05/2 Written Time: 2004-12-05T16:16:22+09:00 Tags: soft ![C-RET 前の行でしたあとは、前の行の空白を保持してインデントする。](/2004/1205_xyzzy C-RET (C-j) で前の行のインデントを保持して改行はできるんだけど、タブとスペースが混 じっている場合スペースがタブに変わっちゃうのが微妙に困る。 (自分だけで使うなら全く 困らないけど、タブ幅が違う環境に持っていくと困る) ; 前の行の空白状態を保持するように。(defun indent-relative () (interactive "*" ) (delete-horizontal-spaces) (insert (save-excursion (goto-b ol) (skip-chars-backward " \t\n") (goto-bol) (looking-at "^[ \t]*") (buffer-substring (match-beginning 0) (match-end 0)))))cmds.l に定義されている indent-relative() を .xyzzy か siteinit.l で再定義。弊害あるかもしれない。 xyzzy ruby-mode --------------- Reference URI: http://lowreal.net/logs/2004/12/05/3 Written Time: 2004-12-05T22:35:24+09:00 Tags: soft 改変版のほうを使っているんだけど、indent-current-buffer とかでインデントしたとき異様に遅い (カーソルが動くのが見える) ……こういうものな のかな。部分的に一括してインデントしたいときは Mark & indent-region してみてる。むー。 てか .lc 消して試してみたら同じ速度だなぁ……バイトコンパイル効いてない?再ダンプしてなかった。 .lc 消したらむしろありえない。 2004-12-06 ========== 期末テスト ---------- Reference URI: http://lowreal.net/logs/2004/12/06/1 Written Time: 2004-12-06T01:40:53+09:00 Tags: life 実は既に今年度の授業が全て終了 (3学期は授業がない) して、期末テスト2日分が終わって いたりするわけだけど、期末テストの期間に入ると、既に休みに入った気分になって微妙に 困る。あーむしろ英語ライティングで脅されてる (謎) のに何もやらずに試験に臨むとかア ホすぎる。そういえば中間でうけそびれたやつって期末でとらないとヤバイんジャマイカ… … いろいろなことがぼーっとしてるせいで遅れてる。遅れてる。願書請求とかやってなかった とか。あぶねー。12月なのに過去問もやってねー。 あー XML (Extensible Markup Language) 名前空間とか試験にでませんか。でも XML (Extensible Markup Language) 全般が出るなら XML (Extensible Markup Language) Schema とか、既に古いけど健在な DTD ももっとちゃんとやっとくべきじゃないか。いや待てよ、XSLT (XSL Transformations) もまだしらない要素とか、知っていても使ったことがない要素があるな。そういえば RDF (Resource Description Framework) のクラスのヒエラルキーとか理解できてないな。あーこれ冬休み中にやっとく鹿。って、 いやだから受験科目じゃありませんから! 残念。 Programming Language Io ----------------------- Reference URI: http://lowreal.net/logs/2004/12/06/2 Written Time: 2004-12-06T11:32:13+09:00 Tags: prog ちょっと触った感じではいい感じ。ソースがそこそこ綺麗に書ける。大規模になったときは わからないけども。全部オブジェクト、と考えていいのかな。以下 Io (プロトタイプベー ス) と Ruby (クラスベース) と ECMAScript (プロトタイプベース) のコード片を比べてみ る。 foo := Object clonefoo test := method(x, x)write(foo test("test"))foo = Object.clonedef foo.test(x) xendprint(foo.test("test"))foo = new Object;foo.test = function (x) { return x;};WScript.Echo(foo.test("t est"));ECMAScript は標準出力の方法を定めていないので、ここでは WSH (Windows Scripting Host) の cscript から実行していることにしてみる。 パッと見た感じ殆ど同じ。Io の場合、スロットに新しく代入するときは := (=setSlot) で = (=updateSlot) は既に存在するスロットを更新する。updateSlot はチェインを辿って見つ けたスロットに代入し、該当するスロットがなければ例外になる。と思う。setSlot はレシ ーバに新しいスロットを作る。ついでに、Io のトップレベルで使われる関数のように見え るものもメソッドで、このメソッドのレシーバは見えない Lobby というもの。全てメッセ ージ。素敵だ。Ruby も関数のように見えるものは self を省略しただけ。ただ、Io の場合 は他の言語では制御構造に見えるものもメッセージ。if とか for とか while も Lobby の メソッド。素敵すぎ! 上のやつは違うみたいだ。Lobby の proto には Object が入ってるから実際には Object に定義されてるメソッドみたい。リファレンスにも getSlot とかは Object に書いてある 。 Ruby はクラスベースだからホントは比べにくいと思うけど、とりあえず特異メソッド定義 としてみる。特異メソッドは属するところがそのオブジェクト自身になる (普通のメソッド はそのオブジェクトのクラスに属してる) からちょっとプロトタイプっぽい。foo.clone で 特異メソッドも引き継げるしね。 ECMAScipt はソレっぽい。ECMAScript の = は常にレシーバにスロットを作るっぽい。自動的にチェインを辿って該当するスロットに 代入する方法はないぽい? 関係ないけど、Io のインタプリタを ck から実行すると、実行が終わったあとに全ての出 力がクリアされちゃう。ついでに起動するときになんか表示してる半透明ウィンドウが全部 フラッシュする。 放り込んだらそのまま動くとか書いてあったので、Linux Binaries をダウンロードして X REA にうぷろーど&実行権限付与。んで適当に foo.io とか作って実行権限とかやってみた けど必要なライブラリが足りないといわれて動かなかった。無念。 ムカツクから鯖上で build できんのかとやってみたけどリソース制限にひっかかって無理 だった。もうめんどい。適当にローカルで弄ってよう。 って。ああああああ。新しい鯖だと動く。 s101 で ioServer を動かしてみたらできた。何 も苦労せずにできた。泣けるよ。ひどく泣けるよ。 正規表現が標準で使えないのは痛すぎる。やばすぎる。 2004-12-07 ========== xyzzy io-mode ------------- Reference URI: http://lowreal.net/logs/2004/12/07/1 Written Time: 2004-12-07T14:38:08+09:00 Tags: prog soft [io-mode.zip](/2004/io-mode.zip), [io-mode.l](/2004/io-mode/io-mode.l) 簡単そうなので作ってみる。殆ど c-mode のパクりなわけだけど……結局インデントレベル 計算するところしか作ってないわけで、そしてそれも括弧しか使わない Io では数えるだけ なわけで的な。とはいえアフォだからかなり詰ったんですけども orz ioServer の Regex て何か変じゃありませんか。nextMatch と firstMatch が全く同じ挙動 名気がする。つーかマニュアル書くなら効果的なサンプルと一緒に書いて欲しいなって思う 。戻り値も書いてないこと多すぎ。むしろ最初から String replace に正規表現とれるよう にしれと。正規表現がデフォで使えないとかキツすぎて死にます。 [io-mode readme](/2004/io-mode/readme), iolanguage iolanguage 引数のデフォルト値 ----------------------------- Reference URI: http://lowreal.net/logs/2004/12/07/2 Written Time: 2004-12-07T16:16:20+09:00 Tags: prog リファレンスを見た限りではメソッドの引数を省略したときの値を指定できないっぽい。よ うは可変長変数を使うんだと思うんだけど、これまた長い。んなわけで適当にマクロ化する メソッドを定義しとく。もしかしたらこんなことやらないでももっといい方法があるかもし れない。 /* pos : 引数の位置 name : 代入されるスロットのキー (勝手に初期化) default : デフォルトの値 */Object opt := method(pos, name, default, if (send er doString("thisMessage argAt(" .. pos .. ")")) then ( sender doString(na me .. " := sender doMessage(thisMessage argAt(" .. pos .. "))") ) else ( sender setSlot(name, default) ))んで以下のように使う。 List join := method( opt(0, "sep", "") ret := "" self foreach(index, val ue, ret = ret .. value if (index < self count - 1) then ( ret = ret .. sep ) ) ret)l := List clone push("aaa") push("bbb") p ush("ccc")l join(", ") print //=> "aaa, bbb, ccc"l join print //=> "aaabbbccc"Ruby の Array#join っぽいことをしてみる。 String join というメソッドがあるけど何か このメソッドは位置がおかしいし、セパレータを引数にとれない。っぽい というのはデフォルト引数が "" きめうちだから。Io に $, がないから (なくていい) ってことです。あーあと再帰的に join してないや。to_s メソッドとかないからその辺もやってないし。 ようは List の中身が String 以外だと例外はきますよと。 どうでもいいけど if を書くときに then と else を使うのは構造的違和感がある。でも可読性はこっちのほうがいいし、case がないうえに if の引数として書く場合 elseif が書けないからどっちにしろ書くことにはなるんだけど。if の引数に全部書くほうはワンライナー向けかしら。 iolanguage Directory items -------------------------- Reference URI: http://lowreal.net/logs/2004/12/07/3 Written Time: 2004-12-07T21:14:33+09:00 Tags: prog 何で Directory が ioServer なのかはとりあえず置いておいて、Directory items が File しか返さない。Returns a list object containing File and Directory objects ですよ。*1 いや英文解釈が間違っているのかもしれないとか思いつつしかし常識的に考えて (まぁたし かに Directory も File ではあるけど) Directory を File として返さないだろうとか、 むしろ File としてしか返さなくて File にタイプを識別するメソッドがなかったら使えな いよねって思ったから File にそんなメソッドあるのかなって思ったらなかった。そういや File Primitive にはファイルの更新時間を取得するメソッドもない気が。つまるところ今 のデフォルトの Io では blosxom クローンは作れないっぽい。 てか Regexp, Directory を IoVM の Primitive に…… iolanguage メソッドの引数の評価 ------------------------------- Reference URI: http://lowreal.net/logs/2004/12/07/4 Written Time: 2004-12-07T22:19:20+09:00 Tags: prog 素朴な疑問にひっかかった。if とか else もメソッドで、引数にメッセージをとるけど、 何でこの引数は評価されずに渡されるんだろう。ちょっと解りにくいから実際にコードを書 いてみる。 if (Nil) then ( "not print" print) else ( "print" print)この場合もちろん not print は出力されないし、それが願う動作。しかしながら "not print" print も引数だから、メソッドに渡される前に評価されて not print と出力されるんじゃないかと悩んだ。というか正確に言えば if をユーザから定義すると きに評価されてしまってハマった。以下にハマったコードを示す myif := method(test, ifObj := Object clone ifObj test := test ifObj do ( mythen := method(msg, if (test, sender doMessage(thisMessage a rgAt(0))) self ) myelse := method(msg, if (te st isNil, sender doMessage(thisMessage argAt(0))) self ) ))m yif (Nil) mythen ( "nil" print) myelse ( "aaa" print)これは予想に反して nilnilaaa と出力される。引数が渡される前に評価されしまっているからだ。リファレンス見てても よくわからないので、適当に書き直していたらできた。書き直した結果を書いてみる。 myif := method(test, ifObj := Object clone ifObj test := test ifObj do ( mythen := method( if (test, sender doMessage(thisMessage argAt (0))) self ) myelse := method( if (test isNil , sender doMessage(thisMessage argAt(0))) self ) ))何が変わったかっていうと method の仮引数を書かないようにしただけ。仮引数を書くと評 価されてしまうらしい。微妙な罠。プログラミングガイドに明記してもいいじゃん! とは いえこれを踏まえてから読み直すと The thisMessage slot that is preset (see next section) in locals can be used to a ccess the unevaluated argument messages. と書かれていて*2 (強調はされていない) 頭がよければ thisMessage スロットには未評価なメッセージが入 っていて、仮引数を書かなくても呼び出せる。もしかして仮引数を書かなければメッセージ は評価されないんじゃないか、なんて推論できる (苦しい) かもしれないけど、俺には無理 ! 2004-12-08 ========== iolanguage case-when -------------------- Reference URI: http://lowreal.net/logs/2004/12/08/1 Written Time: 2004-12-08T02:04:51+09:00 Tags: prog 飽きるまで Io。 case がないので作ってみる。 簡単なとこばっかやりすぎな気が。super とかの使いどころがわからない。正規表現が微妙 な時点で実用性がうっすいんですけど……組み込んで初めて力発揮しそうな。すくなくとも CGI (Common Gateway Interface) 作るのにはアドオンが弱すぎ。 メッセージ書かない (何もしないと意図する) とエラーになって使えないのでコメンツアウ ト。邪魔なだけ。 iolanguage ---------- Reference URI: http://lowreal.net/logs/2004/12/08/2 Written Time: 2004-12-08T17:01:05+09:00 Tags: prog むー。長く書けば書くほど何やってるか分からなくなるなぁ。Lisp に似てる。なんていう か、コメントが必要な言語だ…… 2004-12-09 ========== 似たようなのは似たように ------------------------ Reference URI: http://lowreal.net/logs/2004/12/09/1 Written Time: 2004-12-09T00:35:59+09:00 Tags: prog 似たようなバイト配列が同じぐらいの数値になるハッシュ関数がなんとなく欲しいけどどう やればいいかサッパリわからねー。最終的にやりたいことはある文字列から自動的にカラー コードを生成されることなんだけど、まぁそれ自体が目的で何かに使うってわけじゃないわ けですけれど…… 似たような、っていう条件をとれば 既存の MD5 とかのハッシュ関数使えば超簡単に実装で きる。むしろ実装っていうほどのものじゃなくなる。一行で終る。"#%06x" % (Digest::MD5.hexdigest(str).to_i(16) >> 104) 似ている っつうのが抽象的っつうかなんつーか……面倒だからいいか。 CSS3 日本語訳 ------------- Reference URI: http://lowreal.net/logs/2004/12/09/2 Written Time: 2004-12-09T04:02:00+09:00 Tags: web [ウェブスタンダードの研究](http://zng.info/) 一部発見したのでメモっとく。 2004-12-10 ========== MUST ---- Reference URI: http://lowreal.net/logs/2004/12/10/1 Written Time: 2004-12-10T01:27:44+09:00 Tags: life やらなければならないことが多すぎだけれど、やらなければいけないことは何時もやりたく ないことだ。つまり、さっきまでやりたかったこともやらなければならないことになったら やる気がなくなる。そしてぎりぎりでやる。卒業文集とか完全に忘れてた。卒業できるかわ からない (わらい?) のに書いておくとは不思議。 ヒーローが現れるべき状況だけれど実際現れない。脇役さえまだ出てきていない。エキスト ラが見え隠れするぐらい。 - ヒーロー - 想像力 - あこがれ cron & Namazu ------------- Reference URI: http://lowreal.net/logs/2004/12/10/2 Written Time: 2004-12-10T03:57:25+09:00 Tags: web 昨日の cron メールにまた Killed が含まれて (HTML (Hyper Text Markup Language) に変換する Ruby スクリプトで) いて、今日の cron メールが来なかった (この時点で謎 すぎ)。さらに NMZ.lock2 が残っていた。NMZ.lock2 を削除して手動で cron tab に設定し てあるスクリプトを実行してみると、とりあえず成功。まぁ……と予測しつつ一番新しいセクションのタイトル (must) を検索してみるとそ のキーワードを全く含んでいないセクションがヒットする。前に起きた検索結果がズレるよ うなやつと全く同じ現象……仕方ないのでインデックスファイルを全部削除して mknmz や りなおした。何が原因かが全く解らない。 Ruby の式展開が好き ------------------- Reference URI: http://lowreal.net/logs/2004/12/10/3 Written Time: 2004-12-10T04:19:05+09:00 Tags: prog "foo#{bar}baz" も 'foo'+bar+'baz' も同じで、 '+..+' が #{..} になっただけなのに何か凄く便利。書きやすいのもあるし、文字列の纏まりがちゃんと引 用符で纏まってるのがカッコイイ。 2004-12-11 ========== Album 画像のポップアップ ------------------------ Reference URI: http://lowreal.net/logs/2004/12/11/1 Written Time: 2004-12-11T11:34:49+09:00 Tags: prog web music [![ポップアップしてみた画像](/2004/1211_popup-album](/playing) [INTO THE WORLD :: ネタメモ](http://run.main.jp/itw/index.cgi/memo/zphoto_aws.htm) とか見て、あーポップアップさせてーとか思って Javascript でポップアップさせてみた 。 でかい画像と小さい画像を XHTML (Extensible Hyper Text Markup Language) でどう関連付けるか考えたりするのが面倒なので全部でかい画像になってます。ブラウザ にリサイズをまかせてます。小さい画像が汚いのはそのせいです。 IE (Internet Explorer) だけ CSS (Cascading Style Sheets) の扱いがおかしいのでダメです。でも Opera と IE (Internet Explorer) の区別がわからんので放置です。IE (Internet Explorer) 知りません。 リサイズイン (っていうの?) ズームインするようにしてみた。リサイズアウト (ってい(ry) ズームアウトもやろうとしたけど Interval の競合?か何かでバグるのでやめた。ブラウザ判定を素直に UserAgent でやるようにした。偽装している人は偽装しているリスクみたいなものがわか っている人だからいいかと思った。MSIE が含まれている場合は処理しない。ただし、Opera が含まれている場合は処理をする。Opera が含まれている場合は画面の描画リフレッシュがおかしいので style.overflow をいちい ち更新してる。っていう感じ。 新宿 ---- Reference URI: http://lowreal.net/logs/2004/12/11/2 Written Time: 2004-12-11T15:48:21+09:00 Tags: life 赤本とスピーカー買いに新宿へ。赤本の値段を 1200 円だと思っていたので困った。 それはいいとして、新宿みたいな人が無駄に多いところは歩くだけでめちゃくちゃ疲れる。 歩くのが遅いくせに道をふさいで歩いてるとかはしょっちゅうなわけだけど、まぁとにかく ドコにいてもタバコかしょんべんの臭いしかしないというナニ。歩きタバコでもしてるのか と思って回りを見回してもパッっと見吸ってる人がいない。町に染み付いたにおいなのかな んなのか。 2004-12-12 ========== ua.indexOf("MSIE") != -1 ? -------------------------- Reference URI: http://lowreal.net/logs/2004/12/12/1 Written Time: 2004-12-12T00:40:50+09:00 Tags: prog web UA (User Agent) 文字列を Javascript から得るにあたり検索をかけてみたのだけど、UA (User Agent) 文字列にある文字列 (eg. “MSIE”) があるか調べるときに String.prototype.indexOf の結果が -1 であるかを調べているの が多かった。これはやっぱ String.prototype.match だと遅いとかそういう問題があるから なのだろうか……なんかダサいので今回自分は String.prototype.match を使ったけど、ど うなんだろ。 if (navigator.userAgent.indexOf("MSIE") != -1) // do something for MSIEif (navigator.userAgent.match(/MSIE/)) // do something for MSIEさらに && とか使おうとすると演算子の優先順位 (よく忘れる) とか考えることになって面倒臭い… … code をクライアント側で着色 --------------------------- Reference URI: http://lowreal.net/logs/2004/12/12/2 Written Time: 2004-12-12T03:00:30+09:00 Tags: prog web pre に現れるコードを Javascript で着色 (Javascript でやってるのはマークアップ) し てみる。重い? 少し前からこれがやってみたかったので class 属性に使用してる言語を書いていたりした 。言語ごとにトークンを使いわけたようと思ってたわけだけど、実際そこまでやるのってど うなのよ、とか思い始めた。そのうちやってみて、いけそうだったら採用してみよう。 現状でもかなり重い気が……長くとれるトークンを増やせば (ループ量が減って) 軽くなる かもしれないけど微妙。実際一文字ずつループまわしてるからなぁ。やりすぎか。 Ruby と ECMAScript は別のトークンテーブル使うようにしてみた。別にパースしてるわけ じゃない (スキャンだけ) なので微妙にアレな状況が既にいくつか思いつくわけですが…… 例えば式展開の引数で括ってるクオーテーションつかっちゃうとかが絶対おかしくなる。 それとループ回数を減らすために /[a-z][a-z0-9]*/i は identifer ってことにしてスキップしてる。 Lisp と XML (Extensible Markup Language) もすっごい適当に加えた。 [サンプル](/2004/color-code) 重いので移した。 正規表現はブラウザ毎の違いが殆どない気もする。気付いてないだけかもしれないけど。 FF (Mozilla Firefox | Final Fantasy) で右クリックから View Selection Source すると内部 DOM (Document Object Model) の内容もソースとして出てくるのが役に立った…… そもそもスキャナの実装が激しく間違ってたので修正。根本的な部分を変えたのでバグがあ るかもしれない。 Audioscrobbler で他人のやつ混ざる --------------------------------- Reference URI: http://lowreal.net/logs/2004/12/12/3 Written Time: 2004-12-12T20:01:44+09:00 Tags: web Audioscrobbler で最近 Recent Tracks に聞いてない曲が混ざることがある。バンプ (BUMP OF CHICKEN) が車輪の唄のシングルカットしてたなんてそもそも知らないのに、それのカップリングの やつが Recent Tracks に混ざっていたりする。 無作為に混ざっているわけじゃないらしく?同じアーティスト聞いてると混ざるみたい? 2004-12-13 ========== リファラスパム -------------- Reference URI: http://lowreal.net/logs/2004/12/13/1 Written Time: 2004-12-13T09:58:15+09:00 Tags: web life リファラスパム多すぎ。 それとカオナシの声が頭から離れないのを誰か助けてください。 2004-12-14 ========== コードに色をつける bookmarklet ------------------------------ Reference URI: http://lowreal.net/logs/2004/12/14/1 Written Time: 2004-12-14T00:44:08+09:00 Tags: prog web [コードに色づけ](javascript:s=document.body.appendChild(document.createElement('script'));s.language='javascript';s.type='text/javascript';void(s.src='http://lowreal.net/2004/mkupcode.js');) Firefox でしか試してません。Opera ではもしかしたら動くかもしれないけれど、IE (Internet Explorer) では絶対動きません。コアな部分 (つまりコードをマークアップするとこ) はブラウザに あんまり依存しないみたいなので、ブックマークレット化する部分をクロスブラウザすれば OK だけど面倒臭い。 1. ブックマークレット起動 2. 色づけしたいテキストをクリック (カーソルが I ビームになるとこ) 3. プロンプトに使用するシンタックスを入力。 ECMAScript, Ruby, Lisp, XML (Extensible Markup Language) , CSS (Cascading Style Sheets) , PHP (PHP: Hypertext Preprocessor) , Io, Perl が適当に色づけ可能だと思うけど Perl はよく知らないし、Lisp はそもそもキ ーワード的なものがないので微妙。Javascript も JScript も ActionScript でも ECMASc ript のスーパーセットである限りは ECMAScript でそこそこ色づけできるはず。HTML (Hyper Text Markup Language) も XML (Extensible Markup Language) でソレっぽくなるはず。 このスクリプトは少なくともコード部だけは独立してマークアップされてる必要があります 。

ほげほげ

code
codecode

co de

上のは OK. 下のは NG

ほげほげうげcode

子要素を持った要素は無理 (テキストノードに兄弟要素があるとダメ) ってことっす。 巨大なコードをやると死ぬかも。でも俺は謝らない。 Opera で一応動くように修正。リンクに %22 とか含まないようにしたのと、中途半端な IE (Internet Explorer) 対策 (コピペなので) を削除。 [Coloring](javascript:s=document.body.appendChild(document.createElement('script'));s.language='javascript';s.type='text/javascript';void(s.src='http://lowreal.net/2004/mkupcode.js');) Only tested on Firefox1.0 and Opera 7 1. Launch bookmarklet 2. Click text node you want coloring 3. Input syntax using for coloring Now support ECMAScript, Ruby, Lisp, XML (Extensible Markup Language) , CSS (Cascading Style Sheets) , PHP (PHP: Hypertext Preprocessor) , Io and Perl syntaxes. But I don't know Perl syntax (esp. symbolic reference etc ...) well. Clicked node must not includes child elements. (In this case, prompt won't be sho wn.) 寝すぎでも寝よう ---------------- Reference URI: http://lowreal.net/logs/2004/12/14/2 Written Time: 2004-12-14T02:01:13+09:00 Tags: life 昨日は12時ぐらいから18時ぐらいまで寝てた。日の光が気持ちよすぎた。それだけ寝てもま だ眠い。やりたくないことが多いときは眠くなる。現実逃避。 夢。見た夢。書こうと思ってたのに忘れてた。そして忘れた。そんなにいい夢じゃなかった 。 Trackback URI の UI ------------------- Reference URI: http://lowreal.net/logs/2004/12/14/3 Written Time: 2004-12-14T03:00:56+09:00 Tags: web prog Trackback URI (Uniform Resource Identifer | Universal Resource Identifer) がコピーしやすい用に Trackback URI (Uniform Resource Identifer | Universal Resource Identifer) (本体のほう) をクリックするとプロンプトに URI (Uniform Resource Identifer | Universal Resource Identifer) 表示するようにしてみた。まぁ Trackback 自体殆ど来ないし、来まくっても困るんですけ ど……コメントとか削除するシステム作ってないので手動削除だし。 デジャヴ -------- Reference URI: http://lowreal.net/logs/2004/12/14/4 Written Time: 2004-12-14T22:35:24+09:00 Tags: life SWAN SONG (ART-SCHOOL) を聞いてて音量あげようとおもってキーボードに手を伸ばしたと きにデジャヴ。部屋は机の上の蛍光灯だけ。もう眠い。でも寝たらネタが思いつかない。ネ タ? www.pillows.gr.jp ----------------- Reference URI: http://lowreal.net/logs/2004/12/14/5 Written Time: 2004-12-14T22:42:29+09:00 Tags: web なんか CSS (Cascading Style Sheets) 使ってます!みたいなデザインになった。でもなんかちょっと…… 2004-12-15 ========== 夢・温泉めぐり -------------- Reference URI: http://lowreal.net/logs/2004/12/15/1 Written Time: 2004-12-15T10:44:57+09:00 Tags: self 病院の中の温泉。海の中の温泉。ボーイ。話すのが遅い。小学生。写真。制服。小説を書く 体育教師。 Album 画像のポプアプの続き -------------------------- Reference URI: http://lowreal.net/logs/2004/12/15/2 Written Time: 2004-12-16T02:54:28+09:00 Tags: web music [![アルバム画像の下にアルバムの情報を表示するようになった](/2004/1216_popup-album](/playing) opacity とか使ってる。IE (Internet Explorer) はそもそも無理ですよ。Opera は特に対策しなくてもそのままいけたっぽい。 かなり微妙と思われるのは、ブラウザデフォルトのツールチップを消すために title 属性 とかを DOM (Document Object Model) から消しちゃってるところ。そういう系ブラウザが Javascript をどの程度解釈するかよ くわからないけど、もしかしたら結構アレすぎるんじゃないかとか思ったりもする。どうな んだろ。 ブラウザのツールチップを消す方法が他に思いつかないんだよなぁ……stopPropagation と かでもしかしたら?とか思ったらできなかった。切ない。 前回に続き例の画像のジャケットがアート (ART-SCHOOL) なのはアート (ART-SCHOOL) のジャケットは全体的に好きっつうかかっこいから。それ関係で amazon に [Requiem for Innocence のジャケット画像](http://www.toshiba-emi.co.jp/domestic/artists/art-school/toct24879.jpg) (が中でも一番好き) がないのがすげーアレなんですけど。 2004-12-16 ========== 夢。葬儀屋 ---------- Reference URI: http://lowreal.net/logs/2004/12/16/1 Written Time: 2004-12-16T12:12:40+09:00 Tags: self 村。人たくさん。復讐。「何であっちには誰もいないんだ?」。葬儀屋。学校。階段。スキ ー。 クリスマス風に -------------- Reference URI: http://lowreal.net/logs/2004/12/16/2 Written Time: 2004-12-16T13:40:59+09:00 Tags: web デフォルトスタイルシートをクリスマス風に。クリスマスだから何だっつう勢いプラス赤と 緑かpgrみたいな…… 2004-12-17 ========== Namazu Cron ----------- Reference URI: http://lowreal.net/logs/2004/12/17/1 Written Time: 2004-12-17T13:13:13+09:00 Tags: web [前回 (2004-12-01)](my:2004-12-01#s2) と全く同じ。 1. Cron のメールが来ない。 2. 前日のメールには Killed が含まれてる (でも見る限り Namazu ではなくて、変換している Ruby スクリプトが殺されてる) 3. NMZ.lock2 が残っている。 4. NMZ.lock2 を削除して mknmz すると検索結果がズレる。 5. インデックスファイル全削除で対処。 - なぜ Kill されるのか。 - なぜ NMZ.lock2 が残るのか。 - なぜ検索結果がズレるのか。 わかんねーw Album 画像のぽぷあぷの続き IE ----------------------------- Reference URI: http://lowreal.net/logs/2004/12/17/2 Written Time: 2004-12-17T13:52:44+09:00 Tags: web music IE (Internet Explorer) でもぐにゅーんってなるようにした。情報はでない。高さが auto だから計算できない。 その代わり title 属性は削除しない。 とりあえず Gecko と IE (Internet Explorer) で動いて、Opera で確認したらダメ。仕方ないのでブラウザ振り分けコードがいっぱいち らばってる。うぜー 問題点は position: relative なのに、元の位置で大きさが反映されちゃうことだったわけ (後続する要素がズレる) な ので、相殺 margin 仕掛けて解決した。relative である限りは margin しかけようが何し ようがいいはず (たぶん) だけど、Opera (7.6 preview) だと崩れましたみたいな。 2004-12-18 ========== ジャケ買い?。 -------------- Reference URI: http://lowreal.net/logs/2004/12/18/1 Written Time: 2004-12-18T00:22:05+09:00 Tags: music web [#blosxom](http://hail2u.net/blog/blosxom/blosxom_room.html) にてちょっと kyo さん と話していて、うんちゃら (いきさつ説明するのが面倒になった) いろいろカコイイジャ ケを見せてもらったりしてみて、カコイイジャケ紹介する blog とかないの?とか。んでと りあえず自分用にアレなのを作ってみるかって感じ。かなぁ。 [ジャケ買い?](/jacket) 自分持ってないっつうか聞いたことないのもあるけど、ジャケット見るのはタダっつうか カッコイイジャケットは晒しといたほうがいいんジャマイカって感じで (むしろ教えてもら ったのとかメモっとくためなんだけども) とりあえず作ってみた。中間ファイルは普通に XML (Extensible Markup Language) 。 追加するスクリプトが汚すぎ (とりあえず動け的) なのでそのうち直したい。直したい 。いつ? ちなみにヤバ気なのは [This May Be the Year I Disappear / Recover](http://images-jp.amazon.com/images/P/B00062137G.01.LZZZZZZZ.jpg), [Green Mind / Dinosaur Jr.](http://images-jp.amazon.com/images/P/B000002LO1.01.LZZZZZZZ.jpg), [フェイクファー / スピッツ](http://images-jp.amazon.com/images/P/B00006HBF5.09.LZZZZZZZ.jpg)。女の子ばっかですねとか言わない。 ART-SCHOOL スカーレット ----------------------- Reference URI: http://lowreal.net/logs/2004/12/18/2 Written Time: 2004-12-18T02:36:29+09:00 Tags: music これって結構スルメだなぁ。なんか最近になってやっとうおみたいなとこを感じるようになった。 コメントの XML -------------- Reference URI: http://lowreal.net/logs/2004/12/18/3 Written Time: 2004-12-18T12:09:32+09:00 Tags: web 最初の頃だいぶ適当でここら辺の考えが甘かったわけで、オリジナルを保持することを考え なきゃなぁとか思った。今のところホワイトスペースで段落の区切りになっているけど、や っぱ一行ずつ l 要素とかソレっぽいのでマークアップして突っ込んだほうがいい。XHTML (Extensible Hyper Text Markup Language) にするときは 一行分 みたいにして display: block な感じ。むーできればはやくやったほうがいいだろうなぁ…… 1. 本体の XSLT (XSL Transformations) の修正。 2. 現在の XML (Extensible Markup Language) を l 使う形式に変換する XSLT (XSL Transformations) の作成・検証 3. スクリプトの若干の修正 ついでに URL (Uniform Resource Locator) にもリンク晴れるようにしたほうがいいか。使えるタグ制限とか上手くできないかなぁ。 2004-12-19 ========== Amazon ------ Reference URI: http://lowreal.net/logs/2004/12/19/1 Written Time: 2004-12-19T12:42:18+09:00 Tags: web 画像のナニがアレとかでと、規約読み直したらアソシエイト参加できそうジャマイカ的なの で、amazon から画像ひっぱってるところ (現状 /jacket, /playing) はアソシエイト ID くっつけるようにしたので、そういうのウゼーよって人はてきとうにコピペ (コピー・アンド・ペースト) すると良いと思います。謎すぎるなコレ。 生活 of winter vacation ----------------------- Reference URI: http://lowreal.net/logs/2004/12/19/2 Written Time: 2004-12-19T16:30:12+09:00 Tags: life 正確にはまだ試験休みなのはいいとして、ここ数日ずっとハイテンション。ちょっと怖い。ずっとは続かない。 とにかく想像力を失くさないようにしようと思う。とりもどせない。既にあんまり無いとこ ろが厳しい! 経験的想像力 (?) は外をもっと歩いたり、憂鬱さの沢山味わわないとダメ だから難しい。早く気付くべきだね。想像力について。 去年の自分のサイトを見てみたら今よりもっとすごく糞だった。おととしの見たらヤバすぎ た。しかも XHTML (Extensible Hyper Text Markup Language) とか、その他関連技術が自分の中である程度マトモになりはじめたのは今年だった。なん かもう学び始めてから二・三年たっている気がする。この一年はすごく長かったみたいだ。 それと日記に書く文章が無駄に長くなったりもしてる。過去の日記とか読むのは微妙に辛い (わらい) けど面白いもんだ。ウェブに公開しちゃうと自分で捨てちゃったやつまで残って いて笑える。消してくれ!とか思う。どうでもいいな。 アート & ASIAN (ry ------------------ Reference URI: http://lowreal.net/logs/2004/12/19/3 Written Time: 2004-12-19T21:23:05+09:00 Tags: music [狂人日記](http://www.art-school.net/cgi/diary/diary.cgi) とか、ネット上にも載ってる各種インタビューとかで木下氏が ASIAN KUNG-FU GENERATIO N がどうとかっていう話が結構出てきて微妙に驚いた。意外だった。むしろ嫌いな系統だと 思ってた。 どうでもよすぎてセクション切るか迷ったけど一応記録。 あーあと、LOST IN THE AIR っていうアルバムが出るらしくて楽しみだ。でも二月は永遠に 来て欲しくないな。 冬における夏 ------------ Reference URI: http://lowreal.net/logs/2004/12/19/4 Written Time: 2004-12-19T23:48:32+09:00 Tags: life imagination 冬に想像する夏は素敵だと思う。その、夏の中にいるときとは違って、木の緑色だったり、 いろんなもんの青さだったり、その他キラキラしたものしか浮かばないからいい。まーよう は夏が涼しければいいんです。だよね? つまりこういう幸せな世の中 (こう表現しざるをえないっていうかそうしないとアレ) では 冬が一番素敵な季節なんですよ。秋とか春とか夏は花粉症 (ブタクサ, 杉, イネ) もあるし ねー。 2004-12-21 ========== Jackets 15 ---------- Reference URI: http://lowreal.net/logs/2004/12/21/1 Written Time: 2004-12-21T04:35:50+09:00 Tags: music art - [404: イケてるジャケを15枚選ぶ](http://404.junkwork.net/2004/12/182353) - [hail2u.net - Weblog - ジャケ買い?](http://hail2u.net/blog/media/beautiful_jackets.html) っていう感じでループさせて[15枚セレクト](/2004/jackets-n)を作ってみる。コメント書くのめっちゃ苦手だ(w もうちょいページ自体どういう風にするかを考え中。 田臥 || 五十嵐 -------------- Reference URI: http://lowreal.net/logs/2004/12/21/2 Written Time: 2004-12-21T22:51:42+09:00 Tags: music [daimas の日記](http://d.hatena.ne.jp/daimas/20041221) の サンズを解雇になった田臥は、五十嵐くんに似てる気がするのだが間違ってる? ってのを、ミカン食ってるとき不意に見て鼻水でた。似てる。特にヒゲが。ヒゲ。 2004-12-22 ========== 結果ツリーフラグメント ---------------------- Reference URI: http://lowreal.net/logs/2004/12/22/1 Written Time: 2004-12-22T04:04:29+09:00 Tags: web xslt xml 注意 これは間違ってるかもしれない。実際に実装を使って確かめたわけじゃない。今はめんど くさくて確かめたくないので覚書的なもの。 変数バインドエレメント (xsl:param, xsl:variable) では select でノードセット格納す るときと、子要素にテンプレートを書いてごちゃるのとでは違うらしい。後者は結果ツリー フラグメント (Result Tree Fragment) になる。これはルートノードを含む。(select の場 合でもルートノードを含むように選択すればルートノードは含まれる。例えば document() を単体で使えば必ずルートノードがノードセットの入る) 前者の場合、ルートノードを含まないノードセットなので、無限ループに陥らずにちゃんと なる。後者の書き方によって $foo に格納されるのは結果ツリーフラグメントで、結果ツリーフラグメントはルートノードを 含むので、(現在適用しているスタイルシートの match="/" にマッチして) 無限ループ。 結果ツリーフラグメントをノードセットと混同するとエラい目にあう。例えば Mozilla が クラッシュしたりとか。 - 結果ツリーフラグメントは、結果ツリーの断片 (フラグメント) を表す。結果ツリーフラグ メントは、ルートノードを1つだけ含むノード集合と同様に扱われる。 - 変数バインドエレメントが select アトリビュートを持たず、コンテンツが空でない場合 (つまり、変数バインドエレメントが1つまたは複数の子ノードを持っている場合)、変数バ インドエレメントのコンテンツが変数の値になる。変数バインドエレメントのコンテンツは テンプレートであり、このテンプレートをインスタンス化すると、変数の値が得られる。こ の値は結果ツリーフラグメントであり、このフラグメントはテンプレートをインスタンス化 して生成した一連のノードを子に持つルートノードを1つだけを含むノード集合と同等であ る。 あっていれば [xsl:param にノード集合を渡す。](my:2004-11-25#s1) はノード集合ではなく正確には結果ツリーフラグメントだ。まぁ扱い方的はあまり変わら ないけれど…… ってことは unke は違うんだ。実際これらを とかやると文字列に変換されるので同じように見えるだけか。この場合前者の方が変換が なくてほんの少し高速かな。 XPath の紛らわしさ ------------------ Reference URI: http://lowreal.net/logs/2004/12/22/2 Written Time: 2004-12-22T05:01:41+09:00 Tags: xpath web xml XPath (XML Path language) は XPath (XML Path language) という名前だけでも誤解を招く。Path というだけにディレクトリパスとかを連想する。まぁ、ディレクトリパスとは類似点が多 い。UNIX ファイルシステムにおけるルートディレクトリ (名前ナシ) と、ルートノード ( 展開された名前ナシ) とか、それに省略形による表記を使うとパット見ディレクトリを特定 するためのディレクトリパスとなんら変わらない。‘/’ を区切りに使うのが紛らわしい。 カレントディレクトリ と XSLT (XSL Transformations) における カレントノード を混同しやすい。XPath (XML Path language) にはカレントノードなんてものはない。コンテキストノード。 XPath (XML Path language) は文字列とか数値も表現しえるので、ただたんにどっかのノードを特定する言語ではない 。(とはいえ W3C (World Wide Web Consortium) 仕様書には XPath は、XML ドキュメントの一部をアドレッシングするための言語であり とか書いてあって紛らわしい) だめだもう寝る。 IE -- Reference URI: http://lowreal.net/logs/2004/12/22/3 Written Time: 2004-12-23T01:33:30+09:00 Tags: web IE (Internet Explorer) (Gecko, Opera, etc) を無視するのと、音声ブラウザを無視するのはおなじ。 2004-12-23 ========== XSLT の XPath の ---------------- Reference URI: http://lowreal.net/logs/2004/12/23/1 Written Time: 2004-12-23T19:13:08+09:00 Tags: web xml xslt xpath ネームスペース宣言の集合は、式が現れるアトリビュートを持つエレメントのスコープに含 まれるものと同じである。この集合には、XML ネームスペース勧告 (XML Namespaces Reco mmendation) [XML Names] が必要とする、暗黙的に示されたプレフィックス xml の宣言も 含まれる。デフォルトのネームスペース (xmlns を用いて宣言されたもの) は、この集合の一部ではな い。 とか書いてあったりする。ソースツリーのデフォルトネームスペース URI (Uniform Resource Identifer | Universal Resource Identifer) が null (特に名前空間を全く宣言していない場合とか) 以外の時は絶対にプリフィックス 無しではマッチとかしない。 bazこの場合に string(/foo/bar) = 'baz' は true。 bazこの場合は string(/foo/bar) = 'baz' は false。/foo/bar は何も選択しない。例え XSLT (XSL Transformations) 側のデフォルト名前空間が http://foo/ であっても何も選択されない。xmlns:f="http://foo/" とかやって /f:foo/f:bar ってやらなきゃいけない。 で、困るっていうかよくわからんのはソースツリーのデフォルトネームスペースと結果ツリ ーのデフォルトネームスペースを同じにしたいときなんですよと。必然的に xmlns:f="http://foo/" と xmlns="http://foo/" とか (順番も重要) やるわけですよ。exclude-result-prefixes="f" とかやるわけですよ。そうすると仕様書的に正しいかはよくわからないけど Sablotron の 場合はどっちとも (xmlns, xmlns:f) 消えるんですよ (msxsl では大丈夫)。で、どうすん ねんと哀さんと話していた次第(謎 xsl:namespace-alias とか利用すんのかなぁと思っていくつかソレっぽく書いてみたけどダ メだった……なんかセオリー的なやり方ってないのかな。 XSLT と DOM との相違 -------------------- Reference URI: http://lowreal.net/logs/2004/12/23/2 Written Time: 2004-12-24T00:02:09+09:00 Tags: xslt dom xml xpath XSLT (XSL Transformations) では属性ノードとその親ノード (要素) との関係は片方向……属性ノード側からは @attr[. = ../../@attr]*1 とかいう風に親がちゃんと親に見える (っておかしいな) けど、その親からは (attribut e:: としているように) 軸が違う。ここで親から child::attr とアクセスできたら困るわけだけど、ややこしい。どうも俺は属性を子ノード的にイメー ジしていて attribute っていう軸がイメージしにくい。 DOM (Document Object Model) の場合は属性に親ノードはなく (parentNode は null) ownerElement に親要素が入ってる 。軸が完全に分離してるっつうのかなぁ。DOM (Document Object Model) だとあんまり混乱しない。ただのプロパティでしかないからかなぁ。 XSLT (XSL Transformations) の場合も DOM (Document Object Model) っぽい考え方をすればいい気がするのでちゃんと書いて、どこがどう違うかを考えてみて る。軸をプロパティと考えればいいの鴨。 // わけわかんコードだ(wcontextNode = current();with (contextNode) { contextN ode = child["*"]; with (contextNode) { contextNode = attribute["attr"]; with (contextNode) { text(); } }} 2004-12-24 ========== Namazu Cron ----------- Reference URI: http://lowreal.net/logs/2004/12/24/1 Written Time: 2004-12-24T18:12:57+09:00 Tags: web またメールが来なくなっていたので確認。インデクシングされていない。NMZ.lock2 は最初 なかったのに、CGI (Common Gateway Interface) 経由で実行したらNMZ.lock2 が残っていますというエラーとともに出来た。自分で作って自分でえらー吐いてるのか……? 仕方ないのでまたインデックス全部削除。 2004-12-25 ========== XSLT で行をマークあっぴ ----------------------- Reference URI: http://lowreal.net/logs/2004/12/25/1 Written Time: 2004-12-25T16:37:48+09:00 Tags: xslt xml 汎用っぽいテンプレ作っていたら、XSLT (XSL Transformations) だけで一行ごとに l 要素とかソレっぽいのでマークアップできることに気付いた……って いうかアレだ。 正規表現使いたい…… Opera で色づけ -------------- Reference URI: http://lowreal.net/logs/2004/12/25/2 Written Time: 2004-12-25T17:02:50+09:00 Tags: web Opera 7.54 でコードが途中まで消えるっつう指摘を受けたので、navigator.userAgent.match(/Opera/) && navigator.userAgent.match(/7\.54/) が真だったら色づけしないようにした。消えるのは致命的杉。 たぶんドキュメントフラグメントに大量にノード突っ込んで既存のノードと置き換える部分 が原因で最初のほうがレンダリングされなくなるんだと思うけどよくわからない。リロード するたびに消える範囲が変わる; 2004-12-26 ========== もういくつ寝ると ---------------- Reference URI: http://lowreal.net/logs/2004/12/26/1 Written Time: 2004-12-26T00:20:18+09:00 Tags: web life 25 日終わったからもとのスタイルに戻したよ。 クリスマスにまず損しない (金は減るけど) 投資 (謎) して、ドレぐらい返ってくるかなぁ 、とか思ってみたけど損しない分しか返ってこなかった。残念。まぁ全然いいんだけどもも ももも。 もっと寒いスタイル作りたいなぁ。モニターに息吹きかけると白くなるぐらい寒いスタイル シート書きたいなぁ。スポットライトと観覧車ってとこかなぁ。遊園地って人が多くて好き じゃないけど、観覧車っつう言葉の響きは好きだ。母親の実家に行く途中古ぼけた遊園地が あって、その中に観覧車があるんだけど、幼稚園生のときその観覧車が動いているかどうか を何故か毎回確かめてた。この前通りかかったとき遊園地自体が潰れてた。ついでにもう通 りかかることもなさそうだ。 まーとにかく Helvetica ってフォントの名前だよね。 日記の名前空間 -------------- Reference URI: http://lowreal.net/logs/2004/12/26/2 Written Time: 2004-12-26T23:05:03+09:00 Tags: web xml - 日記データの名前空間が適当すぎる。ほぼ XHTML (Extensible Hyper Text Markup Language) で書いている本文も XHTML (Extensible Hyper Text Markup Language) の空間じゃない。作ってるときは名前空間いちいち書くのが面倒だったらからそうしたん だけど、今になってみるとキモい。 - 変換用のデフォルトテンプレートあたりがちょっと気持ち悪い。統一感がないのでもうちょ っと blosxom 的にしたい。 - 設定が .inc とかに入っていて気持ち悪い。スキン的な設定はスクリプトから完全に分離す べき。 - 本体とは違う (スキン) けど abbr 要素とかを補完する辞書の語彙がやっぱ微妙に気持ち悪 いのでスキーマをちゃんと定義しておきたい。一番めんどい Taglibro を少し作り直そうと思い始めたわけだけど、実際日記本文に使う空間を何にする かとかで悩んでる。今は殆ど XHTML (Extensible Hyper Text Markup Language) 1.0 と同じだけど、ホントにコレでいいかなぁとか何とか、だからといって XHTML (Extensible Hyper Text Markup Language) 2.0 はまだ勧告されていないし、XML (Extensible Markup Language) Schema の場所も決まっていない (TBD (to be determined) ) ……一応どっちでもいけるようにはしてみてるけど、実際書くのはどっちかだし。 それと、できるだけ自然に書くため (つまりミスタイプを少なくするため) 名前空間接頭辞 をできるだけ付けない様にしたい。ということはデフォルト名前空間を多用する (セクショ ンごとに名前空間書く) ことになるけど、XML (Extensible Markup Language) Shema の仕様を眺めてみる限り、実態参照の宣言方法がない。というか DTD でいうところの内部サブセットをどうやってやればいいか分からない……名前空間を省略 したいだけの参照をスキーマで宣言するのはおかしいから内部サブセット的なものが必要。 実態参照だけ DTD 使うのがいいかなとか思ったけど Validator がエラー出す (DTD で要素が宣言されていないよ!っていう) のでダメっぽい。併用すること自体アレだし… … 夢、坂、広場 ------------ Reference URI: http://lowreal.net/logs/2004/12/26/3 Written Time: 2004-12-27T00:25:19+09:00 Tags: self 書こうと思ったんだけどうまく説明できない。たぶん前にも少し見たことがある。 坂がある。高床式の木で出来た小屋が沢山ある。そこに行くために坂がある。木で出来た少 し大きめの小屋がある。坂の下には近代的でかなり大きい (とはいえ面積が広いだけで高さ はそんなでもない) 建物がある。建物の一階部分はまるまる外で、グレイッシュレッドの柱 がたくさん立ってる。二階以上の部分の壁の色はクリームホワイト。たくさん白いテーブル がある。料理が置いてある。人がいっぱいいる。顔見知りばっかりだ。 いくつかやること (忘れた) があった。不安がいくつかありつつもやることは無事に終わっ た。やることは大き目の小屋で行った。 他には、ロッカー、携帯電話、パーカーぐらい。 2004-12-29 ========== 日記スクリプト思考 ------------------ Reference URI: http://lowreal.net/logs/2004/12/29/1 Written Time: 2004-12-29T00:16:50+09:00 Tags: web prog XML (Extensible Markup Language) は中間データとして使うようにしてみる。もちろんデータを XML (Extensible Markup Language) で書いてもいいし、てきとーにデータベースから XML (Extensible Markup Language) 生成するような実装をすればデータベースを元データとして使えるように。 例えば XMLDB みたいなクラス作っといて、get_latest_xml($num), get_month_xml($year, $month) みたいなメソッドを実装 (できればインターフェイスだけ定義したクラスを作っておきた いけど PHP (PHP: Hypertext Preprocessor) 4 じゃ無理くさい) しとく。それぞれのメソッドは決まった XML (Extensible Markup Language) を返す。 スクリプトは設定に応じてどのクラスを使うかを決めてインスタンス化&メッセージを投げ て XML (Extensible Markup Language) を得る。あとはそいつを XSLT (XSL Transformations) エンジンに丸投げして、結果を設定した Content-type で出力。 別に PHP (PHP: Hypertext Preprocessor) でなくてもいいんだけど、Ruby は三郎 (Sablotron) 拡張がローカルで動かないから…… カテゴリ? タグ? ----------------- Reference URI: http://lowreal.net/logs/2004/12/29/2 Written Time: 2004-12-29T18:47:49+09:00 Tags: web prog 新しくするスクリプトではカテゴリではなくてタグという形にしてみる。そもそもカテゴリ 的な使い方 (ツリー構造) で使っていないのでそのまま猫要素を tag 要素にするだけ。 理由は、カテゴリのツリー構造を表現するのが面倒くさいし、実際のところカテゴリのツリ ー構造ってあんまり上手くいかなかったりするから。 PHP わけわからん。 ------------------ Reference URI: http://lowreal.net/logs/2004/12/29/3 Written Time: 2004-12-30T00:42:50+09:00 Tags: prog なにやらeval('$db = new ' . $config->dbclass . '($config, $lang, $tags);'); と $db = new $config->dbclass($config, $lang, $tags); は同じっぽい。もちろん $config->dbclass はただの文字列。ナンダコレ。 それと $ext = $node->get_elements_by_tagname("extension")[0]->get_content(); がパースエラーって何よ。前にも書いた気がする。 $ext = $node->get_elements_by_tagname("extension");$ext = $ext[0]->get_content(); 上記のようにしないとダメ。 書いてて途中で PHP (PHP: Hypertext Preprocessor) 捨て実行のために sablot/Ruby とか sablotron を一からやりなおしたりした。まー無理 だったわけですが orz つまり、PHP (PHP: Hypertext Preprocessor) では汚いコードを心置きなく書けるわけです。あら素敵? PHP (PHP: Hypertext Preprocessor) でコードを書く理由って Sablot と mod_php のためだけなんだよね。ホント。関数の命名 規則もバラバラだし、謎が多い。 ??? eval('$db = new ' . $config->dbclass . '($config, $lang, $tags);'); is same as $db = new $config->dbclass($config, $lang, $tags);? $config->dbclass is just a string. and... Why does PHP (PHP: Hypertext Preprocessor) say ParseError in $ext = $node->get_elements_by_tagname("extension")[0]->get_content();? I (&you) must write as follow: $ext = $node->get_elements_by_tagname("extension");$ext = $ext[0]->get_content(); I want to write with Ruby... but my server's Ruby is not run as module. and sablot/Ruby is not running on my localhost. sto... 2004-12-30 ========== めんどくさ ---------- Reference URI: http://lowreal.net/logs/2004/12/30/1 Written Time: 2004-12-30T12:57:26+09:00 Tags: web prog XML (Extensible Markup Language) の本文部分の名前空間あたりがうまいこと決まらないので思いつくまで放置。 なんか軽いのが書きたい。 Ruby or PHP ----------- Reference URI: http://lowreal.net/logs/2004/12/30/2 Written Time: 2004-12-30T15:58:07+09:00 Tags: prog ある関数の比較 function _load_flavors() { $xns = $this->_xpc->xpath_eval("/config:config/conf ig:flavors/config:flavor"); foreach ($xns->nodeset as $node) { $ext = $ node->get_elements_by_tagname("extension"); $ext = $ext[0]->get_content(); $content_type =$node->get_elements_by_tagname("content-type"); $co ntent_type = $content_type[0]->get_content(); $this->flavor[$ext] = $conte nt_type; } $this->default_flavor = $this->_xpc->xpath_eval_expression("stri ng(/config:config/config:flavors/@default)"); $this->default_flavor = $this->d efault_flavor->value;}privatedef load_flavors @flavors = {} @doc.elements.each("/config/flavors/f lavor") do |ele| @flavors[ele.text("extension")] = ele.text("content-type" ) end @default_flavor = @doc.root.elements["flavors"].attributes["default"] endでもここで使ってる Ruby の REXML というパーサは名前空間をあんまり (ほとんど?) 考慮してない (だから接頭辞がついて ない。読み込んでいるドキュメントはデフォルト名前空間でやっていて接頭辞がないから) REXML は XPath (XML Path language) とか使えるしイケてるけど、やっぱ微妙な部分がいくつかあるわけです。 PHP (PHP: Hypertext Preprocessor) は書いた気になれる。んで後から読むと読み難い。実際には一回の代入が二行になってい たりするから。だからといって一行に纏めても読み難い。 PHP (PHP: Hypertext Preprocessor) 4 には例外もない。5 からあるけど、5 でやっと?みたいな勢い。 2004-12-31 ========== フラグメントプレビュー ---------------------- Reference URI: http://lowreal.net/logs/2004/12/31/1 Written Time: 2004-12-31T00:35:03+09:00 Tags: web ![同一文書のフラグメントへのリンクにホバーした画像](/2004/fragment-preview 同一文書のフラグメントへのリンクでプレビュー、とか……邪魔か便利かのぎりぎり狭間ぐ らいなのでまだ適用はしてない。微妙。 適当に書いて動作したのは Opera, Gecko だけ……IE (Internet Explorer) は何故か動かない。でも Opera は動的なレンダリングが苦手 (糞遅い) のでハズしてみて みた。 DOM (Document Object Model) の Range とか使ってみちゃう?とか思ってたけど IE (Internet Explorer) では見事に実装されていないみたいなので普通に cloneNode() して CSS (Cascading Style Sheets) の overflow あたりで適当に表示制限。まぁ結局 IE (Internet Explorer) で動いてないわけですが! なんかの勘違いだったもよりで、IE (Internet Explorer) でも正常に動作してた。キャッシュか何か読んでたカナ。 スタイルを書き換えて適用してみた。このセクションの画像とは違う。スモールスクリーン モード (謎) Opera (7.6 preview) でもう一回試してみたら割りと普通になってたので適用してみる。 ただ、ネゴシエーションされたファイルの扱いが違うので Opera では一部プレビューされ ない。Opera は href="" というリンクのときネゴシエートされた後のファイル名を使うの でうまく処理できない。ぶっちゃけどうにもできないので仕様。 2004.fpl -------- Reference URI: http://lowreal.net/logs/2004/12/31/2 Written Time: 2004-12-31T01:14:03+09:00 Tags: music 今年アレだったやつを列挙。 - Blues Drive Monster / the pillows - エコー / BURGER NUDS - 斜陽 / ART-SCHOOL - SENTIMENTAL GIRL'S VIOLENT JOKE / NUMBER GIRL この中からさらに一つに絞るなら Blues Drive Monster 。 結果ツリーフラグメントの誤解 ---------------------------- Reference URI: http://lowreal.net/logs/2004/12/31/3 Written Time: 2004-12-31T17:50:08+09:00 Tags: web xslt [2004年12月の指向性メモ](http://ishikawa.arielworks.com/memo/2004/12#d310703) で言及されてるのを読んでもう一度仕様書を読み直してみる。 Variables introduce an additional data-type into the expression language. This ad ditional data type is called result tree fragment. A variable may be bound to a result tree fragment instead of one of the four basic XPath data-types (string, n umber, boolean, node-set). A result tree fragment represents a fragment of the r esult tree. A result tree fragment is treated equivalently to a node-set that con tains just a single root node. However, the operations permitted on a result tree fragment are a subset of those permitte d on a node-set. An operation is permitted on a result tree fragment only if that operation would be permitted on a string (the operation on the string may involve first converting the string to a number or boolean). In particular, it is not permitted to use the /, //, and [] operators on result tree fragments. When a permitted operation is performed on a result tree fragment, it is performed exactly as it would be on the equivalent node-set. 強調した部分が重要らしい。最初の強調がややこしい。原文引用なのは訳文がまたさらにや やこしいから (謎) 結果ツリーフラグメントに使える操作はノード集合の一部 (最初の強調) でその許される操 作ってのは文字列にできるやつだけ (二つ目の強調)。あとはその後に書いてある通り、/ とかの演算子は使えない。 結局、結果ツリーフラグメントが格納されている $rtf がある場合において は XSLT (XSL Transformations) 1.0 的にはエラーらしい。 - [nulog > 2004 > 12 > 22 - 結果ツリーフラグメント](my:2004-12-22#s1) - [nulog > 2004 > 11 > 25 - xsl:param にノード集合を渡す。](my:2004-11-25#s1) そんなこんなで、XSLT (XSL Transformations) 1.0 でマトモな変換を書こうとするとかなり冗長なことをせざるを得ない状況が生まれるみ たいです。めんどくさー - [Hatena::agenda 2004-12-31](http://d.hatena.ne.jp/jintrick/20041231) 関係ないけど、どういう経緯でこういう制限がついたんだろう。 2004 として ----------- Reference URI: http://lowreal.net/logs/2004/12/31/4 Written Time: 2004-12-31T19:16:25+09:00 Tags: life self 今年は ([前にも書いた](my:2004-12-19#s2)けど) 異様に長く感じる一年だった。IRC (Internet Relay Chat) で [#汚れの巣](http://diy.s27.xrea.com/info/irc) に突っ込んだのも、[ヘッドフォン娘のアレ](my:2004-08-11#s3) を書いたのも、去年かそれより前に感じる。それぐらい長く感じた。でも長く感じる割に 起きている時間が少なかった気もする。殆ど寝てた。 この一年で何が変わったのか。少し技術と知識は向上しただろうけど、基本的なところでは 何が変わったかよくわからない。諦めがはやくなったぐらいか。あとは常に身近な誰か (自 分も含めて) が死ぬような予感がつきまとって気持ち悪かった。 キーワード。想像力とうさんくささ。とにかく頑張れなんて言葉をたやすく言わない。気付 くと嫌いな言葉がいっぱいある。軽くどうでもいいけど困るのは自分だからなっていうフレーズはうさんくささがレベル最高ぐらいある気が。 とりあえず卒業はできそうでなにより。その後どうなるかはわからんわけだけど?