Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: tar.pl 作成



寺西です。

Yukio USUDA wrote:
> 
> tar.pl フィルタを gtar コマンド利用で試してみました。
> .tar.gz が conf.pl で DENY_FILE にされているのに気づかず少し悩みました。

普通は DENY で良いと思いますよ。アーカイブファイルの中身も検索したい
人が使えば良いので、デフォルトは検索できない方が良いでしょう。
(検索できないというよりは、インデックスの作成対象にしないと言うべきか)

> Tadamasa Teranishi wrote:
> >
> Tarフィルタで気になった点
> * eval 'use Archive::Tar'; は filter_archive_tar の中に持っていって
>  使用直前まで読み込まないようにしたほうがよいです。

これは、使わない場合はロードしないことでメモリを無駄に消費するの
を抑えるためでしょうか? (それ以外に何かありますかね?)

これといって明確な方針を持っているわけじゃなくて、ただなんとなく、
use は実行時にモジュールを読み込むものですので、Archive::Tar も
あまり気にせず読み込もうかと思いました。消費メモリもおそらく
ほんのわずかでしょう。(今回は eval なので eval が実行される時に
読み込まれるので多少事情は違うのだが)
# Perl の文化では、あまり気にせず読み込むみたいだし。

極論すれば Archive::Tar 以外のモジュールも使用直前に読み込む
ようにした方が本当は良いのかもしれませんが、
use がフィルタ内に点在するのもあまり綺麗じゃないですし、
どういうスタイルにするのが良いのでしょうね。

> * gtar と Archive::Tar ならば .tar.gz な ファイルを扱えるので gzipフィルタを
>   通さずに直接ファイル抽出したほうがメモリ効率がよいかも。

はい。メモリ効率だけではなくて、オーバーヘッドも減るのでしょう。

>  (.gz ファイルと .tar.gz ファイルを区別する方法があればですが)

こちらのうまい方法が見つからないので、今のところ実装していません。
あまり拡張子で判断するという方法は採用したくないので、別の手がない
かと思っています。

また、Ooo と zip の関係がどうなっているのかきちんと調べていない
のですが、ここでやっている方法が使えるのかなと思っています。
(拡張子で判断しているのなら、それまでですが...。)
 
> アーカイブ系フィルタ共通で気になった点
> * zip, lha, tar で nesting_filter は共通のようなので 外に追い出しては?

将来的には gfilter.pl に追い出すのが良いでしょうね。

> * 再帰呼び出しのときは拡張子によるファイルのふるい落としがされない。
>   (適当なtar.gzファイルを試したらC, perlのソースも text/plain として
>   全部コンテンツに入ってきました。)
>  mknmz::add_target から該当個所をもらうのはどうでしょう?

この辺りは mailnews.pl や macbinary.pl にも当てはまることで
しょうか。
いずれにしても、もらってくるのが良いと思います。

あとは、$FILE_SIZE_MAX のアーカイブ版 $ARCHIVE_SIZE_MAX を追加
して、アーカイブファイル自体のサイズ上限を設けてはどうかと
思っています。

ところで、MitakeSearch V4.1 の新機能がアーカイバ対応(それだけじゃ
ないけど)だったということを今更知りました。流行かな?
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E