このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

コメント数の表示

発言者:田中求之
( Date Tuesday, October 08, 1996 19:58:35 )


ためしにこの会議室のトップページで、各発言のコメントの数を表示するように
してみました。発言タイトルの後ろの [00] という部分がコメントの数を示して
います。

しかし、さすがにトップページの表示が遅くなりますねぇ。まぁ、しかたない
んですが。


奥村リョウ さんからのコメント
( Wednesday, October 09, 1996 00:05:55 )

をを、素晴らしい。
速度も、我慢できないほど遅いというわけではありませんね。

これは、NAMEタグをカウントするとかしてるのでしょうか? 

田中求之 さんからのコメント
( Wednesday, October 09, 1996 00:29:09 )

>これは、NAMEタグをカウントするとかしてるのでしょうか? 

EasyBBS の場合は name タグをカウントするのが一番良いのですが、この会議室の
場合は、古い発言には name タグは使われていません(「最近の発言状況」のサポー
トは最近のことなんですよ)。

そのかわり、メッセージ中のタグは無効になる(タグは表記用のものに置き換わっている)
のを利用して "</B> さんからのコメント" という部分を数えるようにしています。

カウントには Tanaka's osax 1.0 の countKeywordsInFile を使い、その結果
を NumToDigisStr に通して2桁の表記にそろえたものを表示させています。

表示の仕方などは、もう少し見やすいように工夫した方がよいかもしれませんね。
本当はテーブルタグを使って綺麗に並べて表示すればいいのでしょうが、テーブルタグ
があんまり好きじゃないのと、単にスクリプトを書くのが面倒だったんです (^_^;;

稲垣@信州大学 さんからのコメント
( Wednesday, October 09, 1996 16:39:48 )

 コメントの数を付け加えたバージョンは公開されているのですか?

 今、EasyBBS++を使わせてもらっているのですが、こちらへの移行
に関してはどのような計画でしょうか?


田中求之 さんからのコメント
( Wednesday, October 09, 1996 19:11:27 )

まず EasyBBS++ についてですが、コメント数の表示に関しては、次のバージョンで
サポートされるはずです。

スクリプト版については、別の発言で触れた、DX および STAR の re-entrancy 対策
版で組み込む(ただし、オプションとして)予定ですが、比較的簡単に追加できますよ。

あとで、サンプルスクリプトをコメントします

田中求之 さんからのコメント
( Wednesday, October 09, 1996 20:25:02 )

EasyBBS DX にコメント数の表示を追加するためのスクリプトです。

なお、Tanaka's osax 1.0(fc) が必要ですので気を付けてください。1.0b10
では動きません。

makeList ハンドラーを以下のものに置き換えます。スクリプトの真ん中あたりにある
set cmX to .... の部分が、コメントの数を数えている部分です。


--- 検索結果のリストを元に、表示用のリストに仕立てるハンドラー
on makeList(myList)
  global msgFldr, myRoom
  
  set myData to {}
  repeat with myF in myList
    set tgF to alias (msgFldr & myF)
    set myTitle to getPageTitle tgF
    if myTitle = "" then set myTitle to myF
    
    set cmX to NumToDigitStr (countKeywordsInFile tgF keyword "<a name=" with senseCase) Digit 2
    
    set end of myData to "<li><b><a href=\"bbs.acgi?r=" & myRoom & "&" & myF & "\">" & myTitle & "</b></a><TT> [" & cmX & "]</TT><br>"
    set end of myData to "<TT>( " & ((getFileModDate tgF) as string) & " )</TT><p>"
  end repeat
  
  set AppleScript's text item delimiters to return
  set myData to myData as string
  set AppleScript's text item delimiters to {""}
  
  return myData
end makeList

稲垣@信州大学 さんからのコメント
( Wednesday, October 09, 1996 22:07:45 )

 早い返答ありがとうございます。

 EasyBBS++では次のバージョンで対応なのですね。
 今のところ、EasyBBS++でエラーもなく、反応も早いので
EasyBBS++で改良されるのを待ちます。


前薗 健一 さんからのコメント
( Thursday, October 10, 1996 01:12:41 )

>稲垣@信州大学 さん
> 今、EasyBBS++を使わせてもらっているのですが、こちらへの移行
>に関してはどのような計画でしょうか?

今、やっています。 (^^;
少々お待ち下さい。

田中求之 さんからのコメント
( Saturday, October 12, 1996 21:08:25 )

EasyBBS++ の次のヤツではコメント数はファイルから name タグを数えてます?>前さん

考えたら、会議室用のファイルのリソースにコメントの数を記録しておくカウンターを付け
るという方法がありましたね。これなら少しは早くなるだろうな。

DX や STAR のファイルが使えるようにするという互換性重視なら、name タグを数える
しかないけど。

前薗 健一 さんからのコメント
( Saturday, October 12, 1996 23:31:07 )

++ では

( タグをいれると後が怖いので簡略化しています )
1.a name= をサーチする。
2.文字列の長さの判定。( a name="YYMMDDhhmmss" )
3.文字列が "YYMMDDhhmmss" の形式になっているかの判定

以上の条件を満たしたら、発言数のカウントを増やすというロジックです。