Windows Vista での不具合2007年01月15日 15時37分52秒

Windows Vista で動作確認したところ、予想に反して不具合が見つかりました。

コマンドラインから部分一致検索等を行う時、ワイルドカードが展開されて渡されます。

ex)
C:\> namazu "*u*" .

いろいろと調べてみたところ、MinGw のランタイムでは MSVCRT の __getmainargs() を呼び出して、コマンドラインの引数を取り出しているのですが、この関数にバグがあるようです。

この不具合をアプリケーション側で対応するのは厄介です。

Re: Windows Vista での不具合2007年01月16日 00時26分42秒

その後、MinGWにはlibmsvcr71.a他、インポートライブラリが用意されてることが分かりました。このため、 -lmsvcr71をつければ今回の不具合は回避できることがわかりました。

しかし、

C:\> objdump -p test.exe | grep dll
DLL Name: KERNEL32.dll
DLL Name: msvcr71.dll
DLL Name: msvcrt.dll

のように msvcrt.dll もリンクされるのがちょっと気になります。
何か矛盾が生じないだろうか。

なお、MSVCRT のインポートライブラリには、

libmsvcr70.a
libmsvcr70d.a
libmsvcr71.a
libmsvcr71d.a
libmsvcr80.a
libmsvcr80d.a

が用意されています。
とりあえず libmscr71.a を使うつもりです。

Visio 2007対応2007年01月18日 18時27分24秒

Windows 版に限りますが olevisio.pl に手を加えてもう直ぐ発売の Visio 2007 に対応しました。

Office 2007 対応(OLEコントロールフィルタ)2007年01月18日 18時28分56秒

Windows版ではfilter/win32/ole*.pl フィルタに手を加え、もう直ぐ発売される Office 2007 に対応しました。

また、Office 2007 から次のように新しいファイル形式をサポートします。

Microsoft Office Word 2007

  • Word 2007 文書 (*.docx)
  • Word 2007 マクロ対応の文書 (*.docm)

Microsoft Office PowerPoint 2007

  • PowerPoint 2007 プレゼンテーション (*.pptx)
  • PowerPoint 2007 マクロ対応のプレゼンテーション (*.pptm)
  • PowerPoint 2007 テンプレート (*.potx)
  • PowerPoint 2007 マクロ対応のテンプレート (*.potm)
  • PowerPoint 2007 スライド ショー (*.ppsx)
  • PowerPoint 2007 マクロ対応のスライド ショー (*.ppsm)

Microsoft Office Excel 2007

  • Excel 2007 バイナリ ブック (*.xlsb)
  • Excel 2007 ブック (*.xlsx)
  • Excel 2007 マクロ対応のブック (*.xlsm)
  • Excel 2007 テンプレート (*.xltx)
  • Excel 2007 マクロ対応のテンプレート (*.xltm)
  • Excel 2007 アドイン (*.xlam)

このうち、*.docx, *.pptx, *.ppsx, *.xlsx のファイル形式については、新たにOLEコントロールフィルタに対応しました。

なお、Microsoft Office 2000、Office XP、または Office 2003でも 「Word/Excel/PowerPoint 2007 ファイル形式用 Microsoft Office 互換機能パック」を入れると 2007 形式のファイルが扱えます。

http://www.microsoft.com/downloads/details.aspx?FamilyID=941b34703ae9-4aee-8f43-c6bb74cd1466&DisplayLang=ja

Office 2007 文書に対するOLEコントロールフィルタの対応を以下のようにしました。

  • Word 2007/Excel 2007/PowerPoint 2007
 標準で動作
 
  • Word XP, 2003, 2000/Excel XP, 2003/PowerPoint XP, 2003
 互換機能パックのインストールが必要
 
  • Excel 2000/PowerPoint 2000
 未対応(互換機能パックの仕様)
 
  • Word 97, 98/Excel 97/PowerPoint 97
 未対応

Re: Windows Vista での不具合2007年01月23日 00時39分39秒

-lmsvcr71をつければ単純なプログラムでは問題が解決しました。
しかし、namazu.exe の場合は

C:\> objdump -p namazu.exe | grep dll
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
DLL Name: msvcr71.dll
DLL Name: msvcrt.dll

のように msvcrt.dll もリンクされてしまっています。
gcc のspecsファイルを書き換えても msvcrt.dll がリンクされてしまいます。

両方リンクされていると、spawn で(メモリ関係の)不具合が生じるようで、実行途中で落ちました。

それではということで、MinGw でコンパイルするのをあきらめ、VC++ でコンパイルすることを考えています。

そこで、次のような単純なプログラムをVC++でコンパイルしてテストしてみました。
(ワイルドカード展開するには setargv.obj をリンクします。)

#include <stdio.h>
#include <stdlib.h>

main(int argc, char *argv[])
{
int i;

for (i = 0; i < argc; i++) {
fprintf(stdout, "%d [%s]\n", i, argv[i]);
}
}

すると VC++ 2005 だと msvcr80.dll とリンクされるためか、Windows Vista でなくても、期待する正しい動作はしないことがわかりました。
仕方がないので VC++ 6.0 でコンパイルすると、Windows Vista でも期待する動作となりました。

どうやら、msvcr80.dll 辺りの仕様変更(か、バグ)が今回の原因のようです。

