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

Easy BBS DX のPerl版について

発言者:Junnama
( Date Friday, August 17, 2001 20:20:13 )


夏休みの工作(?)というか、Perlの練習というか、必要に迫られて、というか、
作ってみました。

過去に何度か話題に上がっていたようなのですが、今回は全くの自分用というこ
とで、EasyBBS DX III を見本にして試行錯誤しながら書きました。

まともにPerlをさわりはじめて1か月程ですので、正式公開というには気が引け
るのですが、よければ見てやって下さい。

今後サポートがどうとか機能を拡張するとかは全く考えていないのですが(次は
できればオリジナルのBBSをつくりたいと思っているので)、詳しい方、興味の
有る方からの突っ込みや御意見がいただければと思います。

今回はできるだけ忠実にEasyBBS DX IIIをトレースすることを考えましたので、
ドキュメントやテンプレートについては田中先生のDX IIIのものを殆ど流用して
ますが、このまま公開しちゃってもいいでしょうか。

以下に、Linux(Cobalt Linux 5.0)にアップしたものがあります。
書き込んで下さっても結構です。

※予告なく削除・修正する場合があります。

→  Perl版のトップページ

田中求之 さんからのコメント
( Friday, August 17, 2001 21:39:53 )

>ドキュメントやテンプレートについては田中先生のDX IIIのものを殆ど流用して
>ますが、このまま公開しちゃってもいいでしょうか。

もちろん構いませんよ。なんだって、使えるものは使ってもらえば結構です。

発言(話題)のファイルのフォーマットも同じなんですか?

Junnama さんからのコメント
( Friday, August 17, 2001 21:58:08 )

> 発言(話題)のファイルのフォーマットも同じなんですか?

同じ(はず)です。
文字コードもShift_JISですし。

以下、オリジナルとの相違点です。


・オリジナルではCGIのファイル名が「bbs.acgi」ですが、Perl版では「bbs.cgi」
 です(まぁ、当然と言えば当然ですが)。
・「最近の発言状況」に関して、BBS 全体のものを未公開とする機能がありません。
・xStamp 検索機能はありません。


また、「BBS_recent」及び「ROOM_recent」ファイルの改行コードが違います。
オリジナルでは改行コードが「CR」と「CR+LF」が混在していますが、統一して
動かすようにして2行単位で発言を管理しています。
(※「CR」で統一して確認を行っています)。
 
もしオリジナルから移行するのならば、この点と「bbs.cgi」の名前に留意すれ
ば問題ないと思います。

あと、「最近○日間に更新されたもの」のリストアップや各会議室トップページ
の「最近7日間に投稿/コメントされたメッセージ」についてはファイルの最終
更新日をチェックしていますから、転送したときに日付が変わっちゃえば、設定
し直す必要があるかもしれません。

といっててもはじまらないし(許可もいただいたことですし)、以下にアップし
ておきます。

ちなみに、MacPerlやMacOS X では動作確認していません。

→  Easy BBS DX (Perl版)

田中求之 さんからのコメント
( Friday, August 17, 2001 22:32:39 )

なるほど、簡単に Perl 版へ移行できそうですね。

なお、お願いですが、名前は EasyBBS PX のように、型番の所を DX 以外に
しておいてもらえますか? DX ってのは AppleScript 版であるってことで
統一しておきたいので(PX 以外でも、なんでもかまいませんが)。

それと、EasyBBS のページにリンクを載せてもかまいませんか?

Junnama さんからのコメント
( Friday, August 17, 2001 22:49:08 )

> 名前は EasyBBS PX のように、型番の所を DX 以外に

了解しました。

名前は EasyBBS PX に決定です :-)

> それと、EasyBBS のページにリンクを載せてもかまいませんか?
了解しました、といいたいところですが、置き場所も決めてませんし、
ドキュメントもあまりになんなので、早急に整備してから再度書き込ませていただきます。

試されるかたがいらっしゃるかもしれませんので、上記のファイルは暫くそのまま置いておきます。

今井真人 さんからのコメント
( Saturday, August 18, 2001 09:22:54 )

先ほどダウンロードだけさせていただいてます。改行コードがCRになっているので
LFにするコメントを入れるか?最初からLFにした方がいいと思います。

野田 純生 さんからのコメント
( Sunday, August 19, 2001 06:00:28 )

EasyBBS PXとして以下にアップしました。
このアドレスは当面変える予定はありませんので、リンクしていただけるのなら
ここにお願いします。

ドキュメントも最低限整備しました。

「最近の発言状況」について、BBS 全体のものを未公開にする設定を加えました。

