ほめられて育つ子のためのネガティブコメントフィルタ、修正しました
なずき感性抽出APIを使用し、はてなブックマークに登録されたネガティブコメントを見ないで済むようにするためのFirefoxプラグイン、ほめられて育つ子のためのネガティブコメントフィルタ(以下、ネガコメフィルタ)ですが、一部バグがあったので修正しました。
- 一部のコメントが処理できない
- ネガコメかどうかチェック中は他のサイトへのアクセスがしにくい
インストールされている方は、再度ネガコメフィルタのサイトに行って頂き、ユーザスクリプトをインストールして頂ければと思います。
以下、バグ修正に関する詳細です。参考になればと思います。
一部のコメントが処理できない
ネガコメフィルタは、サーバサイドでPHPのプログラムを使用しています。流れとしては、以下のような感じです。
- JavaScriptでコメント抜き出し
- PHPでなずきAPIに投げ、結果をJavaScriptに返す
- JavaScriptでコメントの表示・非表示を設定
PHPからJavaScriptへデータを渡す際にXMLのエスケープをしていたのですが、その際にhtmlentities関数を使用していたため、XMLとしてエスケープする必要のない文字までエスケープしてしまい、XMLを受け取ったJavaScript側でエラーになっていました。
現在はhtmlentities関数ではなくhtmlspecialchars関数を用いているため、この問題は発生しなくなりました。
ネガコメかどうかチェック中は他のサイトへのアクセスがしにくい
JavaScriptで抜き出したコメントをGreasemonkeyのGM_xmlhttpRequestを使用してPHPに投げていましたが、その際すべてのコメントを非同期に処理していたため、大量のアクセスが発生し他のサイトへのアクセスがしにくい状態になっていました。また、処理中のはてなブックマークのページから他のページへ移動しても、裏にGM_xmlhttpRequestの処理が残ってしましまい、すべてのコメントのチェックが行なわれるようになっていました。
なずき感性抽出APIでの判定処理には多少の時間を要するため、並列処理を行うことのメリットはあまりないと判断し、GM_xmlhttpRequestの呼び出しを1回づつ行うように変更しました。つまり、ひとつのコメントがネガティブコメントかどうか判断されたあと、次のコメントをチェックに回すようになります。
このため、HTTPのアクセスが大量に発生することがなくなり、処理中に他のページにアクセスしても問題なくアクセスできるようになりました。また、他のページに移動した場合、それ以降のコメントのチェックは行われなくなりました。