2008-10-01から1ヶ月間の記事一覧

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は一部のブラウザ(…

Opera と Firefox3.1で DOM Element Traversal Module が使える

指摘を受けて、記事を修正しています。 document.implementation.hasFeature("Traversal", "2.0"); が true を返す環境なら Element Traversalが使える → hasFeature("Traversal") では Element Traversal が実装されていることは確認できない。 DOM Element…

命名規則を一部修正します。

uupaa.js (ver 0.7) からは、こんな感じにします。 change naming style クラス名の命名規則を camelCase から Java スタイルに変えます。 変えるのはクラス名だけです。メソッド名等は camelCase のままです。 uu.klass.className → uuClass.ClassName ----…

uupaa.js の設計

uupaa.jsの設計は結構だめな部分があります。自覚してます。言われる前に書きます。 自覚している箇所については、強引にリライトしていきます。設計や実装で、心がけているのは、 手続き指向の低レベルな関数をまず作成し、ドメイン(ネームスペース)でまと…

Effectの再実装(Tweenの実装)がだんだんと形になってきた。

Tweenを実装するにあたり、いろいろと探りつつ設計をしています。 肝となる、Tweenの演算周りは、Robert Penner's easing equations を使わせてもらっています。現時点の実装はこんな感じ(Firefoxで見てね)。 http://uupaa-js.googlecode.com/svn/trunk/demo…

Effectの再実装(リアルタイム→プリレンダ)

easingを組み込んだEffectがほしいので実装を開始しました。今までは、現在の状態を元に次の状態を演算で(リアルタイムに)求めていましたが、 あらかじめ演算した結果(プリレンダ)を元に描画を行う方式に変更します。骨子はこんな感じ。 uuclass.Easing = {}…

IEのsunsetエフェクトにも中央に吸い込まれる効果を追加したい

メインの開発PCが帰ってくるまでは、Vistaでガマン中。uu.module.effect.sunset() は IEで動作するときに限り、中央に吸い込まれるような効果がありません。 今回は「実装しようとしたけどダメだったよ」日記です。sunsetエフェクトは http://uupaa-js.googl…

HHKB + vi + LAMP が使えればOSなんて何でもイイ(Vista以外なら)。

uupaa.js 開発用のノートPCを修理に出すことに。 帰ってくるまでに10日ほどかかるらしい。残る開発用PCは Vista なんだけど、Vista で カイハツ? イ・イヤスギル…新型MacBookを「ポチッ」と買っちゃいそうになるので、買わずに済む理由を探してます。

uupaa-selector.js version 1.2 をリリースしました。

Ver 1.1との違い XMLDocument, HTMLDocumentを区別し動作する HTMLDocument(content-type: text/html) なら タグ名の大文字/小文字を無視して要素を検索するが、XMLDocument(content-type: application/xml or application/xhtml+xml or text/xml)なら区別す…

HTMLDocument と XMLDocument を見分ける方法

HTMLDocument と XMLDocument を見分ける方法を模索していました。2008-10-12追記: 内容を大幅に更新しました 何がしたいのか uupaa-selector.js version 1.2では、HTMLDocuemnt と XMLDocument で、CSSセレクタの挙動が変化します。 HTMLDocuemnt なら 小文…

uupaa-selector.js version 1.1 をリリースしました。

uupaa-cssselector.js を改名し、機能を大幅に強化したものを uupaa-selector.js としてリリースし直しました。2008-10-11追記: uupaa-selector.js version 1.2 をリリースしました。 - latest log uupaa.js(ver 0.7)の実装をベースに、 getElementById() ge…

JavaScript の高速化その2 「全てを疑い、自分の目で確認すること」

こういう泥臭い資料作りもやってるので、一応書き残します。 問題1. array.length へのアクセス var ary = new Array(100000); な配列があるとします。IE6環境下で、配列の長さを求める方法を、早い順に並べてください。TEST1. a.length; TEST2. var L = "le…

uupaa.jsの開発開始から6ヶ月が経過。ここから楽しいはず!

2008/04/01の開発開始から6ヶ月が経過しました。 この6ヶ月で、クロスブラウザを実現するための基礎資料もかなり出揃い、高速な足回りも実装することができました。 今後はコア部分の開発よりも、Webサイトで多用される機能やユーザが欲しがる機能(見栄えやU…

世界最速のCSSセレクタ(getElementsBySelector とか querySelectorAll みたいなもの)をリリースしました。

http://code.google.com/p/uupaa-js-spinoff/2008-10-11 追記 uupaa-selector.js version 1.2 をリリースしました。 - latest log おまたせ 最新のjQuery(1.2.6)よりも早く、jQueryと比較にならないほどの高い精度で正しく動作するCSS3セレクタの実装(uupaa-…

uupaa.js 0.7 1001%+ Faster! - CSSセレクタの精度と速度でjQueryを超えてみた。

CSSセレクタのチューン開始から、えーと… 今は、20時間目かな(もうそんなに…)20時間前に立てた目標は、IE上で動作するjQueryの速度を超えること。 結果発表 uupaa.js 0.6 uupaa.js 0.7(α) jQuery1.2.6 kQuery Prototype.js 1.6.0 3174 317 371 495 2007 uupa…

uupaa.jsのquerySelectorAll相当の機能(uu.css)をもっと高速化

CSSセレクタをチューンしてます。作業開始から4時間が経過し、速度向上ぐあいはこんな感じ(in IE6)。 uuppa 0.6 uuppa 0.7(α) jQuery 1.2.6 Prototype 1.6.0 3161 653 382 2046 途中省略 テストツールとテスト内容は、http://slickspeed.googlecode.com/svn/…