Walrus,Digit. | 一覧 | 検索 | 更新履歴(RSS) | 新規作成
はてなブックマークに追加 はてなブックマークを表示 編集 | 編集(管理者用) | 差分

YaWPS

編集

DB不要のSlashcodeライクなCGI、YaWPSのメモ。

Gadget というサイトを運営するのに使用しましたが、このサイト自体は終了しました。

なお、0.3版にはセキュリティホールがあります。このページには0.3版の日本語化情報しかないのですが、それでも0.3版ではなく最新のバージョンを使用することをお勧めします。2004年3月末時点での最新版は 0.7.1 版です。

入手

編集

ホームページより。

0.3版の日本語化

Gadget では YaWPS 0.3版に、以下の改変を加えたものを使用しました。

日本語langファイル。

YaWPS は、表示されるメッセージの大半を、言語ごとのlangファイルにまとめています。

YaWPS のサイトには日本語のlangファイルがないため、独自に日本語ファイルを作りながら、 YaWPS を使用しました。 最終的に使用していた日本語langファイルは以下になります。

以下のページで、日本語langファイルの編集、修正を行っています。 お気づきの点等は、こちらに書き込んでいただけると非常に助かります。

文字コードセット。

デフォルトではiso-8859-1を使用しています。 これだと「西ヨーロッパ言語」としてデコードしようとするため、文字化けがおきてしまいます。 次のように、Theme以下のファイル及び cgi-lib以下のファイルからiso-8859-1を指定している行を全てコメント化し、代わりにEUC-JPを指定しています。

<!-- meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" -->
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">

付属ドキュメント。

付属ドキュメントのうち、以下の3ファイルが訳されています。

フォームデータ等の扱い。

フォームデータの解析、メールの送信など、主要な機能はYaWPS/cgi-lib/subs.plというファイルが受け持っています。 現在のところ、これにフォームデコード時の文字コード変換を加えたものを使っています。

メール送信個所にもJISコードへの変換を組み込んだつもりだったのですが、正しく働いていません。

アクセスログの扱い。

アクセス状況表示機能は、ログファイルを一度メモリ上に全て読み込んでから処理するため、環境によってはメモリを使いすぎるためにエラーになります。 (Gadget では6メガバイト程度に至った時点でInternal Server Errorが表示されるようになりました。) 現在は、これを1行読むごとに処理させています。

0.7版の情報

2004年3月末時点での最新版は 0.7.1 版です。現在 YaWPS を使用していないため、日本語化情報はありませんが、いくつかの付属ドキュメントのみ和訳したものがあります。

なお、上の 0.3 版用の japanese.lang ファイルを 0.6.1 用に変換したものが、以下のサイトで配布されています。残念ながら 0.7 系ではまた language ファイルの形式が変わっており、これは使用できなそうです。

付属ドキュメント。

付属ドキュメントのうち、以下の4ファイルが訳されています。

日本語化のヒント。

0.3.x 版では subs.pl でフォームパース等の処理を行っていたので、この部分で Jcode モジュールによる文字コード変更をかけていましたが、 0.7.x 版では必要になる都度、 CGI モジュールの parse および cookie メソッドを呼ぶようになっています。 0.7.x 版の日本語化は、次のような方針を採るのが良いように思われます。

  • (1) english.pl を日本語化して、 japanese.pl を作成。
  • (2) CGI モジュールを継承した Japanize::CGI モジュールを作成。
    • parse メソッドでは jcode($self->SUPER::parse)->euc などとして文字コード変換済みのデータを渡す。
    • cookie メソッドでは jcode($self->SUPER::cookie)->euc などとして文字コード変換済みのデータを渡す。
  • (3) *.cgi ファイルの use CGI; を use Japanize::CGI; に、 $query = new CGI; を $query = new Japanize::CGI; に変更。
  • (4) yawpsrc.pl で指定している codepage => 'iso-8859-1' を codepage => 'EUC-JP' に変更。

(2)、(3)については、新しいモジュールをおこすよりも CGI.pm を改変したものを同梱する方が良いかも知れません。 CGI と同一ディレクトリに設置してやれば、どの CGI ファイルも use lib '.'; をしているので、同梱版が使用されそうです。(2)の方法だと cgi ファイルが追加される度に(3)の修正が発生しますが、改変した CGI.pm を同梱してしまえばこれは不要になります。

その他のPerlによるポータルシステム

 スラッシュライクなポータルシステムは他にもあります。YaWPSは当時、スラッシュコードライクでDB不要のものとして最も使い易くカスタマイズし易そうに見えたので採用しましたが、各システムともどんどん変わってきています。

コメント

コメントスパムがひどいためこのページのコメント欄を削除しました。コメントしたい方は暫定的に「掲示板」のページへお願いいたします。