fn.call(何か) ベンチ

気になったのでとってみたけどあまり意味が無いベンチになりました。fn.call(null) って速いのね。 Browser fn.call(null) fn.call(this) fn.call(window) (function(){fn()} Fx3.6 1162 5911 3630 6432 IE8 937 1010 1073 2338 IE6 2833 2447 2578 5093 GC6…

CSSに似せた何かでスタイルをもっと扱いやすくできないか

js

できるだけCSSに似せた形でスタイルを記述し、プログラム的にテストなんか出来たらなぁ〜、とか考えてました。 (function() { // --- 識別子 --- var red = "#f00"; var absolute = "absolute"; var url = function(val) { return val; }; var rgba = functi…

日帰りバスツアー

(ε・﹏・)з キノウ 13時間灼熱バスツアー イッテキタヨ (ε・﹏・)з アリエッティ ココ ニ スンデル ラシイヨ http://www.seibien.jp/ (ε・﹏・)з アリエッティ ドコ? ミツカラナイヨ イドウ (ε・﹏・)з カイダン デ ダイギョウレツ. 1ダンススムノニ 1プン カカル (ε・﹏・)з ムンムンムラムラ セナカ 滝汗 (36℃) (ε・﹏・)з 40〜50プンマタ…

IE8の開発者ツールはスクリプトの実行結果に悪影響を及ぼすことがある

js IE

IE8 で以下のページを表示し開発者ツールで[デバッグ]を開始すると debugger; の位置で自動的に停止します。 # debugger はハードブレイクポイントです。大抵のブラウザで利用可能です。 <html><head><title></title> <style> div { border: 1px solid gray; width: 200px; height: 200px } </style> <script> w</head></html>…

ワンライナーIE6殺処分(精神的ブラクラ)

<script>document.createStyleSheet().addRule("*>*", "color:red");</script> このようなコードが埋め込まれたページをIE6で開くと、10数秒でメモリとswapを食い尽くします。PCが「ぎゃふん」って言うので、気をつけてください。 何も作業していない(再起動OKな)状態で実行す…

CSSセレクタを書き直したなど

2年ぶりにCSSセレクタを書き直しました前回との違いは 前作の精度を98点とすると今回は96点ぐらい。W3Cの意地悪テストを幾つかスキップ コード量が半分に。実行速度はほぼ同じ jQuery拡張, :active, :visited は非サポート(:visited は空の配列を返す) W3Cの…

JIT搭載ブラウザでは変数の再代入コストは無視できる

JIT搭載ブラウザでは a = a; など同じ変数に対する代入を繰り返しても遅くならず、JIT非搭載ブラウザだと a = a; で遅くなります。 JIT非搭載 Browser a=a nop Firefox3 1177 666 IE8 2036 1265 IE6 4291 3406 JIT搭載 Browser a=a nop Firefox3.6 236 234 S…

100行ちょっとで CSS3Selectors の tokenizer を書いてみた

js

CSSセレクタの話題って1年半ぶりぐらい。 知らない間に CSS3 Selectors Level 3が出てたので、tokenizer を書いてみました。 (function() { window.tokenizer = tokenizer; var _A_TAG = 1, // E _A_COMBINATOR = 2, // E > F _A_ID = 3, // #ID _A_CLASS = …

textContent を使うと Opera10.60 がどんどん重くなる

追記 http://jsdo.it/uupaa/u0QX に最小化したコードを載せました 今回のケースでは、条件(1)と(2)を満たす場合に、どんどん重くなっていくようです。 function bench() { // (1) nodeList を関数内部で毎回取得している var nodeList = document.getElement…

MultiTouch DnD + Gesture で Microsoft Surface 的な(2)

http://d.hatena.ne.jp/uupaa/20100625/1277424226 の続きです。拡大/縮小/回転をクロスブラウザにしました。 http://jsdo.it/uupaa/MultiTouchDragAndGesture iPhone(iOS4), IE 6+, Opera 10.50+, Firefox 3.5+, Google Chrome 5+, Safari 4+ で動作を確認…

MultiTouch +SVG + DragAndDrop + Gesture

MultiTouch と SVG で遊んでみました。PCならマウスホイールで拡大/縮小, シフトキーを押しながらホイールで回転。 iPhoneならピンチで拡大/縮小と回転。 トリプルタップやトリプルクリックで元のサイズに戻ります。 jsdo.it http://jsdo.it/uupaa/MultiTouc…

MultiTouch DragAndDrop + Gesture で Microsoft Surface 的な

続き書きました http://d.hatena.ne.jp/uupaa/20100629 MultiTouch の習作として、Microsoft Surface ( youtube: http://bit.ly/1wTzk ) に似たインターフェースを js で実装してみました。ピンチで拡大。回転。トリプルタップで元のサイズに戻ります。 demo…

Drag and Drop をマルチタッチ対応に

js

シングルマウスなDrag and Dropなコードを、マルチタッチ対応にしてみました。http://jsdo.it/uupaa/MultiTouchDnDiPhoneでテストしています。 マルチタッチ初挑戦なので、色々と分かってません。 マルチタッチ対応の要点 今回は、シングルマウスのコードを…

IEで透過pngにopacity

@nksm さんのつぶやき IE7+で透過pngに対してopacityを指定した時の汚さはなんとかならんかな。IE6はキレイなんだが・・・。via http://twitter.com/nksm/status/16611637369 を見つけたので、VMLを使って透過pngにopacityを適用する方法を jsdo.it にあげま…

uupaa.js の これまでと これから

uupaa の中の人は28ヶ月前にペットショップからウーパールーパーを2匹連れ帰りました。 同じ日に、「作れども作れども UI 速くならず、じっとコード見る」な感じから脱却するため、中の人は、"uupaa" という固有名詞がWeb上に存在しないことを確認し uupaa.j…

WEB+DB PRESSで連載始まるよ

js

初めての人はこんにちは! いつも遊んでくれる方々もコニチハ! WEB+DB PRESS という技術情報誌で、続き物がはじまるよ。 今回のお題は「JavaScriptの高速化」です。 お正月明けに、「JavaScriptでなんか書いてよ」→「…ぇとuupaa名義でもOK?」→「ええよ」から…

String.toJSON(), JSON.stringify(), JSON.parse() の実装比較一覧

"あa".toJSON() JSON.stringify("あa") JSON.stringify({"あa": null}) Google Chrome6(dev) "あa" ""\u3042a"" "{"\u3042a":null}" Safari5 not impl ""あa"" "{"あa":null}" Opera10.60β not impl '"あa"' '{"あa":null}' Firefox3.6.3 "あa" ""あa"" "{"…

msgpack.js RC2

Change Log Retake toIEEE754() Retake callback arguments in msgpack.download() and msgpack.download() Test case msgpack codec test msgpack download / upload demo benchmark msgpack vs json Functions Download and Upload functions msgpack.down…

msgpack.js RC

MessagePack 発案者様から「末席あいてますよ」とお言葉をいただいたので、uupaa.js に一切依存せず、ソースコード単体で利用可能なスピンオフ版を作成しました。 Many bugfix(especially - IEEE754) Test case was enhanced msgpack codec test msgpack dow…

Web Workers用と通常のJavaScript用のコードを共存させる

Web Workers の調べ物してました。 Web Workers は、Google Chrome 4+, Firefox3.5+ , Safari4+ で既に利用可能です。Google Chrome5 では、Web Workers 内で Web Socket を動かすこともできます。 js の基本であり鬼門といえば this オブジェクト 各ポイン…

MessagePack + WebWorkers

追記 @os0X さんと @edvakf さんからアドバイスをいただいたので、本文とコードを修正しました。 postMessageが文字列に限定されているのは旧仕様で、Firefoxや最近のWebKit(Chrome5とか)はオブジェクトをやり取りできると思います via @os0X http://twitter…

自作 MessagePack のベンチ取ってみた

http://pigs.sourceforge.jp/blog/20100606/msgpack.htm IE6 28秒ぐらい IE8 10秒ぐらい Chrome6 8.5秒ぐらい Firefox3.6.3 9秒ぐらい Opera10.50 不明 約1MBのデータだと、体感的に IE8 と Firefox3.6, Google Chrome 6 で大差ない感じになってる気がします…

IEのクラッシュ画面を再現してみる

IEでどーぞ <script> [,]!=0&&((b=document.body).style.cssText="height:1px;overflow:hidden", b.innerHTML+='<p style="z-index:99;position:absolute;width:'+b.clientWidth+'px;height:'+b.parentNode.clientHeight+'px;background:url(ie.png) no-repeat 50%" </script>…

JavaScriptとプリプロセッサ

uupaa.js にはビルドツール(minify/upa.php)が同梱されています。upa.php は C/C++ のように #include src.js を自動的に展開します。 クライアントサイド JavaScriptでは include は予約語ではありませんが、(他のライブラリと衝突する可能性があるので)通…

IE8, IE9pp2 には outline を設定すると z-index が効かなくなるバグがあるようです

http://uupaa-js.googlecode.com/svn/trunk/0.8/test/BrowserBug/IE/ie8_ie9_outline_zindex.htm outline 自体の描画もおかしなことになっています。

JavaScript で MessagePack を実装してみた

140文字を超えちゃうので、こちらで。id:viver さんの MessagePack を JavaScript で実装してみました。 HOT TO USE <script src="misc/msgpack.js"></script> <script src="misc/utf8.js"></script> <script> var pack = msgpack.pack("こんにちはこんにちは"); alert(msgpack.unpack(pack)); // こんにちはこんにちは </script> 現時点の仕様 / 制限事項 …

ライブラリの一部でありながら単体利用も可能にする工夫

140文字を超えちゃうので、こちらで。JavaScriptなコードを書いてると「このへんの処理はどこにも依存してないから、特定のライブラリの一部ではなく、単体でロードしても使えるような部品としてまとめられたらなぁ」とか「でも、ライブラリの一部として利用…

opacity が利用可能かを判定する

コメント欄も見てね。uupaa.js コードリード用のエントリです。興味がない方は読み飛ばしてください。IE9(IE9pp2) が CSS3::opacity をサポートしました。これで filter:alpha はレガシーコードになります。 考えた opacity のサポート状況を判定するコード…

IE の cloneNode は似て非なるもの

IE における cloneNode の困った挙動について調べてました。 cloneNodeの仕様IEでオレオレ属性を追加しcloneNodeすると、参照が作成されてしまいます。 <div id="AAA">NodeA</div> var AAA = document.getElementById("AAA"); AAA.oreoreAttr = { key: 1 }; var BBB = AAA.cloneN…

JavaScriptでヒアドキュメントや簡易テンプレート

js

JavaScriptでもヒアドキュメントやテンプレートが使えれば便利だし、それらを組み合わせてコードの塊(スニペット)にできれば便利だよね。 ってことで、既に同様のアイデアはゴロゴロしてそうなんですが、自分用にざざっと叩き台を書いてみました。 DEMO http…