Landscape トップページ | < 前の月 2005-08 2005-09 次の月 2005-10 >

Landscape - エンジニアのメモ 2005-09

月ごとの記事一覧
2007年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2006年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2005年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2004年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2003年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2002年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
日ごとのページ
2005-09/ 1日 2日 3日 4日 5日 6日 7日 8日 9日 10日 11日 12日 13日 14日 15日 16日 17日 18日 19日 20日 21日 22日 23日 24日 25日 26日 27日 28日 29日 30日

2005-09-29 (Thu)

* Firefox と Thunderbird の壁紙

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Mozilla]

Firefox wallpapers Gallery Thunderbird wallpaper gallery
http://users.otenet.gr/~fiotakis/Gallery.html

gr って Greek? ギリシャか。

http://users.otenet.gr/~fiotakis/Final58_1024.jpg を壁紙にした。大量のメールが押し寄せるメール地獄で、大事なメールをしっかりと守ってくれる Thunderbird という意味が込められている気がする。いままでは 2005-08-10 の「ソニック・ザ・ヘッジホッグの壁紙」で書いたラブリーなソニックの壁紙を使ってた。

2005-09-27 (Tue)

* NTFS でファイル レコード セグメント 読み取れませんエラー

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows] [PC]

やってしまった。iPod のケーブルと間違えて、USB2.0 の外付けハードディスクのケーブルを動作している最中に抜いてしまった。しかも、抜いた後気づくのがかなり遅れた。その結果、USB2.0 の外付けディスクが読めなくなってしまった。

USB2.0 のハードディスクは、2005-03-31 の「USB 2.0 外付けハードディスクケースを購入」で購入したもの。つまり、ケースだけ。中身は Maxtor 96147U8 で、容量は60GB。以前は USB2.0 のカードを使って接続していたが、2005-06-18 の「Athlon64 マシンを自作する」で作った ASUS A8V-E DELUXE /NW に直接接続するようにしている。

- 症状

まず、エクスプローラの起動にかなり時間がかかる。おそらく、該当ドライブのファイルのインデックスを読みに行って、読めないので何度もリトライしているんだろう。イベントログを見ると、以下のエラーが大量に記録されていた。

デバイス \Device\Harddisk2\D に不良ブロックがあります。

この流れはやばい。とりあえず chkdsk コマンドで復旧を試みる。

- chkdsk 実行

コマンドプロンプトから chkdsk を実行。

C:\Documents and Settings\hiroaki>chkdsk f: /F
ファイル システムの種類は NTFS です。
ボリューム ラベルは ボリューム です。

CHKDSK はファイルを検査しています (ステージ 1/3)...
ファイル レコード セグメント 24 を読み取れません。
ファイル レコード セグメント 25 を読み取れません。
ファイル レコード セグメント 26 を読み取れません。
ファイル レコード セグメント 27 を読み取れません。
ファイル レコード セグメント 904 を読み取れません。
ファイル レコード セグメント 905 を読み取れません。
ファイル レコード セグメント 906 を読み取れません。
ファイル レコード セグメント 907 を読み取れません。
ファイル レコード セグメント 968 を読み取れません。
ファイル レコード セグメント 969 を読み取れません。
ファイル レコード セグメント 970 を読み取れません。
ファイル レコード セグメント 971 を読み取れません。
ファイル レコード セグメント 996 を読み取れません。
ファイル レコード セグメント 997 を読み取れません。
ファイル レコード セグメント 998 を読み取れません。
ファイル レコード セグメント 999 を読み取れません。
ファイルの検査を完了しました。
CHKDSK はインデックスを検査しています (ステージ 2/3)...
ファイル 28 内のインデックス $I30 のインデックス エントリ BOARD_~1.ZIPを削除します。
ファイル 28 内のインデックス $I30 のインデックス エントリ BOARD_MEETING20050801.ZIP を削除します。
ファイル 214 内のインデックス $I30 のインデックス エントリ LOG20050912 を削除します。
ファイル 214 内のインデックス $I30 のインデックス エントリ LOG200~1 を削除します。
ファイル 214 内のインデックス $I30 のインデックス エントリ trackdown を削除します。
ファイル 214 内のインデックス $I30 のインデックス エントリ trackd~1 を削除します。
ファイル 641 内のインデックス $I30 のインデックス エントリ 01-Children Dream Version.wav を削除します。
ファイル 641 内のインデックス $I30 のインデックス エントリ 02-Fable Dream Version.wav を削除します。
ファイル 641 内のインデックス $I30 のインデックス エントリ 01-CHI~1.WAV を削除します。
ファイル 641 内のインデックス $I30 のインデックス エントリ 02-FAB~2.WAV を削除します。
インデックスの検査を完了しました。
CHKDSK は破損ファイルを回復しています。
ファイル レコード セグメント 25 のフラグを修復しています。
ファイル 25 の軽度なエラーを修復します。

いくつかのファイルは壊れていて、削除されてしまった。でも、とりあえず chkdsk は終了した。これで復旧できたかな? もう一度エクスプローラを立ち上げても、症状が変わらない。かなり長い時間待たされる。そして、イベントログにはさっきと同じエラーが記録されている。修復できてないの? もしかしたらこのディスク、もう二度と読めないのかも?

もう一度 chkdsk してみる。あんまり意味がないかもしれないけど、今度はもっと多くのオプション付き。

C:\Documents and Settings\hiroaki>chkdsk f: /f /V /R /X
ファイル システムの種類は NTFS です。
ボリューム ラベルは ボリューム です。

CHKDSK はファイルを検査しています (ステージ 1/5)...
ファイル レコード セグメント 24 を読み取れません。
ファイル レコード セグメント 25 を読み取れません。
ファイル レコード セグメント 26 を読み取れません。
ファイル レコード セグメント 27 を読み取れません。
ファイル レコード セグメント 904 を読み取れません。
ファイル レコード セグメント 905 を読み取れません。
ファイル レコード セグメント 906 を読み取れません。
ファイル レコード セグメント 907 を読み取れません。
ファイル レコード セグメント 968 を読み取れません。
ファイル レコード セグメント 969 を読み取れません。
ファイル レコード セグメント 970 を読み取れません。
ファイル レコード セグメント 971 を読み取れません。
ファイル レコード セグメント 996 を読み取れません。
ファイル レコード セグメント 997 を読み取れません。
ファイル レコード セグメント 998 を読み取れません。
ファイル レコード セグメント 999 を読み取れません。
ファイルの検査を完了しました。
CHKDSK はインデックスを検査しています (ステージ 2/5)...
ファイル 5 内のインデックス $I30 のインデックス エントリ found.003 を削除します。
インデックスの検査を完了しました。
ドライブ上の軽度な矛盾をクリーンアップしています。
CHKDSK は破損ファイルを回復しています。
ファイル レコード セグメント 25 のフラグを修復しています。
ファイル 25 の軽度なエラーを修復します。

chkdsk のオプションの意味。/F さえ指定しておけばいいような雰囲気。やっぱり意味無いかな・・と思ったけど、chkdsk のステージ数が 3 から 5に増えてるね。より徹底的にやってくれている模様。
/F              ディスクのエラーを修復します。
/V              FAT/FAT32:ディスクの全ファイルの完全なパスと名前を表示します。
                NTFS: クリーン アップ メッセージがあればそれも表示します。
/R              不良セクタを見つけ、読み取り可能な情報を回復します。
                (/F を意味します)
/X              必要であれば、最初にボリュームを強制的にマウントを解除
                します。ボリュームへ開かれているすべてのハンドルは、無効
                になります。

chkdsk 完了。でも、エクスプローラでアクセスしようとするとやっぱり時間がかかり、イベントログにはエラーが記録される。何回 chkdsk してもこの状態から進まない。症状としては、ファイルのデータそのものはディスク上にはあるんだけど、それにアクセスするためのインデックス情報が破損している。で、chkdsk でそれを修復しようとしたが、修復しきれない状態。

こんな状態でも、サルベージする方法はいろいろあると思う。別のディスクにダンプして生きてるデータだけ吸い出していくとか。でも、そこまでしなくても、今回は何とかなりそう。このドライブは更新頻度が低いデータ保存用ドライブ。CD からリッピングしたデータや、様々なアーカイブを保存している。1ヶ月前に取ったバックアップもある。諦めてフォーマットした方が早い。

フォーマットしたらエラーが出なくなった。で、別ディスクからバックアップをリストア。データはちょっと古いけど、まあ大丈夫。やっぱりバックアップ重要。

- NTFS ってジャーナリングファイルシステムなのに

そういえば、動作中のドライブから SCSI ケーブルを抜いたときの各ファイルシステムの障害耐性を調べたレポートで、ext3 だか何かが怪しい挙動を示したというのをどこかで読んだ気がする。でも、今回の体験をしたので私にとっては NTFS も ext3 も同じレベルだ。いや、むしろクラッシュしたことがない分、ext3 の方が信頼が置ける。個人的経験だけでは信頼性は測れないとはわかっているけど、やっぱり心証的に悪い。

そもそもファイルのインデックスってメタデータで、ファイルシステムのジャーナリング機能で保護されるはず。なのに、今回はしっかりファイルシステム的にクラッシュしたのはなぜ? 突然の電源断には耐えられても、USBケーブルの挿抜には耐えられないってこと? もしかして、USB ストレージのコントローラやドライバが悪いのかな?

2005-09-25 (Sun)

* 三国志 IME 辞書ファイル for MS-IME/ATOK

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [三国志大戦]

三国志の IME 用辞書を作った。
http://sonic64.com/dat/sangokushi-dictionary.zip

- 自由度の高いライセンスの三国志辞書が欲しい

三国志関連の単語を収録した辞書を探してみるといくつかは存在するのだが、再配布を制限していたり、修正や改変を禁止していたりとライセンスの自由度が低い。プログラムからデータを使ったりしたいし、いろいろ自分好みにデータを修正して使いたい。こういうデータには著作権は発生しないとかいう判例があったような気もするが、余計なトラブルは避けたいのでとりあえず作った。

で、ライセンスをどうしようかと思ったが、ひとまず GPL2 と BSD のいずれかをユーザーが選択できるデュアルライセンスとした。GPL や BSD ライセンスをこういうデータにも適用できるのかはわからないけど、とりあえずは公開しておこうと思ったのでこれらを選んだ。クリエイティブ・コモンズのライセンスとかが適切なのかな?

とにかく、この辞書は GPL2 と BSD ライセンスのもとで修正や再配布が可能。

- 辞書の収録内容

三国志の関連の漢字変換で困るのは、まず人名。そして地名。私の場合、三国志といえばコーエーの「三国無双」とセガの「三国志大戦」なので、まずはセガの三国志大戦に出てくる武将の名前を収録した。これだけでもずいぶん入力は楽になる。「馬超 (ばちょう)」を入力するのに、「うま」「ちょうえつ」って入力しなくて済むようになった。あとは計略名とかも入れたいところだが、ひとまずはこれで十分。

