View Full Version : 掲示板のログにpostgresを活用!?
ruby164
2001/10/07, 12:25 PM
このフォーラムに書き込みが無くて寂しいので・・・。
ぼく掲示板をRUBYで書こうと思っているのですが、名前、メール、WEB、Subjectに加えて本文を投稿できるシンプルなものを作りたいのですが、そのように複数の項目を投稿できるようにするなら、やっぱりpostgresやMySQLなどを使わないと出来ないですか?
ログを保存するのに、ただのテキストファイルにすると、書き込みはできても表示させるのに難がありますかね?
みなさんだったらどうやってログを書き込み&表示させますか?言語問わずお返事もらえるとうれしいです!
Perlの場合、
"$number<>$name<>$mail<>$url<>$title<>$message<>$pass<>\n"
等という形で1レコード1行で保存し、
($number,$name,$mail,$url,$title,$message,$pass,$dst) = split(/<>/,$line);
として取り出すのが一般的なようです。
Rubyでは同様の操作が出来るかどうか知りませんが、多分出来ると思います。
C言語では、文字列操作が面倒くさいので、各変数を1行ずつに保存したり、1レコード1ファイルにしたり、直接HTMLファイルに保存したりする方法をよく見かけます。
データベースを使うのも一つの方法です。どこかに、データの量が多くなるとデータベースを使ったほうが速くなると書いてませんでしたっけ?
そう言えば、PHPの場合は、データベースを使うのが楽そうでした。
ruby164
2001/10/08, 12:44 AM
Perlでも$hogeが変数ですよね?
PHPと同じですね。Rubyだとhogeと$hogeで違ってたり、、ゴッチャにナッチャいます
なんせ初心者なのでくだらない質問しちゃいますけど・・・
/ 〜 /は正規表現ですよね?
splitメソッドはRUBYにもあるのでできると思うのですが、そういう場合、もし名前とかタイトルなんかに"<>"とか書いた人がいたら順番がずれちゃいますよね???
たとえば、名前が「な<>まえ」なんて書いたひとがいたら、
"1<>な<>まえ<>hoge@hoge.com<>http://www.hoge.com/<>たいとる<>本文<>ぱす<>[改行]"
になって、$mailに"まえ"が代入されてしまって、、、
その辺はエラー処理なんかで回避したらいいのでしょうか?
ばからしい質問ですみません・・・
といいつつそんなのでけっこう悩んでるのでお返事もらえるとすっっごくうれしいです :-D
あっっ・・・hoge.comって本当にあるんだ・・・。
usopion
2001/10/08, 01:08 AM
うちは
"<>"の代わりに"\t"(タブコード)を使ってます。
もし入力されたデータの中にタブコードが混ざっているなら、
保存する前にスペースにでも変換するか、削除してあげます。
これなら、ログファイルも自然にタブ区切りテキストになって、再利用もしやすいです。
ruby164
2001/10/08, 01:30 AM
\tのほうが入力欄に書いちゃう人少ないでしょうし、、、いいですね!再利用しやすいっていうのもいいですね。
<>でやるのも、試しに両方とも作ってみようと思います。
うまくいったら、C言語でもやってみようと思ってます。RUBYとか先にやっちゃうとC言語の文字列処理のめんどくささに参っちゃいます。
でもプログラミング、おもしろ〜〜〜い!
あ、なんかここにスレッドたてるの間違ってたかな・・・。すみません
cucu81
2001/10/08, 05:17 AM
基本的には掲示板程度にpostgreSQLを使うのは、損だろうね。
使うとすればスピードが速いmySQLということになるでしょう。
ただし、たとえば、このvBullitinのように掲示板にmySQLを使うと、
なんといっても、投稿データが扱いにくくなってしまうよね。
「投稿データが壊れた」とかいう場合も、テキストデータなら
復旧させやすいけれど、SQLの(しかもリモートな)環境では
復旧させにくいね〜。
ちなみに基本的に掲示板のような場合、大抵は投稿データは100〜300k程度で切ってゆき、どんどんログ化してゆくのが普通なので、データベースなんぞ使うより、各言語、CGI→Apacheモジュール版
へ切り替えることを考えるほうが、遥かに効果があります。
たいていなら、
<→<
>→>
"→&quot;
などと変換するので、<>が使えるということでしょう。
ほかに、半角コンマ「,」を区切りに使ってるのも見たことがあります。その場合、投稿された文章の中にある半角コンマは、全角コンマに変換されてました。
ruby164
2001/10/09, 12:10 AM
はい。eruby + mod_rubyを使いたいのですが、自分でサーバたてるか有料サーバかりないと使えるところすくないんで、とりあえずCGIで頑張ってます。CGIの勉強にもなりますし。
postgreSQLも、じつは興味本位という感じでもあります。活用できるなら、多少面倒くさくても、SQLの勉強にはなるかなと。
全角・・・全角という手がありましたね。う〜ん、どれがいいんだろう。色々試してみます。
なんだかみなさんからいろいろなアイデアもらっているのに無知なせいでそのアドヴァイスをなかなか活用できず、申し訳無く思っております。くだらない文法ミスなんかしてると「向いてないのかな・・・」なんて思ってしまいマス:(
webmaster
2001/10/09, 01:55 AM
eruby、mod_rubyも導入を検討しています。shared_htmlでのアクセスになります。
ですが、mod_rubyはPHPとは違って、無料・有料問わず共用バーチャルサーバー用には向かない点があります。
現在の所、悪意を持てば、全体の環境変数を変えられるため、他人のスクリプトのために、自分のスクリプトの動作に不具合が出ることがあります。
上記をご了解の上でしたら、利用可能になれるようになります。
ruby164
2001/10/09, 12:28 PM
ありがとうございます!!やっぱりこちらはサポートがすばらしいです!感動です!
ぼくの場合、悪意なんてものはサラサラないのですが、中にはそういう人も混ざっているかもしれませんね。全体に迷惑がかかってしまってまでそれを望みませんので、まだ導入していただかなくても結構ですが、
>現在の所
とありますが、バージョンアップによってその仕様が変わってもっと安全になることも考えられるのでしょうか。それならそれを切望する限りです!
でも使いたい・・・
悪意なんてまったくありませんーー!
webmaster
2001/10/09, 08:11 PM
悪意とは書きましたが、「悪さするスクリプト」と表現した方が良いかもしれません。
問題(高速に実行できる反面)は、変数が初期化されない点で、他人の使った変数が、自分の変数に反映される、といった症状になります。
仕様には明記していませんが、shared_html内で、拡張子「.pl」でmod_perlが使えます。明記していないのは、上記理由で実用には向かないためです。
>現在の所
これは、開発元頼みです。
ruby164
2001/10/09, 08:48 PM
と、いうことは、忘れずに自分で初期化していればその誤作動は防げるということですね?それを気をつけることで解消するのであれば、自分としては問題ないかな、、と思います。
しかしそれはやはりデータ型を指定しないで良いという事が裏目にでたのでしょうかね・・・。
どちらにしろ、導入していただけるとうれしいです!
その辺は注意してスクリプト書きますので!
vBulletin® v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.