perlで自作のCGIチャットを作り、チャットを利用してあるテーマへのアイディアを思いつくままに出してもらうのですが(対話ではなくただ各々が他人の出したアイディアを見ながら自分もアイディアを出す)、それぞれのコメントを母コメントとして、その発言後○秒〜○秒までに出された発言の数がA以上か未満かで母コメントを2つに切り分けしてA以上のものを再度画面に表示させたいのですが、2つに切り分けするところまでの方法を教えてください。細かいプログラムではなく大筋で結構です。ポイントはずみます。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/09/15 20:35:57
  • 終了:--

回答(3件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012004/09/15 20:41:50

ポイント20pt

http://www.rescue.ne.jp/cgi/trees/

CGI RESCUE チャレンジCGI - 電子掲示板 ツリーズ Trees

チャットよりもツリー形式の掲示板のほうがよろしいのではないでしょうか?

id:y0k0

コメントありがとうございます。それぞれのコメントを勝手に母コメントとして切り分けていき、一つのコメントにレスをつけるという形式をとらないのでツリーでは。。あと手動で判別するというのも不可です。代替案でもいいので引き続きお願いします。方向性が見えないもので。。

2004/09/15 20:54:32
id:upride No.2

upride回答回数220ベストアンサー獲得回数12004/09/15 21:11:27

ポイント100pt

for ( 1 からすべてのコメントのカウント ) {

a = ある母コメント(ID)

b = a にぶら下がるコメントのリスト(配列)

for ( i = 1 から bの配列のカウント数 ) {

if ( bがaの発言時間より大きく、かつ bがaの発言時間+○秒より小さいなら ) {

発言グループとしてカウントアップ

else {

発言除外グループとしてカウントアップ

}

}

a の発言グループ ○個

a の発言除外グループ ×個

表示処理

}

コメントの階層構造がよくわからなかったので

母に対する子たちを判断し分別するイメージです。イメージちがいますかね

id:y0k0

ありがとうございます!!

やらなければいけないことが見えてきました。イメージもあってます。丁寧に解説していただきありがとうございます。とりあえずプログラムを書いてみます。また教えて下さい。ほんとにありがとうございます!

2004/09/15 21:28:08
id:aki73ix No.3

aki73ix回答回数5224ベストアンサー獲得回数272004/09/15 21:13:41

ポイント100pt

発言をまず1つ単位でIDを持たせて管理します

パラメータとして、通常のチャットのような発言時間、発言者情報以外にも、チェーン情報を配列として持たせます

配列は、ループバッファ方式にしてタイムアウトしたものを削除し、開いてる場所に情報を書き込むようにします

母コメントに対してレスをつけた場合、チェーン情報として母コメントには最後にコメントされた発言のIDを、子コメントには母コメントのIDを記録し、これを一定時間ごとに、タイムアウトしたものは削除し、ソートして出力するようにしてはいかがでしょうか?

なお、発言時間を現在時刻と比較することによって、タイムアウトしたかどうかを確認する方法もありますし、タイムアウトの持ち時間を持たせておいて、リフレッシュごとに差分の時刻を引いてゆき発言があった場合は、持ち時間を初期化、なければ減らしてゆき0未満になったら削除グループに移動するという2つの方法が一般的だと思います

id:y0k0

なるほど。タイムアウトですか。

思いつきませんでした。

ありがとうございます!大変参考になりました!

2004/09/15 21:29:45

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません