2006年11月16日(木) [長年日記]
- コーディングはしんどいがデバッグは楽しい。
- Tracはチケットの「関係者」には必ずメイルが送信されてしまうようだ。送信しないようにNotify.pyを直したつもりなんだけど、まだ送信されてくる。なんでや。
■ [tdiary] RSSが指すURLが変
急に、本日記のRSS内のURLが http://ogawa.s18.xrea.com/tdiary/tb.cgi/ を指すようになった。この書き込みで元に戻るかな。
元に戻った。makerss.rb にバグがあるのかなあ。
(追記)
続き。
■ [book] 日輪の遺産 (浅田次郎)
終戦間際、軍の最高幹部から極秘命令を受けた真柴少佐と小泉中尉が苦悩しながら任務を遂行する話。後半に登場し活き活きと描かれるマッカーサーが印象に残る。面白い。4点。
■ やること
- デザイン変更
- 保険
PHSのファームウェアアップデート- 健康診断
- 蛍光灯
2006年11月19日(日) [長年日記]
- 溜まっていたRSSフィードを久しぶりに読み切った!
- デスクトップPCを久しぶりに液晶テレビに繋いだが映らない。仕方なく専用ディスプレイに繋いだが、こちらでも映らない。なにー。壊れたのか?
■ [tdiary] tDiaryをスナップショット版(2.1.4.20061110)へ
makerss.rbは最近バージョンアップしているようなので、tDiary全体をバージョンアップしてみた。ちょっとメモ。
- jdate.rbはtdiary-contrib.tar.gz内にある。
- refedit.rbはtdiary-contrib.tar.gz内にも無い。
- misc/plugin/mimetex.rbを移行すること。mimetex.xgiに実行権限を付与すること。
- category.rbを修正すること。
前回と同じ。
(追記)
linkcheck.rbも導入しないと。これはtdiary-contrib.tar.gz内にある。
■ [tdiary] RSSが指すURLが変 (2)
トラックバックを受けるとRSSファイル内のリンクのベースURLが http://ogawa.s18.xrea.com/tdiary/tb.cgi/ になってしまう。tDiaryを最新版にしても再現した。原因を調べたのでメモ。
別環境で試す
調査は別の環境で行おうとしたが、そちらでは再現しなかった。トラックバックを受けてもRSSのベースURLはおかしくならない。XREA固有の現象なのかも。
makerss.rbを読む
RSS内のベースURLは、makerss.rbのmakerss_update内にある
uri = @conf.index.dup uri[0, 0] = @conf.base_url if %r|^https?://|i !~ @conf.index uri.gsub!( %r|/\./|, '/' )
というコードで決まっているようだ。@conf.indexは設定ファイルで指定する@indexのことだろう。これの設定値は'./'になっていた。そすると、ベースURLには@conf.base_urlの値が使われることになりそう。
@conf.base_urlとは
@conf.base_urlはtdiary.rb内の
def base_url return '' unless @cgi.script_name if @cgi.https? port = (@cgi.server_port == 443) ? '' : ':' + @cgi.server_port.to_s "https://#{ @cgi.server_name }#{ port }#{File::dirname(@cgi.script_name)}/" else port = (@cgi.server_port == 80) ? '' : ':' + @cgi.server_port.to_s "http://#{ @cgi.server_name }#{ port }#{File::dirname(@cgi.script_name)}/" end.sub(%r|/+$|, '/') end
という所で決まっているみたい。ということは、@cgi.script_nameがおかしいということになる。@cgi.script_nameはhttpdから渡される環境変数SCRIPT_NAMEそのものだ。
SCRIPT_NAMEを調べる
次のスクリプトでSCRIPT_NAME(とついでにPATH_INFO)の値を調べてみた。
#!/bin/sh echo Content-type: text/plain echo echo SCRIPT_NAME=$SCRIPT_NAME echo PATH_INFO=$PATH_INFO
http://ogawa.s18.xrea.com/misc/env.cgi/aaa/bbb にアクセスするとSCRIPT_NAMEの値は「/misc/env.cgi/aaa/bbb」になってしまう。これだ。ここは「/misc/env.cgi」になるのが正しい。つまりXREAが悪いということのようだ。
検索するとCgi プログラムへ渡される環境変数についてというスレッドが見つかった。2002年の投稿だが、本サーバでもここに書かれているのと同じ挙動を示し、状況は変わっていないようだ。
- http://ogawa.s18.xrea.com/misc/env.xcg/aaa/bbb → SCRIPT_NAME=/misc/env.xcg/aaa/bbb
- http://ogawa.s18.xrea.com/misc/x/env.cgi/aaa/bbb → SCRIPT_NAME=/misc/x/env.cgi
対策
原因は分かった。実現したいのはトラックバックを受けてもRSSファイルのベースURLがおかしくならないようにすることだ。最初のコードを見ると、@conf.index.dupがhttp://で始まっていれば@conf.base_urlが使われなくなるのでSCRIPT_NAMEの影響を受けなくなるはず。だから、tDiaryの設定ファイルに
@index = 'http://ogawa.s18.xrea.com/tdiary/'
と記述すればいいのではないか。
記述してみた。これでトラックバックを受けても大丈夫なようになった模様。
■ やること
- デザイン変更
- 保険
- 健康診断
- 蛍光灯
2006年11月21日(火) [長年日記]
- 風邪気味。
- スクリプトの直しが大変で本体の実装に手が付けられない。
■ [windows] MS IMEのキー設定
漢字変換の際、F6〜F10キーやカーソルキーに手が伸びているんだけど、これらのキーは使わないようにしてみようかなあと思いメモ。
MS IMEのキー設定は、[コントロールパネル]->[地域と言語のオプション]->[言語]->[詳細]などで表示される「テキスト サービスと入力言語」ダイアログの「設定」タブのキーボードの欄で「Microsoft IME Standard 2003」を選択して「プロパティ」ボタンを押すなどして表示される「Microsoft IMEスタンダードのプロパティ」ダイアログの「全般」タブにある「設定」アイコン(なんでここだけアイコンなんだろう…)を押すなどして表示される「Microsoft IME詳細プロパティ」ダイアログの「キー設定」タブで参照できた。
ここから、おれの使いそうなキーバインドを抜き出しておく。
現状 | これでもできる | 内容 |
---|---|---|
F6 | Ctrl-U | ひらがなに変換 |
F7 | Ctrl-I | カタカナに変換 |
F8 | Ctrl-O | 半角に変換 |
F9 | Ctrl-P | 全角英数に変換 |
F10 | なし | 半角英数に変換 |
→ | Ctrl-L | 文節を伸ばす |
← | Ctrl-K | 文節を縮める |
↓ | Ctrl-N | 文節の確定 |
↑ | Ctrl-E | 前の変換候補 |
ちなみに、キー設定は「ATOK」にしています。
■ [etc] 「2007年度、新加入選手のお知らせ」 (名古屋グランパスエイト)
標記の件につきまして、2007年度の新加入選手として、小川佳純選手(明治大)が内定しましたのでお知らせいたします。
経歴 市立船橋高校(千葉)→明治大学
この小川選手は2003年にメモした小川選手みたい。プロになるんだなあ。頑張ってるなあ。そんだけ。
■ やること
- デザイン変更
- 保険
- 健康診断
- 蛍光灯
2006年11月22日(水) [長年日記]
■ [soft] VMWare 5.5でゲストOSの時計が遅れる (2)
しばらく問題なかったのだけれど、突然また遅れるようになってしまった。yum updateでカーネルがバージョンアップしたからだろうか。
VMware Tools をインストールした後で、 .vmx ファイルに以下の設定を追加してみて下さい。
tools.syncTime = "TRUE"
というコメントが書き込まれていて、これを試してみたら遅れなくなった。素晴らしい。なんでこの機能をデフォルトでオンにしていないんだろう。
■ やること
- デザイン変更
- 保険
- 健康診断
- 蛍光灯
2006年11月24日(金) [長年日記]
■ [unix][c] bswap_
developerWorksのLinuxアプリケーションの64ビット・システムへの移植(左のURLはリンク切れ。新しいURL→ http://www.ibm.com/developerworks/jp/linux/library/l-port64/)に、
例えば、htonl(3)、ntohl(3)は、32ビット整数の変換に使用されます。同様に、htons(3)、ntohs(3)は、16ビット整数に使用されます。ただし、64ビットについては、標準の関数セットはありません。しかし、Linuxには、ビッグ・エンディアンとリトル・エンディアンの両方のシステムについて、次のようなマクロが用意されています。
- bswap_16
- bswap_32
- bswap_64
とあった。64ビットの変換にはこのマクロを使うといいかも。ただ、bswap_ は htons などとは違いマシンのエンディアンとは関係なく必ずバイト列を逆転させるようだ。
■ やること
- デザイン変更
- 保険
- 健康診断
- 蛍光灯