2004年09月12日 (日)

プレビューが完了しなくなったら

iBlog を 1.3.5 以前からそれ以降にバージョンアップしたときに iBlog のプレビューが完了しなくなることがあります。他にもある日プレビューリセットをしようとしたらそうなることもあります。

マウスポインターが虹色の丸に変わってプレビューボタンの左に「ぐるぐる」が出るのですが、しばらくするとマウスポインターは元に戻って「ぐるぐる」だけになります。そしてプレビューの結果が完成されていない状態なのです。

先日【篠の風】さんが iBlog 1.3.5 からの 1.3.9 へのバージョンアップの際にこれを体験し、見事解決されました。

詳しくはをご覧頂くとして、ここで用いられた二分探索法で原因になるエントリを見つけ出す操作の紹介を交えてまとめてみます。

まず原因についての考察から入ります。

私が直接体験したのは、PowerBook の HDD が一杯になり色々だめになった直後で一度、Elanさんの iBlog を 1.3.5 から 1.3.6 へバージョンアップするときに一度と、二回だけです。1.3.5 から 1.3.6 への移行は問題ありませんでした。けろちゃんの iBlog も 1.3.5 から 1.3.8 へバージョンアップしたことがありますがこのときも問題ありませんでした。ディスクが一杯になったのは全然状況が違うのでここでは対象外です。

Elanさんのときはあまり時間がとれなくて原因追及はできなかったのですが、コンソール(ユーティリティホルダーにあるアプリ)で見ていたら、文字列操作関連の部分でエラーが発生していました。そしてこのエラーが発生するとレインボーなしぐるぐる状態になっていまいた。つまり、文字列 -- 恐らくはユーザが入力した文字列 -- の処理に何か iBlog にとって不都合が起こっていることは確実です。【篠の風】さんのエントリにあるとおり、全くの初期状態の iBlog は問題がないので、ユーザが入力した文字列に問題があることが裏付けされます。更に 1.3.5 では OK でそれ以降は駄目ということは OS ネイティブの文字コード(Shift_JIS)と iBlog が 1.3.6 以降出力するようになった UTF-8 との関連であることは間違いがないでしょう。

ユーザが入力した文字列には細かく見れば色々ありますが、Shift_JIS -> UTF-8 絡みとなると次が考えられます。
  • ブログの説明文
  • カスタム CommonLib.js
    これは Shift_JIS -> UTF-8 絡みかどうかいまいち不明です。日本語を直接入れると不明な文字化け変換が施されます。しかし、文字化け変換でも処理は行われるので違うでしょう。
  • カスタム テンプレート
  • ナビゲーション項目
  • エントリの内容(タイトル、要旨、本文)
他と比べて大抵の場合ボリュームが大きいエントリの内容が原因なのかそれ以外が原因なのかを切り分けるには、(もちろんバックアップをとった上で)エントリを全て削除して、半角英数字だけのエントリを書いてみてプレビューをしてみればわかります。そこで成功すれば他は OK です。失敗するときは、一旦全ての設定を外して、一つ一つ戻しながら試せばよいでしょう。項目数が少ないのでこれはなんとかなります。

しかし多くの場合原因はエントリの内容にあります。【篠の風】さんもそうでしたし、他に解決された方もそのようでした。ある日プレビューできなくなったと報告されている方も新しいエントリを書いたらでした。報告されたもので原因がわかったのは全てこのケースでした。他は英語環境による回避などの手段を選ばれた(あるいは iBlog を諦めた)ので原因追求がされていません。t0moriさんの観察によれば、他の web ページからコピー&ペーストした内容が怪しいとのことです。Safari からコピーするとスペースかタブが変な文字として入れ込まれてしまうことがあります。これはかなり核心に迫った指摘でした。そして実際にそこが今までの報告例の原因でした。t0moriさん素晴らしいです。ほぼこれが原因の決定版だと思います。

さて原因はともかくとして、どのエントリがトリガーになっているかを探し出す必要があります。しかしエントリの数が多くてとても一つ一つチェックしていくことはできません。それに見た目には OK だったからこそ そのままにしてあったわけですから、今チェックしているエントリに原因があるのかどうか確信が持てないまま探しても見つけ出せない可能性が高くなります。

しかしここで挫折する必要はありません。たとえ 2000 個もエントリがあったとしても 11 回の試行でトリガーとなっているエントリを一つ見つける方法があるのです。4000 個のエントリでも 12 回の試行です。100 個のエントリなら 7 回です。


長くなりましたね。今日はここで切り上げて仕事に戻ります。次号をご期待ください。(^o^)/

Posted: 10:22    | Comment | Trackback


以下、類似エントリです。