2002-01-11(金) 7911歩 [長年日記]
■ tDiary: gzip圧縮
それじゃなんだか嬉しくないよなぁと思いつつ、RFCを読む暇もなかったのだが、単にContent-Lengthを出すのが面倒だったからというオチでした(笑)。変だと思ったんだよなぁ。
というわけで、gzip圧縮組み込みはいちおうTodo行きにしておきました。ありがとう。ちゃんとzlib拡張ライブラリが入っていなくても誤動作しないようになっているので、あとはユーザが選択できるようにすればいいかな。昨日のキャッシュ機能はCPUパワーが足らない人向けだとすれば、gzip圧縮は回線容量の足らない人向け。なんたってあの2chを救ったのと同じ技術なので(笑)、効果は高いのではないだろうか。
■ tDiary: Tips
昨日見つけた、「シンボリックリンクはダメ」「CGIの拡張子は.cgiのみ」「rubyは/home/hoge/bin/ruby」という、いわゆる「レンタルサーバ三重苦」(←いま命名)のサーバにtDiaryを入れて、かつ「tDiary自体のバージョンアップを楽にしたい」という要求を満たすインストール技。1.3.2以降で有効。
まず、tDiaryをインストールしたディレクトリに以下のファイルを作る。ファイル名は「index.cgi」。
#!/home/hoge/bin/ruby require 'index'
「update.cgi」も、「require 'update'」とするだけで同様。実行属性を付ければこれでOK。バージョンアップは上書きでいけるし、なかなかいいのではなかろうか。
別のディレクトリにtDiaryを入れた場合も「require '/home/hoge/tdiary/index'」みたいにすればいいし、単一サーバで複数の日記を提供する場合にも威力を発揮しそう。
2002-01-10(木) 8150歩 [長年日記]
■ tDiary
夕べ、スナップショット1.3.2.20020110をリリースしたんだけど、ひどいバグが見つかってしまったのでアナウンス中止。というわけで、今日になって1.3.2.20020110.1に入れ替え。実はキャッシュを実装してみたんだが、携帯端末用と一般用のキャッシュファイルを同一にしてしまっていたのが敗因。もちろん別々にしないとダメだにょ。
キャッシュは、最新表示と月毎表示の時に利用される(日毎はサイズが小さいので毎回生成しても問題ない)。本文の更新時刻(ツッコミ含む)よりキャッシュが新しい場合には、キャッシュを採用する。キャッシュファイルはdiary.rhtmlの適用までを行ったものなので、キャッシュがヒットした場合の処理はプラグインの適用だけになり、3段階あるerb処理が2段階も省かれることになる。プラグインをあまり使ってない人には特に絶大な効果があるはず。
なお、リンク元の追加は更新時刻を変更しないので、キャッシュにヒットしてしまう。これでは困るので、リンク元の表示をプラグインとして追い出し、毎回生成することにした。最新・月毎で使われるreferer_of_today_short
と日毎・更新で使われるreferer_of_today_long
の2つ。
それからキャッシュをプラグインから使うために、Pluginクラスに@cache_path
を追加。実は@data_path
も追加してあるけど、将来別々にする可能性もあるので@cache_path
の利用を推奨。
■ というわけでベンチマーク。去年の8月を使ったのは、一番データが大きかったから。
% time (echo date=200108 | ./index.rb > /dev/null) ( echo date=200108 | ./index.rb > /dev/null ) 4.20s user 0.14s system 99% cpu 4.346 total % time (echo date=200108 | ./index.rb > /dev/null) ( echo date=200108 | ./index.rb > /dev/null ) 2.40s user 0.07s system 99% cpu 2.471 total
最初のがキャッシュファイルがない状態、次のはキャッシュが効いてる状態。リンク元生成をプラグインに追い出す前は確実に2倍は出ていたんだけど、今は1.8倍くらいか。まぁ、営業的にはだいたい2倍と言っていい数字だろう(営業って?)。というわけで、XREAあたりで負荷率が気になってる人もチャレンジする価値はあるかも。もっともスナップショットなのでそれなりの覚悟はよろしく。
■ リンク元といえば、昨日は『最高に気持ち悪い 写真』で検索されてしまって、シオシオですよ。ちょうどHalfLifeをやってる頃だからひっかかったんだろうなぁ。
■ Content-Encoding: deflate(2)
最近のw3mは対応しているという指摘をいただいたので、自宅のMaryを上げてみた。とりあえずAsumi用の0.2.3.2のSRPMをもらってきて、これをビルド。おお、たしかに見えるようになった♪ これでdeflateもどんと来いだ。時間を見て0.2.4のRPMを作ってみよう。
ただ、移行時の手違いでbookmarkを飛ばしてしまったのが泣ける。まぁ、会社で使ってるのもほぼ同じだからそれを持っていけばいいのだが。つーか、最近はアンテナしか使ってないよ(笑)。
2002-01-09(水) 8198歩 [長年日記]
■ Sylpheed
夕べ書き忘れたけど、0.7.0になっていたので自宅の方を入れ替え。なんたって嬉しいのは「いくつかのウィンドウでWMCLASSを指定するようにした」だろー。これで、ウィンドウマネージャがメール作成ウィンドウの場所をちゃんと覚えてくれるようになった。
そうか、WMCLASSを変えればちゃんと覚えてくれるんだな、GNOME(というかsawfish?)。Ruby/GTKでWMCLASSを指定する方法があるのかどうか調べること。と心にメモ。→なかださんのツッコミにより調べるまでもなく解決
■ あとCourier-IMAPも1.4.1になってるんだよなぁ。相変わらずビルドできないから、これはAsumi化後だな。
■ 新型iMac(2)
たしかに、宗教がかってる人もいるけど、それだけじゃないんだよねぇ。けっきょくAppleが作るのは、万人がほどほどに認める中途半端なモノではなく、きっちり好き嫌いの分かれるデザインである、というだけなのかも。旧iMacだってそうだったし。
PalmFanの1/9分に「Pixer社のLuxo Jr.だ」という指摘があって、そういうつながりか、とちょっと納得(笑)。でも、Luxo Jr.は頭でっかちという「かわいいの基本」を押さえているけど、iMacは台座はデカいは、首は太いわで、ちぃともかわいくはない。もちろん重い液晶パネルを支えなければならないからだけど、Luxo Jr.ライクなデザインを狙ったとしたら失敗してるよな。
■ それはそうと、この写真はサイコー(笑)。ネタはセキュリティホールmemo。って、どこがセキュリティ……?
■ セミコロン
セミコロンを入れ忘れてもいいように、自動的にセミコロンを追加してくれるプリプロセッサをRubyで書くというのはどうか(笑)。自動的に識別するのは無理か。
◆ Nana [それ買ったらすぱいしーをなすに格安で譲るって言うのはどうでしょ?ひひひ]
◆ ただただし [えー、Trevaは10万画素しかないんだよ!]
◆ tom [! が抜けてません?(ぼそっ]
◆ ただただし [むむ。「!」込みが正式名だったのか……。]