DDN を排除する処理の追加 ― 2005年11月25日 15時20分44秒
Windows 環境では、DDN (DOS Device Name) のファイルを mknmz で処理すると不具合が生じる可能性が高いので、これを排除するようにしました。
http://support.microsoft.com/kb/256015 によると、標準的なデバイス名は以下のものとなります。
CON、AUX、NUL、PRN、LPT1 ~ LPT4、COM1 ~ COM4、CLOCK$、XMSXXXX0
pl/conf.pl.in に標準的な DDN の内容
$DENY_DDN = "con|aux|nul|prn|lpt[1-9]|com[1-9]|clock\$|xmsxxxx0";
を追加しました。 (LPTX, COMX に関しては、拡張ボードを追加することで9まで使用していることも多いため、9までにしました。)
利用環境に応じてmknmzrcをカスタマイズすることで、デバイス名の追加/修正ができます。
これは、 「DOS デバイス名は、アプリケーション開発メーカーが独自に作成し 予約語にできるものです。」 ということで、全ての DOS デバイス名を把握することは不可能なためです。
なお、QueryDosDevice で実行環境のDDNを取得できるのかと思いましたが、ちょっと違うようなので、API で取得する方法はやめました。
また http://www.samba.gr.jp/ml/article/samba-jp/msg09345.html によると、標準とみなせるデバイス名はもっと多いのですが、これらについては $DENY_DDN に利用者の方が追加していただくことで対応可能なので、デフォルトにはしていません。
文書が更新されているかどうかの判定について ― 2005年11月25日 15時40分30秒
加えて、--check-filesize オプションを用いることで、タイムスタンプが同一であってもファイルサイズが異なるものも文書の中身が更新されたとみなすようにできます。(Namazu 2.0.13 以降)
インデックスは大きくなってしまいますが、これに md5sum や sha1sum 等を用いるのも良いだろうと思います。
md5sum や sha1sum は文書の一部が変更された場合でも値が大きく変化するものですので、文書が修正されたかどうかの判断に用いるのには適しています。(というより、そもそもそういう目的のためのものですし)
ただ、md5sum なら1文書につき128bit=16バイト追加、sha1sum なら160bit=20バイト追加ということですから、文書数が多い場合にはインデックスサイズの増加の影響が大きいかもしれません。(バイナリの場合)
md5sum, sha1sum を使うと、ファイルを移動した文書またはファイル名を変更した文書をうまく取り扱うことができるかもしれません。
もっとも、まったく別の文書であっても md5sum, sha1sum の値が同一になる可能性はあるので、単独で用いるのではなく、md5sum と filesize やタイムスタンプ等と併用する等工夫は必要でしょう。
tutorial.html のソフトウェアの最新バージョンを更新 ― 2005年11月25日 17時43分07秒
- perl 5.8.7
- gettext 0.14.5
- nkf 2.0.5
- mecab 0.81
- File::MMagic 1.25
また、MeCab の URL が変更になっていたので、これも合わせて修正しまた。
特に現行バージョンの Namazu 2.0.14 でも問題なくあてはまるので、www.namazu.org サイトの内容も同様の変更を加えました。
最近のコメント