この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2004年12月)

2004年12月1日

Lunascape 2.0 Preview Release 初回投稿日時: 2004年12月01日23時25分11秒
最終更新日時: 2004年12月01日23時26分22秒
カテゴリ: IE Mozilla Core
固定リンク: id=2004120100
SNS: (list)

Geckoエンジンにもスイッチ可能、とのことだが、イマイチ使い勝手が良くない。 例えば、フォーカスをGeckoエンジンにあわせておかないとホイールスクロールができないとか、中クリックで新しいタブを開けないとか、コンテキストメニューがとんでもなく貧弱とか。 Geckoエンジンはコンポーネントとして使うにはまだまだ完成度が低いのかも。 Geckoエンジンメインで使う人はFirefoxの方がよっぽど使いやすいと思う。

ちなみに、Geckoエンジンは、バグの修正具合から見て、1.7.x系かな。

休暇中 初回投稿日時: 2004年12月01日23時31分28秒
カテゴリ: 雑談
固定リンク: id=2004120101
SNS: (list)

とりあえず、本家関係者が軒並み休暇中のようで、現在、提出したものの止まっているパッチも多い。 どうしようも無いのでしばらくこっちもお休み。

2004年12月6日

Bug 3905 子孫にdisplay:list-item;があると、overflow: auto|scroll;の際に幅の算出を失敗し、横スクロールバーが出る 初回投稿日時: 2004年12月06日15時58分04秒
カテゴリ: Mozilla Core
固定リンク: id=2004120602
SNS: (list)

overflow: auto;、もしくはoverflow: scroll;を指定しているブロックレベル要素の子孫にdisplay: list-item;の要素があると、横幅の計算に失敗して横スクロールバーが表示されてしまっていた問題。

再現しなくなっていたのでworksformeとして処理した。

Bug 3919 ディスクキャッシュをオフにしているときの仮想メモリサイズ 初回投稿日時: 2004年12月06日16時29分27秒
最終更新日時: 2004年12月06日16時30分48秒
カテゴリ: Mozilla Core
固定リンク: id=2004120603
SNS: (list)

メモリリークがあるために仮想メモリが解放されていないのではないか、という問題。

報告者の方もそうだし、一般的にもちょっとPCに詳しい人の間でなぜかメモリリークという用語は知れ渡っているが、メモリの確保と解放に関して正しい知識を持っている人は少ないと思う。 詳しいことはコメントに書いているが、基本的には次のように考えて問題無い。

まず、プログラムがメモリを確保しようとした場合、この場合、OSから必要なメモリが逐次割り当てられる、つまり追加消費される。これは多くの人の考えている通りでおおむね問題無い。正確ではないが。

次に、プログラムがメモリを解放した場合、そのメモリ領域はただちに他のアプリケーションに対して解放されることは無い。これをそうだと思っている人は是非、C言語のメモリ管理に関する文書・書籍を読むことをお勧めする。それは非常識なことだからだ。

メモリの確保、解放というのは実は実行速度を非常に低下させる。そのため、OSはアプリケーションが解放したメモリを逐次、他のアプリケーションに解放することはありえない。アプリケーションが再びメモリを確保しようとした際に、その部分を再度割り当てる方が実行速度のパフォーマンスは上がるためである。

そのため、メモリ監視ツールを利用して、アプリケーションの外側からメモリリークを検出することはできないのである。アプリケーションは解放したがOSがパフォーマンスのために確保したまま、という領域を含んでいるからだ。

メモリ監視ツールは現在のシステム状況を表示するものであり、デバッグツールではない。メモリ監視ツールの数値だけを見て、メモリリークが発生したというのは間違いなので、このようなバグ報告は今後、しないようにしてもらいたい。

ちなみに、WindowsでMozillaを最小化状態から通常の状態に戻すとディスクスワップが激しい、という話を時々見かけるが、これもMozillaの仕様ではない。OSのパフォーマンスチューニング仕様の結果である。OSがユーザにとって最も良いと考える総合的なパフォーマンスを提供しようとした場合に、Mozillaの様にメモリを使うアプリケーションのウインドウが最小化されている(つまり利用していない)場合には、その内容をディスクへ移し、他のアプリケーションのパフォーマンスを向上させているためだ。復帰速度の高速化を望むなら、そのアプリケーションのウインドウを最小化するのは誤りである。