- 魏・呉・蜀の代表

ちなみに、MS-IME2002 で登録のテストをしていたら以下のエラーが出た。

! 指定された単語/用例は既にシステム辞書に登録されています。
そうそう    曹操    人名
! 指定された単語/用例は既にシステム辞書に登録されています。
そんけん    孫権    人名
! 指定された単語/用例は既にシステム辞書に登録されています。
りゅうび    劉備    人名

おおっ、デフォルトで登録されているとは、やっぱりこの三人は有名なんだなあ。

- 配布ファイルの中身

配布ファイルの中身。

三国志 IME 辞書ファイル for MS-IME/ATOK
http://sonic64.com/dat/sangokushi-dictionary.zip

readme.txt
三国志人名辞書

作成者: 斎藤宏明 http://sonic64.com/
配布 URL: http://sonic64.com/2005-09-25.html
Version: 0.1
ライセンス: GPL2 または BSD ライセンスのデュアルライセンス

三国志人名辞書です。
セガの三国志大戦に登場する武将の姓名を収録しています。
計略名や字、スラングは現在の所収録していません。
文字コードは Shift_JIS です。


他の三国志関連の辞書に比べて収録数は少ないのですが、
より自由度の高いライセンスを採用しています。
GPL2 または BSD ライセンスに従って、
修正や修正したものの再配布が自由に行えます。

誤りの指摘やパッチ、追加データは歓迎します。



- MS-IME での登録方法
WindowsXP 付属の MS-IME 2002 で登録できることを確認していますが、
MS-IME2003/2002/2000/98/97 などのバージョンでも利用できると思います。

言語バーのツールの辞書ツールを選択します。
ツール (T) の テキストファイルからの登録 (T) を選びます。
同梱の sangokushi-dictionary.txt を選択します。

以下の「IME 形式のテキスト ファイルに登録されている単語を IME 2002 に追加するには」の
部分がスクリーンショット付きで参考になります。

以前のバージョンの IME のユーザー辞書を IME 2002 の辞書に移行するには
http://support.microsoft.com/default.aspx?scid=kb;ja;880631



- ATOK での登録方法
当辞書は MS-IME 用ですが、JustSystem 社の ATOK でも利用可能です。
ATOK17 で登録できることを確認していますが、その他のバージョンでも利用できると思います。

ATOK の辞書ユーティリティを起動します。
最上部にある「一括処理」ボタンを押します。
「単語一括処理」タブを選択します。
単語ファイル (T) の「参照 (R)」ボタンを押し、同梱の sangokushi-dictionary.txt を選択します。
単語ファイル形式 (K) を MS_IME2003/2002/2000/98/97 を選択します。
登録 (A) ボタンを押します。

以上

sangokushi-dictionary.txt
いせき    伊籍    人名
うきつ    于吉    人名
うきん    于禁    人名
おうい    王異    人名
おうへい    王平    人名
かいえつ    カイ越    人名
かく    賈ク    人名
かくか    郭嘉    人名
かくこうごう    郭皇后    人名
がくしん    楽進    人名
かこうえん    夏侯淵    人名
かこうげっき    夏侯月姫    人名
かこうとん    夏侯惇    人名
かんう    関羽    人名
かんこうごう    甘皇后    人名
かんとう    韓当    人名
かんねい    甘寧    人名
かんぺい    関平    人名
ぎえん    魏延    人名
ぎゅうきん    牛金    人名
きょうい    姜維    人名
きょちょ    許チョ    人名
ぐほん    虞翻    人名
けいどうえい    ケイ道栄    人名
げんがん    厳顔    人名
けんてい    献帝    人名
ごい    呉懿    人名
こうがい    黄蓋    人名
こうげつえい    黄月英    人名
こうそ    黄祖    人名
こうそんさん    公孫サン    人名
こうちゅう    黄忠    人名
ごふじん    呉夫人    人名
さいぶんき    蔡文姫    人名
さいぼう    蔡瑁    人名
さじ    左慈    人名
しばい    司馬懿    人名
しばき    司馬徽    人名
しゃまか    沙摩柯    人名
しゅうそう    周倉    人名
しゅうたい    周泰    人名
しゅうゆ    周瑜    人名
しゅかん    朱桓    人名
しゅち    朱治    人名
じゅんいく    荀    人名
じゅんゆう    荀攸    人名
しょうきょう    小喬    人名
しょうきん    蒋欽    人名
しょかつきん    諸葛瑾    人名
しょかつりょう    諸葛亮    人名
じょこう    徐晃    人名
じょしょ    徐庶    人名
じょせい    徐盛    人名
しんこうごう    甄皇后    人名
そうこう    曹洪    人名
そうしょう    曹彰    人名
そうしょく    曹植    人名
そうじん    曹仁    人名
そうそう    曹操    人名
そうひ    曹丕    人名
そんけん    孫乾    人名
そんけん    孫堅    人名
そんけん    孫権    人名
そんさく    孫策    人名
そんしょうこう    孫尚香    人名
だいきょう    大喬    人名
たいしじ    太史慈    人名
ちょううん    趙雲    人名
ちょうかく    張角    人名
ちょうこう    張コウ    人名
ちょうこう    張紘    人名
ちょうしゅんか    張春華    人名
ちょうしょう    張昭    人名
ちょうしょう    張松    人名
ちょうじん    張任    人名
ちょうせん    貂蝉    人名
ちょうひ    張飛    人名
ちょうほう    張宝    人名
ちょうりょう    張梁    人名
ちょうりょう    張遼    人名
ちょうろ    張魯    人名
ちんきゅう    陳宮    人名
ちんぐん    陳羣    人名
ちんけい    陳珪    人名
ちんとう    陳登    人名
ちんとう    陳到    人名
ちんぶ    陳武    人名
ていいく    程    人名
ていえんし    程遠志    人名
ていふ    程普    人名
ていほう    丁奉    人名
てんい    典韋    人名
とうしゅう    董襲    人名
なんかろうせん    南華老仙    人名
はいげんしょう    裴元紹    人名
ばしょく    馬謖    人名
ばたい    馬岱    人名
ばちょう    馬超    人名
ばりょう    馬良    人名
はんしょう    潘璋    人名
びじく    麋竺    人名
びふじん    麋夫人    人名
ぶんぺい    文聘    人名
べんこうごう    卞皇后    人名
ほうせい    法正    人名
ほうとう    ホウ統    人名
ほうとく    ホウ徳    人名
まんちょう    満寵    人名
もうたつ    孟達    人名
らいどう    雷銅    人名
りくそん    陸遜    人名
りてん    李典    人名
りゅうしょう    劉璋    人名
りゅうぜん    劉禅    人名
りゅうび    劉備    人名
りゅうひょう    劉表    人名
りゅうほう    劉封    人名
りゅうよう    劉曄    人名
りょうか    廖化    人名
りょうそう    凌操    人名
りょうとう    凌統    人名
りょはん    呂範    人名
りょふ    呂布    人名
りょもう    呂蒙    人名
ろしゅく    魯粛    人名

当サイト Landscape は今のところ文字コードに euc を使って書いているので、上記は配布ファイルの中身をそのまま再現できていないと思う。たとえば、程イク (ていいく) のイクの字は配布ファイルは化けていないが、当ページでは化けているはず。

2005-09-24 (Sat)

* ニンドリ2005年11月号付録 スーパーマリオサウンドコレクション を入手

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [音楽] [ゲーム]

任天堂ハードウェア専門ゲーム雑誌 ニンテンドードリーム (Nintentdo Dream、通称ニンドリ) の2005年11月号には、スーパーマリオサウンドコレクションというサウンドトラック CD が付録で付いてくる。

今月のニンテンドードリーム
http://www.nindori.com/books/
http://www.nindori.com/books/backnumber/139.html (今のところ 404 Not Found)

これは買いだ。普段は雑誌は買わない私だが、こういう付録が付くとやっぱり欲しくなる。690円で演奏時間72分36秒。ファミコン版の初代マリオからゲームキューブ版のマリオサンシャインまでのベストセレクション。ちなみに行きつけの本屋さんに行ったら最後の一冊だった。危なく買い逃すところだった。

- ニンドリドットコムの RSS

ニンドリはこういう魅力的な付録がいつ付くのかわからないので、買い逃してしまうんじゃないかといつも懸念していた。で、久しぶりにニンドリの公式サイトを訪れて、何の気なしに bloglines に追加する Bookmarklet を使ったところ、RSS があることがわかった。

ニンドリドットコム RSS
http://www.nindori.com/index.rdf
公式サイトで配布している RSS だが、サイト内に案内が一つもない。もしかしたらテスト中のサービスかもしれないが、ちゃんと以下のように最新号についてのアイテムも入っている。

<item rdf:about="http://www.nindori.com/books/index.html#1">
    <title>Nintendo DREAM 11月号本日発売</title>
    <link>http://www.nindori.com/books/index.html</link>
    <description>9月21日発売/690円 2大付録:スーパーマリオシリーズサントラCD/ファミコンミニ スーパーマリオブラザーズ完全攻略本 モノリスソフト2大RPG:バテン・カイトス2/ゼノサーガ1・2 サウンドビッグ対談:すぎやまこういち+近藤浩治 新作紹介 など</description>
    <dc:date>2005-09-21T00:25+09:00</dc:date>
</item>

- スーパーマリオサウンドコレクション 収録曲

以下、収録曲について。ファミコン版の3作については割愛。

- スーパーファミコン版 スーパーマリオワールド

任天堂スーパーファミコン・ゲー任天堂スーパーファミコン・ゲー

ゲーム・ミュージック
発売日: 1992/03/04


amazon で詳しく見る


21曲目 お城BGM。重厚な扉を開けて、ヨッシーから降りて乗り込むのが好きだった。

23曲目 エンディング。これは「任天堂 スーパーファミコン ゲームミュージック」のサントラ CD にはアレンジ版しか入っていなかったので、オリジナル版を聴いたのは久しぶり。いい曲だなあ。演奏時間は4分10秒。ゲームではエンディング中にヨッシーの卵がたくさん孵って、赤ちゃんヨッシーがいっぱい生まれるシーンがあるんだけど、その音もちゃんと入ってる!

- ニンテンドー64 版 スーパーマリオ64

スーパーマリオ64スーパーマリオ64

ゲーム・ミュージック / チャールズ・マルティニー
発売日: 1996/07/19


amazon で詳しく見る


28曲目の ウォーターランド。曲目一覧には私の大好きな「かいぞくのいりえ」が入ってない。残念・・・と思って聴いてたらこの「ウォーターランド」として収録されてた。そういえば、サントラの曲名も「ウォーターランド」だったっけ。ただ、2004-05-19 の 「USF Nintendo64 サウンドフォーマット」でも書いたように、この曲はマリオのいる位置によってパートが増えていくという演出があった。それがないのが残念だ。

