summaryrefslogtreecommitdiff
path: root/fml/doc
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-01-19 12:54:13 +0000
committerfukachan <fukachan>2001-01-19 12:54:13 +0000
commit4377641665acbf1a4a83883241afe392e88ec112 (patch)
tree7ed8f24cd168c95d329bcaf2958b6a63feac6bfb /fml/doc
downloadfml8-4377641665acbf1a4a83883241afe392e88ec112.tar.gz
fml8-4377641665acbf1a4a83883241afe392e88ec112.tar.bz2
fml8-4377641665acbf1a4a83883241afe392e88ec112.zip
Initial revision
Diffstat (limited to 'fml/doc')
-rw-r--r--fml/doc/00_IDEA264
-rw-r--r--fml/doc/__template.ja.html18
-rw-r--r--fml/doc/architecture.gifbin0 -> 9906 bytes
-rw-r--r--fml/doc/architecture.html20
-rw-r--r--fml/doc/components.ja.html32
-rw-r--r--fml/doc/dirhier.ja.html53
-rw-r--r--fml/doc/index.ja.html29
-rw-r--r--fml/doc/interfaces.ja.html67
-rw-r--r--fml/doc/menubar.ja.html79
-rw-r--r--fml/doc/modules.ja.html51
-rw-r--r--fml/doc/objects.ja.html62
-rw-r--r--fml/doc/refactoring.ja.html137
-rw-r--r--fml/doc/releng.ja.html51
-rw-r--r--fml/doc/terms.ja.html72
14 files changed, 935 insertions, 0 deletions
diff --git a/fml/doc/00_IDEA b/fml/doc/00_IDEA
new file mode 100644
index 00000000..c09f60d9
--- /dev/null
+++ b/fml/doc/00_IDEA
@@ -0,0 +1,264 @@
+ fml5 project
+
+
+○ 基本理念
+
+ (仮称) fml5 == Fml Modular Listmanager based on perl 5
+ (recursive definition)
+
+ sendmail -> postfix 的な置き換えプログラム
+ 例えば
+ /etc/aliaes や .forward はそのまま使いつづけられる
+ しかし sendmail.cf は解釈しないといったイメージ
+
+ /var/spool/ml
+ /var/spool/ml/ML名
+
+ という構造は残したいとおもうが、
+ それ以外の互換性を保証するかはかなり不明
+
+ Q: ? ~ユーザ名/fml/ML名
+ suEXEC みたいなものかい?
+
+ ユーザが死にそうにいるサーバ上では uniqueness をチェッ
+ クするのがとても大変そう?
+
+
+○ fml.pl は wrapper で
+
+ /usr/local/libexec/fml/$VERSION/ ...
+
+ LDAP とか SQL をしゃべれてほしいですな > Netscape
+
+
+○ メインプログラムディレクトリ階層の例
+ ( 現在の /usr/local/local/fml にあたるもの )
+ ports, packages, RPM, .deb フレンドリィに(?)
+
+ /usr/local/libexec/fml/
+
+ /usr/local/libexec/fml/distribute (配送プログラム)
+ /usr/local/libexec/fml/command (コマンド処理プログラム)
+ /usr/local/libexec/fml/mead (エラー解析)
+ /usr/local/libexec/fml/confirmd
+
+ 注: --ctladdr はつかわない。できるだけ DO NOT PARSE
+ でないと機械的な処理がしにくいため
+ # 例えば CGI では include-ctl ファイルの編集の際
+ s/distribute/command/g
+ するだけの方が楽などといった具合(?)
+
+ /usr/local/libexec/fml/emul/
+
+ /usr/local/libexec/fml/emul/fml.pl
+ --ctladdr なしは /usr/local/libexec/fml/distribute を
+ --ctladdr つきは /usr/local/libexec/fml/command を実行する
+
+ /usr/local/libexec/fml/emul/XXX
+ 例: emul/listserv
+
+
+ /usr/local/lib/fml/
+ ドキュメントや perl module などをおく ?
+
+ /usr/local/lib/fml/doc/text/
+ /usr/local/lib/fml/doc/html/
+ /usr/local/lib/fml/doc/sgml/
+ /usr/local/lib/fml/doc/pod/
+ /usr/local/lib/fml/doc/man/
+ /usr/local/lib/fml/doc/jman/
+
+ /usr/local/lib/fml/lib/base/Proc.pm
+ /usr/local/lib/fml/lib/CPAN/Mail/
+ /usr/local/lib/fml/lib/Jcode/Jcode.pm
+ /usr/local/lib/fml/lib/gnu/
+ /usr/local/lib/fml/lib/3rdparty/
+
+ /usr/local/lib/fml/messages/
+ /usr/local/lib/fml/makefml/
+
+ /usr/local/lib/fml/examples/
+ /usr/local/lib/fml/examples/www/
+ /usr/local/lib/fml/examples/databases/
+
+ /usr/local/lib/fml/contrib/
+
+
+○ 基本設定の例
+
+ ( makefml が使うため, virtual domain/host を考慮する )
+
+ /etc/fml/$domain/fml.cf
+ /etc/fml/$domain/cgi.cf
+
+ こうすれば
+ # makefml newml elena@fml.org
+ # makefml newml elena@nuinui.net
+ といった操作でバーチャルドメインの場合に簡単にできないか?
+
+ elena ML
+ /var/spool/ml/elena/設定ファイル (仮称: config.cf )
+ # もっと良い名前募集中
+
+
+ :include:/var/spool/ml/elena は
+
+ "| /usr/local/libexec/fml/distribute /var/spool/ml/elena"
+
+ :include:/var/spool/ml/elena-ctl は
+
+ "| /usr/local/libexec/fml/command /var/spool/ml/elena"
+
+ を呼び出す。
+
+ Q: 実は実体は1つで、$0 で処理が分かれるようにしていてもよい
+
+
+○ 再利用可能性
+
+ たとえば confirmation module の例
+
+ subscribe エンジン ---> confirmation module
+ モデレータ ---> confirmation module
+ confirmd ---> confirmation module
+
+ /usr/local/lib/fml/lib/base/Confirm.pm
+
+
+○ 設定ファイル
+
+ 問題点
+ perl でかくと parser がかけない(perl が柔軟過ぎるから)
+ 1/0 はいやん、yes/no のほうがまし
+ 配列が表現できない
+ 型チェックをしたいのだが…
+
+
+ config.cf の例 # 段落区切り ( postfix とおなじ形式で )
+
+ # これは自動設定されるはず
+ # myhomedir = /var/spool/ml/elena
+
+ myfqdn = ahodori.fml.org
+ mydomain = fml.org
+
+ mail_list = elena@$mydomain
+ control_address = elena-ctl@$mydomain
+
+ # メンバーリスト関係
+ members_maps = $myhomedir/members
+ admin_members_maps = $myhomedir/members-admin
+
+ # definition of recipients: fml uses recipient lists in this order
+ # [a-z]+: のうち file: だけは省略しても良い
+ # これで配列の表現ができる
+ recipients_maps = $myhomedir/recipients
+ file:$myhomedir/actives
+ mysql:$sysconfdir/mysql.cf
+
+
+ # makefml add の際にはどの maps をアップデートするか?
+ # たとえばファイルに追加であって、mysql へではない
+ # XXX この名前づけルールは良くないと思う > postfix
+ # XXX もっとよい名前を
+ recipient_database = $myhomedir/recipients
+
+
+ # かならず use_* と *_type がこんび(か?)
+ use_verps = yes
+ verps_type = qmail
+
+
+ # 配送モード ( REJECT_POST_HANDLER をやめよう )
+ # distribute_mode = forward
+ distribute_mode = forward_if_moderator_allow
+
+ # $PERMIT_POST_FROM
+ allow_post_from = reject_system_accounts
+ members_only
+ reject
+
+ # $PERMIT_COMMAND_FORM (?)
+ allow_command_from = reject_system_accounts
+ members_only
+ ignore
+
+ #
+ distribute_restrictions = reject_system_accounts
+ members_only
+ reject
+
+ command_restrictions = reject_system_accounts
+ members_only
+ reject
+
+
+ # 逆にモデレータ は use_moderator (にすると変な例?)
+ use_moderator = yes
+ moderator_type = otp
+ moderator_maps = $myhomedir/moderators
+
+ # LDAP
+ LDAP::HOST =
+ LDAP::PORT =
+
+
+
+○ フック?
+
+ 別案1
+
+ # hooks
+ hooks = $myhomedir/hooks.ph
+
+ 別案2
+
+ =head1 configurations
+
+ postfix スタイル(なんですよ、これは)
+
+ =head1 hooks
+ =cut
+
+ # 現在の LOCAL_CONFIG で別れ目になる行
+ # HOOK
+
+
+○ 多国語化
+
+ 「developpers はメッセージの他国語化は前提にしてくれればいいだ
+ けで、べつに英語の見本を書かなくてもいいですよ〜ん」
+
+ この時代、日本人が運用していてもその ML のメンバーが外国人のば
+ あいはあります。だからサポートしたいです。
+
+ また、IETF では来年あたりに、エラーメッセージなどの多国語化問
+ 題とかあるので、MLM (MTA もどき)であっても、多国語かは必要とお
+ もいます。#なにをもってえらーめっせーじかによりますけど…
+
+
+○ 設定ファイルのロード順
+
+
+ 現在の cf ですら設定してる項目が多すぎる
+ 「実はこんな項目もconfig.phで設定されちゃっているのね」はだめ
+
+ あどれす
+ POST_RESTRICTION
+ COMMAND_RESTRICTION
+ REGISTRATION_TYPE auto_confirmation (とかか?)
+
+ 以外はデフォルトのままにしたいなぁ。
+ ぼく、差分だけが一画面くらいあるだけなのが希望ですぅ。
+
+ ということは
+
+ use FML::LoadConfig;
+ my $rcf = new FML::LoadConfig;
+ $rcf->load( /usr/local/fml/lib/$VERSION/etc/default_config.cf );
+ $rcf->load( /etc/fml/$DOMAIN/default_config.cf );
+ $rcf->load( /var/spool/ml/elena/config.cf );
+
+ とかいうローディングをしないといけないような気がする
+
+ * メニューで明示的に変更すると、それだけは新たに付け加わる > config.cf
diff --git a/fml/doc/__template.ja.html b/fml/doc/__template.ja.html
new file mode 100644
index 00000000..5a8af747
--- /dev/null
+++ b/fml/doc/__template.ja.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+ ... title ...
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/architecture.gif b/fml/doc/architecture.gif
new file mode 100644
index 00000000..4f185758
--- /dev/null
+++ b/fml/doc/architecture.gif
Binary files differ
diff --git a/fml/doc/architecture.html b/fml/doc/architecture.html
new file mode 100644
index 00000000..f5e59edc
--- /dev/null
+++ b/fml/doc/architecture.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+ ... title ...
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+<CENTER>
+<IMG SRC="architecture.gif" ALIGH=CENTER>
+</CENTER>
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/components.ja.html b/fml/doc/components.ja.html
new file mode 100644
index 00000000..748e632d
--- /dev/null
+++ b/fml/doc/components.ja.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+コンポーネント
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+<PRE>
+
+ fml/{distribute,command, ... }
+ |||
+ -------- 乖離層 --------
+ |||
+ FML::BaseSystem
+ | |
+ FML::Config |
+ | | logging()
+ | | | |
+ file DBMS file syslog(3)
+</PRE>
+
+FML::BaseSystem は設定の保守とログとりをサポートする最低限の基本システ
+ムのクラスといえる。
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/dirhier.ja.html b/fml/doc/dirhier.ja.html
new file mode 100644
index 00000000..151368de
--- /dev/null
+++ b/fml/doc/dirhier.ja.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+ディレクトリ構造
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+<P> 実際にインストールされる場所は、次のような場所。
+ <PRE>
+ /etc/fml/
+ /usr/local/lib/fml/$VERSION/
+ /usr/local/libexec/fml/$VERSION/
+ /usr/share/doc/fml/$VERSION/
+ </PRE>
+
+<TABLE BORDER=4>
+ <TR>
+ <TD> ディレクトリ
+ <TD> 説明
+
+ <TR>
+ <TD> doc/
+ <TD> ドキュメント
+
+ <TR>
+ <TD> etc/
+ <TD> configurations
+
+ <TR>
+ <TD> lib/
+ <TD>
+ <A HREF="../lib/index.ja.html">
+ ベンダーごとのサブディレクトリ
+ </A>
+
+ <TR>
+ <TD> libexec/
+ <TD>
+ 実行されるプログラムの実体。
+ もっともすぐにモジュールを
+ 呼び出すので wrapper というべきだろう。
+
+</TABLE>
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/index.ja.html b/fml/doc/index.ja.html
new file mode 100644
index 00000000..160cc67c
--- /dev/null
+++ b/fml/doc/index.ja.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+fml5 documents
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+<UL>
+ <LI>
+ <A HREF="interfaces.ja.html">
+ モジュール間インターフェイス
+ </A>
+
+ <LI>
+ <A HREF="modules.ja.html">
+ モジュール's
+ </A>
+
+</UL>
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/interfaces.ja.html b/fml/doc/interfaces.ja.html
new file mode 100644
index 00000000..aad5871e
--- /dev/null
+++ b/fml/doc/interfaces.ja.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+インターフェイス仕様
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+<CENTER>
+インターフェイス仕様 (原案のメモ(注: 単なる走り書き))
+</CENTER>
+
+<P> <EM>基本的なスタイル</EM>
+<UL>
+ <LI>
+ Perl ではポリモーフィズムと実行時バインディングができることに
+ は重視すること。多重継承などに頭を使うより
+ ポリモーフィズムと実行時バインディングによる
+ コンポーネント指向ぽい方向性を模索する。
+
+ <LI>
+ Perl 5 のパッケージを使った、オブジェクトぽい書き方は
+ 変数自身が自分のパッケージをしっているので、
+ 単にパッケージ修飾(例: :: )を使わなくてもよいくらいに
+ 思う方がよい。
+
+ <LI>
+ そのために、
+ 再利用性と抽象度を高くしたインターフェイスは
+ オブジェクトぽい書きかたが良さそう。
+
+ <LI>
+ perl 5 だと必然的にオブジェクトぽくなってしまうが、
+ オブジェクト、オブジェクト、オブジェクトし過ぎないように
+ バランス感覚に注意しよう。
+
+ <LI>
+ 他人のモジュールを使う場合はともかく、
+ 自分達で書くモジュールでの
+ ”深い”継承はできるだけ避けたい。
+ 何でも深くすればよいというものではないでしょう。
+</UL>
+
+<P> <EM>メイン → モジュールの基本的な形の例:</EM>
+ libexec/ や libkern.pl にある関数は、
+ main:: に記述される部分は基本的なフローを記述している。
+ これらは基本的な枠組を示すものであるため、
+ $CurProc (C でいえば struct *curproc にあたるもの)
+ を受け渡す、構造化プログラミング的な書き方をしている。
+ <PRE>
+
+ </PRE>
+
+<P> <EM>モジュール → モジュール </EM>
+ <BR>
+ しかし、そのひとつ下の層、そしてさらにその下では、
+ 再利用性とポリモーフィズムに傾いた方がよさそうにおもえる。
+
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/menubar.ja.html b/fml/doc/menubar.ja.html
new file mode 100644
index 00000000..222b2889
--- /dev/null
+++ b/fml/doc/menubar.ja.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+fml5 homepage menubar
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+
+<P> ある程度形のあるもの
+<UL>
+ <LI>
+ <A HREF="../libexec/boot.ja.html" TARGET="right">
+ ブートの仕方
+ </A>
+</UL>
+
+<P> 構想
+<UL>
+ <LI>
+ <A HREF="objects.ja.html" TARGET="right">
+ 目的
+ </A>
+
+ <LI>
+ <A HREF="refactoring.ja.html" TARGET="right">
+ アイデアのまとめ
+ </A>
+
+ <LI>
+ <A HREF="components.ja.html" TARGET="right">
+ コンポーネント指向
+ </A>
+
+ <LI>
+ <A HREF="architecture.html" TARGET="right">
+ アーキテクチャ
+ </A>
+
+ <LI>
+ <A HREF="../curproc.ja.html" TARGET="right">
+ プロセス構造体
+ </A>
+
+ <LI>
+ <A HREF="interfaces.ja.html" TARGET="right">
+ モジュール間インターフェイス案
+ </A>
+
+ <LI>
+ モジュール例
+ <BR>
+ <A HREF="../lib/fml5/FML/index.ja.html" TARGET="right">
+ FML::* クラス
+ </A>
+ <BR>
+ <A HREF="terms.ja.html" TARGET="right">
+ FML::* 用語集
+ </A>
+
+ <LI>
+ <A HREF="dirhier.ja.html" TARGET="right">
+ ディレクトリの階層構造
+ </A>
+
+ <LI>
+ <A HREF="releng.ja.html" TARGET="right">
+ リリースエンジニアリング
+ </A>
+</UL>
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/modules.ja.html b/fml/doc/modules.ja.html
new file mode 100644
index 00000000..83819912
--- /dev/null
+++ b/fml/doc/modules.ja.html
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+ ... title ...
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+
+<P>今あるモジュールの説明
+
+<TABLE BORDER=4>
+ <TR>
+ <TD> モジュール
+ <TD> 説明
+
+
+ <TR>
+ <TD> FML::LoadConfig
+ <TD> 設定ファイルを読み込みハッシュに入れる。
+
+
+ <TR>
+ <TD> FML::File
+ <TD>
+ ログファイルに記録するインタフェイス。
+ 将来は syslog(3) へとばすことができるとなおよい。
+ まず間違いなくほとんど全てのルーティンが
+ use するべきもの。これをしないと Log() が
+ 使えないから :-)
+
+ <TR>
+ <TD> FML::Date
+ <TD>
+ いろいろな型の日付関連のフォーマッティングのため
+
+ <TR>
+ <TD> FML::String
+ <TD> 文字列操作関数へのインターフェイス
+
+</TABLE>
+
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/objects.ja.html b/fml/doc/objects.ja.html
new file mode 100644
index 00000000..873da858
--- /dev/null
+++ b/fml/doc/objects.ja.html
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+目的
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+<P> fml5 プロジェクトの目的
+
+<UL>
+ <LI> <A HREF="refactoring.ja.html">再構想 (refactoring)</A>
+ <LI> <A HREF="releng.ja.html">新リリースエンジニアリング</A>
+ <LI> 設定ファイルとメニュープログラムの負荷を少なく
+ <LI> 乖離層
+ <UL>
+ <LI> バージョンアップを簡単にできるように
+ <LI> CPAN モジュール使いまくり
+ <BR>
+ (ただし、できるだけ直接使うより、
+ 一層被せておくほうがよい)
+ <LI> 3rd party 用ディレクトリ
+ </UL>
+
+ <LI> 統一化されたメンバーリストなどへのアクセスをできるだけ抽象化する。
+ <UL>
+ <LI> ファイル
+ <LI> /etc/group
+ <LI> NIS
+ <LI> SQL
+ <LI> LDAP
+ <LI> SSRP (?)
+ </UL>
+ 実際には効率の問題もあり、
+ あらゆる抽象化は重たくなってしまう。そこで、
+ 全部は抽象化できずに SMTP ライブラリにも一部いってしまうが、
+ この二箇所におしこめること。
+
+ <LI> CUI (makefml) インターフェイスおよび CGI インターフェイス
+ <BR>
+ これは従来通りのもの。
+ <BR>
+ ただしより統合化され、
+ よりメニューなどが書きやすいものであるように
+
+ <LI> IPv4/IPv6 ready
+</UL>
+
+<!-- =================================================================== -->
+
+<CENTER>
+アーキテクチャア・イメージ
+<IMG SRC="architecture.gif" ALIGH=CENTER>
+</CENTER>
+
+</BODY>
+</HTML>
diff --git a/fml/doc/refactoring.ja.html b/fml/doc/refactoring.ja.html
new file mode 100644
index 00000000..a7ec77c4
--- /dev/null
+++ b/fml/doc/refactoring.ja.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+fml5 [ fml リファクトリング プロジェクト (Refactroing Project) ]
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+
+<CENTER>
+fml5 [ fml リファクトリング プロジェクト (Refactroing Project) ]
+</CENTER>
+
+<P> いくつかのアイデア
+
+<TABLE BORDER=4>
+ <TR>
+ <TD> status
+ <TD> <EM>項目</EM>
+ <TD> 備考
+
+ <TR>
+ <TD>
+ <TD> <EM>ライセンス</EM>
+ <BR>
+ ライセンスを Perl 準拠へ変更する
+ <TD>
+
+ <TR>
+ <TD>
+ <TD> <EM>イメージ/モティーフ</EM>
+ <BR>
+ fml4 から fml5 へは、sendmail から postfix への移行のようなイメージで
+ <BR>
+ 最低限の config.ph コンバータは用意する。
+
+ <TR>
+ <TD>
+ <TD>
+ <EM> メインプログラムの wrapper (乖離層) </EM>
+ バージョン管理やデバッグを簡単にするための乖離層
+ <PRE>
+ fml.pl --- /etc/fml/wrapper.cf ---&gt fml/$VERSION/libexec/distribute
+ </PRE>
+
+ <TR>
+ <TD>
+ <TD>
+ <EM>再利用性</EM>
+ <BR>
+ 自主開発はできるだけ避ける。
+ <BR>
+ 可能な限りあらゆる CPAN モジュールなどを使う。
+ また、利用する場合にも乖離層を設ける。
+ <PRE>
+ FML::モジュール → 乖離層 → CPAN/モジュール
+ </PRE>
+ <TD>
+ <A HREF="interfaces.ja.html">インターフェイス仕様</A>
+
+ <TR>
+ <TD>
+ <TD> <EM>設定ファイル形式</EM>
+ <UL>
+ <LI> cf と config.ph を統合化する
+ <LI> 配列を表現できる形式
+ <LI> メニュープログラムが楽できるフォーマットを
+ <LI> 原則として”設定ファイル”という名のものは
+ どれも同じフォーマットとする。
+ </UL>
+ <TD>
+
+ <TR>
+ <TD>
+ <TD>
+ <EM> 変数名ルールの統一 </EM>
+ <UL>
+ <LI> USE_機能
+ <LI> 機能_TYPE
+ <LI> 機能_ATTRIBUTES
+ </UL>
+ <BR>
+ ”USE_ほえ”および”ほえ_TYPE”形式か?
+ また、NOT_USE などは禁止する( default_config に書くこと)。
+ <BR>
+ attribute にあたるものが
+ 群れになってしまうのはしょうがない。しかし、
+ 配列表現が可能なため、現在の ifdef の群れで表現する
+ ようなことが少なくなるはず。
+
+ <TR>
+ <TD>
+ <TD>
+ <EM> 関数名ルールの統一 </EM>
+ <BR>
+ main:: スペースに出てくるものは従来通り X11 風準拠に。
+ <BR>
+ メソッドは他のモジュールにあるようなそれっぽい小文字の名前をつける。
+ <BR>
+ lisp 的要素を廃止する。
+ <BR>
+ 参考文献 Perl Cookbook として、
+ そこにあるようなシンタックス風を推奨する?例:
+ <PRE>
+ MemberP() -> IsMember()
+ </PRE>
+
+
+ <TR>
+ <TD>
+ <TD>
+ <EM> queue manager </EM>
+ <BR>
+ 再送処理のため (e.g. smtpfeed )
+
+ <TR>
+ <TD>
+ <TD>
+ <EM> tools </EM>
+ <BR>
+ BSD make を使わない。
+ <BR>
+ C 言語ではないので、autoconf は特には必要ないと思う。
+ しかしながら configure という名前のスクリプトを(フェイクでも)
+ 用意することはよいことかもしれない。
+ そのスクリプトは例えば
+ IPv6 ready か否かを決めるために使われるだろう。
+
+
+</TABLE>
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/releng.ja.html b/fml/doc/releng.ja.html
new file mode 100644
index 00000000..e011eae7
--- /dev/null
+++ b/fml/doc/releng.ja.html
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+ ... title ...
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+<P>
+ アーキテクトでも、デベロッパーに偏ってもいけない。
+ 抽象化に萌過ぎても、オブジェクト指向分析に燃え過ぎてもいけない。
+ 中庸であり、一カ月単位でフィードバックしながら
+ プロジェクトの計画とコードレビューを行なうこと。
+
+
+<P> 月単位でのリリースエンジニアリングの原案
+
+<TABLE>
+ <TR>
+ <TD> 最初の 4〜5日
+ <TD> 計画を練り直す。
+ <BR>
+ リリースエンジニアリングプロセス中の
+ 20 %程度はこの計画に費やすこと
+
+ <TR>
+ <TD> 2〜3 週間
+ <TD> コードを書く
+
+ <TR>
+ <TD> 最終週
+ <TD> ドキュメントを見直す、およびコードレビュー
+
+ <TR>
+ <TD> 月の切れ目
+ <TD> まぁまぁ大丈夫ぽい snapshot を出してみる。
+ alpha-0,
+ alpha-1,
+ alpha-2, ...
+
+</TABLE>
+
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>
diff --git a/fml/doc/terms.ja.html b/fml/doc/terms.ja.html
new file mode 100644
index 00000000..3e5dbb2c
--- /dev/null
+++ b/fml/doc/terms.ja.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>
+関数名および変数名に関連した用語のまとめ
+</TITLE>
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+</HEAD>
+
+<BODY BGCOLOR="#E6E6FA">
+<!-- ================== body =========================================== -->
+
+<CENTER>
+関数名および変数名に関連した用語のまとめ
+</CENTER>
+
+<TABLE BORDER=4>
+ <TR>
+ <TD> 用語/単語の省略形
+ <TD> 説明
+
+ <TR>
+ <TD> STR
+ <TD> 文字列 ( string ) の略
+
+ <TR>
+ <TD> 日本語コードの略称
+ <TD> JIS SJIS EUC などおなじみのもの…
+
+ <TR>
+ <TD> 2
+ <TD>
+ to と発音が一緒のため省略形としてよく使う。
+ 類似品として 4 ( for の意味)もある
+ <BR>
+ 例: STR2EUC (STRing to EUC の略)
+ <BR>
+ <PRE>
+ use String qw(STR2EUC);
+ $euc_string = &STR2EUC($string);
+ </PRE>
+
+ <TR>
+ <TD> 4
+ <TD> for と発音が同じために用いる。
+ <BR>
+ 例: まだなし
+
+ <TR>
+ <TD> fh
+ <TD> ファイルハンドラ( file handler )
+
+ <TR>
+ <TD> dh
+ <TD> ディレクトリハンドラ( directory handler )
+
+ <TR>
+ <TD> _なになに
+ <TD> 慣習的にパッケージ、クラス、オブジェクト内部で使う
+ 変数や関数名に _ ではじまるキーワードを使う。
+
+ <TR>
+ <TD> CurProc もしくは curproc
+ <TD> ”current process 構造体”の略
+
+
+</TABLE>
+
+<!-- =================================================================== -->
+</BODY>
+</HTML>