From 4377641665acbf1a4a83883241afe392e88ec112 Mon Sep 17 00:00:00 2001 From: fukachan Date: Fri, 19 Jan 2001 12:54:13 +0000 Subject: Initial revision --- fml/doc/00_IDEA | 264 ++++++++++++++++++++++++++++++++++++++++++++ fml/doc/__template.ja.html | 18 +++ fml/doc/architecture.gif | Bin 0 -> 9906 bytes fml/doc/architecture.html | 20 ++++ fml/doc/components.ja.html | 32 ++++++ fml/doc/dirhier.ja.html | 53 +++++++++ fml/doc/index.ja.html | 29 +++++ fml/doc/interfaces.ja.html | 67 +++++++++++ fml/doc/menubar.ja.html | 79 +++++++++++++ fml/doc/modules.ja.html | 51 +++++++++ fml/doc/objects.ja.html | 62 +++++++++++ fml/doc/refactoring.ja.html | 137 +++++++++++++++++++++++ fml/doc/releng.ja.html | 51 +++++++++ fml/doc/terms.ja.html | 72 ++++++++++++ 14 files changed, 935 insertions(+) create mode 100644 fml/doc/00_IDEA create mode 100644 fml/doc/__template.ja.html create mode 100644 fml/doc/architecture.gif create mode 100644 fml/doc/architecture.html create mode 100644 fml/doc/components.ja.html create mode 100644 fml/doc/dirhier.ja.html create mode 100644 fml/doc/index.ja.html create mode 100644 fml/doc/interfaces.ja.html create mode 100644 fml/doc/menubar.ja.html create mode 100644 fml/doc/modules.ja.html create mode 100644 fml/doc/objects.ja.html create mode 100644 fml/doc/refactoring.ja.html create mode 100644 fml/doc/releng.ja.html create mode 100644 fml/doc/terms.ja.html (limited to 'fml/doc') 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 @@ + + + + + ... title ... + + + + + + + + + + + + diff --git a/fml/doc/architecture.gif b/fml/doc/architecture.gif new file mode 100644 index 00000000..4f185758 Binary files /dev/null and b/fml/doc/architecture.gif 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 @@ + + + + + ... title ... + + + + + + + +
+ +
+ + + + 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 @@ + + + + +コンポーネント + + + + + + +
+
+       fml/{distribute,command, ... }
+            |||
+  -------- 乖離層 --------
+            |||
+       FML::BaseSystem
+       |            |  
+   FML::Config      |
+    |     |      logging() 
+    |     |       |     |
+  file   DBMS   file  syslog(3)
+
+ +FML::BaseSystem は設定の保守とログとりをサポートする最低限の基本システ +ムのクラスといえる。 + + + + 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 @@ + + + + +ディレクトリ構造 + + + + + + + +

実際にインストールされる場所は、次のような場所。 +

+	/etc/fml/
+	/usr/local/lib/fml/$VERSION/
+	/usr/local/libexec/fml/$VERSION/
+	/usr/share/doc/fml/$VERSION/
+	
+ + + + + + + +
ディレクトリ + 説明 + +
doc/ + ドキュメント + +
etc/ + configurations + +
lib/ + + + ベンダーごとのサブディレクトリ + + +
libexec/ + + 実行されるプログラムの実体。 + もっともすぐにモジュールを + 呼び出すので wrapper というべきだろう。 + +
+ + + + 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 @@ + + + + +fml5 documents + + + + + + + + + + + + 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 @@ + + + + +インターフェイス仕様 + + + + + + + +
+インターフェイス仕様 (原案のメモ(注: 単なる走り書き)) +
+ +

基本的なスタイル +

+ +

メイン → モジュールの基本的な形の例: + libexec/ や libkern.pl にある関数は、 + main:: に記述される部分は基本的なフローを記述している。 + これらは基本的な枠組を示すものであるため、 + $CurProc (C でいえば struct *curproc にあたるもの) + を受け渡す、構造化プログラミング的な書き方をしている。 +

+			
+	
+ +

モジュール → モジュール +
+ しかし、そのひとつ下の層、そしてさらにその下では、 + 再利用性とポリモーフィズムに傾いた方がよさそうにおもえる。 + + + + + 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 @@ + + + + +fml5 homepage menubar + + + + + + + + +

ある程度形のあるもの +

+ +

構想 +

+ + + + 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 @@ + + + + + ... title ... + + + + + + + + +

今あるモジュールの説明 + + + + + + + +
モジュール + 説明 + + +
FML::LoadConfig + 設定ファイルを読み込みハッシュに入れる。 + + +
FML::File + + ログファイルに記録するインタフェイス。 + 将来は syslog(3) へとばすことができるとなおよい。 + まず間違いなくほとんど全てのルーティンが + use するべきもの。これをしないと Log() が + 使えないから :-) + +
FML::Date + + いろいろな型の日付関連のフォーマッティングのため + +
FML::String + 文字列操作関数へのインターフェイス + +
+ + + + + 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 @@ + + + + +目的 + + + + + + + +

