2013年3月31日日曜日

Win8 SDK化進行中。

パッチを修正して、Win8 SDKを使っている場合にはWin8 SDKだけを使うように、そうでない場合にはDirectX SDKを使うように修正した上で、全てのパッケージをビルドしなおしている。

理由は使っているSDKが混在しているのでは、気分が悪いからだ。

2013年3月21日木曜日

SeaMonkeyで上手くいかないというのは勘違いだった

angleprojectのソースで、r1984以降では仕様変更があり動かなくなっていただけだった。

というわけで、gfx_angle.diffに含まれるangleを動作する最新trunkのr1835に戻し、Firefox 20.0β6はWin8 SDKだけでビルドした。この場合、Win8 SDKに含まれるD3DCompiler_*.dllをパッケージに同梱しなければならないので、そのようにも修正した。

なお、Win8 SDKに変更したところで、特段に動作が軽くなったりするわけではない。ただ、今後Win7 SDKが更新されていくことはないだろうし、Win8 SDKにはなにがしらの更新が行われるかもしれない。だから、Win8 SDKを使うようにすることが正しいと思う。


2013年3月18日月曜日

SeaMonkeyでは上手くいかなかったので諦めた

先のエントリはFirefoxでは上手くいったがSeaMonkeyでは失敗した。なので、諦めてDXSDKを使うことにした。

2013年3月16日土曜日

Win8 SDKだけではFirefoxのビルドができない件とその対策

最新のmozilla-buildを使うとWindows SDK for Windows 8を認識して、そちらを使うようになる。このバージョンからはWindows  SDKとDirect Xが統合されたので、別途DirectX SDKは不要となるはずなのだが、Firefoxのビルドに関しては訳あって別途Direct X SDK(June 2010)が必要とされる。

その原因はfirefoxに含まれるgfx/angleが廃止予定のd3dx9を使っているからだ。これは困る。

ところで、最新のangleprojectのソースではd3dx9を使用していない。 これを利用して、FirefoxをDirectX SDK(June 2010)なしでビルドしてみようと試してみた。

そのために必要な修正が必要となるソースは次の通り。詳しい修正内容はパッチを見てほしい。
  1. browser/installer/package-manifest.in DirectX関連dllをインストーラから外す。
  2. configure.in Windows SDKがインストール済みのときはDirectX SDKの検索をしない
  3. content/canvas/src/WebGLContextGL.cpp 最新のangleに対応するための修正
  4. content/canvas/src/WebGLProgram.h 同上
  5. content/canvas/src/WebGLShader.h 同上
  6. gfx/angle以下 angleを最新にする。
  7. gfx/gl/GLLibraryEGL.cpp d3dx9_*.dllの呼び込みを止める
  8. layout/media/Makefile.in Windows SDKがインストール済みのときは、リンクするライブラリディレクトリにDirectX SDKのディレクトリを含めないようにする。
  9. toolkit/library/Makefile.in 同上
苦労したところで分かったことは、こんな面倒なことをするくらいならDirectX SDKをインストールする方が簡単ということだった。
しかし、生来の捻くれ者の僕はDirectX SDKをインストールしないという方向でビルドしていこうと思う。

2013年3月14日木曜日

現在のuser.js

コピペして使っても構いませんが、自己責任でどうぞ。

pdfjsでフォントが埋め込まれていないpdfを表示するときには、 メイリオを使う方が良い

ということを教えてもらったので、フォントの指定を追加した。ありがたい。
 user_pref("browser.cache.memory.capacity", 65536);
user_pref("browser.link.open_newwindow", 3);
user_pref("browser.link.open_newwindow.override.external", 3);
user_pref("browser.newtab.url", "about:blank");
user_pref("browser.newtabpage.enabled", false);
user_pref("browser.search.openintab", true);
user_pref("browser.tabs.animate", false);
user_pref("browser.tabs.closeButtons", 1);
user_pref("browser.tabs.closeWindowWithLastTab", false);
user_pref("browser.tabs.showSingleWindowModePrefs", true);
user_pref("browser.tabs.warnOnClose", false);
user_pref("browser.tabs.warnOnCloseOtherTabs", false);
user_pref("browser.xul.error_pages.enabled", true);

user_pref("content.interrupt.parsing", true);
user_pref("content.max.tokenizing.time", 3000000);
user_pref("content.maxtextrun", 8191);
user_pref("content.notify.backoffcount", 5);
user_pref("content.notify.interval", 1000);
user_pref("content.notify.ontimer", true);
user_pref("content.switch.threshold", 1000);

user_pref("font.name.serif.ja", "メイリオ");

user_pref("gfx.color_management.enablev4", true);
user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100);
user_pref("gfx.font_rendering.cleartype_params.cleartype_level", 30);
user_pref("gfx.font_rendering.cleartype_params.pixel_structure", 1);
user_pref("gfx.font_rendering.cleartype_params.rendering_mode", 5);
user_pref("gfx.font_rendering.directwrite.enabled", true);

