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

新規発言を上に書き込むには?(初心者)

発言者:めぐみ
( Date Thursday, August 22, 1996 19:57:30 )


はじめまして。
CGI Kitのguestmsg2とdenngonnを試しに使わせて頂いています。
どちらも書き込みが下に入りますが、これだと発言がたまっていくと
新規発言を読むのにいちいちスクロールするのが面倒だと思うのですが
古い発言の上に発言を入れるにはどこをどう変えたら良いのでしょうか。
AppleScriptは初心者です。どうか教えて下さい。

田中求之 さんからのコメント
( Thursday, August 22, 1996 22:00:26 )

>古い発言の上に発言を入れるにはどこをどう変えたら良いのでしょうか。

ファイルに記録する部分を変更することになります。

現在は appendToFile を使って、ファイルの末尾に新しいデータを書き加えて
いくようになっています。この部分を変更し、まず記録用のファイルをいったん
すべて読み込んで、先頭部分に新しいデータを追加したうえで、元のファイルを
上書きで更新していく、ということになります。

この会議室の「最近の発言状況」のページは、新しい書き込みの情報が上に来る
ようになっていますが、上で述べたような、「データを先頭にくっつけてから書
き戻す」という処理でやっています。

なお、「単純にデータを先頭に追加する」という処理ではすまない場合があります。
それは、ページに、データ以外のヘッダー部分の情報も書き込まれている場合です。
この場合は、ページのヘッダー、データの記録、ページのフッタと3つのパート毎に
ファイルを分けておいて、表示の際には、この3つのファイルを合体させてページに
仕立てる処理が必要になります。

つまり、新しい書き込みがページの先頭に来るためには、ページの構成/表示方法と
いうレベルから作りなおさなければならないわけです。この点は注意が必要です。


スクリプト自体はそれほど複雑にはならないと思いますが、初心者にはわかりにくい
ところがあるかもしれません。

時間がとれれば、簡単なサンプルを書いてみましょう。

めぐみ さんからのコメント
( Friday, August 23, 1996 14:56:31 )

>現在は appendToFile を使って、ファイルの末尾に新しいデータを書き加えて
>いくようになっています。この部分を変更し、まず記録用のファイルをいったん
>すべて読み込んで、先頭部分に新しいデータを追加したうえで、元のファイルを
>上書きで更新していく、ということになります。

setで先頭に追加して、writeToFileで上書きしたら成功しました。
どうもありがとうございました。

田中求之 さんからのコメント
( Friday, August 23, 1996 21:04:51 )

うまくいってよかったです。

下手に考えるよりは、読み込み→追加→上書き という力任せの方が簡単で
速かったりするんですよね。

MT さんからのコメント
( Monday, August 26, 1996 20:29:12 )

>setで先頭に追加して、writeToFileで上書きしたら成功しました。

私もguestmsg2を使わせもらっていますが、具体的にAppleScriptをどのように
変更したらよいのでしょうか。

田中求之 さんからのコメント
( Monday, August 26, 1996 21:18:03 )

guestmsg2 の場合は、ファイル構造を変更する必要があります。ページのヘッダー部分
と、メッセージを記録しておくファイルを分けておき、記録用のファイルの先頭に
データを追加していくというスクリプトになります。

参考までに guestmsg2 を作り替えたもの(新しいメッセージほど上に来る)ものを
登録しておきます。なお、ファイル構成が変わっていますので、これまでのものとは
互換性がありませんので気を付けてください。

msg_header と msg_base ファイルは消さないようにご注意。

なお、メッセージを書き込んだあとは Reload しないと新しいメッセージが表示されない
という問題は残っています。これを解決するには、根本的に仕組みを変える必要があり
ますが、まぁ、それは皆さんにおまかせするということにしましょう(なんといっても
サンプルですから)。


→  guestmsg2_2

hikari さんからのコメント
( Tuesday, August 27, 1996 13:46:58 )

EasyBBSを使わせて頂いている、超初心者です。

EasyBBSの場合、メインのメッセージを上に残したまま、そのあとのコメント
部分だけを古い発言の上に表示させるには、どうしたらいいのでしょうか?

なかなか良い方法が思いつきません。お願いします。

田中求之 さんからのコメント
( Tuesday, August 27, 1996 14:32:29 )

EasyBBS の場合も、根本的にファイルの構造を変更することになります。

単純には、各発言毎に、オリジナルの発言(最初の発言)と、それ以降の
コメント発言を分けて記録し、表示の際には合成するということを行なう
ことになりますが、これですと、検索など、あらゆる仕組みを作り替える
必要があります。

これを回避するために、ファイルを読み込んだ後、コメントの先頭部分を
スクリプトで割り出せるようにしておいて、それをもとにデータを処理する
という方法もあります。

いずれの場合も、ファイルの構造を変更することになりますので、過去の
発言はすべて使えない(もちろん、手動ですべてのファイルを書き換える
なら別ですが)ことになります。

いずれも、スクリプトとしては、さほど難しくないのですが、EasyBBS
の仕組みを把握する(どこを書き換えたらいいのかを割り出す)のが大変
かもしれません(解説やサンプルの提示は勘弁してください)。


ただ、EasyBBS の場合は、コメントは時間の経過に伴って追加されてい
くのが自然だと思いますが? 話の流れと発言の順番が逆になると、非常に
読みにくいと思います。ですから、私自身は、今の方法を変更するつもりは
ありません。

hikari さんからのコメント
( Tuesday, August 27, 1996 15:08:56 )

説明、ありがとうございます。


>ただ、EasyBBS の場合は、コメントは時間の経過に伴って追加されてい
>くのが自然だと思いますが? 話の流れと発言の順番が逆になると、非常に
>読みにくいと思います。ですから、私自身は、今の方法を変更するつもりは
>ありません。

確かにそうなのです。
田中先生の説明を参考に、自分なりにやってみます。
おんぶにだっこという感じで、すいませんでした。

MT さんからのコメント
( Tuesday, August 27, 1996 22:37:19 )

guestmsg2の作り替えありがとうございます。
希望どおりに動作いたしました。
遅れましたが、お礼申し上げます。

>なお、メッセージを書き込んだあとは Reload しないと新しいメッセージが表示されない
>という問題は残っています。

今のところNetscapeでNetwork PreferencesのCacheの設定でCheck
 DocumentsをEvery Timeに設定することで対処しています。