> LFにするコメントを入れるか?
取り敢えずコメントを入れましたが、実際にどうなのかは限られた環境でしかテ
ストできませんので、何か他にも問題があったら教えて下さい。

あとは xStamp 検索機能だけなのですが、この xStamp=<Time Stamp>のパラメー
ターは具体的にはどのようなものになるのでしょうか。

私のところでは附属ドキュメントのスクリプトが動かなかったもので。

→  Easy BBS PX

Junnama さんからのコメント
( Sunday, August 19, 2001 06:14:50 )

> 野田 純生 さんからのコメント

あっ...同じスレッドで名前が違う...
まぁ、どっちでもいいんですが、失礼しました。

田中求之 さんからのコメント
( Sunday, August 19, 2001 15:34:56 )

どうもページを用意してもらってありがとうございます。EasyBBS PX のリン
クは、この後、追加しておきます。

>あとは xStamp 検索機能だけなのですが、この xStamp=<Time Stamp>のパラメー
>ターは具体的にはどのようなものになるのでしょうか。

xStamp=010819143000

というパラメータを渡すと 2001年8月19日14時30分0秒以降に更新された話題の
ページをリストアップします。

つまり、パラメータに、検索基準となる日時のタイムスタンプを渡すように
なっています( YYMMDDHHMMSS という12文字のスタンプです)。2000 年問題
に対処するため、YY は 40 以下は 2000 年ベース、それ以上を 1900 年ベース
で処理してます。

この会議室でも

http://mtlab.ecn.fpu.ac.jp/webcon.mtxt?xStamp=010810000000

てなリクエストが使えます。

Junnama さんからのコメント
( Monday, August 20, 2001 20:44:32 )

DX III付属のドキュメントの中の Meeting Accesser スクリプトですが、
Tanaka's Osax2.Xではコンパイルできませんでしたが、1.xがありましたので、
それで試したらちゃんと
http://your.host/easyBBS_px/bbs.cgi?xStamp=010810000000
のようにアクセスしにいくようになりました。

Tanaka's osax 1.x の DateToStamp コマンドが
Tanaka's osax 2.0 では MT TimeStampに変わっているようですね
(DX IIIのドキュメントに一筆入れておかれてはいかがでしょうか)。

ただ、これでやっても私の環境のDX IIIでは正しくリストアップしてくれません
(返るデータが空になる)。何故でしょう?

特にPerl版の開発に影響があるわけではないのですが、せっかくなのでDX IIIを
完璧にトレースしたいと考えているので、どういった形での表示になるのかを確
認したいと思ってます。

取り敢えず以下の形にて実装しました(ついでに細かなバグをいくつか直しまし
た)。

Easy BBS PX でのxStamp 検索機能は会議室全体ではなく、各会議室単位となって
います。

例:"http://your.host/easybbs_px/bbs.cgi?r=room_1&xStamp=010810000000"

上記の場合、room_1フォルダ内の2001年8月10日00時00分00秒以後に発言/
コメントされたメッセージをリストアップします。

sig さんからのコメント
( Monday, August 20, 2001 22:00:38 )

早速OS X 1.0.4(Apache/1.3.19)でTestしてみました。
bbs.cgiとjcode.plの改行はCRからLFにして実行してみました。
現象
1.Read Onlyの会議室の投稿が”サーバーが見つかりません”
2.新規投稿がInternal Server Errorとなります。

Apacheの設定が悪いのでしょうか?
OS X 1.0.4(Apache/1.3.19)で実行に成功した方がいらっしゃいますか?

Junnama さんからのコメント
( Monday, August 20, 2001 22:10:12 )

> 1.Read Onlyの会議室の投稿
Read Onlyの会議室では投稿はできません。

にしても、"サーバーが見つかりません"というのはどういうことだろう...

> 2.新規投稿がInternal Server Errorとなります。

これは Read Onlyの会議室ではないですよね。
投稿自身はできていますか?
(エラーが出てもファイルは出来ているとかいうことは無いですか?)

Junnama さんからのコメント
( Monday, August 20, 2001 23:51:28 )

OS X環境が手近にないもので、残念ながらテストできないのですが、
MacPerlのほうはどうやら動くようです。

# パスの指定など結構変えるところはありますが...

先程QPQ+MacJPerlで確認しました。

こちらの方もドキュメント関係が出来たらそのうち公開します。

Unix版は私がテストできる環境が限られているので、動いたという方がいれば情報を下さると
嬉しいです。

Junnama さんからのコメント
( Tuesday, August 21, 2001 01:39:59 )

>1.Read Onlyの会議室の投稿が”サーバーが見つかりません”

