|
Backnumber May, 2006 April, 2006 March, 2006 February, 2006 January, 2006 December, 2005 November, 2005 October, 2005 September, 2005 August, 2005 July, 2005 June, 2005 May, 2005 April, 2005 March, 2005 Feburary, 2005 January, 2005 December, 2004 November, 2004 October, 2004 September, 2004 Augsut, 2004 July, 2004 June, 2004 May, 2004 April, 2004 March, 2004 February, 2004 January, 2004 December, 2003 November, 2003 October, 2003 September, 2003 August, 2003 |
- HMDT archive-
|
|
シイラ nightly build 040831。
まず、Hetima さんに指摘してもらった方法で、クラッシュの問題を回避。これが正しい方法かどうかは分からないが、とりあえずクラッシュしなくなったと思う。次は yukishiro さんに送ってもらったパッチで、ダウンロードパネルの表示を改善(選択した文字列が白抜きになった)、複数行選択可能、などなど。 近いうちに 0.9.3 を出したいです。が、ローカライズが非常にてこずってたり。 |
|
昨日のシイラのビルド、古い方が入っていたようで、申し訳ありませんでした。最近ミスが多い。駄目すぎです。落ち込みます。 |
|
でも気を取り直して、新しいビルドを。シイラ nightly build 040827。
メールや掲示板で指摘していただいた問題を集中的に直してます。エラーログがあると、ほんと速いです。 |
|
目下のところ一番の問題は、掲示板で指摘のあった、「スターアライアンスのページ(http://www.staralliance.jp)で、検索ボタンを押して表示されるウィンドウを閉じるとクラッシュする」というもの。これ、再現率 100% です。 かなり時間を割いて調べてみたんだけど、、、う〜ん分からねぇ〜。どうも想像するに、ウィンドウを閉じるとそこに貼付けてある WebView が解放されるんだけど、その WebView に向けてシステムがメッセージを投げているようだ。ということは、システム内部にまだ参照が残っているということ?原因が分からないので、ウィンドウを閉じてから WebView を解放するまでのシナリオを、もう一度じっくり洗い直す必要がありそうだ。 これが解決すれば、かなり安定すると思うんだよ。ちなみに、安定性の問題を解決するために一番必要なものは、「再現率 100% で問題を発生させる手順を突き止めること」なんだ。そういう意味では、スターアライアンスのページを教えてくれたのは、グッジョブです。 |
|
シイラ nightly build 040826。
エラーログのレポートのおかげで、がんがんと進んでおります。送っていただいた方々、ありがとうございました。 |
|
あれ、sourceforge の CVS つながらん。接続が拒否される。なんで? |
|
シイラのデバッグレポート、たくさん送っていただいてありがとうございました。いやー、助かる!この情報が欲しかったんだよ。問題の箇所が一目瞭然だ。もっと早くやればよかった。 |
|
というわけで、シイラ nightly build 040825。
最初の修正は、コマンドキーやオプションキーとともに、リンクをクリックしたときに起きていた問題を修正したもの。2 つ目は、ドラッグ時に発生していたクラッシュを修正するもの。たぶんこれで直ると思うんだけど。 3 つ目は、問題を報告してもらったけど原因を特定できなかったので、さらに詳しい情報を取得するためにデバッグ表示を増やしたもの。同じ問題が発生したら、もっと詳しくデバッグ文が出るはず。ということで、エラーが出た場合はレポートをよろしくお願いします。 |
|
ごめんなさい。昨日のシイラ起動できなかったと思います。ビルドのときに、リリース用に切り替えるのを忘れていた。ゼロリンクの罠にはまってしまった。 ということで、シイラ nightly build 040824 をリリース。機能は 040823 と同じく、デバッグウィンドウの追加。デバッグウィンドウにエラーログが表示されたら、レポートをお願いします。 |
|
引っ越しは、最後の荷物が家に届いた。ダンボール箱に囲まれて生活中。 |
|
続いてシイラ。掲示板での不具合報告ありがとうございます。で、修正すべくテストを繰り返しているんだけど、なかなか再現しないんですよ、これが。 プログラムの修正は、バグの報告を受けたら、それを再現させることから始まるんだ。単純なバグならすぐ再現させて問題の箇所を見つけることができるんだけど、最近はなかなか再現させることができない。やっかいなバグが多い。 じゃどうするかというと、エラーログが欲しい。デバッグに必要な情報はエラーログに出てくるんだ。ということで、シイラ nightly build 040823 でデバッグウィンドウを追加してみた。 「ウィンドウ→デバッグ」メニューで、デバッグウィンドウを表示する。ここにアプリケーションからのエラーログを表示するようにした。さらに、メールでレポートできるようにしてみた。 ということで、お願いがあります。シイラを使っていて何か不具合が発生したら、デバッグウィンドウをチェックしてもらえないでしょうか。そして、何かしらメッセージが出ていたら、メールでレポートしてもらえないでしょうか。その時に、どういう動作をしたか書いてもらうと助かります。また、クラッシュした場合は、クラッシュレポートをコピーしたものを送ってもらえないでしょうか。長くてもかまわないです。それが必要なんです。お願いします。 |
|
ちなみに、デバッグウィンドウには NSLog() の内容を表示している。NSLog() で表示される文字列を、取得する方法を調べるのがすごく手間取った。始めは、別プロセスを立ち上げてパイプでつないでやるか、と思ったけど、なんかうまくいかん。 調べまくった結果、_NSSetLogCStringFunction() を使うと実現できるらしい。こんな感じで使っている。 (sample)
_NSSetLogCStringFunction() で関数を設定してやると、NSLog() がその関数を呼び出すらしい。 |
|
ネットワーク開通!いやー、ADSL って速いっすね。これであとは、船で送った荷物が届けば、完全復活だな。 |
|
シイラ nightly build 040816。
前回のビルドはとても安定していなかったようで、申し訳ないです。ソースコードはそんなに変えてないはずだったのだが。原因を考えたんだけど、これかも?というのが、Mac OS X 10.3.5 と開発環境。OS が 10.3.5 にアップデートして、開発環境である Xcode も 1.5 にアップデートしたでしょ。OS はアップデートしたんだけど、開発環境のアップデートは後回しにしていたんだよな。両方最新に合わせてビルドしてみたので、これでなにか変わってくれるとうれしいのだが。 あとは、その他いろいろ機能強化。最後の、画像のアニメーションに関する設定の無効化というのは、環境設定にアニメーションを停止、っていう設定があったけど、どうも Web Kit が未実装のようなので、とりあえず無効化した。最初のバージョンでは効いていたような気がするんだけどなー。 |
|
ネットワークが開通したので、久しぶりに CVS をアップデート。これからは、毎回やります。 |
|
あにさん、koh さん、バスケさんと、こっそり飲み会。楽しかったです。 ネットで知り合った人に実際に会うと、日本に戻ってきてよかったな、と思いました。 |
|
シイラ nightly build 040813。
タブを閉じるときに問題があったのを修正したり、いくつかのメモリリークを取り除いたり、いろいろ手を講じてみたんだけど、どうでしょ?こちらでテストする分には、とりあえず落ちたり制御不能になることはなくなったと思うんだけど。 |
|
ついでに、メモリの使用量の話。 アクティビティモニタとかでシイラを見ていると、どんどんごんごんメモリの使用量が増えていくと思う。それも、数 10 MB の単位で。これを見ると、やばいよなぁ、と思うよね。 前から気になっていたので、徹底的に調査してみた。その結果、シイラのプログラム側での致命的なメモリリークはないと思う。多分。つまり、メモリの使用量が増えていくのは、Web Kit の仕様ということだ。Safari も同じぐらい使ってるし。 そんなにたくさんメモリを何に使っているのか?それはキャッシュだ。キャッシュとは、取得するのに時間がかかるリソースをメモリ上やディスク上に置いておくことで、スピードを上げる技術のこと。 たとえば、ネットワークの先に置いてある画像を取得するのは時間がかかる。そこで、一度取得したら、ディスク上に置いておき、次回からそれを使う。さらに、ディスクへのアクセスは時間がかかる。そこで、一度読み込んだ画像を、メモリ上に置いておく。また、画面上に文字を書くときは、フォントからビットマップを作り出すので、時間がかかる。そこで、いったんビットマップに落とした文字列を、メモリ上に置いておく。他にも、ファビコンのキャッシュとか、履歴のキャッシュとか。 こんな感じに、Web Kit はさまざまなキャッシュを使っている。キャッシュってのは効果が大きい技術で、これを使うと劇的に速くなる。その代償として、メモリの使用量は増える。 シイラは、キャッシュの状態を表示するために、キャッシュパネルを装備している。また、Safari もデバッグメニューから、キャッシュパネルを表示することができる。Safari のキャッシュパネルには、WebFoundation Caches と WebCore Cahces という 2 種類があるでしょ。前者はネットワークリソースのキャッシュで、後者はレンダリング結果のキャッシュだ。そしてシイラのキャッシュパネルがいまのところが表示しているのは、ネットワーク上のリソースのキャッシュだ。 これが、増えまくるメモリの使用量の正体だ。このキャッシュが、Safari やシイラのレンダリング速度を支えている。とはいうものの、やっぱりメモリ増えるのはいい気分ではないよね。そこで、シイラの次のバージョンでは、キャッシュパネルを拡張して、できる限りのキャッシュを消すオプションを付けてみようと思う。できるかどうか分からんけど、調査はしてみる。 |
|
Web ページ更新チェッカーとして有名な、MacFeeling さんの WebPatrol がシイラの AppleScript に対応してくれました。ありがとうございます。 |
|
シイラ nightly build 040812。
掲示板の方で、最近のビルドを使うとタブブラウジング中に問題がでると報告いただきました。ありがとうございます。ただいま修正してますけど、原因が特定できてないです。とりあえず、今回のビルドでは怪しいところを外したので、また報告していただけると助かります。 起動時間は少し短くなったと思う。まだまだ最適化を進めていきます。 ちなみに、環境設定で Safari のブックマークを表示しないようにすると、起動時間が短くなるよ。 |
|
アプリケーションの実行速度を改善することと、開発サイクルについて。 アプリケーションのパフォーマンス改善って、地道で複雑で難しいもの。でも、効果の現れ方は劇的なので、ぜひともやらなくてはいけないんだよな。 改善する際の鉄則は、どこが遅くなっているかを調べること。デスクトップアプリケーションならば、「ディスクアクセスをするところ」が、大体遅いです。ドキュメントの読み書きだけではなく、リソースの読み込みや、初期設定の保存とかも含まれる。これらがボトルネックになることが多い。 でもこれって、速くすることができない処理なんだよね。読み込みを速くするには、OS レベルに手を入れるしかない。または速いディスクを買ってもらうとか。そしてさらに困ったことに、処理を省略することもできない。たとえば、ツールバーのアイコンの読み込みって結構時間がかかるんだけど、これを省く訳にはいかない。 じゃどうするかというと、「処理するタイミングをずらす」。時間のかかる処理を一カ所に集中させないで、少しづつずらしてユーザの邪魔にならないようにするんだ。プログラムを書く立場からすれば、必要なリソースは起動時に一気に読み込んでしまうのが楽だし安全だ。でもこれをやると、起動時間がとても長くなってしまう。だから、リソースが必要なときに、必要な分だけ読み込むようにする。たとえば、シイラには環境設定やキャッシュパネルといった補助ウィンドウがあるけど、これらに関するリソースはユーザがこれらを初めて表示するときに読み込むようにすればいい。そうすれば速くなる。 だけど理屈ではそうだと分かっていても、これがなかなか難しい。ソフトウェアを作り始めるときに仕様がびったり確定していれば、始めからそれを意識して作れる。だけどシイラみたいに作りながら機能の追加・修正を行うタイプだと、なんともかんとも。この場合は、機能追加→ある程度で機能固定→とりあえず最適化・バグフィックス→また機能追加、、、っていうサイクルを回さなくてはいけない。 こういう進め方は、製品を作る場合はやってはいけない。締め切りが守れなくなるから。だけど、トライ・アンド・エラーを繰り返せるっていうことで、いい面もあるんだよね。シイラは特に納期が決まっている訳ではないので、もう少しこの方法でいくでしょう。そろそろ、0.9.3 に向けて、最適化とバグフィックスステージに入ると思います。 |
|
Apple が Darwin 8.0b1 のソースコードを公開していたけど、その中に WebCore-146.1 と JavaScriptCore-146.1 も含まれていた。気がつかなかったよ!WebCore のページは更新されていなかったからな。 WebCore-146.1 は、Safari 1.3、つまり Safari RSS と呼ばれているやつ、のコードになる。ざっと目を通すと、
ということが分かる。 逆に、Safari 1.3 でサポートされるけど、WebCore に含まれていないものは、RSS とページのアーカイブ機能か。これらは、WebKit か Safari アプリケーションのレイヤでサポートされるのでしょう。 ちなみに、HTML 編集機能は、KHTML だけで実装されているようにみえる。HTML を編集するには、DOM ツリーの編集と GUI サポートが必要になるんだけど、どっちも KHTML 内部にあるみたい。ということは、KHTML ベースのブラウザである Konqueror でも使えるんじゃないかな。 |
|
シイラ nightly build 040809。
ようやっと AppleScript に対応。とりあえず、HTML 取得、テキスト取得、URL の取得と設定に対応。 あと、SSL 接続のときに、鍵アイコンをステータスバーに表示。本当は Safari みたいにタイトルバーに表示したかったけど、やり方が分からなーい。標準の Cocoa ではサポートされないので、ハックしなくてはいけない。 |
|
ダイアルアップで更新作業しようとしたら、2 MB のファイルをアップロードするのに 30 分かかっても終わらない。どうにかネットワークがつながるとろを見つけて、更新中。 あと、生活環境を整えるためにいろいろ注文したら、お盆休みの影響で配送まで 2 週間かかるって。うぬぬぬぬ。 |
|
ようやく新しい家に入れたよ。だけど、まだ荷物が 1/3 ぐらいしか届いていなくて、ぜんぜん生活環境が整ってない、、、 |
|
ネットワーク環境も同じ。ADSL 申し込んだけど、あと 10 日ぐらいかかるって。がっくし。現在、ダイアルアップで接続中。2、3 年前までは、この遅さだったんだよな。 シイラ開発しているけど、この遅さではとてもアップロードできない。どこか、速いネットワークがあるところを探さないと。 |
|
シイラ nightly build 040803。
エンコーディングメニューに、Safari と同じだけのエンコーディングを追加してみた。正しく動作しているかは、それぞれの言語が分からないので、不明。たぶん、動くと思うんだけど。 |
|
いまだ家に入居できず、スーツケースを抱えて汗だくでホテルを転々とする日々。 でも、今度のホテルはネットワークにアクセスできるので、久しぶりに腰を据えて更新。 |
|
というわけで、シイラ nightly build 040802。
コピー・アンド・ペーストに関しては、何をいまさら、って感じだよな。このぐらいのもの、最初の公開時にやっておくべきことだ。ドラッグ・アンド・ドロップの強化は、ブックマークの詳細表示にある、画像からのドラッグとか。 前の作業から時間が経っているので、自分で書いたソースコードの解析から始めなくてはいけない。いちばん、落ち込む作業だ。 |
|
たまりにたまっていたメールは、いま読んでいるところです。 |