diff options
| author | fukachan <fukachan> | 2001-03-27 15:53:28 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2001-03-27 15:53:28 +0000 |
| commit | 9e5fd843dc6d4ca04ddc41889bed93d1017c809f (patch) | |
| tree | d61ca2a3adb6692ddbc26df846157f5efb54dbc0 | |
| parent | c671b63cd92e62d1a6aedc3add7843e67868fc8b (diff) | |
| download | fml8-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.txt | 110 | ||||
| -rwxr-xr-x | regress/scheduler/cgi-test.sh | 6 |
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 |