マリオ64の「かいぞくのいりえ (英語名 Dire, Dire Docks、サントラだと9曲目の『ウォーターランド』)」は、海岸にいるときはメロディのみが演奏されているが、海に入るとバックのシンセが流れ始め、海の奥深くまで行くとリズムが鳴り出すという素晴らしい演出があった。

曲自体は、海の青さと大きさを感じられる素晴らしいものだけど、やっぱり完全収録して欲しいな。

32曲目 クッパへの道。この曲も辛く険しい道を表現していて好き。回るファイアバーに触ってしまって、マリオが「あちゃちゃちゃー」って叫び回るのが思い出される。

- ゲームキューブ版 マリオサンシャイン

スーパーマリオサンシャインスーパーマリオサンシャイン

任天堂
発売日: 2002/07/19
NINTENDO GAMECUBE

amazon で詳しく見る


マリオサンシャインはサントラが出てなかったはず。いま検索してもやっぱりヒットしない。そういう意味では今回の付録 CD はレアだな。35曲目の「ドルピックタウン」から46曲目の「スタッフロール」まで入ってる。旧世代のハードと比べると、やっぱりゲームキューブは音質がいい。

35曲目のドルピックタウンは、ヨッシーに乗ったときと乗っていない時でリズムパートが異なるんだけど、ちゃんと両方を収録している。こういう演出って好きだな。

36曲目 ヒミツコースは、初代マリオのメインテーマのアカペラ風アレンジ。この曲好きなんだよ。初めて聴いたとき、私も弟も「おおっ」って声を上げてた。ヒミツコース自体は難易度が高かったりして大変だったんだけど。

43曲目 マーレのいりえ。この曲も好き。ゲームキューブ版を遊んでいた頃は、テレビを消してアンプからこの曲だけを出力して聴いてた。

この曲はなんて表現したらいいんだろう? 不思議な雰囲気というほど不思議さがあるわけでもないし、悠久というほど時の流れを感じるわけでもないし、神秘的というほど秘められた力を感じるわけでもない。強いて言えば、「不思議」ではなく「ふしぎ」、「神秘的」ではなく「しんぴてき」って感じかなあ。漢字を使うとどうも意味が強く出過ぎちゃうんだけど、平仮名だとそれが弱まるので、「不思議」と「神秘的」を薄めて合成して2で割ったような感じかな。あ、「まったり」とか「のんびり」も追加しておこう。

2005-09-23 (Fri)

* 「bloglinesスパム」はできるけど、ユーザへの恩恵もある

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [RSS]

以下の指摘への考察。

kokepiの日記 - 「bloglinesスパム」ができる
http://d.hatena.ne.jp/kokepi/20050921/1127303066
bloglinesやmyYahooのツールバー、ブックマークレット等をから、「このページを追加」みたいな機能を使うと、サイトのRSSフィード登録画面に、第三者のフィードが表示されることがある。

確かに「bloglinesスパム」はできますが、明確なスパム行為でない場合はユーザへの恩恵もあります。現状では指摘の問題をはらんでいますが、RSS リーダー提供側はちょっと仕様を変えるだけで、ユーザをはじめ皆に恩恵があるようにできます。RSS リーダー提供側は頑張って欲しいところです。

- 一概に悪い仕様とはいえない

私の言いたいことは以下の3点。

この機能は利点もあり、一概に悪い仕様とは言い切れない。
RSS の URL を直指定させる登録 URL なら、他の RSS が紛れ込むことはない。
Bloglines や Yahoo などの RSS リーダー提供側は、公式 RSS の表示順位を上げて最優先扱いにして欲しい。

確かに、公式な RSS を押しのけて他の RSS を紛れ込ませることができる。ただ、私は他のサイトが配布する非公式 RSS に恩恵を受けているので、必ずしも悪い仕様とは言い切れないと思っている。たとえば、2005-05-10 の "「なんでも RSS」で RSS が無いサイトから RSS を生成" を使って生成した RSS を誰かが bloglines に登録していれば、他のユーザがその RSS を購読することが簡単にできる。第三者のフィードが少ないうちなら、ユーザーへの恩恵もある。

- RSS の URL を直指定すればノイズは出てこない

RSS の URL を直指定すればノイズは出てこない。たとえば、以下のように RSS フィード を直指定した Bloglines への登録 URL ならば、余計な RSS は表示されない。

http://www.bloglines.com/sub/http://sonic64.com/cl.xml

当サイト Landscape 内の RSS 登録 URL は、すべて上記のように RSS の URL を直指定するようにしている。ただ、提供している RSS の数が少ない場合はこれでよいのだが、たとえばカテゴリごとに RSS を用意しているサイトだと、サイト内にその数の分だけ登録用リンクを記述設定しなければならない。

これを解決するには、サイトで提供している RSS を RSS AutoDiscovery で見つけられるように、HTML ヘッダに全部列挙するのが良い。2004-02-14 の「RSS Auto discovery で複数の RSS を提供するには」の手法が使える。

- 公式フィードの表示順位を上げる

Bloglines のフィード一覧画面は、どういう順番でフィードが並んでいるのかわからないという問題がある。以下のような場合に、表示順位を最上位にしたり、何かマークを付けたりするなどして欲しい。

RSS AutoDiscovery で明示されている RSS の場合
RSS が提供されている URL のドメインと RSS が言及しているドメインが一致した場合

RSS リーダー提供側がこういう配慮をしてくれれば、スパマーがいくら大量にゴミのような RSS を用意した場合でも、ユーザーはある程度対応できるだろう。

2005-09-22 (Thu)

* lain の DVD-BOX 廉価版が発売されたけど購入見送り

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [DVD] [アニメ]

serial experiments lain TV-BOXserial experiments lain TV-BOX

ジェネオン エンタテインメント
発売日: 2005/09/22


amazon で詳しく見る

1997年頃やっていた深夜アニメ serial experiments lain (シリアル エクスペリメンツ レイン) の DVD BOX 廉価版が発売になった。商品名としては DVD-BOX ではなく TV-BOX を名乗っている。購入しようかどうかちょっと迷ったが、結局見送ることにした。

今回の DVD BOX は全13話入って13000円弱と、今まで発売されたものに比べると格段に安い。

- lain DVD BOX についてのレポート

2ちゃんねるに書き込みがあった。

serial experiments lain lif.21
http://anime.2ch.net/test/read.cgi/ranime/1123894497/540-
540 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/21(水) 19:55:04 ID:???
BOX届いたのでチェック。
画質は前と変わらないと思う。ビットレートまで
調べたわけじゃないけどパッと見で。
映像特典はノンクレジットOPとED。
あと前のにもあった静止画の設定集。
ただ・・・前のでも不完全だったウェザーブレイクが

収 録 さ れ て す ら い な い 。

予告も未収録。

ついでに、前のやつの5巻に入っていた「mail」
(スタッフインタビュー)も未収録。
CDやDVDのCMも未収録。

前の処分できないじゃん・・・
予告とか隠しコマンドとかで入ってないかな・・・

画質についてのレポートは上記一件だけだが、上記書き込みに対する反論などはとくに出てないし、問題は無いんじゃないかと思う。作品自体を楽しみたい人には、値段も安いので良いだろう。

590 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/23(金) 00:54:02 ID:???
>587
まさか予告無しって思わんよな、普通は。
予告って本編の一部だろ…さすが銭怨。


591 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/23(金) 00:59:16 ID:???
結局コンプしたい人、前のもってない人向けか


592 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/23(金) 01:01:52 ID:???
>>589
ゲームとかCDのCMは前出た方に入ってるよ。


593 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/23(金) 01:27:04 ID:???
ジュエルケースが嫌だったから出直すの待ってたけど、結局ジュエルの旧版探すハメになるのか・・・
なんだかなぁ
いっそ北米版で妥協しとくか、バカみたいに安いし


594 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/23(金) 01:36:20 ID:???
ここだけで愚痴らずにメーカーにもちゃんと文句言っとけよ。


595 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/23(金) 01:53:43 ID:???
北米版がウェザーブレイク隠しだったからきっと今回のも
そうなんだよ!きっと・・・

違うか・・・


625 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/23(金) 22:33:43 ID:???
バラ売りDVDが廉価版BOXに勝ってるとこって何ですか?
どっちか買おうと思ってるんです。


627 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/23(金) 22:43:53 ID:???
バラ
・ゲームやCD、DVD等の関連商品のCM映像
・2〜5巻の初回にピンナップカード封入
・5巻にスタッフインタビュー
・予告
・ウェザーブレイク(抜け有り)

青BOX
・本編はバラと一緒
・解説書はVHS・LDのものを使用しているので折り込み
・テレカ封入
・特典DISC(つまんない)

廉価BOX
・新規映像特典としてノンクレジットOP&ED
・ちびちびレインは画集に載ったものを含めてブックレットに6話収録
・無くなったもの:予告、ウェザーブレイク、スタッフインタビュー

全てに共通する映像特典:設定資料


こんなかんじ

やはり問題なのは収録内容の不完全さだ。lain を見てる人はどちらかというとコアな層に分類されると思う。そういう人は予告や関連商品の販促 CM などが完全に収録されているかにこだわる。メーカー側もそれをわかっているはず。でも、今回は収録されていない。単に隠しコンテンツとして収録されている可能性もあるが、存在しているという情報が出てこない限り、それは事実上無いと同義だ。

NiA_7 (ニアアンダーセブン) の DVD-BOX は単なる廉価版だそうだ。lain もそうであって欲しかった。
NieA_7 DVD-BOXNieA_7 DVD-BOX

ジェネオン エンタテインメント
発売日: 2005/04/01


amazon で詳しく見る


ニアアンダー7
http://anime.2ch.net/test/read.cgi/ranime/1099193442/270-273
270 :名無しか・・・何もかも皆懐かしい [sage] :昭和80/04/02(土) 02:52:50 ID:???
BOXって以前発売されたばら売り版と映像・音声で違いありましたか?
特典映像とか音声リニューアルとか・・・・・
もしかして枚数が少なくなっただけ?片面1層→2層に。


271 :名無しか・・・何もかも皆懐かしい [sage] :昭和80/04/02(土) 03:50:13 ID:???
>>270
以前のばら売りの仕様は知らないけど
片面2層になってる。音声は2chステレオ
あとDISC3に映像特典があって
内容は、未放映予告用映像、ノンクレジットOP・ED
民菜の唄チャイナミラーズのテーマ・AM11PM7
設定資料集壱・弐・参が入ってる。

その後、メーカーに問い合わせた人がレポートしていた。

816 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/30(金) 19:44:25 ID:???
TV-BOXに予告が収録されてなくて残念だった、
という趣旨の感想を送ったら、ジェネオンから回答メールが届いた。