環境に合わせて以下を試してもらえませんか?

59行目(BBSのパス)を下記に変更
$myLocation="http://yourhost/bbs/bbs.cgi";

63行目(BBSのフォルダ)を下記に変更
$myFLocation="http://yourhost/bbs/";

のように変えて試してみてもらえますか?

sig さんからのコメント
( Tuesday, August 21, 2001 08:42:19 )

Junnamaさん 回答ありがとうございます。
Read Only会議室の"Read-Onlyの会議室について "のmessageは以下の修正で読めるようになりました。
bbs.cgi修正
$myLocation="http://$myHost$myInfomation";-->$myLocation="http://localhost/bbs/bbs.cgi";
$myFLocation=replaceAll($myLocation,"bbs.cgi","");-->$myFLocation="http://localhost/bbs/";

Room_1,Room_2の新規Messageの投稿は相変わらず、投稿ボタンを押すとInternal Server Errorとなります。
それぞれのFolder内にもMessageは作成されていません。
File作成Commandの実行に失敗しているようです。

このEasy BBS PXでQPQ1.0.2からApacheへの移行をしたいと計画しています。

Junnama さんからのコメント
( Tuesday, August 21, 2001 09:48:13 )

> 投稿ボタンを押すとInternal Server Errorとなります。

サーバ−のエラーログには何か記録されてますか?
あと、ファイルのPermissionはどうでしょう。

sig さんからのコメント
( Tuesday, August 21, 2001 10:10:03 )

前回の発言を一部修正します。
room_1、room_2のAccess権限を当初766としていましたが、777にすることにより、投稿Messageは作成されました。
しかし、相変わらずInternal Server Errorがでます。
Server Logは以下のとおりです。
[Tue Aug 21 09:59:04 2001] [error] [client 10.0.1.201] Premature end of script headers: /Users/Shared/web/bbs/bbs.cgi
Error. at /Users/Shared/web/bbsoriginal/bbs.cgi line 437.
よろしく、ご指導ください。

Junnama さんからのコメント
( Tuesday, August 21, 2001 10:50:35 )

>room_1、room_2のAccess権限を当初766としていましたが、777

755でいけると思うんですが...

BBS自身のフォルダ内にも書き込むファイル(BBS_recent)がありますので、
bbsフォルダのAccess権限も修正する必要がある気がします。

> 投稿Messageは作成されました。
room_1,room_2フォルダの"ROOM_recent"ファイルと、bbsフォルダの"BBS_recent"
にも書き込まれていますか?

sig さんからのコメント
( Tuesday, August 21, 2001 12:28:32 )

大変お世話になります。
BBS_recent、ROOM_recentには何も書込されませんので、File権限を双方とも777にしてみましたが、同様にInternal Server ErrorとなりError_logは下記の通りです。
Error. at /Users/Shared/web/bbs/bbs.cgi line 437.
[Tue Aug 21 12:02:41 2001] [error] [client 10.0.1.201] Premature end of script headers: /Users/Shared/web/bbs/bbs.cgi

念ためCommentの投稿をしてみましたがInternet Server Errorと表示され、書込はされずError_logは
Error. at /Users/Shared/web/bbs/bbs.cgi line 347.
[Tue Aug 21 12:14:28 2001] [error] [client 10.0.1.201] Premature end of script headers: /Users/Shared/web/bbs/bbs.cgi
となります。

なにかError Logに表示されるLineから手がかりがありますか
346 foreach (@myTextRR){
347 $CountArray++;
348 }
436 unshift(@myTextRR,$myReacentMessage);
437 
438 foreach (@myTextRR){
439 $CountArray++;
440 }

Junnama さんからのコメント
( Tuesday, August 21, 2001 13:11:22 )

Internal Server Errorの画面(ブラウザの画面)には他に何か出ますか?


sig さんからのコメント
( Tuesday, August 21, 2001 14:26:14 )

お世話になります。
下記のError文言の画面以外は表示されません。
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
私はPerlは全く知らないのですが、PerlのDebugでMileStoneに該当するCommandをお教えください。
どこまで実行されているのかTraceして見たいのですが。

Junnama さんからのコメント
( Tuesday, August 21, 2001 15:05:01 )

> 私はPerlは全く知らないのですが、PerlのDebugでMileStoneに該当する

デバッガで
perl -d bbs.cgi みたいなのではだめですか?

sig さんからのコメント
( Tuesday, August 21, 2001 15:47:34 )

