2001-12-20(木) 8600歩 [長年日記]
■ 本日のハンティング
Hysteric Programmer 日記を捕獲しました(133)。爆発しますかねぇ。あんまり増えるとアンテナの負荷が……(笑)。
■ マウスがトロい(4)
$!なんて……また新事実だ。shやbashのmanには載ってないんだけど、どこ見ればいいんだろう……。いずれにしても、ちゃんと動いてるみたいっす。ありがとうございました。
ツッコミの件は、空のactionをカレントディレクトリと認識するブラウザなら動くようですね。
■ おお、Special Parameter。見つかりました。なるほど、深いな。$?なんかは(よく知らずに)使ってたこともあるんだけどな。その仲間だったのか。
■ 弁当屋受難
いつも会社の前に群がっている弁当屋の集団が、今日、いっせいに摘発(?)されたらしい。まぁ、道路占有許可をとらずに歩道で商売していたのはたしかに違法だ。
しかし、だ。なにも、昼休みの直前にやるこたぁないんじゃないの、警察さんよ。庶民の昼食を奪って嬉しいか。あんたら、誰のために働いてんのか、きっちり考えてから動けよな。公務員だって顧客志向だろ、これからは。
というわけで、今日はちゃんと許可をとって営業しているぐっでぃのカレー。明日からは戻ってきてくれないと毎日カレーになってしまう。困る。困るぞ。
■ tDiary
スナップショットを1.3.1.20011220に。夕べと休み時間の成果。詳しくはChangeLogを参照してもらうとして(ちなみにCHANGES→ChengeLogにファイル名変更)、プラグインまわりの整備がメイン。まだ仕様が固まってないのでスナップショットで。なんだか、どんどん重いシステムになっているような気がする(きっと気のせい)。
■ まず、プラグイン内で@diariesが見えるようになった。zoeさんトコでツッコミランク・プラグインがうまくいっていなかったのは、プラグインの初期化のタイミングを(おれが)間違えていたため。最後のeRuby解釈の直前で初期化するようになったので、こんどは大丈夫。でも、@comment_limitは見えないから、「100」とでもしてしまった方がよいですよ。
■ 次に、複数の日記を同一マシンで動かしている人の負担を軽減。シンボリックリンクするファイルを、index.rbとupdate.rbだけにして、残りはリンクを遡って元のインストールディレクトリから探すようにした。あとはtdiary.confを個々の日記別に作ればいいので、メンテがだいぶ楽になったかと。
ところが、唯一テーマだけが対応できない。なぜなら、CSSファイル名を埋め込む時に、元ファイルからの相対パスになってしまうため。header.rhtml内に実際のURLを渡せれば解決するのだが……あ、プラグインで実現できるじゃん!! ということで、theme_urlというプラグインを実装。ここでテーマの入ったURLを指定すれば良い。
■ この考え方を拡張すると、現在rhtmlファイルに埋め込んであるメッセージは、すべてプラグインで変更可能にできるってことになる。つーわけで、「本日のリンク元」とか「本日のツッコミ」などの文字列をすべてプラグインに追い出す。これを推し進めれば、国際化も可能である。もっとも、rhtmlファイルの可読性はさらに低下した模様。
■ さらにプラグインを追加。title_listは、現在表示している月のタイトル一覧を生成するもの。これはトライアルなので、今後仕様が変わる可能性大。試しにここにいれてみたけど。重いかもね。レイアウトもかなり制限されるし。
■ tDiaryその他
Content-Length、そうか、XREAは自動的に広告挿入するんだもんね。あれ、じゃあGETの場合はちゃんと再計算してくれてるの?
あと更新ページからのリンクは、自分の日記本文中のリンクを更新完了時にたどってしまった、という話だと思われ。タグを無効にでもしない限りこれは防げないのではないかな。つーか、そういうミスがあるからこそ捕獲できた日記も少なくないので、おれ的にはOK(笑)。
■ ビッグニュース
新横浜のSuica対応改札が4台になりました!!
2001-12-19(水) 10404歩 [長年日記]
- ツッコミサマリ表示を60→120文字に拡大
- ツッコミサマリがあふれた場合、古い方から非表示にして「Before...」とした
- 本日のリンク元を、ツッコミのフォームの下に
- セクションを囲む<div class="section">...</div>を新設
- デフォルト提供のプラグインを00default.rbに統合
- プラグインのnaviをnavi_userとnavi_adminに内部分割
- 存在しないプラグインを呼び出しても落ちないように対策
- Varyヘッダを出すようにした
- 他、ちょこちょこ
■ ツッコミサマリの文字数は可変にしてもいいんだけど、これくらいがちょうどいいんじゃないかと思うので、とりあえず固定のまま拡張。
■ 「More...」の代わりに「Before...」にしたのには賛否両論あるかも知れない。「Before」という表記も含めて。「これ以前のツッコミ」の方がわかりやすいか。
■ ツッコミフォームの位置を変えたのが一番影響がありそう。困るのはNebulaのようなテーマのレイアウトが崩れること。でも、インタフェース的にはぜったいこの位置が良いと思うのだが、どうだろうか。
■ 古いプラグイン(calendar、navi、insert)は削除してくらはい。naviの内部分割によって、けんのぼやきにあった指摘をフォローできる。この話はあとでTIPSにでも。
■ マウスがトロい(3)
昨日のスクリプト、今朝、電源を入れたらjob制御が効かずにエラー。そこで以下のように修正。わざわざRubyを使っているのは、Cygwinのcutコマンドの挙動がなんか変だったのと、代わりに使おうと思ったawkの文法をすっかり忘れたため(←ダメダメ)。job制御って、対話状態じゃないと使えないのかにゃ?
/Program\ Files/Logicool/MouseWare/system/EM_EXEC.EXE & sleep 5 kill `ps | grep EM_EXEC | ruby -ne 'puts $_.split[0]'`
■ tDiaryプラグインTips(2) - ナビゲーションボタンの配置
今日のスナップショットから、ページ最上部にあるナビゲーションボタンを実現するnaviプラグインをちょっといじりやすくしてある。「トップ」「最新」「前日」「翌日」からなる読者向けプラグインnavi_userと、「更新」「設定」からなる管理用プラグインnavi_admin。個々のボタン別に分けてもよかったんだけど、使いやすさのバランスをとって2分割。
これで、読者用のボタンはページトップに置きたいけど、管理用のは下の方にしたいなんて要求に応えられる。例えば@headerに
<p class="adminmenu"><%=navi_user%></p>
@footerに
<p class="adminmenu"><%=navi_admin%></p>
なんてやるわけだ。ただし、更新や設定用の画面ではnaviをページトップに埋め込んであるので、この位置は変更できない。まぁ、読者に見えるわけじゃないからいいでしょ。
さらに、自分で新しい.rbファイルを起こしてその中にnavi_userやnavi_adminを再定義してしまえば、ボタンのラベルや表示順序も自由にできる。
ちなみにnavi系プラグインで使っている@modeという変数には、現在動作しているモードが入っている。これはtdiary.rb内で定義されているTDiaryHogehoge系クラスの「hogehoge」の部分(小文字化されている)。これで現在どんなページを処理しているかがわかる。でもこの仕様はどっかで変わるかも知れない。手抜きが見え見えだし。
2001-12-18(火) 7822歩 [長年日記]
■ tDiary
本日のリンク元が増えるとLast-Modifiedが変わるなんてことはございません。その問題はまだ公開されてなかった頃に発覚、即座に修正されています。だってそんな動作をしていたら、アンテナが使い物にならなくなるではないですか:-)
というわけで、何かの間違いだと思います。Last-Modifiedが変化するのは、本文が更新されたときと、ツッコミがあったときだけです。もしかするとその読者は、キャッシュが効いていないことをLast-Modifiedの変化と勘違いしているのでは。
ところでdoggieさん、日記のURLは?(笑) googleでそれっぽいところを見つけたんだけど、11月から更新されてないし……。
■ 続・マウスがトロい
こないだ削除したEM_EXEC.EXEの起動設定、あれのせいでマウスボタンの左右入れ替えがされなくなってしまった。ぐぁ。いちど起動して、そのあとkillしても設定は残っているから、動き続けている必要はないらしい。なんだか、すげぇマヌケな仕様だ。捨てちまうぞ >Logitech
しかたがないので、ログイン時に実行しているスクリプトに、「EM_EXECをバックグラウンドで実行して、5秒待ってからkillする」という処理を組み込んだ。これでOKだろう。たぶん。
/Program\ Files/Logicool/MouseWare/system/EM_EXEC.EXE & sleep 5 kill %1
job番号が1で固定なのは、スクリプトの先頭にあって、ログイン時に一回だけ実行されるため、確実に1になるから(ホントか?)。
■ CVS
-z9はサーバに負担、なるほど。盲目的に-z3というよりは、サーバの能力と回線容量のバランスを考えるべし、と読みました。spc.gr.jpはパワーはあるけどレンタルでシェアされてるから、ちょっと圧縮率を落とした方がよさげだな。自前鯖だけどADSLだから上りが細いの……なんて環境ではむしろ-z9推奨なのだろう。
■ 本日のハンティング
とーぜんです(笑)。というわけでWAnWAn NiKKiを捕獲(132)。
WWWDが何を根拠に更新を認識するかわかりませんが、WAnWAn NiKKiのLast-Modifiedは正しいようです。もしかしてLast-ModifiedだけじゃなくてContent-Lengthも見ていて、サイズの違いを更新と認識してるのでは? >WWWD
■ RuBBS
Windows2000上で動かないと言われたので、いちおう動かすところまではやった。Time#strftimeの%zが例によって日本語を返すんだけど、それがどうやらSJISで。途中にそんな文字列が混じったものを別の文字コードに変換しようとすると、NKFモジュールが狂うらしい。まぁ、しょうがないというか。
というわけで1.0.1を公開。もちろん、使って意味があるのはWindowsのみ。あ、とーぜんApacheでしかテストしてない。
■ Last-ModifiedとContent-Length
あら、ご足労願ってしまいました(汗)。WWWDにはContent-Lengthを無視させるオプションがあるんですね。よかった。
ところで、Last-ModifiedとContent-Lengthの両方があるときには、Last-Modifiedだけを信じる方がよくないですか。Last-Modifiedが変化するのはほとんどのばあい真の更新時だけなのに対して、Content-Lengthは相手が動的なページの場合にはカウンタの桁上がり、広告の自動挿入とか、時刻によって変わる挨拶とか……不安定な要素が多すぎるような。もちろんサイズしか指標がないときには積極的に使うべきだとは思いますが。
そういえば、戀塚さんのサイトをうろついていたら、久々にBio_100%の名前を見つけて嬉しかったですよ。なつかしいなぁ。98時代ははまったもんだ。「ろりろりろーりんぐ」ってBioだっけ?(←違ったりするんだよな)。
◆ ただただし [HEADでもGETでも、正しいLast-Modifiedを返してることには違いはないっす。]
◆ UmaShika [WWWD作者に聞きましたところ、更新チェック時の比較対象のデフォルトは"Last-ModifiedとContent-..]
◆ skamio [ -z9のもとネタはこれかな? http://www.mozilla.org/cvs.html -z9は "expo..]
◆ ただただし [なるほど、mozilla.orgなら問題になるわな、そりゃ(笑)]
◆ 戀塚 [WWWD作者です。 サイズの違いはデフォルトで更新と判別するようになってます。アイテムごとの設定で、サイズの違いを無..]
◆ doggie [ガーン。じゃあ tDiary や私のせいじゃないんですね(^^;)]
◆ なかだ [kill $!では。 ツッコミ自体は別になんともなくできましたが。]
◆ skamio [$!は man bashの "Special Parameters"(jmanなら 特殊パラメータ)の項ですな。 !..]
◆ zoe [あれ??いつのまにやらあっぷしてる。。]
◆ きた [Pluginの中で先月の@diariesにアクセスできないものでしょうか? そうすれば先月分にさかのぼってtitle..]
◆ はんばあぐ [Hysteric Programmer日記管理人です。捕獲してくださりありがとうございます。 きっと爆発しますよ。こ..]
◆ でんすけ [ぬぬ、たださんって横浜方面の方なのねん。]