短くまとめると 「廉価版なので・・・」 ということで、
やっぱりな、と思うと同時に、
ちゃんとした回答メールが返ってきたことにちょっと感動。


817 :名無しか・・・何もかも皆懐かしい [sage] :2005/09/30(金) 19:52:51 ID:???
>>816
もう一押しだよ。
他の廉価版は映像カットされていませんが何か?
と送ってやれ。


884 :名無しか・・・何もかも皆懐かしい [sage] :2005/10/03(月) 21:17:15 ID:???
>>816
俺以外にも質問した人居たのか・・・・・同じような回答貰いましたよ。
要するに、今までのBOX、バラ売りを買ったお客様に考慮して
映像特典を排除し、替りにノンクレジットOP/EDを入れたとの事。

>>817
そこにも突っ込んでみた。
転載は避けて欲しいとの回答なので、要約だけ書くと、
弊社のアニメ作品において、「次回予告」はフォーマット的には本編の一部であるが、
該当作品の場合、初回リリース時のPの判断において「次回予告になっていない
次回予告であり、実写が挿入されると(アニメ)本編の邪魔になる」という理由で
映像特典扱いとなっている。
(放送時に「次回予告」の変わりに流していた映像・・・・という認識)
よって、今回の廉価版には未収録となってます。

以上です。


886 :名無しか・・・何もかも皆懐かしい [sage] :2005/10/03(月) 22:48:15 ID:???
いいわけくさいな
予告をカットした理由はそれでいいとして
ウェザーブレイク切った理由にはならないし


887 :名無しか・・・何もかも皆懐かしい [sage] :2005/10/03(月) 22:55:34 ID:???
青BOX買えなかった負け組って惨めwww


888 :名無しか・・・何もかも皆懐かしい [sage] :2005/10/03(月) 23:00:13 ID:???
青BOXだってウェザーブレイクは一部収録されてないんだから
今回は全部入れてほしかったよ・・・


889 :名無しか・・・何もかも皆懐かしい [sage] :2005/10/03(月) 23:03:19 ID:???
>>886
「ウェザーブレイク」は当初から映像特典扱いらしいです。

「ウェザーブレイク」=「device」=映像特典(おまけ映像)ってのが最終回答。


890 :名無しか・・・何もかも皆懐かしい [sage] :2005/10/03(月) 23:18:27 ID:???
明日ははれとげとげウニです


891 :名無しか・・・何もかも皆懐かしい [sage] :2005/10/03(月) 23:43:12 ID:???
>>890
惜しい。

てなわけでまとめてみた

ウェザーブレイクTV放映時の映像(×はDVDに収録されていない)
× layer:01 PSのジャケット絵の線画
○ layer:02 明日の天気はどうなるの?
○ layer:03 レッツ ウェザーブレイク(ハート)
× layer:04 夏だから、白熊さん・・・だめ?
○ layer:05 ザ 直訳 おてんき こわれてる?
○ layer:06 ザ 曲回! ウェザ〜〜〜 ブレイク 「あっ」
× layer:07 牛さん飛び出てゲイトウェイ? えへっ(^.^;
○ layer:08 雨と無知
× layer:09 明日はタレとげとげうにです。
○ layer:10 岩倉家 二回は何をする人ぞ→娘はともかくナビが心配
○ layer:11 波浪 (again)
× layer:12 きっとあたるさ大丈夫(ハート)
○ layer:13 Thanks "WiRED" Friends→end of lain

DVDに収録されている順番
(「次回お楽しみに」は各DISCの最初に一度だけで
 その後の絵のみが連続する形に編集されている)
lif.01 layer:02、未放映映像(田んぼと熊パジャマ玲音後ろ姿)
lif.02 layer:03 layer:05 layer:06
lif.03 layer:10 layer:08
lif.04 layer:11
lif.05 layer:13


900 :名無しか・・・何もかも皆懐かしい [sage] :2005/10/04(火) 19:14:24 ID:???
>>891
北米版

DVDに収録されている順番
(「次回お楽しみに」は各DISCの最初に一度だけで
 その後の絵のみが連続する形に編集されている)
Navi(vol1)   layer:02、未放映映像(田んぼと熊パジャマ玲音後ろ姿)
Knights(vol2) layer:05、layer:06
Deus(vol3)  layer:08、layer:10
Reset(vol4)  layer:11


903 :名無しか・・・何もかも皆懐かしい [sage] :2005/10/05(水) 00:03:53 ID:???
>>900
クス。更に減ってるのか・・・
国内版のlif.03ではlayer:10 layer:08の順なんだけど
北米版のDeus(vol3)はlayer:08、layer:10の順で良いの?


あと追加

TV放映時そのままの映像は「BOOTLEG」のCD-ROMに全種類収録されているが、
600x450とVGAより微妙に小さくシネパックで15FPSなので
画質はあまり良くない。

- 購入するか、見送るか

過去の名作を廉価で発売するという姿勢は好感が持てるし、大変うれしいことだが、もう一がんばりを期待する。というわけで、今回は購入を見送ることにする。

ただ、やっぱり欲しいことは欲しい。事実、この記事を書いていても購入しようかどうか迷っていたりするんだけど、どうしようかなあ。2005-08-28 の 「MCP 70-315 を受験して合格した」件で自分へのご褒美として予算を組んだけど、それももう全部使っちゃったし。20.1インチの液晶ディスプレイ Dell UltraSharp 2001FP HAS を購入して、あとはダイビングに行って終わり。次に受験する MCP 70-316 に合格した際の自分へのご褒美を前借りする? なんだかそれも変な話だな。

2005-09-21 (Wed)

* 実動する世界最古のコンピュータ FACOM128B を池田記念室で見学

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [メモ]

仕事で静岡に行ってきた。静岡で予定していた仕事もほぼ終わろうかというとき、関係者の計らいで富士通 沼津工場の「池田記念室」を見学することができた。池田記念室には、実動する世界最古のコンピュータと言われる 富士通 FACOM128B が展示されている。

- FACOM128B が実際に演算してるところを見学

案内してくださる方について行くと、普通のオフィスの中に、豪華な内装とショーケースがたくさん並んだ部屋が突然現れた。「池田記念室」だ。富士通の池田敏雄専務の業績の解説やゆかりの品を展示してある。記念室の一角には、なにやら灰色のオフィス用のロッカーのようなものが並んでいる。これがリレー式計算機 FACOM128B の筐体だ。日本大学で実際に使われていたものを引き取って展示しているそうだ。FACOM の名前の由来は、Fujitsu Automatic COMputer の略称からだと教えてもらった。

FACOM128B は 1958年 (1959年だったかも) に作られたものだが、なんと今でも実際に動かして計算させることができるとのこと。今日はこの FACOM128B を実際に動かして、以下の計算をする。

n の2乗
n 分の1 を小数で表現したもの
ルート n
sin-n
cos-n
tan-n

n は 1 から50の値を取る。計算結果はプリンタに出力される。

記念室のお姉さんが操作台に何かを入力すると、FACOM128B はものすごい音を立てて動き出した。電源が入っていき、ファンのようなものが回る音が鳴る。そして計算が始まる。バチバチとけたたましい音がする。リレーが動作している音だそうだ。リレーの一つが1ビットを表現する。で、これが実際に機械的に稼働して計算するという仕組みだそうだ。

リレーが格納されたロッカーのさらに奥には、メモリとなるクロスバーが収められているロッカーがある。リレーとクロスバーの違いはよくわからないが、こちらも機械的に動いて情報を記録する。正確な数は覚えていないが、確かクロスバーの数は5000個という説明があった。つまり、5000ビットしかメモリがないということ。e-mail 一通のヘッダにも満たない容量だ。なのに、この大きさと質量。まさにこれは機械だ。

プリンタも、タイプライターみたいな活字がたくさん用意されていて、それを紙に直接打ち付けるタイプ。出力された紙には以下のように書かれていた。ちなみに、この黄色の出力用紙はお土産にもらってきた。

1    +1.0000000 +00 +1.0000000 +00 +1.0000000 +00
      +1.7452406 -02 +9.9984769 -01 +1.7455065 -02
2    +4.0000000 +00 +5.0000000 -01 +1.4142136 +00
      +3.4899497 -02 +9.9939083 -01 +3.4920770 -02

(以下、27まで続く)

これだけだと見方がわからない。お姉さんが読み方を教えてくれた。

+1.0000000 +00 までが 1 の2乗の演算結果。後ろの +00 というのは、直前の数字の小数点を移動させる量を表している。+00 だったら小数点は移動せず、-01 だったら 小数点を左に一個ずらしたうえで直前の数字を読めば良い。

たとえば3行目の中央に +5.0000000 -01 という表記があるが、これは -01 が付いているので小数点を左に一個ずらすということだ。つまり、0.5 を意味している。2分の1 を小数で表した値だ。そのさらに右側には ルート2の演算結果がある。ルート2は「ひとよ ひとよに ひとみごろ」だが、出力は 1.4142136 +00 なので、四捨五入されているようだ。

で、出力用紙にはこれがずーっと続き、27 まであった。あのけたたましい演算を5分くらいやってたのに、到達したのは27まで。演算能力がボトルネックなのか、プリンタへの出力がボトルネックなのかはわからない。たぶん、どっちもぎりぎりまでチューニングされていて、ボトルネックというものが無いようになっているとは思う。FACOM128B の演算性能がどのくらいなのかはわからないが、今の電卓の方がよっぽどパワフルだろう。それでも、当時の FACOM128B は国産旅客機 YS-11 の尾翼設計や、光学レンズの設計などで活躍したそうだ。うーん、演算能力が凄まじく貴重な時代だったんだなあ。

FACOM128B のメンテナンスは今も続けられている。だからこそ何十年も経った現在でも実際に稼働する。お姉さんの話によると、メンテナンスをしている方はほとんどボランティアでやってくださっているそうだ。これだけ貴重な資料だし、なんとか実動する状態で保存したいという思いがあるのだろう。頭が下がる。

他にも池田記念室には「コアメモリー」をルーペで覗くことができる展示があったり、真空管があったり、パンチカードやその読み取り装置があったりと、見応えがあった。作った人たちの努力のと、それに敬意を払って維持していこうという人の思いに触れることができた。来て良かったと思う。

ちなみに、今回説明をしてくださった記念室のお姉さんは、本日は記念室への見学予定がなかったので普通の格好で勤務していたそうだ。しかし、私たちが訪問することになったので、急遽記念室用の制服に着替えて出迎えてくださったそうだ。わざわざありがとうございました。

- 富士通 沼津工場

私は沼津工場を訪れるのは今回が初めて。とにかく広く、緑が豊か。正門から入っても、建物があるところまで数百メートルはある。まるで大学のキャンパスのようだった。

案内してくださった方の話では、沼津工場では主にソフトウェアの開発をおこなっているとのこと。昔は汎用機を組み立てたりもしていたので、それを見学するコースもあったそうだ。現在はソフトウェアの開発が主になっているためか、工場内は静かでひっそりとした雰囲気だった。

今回は池田記念室の見学だけではなく、沼津工場の敷地内の一部を散策することもできた。沼津工場はとにかく自然が豊かなところで、記念樹らしき木々なども多数植えられていた。簡易的なゴルフコースまであった。また、静岡らしく茶畑があったのが面白かった。ここの茶畑で取れた富士通ブランドのお茶まであるそうな。

建物自体や内装は少々古さを感じさせるが、自然にあふれたいいところだった。

- 富士通 沼津工場 参考リンク

富士通コンピュータ事業の故郷、沼津工場見学記 〜リレー式コンピュータと農園が語る歴史
http://pc.watch.impress.co.jp/docs/2003/1110/gyokai76.htm
FACOM128B が演算している動画が見られる。画質と音質があまり良くないのが残念。

FUJITSUについて > 池田敏雄 > FUJITSU飛翔 - FUJITSU Japan
http://pr.fujitsu.com/jp/ikeda/hisyo1.html

2005-09-19 (Mon)

* 語尾変換プログラムは検索エンジンロボット避けを設定するべきだ

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ネットワーク]

