tDiary から php にトラックバック送信すると確実に文字化けしてしまう。しかもその文字化けのせいで xml が valid でなくなる。ホント困った。なんでちゃんと変換できないんだろう。

mb_language("uni");
mb_internal_encoding("UTF-8");
mb_convert_encoding(htmlspecialchars($name,  ENT_NOQUOTES), "UTF-8", "auto");

utf8 以外で送られてきたら絶対に化ける……はぁ。

mb_language("Japanese"); にしてなおる。何故だかは知らない。せっかくユニコード使ってるんだから、スクリプト側で言語設定なんてしたくないんだけど……
マルチバイト圏内はみんな悩むんだろうなぁ。韓国とか中国はどうなのよ。もっとめんどくさ系ですか。
そういや CJK で IC タグの規格を共通化とかなんとか。

今のところ php スクリプト自体は 500 行ぐらいのやつ。もともと php は xslt するためのトリガ程度にしか使う予定じゃなかったから妥当な長さ? データファイルは別のディレクトリに置いたほうがいいような気がしてきた。一個オプション導入してガガガガと書き換えるかー。でも面倒臭い。
日記のマークアップも超適当にやってきてしまったから、ちゃんとさせなければ。link 要素も不完全。むむむー。細かいのが多くなると突然ダルくなる。

  1. トップ
  2. prog
  3. 文字コード

i-mode は sjis しか読めないって本当ですか。本当でもどうでもいいっちゃどうでもいいんですけど。

携帯のブラウザは gzip 転送を実装してください。お願いします。あの噂の携帯は opera 積んでるから gzip イケるのかな。gzip 実装しないのって金儲けるためよね。さっさと定額制が浸透しないかなぁ……((今のところ自分は携帯でネットなんて殆どしないけどね!))

スクリプトが gzip に対応する場合は Accept-Encoding ヘッダ見て、gzip 入ってたら圧縮してあげるんだっけ。

  1. トップ
  2. web
  3. 携帯へ送信

i-mode は sjis しか読めないって本当ですか。本当でもどうでもいいっちゃどうでもいいんですけど。
携帯のブラウザは gzip 転送を実装してください。お願いします。あの噂の携帯は opera 積んでるから gzip イケるのかな。gzip 実装しないのって金儲けるためよね。さっさと定額制が浸透しないかなぁ……*1
スクリプトが gzip に対応する場合は Accept-Encoding ヘッダ見て、gzip 入ってたら圧縮してあげるんだっけ。

  1. トップ
  2. web
  3. 携帯へ送信

たかだか一ファイル読み込ませて変換してるだけにもかかわらず、負荷率ランキングで上位に食い込む。むむむー……

やっぱ xslt って結構重いもんなのかしら……

どこが CPU 食ってるかわっかんねーw dom 処理が食ってんのかしら。

  1. トップ
  2. prog
  3. 負荷率

たかだか一ファイル読み込ませて変換してるだけにもかかわらず、負荷率ランキングで上位に食い込む。むむむー……
やっぱ xslt って結構重いもんなのかしら……
どこが CPU 食ってるかわっかんねーw dom 処理が食ってんのかしら。

  1. トップ
  2. prog
  3. 負荷率

今の実装だと「カテゴリごとの latest」とかが作れない。いらないっちゃいらないけど、もうちょい汎用性を高くしたい。そうすればソースも綺麗になるはず。まじめに設計とかしたほうがいいんだけど、頭悪くてできない罠。設計って実装してるときよりつまらんし。

まず、今のところ変換に使う xsl ファイルの名前を完全に決めうちしてる。latest とか 日付別のときを完全に別に (switch) 処理してる。この辺もうちょい綺麗にしよう。速度落ちても、綺麗なほうがいい。読みにくいソース書いてると未来の自分が激しく困る。俺書いたの絶対覚えてないし。

latest は日付と考えるべし。ってことで /web/latest /web/2004 /web/2004/06 とかが形的に等価。category.xsl を作るんじゃなくて、year.xsl, month.xsl, latest.xsl をカテゴリに対応させるほうがいいな。よく考えればあたりまえだ……。/web とか / とかでアクセスされたときはどうしようか? 一覧だけ表示させて、カテゴリが指定されているときはそれをリンクパスに含めるだけでいいか。

param にカテゴリーが指定されていたら、そのカテゴリを含むセクションだけを抜き出して、されてなかったら全部表示。year.xsl が問題だ。一年分を読み込んで変換させるのはどれぐらいコストかかるだろう。

path info の最後の部分に /\..+?$/ があったら取り除いて、flavor にする。xsl 適用するまえに xsl ファイル名 + .flavor が存在するかを fileexists で調査。あったらそれを適用させて出力。なかったらデフォルト (XHTML とか) 適用させる。このとき設定ファイルに指定された flavor の content-type が指定されていたら、それを送信する。指定されてなかったらデフォルト (text/xml) 送る。ただし application/xhtml+xml の場合は馬鹿なブラウザのために特別に accept で (それ以上のことはしない) 振り分けてあげる。

  1. トップ
  2. prog
  3. 実装

== 使ってリテラルと変数を比較するときは、変数を右辺に置くべし……間違って = とかいても実行時エラーがでるから。でも癖で左においちゃうよなぁ。

  1. トップ
  2. prog
  3. if ==

xsl:number で似たようなことができることに気が付いた。これで footnote がちゃんと実装できる。

<xsl:number level="any" from="d:day" format="*1"/> のようにすればよかった。ふっとノートXSLT の仕様書にそのまんまのが載っている。俺はアフォか。