user_pref("network.http.max-connections", 24);
user_pref("network.http.max-connections-per-server", 8);
user_pref("network.http.max-persistent-connections-per-proxy", 4);
user_pref("network.http.max-persistent-connections-per-server", 4);
user_pref("network.http.pipelining", true);
user_pref("network.http.pipelining.firstrequest", true);
user_pref("network.http.pipelining.maxrequests", 8);
user_pref("network.cookie.cookieBehavior", 2);
user_pref("network.dns.disableIPv6", true);
user_pref("network.prefetch-next", false);

user_pref("nglayout.initialpaint.delay", 1);

user_pref("plugin.expose_full_path", true);

user_pref("signed.applets.codebase_principal_support", true);

user_pref("ui.submenuDelay", 0);

2013年3月12日火曜日

BlueGriffon trunkについて

mozilla-centralに導入されたmoz.buildシステムがないとビルドすることができなくなった。
なので、moz.buildシステムがβに降りてくるまでビルドを中止することにした。

2013年3月11日月曜日

Thunderbirdの取り扱い

ThunderbirdのESRとリリースは実質的に同じものなので、リリースだけビルドすることにして、Thunderbird ESRとしてのビルドは中止した。


2013年3月10日日曜日

細かいこと

ページの中にIE8以前では正しく表示できないからFirefoxかSeaMonkeyを使ってください、と書いた。ここでの正しくとはこの投稿を書いている時点では、Firefox 20.0β4による表示に準じたものということを意味している。

一応、以下に示すブラウザも目視にて確認しているけれど、特に問題は起きていないと思う。なおSafariはiOS機器もMacも持っていないので、確かめてはいない。
  • IE9,10
  • Google Chrome
  • Opera
  • Qupzilla
  • Android標準ブラウザ
あと、自分で使わないので面倒臭くなってきたから、Win32版は消した。

2013年3月8日金曜日

jQuery UIを使ったときに対処すべきことメモ

1.jquery-ui.cssからIE6向け要素を取り除き、IE6用CSSに入れておくこと。
2.Javascriptをoffにしたときの表示の乱れに対処すること。
3.jQueryのソースはあらかじめダウンロードしておき、gzip圧縮しておくこと。

なお、gzip圧縮をする場合、 

7z a -tgzip -mx=9 -mpass=15 -mfb=258 [ファイル名].gz [ファイル名]

とするのが現在のところ最善のようだ。

自分用メモ Javascript Off対策

Javascriptを使うページを作成する際に、Javascriptがoffの設定だと表示が乱れる場合には、
Javascriptをoffにした状態ではCSSを使って乱れる表示を消し、onにしたときには、そのCSSが読み込まれないようにJavascriptで制御する。

  1. OFFにしたときに乱れる要素を非表示にする外部CSSを作成する。
  2. <link rel="stylesheet" id="noscript" href="./noscript.css" /> というようにid付きで読み込む。
  3. <script type="text/javascript" src="./removenoscript.js"></script>というようにこの外部スクリプトを読み込む。
  4. <noscript>タグを使って、Javascriptをonにして欲しい旨の表示をする。


2013年3月5日火曜日

PNGの再圧縮等

1.PNGGauntletを使って、ページで使っているPNGを再圧縮してサイズを小さくした。
2.7zipを使ってgzip圧縮しているファイルは全てサイズを小さくした。
3.CSS Validatorのために、index.htmlとindex.cssだけは非圧縮なファイルも置くことにした。

これで主なブラウザを使う限り通信量を削減することができているはず。

2013年3月4日月曜日

サイトのSVGが表示されない場合の設定

SVGのmimetypeがtext/xmlになっている場合に、SVGを背景に設定していると、Firefox(Gecko)は背景として表示しない。そのため、.htaccessに次のように記述して回避した。

AddType image/svg+xml .svg
AddType image/svg+xml .svgz

なお、この動作はGecko側が正しいと思う。

ただ、text/xmlとなっている場合でも、SVGのURLを直接指定すると描画されるが、これは正しい動作なのだろうか?これは描画されない方が筋が通っているのではなかろうか。

サイトのgzip圧縮設定

サイトのファイルはできる限り圧縮してから転送した方が良いので、gzip圧縮の設定をする。

.htaccessの記載
RewriteEngine on
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME} !\.gz$
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule .+ %{REQUEST_URI}.gz

AddEncoding x-gzip .gz

<files *.html.gz>
AddType text/html .gz
</files>
<files *.js.gz>
AddType text/javascript .gz
</files>
<files *.css.gz>
AddType text/css .gz
</files>
<files *.txt.gz>
AddType text/plain .gz
</files>
<files *.svg.gz>
AddType image/svg+xml .gz
</files>
<files *.ico.gz>
AddType image/x-icon .gz
</files>

これがgzip圧縮するための設定。gzip圧縮に対応しているアクセスでは、gzという拡張子の圧縮済みファイルを送信し、そうでなければ素のファイルを送信する。

この後は、html,js,css,txt,svgをgzip圧縮して、gzという拡張子にして設置するだけ。
mod_gzipやmod_deflateを使った方法でも良いのだけど、こちらならバージョンが1.3.*でも2.*でもどちらでも動作するし、圧縮によってサーバに負荷をかけることもない。容量に問題がなければこれが最善の手段だと思う。

というわけで、上記の設定をしたサイトに移転した。