2008-09-04 (木)
■ Zend Framework 1.6.0 がリリース
Zend Framework の最新版がリリースされました。
ZF 1.5.3 からの変更点:
- Dojo Integration
- JSON-RPC Server
- dojo.data Envelopes
- Dojo View Helper
- Dijit integration with Zend_Form & Zend_View
- Dojo Library Distribution
- SOAP
- SOAP Server
- SOAP Client
- Autodiscovery
- WSDL access
- WSDL Generation
- Preview of Tooling Project in Laboratory (see /laboratory folder)
- Command Line Interface
- Project Asset Management
- Unit Testing Harness for Controllers
- Lucene 2.3 Index File Format Support
- Zend_Session save handler for Database Tables
- Paginator Component
- Text/Figlet Support
- ReCaptcha Service
- Captcha Form Element
- Zend_Config_Xml Attribute Support
- Zend_File_Transfer Component
- File Upload Form Element
- Zend_Wildfire Component with FireBug Log Writer
- Media View Helpers (Flash, Quicktime, Object, and Page)
- Support in Zend_Translate for INI File Format
より詳細な変更点はこちらにあります。
一部機能は未実装だがとにかくリリースする的な発言があったり、 ドキュメントがダウンロードできなくなっていたり、 不安要素がてんこ盛りな気がするんですが、 まずは ZF 1.5.3 と入れ替えて動くのかどうか試してみます。
2008-09-08 (月)
■ AJAX Libraries API はバージョンをフル指定した方が高速に動作する
Google AJAX Libraries API では、 バージョン番号の一部だけを指定すると自動的に最新バージョンのファイルが読み込まれる のですが、それよりもバージョン番号をフル指定した方が高速に動作することに気付きました。 その理由は、それぞれの場合に返ってくるレスポンスヘッダが異なることにあります。
- http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js にアクセスした場合のレスポンスヘッダ
HTTP/1.1 200 OK Last-Modified: Mon, 26 May 2008 18:45:05 GMT Content-Type: application/x-javascript Expires: Tue, 08 Sep 2009 14:11:47 GMT Date: Mon, 08 Sep 2008 14:11:47 GMT Cache-Control: public, max-age=31536000 Vary: Accept-Encoding Content-Encoding: gzip Transfer-Encoding: chunked Server: GFE/1.3
- http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js にアクセスした場合のレスポンスヘッダ
HTTP/1.1 200 OK Last-Modified: Mon, 26 May 2008 18:45:05 GMT Content-Type: application/x-javascript Expires: Mon, 08 Sep 2008 15:12:23 GMT Date: Mon, 08 Sep 2008 14:12:23 GMT Cache-Control: public, max-age=3600, must-revalidate, proxy-revalidate Vary: Accept-Encoding Content-Encoding: gzip Transfer-Encoding: chunked Server: GFE/1.3
両者の違いは、Expires: と Cache-Control: の行です。 簡単に言うと、こういう違いがあります。
- バージョン番号をフル指定した場合、ブラウザキャッシュの有効期限は1年
- バージョン番号を一部指定した場合、ブラウザキャッシュの有効期限は1時間
フル指定した場合は、ブラウザのキャッシュに残っているファイルがずっと使われ続けますが、 一部しか指定しないと、1時間ごとにファイルが更新されていないかチェックに行ってしまいます。
ということで、Google AJAX Libraries API は、バージョン番号をフル指定して使う方がよいでしょう。 ライブラリのアップデートをするのに、バージョン番号の部分を手動で書き換えないといけなくなりますが、 そうしないと速度面でのメリットが薄れてしまいます。
P.S. いつの間にか、jQuery UI もホストされてました。でもそれより MooTools 1.2 を置いてほしいなぁ。
2008-09-12 (金)
■ IE8 では独自実装の CSS プロパティに -ms- をつけるように
Internet Explorer は CSS で zoom とか ime-mode といった独自の指定ができるのですが、 IE8 以降では -ms-zoom とか -ms-ime-mode と書くようにして下さい、とのことです。
- IEBlog : Microsoft CSS Vendor Extensions
- IE 8 では独自実装や先行実装の CSS の書き方が変わるようです | ヨモツネット
- IE8のCSS3およびベンダ拡張は"-ms-"に変更、Webデザイナは注意必要 | エンタープライズ | マイコミジャーナル
じゃあ、IE7 以前と IE8 の両方で動くようにするためには、今までのスタイルシートを、
.form {
-ms-ime-mode: active;
ime-mode: active;
}
のように書き直さなければならないのかと頭が痛くなりましたが、IEBlog の記事をよく読むと、
However, in order to ease the transition, the non-prefixed versions of properties that existed in Internet Explorer 7, though considered deprecated, will continue to function in Internet Explorer 8.
のように書かれているので、一応そのままでも問題ないようです。
でも例えば、ime-mode なんかは Firefox 3 でも実装されているんですよね。 Firefox の側からすると、せっかく IE にそろえてやったのになぜいまさら変更するんだ、 と文句を言いたくなるところかも。
2008-09-15 (月)
■ SIE 0.31 がリリース
SIE は Internet Explorer で SVG を表示可能にする JavaScript ライブラリです。 このバージョンでは、従来比で15〜25%の高速化がされています。
バージョン 0.30 からの変更点:
- Sieb が Safari で動かない不具合の修正
- 属性なしの<svg>タグに対応させた
- rgb 形式の色指定を % 表記に対応させた
- stroke に opacity が適用されないバグを修正
- PaintColorオブジェクトの最適化
- opacity関連のバグを修正
- STPathの不要な部分を除去
高速化のために内部キャッシュを作るようにしたのですが、この部分には、
に書かれていた element.uniqueID を活用しています。 uniqueID というのは IE の独自仕様みたいですが、 SIE も IE 専用みたいなものなのでちょうどいいや、ということで使わせてもらいました。
2008-09-16 (火)
■ Zend Framework 1.6.1 がリリース
Zend Framework の最新版がリリースされました。 ZF 1.6.0 と比べて 74 箇所の修正や変更がされています。 変更箇所のリストはこちらです。
ざっと見た感じでは、主に Zend_Form や Zend_Dojo 周りの修正が行われているようです。
2008-09-19 (金)
■ Zend Framework を遅くしている主な原因
以下のページに載っているベンチマークによると、Zend Framework はバージョンを重ねるごとに遅くなっているそうです。
それで、何故こんなに遅くなっているのか、という調査がこちらのブログに載っています。
要点をまとめると、こんな感じです。
- 遅くしている主な原因は Zend_Controller_Action_Helper_ViewRenderer
- $front->setParam('noViewRenderer', true); して使うようにすると 25% くらい速くなる
私は View コンポーネントを非標準のものに置き換えているので、 これをやるには、かなりあちこちいじる必要があると思うのですが、 チューニングしたい時の1つの手段として覚えておくといいかもしれません。
たしかメーリングリストで、Zend Framework 1.7 でパフォーマンスの改善に取り組む予定、と言っていた気がするので、 そちらにも期待したいところです。
2008-09-23 (火)
■ VML で colors を設定すると opacity の意味が逆になる
タイトルだけ読んでも何のことだか分からないと思いますが、 簡単に言うと、VML のバグを見つけましたという話です。 以下のリンク先にある図を Internet Explorer で表示しながら読んで下さい。
まず、上の2つの図を見て下さい。
<v:fill color="red" color2="blue" ... /> <v:fill colors="0% red, 100% blue" ... />
これは赤から青に変化するグラデーションを、2通りの方法で設定しています。 当然のことながら、表示結果は同じになります。
次に、色の変化と共に、不透明度も 0.5 から 1.0 に徐々に変化するよう設定してみます。
<v:fill color="red" color2="blue" opacity="0.5" o:opacity2="1" ... /> <v:fill colors="0% red, 100% blue" opacity="0.5" o:opacity2="1" ... />
こうすると、グラデーションは薄い赤から濃い青に変化するはずですが、 奇妙なことに colors を用いて設定した方は違う結果になります。 opacity="0.5" が、赤でなく青の方に作用したような表示になってしまうのです。
<v:fill colors="0% red, 100% blue" opacity="1" o:opacity2="0.5" ... />
のように opacity と o:opacity2 の設定をひっくり返してやると、 ようやく意図した通りの表示になります。
ということで、VML のグラデーション機能を使う場合には、 たとえ2色のグラデーションであっても、必ず colors を設定するように統一した方がいいです。 そうしないと、この意味不明なバグに悩まされることになります。
2008-09-28 (日)
■ SIE 0.32 がリリース
SIE は Internet Explorer で SVG を表示可能にする JavaScript ライブラリです。 バージョン 0.31 と比較して約20%、バージョン 0.30 と比較すると30〜40%くらいの高速化がされています。
バージョン 0.31 からの変更点:
- スライスされた画像に対処
- スタイルシートに関する最適化
- TransformListの最適化
- リンクされた文章の下線をデフォルトでは消すようにした
- a要素内のテキストのずれを修正
- 色のキーワード名を修正
- 属性やプロパティにおいて、値「inherit」に対応
- cursorプロパティを実装
試してみたところ、グラデーションの表示が少しおかしくなっているようです。
にある最新版では直っていますので、気になる人はこちらを試してみると良いでしょう。