でもまだリンクを実装してない。面倒くさいから。見通しがたったら後になってもできるじゃん?

  1. トップ
  2. web
  3. ある基準から見た自分の位置

day/@date と section/@datetime はそれぞれユニークである必要があり、フォーマットもこのままじゃないと駄目。

day.xsl で月を跨いだナヴィゲーションを提供できない。やるには前月・次月の xml を結合させればいいけど……

  1. トップ
  2. web
  3. 仕様

傍点って強調なんだから em 使うのが筋だけど、em で強調された文字に傍点を振るのが CSS では無理。悩ましい限り。傍点として表示されないと嫌とか言われてもねぇ。メディアがちげぇよ的。めんどくさ。もう隔離で。

  1. トップ
  2. web
  3. 傍点

傍点って強調なんだから em 使うのが筋だけど、em で強調された文字に傍点を振るのが CSS では無理。悩ましい限り。傍点として表示されないと嫌とか言われてもねぇ。メディアがちげぇよ的。めんどくさ。もう隔離で。

  1. トップ
  2. web
  3. 傍点

; Unix-Timestamp
(global-set-key #\C-2
#'(lambda ()
(interactive)
(with-output-to-selected-buffer
(format t "~d" (- (get-universal-time) (encode-universal-time 0 0 9 1 1 1970))))))
; xml datetime
(global-set-key #\C-1
#'(lambda ()
(interactive)
(let (date)
(setq date (format-date-string "%Y-%m-%dT%H:%M:%S%Z"))
(insert (concat (substring date 0 -2) ":" (substring date -2)))))) ;%Z => "+0900" -> "+09:00"

これなしじゃ生きれない!

それと pre を使うときは CDATA で囲ってる……そうしないとインデントされてしまうから……

  1. トップ
  2. prog
  3. xyzzy での xmldatetime, unix timestamp

  • 年毎一覧
  • index
  • RSS

RSS はフレーバー形式 (blosxom 的。拡張みたいなのをつける) にしてみるとかかなぁ……フレーバー形式にすれば、RSS 以外にも、携帯用軽量版とか、他のバージョンを提供しやすいもんなぁ。

フレーバー式にしてみた。存在しない場合はデフォルト (XHTML) を送信。/latest.rdf で RSS1.0 のコンテンツが取得できる。

  1. トップ
  2. prog
  3. todo

[http://test.lowreal.net/d/taglibro.php/latest]

  • 一覧がない。実装自体は簡単なはずだけど、php でそのまま出力してしまうか、xsl をテンプレとして使うか悩む……
  • 年別どうするか考えてない。
  • カテゴリ表示が3ヶ月ぐらいで破綻しそう。
  • デフォルト以外のフレーバーの content-type をどう指定するか。設定ファイルに連想配列でつっこむのが有力。

今のところ、月別と日別は一個のファイルだけを直接 xslt に渡して処理(たぶん日別は変えると思う……)最新とカテゴリは必要データを dom で結合させてから xslt に渡す。ただ、カテゴリは全部処理しないと意味ないので全部結合してる(駄目)

blosxom っぽい url が使えます。/2004/07 /web/2004 /2004/var /latest.rss. でも個別ページと月別はフレーバー未実装。

つかもうちょいソースを綺麗にしたい……switch が多くて汚い。

書き直した。ある程度関数にして分離したので、前より格段と綺麗に。でも行数は変わってない(むしろ増えてる)

でもこれでカテゴリごとの latest を実装できた。つまり /latest /web/latest /latest.rdf /web/latest.rdf /latest/web.rdf (推奨しないけど) が使える。

  1. トップ
  2. prog
  3. dxml

http://test.lowreal.net/d/taglibro.php/latest

  • 一覧がない。実装自体は簡単なはずだけど、php でそのまま出力してしまうか、xsl をテンプレとして使うか悩む……
  • 年別どうするか考えてない。
  • カテゴリ表示が3ヶ月ぐらいで破綻しそう。
  • デフォルト以外のフレーバーの content-type をどう指定するか。設定ファイルに連想配列でつっこむのが有力。

今のところ、月別と日別は一個のファイルだけを直接 xslt に渡して処理(たぶん日別は変えると思う……)最新とカテゴリは必要データを dom で結合させてから xslt に渡す。ただ、カテゴリは全部処理しないと意味ないので全部結合してる(駄目)
blosxom っぽい url が使えます。/2004/07 /web/2004 /2004/var /latest.rss. でも個別ページと月別はフレーバー未実装。
つかもうちょいソースを綺麗にしたい……switch が多くて汚い。

書き直した。ある程度関数にして分離したので、前より格段と綺麗に。でも行数は変わってない(むしろ増えてる)
でもこれでカテゴリごとの latest を実装できた。つまり /latest /web/latest /latest.rdf /web/latest.rdf /latest/web.rdf (推奨しないけど) が使える。

  1. トップ
  2. prog
  3. dxml

ホストを取得できてない。トラックバックの excerpt も記録されてない。

excerpt はスペルミスですた。

文字コード変換がうまくいってない mb_convert(ry なんですけど、どうすりゃいいでしょう。invalid token とかになっちまいますよ。困った。微 XSS 脆弱性。

  1. トップ
  2. prog
  3. むむむ、wb.php

== 使ってリテラルと変数を比較するときは、変数を右辺に置くべし……間違って = とかいても実行時エラーがでるから。でも癖で左においちゃうよなぁ。

  1. トップ
  2. prog
  3. if ==