summaryrefslogtreecommitdiff
path: root/fml/doc/ja/tutorial/internals
diff options
context:
space:
mode:
authorfukachan <fukachan>2009-12-26 13:33:24 +0000
committerfukachan <fukachan>2009-12-26 13:33:24 +0000
commitb1f1a72733efecaa0e5850dd24a8ab453d74caf3 (patch)
tree333d8cba510c14be5540dcc517b46d8aa45296c0 /fml/doc/ja/tutorial/internals
parent29d002244ca20a88e7583dcadbde92d555ee3f17 (diff)
downloadfml8-b1f1a72733efecaa0e5850dd24a8ab453d74caf3.tar.gz
fml8-b1f1a72733efecaa0e5850dd24a8ab453d74caf3.tar.bz2
fml8-b1f1a72733efecaa0e5850dd24a8ab453d74caf3.zip
clean up a little ...
Diffstat (limited to 'fml/doc/ja/tutorial/internals')
-rw-r--r--fml/doc/ja/tutorial/internals/bootloader.sgml56
-rw-r--r--fml/doc/ja/tutorial/internals/cgi.examples.sgml76
-rw-r--r--fml/doc/ja/tutorial/internals/cgi.sgml25
-rw-r--r--fml/doc/ja/tutorial/internals/db_modules.sgml56
4 files changed, 120 insertions, 93 deletions
diff --git a/fml/doc/ja/tutorial/internals/bootloader.sgml b/fml/doc/ja/tutorial/internals/bootloader.sgml
index 5d71d328..73fd03b4 100644
--- a/fml/doc/ja/tutorial/internals/bootloader.sgml
+++ b/fml/doc/ja/tutorial/internals/bootloader.sgml
@@ -1,5 +1,5 @@
<!--
- $FML: bootloader.sgml,v 1.13 2005/06/25 15:11:33 fukachan Exp $
+ $FML: bootloader.sgml,v 1.14 2008/08/18 13:21:42 fukachan Exp $
-->
@@ -40,30 +40,30 @@ fml (libexec/distribute) が boot していく様子
</title>
<para>
-loader から次々と呼ばれていく様子は、例えば配送処理の場合、次のよう
-になります。
+たとえば配送処理の場合、
+loader から次々とモジュールが呼ばれていく様子は次のようになります。
</para>
<para>
-/usr/local/libexec/fml/distributre (の実体は
+/usr/local/libexec/fml/distributre (の実体
/usr/local/libexec/fml/loader) は /usr/local/etc/fml/main.cf を読みこ
-み、fml_version 変数から使うべきライブラリのバージョンを決めます。例え
-ば fml_vesrion が current-20010501 となっていたら
+み、fml_version 変数から使うべきライブラリのバージョンを決めます。
+たとえば fml_vesrion が current-20010501 となっていたら
/usr/local/lib/fml/current-20010501/ 以下にあるライブラリを使うといっ
-た具合です。
+たぐあいです。
</para>
<para>
@INC を再設定した後、
loader は FML::Process::Switch をロードし、
-$0 を調べます。
-その名前から自分の仕事は配送処理配送処理なので
+$0 (プロセス名)を調べます。
+その名前から自分の仕事は配送処理なので
FML::Process::Distribute クラスをロードし、配送処理に移ります。
</para>
<para>
なお、プログラム名とクラスの対応関係は
-etc/fml/defaults/バージョン/modules
+/usr/local/etc/fml/defaults/バージョン/modules
で定義されています。
</para>
@@ -106,10 +106,10 @@ FML::Process::Mead >-| |
<listitem>
<para>
- libexec/loader (wrapper)
- Bootstrap() を実行する。
- libexec/distribute などは、皆この loader へのシンボリックリンクです。
- /usr/local/libexec/fml/ 以下を参照して下さい。
+ /usr/local/libexec/fml/loader (wrapper)。
+ これは Bootstrap() を実行します。
+ distribute などは、皆この loader へのシンボリックリンクです。
+ /usr/local/libexec/fml/ 以下を参照してください。
</para>
</listitem>
@@ -117,9 +117,10 @@ FML::Process::Mead >-| |
<itemizedlist>
<listitem>
<para>
- /usr/local/etc/fml/main.cf を読み込む。
- 読み込むと fml のバージョンが分かる。
- main.cf の値から @INC を再設定しバージョン依存性を解決します。
+ /usr/local/etc/fml/main.cf を読み込み、
+ fml のバージョンを知ります。
+ また、main.cf の値から @INC (Perl のライブラリサーチパス)を再設定し、
+ 読み込むべきライブラリのバージョン依存性を解決します。
default_config.cf.{ja,en} はバージョン依存ですので、
設定ファイルを読み込む前に、
この段階でバージョンを評価しなければいけないことに注意してください。
@@ -128,8 +129,8 @@ FML::Process::Mead >-| |
<listitem>
<para>
- @ARGV を評価し、
- どのMLの config.cf 群をロードすればいいのかを準備します。
+ @ARGV (実行されたプログラムの引数 )を評価し、
+ どのMLの config.cf (設定ファイル)群を読み込むのかを判断します。
</para>
</listitem>
@@ -137,18 +138,16 @@ FML::Process::Mead >-| |
<para>
次に
FML::Process::Switch
- (バージョン依存)クラスを
- ロードします。
+ (バージョン依存)クラスをロードします。
</para>
<itemizedlist>
<listitem>
<para>
Bootstrap2() および ProcessSwitch() を実行し、
- 配送用、コマンドメール用の各プロセスへ
- 制御を移します。
- この時は $0 から自分の名前を知り、
- どのプロセスへ分岐すればいいのかを判断しています。
+ 配送用、コマンドメール用などの各プロセスへ制御を移します。
+ この時点で、すでに $0 から、
+ どのプロセスへ成りかわればいいのかは分かっています。
</para>
</listitem>
@@ -161,7 +160,7 @@ FML::Process::Mead >-| |
FML::Process::Flow の中に、
どのように fml8 プロセスを実行するかが
- 定義されています。大雑把には
+ 定義されています。おおまかには
<screen>
$process = new FML::Process::なにか;
$process->prepare($args);
@@ -171,7 +170,7 @@ $process->finish($args);
</screen>
のような実行順です。
各プロセスは、それぞれについて適当なメソッドを
- FML::Process:: 以下に用意する必要があります。
+ FML::Process:: 以下のクラスで用意する必要があります。
</para>
</listitem>
</itemizedlist>
@@ -193,7 +192,8 @@ $process->finish($args);
<para>
以下、内部構造について、2、3の走り書き/おぼえがきを残しておきます。
-一応、こういった構造を鑑みて、prepare() のあたりに持ってきているわけです。
+一応、こういった構造を考慮して、
+prepare() メソッドあたりに持ってきているわけです。
<screen>
main::Bootstrap()
diff --git a/fml/doc/ja/tutorial/internals/cgi.examples.sgml b/fml/doc/ja/tutorial/internals/cgi.examples.sgml
index ea2987aa..d28f88d1 100644
--- a/fml/doc/ja/tutorial/internals/cgi.examples.sgml
+++ b/fml/doc/ja/tutorial/internals/cgi.examples.sgml
@@ -1,5 +1,5 @@
<!--
- $FML: cgi.examples.sgml,v 1.2 2004/10/06 09:07:37 fukachan Exp $
+ $FML: cgi.examples.sgml,v 1.3 2005/06/25 15:11:33 fukachan Exp $
注意: cgi.sgml の中にはめ込むので <chapter> は不必要だ。
-->
@@ -26,11 +26,21 @@ FML::CGI::Thread FML::Process::CGI::Kernel FML::Process::CGI::Param
</para>
<para>
-FML::Process::CGI::Kernel には、
+固有でないコード(.cgi 群で共有するコード)は
+FML::Process::CGI::Kernel に定義されています。
+ここには、
プロセス全体の制御部分と、
-デフォルトの CGI 固有の関数「run_cgi_なんとか()」を置きます。
-必要に応じて FML::CGI:: の階層でオーバーロードしてください。
-なお、FML::Process::CGI::Kernel の以下のメソッドは使われていません。
+デフォルトの CGI 固有関数「run_cgi_なんとか()」が定義されています。
+</para>
+
+<para>
+必要に応じて FML::CGI:: の階層で、
+これらのメソッドをオーバーロードしてください。
+</para>
+
+<para>
+なお、FML::Process::CGI::Kernel の以下のメソッドは定義されているだけで、
+実際には使われていません。
<screen>
run_cgi_log
run_cgi_dummy
@@ -75,53 +85,63 @@ FML::Process::CGI::Kernel では
$curproc->_drive_cgi_by_table(); (FML::Process::CGI::Kernel)
$curproc->html_end(); (FML::CGI::Menu)
</screen>
-を実行します。画面を作るのは _drive_cgi_by_table() の部分です。
-この関数から呼ばれる関数が CGI のメイン部分です。
+を実行します。
+CGI の画面を作る実体は _drive_cgi_by_table() メソッドです。
+このメソッド内から呼ばれる関数が CGI のメイン部分です。
</para>
<para>
-$curproc->_drive_cgi_by_table()
-は、以下の各「run_いろいろ()」メソッド群を呼び出します。
-<screen>
-run_cgi_main (FML::CGI::Menu)
-</screen>
-cgi_execute_command (FML::Process::CGI::Kernel) を使い、
-FML::Command 経由で FML::Command::Admin::コマンドを実行します。
+$curproc->_drive_cgi_by_table() メソッドは、
+以下の各「run_いろいろ()」メソッド群を呼び出します。
+</para>
+
+<para>
+たとえばコマンドを実行するメイン部分が run_cgi_main です。これは、
+cgi_execute_command (FML::Process::CGI::Kernel) を呼び出し、
+FML::Command 経由で「FML::Command::Admin::コマンド」クラスを実行します。
これが、GUI からコマンドを実行するコードの本体です。
-ただし、画面の表示は別です。
+</para>
+
+<para>
+画面の表示をするには別のメソッド群が呼ばれています。
</para>
<para>
たとえば GUI から「ユーザのメールアドレスを登録する」場合、
-run_cgi_main() が実際の登録作業を行ないます。
-run_cgi_menu() は、入力画面の生成をおこないます。
-前者は FML::Command::Admin::subscribe::process() メソッド、
-後者は FML::Command::Admin::subscribe::cgi_menu() メソッドを呼び出しています。
+run_cgi_menu() が入力画面の生成をおこないます。
+run_cgi_menu() は cgi_execute_cgi_menu() 経由で各コマンドクラスの
+「FML::Command::Admin::コマンド::cgi_menu()」を実行しています。
+この場合 FML::Command::Admin::subscribe::cgi_menu()
+メソッドを呼び出しています。
+</para>
+
+<para>
+ちなみに、実際の登録作業をする run_cgi_main() は、
+FML::Command::Admin::subscribe::process()
+メソッドを呼び出しています。
</para>
<para>
-他にも run_cgi_* 関数がありますが、これらは画面の作りに関係する補助的
-なものたちといってよいでしょう。
+他にも run_cgi_* 関数がありますが、
+これらは画面の作りに関係する補助的なものたちといってよいでしょう。
</para>
<para>
-この2つは、たいていデフォルトのものを使っています。
+次の2つのメソッドは、たいていデフォルトのものを使っています。
<screen>
run_cgi_title FML::Process::CGI::Kernel クラス (タイトル表示)
run_cgi_options FML::Process::CGI::Kernel クラス (言語選択画面)
</screen>
-また、この .cgi 固有のメソッド群として次のものがあります。
+また、この .cgi 固有の画面作り関連メソッド群として次のものがあります。
<screen>
run_cgi_navigator FML::CGI::Menu クラス
run_cgi_help FML::CGI::Menu クラス
run_cgi_command_help FML::CGI::Menu クラス
run_cgi_menu FML::CGI::Menu クラス
</screen>
-</para>
-
-<para>
-ちなみに run_cgi_menu() は cgi_execute_cgi_menu() 経由で
-FML::Command::Admin::コマンド::cgi_menu() を実行しています。
+ヘルプなどはコマンドごとに違うわけですから、当たり前ですね?
+ただ、メッセージが異なるとかいうだけで、モジュールが違っても、
+ほぼ似たようなつくりです。
</para>
</sect1>
diff --git a/fml/doc/ja/tutorial/internals/cgi.sgml b/fml/doc/ja/tutorial/internals/cgi.sgml
index f153a420..7fe86a68 100644
--- a/fml/doc/ja/tutorial/internals/cgi.sgml
+++ b/fml/doc/ja/tutorial/internals/cgi.sgml
@@ -1,5 +1,5 @@
<!--
- $FML: cgi.sgml,v 1.13 2004/10/06 09:07:38 fukachan Exp $
+ $FML: cgi.sgml,v 1.14 2005/06/25 15:11:33 fukachan Exp $
-->
@@ -15,7 +15,8 @@
</title>
<para>
-FML::CGI のクラスは以下のメソッド群を実装して下さい。
+FML::CGI:: の階層にあるクラス(たとえば FML::CGI::ML)は、
+以下のメソッド群を実装して下さい。
<screen>
html_start()
run_cgi_main()
@@ -31,14 +32,14 @@ html_start() は、
ようするに HTML の先頭部分、たとえば DOCTYPE から BODY あたりを、
html_end() は
/BODY と /HTML を表示する部分をカスタマイズするために用います。
-run_◎◎ メソッド群では BODY の部分を定義しています。
+「run_なんとか」は HTML BODY の中身を定義するメソッド群です。
</para>
<para>
$curproc の run() メソッドは
<screen>
html_start()
-run_cgi_XXX() 群を実行(テーブル状に出力を配置する)
+run_cgi_XXX() 群を実行(3x3 テーブル状に出力を配置、9 メソッドあります)
html_end()
</screen>
を順番に実行しています。
@@ -49,7 +50,7 @@ prepare()
verify_request()
run()
html_start()
- run_cgi_○○()
+ run_cgi_○○() (9 メソッドあります)
html_end()
finish()
</screen>
@@ -65,7 +66,7 @@ finish()
</title>
<para>
-fml CGI スクリプトでは典型的な画面が次のように分割されると考えています。
+&fml8; CGI スクリプトでは典型的な画面が次のように分割されると考えています。
<screen>
ヘッダ
◎ メニュー ◎
@@ -82,7 +83,7 @@ fml CGI スクリプトでは典型的な画面が次のように分割されると考えています。
</para>
<para>
-一方、BODY の中身は真中の3x3のテーブル状の部分で、run_cgi() から呼
+一方、HTML BODY の中身は真中の3x3のテーブル状の部分で、run_cgi() から呼
ばれるメソッドが生成しています。
</para>
@@ -112,9 +113,9 @@ run_cgi_main
run_cgi_navigator run_cgi_menu run_cgi_command_help
run_cgi_options
</screen>
-HTML のレベルでは、TABLE 命令を使って疑似的なナビゲーションバーのよう
-なものを作っています。そして、ハッシュテーブルで定義されている関数を決
-められた順番で実行し、テーブルを作成しています。
+HTML のレベルでは、TABLE 命令を使って疑似的なナビゲーションバーを作っ
+ています。そして、ハッシュテーブルで定義されている関数を決められた順番
+で実行し、テーブルを作成しています。
</para>
<para>
@@ -149,7 +150,7 @@ run_cgi_main() ではなく run_cgi_menu() 経由で表示しているともいえるの
</title>
<para>
-CGI の表示部分は
+CGI を表示する実体部分は
FML::Command::
以下のクラスに移動させました。
しかしながら、
@@ -166,7 +167,7 @@ FML::CGI::Admin::User →
メニューの表示
</screen>
などとなっていて、
-Mach のトランポリン機構のように、いったりきたりします。
+Mach のトランポリン機構のように、いったりきたりしています。
</para>
</sect1>
diff --git a/fml/doc/ja/tutorial/internals/db_modules.sgml b/fml/doc/ja/tutorial/internals/db_modules.sgml
index 200e7eb2..de4aec68 100644
--- a/fml/doc/ja/tutorial/internals/db_modules.sgml
+++ b/fml/doc/ja/tutorial/internals/db_modules.sgml
@@ -1,5 +1,5 @@
<!--
- $FML: db_modules.sgml,v 1.3 2005/06/25 15:11:33 fukachan Exp $
+ $FML: db_modules.sgml,v 1.4 2008/08/18 13:21:42 fukachan Exp $
-->
<!--
@@ -20,8 +20,8 @@
<para>
MLドライバはメールのさまざまな要素をデータとして保存する必要がありま
-す。しかしながら、同じ要素でも、永続的に持つべき場合と、一定時間経過後
-に捨てて良い扱いの場合とがあります。
+す。しかしながら、永続的に持つべきデータと、一定時間経過後に捨てて良い
+データがあります。
</para>
<para>
@@ -44,18 +44,19 @@ message-id のデータを持っていますし、記事の分については重複しています。
<link linkend="threadtrack.db">
Mail::Message::DB
</link>
-のようなものとし、各種アダプタ層が頑張って欲しい。
-また、キャッシュの方ですが、現在では Tie::JournaledDir もしくは
+のようなものとし、アダプタ層が差異を吸収して欲しい。
+キャッシュについては、現在のところ Tie::JournaledDir もしくは
FML::Cache::Ring のいづれかが使われることとなっています。
</para>
<para>
-なお、メンバーリストなどの永続性の必要なデータに対するデータベースはき
-ちんと DBMS (データベース管理システム)を使うべきです。
+なお、
+メンバーリストなどの永続性の必要なデータに対してデータベースを使う場合は、
+本来、きちんとした DBMS (データベース管理システム)を使うべきです。
</para>
<para>
-本章で述べるデータベースは
+本章で述べるデータベースはそれとは異なり、
&fml8; が動作する上で内部的に使っているデータベースのことです。
</para>
@@ -86,13 +87,16 @@ DBMS
</para>
<para>
-ここでは &fml8; 内部で使っているモジュールの話をします。
+ここでは &fml8; 内部で使っているモジュールの解説をします。
</para>
<para>
&fml8; では、データの expire の仕方に応じて2つのデータ保持クラスを用
-意しています。それは「サイズを気にせず、時間を区切って expire するのか?」
-もしくは「使用する領域のサイズをある程度気にするか?」の2種類です。
+意しています。
+それは
+「サイズを気にせず、時間を区切って expire するのか?」
+「使用する領域のサイズをある程度気にするか?」
+の2種類です。
</para>
</sect1>
@@ -123,14 +127,14 @@ DBMS
<para>
参照する際は最後に追加したデータが取り出されます。
つまり、値は追加された値を last match で取り出しています。
-</para>
-
-
+<footnote>
<para>
-逆に、それ以上の情報が必要な場合には、過去のログを追跡していくことがで
-きます。
+原理上 last match 以上の情報抽出も可能です。
+過去のログを追跡していくことで、全データ一覧の生成ができます。
+また、 last match を first match に切替えることも出来ます。
+</para>
+</footnote>
</para>
-
<para>
このクラスは、サイズを度外視して一定期間のあいだ記録しておきたいデータ
@@ -180,23 +184,25 @@ get_all_values_as_hash_ref()
FML::Cache::Ring
</ulink>
クラスは、主にサイズに上限を設けたいタイプのデータを蓄える場合に用
-います。expire の時間については気にしません。
-サイズで有無を言わさず切ってしまいます。
+います。時間(expire)については気にしません。
+時間ではなくデータのサイズで有無を言わさずデータを廃棄します。
</para>
<para>
-デバッグ等に用いるデータはこれで十分と考えます。
-普段は使わないデバッグのために、サイズを食われるのも嫌ですから。
+デバッグ等に用いるデータであれば、こういった扱いで十分と考えます。
+普段は使わないデバッグのために、
+ハードディスクを使われてしまうのは嫌ですから。
</para>
<para>
-このクラスは、あるディレクトリ(例: db/)の有限の複数のファイル群の中に
-データを蓄えます。
-例えば db/ ディレクトリに 1 〜 100 の名前のファイルがつくられ、
+このクラスは、あるディレクトリ(例: db/)中に作られた有限個のファイル群
+の中にデータを蓄えています。
+たとえば db/ ディレクトリに 1 〜 100 の名前のファイルがつくられ、
順番に使われてきます。
-これらのファイルはぐるぐる回って使われ、上書きされます。
+これらのファイルはぐるぐる回って(1 2 3 4 ...)使われ、
+一周してしまう(100 を超えると)と、元に戻って上書き(1 2 3 4 ...)されます。
</para>