語尾変換プログラムで変換されたページが検索エンジンにインデックスされてしまい、それを見たオリジナルのサイトの作者が困っている。私は、語尾変換プロキシのサービス提供者はロボット避けを実装すべきだと考える。

- 語尾変換プログラムの何が問題なのか

語尾変換プログラムを通した後の変換結果ページが Google などの検索エンジンにインデックスされ、多数の人の目に触れることが問題。

によないざーが不評です
http://circle.cc.hokudai.ac.jp/cgi/ryu/tdiary/index.rb?date= ...
 によないざーとは、昔作ったプログラムで、これを通すと語尾がにょ。になる似非変換プロキシーである。 はすみないざーなどにインスパイヤされて作成したものだ。

が、これによって変換された結果が、googleの検索結果に載るらしく、当該サイトの管理人さんから苦情のメールが来た。しかも僕個人宛ではなくサークルサーバー委員会あてである。

googleの検索結果にまで文句言われてもなあ。というのが正直なところなのだが。どういう対応が正解なのだろうか。

また、以下のようにページ自体の存在に困惑している人もいるようだ。

ツッコミ[6]
http://circle.cc.hokudai.ac.jp/cgi/ryu/tdiary/index.rb?date= ...
突然の書き込みお許し下さい。
先日、私のブログがそちらのプログラムで語尾を書き換えされたものがアップさせているのをみつけました。プログラムをみて誰かがやったものが残ってるのかと思いますが・・・どうやったら削除できますか。メールアドレスが公開されていなかったので・・・こちらで、すみません。

- 語尾変換プログラムとは

語尾変換プログラムは、文章の一部をを書き換える機能を持つ。

たとえば、「によないざー」という語尾変換プログラムを通すと、朝日新聞社の asahi.com も以下のように語尾に「にょ」が付く。
http://circle.cc.hokudai.ac.jp/cgi/ryu/rplace.rb?source=uri& ...

翻訳サイトなども同じような技術を使っている。以下は、Landscape を英語に翻訳したページ。こちらは当然ながら変換対象は語尾にとどまらない。
http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F ...

- 語尾変換プログラム作成者は何をすればいいのか

変換結果を見たオリジナルページの作成者から問い合わせを受け、それに一つ一つ対処するというやり方では、双方の手間がかかりすぎる。また、そういった対処を煩わしく感じる語尾変換プログラム作成者がサービスをやめてしまうというのも寂しい。オリジナルページの作成者、語尾変換プログラム作成者、変換プログラム利用者それぞれにメリットがあるようするのが理想。

まず、変換結果ページが検索エンジンに載らないようにすることが効果的だろう。そうすれば人目に触れることが少なくなり、変換ページが内輪で完結する確率が高くなる。変換プログラム作成者側としても、オリジナルページの作成者から苦情があったときに「検索エンジンには載らないように対処してます」と言えるし。

meta タグによるロボット避けでもいいし、robots.txt によるロボット避けでもいい。
ちなみに前述のエキサイトの翻訳サービスでは robots.txt によるロボット避けを設定している。

http://www.excite.co.jp/robots.txt
User-agent: *
Disallow: /relocate/
Disallow: /search.gw
Disallow: /world/english/web/body
Disallow: /world/chinese/web/body
Disallow: /world/korean/web/body

次に、GET メソッドを使わずに、POST メソッドを使うこと。POST するには基本的にフォームを使う必要があるので、一般のユーザーには「変換アプリケーション」という特別なシステムである、という印象を与えることができる。特別なものなので、ただ、これだと問題があって、変換結果のページからリンクをたどったときは GET になってしまうので、JavaSctipt などで一工夫する必要がある。

あとは、エキサイトの翻訳サービスのように上部にフレームを設けたりするなどして、迷い込んできたユーザに情報を提示するなどしてもいい。

- URL を与えるということ

個人的には、こういった変換プログラムは好きだ。「大阪弁変換プロキシ」とかで楽しんだ覚えがあるし。

2004-02-07 の 「クマー アスキーアート化 Bookmarklet」も語尾変換プログラムと同じような技術だが、変換後のページの URL が存在しないという点が大きく異なる。何かのリソースに URL を与えると、そのリソースは「アクセスされたがっている」状態になる。その「アクセスされたがっている」リソースのせいで問題が起きるなら、それを解決する仕組みを考えなければならない。

時間がないので、今日はここまで。当記事にはあとで追記するかもしれない。

2005-09-18 (Sun)

* .htaccess などを使えないレンタルホームページスペースでのサイト移転告知

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [sonic64.com]

2005-09-12 の移転告知について指摘をいただいた。

[2758]http://sonic64.hp.infoseek.co.jp/2005-09-12.html#2005-09-12- ...
http://tokuhirom.dnsalias.org/~tokuhirom/inamode4/2758.html
http://sonic64.hp.infoseek.co.jp/2005-09-12.html#2005-09-12-1

  移転元サイトのサーバ設定権限がないため、HTTP Status 301 Moved Permanently を使用したリダイレクトができません。

http://isweb.www.infoseek.co.jp/Icont?pg=iw_spec.html
をみるとinfoseekってCGI使えるんだから自力でnph-cgiでヘッダーを出力すればいいんじゃないの?
でもHandlerが変えられないと難しいか。

nph-cgi ってなんだっけ? あ、HTTP ステータスも含めて生成するタイプの CGI のことか。 HTTP ステータスコードを操作したいときは CGI 中で Status: 304 を出力するなどしてたので、nph って使ったことない。そこまでパフォーマンスを追求したチューニングをする機会がなかったから。

でも、nph-cgi を使ったとしても、指摘の通りハンドラの問題がある。結局、infoseek では CGI は cgi-bin 以外では動かないし、拡張子も .cgi じゃないとダメ。そして、.htaccess が一切使えないからハンドラも変えられない。八方ふさがりだよなあ。

とにかくやってみるか。
infoseek でも nph で始まるファイル名にすれば、確かに nph-cgi として動かすことは可能。しかし、cgi-bin ディレクトリに配置しなければならない。それ以外のディレクトリにスクリプトを置いても 403 Forbidden になる。というわけで、301 Moved Permanently を出力することはできなかった。残念だ。

- 無料レンタルホームページスペースと移転告知

結局、無料なんだから出来ることが少ないのは仕方ない。無料ホームページスペースなどは使わずに、最初から独自ドメインを取っていれば良かったんだけど、そこまでする気はなかったんだよなあ。趣味というかあくまでもメモなんだから、そんなことしなくても無料ホームページスペースで十分だと思ってた。

今は無料レンタル Blog がたくさんあるけど、いざ移転というときに、私と同じような状態になってる人は結構いるんだろうなあ。そういうとき、みんなどうしてるんだろう? 結局、無料レンタルホームページスペースなどでできることは以下くらいだろうか。

旧サイトのできるだけ多くのページに、新サイトへの移転告知を掲載する。
移転に気づいてもらうことが大切。そうしないといつまで経っても新サイトに人が来ない。移転に気づかずに旧サイトばかり見ている人には「更新停止?」などと誤解されるかも。

Meta 要素の Refresh を使って自動的に新サイトに飛ばす。
<meta http-equiv="refresh" content="5; url=http://sonic64.com/">
よくある、「5秒後に自動で新サイトにジャンプします」ってやつ。
どの記事ページにアクセスされても画一的に新サイトのトップページに飛ばすだけなら簡単。しかし、記事を追跡しつつ新サイトに飛ばそうとするとちょっと大変。たとえば http://sonic64.hp.infoseek.co.jp/2005-09-12.html にアクセスされたら http://sonic64.com/2005-09-12.html に飛ばす、というのは、一つ一つ meta 要素を埋め込まなければならない。 Blog ツールや CMS (Content Management System) を使ってるサイトなら楽勝だが、そういう仕組みがない場合は手間がかかる。

JavaScript で飛ばす。
ツールや CMS が無く、meta 要素を埋め込むのが大変な場合は場合はこっちの方が簡単。
たとえば、sonic64.hp.infoseek.co.jp/YYYY-MM-DD.html を sonic64.com/YYYY-MM-DD.html に置換して location オブジェクトに代入するというスクリプトを書けばいい。

旧サイトへのサーチエンジンのロボット巡回を抑制する。
検索でヒットするのが旧サイトばっかりだと、新サイトに人が来ない。robots.txt や meta 要素でロボットの巡回とインデックスを抑制する。

あとは、旧 URL のままになってしまっている部分を極力減らしていくことが大切。
メールの署名とか、vCard、プログラムの著作権表示とか、名刺、IME の辞書に登録している URL などを全部新しい URL に変えること。一気にやろうとすると大変なので、気づいたところから少しずつやっていこう。あ、2004-10-21 の「mixi 用自画像を作成」作った画像に埋め込まれてる URL も変えなきゃ。

2005-09-16 (Fri)

* 任天堂の次世代機 Revolution のコントローラがお披露目

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム]

任天堂の次世代機 Revolution のコントローラが発表された。なにこれ。iPod Shuffle みたい。

ITmedia +D Games:任天堂「Revolution(仮)」隠されていたコントローラ明らかに
http://plusd.itmedia.co.jp/games/articles/0509/16/news038.ht ...

うーん、新しさは感じるけど F-ZERO みたいなレースゲームとか、スターフォックスみたいなシューティングには向かなそう。そういうゲームって、コントローラをぐっと握って操作する必要があるし。Revolution で出るゲームは、このコントローラに適したゲームが多いってこと? ゲームの品揃え的にも Revolution になるのか。

ポインティングデバイスの機能も付いているのね。要するに光線銃ってわけか。
フリースタイルコントローラを懐中電灯に見立て、暗闇を探検したり、
あ、なるほどー。布に見立てて窓ふきしたりとか、いろいろありそう。懐中電灯か。ルイージマンションの続編が出そうな予感。

