「Namazuの開発日記」メールマガジン2008年06月02日 14時01分46秒

当「ナマズのブログ」と連携した「Namazuの開発日記」メルマガを発行しています。

登録はもちろん無料です。
下記から登録/解除が可能です。
最新号ではメンバエリアにアクセスするのに必要なグレー会員のIDとパスワードが載っています。

Namazuの開発日 記  登録 解除
メールアドレス

pl/ext.pl, pl/extzip.pl zip 拡張機能2008年06月03日 15時20分13秒

zip 拡張機能

フィルタで利用する zip ファイル処理をまとめて、pl/ に追い出すためにプログラムを書き換えてみました。

zip ファイル処理は必要なツール、 モジュールがインストールされている場合にのみ使用可能な機能なので、 拡張機能という位置付けで考えています。

  • pl/ext.pl ...... 拡張機能メイン
  • pl/extzip.pl ... zip 拡張機能

zip 拡張機能では、従来の unzip コマンドの代わりに Archive::Zip が利用できます。 また、Archive::Zip に加えて IO::String が利用できる環境ではテンポラリファイルを作成しないことで、 これらの処理がより高速に行えるようになります。

pl/extzip.pl は、filter/ooo.pl, filter/koffice.pl, filter/xpl.pl 等から利用することができます。

残念ながら、filter/zip.pl はこれらに比べて処理が複雑になるうえ、 他のフィルタと共通部分が少ないので、利用対象からは外しています。

[利用方法]

require 'ext.pl';
require 'extzip.pl';

sub status() {
    if (ext::issupport('EXT_ZIP') eq 'yes') {
        return 'yes';
    }

    return 'no';
}

フィルタの status() で EXT_ZIP 拡張機能が利用可能かどうかをチェックします。 チェックは最初に呼び出した時のみ行われるため、 複数のフィルタから呼び出されても1回のみチェックが行われます。 チェック時に、利用可能なツール、モジュールより判断し、 以後呼び出される zip 処理サブルーチンをセットします。

zip ファイル内の特定のファイルの中身を取り出すには次のように呼びだします。 (この例ではファイルがテキスト形式の場合)

   my $err = $extzip::zip_read->($contref, $metafile, \$xml);
   return $err if (defined $err);
   codeconv::normalize_nl(\$xml);

また、zip ファイル内のファイルをパタンーンマッチングで取り出すには、 次のように呼び出します。

   my $err = $extzip::zip_membersMatching->($zipref, $pattern, 
       $embeddingsref);

このモジュールにより、各フィルタの処理が共通化でき、 フィルタ間の差を吸収できます。 また、共通化部分を pl/ に追い出すことでフィルタが簡素化できます。

なお、フィルタの UTF-8 処理についても同様に拡張機能として、 今後フィルタから追い出すことを考えています。


pl/ext.pl, pl/extzip.pl をコミットしました。 (HEAD, development-2-1, stable-2-0)

フィルタで require を行うのではなく、mknmz.in 等から require する ように変更しました。 これに伴い namazu.spec.in を書き換えています。

pltests/env.pl.in には pl/extzip.pl で対応している IO::String 等のバージョン表示を追加しました。

これを使うフィルタの方はまだコミットできていませんが、 下準備として 一部フィルタの書き換えを行っています。

「Namazuの開発日記」メルマガアーカイブ -2007年度版-2008年06月05日 23時52分51秒

「Namazuの開発日記」メルマガアーカイブ -2007年度版-

メルマガアーカイブ第3弾として「Namazuの開発日記」メルマガアーカイブ -2007年度版- の販売を開始しました。

2007年4月から2008年3月末までに発行した「Namazuの開発日記」メルマガを再編集した PDF ファイルです。 本書はメンバエリアで公開予定のコンテンツです。公開に先行しての販売となります。(公開時期未定)

初版 約180ページ

  • 商品データは、UNIX/Windows/Mac のどのOSでも利用可能ですが、商品の暗号化を解除するためには Windows が必要となります。
  • 本書の内容は予告なく改変する場合があります。
  • ご購入前にサンプルファイルの中身をご覧ください。

http://www.akaneiro.jp/download/

男のゆかた2008年06月10日 20時54分58秒

男のゆかた

日本の夏を満喫!なまず柄のゆかた

