summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-03-27 15:53:28 +0000
committerfukachan <fukachan>2001-03-27 15:53:28 +0000
commit9e5fd843dc6d4ca04ddc41889bed93d1017c809f (patch)
treed61ca2a3adb6692ddbc26df846157f5efb54dbc0
parentc671b63cd92e62d1a6aedc3add7843e67868fc8b (diff)
downloadfml8-9e5fd843dc6d4ca04ddc41889bed93d1017c809f.tar.gz
fml8-9e5fd843dc6d4ca04ddc41889bed93d1017c809f.tar.bz2
fml8-9e5fd843dc6d4ca04ddc41889bed93d1017c809f.zip
demo how to make a tiny scheduler using the current FML::snap-20010327
-rw-r--r--regress/scheduler/HOW_TO_MAKE.ja.txt110
-rwxr-xr-xregress/scheduler/cgi-test.sh6
2 files changed, 116 insertions, 0 deletions
diff --git a/regress/scheduler/HOW_TO_MAKE.ja.txt b/regress/scheduler/HOW_TO_MAKE.ja.txt
new file mode 100644
index 00000000..49b97f1c
--- /dev/null
+++ b/regress/scheduler/HOW_TO_MAKE.ja.txt
@@ -0,0 +1,110 @@
+ 例題: 新しいプログラムを付け加えるには?
+
+0. 単純なスケジュール表示ソフトを例にとる。プログラム名は fmlsch
+ その CGI 版は fmlsch.cgi
+
+1. INSTALL.sh に fmlsch を付け加える。
+
+ a) /usr/local/bin/fmlsch をインストールする。
+ b) /usr/local/libexec/fml で loader と fmlsch を ln -s する
+
+ fml/bin/fmlsch を /usr/local/bin/fmlsch にインストールする。
+ 単に /usr/local/libexec/fml
+
+ 注: /usr/local/bin にインストールしないプログラムでは
+ a) の過程は不必要
+
+ --- INSTALL.sh 2001/03/24 13:57:57 1.23
+ +++ INSTALL.sh 2001/03/27 14:45:56
+ @@ -83,7 +83,7 @@
+ cp -pr fml/libexec/* $libexec_dir/$fml_version/
+
+ echo update /usr/local/bin/
+ -for prog in fmldoc fmlticket fmlconf makefml
+ +for prog in fmldoc fmlticket fmlconf makefml fmlsch
+ do
+ echo update /usr/local/bin/$prog
+ cp fml/bin/$prog /usr/local/bin/$prog.new
+ @@ -94,6 +94,7 @@
+ PROGRAMS="$PROGRAMS fmlserv mead fmlconf fmldoc"
+ PROGRAMS="$PROGRAMS fmlticket fmlticket.cgi"
+ PROGRAMS="$PROGRAMS makefml makefml.cgi"
+ +PROGRAMS="$PROGRAMS fmlsch fmlsch.cgi"
+
+
+2. fml/lib/TinyScheduler.pm を書く。
+ 必要なライブラリがあれば適宜輸入する。今回は CPAN から
+
+ HTML-CalendarMonthSimple-1.02.tar.gz
+
+ を輸入してみた。Date-Calc も必要なので適宜インストールすること。
+
+
+3. /usr/local/bin/fmlsch の組み込み。
+
+ a) プログラムの実体は fml/lib/FML/Process/Scheduler.pm
+
+ b) ローダーから起動するために fml/lib/FML/Process/Switch.pm
+ へのルールの追加
+
+この二箇所を変更/用意する。
+
+3.1 FML::Process::Scheduler を作る
+
+同じディレクトリのプログラムを適当にぱくって hack する :-)
+
+なお、FML::Process::Scheduler の場合は
+FML::Process::Scheduler::run() だけ用意すればおしまい。
+未定義の関数は FML::Process::Kernel のメソッドが使われるので万事オーライ
+
+
+3.2 FML::Process::Switch にルールを追加する
+
+ getopt() のオプション
+ ML 名は必須か?
+ 呼び出すモジュール名
+
+ --- Switch.pm 2001/03/25 04:09:00 1.14
+ +++ Switch.pm 2001/03/27 15:27:00
+ @@ -323,6 +323,9 @@
+ elsif ($myname eq 'makefml.cgi') {
+ return qw(debug!);
+ }
+ + elsif ($myname eq 'fmlsch') {
+ + return qw(debug!);
+ + }
+ else {
+ croak "options for $myname are not defined.\n";
+ }
+ @@ -340,6 +343,9 @@
+ if ($myname eq 'fmldoc') {
+ return 0;
+ }
+ + elsif ($myname eq 'fmlsch') {
+ + return 0;
+ + }
+ elsif ($myname eq 'makefml') {
+ return 0;
+ }
+ @@ -390,6 +396,12 @@
+ }
+ elsif ($name eq 'makefml.cgi') {
+ $pkg = 'FML::CGI::Configure';
+ + }
+ + elsif ($name eq 'fmlsch') {
+ + $pkg = 'FML::Process::Scheduler';
+ }
+ else {
+ return '';
+
+
+4. fmlsch.cgi の場合
+
+
+モジュールが FML::CGI:: 以下になること以外は fmlsch の場合と同様です。
+FML::CGI::Scheduler は FML::Process::CGI のサブクラスです。
+
+未定義のものについては FML::Process::CGI や FML::Process::Kernel がよ
+きにはからいます。また、CGI.pm は FML::Process::CGI が使い、HTTP
+header を生成しています。あくまでも最低限の処理なので
+FML::CGI:: のモジュールで適宜 HTML の出力を補佐してあげます。
diff --git a/regress/scheduler/cgi-test.sh b/regress/scheduler/cgi-test.sh
new file mode 100755
index 00000000..d6a8b9f6
--- /dev/null
+++ b/regress/scheduler/cgi-test.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# $Id$
+#
+
+echo 'user=fukachan'|time /usr/local/libexec/fml/fmlsch.cgi