2008-01-01から1年間の記事一覧

amachang の 「一行で IE の JavaScript を高速化する方法」を掘り下げてみた

2009-11-12 ナビ子記法について追記しました 本文 今日は、amachangさんの記事 http://d.hatena.ne.jp/amachang/20071010/1192012056 を 1mm だけ掘り下げ、IE 以外のブラウザでも document へのアクセスを速くする方法がないか、色々試してみます。 # 記事…

Mutation Event は、薬にも毒にもなるから気をつけて

jQuery1.3β みた(jQueryのコードをまじめに見たのは、これが初めてかも) 比較演算子(==)が厳密比較演算子(===)に jQuery の CSSセレクタが、Sizzle 0.9 になった。 以前の Sizzle に存在した“Firefox,Operaでクエリ結果をキャッシュする機能”が、Sizzle 0.9 …

初心に帰れるうちが花

今後の uupaa.js の形を決めました。 これまで uupaa.js ファイルに必要と思われる機能をギチギチに詰め込んでる。 コードの可読性が低い + version間でdiff取れない(弄りすぎ)。 uu.module() でモジュールを読み込むと色々機能が増えるみたいだけど、実用性…

今年のアレは今年のうちに

とある方曰く、以下のコードはもっと短縮できるとか function piyo() { for (var i = 0; i < 10; i++) { } } piyo(); 曰く「"var " は削れる。これでマイナス3バイトです」 function evil(i) { // 引数 i を追加した for (i = 0; i < 10; i++) { // var を削…

依存関係を考慮した部品の読み込み Feature List

思えば、JavaScript を学び始めて、最初に立ちふさがった壁が「IEと他のブラウザで動きが違う」「include すら無い」でした。 これって、プログラミング初学者に誤解を与えるには十分な威力です。それゆえ「文字を点滅、広告を次々に表示、画面を揺らす」な…

YUI Compressor 2.4.1 で Minify + 難読化 + zip圧縮 すると、より小さくなる

JavaScript のソースコードの圧縮にYUI Compressor 使ってます。 # 他のコンプレッサーに浮気したことが無いので、他のはよくわかりません。ずっと、2.3.5 を使っていたのですが、2.4.2が出ていました。2.4.1以上で 11.1kB(11370byte) のソースコードを Mini…

楽天ad4Uの隠しリンクを露出させるユーザスタイルシート

高木先生のブログで「楽天が :visited を使いユーザの履歴を盗み見ている」とあった(要約)。CSS セレクタ作者として「いつかは…」と思ってましたが意外に早かった。 嫉妬混じりの批評もあるみたいだし。このような用法に対しては事前に考える時間があったの…

気がついたらドット打ってた。

<html><head><title>ohige</title> <script type="text/xaml" id="xaml"><?xml version="1.0"?> <Canvas xmlns="http://schemas.microsoft.com/client/2007"></Canvas></script> <script src="http://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-color.js/uupaa-color.mini.js"></script> </head></html>

excanvas.js にさようなら。

リリースしました。 uupaa-selector.js Version 2.0 (ChangeLog) uupaa-mutationevent.js Version 0.1 (ChangeLog) uupaa-excanvas.js Version 0.1 (ChangeLog) uupaa-detect.js Version 1.0 (ChangeLog) uupaa-color.js Version 3.0 (ChangeLog) 内訳は世界…

CSSセレクタの開発から得られたノウハウのフィードバック + IE8でメソッドをフックする(HTMLElementプロトタイピング)

ここ数日は、CSSセレクタ(uupaa-selector.js)の高速化と同時に、DOM Level2 Mutation Events をサポートする小さなライブラリ(uupaa-mutationevent.js)を作っていました。uupaa-mutationevent.js は、 CSSセレクタにキャッシュを導入するなら、DOMツリーの改…

CSSセレクタがトータルで100倍速くなったからそろそろ終わり

function _fakeMutationEvents(elm) { elm.style.behavior = "none"; (function(n) { var fn = n.removeChild; n.removeChild = function(oldChild) { // DOMNodeRemoved uuClass.Selector.clearCache(); return fn(oldChild); } })(elm); elm.attachEvent("…

DOMNodeInserted と DOMNodeRemoved に似た仕組みを IE でも使えるようにして、セレクタの実行結果をキャッシュする

セレクタ(id, tag, class, css, xpath)の実行速度を改善するには、2つの方法があります。 ロジックを改善する キャッシュを使う 今日は2の方法について検討したことを書き残します。 心配事 キャッシュを使う上での心配事は「キャッシュが古くなったらどうす…

IE8での変化点一覧 + 備忘録(その2)

このエントリは、IE8での変化点一覧 + 備忘録 - latest logの続きです。 IE8モードで、CSS expression が無視される。 バグ回避や、max-width などを実装するため必要不可欠だった expression 構文は廃止される。 ただし、IE7モードとQuirksモードでは下位互…

uupaa-selector 2.0 できました。

2008-11-23追記: http://app.blog.livedoor.jp/sourcewalker/tb.cgi/51408207 で紹介されていたので、peppy と sizzle を追加 peppy と sizzle がキャッシュを使ってて(なんかズルイ)ので、彼らに負けじと謎の技術を惜しげもなくぶち込んでみた。JavaScript…

Silverlight で HTML5::Canvas を実装した

11/1 の思いつきから始まった「Silverlight + VML = HTML5::Canvas」も、やっと一段落しました。 実装済みの機能 clearRect, beginPath, moveTo, lineTo, bezierCurveTo, quadraticCurveTo, rect, strokeRect, fillRect, closePath, drawImage(キャンバスの…

Silverlight で HTML5::Canvas を実装中(clipが実装できない)

VMLモードで clip を実装できないかと try 〜 error を繰り返しています。VMLにはクリッピング用途に使える機能がほとんど見当たりませんし、ExplorerCanvasの開発チーム(Googleの中の人 × 3名様)が出来なかったことを(clipに限らず色々と)やろうとしている…

Silverlight で HTML5::Canvas を実装中(今日はテキストAPIを実装)

VMLモードのレンダリングを改善しました。細かなことは昨日の日記などをご覧下さい。 Silverlightモードの変更箇所 fillText(), strokeText() を実装 (ただし strokeText() は fillText() と同じレンダリングを行う)。 A canvas fillText and strokeText exa…

Silverlight で HTML5::Canvas を実装中

追記: サンプルを追加しました。 実装済みの機能 clearRect, beginPath, moveTo, lineTo, bezierCurveTo, quadraticCurveTo, rect, strokeRect, fillRect, closePath, createLinearGradient, createRadialGradient, stroke, fill, arc, save, restore, trans…

Silverlight で HTML5::Canvas を実装中

必須と思われる機能をあらかた実装できました。 実装済みの機能 clearRect, beginPath, moveTo, lineTo, bezierCurveTo, quadraticCurveTo, rect, strokeRect, fillRect, closePath, createLinearGradient, createRadialGradient, stroke, fill, arc, save, …

Silverlight の Path.Data には長さ制限があるらしい。

長さが 32598 だと問題なしで、33533 だとエラーが発生するため、32768 辺りに境界が有ると思われる。 # MSDNにはその手の記述はなし。この制限により、https://developer.mozilla.org/samples/canvas-tutorial/5_2_canvas_translate.html の右上と中央の図…

HTML5::Canvas を Silverlight で実装

現状 デモ バウンドするドット excanvas.js(ver0.2)でレンダリング VMLモードでレンダリング Silverlightモードでレンダリング 回転するボックス excanvas.js(ver0.2)でレンダリング VMLモードでレンダリング Silverlightモードでレンダリング # IE以外のブ…

Silverlight で HTML5::Canvas を実現するライブラリの実装を開始しました

「Silverlight で HTML5::Canvas を実現できないか」から早5日(うち3日はサボり)。ぼちぼち動くようになってきました。 今回書いたライブラリは、Silverlightがインストールされている環境ではSilverlightを使い、インストールされていなければ、VMLでレンダ…

Silverlight の勉強

調べながら書いてるので、どんどん追記していきます。 とりあえずSilverlight2.0 の SDK をインストール SDKをインストールすると、Silverlight.js というファイルが手に入る。 Silverlight.js は SWFObject.js 的なもの。500行と結構ボリュームはあるけど中…

CSSセレクタの最新版(uupaa-selector.js version 1.5)をリリースしました。

2008-11-27追記: version 2.0 が最新になります。uupaa.js (ver 0.7)に実装されているCSSセレクタの機能を、単体で動作可能にパッケージしなおしたJavaScriptライブラリ(uupaa-selector.js)の最新版をリリースしました。今回は、 使用可能な場合は、DOM Elem…

Silverlight で HTML5::Canvas を実現できないか

IE限定になりますが、Silverlight で描画のためのフロントエンド(描画API)を組めないか考えてました。 excanvas.js を最終手段としておいて、使える環境なら Silverlight を使ってしまおうかと。 HTML5::Canvas と Silverlight Silverlight は、MS 発の Flas…

JavaScriptの高速化3 - Hashによる検索を活用することで、ドラッグをもっとスムーズに

IE6のベンチスコアを追加 補足を追加 アイコンやウインドウをつかんでずずっと移動する。 この動作をもっともっとスムーズにするために、何ができるか考えてました。以下はサンプルコードです。 uuClass.MyDrag = uuClass.Generic(); uuClass.MyDrag .protot…

IE8での変化点一覧 + 備忘録

IE8 ではかなりの数のメソッドやプロパティが増えているようです。書き残します。 element.getAttribute について追記しました。 window.toStaticHTML window.toStaticHTML は、XDomainRequest や postMessage で受け取った文字列(HTML)をサニタイズ(消毒)す…

uupaa-color.js の リライト

uupaa-color.js は例によりuupaa.js の一部を切り出し、単体で動作可能な形にリパックしたスクリプトです。一見あまり意味のない(ニーズが無い)ように見えるスピンオフなんですが、 単体リリースしておけば、Core(uupaa.js)に入れたままだと気が付きにくい問…

Opera9.5+ DocumentFragment 経由でノードを追加すると再描画しない

ノードをDOMツリーに追加するには、2つの異なる方法がありますが、 DocumentFragment 経由で追加する方法 (method1) 直接追加する方法 (method2) Opera9.5以降でDocumentFragmentを経由すると画面が再描画されません。 # Opera9.52, Opera9.61 で現象を確認…

Firefox3.1β1 をインストールしてみたけれど createContextualFragment が

2008-10-21 追記 この日記は、こんな流れで修正やら追記がされてます。 Firefox3で動いていたコードがFirefox3.1β1で動かないんが → 3.1でどっか変わった? 「ちがくね?」と指摘を受ける 検証し直してみると、実は createContextualFragmentは一部のブラウザ(…