OLE-Storage_Lite-0.172008年06月11日 01時01分26秒

OLE-Storage_Lite-0.17 が公開されています。

これを Namazu 2.0.18 で pltests で動作確認した範囲では問題ないようです。

ただし、$OLE::Storage_Lite::VERSION の値が '0.16' のままでした。 $OLE::Storange_Lite::PPS::VERSION 等は '0.17' となっていたので、おそらく値を更新し忘れたのではないかと思われます。

OLE::Storage_Lite::PPS 他のバージョン表示を追加2008年06月11日 01時56分24秒

pltests/env.pl.in で、OLE::Storage_Lite に加えて、

  • OLE::Storage_Lite::PPS
  • OLE::Storage_Lite::PPS::Root
  • OLE::Storage_Lite::PPS::File
  • OLE::Storage_Lite::PPS::Dir

の VERSION を表示するようにしました。 (HEAD, development-2-1, stable-2-0)

OLE-Storage_Lite-0.17 PPM バージョンアップ2008年06月12日 02時14分37秒

Windows ActivePerl 用 OLE-Storage_Lite PPM を 0.17 にバージョンアップしました。

C:\> ppm uninstall OLE-Storage_Lite
C:\> ppm install 
      http://www.akaneiro.jp/PPMPackages/800/OLE-Storage_Lite.ppd

でバージョンアップが可能です。

  • ActivePerl Build 8XX (Perl 5.8.X) 専用です。
  • 6XX (Perl 5.6.X), 10XX (Perl 5.10.X) では利用できません。

zip ファイルはメンバエリアで公開しています。

https://www.akaneiro.jp/members/PPMPackages/zips/

ブルー会員ID更新のお知せ2008年06月13日 19時03分14秒

メンバエリアにアクセスするためのユーザID/パスワード(ブルー会員)を更新しました。 新しいIDは、6月~11月末まで使用できます。 (もちろん、前回のIDも7月末までは使用できます。) なお、7月末まで有効な前回の ID の販売は終了いたしました。

不定期にユーザID/パスワード(グレー会員)をメルマガで公開していますが、新規にメルマガに登録された方は次回ユーザID/パスワードがメルマガで公開されるまでメンバエリアにアクセスできません。

このため、救済策としてユーザID/パスワード(ブルー会員)を販売しています。 (Windows限定) ブルー会員は期間限定でメンバエリアにアクセス可能となります。

http://www.akaneiro.jp/download/

現在、グレー会員(メルマガ購読者)とブルー会員(有料ID)の違いは有効期限の違いの他、アクセス可能なエリアが異なります。 ブルー会員はグレー会員エリアへのアクセスも可能です。 グレー会員では、ブルー会員エリアへのアクセスはできません。

http://www.akaneiro.jp/namazu/members.html

pl/ext.pl, pl/extzip.pl zip 拡張機能対応2008年06月14日 14時13分52秒

filter/zip.pl を除き、unzip を使うフィルタを pl/ext.pl, pl/extzip.pl を利用するように書き換えました。

これにより、unzip に加えて Archive::Zip(IO::String) を利用できるようになりました。

ppm コマンドにおける日本語を含むユーザ名の問題2008年06月16日 20時27分48秒

ActivePerl の ppm コマンドはユーザ名に日本語を含む場合、エラーが発生し正常に動作しません。 環境変数 ACTIVEPERL_PPM_HOME を設定することで、この問題を回避することができます。

例えば、環境変数 ACTIVEPERL_PPM_HOME に C:\tmp を設定する場合は、コマンドプロンプトを開き、

C:\> mkdir C:\tmp
C:\> SET ACTIVEPERL_PPM_HOME=C:\tmp
C:\> SET TEMP=C:\tmp
C:\> ppm install http://www.akaneiro.jp/PPMPackages/800/MeCab.ppd

として、ppm コマンドを使用してください。

ただし、Namazu for Windows 利用者にはこの方法は推奨しません。 この方法による問題の回避は、ユーザ名が日本語の場合に発生する問題のうちのひとつ(ppm に対してのみ)にすぎません。 ppm 以外の問題を回避することはできないためです。

Namazu for Windows 利用者は日本語を含まないユーザ名を使用してください。 (ユーザ名には英小文字で始まり、英小文字と数字で構成された文字列が安全です。)