<!-- -*- mode:text coding:euc-jp -*-
   $FML: directory.sgml,v 1.8 2008/08/18 13:21:42 fukachan Exp $
-->


<chapter id="directory">
	<title>
	ディレクトリ
	</title>


<sect1 id="directory.subdir.hier.level">
	<title>
	Q: サブディレクトリ構造は何段階まで必要か？
	</title>

<para>
デフォルトは一段階を前提にしています。
たとえば、
HTML 化された記事は、
次のような一段階の階層構造になっています。
<screen>
200201/msg○○.html
</screen>
</para>

<para>
現代の PC の性能なら、
ディレクトリ中に 1000 個ファイルがあっても
ほとんど瞬時に ls は返ってきますが、
10000 ともなると少し考えます。
</para>

<para>
HTML 化されたファイルをおくサブディレクトリを 1000 ごとに用意すると、
たとえば spool/sub/file みたいにすると、
spool/ 以下の記事が 10^6 ( million )くらいまでは、
それなりのアクセス速度を保ちつつ格納できるはずです。
</para>

<para>
一つのＭＬで 100 万通は、なかなかいきません。
この予想は、悪くはないでしょう。
もう一段階いくと 10^9 くらいいきますが、
そこまで長くＭＬが続くことは少ないと考えます。
</para>

<para>
なお直接には関係ない議論ですが、
Maildir/ でも 100 万くらいで少しつらいようです。
メールを 10,000 通ためる人が 100 人いるだけでもうダメだということになります。
100万のオーダになると、二段階くらいにはしないといけません。
</para>

</sect1>


<sect1 id="directory.recipes">
	<title>
	レシピ's
	</title>

<qandaset>

<qandaentry>

<question>
<para>
ディレクトリ名は、どこに定義されていますか？
</para>
</question>

<answer>
<para>
/usr/local/etc/fml/defaults/$VERSION/default_config.cf
にデフォルト値が定義されています。
各ＭＬの config.cf で上書きも出来ます。
動作時に使っている値は fmlconf で表示させて確認してください。
<screen>

% fmlconf ＭＬ名 | grep _dir

</screen>
これらの値を HOOK で使う際には config オブジェクトから取り出して下さい。
<screen>

$_xxx_hook = q{
	my $config = $curproc->config();
	my $xxxdir = $config->get('some_where_dir');

	... 略 ...
}

</screen>

</para>
</answer>

</qandaentry>

</qandaset>

</sect1>


</chapter>