fml5 プロジェクトの目的 + +

+ + + +
+アーキテクチャア・イメージ + +
+ + + 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 @@ + + + + +fml5 [ fml リファクトリング プロジェクト (Refactroing Project) ] + + + + + + +
+fml5 [ fml リファクトリング プロジェクト (Refactroing Project) ] +
+ +

いくつかのアイデア + + + + + + + + + + + + +
status + 項目 + 備考 + +
+ ライセンス +
+ ライセンスを Perl 準拠へ変更する +
+ +
+ イメージ/モティーフ +
+ fml4 から fml5 へは、sendmail から postfix への移行のようなイメージで +
+ 最低限の config.ph コンバータは用意する。 + +
+ + メインプログラムの wrapper (乖離層) + バージョン管理やデバッグを簡単にするための乖離層 +
+	fml.pl --- /etc/fml/wrapper.cf  ---> fml/$VERSION/libexec/distribute	
+	
+ +
+ + 再利用性 +
+ 自主開発はできるだけ避ける。 +
+ 可能な限りあらゆる CPAN モジュールなどを使う。 + また、利用する場合にも乖離層を設ける。 +
+	FML::モジュール →  乖離層 → CPAN/モジュール
+	
+
+ インターフェイス仕様 + +
+ 設定ファイル形式 +
    +
  • cf と config.ph を統合化する +
  • 配列を表現できる形式 +
  • メニュープログラムが楽できるフォーマットを +
  • 原則として”設定ファイル”という名のものは + どれも同じフォーマットとする。 +
+
+ +
+ + 変数名ルールの統一 +
    +
  • USE_機能 +
  • 機能_TYPE +
  • 機能_ATTRIBUTES +
+
+ ”USE_ほえ”および”ほえ_TYPE”形式か? + また、NOT_USE などは禁止する( default_config に書くこと)。 +
+ attribute にあたるものが + 群れになってしまうのはしょうがない。しかし、 + 配列表現が可能なため、現在の ifdef の群れで表現する + ようなことが少なくなるはず。 + +
+ + 関数名ルールの統一 +
+ main:: スペースに出てくるものは従来通り X11 風準拠に。 +
+ メソッドは他のモジュールにあるようなそれっぽい小文字の名前をつける。 +
+ lisp 的要素を廃止する。 +
+ 参考文献 Perl Cookbook として、 + そこにあるようなシンタックス風を推奨する?例: +
 
+	MemberP() -> IsMember()
+	
+ + +
+ + queue manager +
+ 再送処理のため (e.g. smtpfeed ) + +
+ + tools +
+ BSD make を使わない。 +
+ C 言語ではないので、autoconf は特には必要ないと思う。 + しかしながら configure という名前のスクリプトを(フェイクでも) + 用意することはよいことかもしれない。 + そのスクリプトは例えば + IPv6 ready か否かを決めるために使われるだろう。 + + +
+ + + + 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 @@ + + + + + ... title ... + + + + + + + +

+ アーキテクトでも、デベロッパーに偏ってもいけない。 + 抽象化に萌過ぎても、オブジェクト指向分析に燃え過ぎてもいけない。 + 中庸であり、一カ月単位でフィードバックしながら + プロジェクトの計画とコードレビューを行なうこと。 + + +

月単位でのリリースエンジニアリングの原案 + + + + + + +
最初の 4〜5日 + 計画を練り直す。 +
+ リリースエンジニアリングプロセス中の + 20 %程度はこの計画に費やすこと + +
2〜3 週間 + コードを書く + +
最終週 + ドキュメントを見直す、およびコードレビュー + +
月の切れ目 + まぁまぁ大丈夫ぽい snapshot を出してみる。 + alpha-0, + alpha-1, + alpha-2, ... + +
+ + + + + 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 @@ + + + + +関数名および変数名に関連した用語のまとめ + + + + + + + +

+関数名および変数名に関連した用語のまとめ +
+ + + + + + + + + + + +
用語/単語の省略形 + 説明 + +
STR + 文字列 ( string ) の略 + +
日本語コードの略称 + JIS SJIS EUC などおなじみのもの… + +
2 + + to と発音が一緒のため省略形としてよく使う。 + 類似品として 4 ( for の意味)もある +
+ 例: STR2EUC (STRing to EUC の略) +
+
+		use String qw(STR2EUC);
+		$euc_string = &STR2EUC($string);
+		
+ +
4 + for と発音が同じために用いる。 +
+ 例: まだなし + +
fh + ファイルハンドラ( file handler ) + +
dh + ディレクトリハンドラ( directory handler ) + +
_なになに + 慣習的にパッケージ、クラス、オブジェクト内部で使う + 変数や関数名に _ ではじまるキーワードを使う。 + +
CurProc もしくは curproc + ”current process 構造体”の略 + + +
+ + + + -- cgit v1.2.1