ホームHTMLに役立つヒントADSLでMACサーバ・実験室AS Tree BBSデータ構造の考察 > AS Tree BBSのインストール

AS Tree BBSのインストール

 AS Tree BBSはMACサーバ上で動く(旧OS上の話。OS Xでは動きません)掲示板システムです。

 軽い動作の掲示板がほしくて、疑似ツリー表示機能を持った掲示板を作ってみました。ま、結果からいうと失敗でしたが<(_ _)> 非力なマシンにはつらい、重いCGIになってしまいました。

 これだけ動作が重いと、AppleScriptで動かすメリットがないです。このスクリプトがフツーのスピードで動くほどマシンパワーがあるなら、MacPerlもちゃんとしたスピードで動くはずです。perlならもっと高機能な掲示板があります。MACperlがフツーのスピードで動くマシンならそちらを使った方がいいです。「存在意義がない」という恐ろしいスクリプトです(^^;


AS Tree BBSの設計][データ構造の考察][インストール

■■ 目次 ■■


●特徴 ▲ページトップ

・特徴

・AppleScript+Tanaka's OSAXで構成されています。web共有、QPQでテストしています。

・疑似ツリー表示をサポート。ただし、あくまでも疑似。発言ファイルをAブック(ツリー表示部)、Bブロック(本文)、Cブロック(発言順表示部)にわけて保存します。これらを状況に応じて組み合わせて表示させています。詳しくは[AS Tree BBSの設計][データ構造の考察]を見てください。

・一応検索機能もサポート。Tanaka's OSAXの機能を利用していますが、ファイル数が多くなると遅くなりますのでご注意。別スクリプトで検索させた方が無難かも。

・自動リンク機能もサポート。ただし、[http://〜]の間にしかリンクを張りません。ftpやhttpsなどにはリンクできません。

・管理機能をサポート。

・一応メール送信機能もサポート。

・いけないところ

・表示に必ずcgiをくぐらせるため、サーバ負荷が高い。イコール、動作が重い。

●動作条件とダウンロード ▲ページトップ

 web共有、QPQ(Quid Pro Quo)1.02でテストしています。たいていのwebサーバソフトで動くと思いますが、よく判りません<(_ _)>
 また、QPQ1.02ではformの受け取りにときどき失敗するらしいです。検索機能などがうまく動かず、掲示板一覧表示になってしまった場合はformの受け取りに失敗しているためのようです。web共有では正常に動作します。

 AppleScriptはどのバージョンでも動くと思われます。検証したのはJ3-1.1(OS 7.6)、J1-1.4(OS 9.04)、J1-1.6(OS 9.1)という環境です。いずれでもコンパイル・動作可能でした。

 動作には次項のTanaka's OSAXが必要です。別途ダウンロードしてインストールしてください。

ダウンロード:as_tree_bbs06b5.sit(この説明書は含まれていません)
       ※ver0.5x以前のデータは使えなくなりました。データコンバータを用意しました。
       ※ver0.4x以前のデータは使えなくなりました。データコンバータを用意しました。

●インストール 〜OSAXのインストール ▲ページトップ

 このシステムには、Tanaka's osax 2.0.1(作者:田中求之さん)が必要です。これ以前のバージョンについては試していませんので動作するかわかりません。作者の田中求之さんに感謝いたします。

配布場所:http://mtlab.ecn.fpu.ac.jp/tanaka_osax.html

インストール:AppleScript1.3より前の場合
 「システムフォルダ」→「拡張機能」→「スクリプティング機能追加」の中にTanaka's OSAXを入れます。

インストール:AppleScript1.3以降の場合
 「システムフォルダ」→「スクリプティング機能追加」の中にTanaka's OSAXを入れます。

 どちらの場合も再起動の必要はありません。

●インストール 〜会議室の作成 ▲ページトップ

 まずは構造と仕組みを理解してください。これがわからないと次のコンパイルで、変数の設定が適切にできません。

as_tree_bbs --CGIを置くフォルダ
 │
 ├index.html --フレームセット用htmlです
 ├main.html --下部フレームに表示される初期画面
 │
 ├as_tree_bbs.cgi --掲示板CGIです
 │
 ├BBS_header --会議室一覧のヘッダ
 ├BBS_footer --会議室一覧のフッタ
 ├post_new --新規発言ページ
 ├post_comm --コメント発言ページ
 │
 ├admin.cgi --管理用CGIです
 ├adminfol --管理用画面の入ったフォルダ
 │
 ├tmp --テンプレートの入ったフォルダ
 │
 ├room_1 --会議室フォルダ
 │ ├ROOM_header --会議室のヘッダ
 │ ├ROOM_footer --会議室のフッタ
 │ ├lastnum --最新発言番号保存ファイル
 │ ├file.db --ツリー表示データベースファイル
 │ ├_a --Aブロック(ツリータイトル部)フォルダ
 │ ├_b --Bブロック(本文部)フォルダ
 │ └_c --Cブロック(日付順タイトル部)フォルダ
 │ 
 ├room_2 --会議室フォルダ
 │ ├ROOM_header --会議室のヘッダ
 │ ├ROOM_footer --会議室のフッタ
 │ ├lastnum --最新発言番号保存ファイル
 │ ├file.db --ツリー表示データベースファイル
 │ ├_a --Aブロック(ツリータイトル部)フォルダ
 │ ├_b --Bブロック(本文部)フォルダ
 │ └_c --Cブロック(日付順タイトル部)フォルダ
 │ 

 全体の構造は左に示したようになります。

●CGIを置くフォルダの中には次のものが必要です。

  • index.html(フレームにしないなら不要)
  • main.html(フレームにしないなら不要)
  • as_tree_bbs.cgi
  • BBS_header
  • BBS_footer
  • post_new
  • post_comm
  • 会議室フォルダ(room_1など)
  • admin.cgi
  • adminfol
  • tmp

●各会議室フォルダに中には次のものが必要です。

  • ROOM_header
  • ROOM_footer
  • lastnum
  • file.db
  • _a
  • _b
  • _c

●CGIを置くフォルダの中に置くもの(このフォルダの名前は変更してかまいません)

○index.html、main.html フレーム表示する際のフレームセットと下部フレームに表示される初期画面です。上部フレームにはcgiから出力されます。フレーム表示を使わないなら不要です。

○BBS_header フツーのHTML文で構成されています。書き換えて使ってください。

○BBS_footer フツーのHTML文で構成されています。書き換えて使ってください。

○post_new 新規発言画面表示用ファイル。HTML文で構成されていますが、中に特殊タグが入れてあります。

○post_comm コメント発言画面表示用ファイル。HTML文で構成されていますが、中に特殊タグが入れてあります。

特殊タグ 意味
<@cgi_name> cgiの名前が入ります。
<@room_dir> room_1など会議室フォルダの名前が入ります。
<@bbsTitle> ROOM_headerファイルの<title>タグで挟まれた部分が挿入されます。
<@nameP> Cookieから取り出した発言者名が入ります。
<@pMail> Cookieから取り出した発言者メールアドレスが入ります。
<@targetTitle> コメント発言の場合、コメント元のタイトルが入ります。
<@filename> コメント先のファイル名が入ります。
<@comm_num> コメント先の発言番号が入ります。
<@frameM> ターゲット指定です。プロパティmainFに変換されます。
<@frameT> ターゲット指定です。プロパティtreeFに変換されます。

○admin.cgi 後述のように、必ずcgiの名前と中のパスワードを変更して使ってください。これを怠ると他人に会議室を作り変えられ放題になります。

○adminfol 管理用cgiが使うための画面表示用ファイルが入っています。

○tmp 会議室のテンプレートが入っています。管理画面で「新規会議室の作成」を選ぶと、この中のヘッダとフッタがコピーされます。

○会議室フォルダ(room_1など) 次の説明にしたがって作成します。

●各会議室フォルダの名前

 会議室はeasyBBSシリーズと同様、CGIと同じフォルダの中に「room_番号」という名前のフォルダを作ります。先頭に「R_」を付けて「R_room_番号」とするとリードオンリーとなります。過去ログにしたいときには、先頭に「R_」を付ければよいわけです。

 実は必ずしも番号でなくてもいいんですが、番号にした方が管理がしやすいでしょう。

 なお、リードオンリー会議室は会議室一覧の最後に表示されます。

 また、例えば「room_1」「room_2」「room_10」とすると、「room_1」「room_10」「room_2」の順番に並んでしまいます。これを防ぐには、「room_01」「room_02」「room_10」とすると良いでしょう。

 過去ログ化することを考えて、「room_10」「room_20」のようにする手もあります。「room_10」が過去ログになったら「room_11」「room_12」と新しい会議室を作っていくわけです。

●各会議室フォルダの中に置くもの

○ROOM_header この会議室のヘッダです。フツーのHTML文で書かれています。書き換えて使ってください。

○ROOM_footer この会議室のフッタです。フツーのHTML文で書かれています。書き換えて使ってください。

○lastnum この会議室の最新発言番号を納めておくファイルです。最初は中に「0」とだけ書いておいてください。改行があってはいけません。必ず数字だけです。

○file.db この会議室のツリー表示用データベースファイルです。最初は空っぽにしておきます。

○_a Aブロック(コメントツリー部分)を入れるフォルダです。最初は空です。

○_b Bブロック(本文部分)を入れるフォルダです。最初は空です。

○_c Aブロック(日付順タイトル部分)を入れるフォルダです。最初は空です。

 準備ができたら次に進みます。

●インストール 〜設定 ▲ページトップ

●コンパイルの前に「as_tree_bbs.cgi.txt」を開いて変数を設定します。以下の青い部分を好みによって書き換えます。

property cgi_name : "easyBBS_tr.cgi" --このcgiの名前
property logFile : "logFile" --ログファイル名。空だとログ出力しない。
property noIPaddress : {} --拒否するIP。例{"192.168.0.1","127.0.0.1"}
property BBS_header : "BBS_header" --システムのヘッダファイル名
property BBS_footer : "BBS_footer" --システムのフッタファイル名
property ROOM_header : "ROOM_header" --会議室ごとのヘッダファイル名
property ROOM_footer : "ROOM_footer" --会議室ごとのフッタファイル名
property lastnum : "lastnum" --会議室ごとの最新発言番号を入れるファイル名
property post_new_f : "post_new" --新規発言表示ファイル
property post_c_f : "post_comm" --コメント発言表示ファイル
property max_byte : 51200 --_bファイルの最大バイト数。51200は50KB。100KBなら102400
property mod_date : 7 --○日以内に変更のあったファイルを日付順表示
property max_Comm : 1000 --1会議室あたりの最大発言数。最大9999まで。
property file_aDB : "file.db" --ツリー表示(Aブロック)のデータベースファイル名
property page_tr : 10 --1ページ当たりに表示するツリー数
property treeF : " target=\"tree\"" --ツリーフレーム名
property mainF : " target=\"main\"" --メインフレーム名
property adminMail : "kiwi水沢" --UVJ Mailer nickname メール先。要UVJ Mailer

--▲▲ユーザー設定変数の変更はここまで

 logFileは、ログファイル名です。ログ出力が必要なければ空にします。ログファイルはcgiと同じ階層に自動的に作られます。ログには「会議室一覧」以外の操作をすべて記録します。
 ログは日時、IPアドレス、form(これで会議室名や動作内容がわかる)が出力されます。IPアドレスはサーバが拾ったものを素直に記録するだけですので、詐称されたらアウトです。必ずしも正しいIPが記録されるわけではない、ということですね。
 アクセス拒否IPアドレスからアクセスがあった場合はformの代わりに「アクセス拒否」と記録されます。
 書き込み動作の場合は、formのうち発言内容以外が記録されます。
 また、どんどん追加されていきますので、適当に空にしてください(管理機能でバックアップすることができます)。

 noIPaddressは、アクセスを拒否するIPアドレスを記述します。ホスト名ではいけません。また、複数記述することができます。ログにアクセスがあったことが記録されますが、「このIPからはアクセスできない」旨が表示されます。
 例1:{"127.0.0.1"} ひとつの場合。必ず両端を「"」で囲むこと。
 例2:{"127.0.0.1","192.168.0.1","192.168.0.11"} 複数の場合はこのように「,」で区切る

 max_byteは、本文表示部(Bブロック)の最大バイト数です。最初は50kbにしてあります。この値を大きくすると、その分メモリを消費してしまいます。したがって、あまり大きな値を指定すると動かなくなるかもしれません。
 この値を超えて発言しようとすると、「一杯だから新しいコメントツリーを立てて」と表示されます。

 mod_dateは日付順タイトル一覧で表示されるデフォルト値です。最初は7日を指定してあります。つまり、日付順タイトル一覧を行うと、7日以内に変更のあった発言一覧が表示されます。

 max_Commは1会議室あたりの最大発言数です。デフォルトでは1会議室あたり、9999発言までしか許していません(ファイルの数ではありません。発言の通番で9999までです)。これを超えて発言しようとすると、「会議室があふれたので管理者に連絡して」と表示されます。フッタには連絡先を書いておくと良いでしょう。
 9999以上に設定するとエラーは表示されませんが正常に動作しないはずですので注意。
 また、非力なサーバではこんなにたくさんのファイルを作ると処理速度が低下しますから、1000発言程度に設定しておくと良いでしょう。

 file_aDBはツリー表示用のデータベースファイルの名前です。特に理由がなければデフォルトでよいでしょう。このファイルには、発言ファイル名が記録され、コメントがあった場合はその発言ファイルを先頭に並び替えます。これを参照してコメントツリーを表示しています。

 page_trはページ当たり何ツリー表示するか、という値です。デフォルトでは10ツリーです。

 treeFはツリーフレーム名。デフォルトは" target=\"tree\""になっている。
 mainFはメインフレーム名。デフォルトは" target=\"main\""になっている。
 この二つを空にしておくと、フレームに対するターゲット指定がなくなるので、ひとつのウインドウの中で切り替わる従来の使い方ができます。
 また、mainFを" target=\"_blank\""などとすれば、別窓で発言を開くようになります。

adminMailは田中求之さんのUVJ Mailerを使ってメール送信するときに使います。UVJ Mailerで設定してあるニックネームを記述します。空にすると送信しません。複数のニックネームに送信する場合は「,」で区切って複数指定してください。
 どの会議室に発言があってもこのニックネームに送信されます。会議室ごとに送信先を変更する機能は付いていません。
 また、当然ですが別途UVJ Mailerをダウンロードしてください。
UVJ Mailer:http://mtlab.ecn.fpu.ac.jp/uvjMailer/

●インストール 〜コンパイル ▲ページトップ

●ハンドラの修正(AppleScriptがver.1.3より前の場合)

 AppleScriptのバージョンが1.3より前の場合は、「on handle CGI」ハンドラの書き換えが必要です。1.3以降ならそのままでOKのはず。

書き換え前(改行されて表示されていると思いますが、実際にはスクリプト上では1行ですのでご注意)

on handle CGI request s_path searching for get_arg with posted data post_data from client IP address ipAddress with full request full_request
(↑1行です)

処理行が続く

end handle CGI request

書き換え後(改行されて表示されていると思いますが、実際にはスクリプト上では1行ですのでご注意)

on ヌevent WWWスsdocネ s_path given ヌclass kforネ:get_arg, ヌclass postネ:post_data, ヌclass Kcipネ:ipAddress, ヌclass Kfrqネ:full_request
(↑1行です)

処理行が続く

end ヌevent WWWスsdocネ

●コンパイルエラー対策(AppleScriptがver.1.3より前の場合)

 AppleScriptのバージョンが1.3より前の場合は、以下の行を変更してください。「表示」に「\」を加えて「表\示」とするだけです。こうしないと正常にコンパイルできません。「構文確認」ボタンを押すと、エラー箇所を表示してくれます。1.3以降ではそのままでOKのはずです。

 書き換えまえ

set print_html to "<p> 全" & max & "ツリー中、ページあたり" & page_tr & "ツリーずつ表示。</P>" & return

 書き換え後

set print_html to "<p> 全" & max & "ツリー中、ページあたり" & page_tr & "ツリーずつ表\示。</P>" & return

※管理用cgiの場合、「可能」という言葉が同様に引っかかります。「可能\」に変更してください。

●コンパイル

 最後にコンパイルします。「スクリプト編集プログラム」には3MB程度メモリを割り当ててください。そうしないとエラーがでてコンパイルできないようです。

  1. 「スクリプト編集プログラム」でas_tree_bbs.cgi.txtを開きます。
  2. 「ファイル」→「実行専用で保存」を選択します。
  3. ファイル名を「as_tree_bbs.cgi」にします。「as_tree_bbs.acgi」やその他の任意の名前でも良いですが、その場合は中のcgi_name変数の書き換えを忘れずに。
  4. 「実行後、自動的に終了しない」「初期画面を表示しない」にチェックを付けて保存します。
  5. できあがったcgiまたはacgiには、メモリを500kbから1000kb程度割り当ててください。管理用cgiはそこまで必要ないでしょう。

●実行

 後はブラウザから会議室にアクセスします。「http://127.0.0.1/as_tree_bbs/as_tree_bbs.cgi」などとすると、会議室の一覧が表示されます。めでたしめでたし。

●管理機能について ▲ページトップ

 簡易管理機能が付いています。「admin.cgi.txt」を掲示板cgi同様の手順でコンパイル(AppleScript ver1.3より前の場合はon handle CGIハンドラを書き換えを忘れずに)してから使います。

 cgiそのものの名前と、中のパスワードは必ず変更してください。さもないと、他の人に会議室をいじられ放題になります。また、QPQの場合「admin.cgi」には特別な意味がありますから、「admin.cgi」というcgiにアクセスすることもできません。
 起動するには、直接「http://127.0.0.1/as_tree_bbs/admin.cgi」などのようにcgiにアクセスしてください。

 簡易管理機能cgiでは次のことができます。

 なお、管理処理中はその掲示板は一時的にリードオンリーとなります(フォルダに「R_」を自動的に付加します)。logoutしないとリードオンリーのままになってしまうのでご注意。

■会議室全体の管理

●新規会議室の作成

 新しい会議室を作成します。このとき「tmp」フォルダ内のヘッダファイル、フッタファイルの内容がコピーされます。作成後、自動的にこの会議室の管理メニューに移行します。ヘッダ・フッタなどは管理メニューで変更できます。

●会議室の削除

 実際には削除しません。「room」というフォルダ名を「deloom」に変更し、掲示板cgiから見えないようにするだけですので、次の機能で復活できます。

●会議室の復活

 会議室の削除の逆をやります。「deloom」というフォルダ名を「room」に変更し、掲示板cgiから見えるようにします。ここで復活できるのは前の「会議室の削除」で削除した会議室だけです。
 復活した後は自動的にリードオンリーになっていますので、会議室の管理メニューからlogoutする必要があります。

※これらの操作の後も、必ずlogoutしてください。そうしないと管理用cgiが終了しません。

■logファイルの管理

●logfileのバックアップ

 ログファイルの名前を「logfile+日時」に変更します。変更後、管理cgiは終了します。

■会議室ごとの管理

●ツリーごと削除

 この機能では、Aブロック(ツリー表示部)のデータベースファイル(file.db)から該当の発言ファイルの名前を削除します。これだけでツリー表示からはツリーごと表示されなくなります。このとき、データベースファイルは日付を付けてバックアップされます(011226file.db)。

 該当するBブロックのファイルは「番号_b」というファイル名から「番号_dell」にリネームされます。これで検索しても該当のファイルは検索対象ファイルからは外れます。

 日付順表示(Cブロック)は処理に時間がかかります。Cブロックの1発言ごとの構造は次のようになっています。
<!--■001▼-->
1. <A HREF="<@cgi_name>?mode=<@mode>&room_dir=<@room_dir>&filename=001_1#1">一通り骨格ができた</a> : penguin-19 01122601/12/26 14:35<br>
<!--■001▲-->
<!--▲1▲-->

 すべてのCブロックを開き、次のようにコメントに書き換えていきます。すべてのCブロックファイルをなめるために発言数が多いとちょっと時間がかかります。
<!--■001▼-->
<!--●
1. <A HREF="<@cgi_name>?mode=<@mode>&room_dir=<@room_dir>&filename=001_1#1">一通り骨格ができた</a> : penguin-19 01122601/12/26 14:35<br>
●-->
<!--■001▲-->
<!--▲1▲-->

 ツリーを復活させる場合は手動になります。Aブロックのデータベースファイルに該当の発言ファイル番号を追加し、Cブロックファイルから「<!--●」「●-->」部分を削除する必要があります。

 発言1つずつの削除については、Aブロックの処理が複雑すぎて対応していません。疑似ツリーの弱点がモロにでる部分です。
 代わりに、次の「発言の修正」で、「この発言は削除しました」と発言内容を修正することで対応をお願いいたします。

●発言の修正

 Bブロックファイルを開いて該当発言部分を修正する機能です。
 削除の場合は発言部分をさっくり削除し、「削除しました」と書き込んでおくのが手っ取り早いでしょう。

 元の発言を保存しておくために、変更のあったファイルは「番号_b」から「番号_修正年月日」というファイル名に変更・保存されます。

●会議室をリードオンリーに

 会議室フォルダ名に「R_」を追加してリードオンリーにします。管理機能が動いているときには「R_R_room_1」と「R_」が重なって表示されます。

●会議室を書き込み可能に

 会議室フォルダ名から「R_」を削除して書き込み可能にします。管理機能中は「R_R_」がついたものがリードオンリー掲示板です。「R_」だけのものは書き込み可能掲示板と見なされますのでこの機能が使えません。logout時に自動的に「R_」が削除されます。

●会議室のヘッド/フッタファイルの編集

 会議室のヘッダ/フッタファイル(ROOM_header/ROOM_footer)を編集できます。

●改造のヒント ▲ページトップ

●ヘッダ・フッタをツリー用とメイン用と使い分けるように改造する

 まず、それぞれのヘッダ・フッタを用意する。

・ツリー(と日付順、会議室一覧)用
 ROOM_footer
 ROOM_header

・メイン(発言)用
 ROOM_footer_F
 ROOM_header_F

 as_tree_bbs.acgiで、発言表示のところだけ、_F付きヘッダを読んで表示するようにすればよい。

●オリジナル(287行目付近)

set roomHeader to MT Read File (bbsFldr & room_dir & ":" & ROOM_header)
set roomFooter to MT Read File (bbsFldr & room_dir & ":" & ROOM_footer)

●変更後

set roomHeader to MT Read File (bbsFldr & room_dir & ":" & ROOM_header & "_F")
set roomFooter to MT Read File (bbsFldr & room_dir & ":" & ROOM_footer & "_F"))

●変更履歴 ▲ページトップ

2002/4/13 AS Tree BBS ver.0.6b5 2002/5/31公開

●掲示板cgiの変更点

・田中求之さんのUVJ Mailerを使ったメール送信に対応。新規発言/コメント発言があると、UVJ Mailerで設定したニックネームに宛ててメール送信します。

2002/4/12 AS Tree BBS ver.0.6b4 未公開

●掲示板cgiの変更点
・これまで最大999発言までだった制限を9999発言まで拡大した。この種の制限は作者ではなく運用者が決めるべきで、CGIであまり制限を設けてはいけないと考え直した。

 でも、9999発言まで許したら、パワーのあるMACでも処理が遅くなるだろうから注意。せいぜい1000〜2000程度のオーダーで使うのがよいでしょう。それ以上になったら会議室を増やせばいいわけだし。
 このサーバのように非力な場合はどの程度かな〜。

 この変更でファイル名は3桁(001)から4桁(0001)に変更となったが、特にファイル名を変えるような必要はない。0.6b3のデータをそのまま使っても大丈夫。

2002/4/3 AS Tree BBS ver.0.6b3 未公開

●掲示板cgiの変更点
・自動リフレッシュ機能を削除し、発言表示時のバグ(IEの場合、発言表示画面でタイトルツリーをクリックすると、同じページの発言部分を表示せずにもう一度cgiを呼び出してしまう)を取ったもの。

2002/2 AS Tree BBS ver.0.6b2 未公開

●掲示板cgiの変更点
・発言があったら、ツリー部分も自動的にリフレッシュするように変更。しかし、実用性に疑問があり、未公開。

2002/1/31 AS Tree BBS ver.0.6b

●掲示板cgiの変更点
・cgiをなるべく走らせないように、ツリーとメインという2つのフレームに分けて表示する方式に変更。上部にツリーが表示され、下部に発言が表示される。こうするとツリーと発言を行ったりきたりする必要がなくなるため、かなり負担を減らせる。一番パワーが食われるのはツリー表示なのである。

・これによってAブロックとCブロックのデータ構造が変更になった。よってver0.5以前のものとはデータの互換性がない。
 リンク部分に <@frameM> を追加するだけ。データコンバーターを用意した。

・なお、フレーム表示にせずに、これまで通り使うことも可能。propertyのmainFとtreeFを空にすればよいだけです。

・自動リンクの際、リンクターゲットを「target="_blank"」に変更。別窓で開くようにした。

●管理機能cgi
・ツリーごと削除した場合、該当の_bファイルの名前を「_b」から「_dell」に変更するようにした。これで削除したツリーが検索されてしまう問題を回避できる。

・発言修正の場合、元の発言を保存するために、発言ファイル全体をバックアップ保存するように修正した。「元発言番号_修正のあった日付」という名前で保存される。

2002/1/17 AS Tree BBS ver.0.5b

●掲示板cgiの変更点
・発言表示画面で、ツリー部をクリックするとそのページの該当発言にcgiを通さずにジャンプできるようになった。これまでは同じページなのにいちいちcgiを通していたのである。これでサーバ負荷はだいぶ軽くなる。

・この変更に伴って、ver0.4x以前のデータは使えなくなりました。データコンバータも用意しました。「ダウンロード」からダウンできます。

・発言時に一応ヌルコードの除去をやるようになった。効き目があるのか未検証。

●管理機能cgi
・変更なし。admin.cgi.txt043bのまま。

2002/1/17 AS Tree BBS ver.0.43b

●掲示板cgiの変更点
・発言数が3桁になるとファイル名に余分な0がついてしまうという大きなバグを修正。
・日付順発言の際に出力される日付データがおかしかったバグを修正。
・検索キーワードの入力チェックを追加。これまで入力がなくても通していたので、延々探し続けるバグがあった。
・検索結果を新しいツリー順に表示するように変更。
・リードオンリー会議室をリードオンリーと認識しなくなる不可解な現象が一応直った。

自分用メモ:
set RO_Flg to ((characters 1 thru 2 of bbsListTemp) as text = "R_")
if RO_Flg = true then

 を

set RO_Flg to barasu(bbsListTemp, "_") --_で分解
if item 1 of RO_Flg = "R" then

 に変更。

●管理機能cgi
・ほんのちょっとだけ軽量化。機能に変更なし。

2002/1/12 AS Tree BBS ver.0.42b

 やっと配布セットを作成。このバージョンから配布を開始した。

●掲示板cgiの変更点
・ログ出力で、発言動作の場合はmodeからタイトルまでで、発言内容は出力しないように変更。また、デコードしてから出力するようになった。
・IPアドレスによるアクセス拒否機能を追加。
・オートリンク機能を追加。[http://〜]の間をリンクする。ftpやhttpsなどは不可。

●管理機能cgi
・login画面にlogout now機能を追加。すぐに管理用cgiを終了する。

2002/1/11 AS Tree BBS ver.0.41b

●掲示板cgiの変更点
・ログ出力機能を追加。

●管理機能cgi
・管理中に掲示板を表示する機能を追加。

2002/1/10 AS Tree BBS ver.0.4b

●掲示板cgiの変更点
・管理機能のツリー一括削除機能に対応して、Cブロックに発言ファイルの目印をコメントとして出力するようになった。

●管理機能cgi
・このバージョンからツリーごと削除に対応。

2002/1/4 AS Tree BBS ver.0.3b

 Aブロックのデータベースファイルを導入した。
 これによって、タイトルツリー表示を「○○日以内」から「○○ツリーごと」の表示に変更し、ページ当たり○ツリーずつ表示していき、ページをたどると全部を表示することができるようになった。一気に全ツリーを表示するオプションはなくなった。

 ツリーは「○ツリーごと」、発言順は「○日以内」と、表示によって基準が違っているのは問題になりそうな気がする。ま、いっか。

 とうとう30kbの大台に乗ってしまった。あと2kbしか余裕がない。

2001/12/30 AS Tree BBS ver.0.22b

 指定日以内に発言がなかった場合、「○日以内の発言はありません」と表示するようにした。
 また、あった場合は「○日以内の発言一覧です」と表示するようにした。

2001/12/29 AS Tree BBS ver.0.21b

 バージョンは変わりませんが、田中元之さんからの要請で「easyBBS TR」から「AS Tree BBS」に名称を変更しました。田中さんにはご迷惑をおかけしてすみませんでした。勝手に申し訳ありません。

2001/12/28 ver.0.21b β公開開始

 軽量化をねらってできるだけTanaka's OSAXを使うように書き改めた。28kbあったものが26kbになった。んが、ソート機能を付けたら27までまた増えた。

●仕様変更
・会議室一覧は昇順にソート(リード掲示板は必ず最後になる)、ツリー、発言順は降順にソートして表示するようにした。

●追加機能
・最大発言数を999固定だったが、これを変数の設定で変更可能とした。でも1000以上にすると正常に動作しないと思う。ファイル名の桁数が変わるからね。

 不満点はおおむねなくなったのでβに以降。

2001/12/27 ver.0.2a

 Cookie搭載できておめでたいので0.2にアップ。

●バグ取り
・表示日数を0に指定しても全表示とならないバグを取った。
・新規発言時にCブロックファイルが存在しないとエラーとなるバグを取った。
・Cブロックに本文が記録されることがあるというバグを取った。

●機能追加
・ようやくCookieを搭載できた。

2001/12/26 ver.0.1a

コメント発言も搭載できた。

最低限の機能はおおむね搭載できたので、バージョンを0.1とした。ただしまだα版。Tanaka's OSAXの使い方でわからないところがあり、強引なスクリプトになっているから。Tanaka's OSAXをもっと使えばさらに高速化できるはず。

Cookieもほしいなぁ。

2001/12/25 ver.0.04a

新規発言も搭載できた。

2001/12/24 ver.0.03a

日付順タイトル表示を搭載。

2001/12/21 ver.0.02a

ツリー表示・発言表示機能も搭載。

2001/12/19 ver.0.01a

最初のバージョン。まだ会議室一覧しかない。

●著作権など ▲ページトップ

 作者(水沢・penguin-19・和彦)に断りなく、使用、改変、改変したものを再配布することができます。特に断りも必要ありません。システム表示などもばっさり削除してかまいません。

 なお、このcgiを使って運営しているという奇特な方がいらっしゃったらお知らせください。リンクさせていただきます。

 製作に当たっては、田中求之さんの資料、OSAX、bbs.acgiDXなどのcgiを参考にさせていただきました。御礼申し上げます。

 何しろはじめて作った長編AppleScriptのCGIなので、ソースはかなり稚拙ではないかと思います。ガンガン正しく書き直して使ってください。


トップ:http://www1.kiwi-us.com/~mizusawa/penguin/index.html

配布ページ:http://mizusawa.no-ip.com:8080/index.html(実験サーバのためなくなるかも)

連絡先:mizusawa@kiwi.ne.jp