昔アスキーから L5 (エルゴ) とかいう名前で片手で操作できるコントローラはあった。エルゴノミックデザイン (人間工学デザイン) なので、L5 っていう名前。RPG でメモをとりながらプレイしたり、寝転がってプレイできるのが便利というのが売り。でも、そんなコントローラが今になって出てくるとは思わなかったなあ。Revolution のコントローラーの売りは「片手で」ってことじゃないんだろうけど。

任天堂のコントローラは出来が良い。必ずそのコントローラを活かした要素が入っているのがすごい。スーパーファミコンの時は色分けした A B X Y ボタンが印象的だったけど、同時発売のマリオではちゃんとボタンの色に対応したオブジェクトがゲーム中に登場してた。F-ZERO では左右の荷重移動に使ってた。ニンテンドウ64の時は 3D スティックが付き、マリオ64でクッパ大王のしっぽをつかんでグルグル回すのに使った。あれは楽しかったなあ。Revolution のコントローラを活かしたゲームを早くやってみたいな。

2005-09-15 (Thu)

* mod_rewrite でリクエストに応じて gzip 圧縮ファイルを返す

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Apache] [http]

2005-09-14 の「Content Negotiation でリクエストに応じて gzip 圧縮ファイルを返す」の続き。

cl.xml にリクエストがあったとき、Accept-Encoding に gzip があり、かつ cl.xml.gz がサーバに存在していたら Content-Encoding: gzip で cl.xml.gz の中身を返すようにしたい

cl.xml にリクエストされたときは Content Negotiation が働かず、拡張子が一切ない cl にアクセスされたときは Content Negotiation が働くという挙動だった。これでは使いにくいので、mod_rewrite を使って圧縮ファイルを返すようにする。

- mod_rewrite を利用した Content Negotioation の代替の .htaccess サンプル

以下の RewriteRule を書いた。とりあえず希望の動作は実現できた。

RewriteEngine on
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME} !\.gz$
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule .+ %{REQUEST_URI}.gz

RewriteRule の各行の説明。

%{HTTP:Accept-Encoding} gzip は、クライアントの HTTP リクエストヘッダ中に Accept-Encoding が存在し、かつ文字列 gzip が含まれているかどうかをチェックしている。単なる正規表現によるチェックなので sonic64gzip などという文字列でもマッチしちゃうけど、まあいいでしょ。ちなみに、Accpet-Encodind: sonic4gzip で実際にリクエストして RewriteLog を見たら matched になってた。

(4) RewriteCond: input='sonic64gzip' pattern='gzip' => matched

RewriteCond %{REQUEST_FILENAME} !\.gz$ は、最初から .gz ファイルをアクセスされた場合は Rewrite しないための判定。これをやらないと、file.html.gz にアクセスがあった場合に file.html.gz.gz を探しに行ってしまう。もっとも、次の RewriteCond %{REQUEST_FILENAME}\.gz -s での gz ファイル存在チェックで弾かれるから、やらなくてもとりあえずは動く。あ、でもこれだと png や .jpg もチェック対象になるよなあ。やっぱり .html や .xml だけを対象として明示した方がいいかなあ。

RewriteCond %{REQUEST_FILENAME}\.gz -s は、.gz ファイルが存在するかどうかをチェックしている。.gz ファイルが存在しない場合は Rewrite せずにもとのリクエストのファイルを返す。

- HTTP トランザクションの中身

ブラウザでリクエストした結果。

http://sonic64.com/cl.xml

GET /cl.xml HTTP/1.1
Host: sonic64.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
Accept: text/xml,application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8, image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

HTTP/1.x 200 OK
Date: Wed, 14 Sep 2005 22:51:21 GMT
Server: Apache/1.3.33 (Unix)
Last-Modified: Tue, 13 Sep 2005 23:08:14 GMT
Etag: "3391fb-2ecc-43275bde"
Accept-Ranges: bytes
Content-Length: 11980
Keep-Alive: timeout=3, max=8
Connection: Keep-Alive
Content-Type: application/xml
Content-Encoding: gzip

RewriteLog の出力内容。
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#80941ac/initial] (3) [per-dir /home/hiroaki/public_html/test/] strip per-dir prefix: /home/hiroaki/public_html/test/cl.xml -> cl.xml
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#80941ac/initial] (3) [per-dir /home/hiroaki/public_html/test/] applying pattern '.+' to uri 'cl.xml'
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#80941ac/initial] (4) RewriteCond: input='gzip' pattern='gzip' => matched
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#80941ac/initial] (4) RewriteCond: input='/home/hiroaki/public_html/test/cl.xml' pattern='!\.gz$' => matched
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#80941ac/initial] (4) RewriteCond: input='/home/hiroaki/public_html/test/cl.xml.gz' pattern='-s' => matched
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#80941ac/initial] (2) [per-dir /home/hiroaki/public_html/test/] rewrite cl.xml -> /~hiroaki/test/cl.xml.gz
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#80941ac/initial] (1) [per-dir /home/hiroaki/public_html/test/] internal redirect with /~hiroaki/test/cl.xml.gz [INTERNAL REDIRECT]
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#8095f1c/initial/redir#1] (3) [per-dir /home/hiroaki/public_html/test/] strip per-dir prefix: /home/hiroaki/public_html/test/cl.xml.gz -> cl.xml.gz
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#8095f1c/initial/redir#1] (3) [per-dir /home/hiroaki/public_html/test/] applying pattern '.+' to uri 'cl.xml.gz'
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#8095f1c/initial/redir#1] (4) RewriteCond: input='gzip' pattern='gzip' => matched
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#8095f1c/initial/redir#1] (4) RewriteCond: input='/home/hiroaki/public_html/test/cl.xml.gz' pattern='!\.gz$' => not-matched
10.9.7.2 - - [14/Sep/2005:23:35:52 +0900] [192.168.0.38/sid#804b97c][rid#8095f1c/initial/redir#1] (1) [per-dir /home/hiroaki/public_html/test/] pass through /home/hiroaki/public_html/test/cl.xml.gz

- Vary ヘッダを出力した方がより明示的

HTTP レスポンスヘッダに Vary: Accept-Encoding を追加するとより理想的な動きになる。Vary ヘッダは 2004-02-06 「http の Vary レスポンスヘッダの意味と使用例」で書いた。

mod_rewrite で任意の HTTP レスポンスヘッダを生成させることってできるのかな? 環境変数の値を設定することはできるけど、直接ヘッダに追加する方法は見つけられなかった。あ、HEADER ディレクティブを使えばいいのか。以下のような感じかな?

Header append Vary Accept-Encoding

ただ、これだといつも Vary を送ってしまうので、レスポンスに Content-Encoding: gzip があるときだけ Vary を返すようにしたいけど、環境変数の値に応じて条件分岐できるのは Apache 2.0 系だけ? ドキュメントを読んでみる。

mod_headers - Apache HTTP サーバ Header ディレクティブ
http://httpd.apache.org/docs/2.1/mod/mod_headers.html#header
構文: Header [condition] set|append|add|unset|echo header [value] [early|env=[!]variable]

Apache module mod_headers
http://httpd.apache.org/docs/1.3/mod/mod_headers.html
Syntax: Header set|append|add header value

1.3 系のドキュメントには env= という構文が使えるとは書いてないもんなあ。どちらにせよ、mod_header のモジュールがステータス: Extension じゃあ使えない可能性が高い。

そもそも Vary ヘッダの付加って 必須? 推奨? HTTP1.1 を規定している RFC 2616 ではどうなってる?
ハイパーテキスト転送プロトコル -- HTTP/1.1
http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec14.44
HTTP/1.1 サーバは、サーバ駆動型ネゴシエーションを受けるあらゆるキャッシュ可能なレスポンスに Vary ヘッダフィールド値を含むべきである。そうする事で、キャッシュはそのリソースへの将来のリクエストを適切に解釈する事ができ、ユーザエージェントにそのリソースへのネゴシエーションの存在について知らせる事ができる。サーバは、サーバ駆動型ネゴシエーションを受けるキャッシュ不可能なレスポンスにも、ユーザエージェントにそのレスポンス時には変化してしまうレスポンスのについての有益な情報を提供するであろうから、Vary ヘッダフィールド値を含む事ができる。

「含まなければならない」ではなく、「含むべきである」なので必須ではないということか。じゃあ、とりあえずは Vary なしでいいか。

追記。
Internet Explorer がクライアントとき、HTTP レスポンスで Vary ヘッダを返してしまうと、IE は HTTP リクエストヘッダ If-Modified-Since を送信してこないという問題があるようだ。その結果、あらゆるレスポンスを 200 OK で返さざるを得なくなり、304 Not Modified によるレスポンスを返せなくなる。Vary を送らなければこの問題は回避できるようなので、Content-Encoding しか返さない方が総合的に見れば問題が少ないかも。

2005-09-14 (Wed)

* Content Negotiation でリクエストに応じて gzip 圧縮ファイルを返す

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Apache] [http]

HTTP の Content Negotiation 機能を使うと、ユーザの環境に応じて適切なファイルを返すことができる。

これを利用すると、以下を実現できる。
HTTP リクエストヘッダ Accept-Encoding: gzip を送ってきているクライアントにはあらかじめ gzip で圧縮しておいたファイルを返し、Accept-Encoding: gzip を送ってきていないクライアントには gzip 圧縮していない生のファイルを返す。

- Content Negotiation を利用して圧縮ファイルを返す手法と mod_gzip/mod_deflate の違い

クライアントが送ってくるリクエストヘッダに応じて、圧縮したデータまたは生のデータを返す。一見 mod_gzip や mod_deflate がやっていることと同じように見えるが、違う。最大の違いは動的にファイルを圧縮するのではなく、最初から圧縮済みのファイルを置いておくことにある。

動的に生成するページを圧縮したいなら、mod_gzip や mod_deflate のフィルタを使うのがよいだろう。しかし、静的ページならば、あらかじめ圧縮したファイルを返す方式でも良い。毎回圧縮をしないので、CPU 資源を節約することにもつながる。

また、mod_gzip や mod_deflate が使えないサーバでも圧縮を利用できるというメリットがある。現在 sonic64.com はさくらインターネットのホスティングサービスを利用している。残念なことに私の利用しているコースでは mod_gzip が使えない。Content Negotiation 以外の方法でコンテンツを圧縮して返そうと思ったら、すべてを CGI にしてコード中で圧縮するか、proxy を挟むくらいしか方法がない。

- Apache で Content Negotiation

Apache だと MultiViews を使う。

コンテントネゴシエーション - Apache HTTP サーバ
http://httpd.apache.org/docs/2.1/content-negotiation.html
Multiviews

