From: TAKAHASHI Masayoshi Date: 2001-01-24T22:49:25+09:00 Subject: [ruby-list:27307] Re: 掲示版を作ってみた オブジェクト指向に入門中の高橋征義です。 Fujikawa Norihide さん: > 過去MLの記事などを参考に、 > いたって普通(?)の掲示版(Normal BBS β版)を作ってみました。 > > http://www.tensyuu.com β3版を拝見しました。 http://www.tensyuu.com/ruby/normalbbs.txt > ところで、プログラミング入門(原 信一郎 著)の173ページに、 > グローバル変数は使わない方がいいと書いてありますが、、、 > グローバル変数をこれでもかっていうくらいに使っていて、 > うーーむ、やはり書き直すべきですかねぇ。 どうもグローバル変数はなくなったようですが……。 えーと、本当は「『グローバル変数』を使わない」ではなく、 「グローバルに変数を使わない」、なのです。 500行くらいのプログラムのうち、半分以上がトップレベルにあると、 ローカル変数も実質グローバル変数みたいなものになってしまって います。なので、これはあんまりうれしくありません。 それならば、いっそのこと cgi と cookie くらいをグローバルにして、 あとは細かくメソッド化する、とかの方が、すっきりしたプログラム になるかもしれません。 あと、そこで使っているファイルロックの使い方は、場合によっては 問題があるかもしれません。というのは、何かの事情でロックされた ままCGIが死んだとき、ずっとロックされっぱなしになる危険性がある からです。それでいいならいいんですが、物によってはこれを避ける ため、一定期間たったロックはアンロックしていいことにしたり します……が、ここでもまた微妙な問題があったりします(ややこしい)。 詳しくは、大崎博基さんの「Perlメモ」の、 排他制御(ファイルロック)を考える http://www.din.or.jp/~ohzaki/perl.htm#File_Lock をどうぞ。Perlの話ですがRubyにもそのまま当てはまります。 また、HTMLのエスケープには CGI::escapeHTML(string) が 使えます。あ、でも、これだと文字列をまるごと複製してしまう のか。 置換したいHTMLが大きくなりそうで、パフォーマンスを気にする んだったら使わない方がいいんでしょうか? 高橋征義 (TAKAHASHI Masayoshi) Email:maki@inac.co.jp