お絵描き掲示板 を Windows 上で動かす (Ver. 1.32 用)
以下は以前の poo site (現在の OekakiBBS.com)で配布されていた poo アプレット付属の CGI を自分のパソコン上で使う方法です。
お絵かき掲示板でも、WonderCatStudio で配布されている BBSNote と しぃアプレットの組合せなら、ローカルサーバのみ立てればそのまま動作することを確認しました。
Windows 上で CGI を動かすには
ローカルサーバというのを立てます。サーバの選択肢の代表的なものには Apache と AnHttpd があります。Apache を使う場合、【 KB's ホームページ作成のヒント 】 内の 《 ActivePerl と Apache でパソコンをサーバに 》 に詳しい解説があるので、この手順でできます。AnHttpd を使った例は 【 KENT WEB 】 の 《 自宅マシンWWWサーバ化計画 》 の、「まずはインストールの巻」と「オフラインでCGIを動かそうの巻」で解説されています。
Windows 上での特殊事情
ウェブ上の CGI はたいてい UNIX 系のOSの Apache サーバ で動いています。この環境ではできて Windows 上ではできないことがあるので、そこのところを書き換えないといけません。
- ロック関連 ― Windows 上では symlink 関数が使えないので、open に変更するか、ローカルに置く場合だけオフにします。open を使うときは、lock フォルダがあることを確認します。
この設定は、picture.cgi と getpic.cgi の中の「ロック機構」のところにあります。
- データ入出力関連 ― Windows 上ではバイナリファイルを扱うときは binmode 指定をしなければいけないそうです。そうしないとテキスト以外のデータが壊れるそうで。
「お絵描き掲示板」で絵のデータを扱うのは getpic.cgi なので、まずこの最初のところに★印の行を追加。
require "./cgi-lib.pl";
binmode(STDIN); # ★
そして、末尾から 10 行ほど戻ったところにこんなふうに追加。
open (GOTPIC, ">$filename");
binmode(GOTPIC); # ★
binmode(STDOUT); # ★
print GOTPIC substr( $buffer, $p + 2 );
close GOTPIC;
これで「お絵描き掲示板」がローカルで動くはずです。binmode の情報はウェブ上で検索して poo site サポート掲示板過去ログ で見つけました。(その後、このログはなくなっています。) binmode の設定をスクリプトに追加しても Windows 以外の環境では無視されるので、アップロードするときもそのままでいいようです。
スクリプトのバグをみつける
わたしは 【 KENT WEB 】 の「ユーティリティ」部門で配布されている Perl Checker を使っています。エラーのある行を指摘してくれるので、修正がとても楽になります。
元になる画像の指定
じつは poo アプレット Ver. 1.31 にはデフォルトで使われている以外の起動パラメータがあり、そのひとつは描画画面に既存の画像を読み込むものです。ローカルで使うならいつでも特定の名前のファイルを差し替えることができるので、わりと使い道がありそうです。パラメータに次のように追加します。
<param name="image" value="source.gif">
画像ファイル名は適当に変更してください。ここで使える画像のフォーマットは GIF, BMP, JPEG のようです。(PNG は使えませんでした。)
(Last Modified: 2004/02/24)
|