MultiViews はディレクトリ毎のオプションで、 httpd.confファイルの <Directory>, <Location>, <Files> セクション中や、(AllowOverride が適切な値に 設定されていると) .htaccess ファイルで Options ディレクティブによって設定することができます。 Options All は MultiViews をセットしないことに注意してください。明示的に その名前を書く必要があります。

MultiViews が有効になると、クライアントのリクエストに応じてサーバが最適なファイルを選択して返すようになる。
私の使っているサーバは httpd.conf で MuitiViews が有効になっているようなので試してみる。

まず、生のファイルと、圧縮して拡張子 .gz を付加したファイルを用意する。

[21:27:32][hiroaki@sonic64 ~/public_html/test]$ ls -l
-rw----r--  1 hiroaki  users  39751 Sep 13 21:18 cl.xml
-rw----r--  1 hiroaki  users  9785 Sep 13 21:18 cl.xml.gz

ブラウザからリクエスト。

http://sonic64.com/test/cl.xml

GET /test/cl.xml HTTP/1.1
Host: sonic64.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
Accept: text/xml, application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8, image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

HTTP/1.x 200 OK
Date: Tue, 13 Sep 2005 12:29:40 GMT
Server: Apache/1.3.33 (Unix)
Last-Modified: Tue, 13 Sep 2005 12:18:00 GMT
Etag: "3449c4-9b47-4326c378"
Accept-Ranges: bytes
Content-Length: 39751
Keep-Alive: timeout=3, max=8
Connection: Keep-Alive
Content-Type: application/xml

あれ? うまく Content-Negotiation されてないな。なんで? リクエストするファイル名を変えてみるか。cl.xml じゃなくて、cl をリクエストしてみよう。

http://sonic64.com/test/cl

GET /test/cl HTTP/1.1
Host: sonic64.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
Accept: text/xml, application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8, image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

HTTP/1.x 200 OK
Date: Tue, 13 Sep 2005 12:35:24 GMT
Server: Apache/1.3.33 (Unix)
Content-Location: cl.xml.gz
Vary: negotiate,accept-encoding
TCN: choice
Last-Modified: Tue, 13 Sep 2005 12:18:02 GMT
Etag: "3449c8-2639-4326c37a;4326c74b"
Accept-Ranges: bytes
Content-Length: 9785
Keep-Alive: timeout=3, max=8
Connection: Keep-Alive
Content-Type: application/xml
Content-Encoding: gzip

今度はうまくいった。Content-Location: cl.xml.gz と Vary: negotiate,accept-encoding が返されている。cl でリクエストすると Content-Negotiation が働き、cl.xml でリクエストしたときは Content-Negotiation がなされない。なんでだろう?

コンテントネゴシエーション - Apache HTTP サーバ
http://httpd.apache.org/docs/2.1/ja/content-negotiation.html
リンクに MIME タイプを使い続けたい (例えば foo.html)時は、言語拡張子は (エンコーディング拡張子もあればそれも含めて) MIME タイプ拡張子の右側になければなりません (例えば foo.html.en)。

上記ページの説明を見る限り、foo.MIME-TYPE.ENCODING のファイルは foo.MIME-TYPE でアクセスできるはずなんだけどなあ。 とりあえずなんで cl でないとダメなのかは後で調べてみよう。

- mod_mime が 拡張子 gz のファイルを Content-Encoding: gzip にしている

うまく Content-Negotiation がなされて gz ファイルが返されたとき、Content-Encoding: gzip も同時にサーバから返されていて、いわゆる「透過的な圧縮」になっている。mod_gzip や mod_deflate を使ったときと同じような、HTTP 転送データそのものを圧縮している状態だ。

これはとくに Content-Negtiation とは関係ない。以下のように、cl.xml.gz を直接リクエストしたときも Content-Encoding: gzip がサーバから返されている。

http://sonic64.com/test/cl.xml.gz

GET /test/cl.xml.gz HTTP/1.1
Host: sonic64.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
Accept: text/xml, application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8, image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK
Date: Tue, 13 Sep 2005 12:42:35 GMT
Server: Apache/1.3.33 (Unix)
Last-Modified: Tue, 13 Sep 2005 12:18:02 GMT
Etag: "3449c8-2639-4326c37a"
Accept-Ranges: bytes
Content-Length: 9785
Keep-Alive: timeout=3, max=8
Connection: Keep-Alive
Content-Type: application/xml
Content-Encoding: gzip

Content-Encoding: gzip を返しているのは mod_mime だ。Apache のデフォルトでこの機能が働くように httpd.conf が記述されている。httpd.conf の以下の部分が該当箇所。もし設定されていなければ、.htaccess で設定する。

<IfModule mod_mime.c>

    #
    # AddEncoding allows you to have certain browsers (Mosaic/X 2.1+) uncompress
    # information on the fly. Note: Not all browsers support this.
    # Despite the name similarity, the following Add* directives have nothing
    # to do with the FancyIndexing customization directives above.
    #
    AddEncoding x-compress Z
    AddEncoding x-gzip gz tgz

ん? 今気づいたけど、拡張子 tgz も AddEncodding してるの? それだと tgz という拡張子を付けたファイルの場合、クライアント側で gzip を展開してしまうので gzip されたファイルを保存したいとユーザが考えたときなどに問題になるんじゃないのかな? Google で AddEncoding x-gzip gz tgz を検索するとヒット。

Re: .tar.gz -> .tgz
http://search.fml.org/mlarchives/fml-help/200107/msg397.html
gz が展開されてしまう、という問題ですよね?

あ、やっぱり。.tar.gz という拡張子なら Content-Encoding が付かないので問題ないが、.tgz にすると Content-Encoding が付いてしまうので展開さてしまうと。まあ tgz なんて拡張子を使わないようにするか、AddEncoding から tgz を消せば良いだけだから実害は少ないかな。

- cl.xml へのリクエストを cl.xml.gz にネゴシエーションしたい

うーん、なんだか今日はやりたいことができなかったなあ。

cl.xml にリクエストがあったとき、Accept-Encoding に gzip があり、かつ cl.xml.gz がサーバに存在していたら Content-Encoding: gzip で cl.xml.gz の中身を返すようにしたいだけなんだけどなあ。cl.xml を CGI にでもすれば簡単にできるけど、それじゃあサーバに余計な負荷をかけてしまう。しょうがない、mod_rewrite を使うか。明日やってみよう。

2005-09-13 (Tue)

* C# での変数名などの大文字小文字の使用スタイル

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net] [C#]

今回参加しているプロジェクトで、私が従うべき表記スタイルのメモ。言語は C# がメイン。コーディング標準の一部。HTML Table から引用したので見づらいかも。

ローカル変数名も camel なのか。アンダースコア _ でつなげる方に慣れてたのでちょっと違和感があるが、すぐに慣れるだろう。こういうのはプロジェクト内で統一していることが重要。

大文字小文字の使用スタイル

識別対象 形式 例

名前空間 Pascal System.Drawing
クラス Pascal AppDomain
インターフェイス Pascal IDisposable
列挙型 Pascal ErrorLevel
列挙値 Pascal FatalError
メソッド Pascal ToString
イベント Pascal ValueChange
プロパティ Pascal BackColor
読み取り専用の静的フィールド Pascal RedValue
フィールド変数 _Camel  _redValue
パラメータ(引数) Camel  typeName
局所変数 Camel  redValue
例外クラス Pascal WebException
定数 大文字形式 MAX_VALUE

例外    VS.NET の IDEが自動作成する識別子(メソッド等)については、この規約に従う必要はありません。

識別子における大文字の使用方法として、次の 3 つの形式があります。

Pascal 形式
識別子の最初の文字と、後に続いて連結されている各単語の最初の文字を大文字にします。Pascal 形式は、通常3 文字以上から構成される識別子に対して使用します。次に例を示します。

  BackColor

Camel 形式
識別子の最初の文字は小文字にし、後に続いて連結されている各単語の最初の文字を大文字にします。次に例を示します。

  backColor

大文字形式
識別子のすべての文字を大文字にします。次に例を示します。

  System.IO
  System.Web.UI

大文字形式って、System や Web が大文字になっていないけど、いいのかな? 例が適切じゃないだけか。READ_BUF_SIZE みたいなのが例として適切なのでは?

2005-09-12 (Mon)

* Landscape - エンジニアのメモは sonic64.com に移転しました

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [sonic64.com]

Landscape - エンジニアのメモは、http://sonic64.com/ に移転しました。

- Landscape - エンジニアのメモ 新 URL

Landscape - エンジニアのメモ
http://sonic64.com/

RSS の URL は以下の通りです。後述の「各種 RSS リーダー・アンテナ向け登録リンク」もご利用ください。

直近7日分の記事全文の RSS
http://sonic64.com/cl.xml

過去の全記事全文の RSS
http://sonic64.com/cl-full.xml

- 過去の記事について

過去の記事は http://sonic64.com/ に移転しました。すべて新 URL で閲覧できます。

- 旧 URL sonic64.hp.infoseek.co.jp について

Landsacpe - エンジニアのメモの旧 URL である sonic64.hp.infoseek.co.jp は、可能な限り過去記事の掲載を続け、リンク切れを防ぎます。

また、しばらくの間は http://sonic64.com/ の新規記事も http://sonic64.hp.infoseek.co.jp/ に掲載します。ただし、新規記事は http://sonic64.com/ に先に掲載し、数日以内に http://sonic64.hp.infoseek.co.jp/ にもミラーするという形で運用します。

- 各種 RSS リーダー・アンテナ向け登録リンク

移転元サイトのサーバ設定権限がないため、HTTP Status 301 Moved Permanently を使用したリダイレクトができません。お手数ですが、直接 RSS リーダーやアンテナに設定している URL を新 URL である http://sonic64.com/ に変更してください。

直近7日分の記事全文の RSS
http://sonic64.com/cl.xml

過去の全記事全文の RSS
http://sonic64.com/cl-full.xml

Bloglines で sonic64.com の RSS を購読
http://www.bloglines.com/sub/http://sonic64.com/cl.xml
http://www.bloglines.com/sub/http://sonic64.com/cl-full.xml

FEEDBRINGER で sonic64.com の RSS を購読
http://feedbringer.net/feed/add?url=http://sonic64.com/cl.xm ...
http://feedbringer.net/feed/add?url=http://sonic64.com/cl-fu ...

はてな RSS で sonic64.com の RSS を購読
http://r.hatena.ne.jp/append/http://sonic64.com/cl.xml
http://r.hatena.ne.jp/append/http://sonic64.com/cl-full.xml

Google Reader で sonic64.com の RSS を購読
http://www.google.com/reader/preview/http%3A%2F%2Fsonic64.co ...
http://www.google.com/reader/preview/http%3A%2F%2Fsonic64.co ...

FeedDemon、SharpReader などで sonic64.com の RSS を購読
http://127.0.0.1:5335/system/pages/subscriptions?url=http%3A ...
http://127.0.0.1:5335/system/pages/subscriptions?url=http%3A ...

i-know.jp に追加
http://i-know.jp/add.cgi?url=http://sonic64.com/

はてなアンテナに追加
http://a.hatena.ne.jp/append?http://sonic64.com/

2005-09-07 (Wed)

* ChangeLog メモに適切な改行を与える Perl One Liner

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl] [ChangeLog メモ]

