monazilla仕様のよく分からない点

Janeとか2chMateなんかだと自分のレスにマーク付くよね。
でもあれを正しく実現するためのmonazilla仕様が見当たらない。
つまり「自分が今書きこんだレスが実際に何番のレスとして書き込まれたのか」を正確に知る手段が分からない。
正しいやり方知ってる人がいたら誰か教えて欲しい。
以下考察。


とりあえず思いついたのはこういうやり方。このやり方では問題があるので後述する。
(1)書き込み直前にスレをリロードし、現在何番まで書き込まれているかをチェックする。
(2)書き込みを行い、書き込んだ内容を記録しておく
(3)スレをリロードし、書き込み前から増えたレスを抽出する
(4)そのうち書き込んだ内容に一致するものにマークする
問題点
(A)2chでは書き込み時にレス内容は若干加工される。
 例えば改行がbrタグに置き換わるとかレス番参照がリンクに置き換わるとか。
 これは「書き込んだつもりの内容から改行を全部除去したもの」と「書き込み後の内容からタグを全部除去したもの」が一字一句完全一致することを期待しても良いレベルなのか?
(B)ケコーンすることがある。
 書き込み直前のリロードから書き込み直後のリロードまでには時間が掛かる。長ければ数秒かかることがあり得る。
 何か面白いレスがあった時に自分が「www」とだけ書き込んだとして、この数秒の間に「www」と書き込んだ人がいた場合、「www」という書き込みが複数出現することになる。
 この状態になると、何番の「www」が自分の書き込みなのかを知る手段がない。
この問題点を解決するために4以降を強化する実装を考えてみる。ただしこの方式は不完全。
(4)3の全ての書き込みについて書き込んだであろう内容との編集距離を計算する
(5)編集距離が最短の書き込みが1つであればその書き込みが自分の書き込みである。
 もし(A)による書き換えで数バイト程度の書き換えが起こっていたとしても自分の書き込みが編集距離最短であることに違いはないはずである。
 この方法では自分の書き込みが「無かった」時に手近な異なる書き込みが選択されてしまう可能性があるが、それはないことを期待する。
(6)もし編集距離が最短の書き込みが2つ以上ある時は一番前の書き込みを選択する。
 全く同じ書き込みが2つ存在している原因として考えられるのは、ケコーンかコピペ荒らしである。
 コピペ荒らしは自分の書き込みよりも必ず後であることが期待出来るので、先勝ちにすれば自分の書き込みである可能性が極めて高い。
 ケコーンはどうしようもないのでとりあえず適当にマーク付けておく。正確に知るための仕様がないならケコーン時に正確に自分のレスを特定することは出来ないはずであって、つまり誤マーク上等でマークする。
本当に正しい方法が存在するならばそれがいいのだが、無いなら無いで、既存のアプリも上記方法で実装されているなら誰か教えて欲しい。
(追記)
JaneStyleにて動作を確認したが、ケコーン時の手当はしていないことを確認。検証方法は以下の通り。
初心者練習スレにて「テスト」の一文をP2とJaneStyleで書き込み待機状態にし、どちらも書き込んでいない状態でdatを読み込む。
その後、まずP2で書き込み、P2の書き込みを読み込まずに全く同じ書き込みをJaneStyleからも行うと、JaneStyleの「自分」表示はP2の書き込みに付いた。書き込みの順序がP2→JaneStyleになっている(実は書き込みの順序が逆転していて正しく認識しているということはない)というのはIDの末尾がPであることで確認できた。
しかるに、JaneStyleの「自分」表示は、書き込み時点で書き込んだ内容をセーブしておき、書き込み直後のリロードで新たに追加されたレスのうち一番最初のものを選択する、という原始的かつ割り切った手法を取っていると考えられる。
これはもう、割り切るしかないな。

コメントを残す

メールアドレスが公開されることはありません。

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

CAPTCHA

*