森の中の家。たぶん三階建て。地下に台所。一階は操作室。いたるところに中身が空っぽな自動販売機。好奇心旺盛な女の子。謎の男。どうやってでるか。
夢、森の中
アホみたいに僕は笑ってた
アナログな文字を機械処理する書類が激しく苦手だ。機械の読み取り精度がどれほどかわかっていないので、書くのにひどく神経を使う。最初からデジタルデータを送るようにすればいいのに。入試の出願書の話ですけど、まぁミスがあってはいけないものだから、いくらか多めに可能性を考慮するわけですけど、ステップが多い。普通に自分の脳みそがイカれててわけわからない場所に書いたりだとか、実際この字の濃さ・書体で読み取れるかだとか、数値として記入する部分で間違いを犯していないかとか。機械処理させるなら書くところも機械にやらせればいいのに。あと、紙面の都合上入力できる文字に制限があるのがアレだよなぁ。10文字以上の名前の人は余計不安になるじゃないか。根拠のない仮定はするな (プログラミング基礎 セクション 5.3. でっちあげ。) っていうやつに似てる。
個人情報なんかはなんかもっと簡単に処理できないのかなぁ。住民基本台帳とか……セキュアな問題がアレそう。
理想的には個人識別用のコードと受験科目とかそういうのだけ入力してポチっておしゃ OK とか。替え玉が増えそうだけどなー。
互いに素
三角形カラーピッカー
Painter 風のやつを JavaScript で実装した。っていっても重要な部分は GIMP のコードからまるパクり。別のもっと単純な計算方法でやってたら、どう考えても三角形の範囲から色がはみ出すのでパクり。某 IRC チャンネルで長いことチャンネル違いな話をしつつアレとかソレとか。
IE はやる気になったらやろう……
バナナ
サイトのバナーをキャッシュする CGI とか書いてみた - Note @ Temporary-Depot 見て、あーって思って、パクった。Perl がアレなので Ruby にして拡張子じゃなくて Content-type 見るようにして、みたいな。エラー処理が結構微妙。raise CacheImg.const_get(content).new とか無理やりすぎ。なんかサッパリ頭回らない……
Firefox のブックマークの Description に banner:http://example.com/banner
とか書いて、まぁ適当に。
こういうちっちゃいのはモジュールで動いている PHP のほうが圧倒的に有利だろうけど、わけわからん糞言語弄るほど頭がノっていないです。
Graphics から Illustration とかいう名前のフォルダに分離して、特別扱いにしたほうがよさそうだなぁ……めんどいからまた今度。ぶっちゃけリンクページとか使わないしねー
注意:スクリプトの話と XSLT の変換の話が混ざってます。Synchronize Bookmarks でヤるアレです。はい。
冬へ
あれ、こえが(ry
っていうのが脳内でリフレインしているのはとりあえず置いておいて、もうすぐ三学期が始まる。えー。試験勉強してないなぁ。どうなるんだろう。
ちょっとスクリプトを書いていたけど、殆ど完成の段階になって決定的なバグを発見したのでやめ。解決方法思いつくまで放置。
そんなスクリプトのアレで、開いたことのない数学のチャートとか開かざるを得なかったりする。でもこういう場合の教科書は役に立つ教科書 (謎) だ。もうシラン。
寝る前ぎりぎりぼーっとして何を書いているかよくわかりません。理解は(ry。とかなんとか。仕様書は原文で読むべきだな、とか。あんまりカーテンをあけないとか。無駄に緑が透き通って向こう側の空が見え隠れしたりするチラリズムとか。いいやめんどい。あー。うん
暇かつ忙しい
箱デザイナー
メレンゲ
夢。複雑な建物。姉
2005
目標的なものはあるわけですが、経済的理由で始められるのがいつになるのか謎。
書くとやる気がなくなってしまうし、タイミングが合わなくてもモチベーションがかなり落ち込むのでできるだけ早く、できれば今日からでも始める必要がある。去年三年間までの糞さを取り戻す必要がある。今年は変える必要がある。
俺は今だいぶ鼓動が早い。よく思うんだけれど、周囲の人間ってコアは部分でどれだけ役に立つかっていったら殆ど役に立たないじゃないか。趣味の部分だけだ。コアな部分は自分が考える必要がある。バリエーションの少ないアドバイスが溢れている。つまらない。今寝る前に書いている。朝起きて今のモチベーションがどうなるかわからない。だからできるだけ思いつく限り書いておく。
うさんくさい。信頼って無理
フラグメントプレビュー
同一文書のフラグメントへのリンクでプレビュー、とか……邪魔か便利かのぎりぎり狭間ぐらいなのでまだ適用はしてない。微妙。
適当に書いて動作したのは Opera, Gecko だけ……IE は何故か動かない。でも Opera は動的なレンダリングが苦手 (糞遅い) のでハズしてみてみた。
DOM の Range とか使ってみちゃう?とか思ってたけど IE では見事に実装されていないみたいなので普通に cloneNode() して CSS の overflow あたりで適当に表示制限。まぁ結局 IE で動いてないわけですが!
なんかの勘違いだったもよりで、IE でも正常に動作してた。キャッシュか何か読んでたカナ。
スタイルを書き換えて適用してみた。このセクションの画像とは違う。スモールスクリーンモード (謎)
Opera (7.6 preview) でもう一回試してみたら割りと普通になってたので適用してみる。
ただ、ネゴシエーションされたファイルの扱いが違うので Opera では一部プレビューされない。Opera は href="" というリンクのときネゴシエートされた後のファイル名を使うのでうまく処理できない。ぶっちゃけどうにもできないので仕様。
2004.fpl
結果ツリーフラグメントの誤解
2004年12月の指向性メモ で言及されてるのを読んでもう一度仕様書を読み直してみる。
Variables introduce an additional data-type into the expression language. This additional 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, number, boolean, node-set). A result tree fragment represents a fragment of the result tree. A result tree fragment is treated equivalently to a node-set that contains just a single root node. However, the operations permitted on a result tree fragment are a subset of those permitted 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 がある場合において <xsl:apply-templates select="$rtf/child::node()"/> は XSLT1.0 的にはエラーらしい。
そんなこんなで、XSLT1.0 でマトモな変換を書こうとするとかなり冗長なことをせざるを得ない状況が生まれるみたいです。めんどくさー
関係ないけど、どういう経緯でこういう制限がついたんだろう。
2004 として
今年は (前にも書いたけど) 異様に長く感じる一年だった。IRC で #汚れの巣 に突っ込んだのも、ヘッドフォン娘のアレ を書いたのも、去年かそれより前に感じる。それぐらい長く感じた。でも長く感じる割に起きている時間が少なかった気もする。殆ど寝てた。
この一年で何が変わったのか。少し技術と知識は向上しただろうけど、基本的なところでは何が変わったかよくわからない。諦めがはやくなったぐらいか。あとは常に身近な誰か (自分も含めて) が死ぬような予感がつきまとって気持ち悪かった。
キーワード。想像力とうさんくささ。とにかく頑張れなんて言葉をたやすく言わない。気付くと嫌いな言葉がいっぱいある。軽くどうでもいいけど困るのは自分だからなっていうフレーズはうさんくささがレベル最高ぐらいある気が。
とりあえず卒業はできそうでなにより。その後どうなるかはわからんわけだけど?
めんどくさ
Ruby or PHP
ある関数の比較
function _load_flavors() {
$xns = $this->_xpc->xpath_eval("/config:config/config: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");
$content_type = $content_type[0]->get_content();
$this->flavor[$ext] = $content_type;
}
$this->default_flavor = $this->_xpc->xpath_eval_expression("string(/config:config/config:flavors/@default)");
$this->default_flavor = $this->default_flavor->value;
} private
def load_flavors
@flavors = {}
@doc.elements.each("/config/flavors/flavor") do |ele|
@flavors[ele.text("extension")] = ele.text("content-type")
end
@default_flavor = @doc.root.elements["flavors"].attributes["default"]
end でもここで使ってる Ruby の REXML というパーサは名前空間をあんまり (ほとんど?) 考慮してない (だから接頭辞がついてない。読み込んでいるドキュメントはデフォルト名前空間でやっていて接頭辞がないから) REXML は XPath とか使えるしイケてるけど、やっぱ微妙な部分がいくつかあるわけです。
PHP は書いた気になれる。んで後から読むと読み難い。実際には一回の代入が二行になっていたりするから。だからといって一行に纏めても読み難い。
PHP4 には例外もない。5 からあるけど、5 でやっと?みたいな勢い。
日記スクリプト思考
XML は中間データとして使うようにしてみる。もちろんデータを XML で書いてもいいし、てきとーにデータベースから XML 生成するような実装をすればデータベースを元データとして使えるように。
例えば XMLDB みたいなクラス作っといて、get_latest_xml($num), get_month_xml($year, $month) みたいなメソッドを実装 (できればインターフェイスだけ定義したクラスを作っておきたいけど PHP4 じゃ無理くさい) しとく。それぞれのメソッドは決まった XML を返す。
スクリプトは設定に応じてどのクラスを使うかを決めてインスタンス化&メッセージを投げて XML を得る。あとはそいつを XSLT エンジンに丸投げして、結果を設定した Content-type で出力。
別に PHP でなくてもいいんだけど、Ruby は三郎拡張がローカルで動かないから……
カテゴリ? タグ?
PHP わけわからん。UNKE PHP
なにやら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 捨て実行のために sablot/Ruby とか sablotron を一からやりなおしたりした。まー無理だったわけですが orz
つまり、PHP では汚いコードを心置きなく書けるわけです。あら素敵?
PHP でコードを書く理由って Sablot と mod_php のためだけなんだよね。ホント。関数の命名規則もバラバラだし、謎が多い。