このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

EasyBBS DX & SR を高速化する osax

発言者:田中求之
( Date Sunday, January 23, 2000 20:33:34 )


上記の目的で作成した MT BBS List osax を登録公開しました。

MT BBS List は、EasyBBS などの HTML ページのリスト(index)作成を高速
化するための osax です。テンプレート中のタグがファイル情報に置換された
うえで連結された文字列を返します。

書式:MT BBS List <list of Files> template <テンプレート>

ダイレクトパラメータにはファイルのリストを渡します。ファイルを示すデー
タの型はファイル指定型、エイリアス型、フルパスのいずれも受け付けます。

template パラメータには、各ファイルの情報を表記するためのテンプレート
文を渡します。

たとえば、以下のようなスクリプトを実行したとします。

set tgFldr to "Macintosh HD:Server:BBS:TestFldr:"
set myTemp to "<LI><A HREF=\"TestFldr/<@F>\">" & return ツ
  & "<@T></A> <TT>[<@C>] (<@S>)</TT><BR>" & return ツ
  & "(<TT>Date: <@D></TT>)<P>" & return & return

set myList to MT List Files tgFldr of type {"TEXT"} return as "fss "
set myPage to MT BBS List myList template myTemp

すると、myPage には

<LI><A HREF="TestFldr/000105081141.html">
Rumora SQL Plugin for FMP/AS</A> <TT>[04] (3.8K)</TT><BR>
(<TT>Date: 01/18/2000 14:02:43</TT>)<P>

<LI><A HREF="TestFldr/000111180941.html">
comドメインのホスト情報の変更について</A> <TT>[05] (3.5K)</TT><BR>
(<TT>Date: 01/21/2000 06:56:07</TT>)<P>

<LI><A HREF="TestFldr/000111210355.html">
メールヘッダのMessage-IDについての質問</A> <TT>[13] (11.0K)</TT><BR>
(<TT>Date: 01/18/2000 16:40:11</TT>)<P>

<LI><A HREF="TestFldr/000113130450.html">
iMacは静電気に弱い2</A> <TT>[25] (11.0K)</TT><BR>
(<TT>Date: 01/21/2000 07:12:36</TT>)<P>

というようなデータが返ります。

テンプレート(myTemp)と見比べてもらえば分かるのですが、mylist に含ま
れていた各ファイルについて、テンプレート中のタグをファイル情報に置き換
えたものが連結されています。

テンプレートに埋め込める記号が以下の通り。いずれもアルファベットは大文
字でなければなりません。

<@F> = ファイル名に置換されます

<@T> = ページのタイトル(<TITLE> タグで挟まれた文字列)に置換されます。
    タイトルが見つからない場合にはファイル名に置換します。

<@C> = ページ中のコメントの数(<A NAME タグの数)に置換されます。
    2桁で表記します

<@S> = ページのサイズ(ファイルのデータフォークのサイズ)に置換されます。
    K または M で、小数点1桁を含めた表記になります。

<@D> = ページ(ファイル)の最終更新日に置換されます。
    表記は、コントロールパネルの「日付&時刻」の設定(短い表記の設定)
    にしたがいます。


同じタグを繰り返して使ってもかまいません。また、上記のすべてのタグを使
用しなくても構いません(どのタグを使用しているかをあらかじめチェックし
ますので、使用している種類が少ないと、その分、高速化します)。


基本的に、EasyBBS DX, SR を高速化することを目的に作成しました。間もな
くリリースする DX III 及び SR III は、これを用いたものになります。

また、Tanaka's osax 1.x との併用が可能になっていますので、すでに DX
II, SR II で運用されている場合も、スクリプトを少し変更することで、この
osax による処理の高速化が図れるはずです(基本的に、dirLister を呼び出
している部分に with asFSS を追加することで、ファイル名のリストではなく、
ファイル指定のリストをとるように変更します)。

お試しください。

→  MT_BBS_List1.0.sit

田中求之 さんからのコメント
( Sunday, January 23, 2000 23:33:53 )

>すでに DXII, SR II で運用されている場合も、スクリプトを少し変更する
>ことで、この osax による処理の高速化が図れるはずです

DX II のスクリプトを MT BBS List を利用するように変更したものを
登録しておきました(MT BBS List を活用する部分以外の変更はあり
ません)。

SR II の方は明日にでも。

→  DXIIx_script.sit

田中求之 さんからのコメント
( Monday, January 24, 2000 00:39:02 )

あ、当然のことながら、EasyBBS 以外の、普通にファイルの Index を
作る処理などにも使えます。EasyBBS 固有の処理といえばコメント数
(<A NAME> タグの数)を数えることぐらいで、逆に汎用も考えて
ファイルサイズの情報も埋め込めるようにしてあります。

100,000 回のループでも平気だったから、多分、深刻なバグは残って
ないと思います。

田中求之 さんからのコメント
( Monday, January 24, 2000 23:10:35 )

テンプレートの先頭にタグがあると、それが処理されないというバグがあり
ましたので、それを修正した 1.01 を出します。

→  MT_BBS_List1.01.sit

田中求之 さんからのコメント
( Tuesday, January 25, 2000 00:36:01 )

SR II を、MT BBS List との併用で高速化した SR IIx のスクリプトです
(スクリプトのみ)

→  SRIIx_script.sit

田中求之 さんからのコメント
( Wednesday, January 26, 2000 14:32:01 )

さらに機能を追加したもの(今夜にでも登録しますが)を、この会議室の
運営の CGI にも投入しました。実戦配置によるテストですね。

問題がなければいいけど…

田中求之 さんからのコメント
( Wednesday, January 26, 2000 21:51:03 )

…特に問題はないみたいですね。

それと、やはり処理速度はあがってますね(普通のアクセスはキャッシュなど
を使ってますから気がつきにくいでしょうが、mread を使うと断然違うのが
わかると思います)。

以前、処理速度をあげるために、ページの情報をリソースで管理する仕組み
に切り替えた(この方法は EX2 で取り入れている)のですが、それよりも
こちらの方が、やっぱ速いなぁ。EX 2 も作り直しかなぁ…

田中求之 さんからのコメント
( Thursday, January 27, 2000 14:14:20 )

EasyBBS 固有の処理を追加した 1.02 です。

テンプレートの中の <@N> というタグを <A NAME> タグで指定された
内容に変換するのですが、EasyBBS の mread で行う処理のみに対応
させています。つまり、<A NAME> タグはすべてタイムスタンプ形式
になっていること、そしてそれが発言/コメント書き込み時点の日時
を記したものであることを前提とします。

そして、base tag というパラメータにタイムスタンプを渡しておくと、
このパラメータで指定された日時より前に作成されたファイル(ページ)
の場合は、パラメータの日時より新しい発言のタグに <@N> を置き換えます。

たぶん、この説明では???だと思いますが、mread によってこの会議室の
未読発言をチェックするようにしている方は、mread で表示される発言一覧
のリストのリンク先が、前回のアクセス以後に追加されたコメントの先頭に
なっているのに気がつかれていると思います。あの処理を行うためのもの
です(汎用性はないわけではないけど、少ない)。

→  MT_BBS_List1.02.sit

田中求之 さんからのコメント
( Thursday, January 27, 2000 14:15:29 )

で、この 1.02 を使って、さらに高速化を図った SR II の改良版です。
(DX には mread がないので関係ない)

→  SRIIxx_script.sit