過去の ChangeLog メモを読み返していたら、ChangeLog のフォーマットに則っていないメモがたくさん見つかった。日付とアイテムの間に改行が入っていないというもの。

以前の私が書いていた、改行が足りず正しくない ChangeLog。
2003-06-16  Saito Hiroaki  <hiroaki@example.jp>
    * MS SQL Server: 文字列中のシングルクオートのエスケープ
    SQL Server で使う Transact-SQL における文字列のエスケープ。

正しい ChangeLog。
2003-06-16  Saito Hiroaki  <hiroaki@example.jp>

    * MS SQL Server: 文字列中のシングルクオートのエスケープ
    SQL Server で使う Transact-SQL における文字列のエスケープ。

2003年頃の私は Emacs 系のエディタを使わずに ChangeLog メモを書いていたため、書式の統一が取れていなかった。このまま放置するのは精神衛生上良くないので修正しておく。

- Perl One Liner で一括置換

こういうのは正規表現で一括置換するのが手軽で良い。使い捨てのワンライナー (1行スクリプト) を書いた。

$ perl -i.bak -0777 -pe 's/^(\d\d\d\d-\d\d-\d\d\s+Saito Hiroaki\s+<.+?>\n)\t/$1\n\t/mg' log.txt

-i.bak は元のファイルは ファイル名の末尾に .bak を付けてバックアップするというオプション。
-0777 はファイルを一気に読み込んで Perl ワンライナーに渡すというオプション。
-p は実行結果を出力するオプション。
-e は オプションの引数に与えた Perl スクリプトを実行するオプション。

念のためバックアップと置換後のファイルの diff を取ってざっと確認。うん、問題なさそう。

2005-09-06 (Tue)

* xyzzy で選択範囲 (セレクション) を Google 検索

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [xyzzy]

テキストエディタ xyzzy で、選択範囲を Google で検索するようにしたい。

いままでは以下のようにして検索していた。

1. xyzzy で検索したい文字列を選択
2. クリップボードにコピー
3. タブブラウザ Sleipnir の検索ボックスに貼り付け
4. Sleipnir の検索ボタンを押す

4 ステップもあって手間がかかりすぎる。私はもう限界だと思った。xyzzy をカスタマイズして楽に検索できるようにしよう。

- xyzzy で選択範囲を Google 検索する

選択範囲を Google で検索したい。要するに文字列を URL エンコードしてブラウザに渡してやればいい。ちなみに、xyzzy では選択範囲をセレクションと呼ぶ。

リファレンスを見ながら自分で書こうかと思ったが、これは誰もが欲しいと思う機能なのできっと先達が作ってるはず。探してみたらあった。

xyzzy の音 - Google 検索
http://hie.s64.xrea.com/xyzzy/note/search.html#search-google
; Google 検索
(defun search-google (&optional str)
  (interactive)
  (unless str
    (setq str (read-string "Google: ")))
  (long-operation
    (let ((url (concat "http://www.google.co.jp/search?hl=ja&lr=lang_ja&num=50&ie=shift_jis&oe=euc-jp&q="
                      (si:www-url-encode str))))
      ;─────────────────────
      ; 1. 標準ブラウザを使う場合
      (shell-execute url t)
      ; 2. browser.dll & browserex.l を使う場合
      ;(bx::navigate url)
      ; 3. www-mode を使う場合
      ;(www-open-url url)
      ; 4. 指定したブラウザを使う場合
      ;(call-process (concat "C:/usr/local/MozillaFirebird/MozillaFirebird.exe " url))
      ;─────────────────────
      )))

; セレクションの文字列を Google 検索
(defun search-google-selection ()
  (interactive)
  (search-google (if (pre-selection-p)
                    (selection-start-end (beg end)
                      (buffer-substring beg end))
                  nil)))
(global-set-key '(#\C-c #\g) 'search-google-selection)

Google に渡すクエリを一部変更。num=50&ie=shift_jis&oe=euc-jp にした。ie=shift_jis を指定しないと文字化けする。

上記を .xyzzy ファイルに追加。そういえば最近は siteinit.l ではなく .xyzzy に追加することが多いな。バイトコンパイルする手間がかかるからな。

文字列を選択して、CTRL + C g を押すと、無事 Sleipnir のタブに Google 検索結果が表示された。やったー。

- xyzzy の右クリックメニューに「Google で検索」を追加

右クリックメニューにも「Google で検索」を追加したい。

カスタマイズ (xyzzy しょぼしょぼすくりぷと)
http://www.afis.to/~start/xyzzy/customize/

上記ページは「マウス右クリックに引用付き貼り付けを設定する」というサンプルを載せている。これを修正すればいい。できた。

; 右クリックメニューに「セレクションの文字列を Google 検索」を追加
(add-hook '*post-startup-hook*
        #'(lambda()
            (add-menu-item *app-popup-menu* nil "選択範囲をGoogle検索 (&G)"
                 'search-google-selection nil)))

じつに快適だ。なんで今までやらなかったんだろうと思うくらい。本当は中ボタンというかホイールクリックで Google 検索したいところだが、今日はもう時間がない。そのうちやろう。

2005-09-01 (Thu)

* shutdown.exe とタスクで Windows を自動シャットダウン

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

とある理由で、常時稼働の Windows サーバを朝の 07:30 にシャットダウンすることになった。自動でやりたいので方法を探したところ、shutdown.exe というコマンドが標準で Windows にもあることがわかった。これを使えばいい。

- shutdown.exe でシャットダウン

WindowsXP や Windows2003 Server なら標準で shutdown.exe というツールがあるので、これをコントロールパネルのタスクや at から実行するだけ。ACPI に対応したマシンなら、ちゃんと電源まで切れる。

shutdown.exe は -s オプションを付けないと実行してもヘルプを表示するだけなので、忘れずに付ける。これは Linux の shutdown コマンドと同じ挙動だ。ただ、オプションが Linux と微妙に異なる。Windows の shutdown コマンドでマシンをシャットダウンしたいときのオプションは -s だ。shutdown の略なんだろうね。Linux は -h で、halt の略。

以下、WindowsXP 付属の shutdown.exe のヘルプ。

shutdow.exe
使用法: c:\WINDOWS\system32\shutdown.exe [-i | -l | -s | -r | -a] [-f] [-m \\コンピュータ名] [-t xx] [-c "コメント"] [-d up:xx:yy]

    引数なし        このメッセージを表示します (-? と同じです)
    -i            GUI インターフェイスを表示します。このオプ
                ションは最初に指定する必要があります
    -l            ログオフ (-m オプションとは併用できません)
    -s            コンピュータをシャットダウンします
    -r            コンピュータをシャットダウンして再起動します
    -a            システム シャットダウンを中止します
    -m \\コンピュータ名    シャットダウン/再起動/中止するリモート コン
                ピュータの名前です
    -t xx            シャットダウンのタイムアウトを xx 秒に設定
                します
    -c "コメント"        シャットダウンのコメントです (127 文字まで)
    -f            実行中のアプリケーションを警告なしに閉じます
    -d [u][p]:xx:yy        シャットダウンの理由コードです
                u = ユーザー コード
                p = 計画されたシャットダウンのコード
                xx = 重大な理由コード (255 以下の正の整数)
                yy = 重大ではない理由コード (65535 以下の正の
                整数)

コメントや理由コードの指定もできるのか。なかなか高機能。

- Windows2000 で shutdown.exe を使う

Windows2000 には shutdown.exe がない。ただ、私が試した限り、WindowsXP の shutdown.exe を持ち込んで実行したところ、問題なくシャットダウンすることができた。後述する「タスク」との組み合わせも問題なし。試した環境は Windows2000 Server SP4 だ。

ライセンスとかに問題がなければ、使ってみるのも一興。ちなみに、shutdown.exe は WindowsNT の時代からリソースキットに収録されているらしいので、実運用で使うならリソースキットのバイナリを使うのが良いだろう。

- タスクスケジューラと shutdown.exe で日時を指定した自動シャットダウン (無事に成功)

コントロールパネルの「タスク」に shutdown.exe をスケジュールする方法。

タスクを新規追加。
「スケジュールされたタスクの追加」ではなく、右クリックから「新規」の「タスク」を選んだ。shutdown コマンドに -s オプションを渡すように記述するためには、結局タスクのプロパティを開く必要があるからだ。

「実行するファイル」のテキストボックスに shutdown.exe のパスと -s オプションを記述。
私の環境では c:\WINDOWS\system32\shutdown.exe -s と記述した。その後

Administrator のパスワードを入力して設定完了。これだけ。

追記。
タスクと shutdown.exe の組み合わせで無事シャットダウンできた。事前のテストで大丈夫だったから心配はしていなかったが。Windows2003 Server のイベントログには以下のイベントが記録されていた。Windows 2000 のサーバには「イベントログサービスが停止した」という情報くらいしか記録されていなかったんだけど、そういうものだったっけ?

イベントの種類:    情報
イベント ソース:    Application Popup
イベント カテゴリ:    なし
イベント ID:    26
日付:        2005/09/04
時刻:        7:30:02
ユーザー:        N/A
コンピュータ:    BJORK
説明:
アプリケーション ポップアップ: 休む : システムはシャットダウンされます。進行中の作業をすべて保存し、ログオフしてください。保存されていない情報は失われます。シャットダウンは、BJORK\Administrator によって開始されました。シャットダウンは 30 秒後に開始されます。

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

イベントの種類:    成功の監査
イベント ソース:    SECURITY
イベント カテゴリ:    システム イベント
イベント ID:    513
日付:        2005/09/04
時刻:        7:30:38
ユーザー:        N/A
コンピュータ:    BJORK
説明:
Windows をシャットダウンしています。 シャットダウンにより、すべてのログオン セッションが終了します。

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

- at コマンドから shutdown.exe を使う (失敗)

本当は at コマンドを使ってコマンドラインからスケジュールしたかったのだが、うまくいかなかった。実行アカウントの問題のようだ。以下、試したこと。

at コマンドで shutdown コマンドをジョブに追加。
C:\>at 18:29 /interactive /next:1 "shutdown -s"
新しいジョブをジョブ ID = 31 で追加しました。

追加はできるのだが、いざ時間になると以下のメッセージが表示されてシャットダウンされない。
ログオン セッションは、要求された操作と矛盾する状態です。

うーん、ダメなのか。at で実行アカウントを指定するのってどうやるんだっけ? 調べてる時間がないから、今回はタスクスケジューラでいいか。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。