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

EasyBBS DX4 ベータ版

発言者:田中求之
( Date Monday, September 03, 2001 16:51:28 )


EasyBBS DX4 のベータ版を登録しました。

DX III からの変更点は

1: Tanaka's osax 2.0 正式版に対応(2.01 を同封してあります)
2: Conditional_GET 対応による高速化(各部屋のトップページなどもすべ
  て C_GET 対応にしました。
3: ROOM_FOOTER ファイルのフォーマット変更(Recent へのリンクも Footer
  の方へ含めることにしました。
4:表示内容の変更(用語やリストのタグなどを修正)
5:新しい会議室の設定用スクリプトを同封(フォルダーを作った後、mkRoom
  スクリプトを実行すれば、最低限必要なテンプレートなどはインストール
  されます。


といったところです。大きなバグは残ってないと思いますが、まだ確証が得られない
ため、とりあえずベータ版として出します。

DX III から移行する場合には、ROOM_Footer ファイルを書き換える必要があります。
付属のテンプレートを参照してください(Recent 用のリンクを追加する必要が
あります)。

→  easybbs_dx4_b1.sit (80K)

田中求之 さんからのコメント
( Monday, September 03, 2001 21:31:21 )

BBS_recent にゴミを残したままパッキングしてしまいました。すみません。
お試しになる前に、BBS_recent を空にしておいてください。

それと、ページの有効期限を1分に設定してみたのですが、やはり不都合が生じる
ようですね。この点は次のリリースで修正します。

アイガサ さんからのコメント
( Tuesday, September 04, 2001 05:52:29 )

早速,DX4ベータ版を試しました。

今回,気付いた点を一点。
「新しいメッセージを投稿する」という表現が,「新しい話題を投稿する」
に変わっていましたが,自分のホームページ用にカスタマイズするときも,
「メッセージ」の部分を「スレッド」という表現に変えようかどうか迷いま
した。

今回のバージョンで「話題」という表現になっていたことで,非常に分かり
やすい表現でeasy to postになったと思います。
その話題となった部分と関連するのですが,post_baseファイルの中では
「新しいメッセージ」という表現があってちょっと気になったのですが?

EasyBBSの哲学に賛同する者より。

田中求之 さんからのコメント
( Tuesday, September 04, 2001 11:02:01 )

おっしゃるように、今回のバージョンから、「話題」という用語を用いる
ことにしました。まだ修正ができてないところもありますので、そこは
正式版までに修正しますね。

…そういや、この会議室(WSM)もひと足先に「話題」に修正したつもり
だったんですが、まだ統一がとれてない部分が残ってますねぇ。こっちも
修正します。

Junnama さんからのコメント
( Tuesday, September 04, 2001 23:13:20 )

早速、デフォルトの設定で試しました。
bbs.acgi?xStamp=010901210000のような形で試してみたのですが、
Not Found Folder のエラーがでます。
指定のしかたが違いますか?

MacOS9.04+QPQ1.0.2
OSAXは同梱のものを入れました。
(古いものは外しました)

> 「新しい話題を投稿する」

確かに、「話題」という表現はいいと思います。
スレッド、投稿、話題、コメント、レス etc.

色々な言葉が使われているのは、ユーザビリティの面で好ましくないですね。
分かりやすい言葉が浸透して、色んなところで同じ言葉が使われるといいのに...

Junnama さんからのコメント
( Tuesday, September 04, 2001 23:22:55 )

考えついでに、気になっていることを一つ。

「投稿する」ボタンのすぐ近くに「Recet」ボタンがあるのは少し不親切かもし
れません。慣れればどってことないのですが、この会議室の場合は余計に[Post]
[Recet]が隣接しているので、思わず間違えてしまいそうに...

そもそも、「Recet」ボタンって要るんでしょうかねぇ。

# 以前にアンケートページの投稿ボタンについて議論したことがあって、投稿
 ボタンは右か左かで議論になったんですが、MacとWinのOKとCancelボタンの位
 置って確か逆だったような記憶があります(OS Xは私は知りません)。

 また、AppleScriptのdisplay dialog〜の表示とHyperCardの answer(だった
 かaskだったかうろ覚え)のOK,キャンセルの位置も逆だったような気がします。

このあたりのインターフェースももっと精緻化していくと、さらに良いものがで
きると思います。

田中求之 さんからのコメント
( Wednesday, September 05, 2001 00:31:32 )

Junnama さん、お試しくださってありがとうございます。

>bbs.acgi?xStamp=010901210000のような形で試してみたのですが、
>Not Found Folder のエラーがでます。

xstamp は会議室単位で使いますので、

bbs.acgi?r=room_2&xstamp=010831000000

というように、最初に会議室のディレクトリの指定が入ります。


>そもそも、「Recet」ボタンって要るんでしょうかねぇ。

確かに、考えてみれば、私自身、Reset ボタンをずいぶん使っていませんね。DX 4 からは Reset ボタン外しますね。ついでにこの会議室も、次回の
メンテナンスの時に修正します。

投稿欄が一つなら Reset で全部が消えてしまうのは楽なんですが、複数の
欄に記入する際には、全部消されてしまっては困ることの方が多いですもんね。

田中求之 さんからのコメント
( Wednesday, September 05, 2001 12:57:47 )

DX4 b2 を登録しました。

今回の変更点は:

1:名前とタイトルのタグを無効にする処理を追加
2:メッセージのタグの処理の変更をしやすいようにハンドラーの位置を変更
3:表示の修正
4:ページの有効期限の修正
5:ROOM_Footer のテンプレートの変更(テーブル使用に変更)
6:サンプル会議室の変更

などです。

→  easybbs_dx4_b2.sit

田中求之 さんからのコメント
( Saturday, September 08, 2001 17:58:53 )

DX 3 の xstamp については、ドキュメントの記述が間違っていました。また、
スクリプトもあのままでは使えませんね。

ということで、DX 4 では削ることにします (^_^;;

そのかわり、テンプレート変更等の際に、それが即座に反映されるように、
update コマンドを実装しました。

http://your.host/bbs/bbs.acgi?update

とやると、BBS および各会議室の Recent 用のファイルの更新日をその時点に
変更します。これによって Conditional_GET の場合でも、かならず新しい
データが送りだされるようになります(こんな簡単で便利な機能をなぜ今まで
実装していなかったのか、自分でも不思議なんですが (^_^;; )

田中求之 さんからのコメント
( Monday, September 10, 2001 13:26:34 )

表示関連にちょっと手を入れて、正式版として、先ほど登録しました。

DX III からの変更点をもう一度まとめておくと、

1:Tanaka's osax 2.01 対応
2:表示用語および表示様式(一部にテーブルを導入)の変更
3:Conditional_GET 対応による負荷低減と体感速度向上
4:Xstamp 廃止
5:update コマンド実装

ということになります。

→  EasyBBS

田中求之 さんからのコメント
( Tuesday, September 11, 2001 02:05:03 )

…プログラミングが好きな人はわかってもらえると思いますが、コードをいじり
始めたら、「もうこれで OK 」って区切りを付けて、一息ついたとき、「あ、そうだ」
って、次の展開が見えてくるもんですよね (^_^;; (それが快感でやってる
みたいなとこがあるけど)。

そういうわけで(笑)、EasyBBS DX 4.5 (なんか情けないバージョン)のベータを
近日中に公開します。

4.5 の改良点は、この会議室の未読チェック機能(Cookie を使った未読発言
リストアップ機能)の実装です。スクリプトにもう少し余裕があるんで(32K
の壁とのせめぎ合い)、実装できることがわかりましたんで、実装します。

EasyBBS Newbie さんからのコメント
( Wednesday, September 12, 2001 00:52:20 )

EasyBBS DX 4 を使い始めました。

この会議室のように、メールで書き込みを受け取れるようにするにはどうしたら
いいのでしょうか?(そうした機能を組み込んでもらえませんでしょうか?)

自分でアップルスクリプトの勉強をしたらいいのは分っているのですが、
ネットでよい参考ページも見つからないので、困っています。CGI につい
てのアップルスクリプトの日本語の資料というのは、このHPぐらいしか
ありませんよね(このHPが不十分だというのではなくて、私のような
素人にはちょっと難しい話ばかりのような (^^;; )

前薗 健一 さんからのコメント
( Wednesday, September 12, 2001 01:05:25 )

> この会議室のように、メールで書き込みを受け取れるようにするにはどうしたら


UVJ Mailer を使いましょう。

田中求之 さんからのコメント
( Wednesday, September 12, 2001 01:08:04 )

とりあえず、明日(あ、もう今日か)、mread (Cookie を使った未読チェック
機能)を組み込んだ DX 4.5b1 を登録します。

>メールで書き込みを受け取れる

会議室の参加者の各自が、ということになると、ちょっと面倒になります。
まずメーリングリスト(リストサーバ)を用意する必要があります。それ
と、会議室ごとに個別にメールを分けるためには、今の DX 4 の仕様では
ちょっと苦しいんです(設定ファイルなどは用いないことにしているため)。

管理者の人が、すべての会議室に書き込まれたメッセージをメールで受け取れる
ようにする、という管理者用のメール機能でよければ、UVJ Mailer との
連携機能として組み込めます。スクリプトに、オプションの形で組み込んで
みますね(b2 としてリリースすることになると思います)。

田中求之 さんからのコメント
( Wednesday, September 12, 2001 01:12:58 )

>今の DX 4 の仕様では
>ちょっと苦しいんです

あ、そうか、会議室のフォルダーの中に設定ファイルがあれば、それに従う
という仕様にすればいいんだな。そうか、そうか(と勝手に納得 (^_^;; )

ということで、メール連携機能にチャレンジしてみますね。

…チャレンジこそ、フリーウェア・プログラマの最大の喜び(笑)

田中求之 さんからのコメント
( Wednesday, September 12, 2001 14:10:49 )

4.5b1 です。 mread ( Cookie を利用した未読チェック機能)を各会議室で
利用できるようにしました。利用のためのリンクを ROOM_Footer に組み込む
ようになっています(ROOM_Footer に新たな項目が追加されたわけです)。

スクリプトの変更だけを行っていますので、ドキュメントなどは 4 のままに
なっています。

それから、MacOS 8.5 以前のシステムでは、コンパイルしても動かないと思います。
CGI のハンドラーを適切な形に変更する必要があります(正式版ではもちろん
対応させます)

→  easybbs_4.5_b1.sit

田中求之 さんからのコメント
( Wednesday, September 12, 2001 16:19:24 )

直接は関係ない話なんですが…

今回の DX の改良の際、Explorer 5 と Netscape 6 でテストを行いながら
作業を行っているんですが、QPQ や WebSTAR を使ってテストを行おうとする
と Explorer では無理なんですよね。前から言われてたことではあるんですが、
Explorer って、自分が一番手前にいるときには、思いきり CPU を独り占め
しようとしますんで、バックのアプリケーションが非常に苦しくなるんです。

ですから、サーバ上で Explorer を動かすなっていうのは、ある意味、
鉄則なんですが、さすがにテストの時にはそうも言ってられない。
でも、Explorer だとエラーが出まくって作業にならない。Netscape
も 6 になってから、なんか重い(Netscape 自体の処理は速いんですが、
バックに負担をかけているような気配がします)

で、色々試してみたら、Web 共有だと、なんとかエラーが出ないで作業が
できることが分かりました。バックグランド専用アプリだし、軽いソフト
になっているからだと思います。

ということで、今回の更新作業は、Web 共有で行っています。 

田中求之 さんからのコメント
( Friday, September 14, 2001 18:23:05 )

メール送信機能を実装できる見込みがつきました。

ただ、フォルダー内にテキストの形でメールの設定を入れておくのはセキュリティ上の
問題を生じますので、設定ファイルのリソースに記録するようにしました。
リソースを編集する(設定ファイルの作成/変更を行う)アプリケーションを
REALbasic で作って添付することにします。

で、メール送信を行う場合は、本当は、発言は <PRE> タグを使って表示する
ようになっているのが望ましいのですが、その点は、あくまでも管理者に
委ねることにします(メールが変な形式になってもし〜らないってこと)。

田中求之 さんからのコメント
( Wednesday, September 19, 2001 01:11:42 )

なんとかメール送信用のスクリプトを押し込むことができましたので、明日
(あ、もう今日か)、新しいベータ版を登録します。

UVJ Mailer が起動できる状態にあり、会議室用フォルダーの中に設定ファイルが
作られていた(設定用のアプリケーションを同封します)場合に、その会議室に
書き込みがあるごとに、その発言をメールで送信します。

田中求之 さんからのコメント
( Wednesday, September 19, 2001 16:49:51 )

EasyBBS DX 4.5 b2 です。

書き込みをメールで送信する機能を実装しました。メール送信機能を使うには、
UVJ Mailer がインストールされている必要があります。

また、付属の DX Mail Setter を使って、会議室フォルダの中に mail_setting
というファイルを作成する必要があります。

DX Mail Setter の説明のドキュメントを付けていませんので、ここで簡単に
説明しておくと:

1:DX Mailer Setter を起動する
2: File メニューの Open を選択。するとフォルダ選択のダイアログが
  現れるので、会議室にしてるフォルダを選択する。
3:すると、会議室名がタイトルに表示された設定用ウィンドウが表示される。
4:設定できる項目は以下の通り(*は必須)
  ・メールの送り先アドレス*
  ・メールの差出人
  ・メールの送信元アドレス
  ・ヘッダ(メール本文の先頭部分に自動的に追加する文面)
  ・フッタ(メール本文の末尾部分に自動的に追加する文面)
5:設定が完了したら Save ボタンをクリックすれば、設定ファイルが作成
  されます。

以上で設定完了です。設定が完了したフォルダの会議室に新規話題投稿や
コメントの投稿があった場合には、発言ごとに1通のメールの形で、送り先
アドレスに向けてメールが送られます。話題名がメールの Subject になり、
コメントの場合には、Re: + 話題名になります。

EasyBBS DX の方で作成する本文は

会議室名
URL
タイトル
発言者
本文

という並びになっています。本文は HTML 処理を行う前の形になっています。


なお、メール中の URL 部分が正しく表示されるために、スクリプト中で
EasyBBS の URL を設定しておく必要があります。スクリプト中の BBS_URL
というプロパティに、bbs.acgi の URL を設定するのを忘れないようにして
ください。

→  EasyBBS_4.5_b2.sit

EasyBBS Newbie さんからのコメント
( Thursday, September 20, 2001 11:25:16 )

メール送信機能を組み込んでいただいてありがとうございます。私も自分なりに
トライしていたのですが、AppleScriptに慣れてないのでうまくいってませんでした。

スクリプトを見ていて疑問に思ったことがありましたので、質問させてください。

UVJ Mailer でメール送信する場合、
tell application "UVJ Mailer"
send mail…
end tell
というスクリプトにするものだと思っていたのですが、田中さんのスクリプトを
見ると送信の部分では
  tell application "Finder"
   set myUVJ to (application file id "ssmL") as string
  end tell
  ignoring application responses
   tell application myUVJ
    ヌevent XUVJSnMlネ (mHead & return & mailMsg & mFoot) given …
   end tell
  end ignoring
となっています。これは何をしているのでしょうか? UVJ Mailer を特別な
方法で呼びだしているのだと思うのですが?? なにか裏技(?)のようなもの
があるんでしょうか?

田中求之 さんからのコメント
( Thursday, September 20, 2001 13:12:39 )

簡単に言うと、UVJ Mailer の名前が変更されていても対応するということと、
UVJ Mailer をインストールしていないマシンでもちゃんとスクリプトがコンパイル
できるようにする、という2つの目的であのようなスクリプトになっています。

まず
  tell application "Finder"
   set myUVJ to (application file id "ssmL") as string
  end tell
の部分で、Finder を使って UVJ Mailer がインストールされているかどうか、
そしてインストールされているのであればどこにインストールされているのか
を調べています。クリエータが ssmL (これが UVJ mailer のクリエータです)
のアプリケーションの位置を調べています。もしインストールされていないと
この時点で Finder がエラーを返しますので、try のブロックの外に飛びますので、
送信ハンドラーの処理は終了します。

インストールされている場所(UVJ Mailer のフルパス)が分かったら、その
パスを使って、送信の指示を出しています。それが
   tell application myUVJ
    ヌevent XUVJSnMlネ (mHead & return & mailMsg & mFoot) given …
   end tell
の部分です(myUVJ に UVJ Mailer のパスが入っている)。

で、送信の指示(send mail コマンド)を生の AppleEvent で書いてあります。
こうしておくことで、コンパイル(構文確認)の時に UVJ Mailer がなくても
問題が起きなくなっています(tell の対象が変数なので、具体的なアプリケーション
の参照を行わない。しかし、命令自体は AppleEvent に変換済みなので、
実行の際には問題なく実行される、ということになってます)。

スクリプトの実行時に動的に対象のアプリケーションを切り替えたい時には、
このような「生 AppleEvent 記述」の方法が有効です。

過去にかいた解説のページが資料室にあると思いますので、読んでみてください。

田中求之 さんからのコメント
( Saturday, September 22, 2001 00:40:53 )

う、DX 4 の mread って、とんでもない根本的なバグを抱えてました。なんで気がつかなかった
んだろう?

ようするに、会議室毎のアクセス時間の管理ができてないんですわ。う〜む。

良く考えてみたら、DX の仕様からすると会議室ごとに時間の記録を保存する
のは難しいんですね、今ごろになって気がつくのもなんですが
(すっかり忘れてた…)
mread は引っ込めるかもしれません(スクリプトのサイズが厳しいので凝った
ことは組み込めないので)

田中求之 さんからのコメント
( Saturday, September 22, 2001 01:38:13 )

mread のバグを修正しました。無事に会議室ごとにアクセス時間の記録がとれる
ようになりました。よっぽど会議室の数が多くならないかぎり、大丈夫だと
思います。