2004年12月7日

システム色のオーバーライド 初回投稿日時: 2004年12月07日21時25分20秒
カテゴリ: Mozilla Core
固定リンク: id=2004120701
SNS: (list)

prefs.jsからシステム色を上書きできる模様。 以下の名前の値を作り、string型で#で始まるHTML形式か、色名で指定できる。

  "ui.windowBackground",
  "ui.windowForeground",
  "ui.widgetBackground",
  "ui.widgetForeground",
  "ui.widgetSelectBackground",
  "ui.widgetSelectForeground",
  "ui.widget3DHighlight",
  "ui.widget3DShadow",
  "ui.textBackground",
  "ui.textForeground",
  "ui.textSelectBackground",
  "ui.textSelectForeground",
  "ui.textSelectBackgroundDisabled",
  "ui.textSelectBackgroundAttention",
  "ui.activeborder",
  "ui.activecaption",
  "ui.appworkspace",
  "ui.background",
  "ui.buttonface",
  "ui.buttonhighlight",
  "ui.buttonshadow",
  "ui.buttontext",
  "ui.captiontext",
  "ui.graytext",
  "ui.highlight",
  "ui.highlighttext",
  "ui.inactiveborder",
  "ui.inactivecaption",
  "ui.inactivecaptiontext",
  "ui.infobackground",
  "ui.infotext",
  "ui.menu",
  "ui.menutext",
  "ui.scrollbar",
  "ui.threeddarkshadow",
  "ui.threedface",
  "ui.threedhighlight",
  "ui.threedlightshadow",
  "ui.threedshadow",
  "ui.window",
  "ui.windowframe",
  "ui.windowtext",
  "ui.-moz-buttondefault",
  "ui.-moz-field",
  "ui.-moz-fieldtext",
  "ui.-moz-dialog",
  "ui.-moz-dialogtext",
  "ui.-moz-dragtargetzone",
  "ui.-moz-mac-focusring",
  "ui.-moz-mac-menuselect",
  "ui.-moz-mac-menushadow",
  "ui.-moz-mac-menutextselect",
  "ui.-moz-mac-accentlightesthighlight",
  "ui.-moz-mac-accentregularhighlight",
  "ui.-moz-mac-accentface",
  "ui.-moz-mac-accentlightshadow",
  "ui.-moz-mac-accentregularshadow",
  "ui.-moz-mac-accentdarkshadow",
  "ui.-moz-mac-accentdarkestshadow"

2004年12月10日

Bug 4076 ウインドウごとに入力言語を切り替えれるようにしてほしい 初回投稿日時: 2004年12月10日20時27分24秒
カテゴリ: Mozilla Core
固定リンク: id=2004121000
SNS: (list)

Windowsで多言語を利用している人、お待ちかね。 ウインドウごとに入力ロケールを切り替える設定を搭載した。 この設定はintl.keyboard.per_window_layoutで、デフォルトでは無効になっている。

ちなみに、このバグでついにパッチ採用件数が10になった。

2004年12月13日

Bug 2964 text-align:justifyが日本語に未対応 #5 初回投稿日時: 2004年12月13日13時30分10秒
カテゴリ: Mozilla Core
固定リンク: id=2004121300
SNS: (list)

ようやくcheck-inされた。

Jungshik Shinからはjustificable文字(justify時にスペースをとる文字)の定義に記号が入っているのはおかしいのではないかという話が出ている。現在はいわゆる全角記号は日本語の文字として扱っている。もし、これにより不自然な表示になっているところを見つけたらbugzilla-jpに報告してほしい。

2004年12月26日

Bug 4156 text-align:justifyで右端の文字にスペースを追加すべきではない 初回投稿日時: 2004年12月26日12時42分06秒
カテゴリ: Mozilla Core
固定リンク: id=2004122601
SNS: (list)

text-align: justify;を日本語でも機能するようになったが、そのおかげで今まで発生しなかった問題が発生した。日本語の文字が一番右側にある際に、右側の端が揃わない。これは、各文字に追加したextra spaceは右端の文字にのみ追加しないように修正することで解決できる。

しかし、行の右端のnsTextFrameの取得方法が不明なため頓挫している。通常状態では簡単に取得できるのだが、文字列を選択するとその関係が崩壊する。