Last-Modified ヘッダを吐いていないので吐かせるようにしなくては……ファイル走査した中で一番新しいファイルの日付が妥当かなぁ。

latest の場合だけ吐くように。

HEAD アクセスされたときは Last-Modified だけ出力して終了してる(つもり)

  1. トップ
  2. prog
  3. まだまだやること
  1. トップ
  2. web
  3. まだまだやること

とりあえず Shift_JIS で送るのが無難っぽいなーってことで可能な限り携帯向けは Shift_JIS で送ることにしよう。

モバイル向けのページで一番いい文書型はどれだろう? XHTML basic が一番かなぁ? それよりも HTML 4.01 で省略しまくりのほうが(転送量が減って)いいのかもしれない……でもいまさら 4.01 的なきもするしーあー。

4.01 使うなら valid の限りできるだけデータ減らす。head 要素(これも省略するけど)には title 以外いらない。まぁ書いてみるか……どうせ暇だし(違

  1. トップ
  2. web
  3. 携帯2

とりあえず Shift_JIS で送るのが無難っぽいなーってことで可能な限り携帯向けは Shift_JIS で送ることにしよう。
モバイル向けのページで一番いい文書型はどれだろう? XHTML basic が一番かなぁ? それよりも HTML 4.01 で省略しまくりのほうが(転送量が減って)いいのかもしれない……でもいまさら 4.01 的なきもするしーあー。
4.01 使うなら valid の限りできるだけデータ減らす。head 要素(これも省略するけど)には title 以外いらない。まぁ書いてみるか……どうせ暇だし(違

  1. トップ
  2. web
  3. 携帯2

ディレクトリどう作ろう……現在の tDiary を oldlog にやっちまって、今まで使ってたリクエストがきたら mod_rewrite で飛ばしてやろうか。

RewriteEngine On
RewriteBase /
RewriteRule ^nulog/([0-9]{6,8})\.html$ oldlog/nph-index.rb?date=$1
RewriteRule ^nulog/([0-9]{6,8})$ oldlog/nph-index.rb?date=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^nulog/(.*)$ nulog/taglibro.php/$1 [L,QSA]

みたいに……

いや、これじゃダミだ。別のディレクトリに新しいの入れたほうが良いな。安全だし。

  1. トップ
  2. web
  3. 移行後のあれ

ディレクトリどう作ろう……現在の tDiary を oldlog にやっちまって、今まで使ってたリクエストがきたら mod_rewrite で飛ばしてやろうか。

RewriteEngine On
RewriteBase /
RewriteRule ^nulog/([0-9]{6,8})\.html$ oldlog/nph-index.rb?date=$1
RewriteRule ^nulog/([0-9]{6,8})$ oldlog/nph-index.rb?date=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^nulog/(.*)$ nulog/taglibro.php/$1 [L,QSA]

みたいに……
いや、これじゃダミだ。別のディレクトリに新しいの入れたほうが良いな。安全だし。

  1. トップ
  2. web
  3. 移行後のあれ

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. ある基準から見た自分の位置