% perl -d /users/shared/web/bbs/bbs.cgiを実行してみましたが、要求される入力内容になにを入れていいのか恥ずかしながら全く分かりません。
少しPerlを勉強してから出直しいたします。その節は宜しくご指導ください。

Junnama さんからのコメント
( Tuesday, August 21, 2001 19:05:36 )

とりあえずMacPerl版をあげておきました。
Perl版も微修正しました。

この時期MacPerl版を使う意味というのもあまりないのかもしれませんが、
MacOS9までならAppleScript版やPlug-in版があるし、MacOS XならそれこそUnixですし...

OS Xが使える環境が無いのがつくづく残念です。
週末に買いに行こうかなぁ...



→  Easy BBS PX

sig さんからのコメント
( Tuesday, August 21, 2001 19:37:27 )

>OS Xが使える環境が無いのがつくづく残念です。
>週末に買いに行こうかなぁ...
ServerをMac OSからOS Xに移行を計画しているMac Userに
希望を与えてくれたEasy BBS PXに期待しています。
是非Perl初心者のためOS Xでの検証をお願いします。


しのむ さんからのコメント
( Wednesday, August 22, 2001 04:03:11 )

Mac(OS9.0.4、httpd:Web共有)でEasy BBS PXの
MacPeal版を実行したところ、
# /\216([\241-\337])(\216([\336\337]))?/: unmatched () in regexp.
File ':jcode.pl'; Line 539
と言うようなエラーが出ました。
httpdが良くないのでしょうか。

Junnama さんからのコメント
( Wednesday, August 22, 2001 09:28:15 )

> File ':jcode.pl'; Line 539
> と言うようなエラーが出ました。

MacJPerlではありませんか?
添付ドキュメントにもありますが、

MacJPerlで動かす場合にはjcode.plの1行目に、以下のように記述して下さい。

no I18N::Japanese;

しのむ さんからのコメント
( Wednesday, August 22, 2001 12:57:35 )

無事動きました〜。ありがとうございます。

チロキ(鎌田武) さんからのコメント
( Monday, August 27, 2001 00:02:17 )

Junnamaさんこんばんは、
さっそく Easy BBS PX使わせていただいております
先日からwebサーバを自宅のMacからレンタルサーバに移行しているのですが、
Easy BBS ++に代わる使いやすいbbsのcgiを探していたのですが、
本家でまた見つかりました、

今の所問題なく動いているのでまもなく本運用に入るところです
これからもよろしくお願いいたします。



→  あきたシティどっとネットの掲示板

チロキ(鎌田武) さんからのコメント
( Monday, August 27, 2001 00:42:18 )

すいません、何かの拍子に動かなくなりました、
とりあえず追試は後日

Junnama さんからのコメント
( Monday, August 27, 2001 11:13:28 )

> すいません、何かの拍子に動かなくなりました、
> とりあえず追試は後日

症状は、どんな感じでしょうか?

チロキ(鎌田武) さんからのコメント
( Monday, August 27, 2001 20:47:26 )

動かなくなったのは私の仕業ですので、とりあえずオリジナルのEasy BBS PX
に入れ直しました、

で、動かなくしてしまった事始めですが、
新規発言の「投稿する」ボタンを押すとサーバーエラーになり
投稿した文章も残りません、

コメントの「コメントする」ボタンを押すとサーバーエラーになり、
こちらはコメントがきちんと投稿されます、

パーミッションのせいかな?と思いいじったら動かなくなった次第です、

同様の症状が他の方からも挙がっていたのでMacJPerlでためしに動かしてみたほうがよいでしょうか?



Junnama さんからのコメント
( Monday, August 27, 2001 21:38:43 )

今、一つバグを見つけました。
bbsフォルダの中に会議室フォルダ以外のフォルダがあると(imageフォルダ等)、
エラーになります。
わかる方はこの部分を変えて下さればいいのですが、今ちょっと時間がないので、
明後日くらいには修正します。

チロキ(鎌田武) さんからのコメント
( Tuesday, August 28, 2001 23:07:27 )

>新規発言の「投稿する」ボタンを押すとサーバーエラーになり
>投稿した文章も残りません、
>
>コメントの「コメントする」ボタンを押すとサーバーエラーになり、
>こちらはコメントがきちんと投稿されます、

解決しました!
BBSフォルダ内の「BBS_recent」及び
各ROOMフォルダの「ROOM_recent」の
Permissionを「777」にするとエラー無く動くようになりました!!
その他は「755」のままです、
sigさんもお試しください、

p,s
別件ですが、
bbsフォルダ内にimageと言うフォルダをつくったのが表示や動作が
おかしかった原因なんですね、
対応楽しみにしています