ということで、次は namazu.exe を VC++ 6.0 でコンパイルして試してみようと思います。

Namazu for Windows 2.0.16 ( アーカイブ003 ) を公開2007年01月24日 19時46分45秒

Namazu for Windows 2.0.16 (アーカイブ003) を公開します。

Namazu 2.0.16 を Windows で使用するための、コンパイル済みのバイナリをまとめたアーカイブです。

http://www.akaneiro.jp/public/nmz2.0.16.003-win32.zip
http://www.akaneiro.jp/public/nmz2.0.16.003-win32.zip.sig
http://www.akaneiro.jp/public/nmz2.0.16.003-win32.zip.md5
(md5sum: 99795bc118085cce3d77f0debd859903)
http://www.akaneiro.jp/public/nmz2.0.16.003-win32.zip.sha1
(sha1sum: 3c81102728236b341f56943bac46fd403ee4df34)

本アーカイブにはインストーラは含まれませんので、手動でインストールする必要があります。

動作環境は ・ActivePerl 800番台 ・インストール先は C:\namazu という制限が付きます。

また、Web サーバから PPM ファイルをインストールする必要がありますで、インストール時にインターネットに接続する必要があります。

備考:

  • nmz2.0.16.002-win32.zip との変更点は、Windows Vista 対応のためにコンパイラを VC++ 6.0 に変更したことです。  旧OSで nmz2.0.16.002-win32.zip をインストールされている方は、特に差し替えの必要はありません。
  • アーカイブに含まれるプログラムのソースは変更していませんので、Namazu 2.0.16 リリース後に判明したバグについては一切修正されていません。
  • 新規に Namazu 2.0.16 をインストールする場合には nmz2.0.16.003-win32.zip をご利用ください。
  • 現在、Namazu は 2.0.16 以外のバージョンは使用すべきでないことに注意してください。

Namazu for Windows 2.0.16 ダウンロード数(7)2007年01月25日 15時56分49秒

アクセスログの保存期間が3ヶ月しかないので、前回以降の集計です。

11/29~1/25(本日)までの nmz2.0.16.001-win32.zip, nmz2.0.16.002-win32.zipのダウンロード数は、約1,450 でした。

NKF, File-MMagic, Text-Kakasi の PPM のダウンロード数はそれぞれ約 730 でした。

Search-Namazu の PPM のダウンロード数は 709、MeCab の PPM のダウンロード数は 94 でした。

ppm, PPM のセッション数は合わせて約 800 でした。

このことから、この期間のインターネットからの Namazu 2.0.16 for Windows ののべインストール数は約 730 台ということでしょう。

相変わらず nmz2.0.16.002-win32.zip のダウンロード数と PPM のダウンロード数のひらきは2倍弱です。

なお、前回の調査と合わせると、nmz2.0.16.001-win32.zip ののべダウンロード数は 8,350。インターネットからの Namazu 2.0.16 for Windows ののべインストール数は 3,330~3,530 ぐらいのようです。

Text-ChaSen 1.04 リリース2007年01月28日 04時22分21秒

Text-ChaSen 1.04 がリリースされました。

CPANからダウンロードが可能です。

インストール方法は、ChaSenのインストール方法をご覧ください。

Text-ChaSen と MeCab の PPM2007年01月29日 04時54分09秒

そう言えば、Text-ChaSen の PPM を公開していないことに気づきました。

Kakasi, MeCab のように辞書のインストールが必要なので PPM で一発インストールとはいきませんが、PPM があると楽ですよね。

また、MeCab の PPM も 0.92 のままでした。
0.93 はライセンス変更だけなのですが、バージョンアップしておくべきですよね。
時間がとれればバージョンアップします。

Windows Vista 発売。 Namazu の Vista 対応について2007年01月29日 23時59分21秒

Windows Vista が発売されました。

ということで、Windows 95,98,Me ユーザは買い換えましょう。サポートないから。
しかし、Windows XP ユーザはサポート延長が決まったので、あわてて Vista に乗り換える必要はないでしょう。

ところで、Namazu も、つい最近 Windows Vista 対応ということで、nmz2.0.16.003-win32.zip を公開しました。

Windows Vista 対応と言っても、何か特別な機能が追加された訳でもなく、ただ Windows Vista で従来のように使えるというだけのものです。
過剰な期待はなさらぬようにお願いします。

Windows Vista はいろいろ新しい機能はあるのですが、シンボリックリンクが使えるようになっています。
これにより、ハードリンク、ジャンクション、シンボリックリンク、ショートカットという似た機能が使えることとなりました。
シンボリックリンクは mklink コマンドで作成します。
Namazu でもシンボリックリンクのファイルを扱えることを確認しています。

Windows Vistaには、汎用的なファイル形式としてXPSという新しいフォーマットの文書が扱えるようになります。
現在、Namazu はXPSに未対応ですが 2.0.17 から対応するかもしれません。

なお、Windows Vista から JISX0213:2004 対応の際にフォントの字形を変えてしまった(仕様的には、変える必要はなかったはずなのだが...)という話はありますが、Namazu でも当然その影響を受けます。
そうそう、Namazu が Windows Vista 対応したと言っても、別に JIS X0213:2004 文字に対応したわけではなくて、相変わらず内部は EUC-JP のみ対応です。(入力データはEUC-JPに限りませんが。)