<!--
   $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>
デフォルトは一段階を前提にしています。
</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 人いるだけでもうだめ。
</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>