チロキ(鎌田武) さんからのコメント
( Wednesday, August 29, 2001 00:48:07 )

とりあえずEasyBBS PXをレンタルサーバに実装してみましたが、
今度はコメントが付かなくなりました、
もしよろしければ試してみてください。

→  EasyBBS PXの実装例

Junnama さんからのコメント
( Wednesday, August 29, 2001 09:41:02 )

見せていただきました。
coment_baseファイルを書き換えた時の問題だと思います。

01 <HTML>から....
10 <P><FORM ACTION="" METHOD=POST>

までの行(1行目から10行目)を削除して、ただ、<FORM>とだけして下さい。
(元の coment_baseファイルを参照して下さい。)

bbs.cgiのほうで<FORM>の部分を適切な記述に書き換えないといけないのですが、
ここが書き変わっているために正しく動作しません。

# この手のファイルを HomePage Proとかで書き換えるのは止めた方が...

チロキ(鎌田武) さんからのコメント
( Wednesday, August 29, 2001 13:55:30 )

Junnamaさんこんにちは、わざわざ見ていただき本当にありがとうございます、
HomePage Proが勝手にくっつけたコードが悪さをしていたところまで考えが
及びませんでした、

HomePage Proは表示の体裁を整えるのに便利なので使っていましたが、
cgi等コードが意味を持つファイルには今後使わないと心に誓います、
そうでもしないとこれからもどこで間違えているかわからないし、
基本的に使わないのが当たり前って事ですね、

目から鱗が落ちたというか(^_^;)
p,s
ブラウザでチェックしていてもブラウザのキャッシュが残っていて
古いページが表示されたりと、確認がスムーズじゃなくてはまっています、
どこが悪いのかピンとこないのは修行不足もあります。


たまちゃん さんからのコメント
( Wednesday, August 29, 2001 14:05:53 )

Ju's iEdit を使われてはどうですか。私も使っています。

この場を借りてお礼申し上げます。

→  Ju's iEdit

Junnama さんからのコメント
( Wednesday, August 29, 2001 15:23:42 )

> ブラウザでチェックしていてもブラウザのキャッシュが残っていて
> 古いページが表示されたりと、確認がスムーズじゃなくてはまっています、
> どこが悪いのかピンとこないのは修行不足もあります。

これは、多分Conditional GETへの対応が中途半端なせいです。

特に各トップページについては、Recentファイルの更新日のみチェックしていま
すので、FTPで発言ファイルを削除したり、ページのヘッダーファイルを差し換
えたりしても、Recentファイルが更新されていなければ古いデータが表示されて
しまいます。
HeaderやFooterファイルを差し換えた後確認する時には、Recentファイルを差し
換えると(同じもので上書きアップロードでいいので)更新されます。

# これも次回の対応課題とさせて下さい。

> Ju's iEdit を使われてはどうですか。私も使っています。

私も使っています(当然か)。
こんなところにユーザーさんがいたとは(しかも たまちゃん さん)。

こいつもそろそろアップデートしたいところなんですが、今はCGIにハマってい
るのと、忙しいのとで、中々バージョンアップできません。

また要望があれば教えて下さい。

チロキ(鎌田武) さんからのコメント
( Thursday, August 30, 2001 00:15:20 )

たまちゃんさんJunnamaさんアドバイスありがとうございます、
さっそく「Ju's iEdit」を使わせていただいています、
ご指摘のbbs.cgi関連ファイルだけでなく、
ホームページ全体に設置しているナビゲーション用のテーブルも
作りなおしましたが使い初めて間もなく慣れてくるという使いやすい
エディタで非常に助かっています、

EasyBBS PXの実装のこつもようやくつかみ、
これで再インストール時にも確実に動かせるようになりました、
一応手順を書くと
1、マニュアル通りにbbs.cgi内のBBSのパス及びフォルダをフルパスで書き換え
2、マニュアル通りにインストール
(私の使っているサーバーでは改行コードの変更や文字コードの変更は必要ありませんでした)
3、Permissionは基本的に「755」に設定、ただし各recentファイル及びroomフォルダは「777」に設定

どうやら今度こそちゃんと動いているようです(^_^;)

Junnama さんからのコメント
( Thursday, August 30, 2001 00:55:34 )

> どうやら今度こそちゃんと動いているようです(^_^;)

おめでとうございます、というべきか、ありがとうございます、というべきか...
とにかく良かったです。

Read Only 会議室にファイルが無かった時の表示がちょっと変ですね。
これも次回直します。

本当は今日くらいにしたかったのですが、仕事の状況が悲惨なので、もう少し先になりそうです。