タグ

ブックマーク / uupaa.hatenadiary.org (9)

  • JavaScript で MessagePack を実装してみた - latest log

    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> 現時点の仕様 / 制限事項 仕様 msgpack.pack(data:Mix):ByteArray で、data に指定されたオブジェクトをエンコードし、ByteArray( [数値, ...] ) を返します。 文字列は UTF8 な raw data として数値化します。 エンコ

    JavaScript で MessagePack を実装してみた - latest log
  • 140文字以内で DOMContentLoaded - latest log

    DOM構築完了またはそれ相当のタイミングで (どこかで定義されている)関数A をコールバックします。 function Z(){try{(new Image).doScroll();A()}catch(e){setTimeout(Z,0)}} +[1,]?document.addEventListener("DOMContentLoaded",A,!1):Z() 130byteで驚きの読み辛さ。 ヒューマンリーダブル版 (function() { function IEDOMContentLoaded(){ try { (new Image()).doScroll(); // [!] throws A(); } catch(err) { setTimeout(IEDOMContentLoaded, 64); // delay after 64ms } } // IE6〜IE8を判定(IE8

    140文字以内で DOMContentLoaded - latest log
  • Array.forEach や Array.map は Firefox2〜3 や IE で利用できないケースがある - latest log

    元々のタイトルは「要素数 n の密な配列を作ろうとして空回りした(JScript の Array をクロスブラウザ化)」だったんですが、ちょっと変えました。 Firefox2〜3 や IE6 〜 IE8 では、ECMAScript 5th で追加された Array.map などの便利メソッドの利用に制限があります。うっかりやっちゃうと、非常に面白くないことになります。 元々は、nanto_vi さんのつぶやきを見て、 @teramako Array.apply(null, Array(10)).map(function (e, i) i) とか。 http://twitter.com/nanto_vi/status/5014927085 そういえば以前、要素数 n の密な配列を作るのに Array.apply(null, Array(n)) が使えないかと思ったけど、JScriptでダメだ

    Array.forEach や Array.map は Firefox2〜3 や IE で利用できないケースがある - latest log
    shinichitomita
    shinichitomita 2009/10/24
    > ECMAScript 5th 互換の Array.prototype.map は in 演算子で回すのが MDC 的に正解のようなので、そこを改悪する訳にもいきません。
  • もっと速くするために(トップレベルオブジェクトの省略) - latest log

    昨日の続きです。 ブラウザで動作する JavaScript では、トップレベルオブジェクト(window)を省略できます。これにより、window.setTimeout や window.document と書くかわりに setTimeout や document と書いても動作します。 今日は、省略すると速くなるのか調べました。 window.userObject1 = 0; // プリミティブ型 window.userObject2 = []; // Array window.userObject3 = {}; // Hash // window.xxx でアクセス function job1(n) { for(var i = 0; i < n; ++i) { ++window.userObject1; window.userObject2.push(i); window.userOb

    もっと速くするために(トップレベルオブジェクトの省略) - latest log
    shinichitomita
    shinichitomita 2009/09/18
    > window を省略すると速くなります * window オブジェクト直下の要素は、名前解決において特別な扱いを受けているようです 各ブラウザで足並みが揃っているので、最適化しやすく最適化の効果が高いポイントなのでしょうね
  • IE5〜IE7でも、RFC2397(Dataスキーム, DataURI)を使えるようにした! - latest log

    IE5,IE5.5,IE6,IE7 とおよそ10年に渡り、実装されなかった機能の一つに、Dataスキーム(DataURI) が あります。 uupaa.js version 0.6(近日中にリリース予定)では、DataURI をデコードする機能をエミュレートします。 DataURIって何 ラリーさんがRFC2397で提唱したデータスキームのこと。 ラリーさんってのはこの人。スパタさんにも見えるけどたぶん違う。 平たくいえば、 HTMLファイルに小さなアイコンや 1x1ドット のスペーサーを文字列化して埋め込める。 サーバとネットワークにやさしい仕様。 テキスト + アイコン数個で構成されるページなら、HTMLファイル1個だけで完結することもできるのが魅力。 # 小さな画像をチョコチョコ取得するのって、コスト高 # 負荷軽減の別解としては、小さな画像を1ファイルに敷き詰めて、CSS + cl

    IE5〜IE7でも、RFC2397(Dataスキーム, DataURI)を使えるようにした! - latest log
  • Googleトレンド in JavaScript ライブラリ - latest log

    今年もがんばります。 さて 6ヶ月ぐらい前から、JavaScript ライブラリ界隈ってどんな空気で誰が支配してるの? が気になり始めました。 んで、jQuery, Prototype.js, Ext.js MochiKit, Mootools の検索ノード数や検索キーワードを記録してました。 # YUI と Dojo は余計なのが多数引っかかるので取ってない。 その前に、Google トレンドでみる検索キーワード Google トレンドをみる どうやら、jQuery の一人ガチ Prototype.js ってユーザ減ってる? ちなみに、uupaa.js は検索母体が少なすぎるので Google 先生に見向きもされません。 検索ノード数(めもっといたやつ) 検索対象は「Web全体から」(uupaa.js 以外の単位は1000) Date jQuery Prototype.js Ext.js

    Googleトレンド in JavaScript ライブラリ - latest log
    shinichitomita
    shinichitomita 2009/01/04
    > uupaa.jsって、規模的にライバルはdojo辺りかと思っていました。すみません。
  • 今年のアレは今年のうちに - latest log

    とある方曰く、以下のコードはもっと短縮できるとか function piyo() { for (var i = 0; i < 10; i++) { } } piyo(); 曰く「"var " は削れる。これでマイナス3バイトです」 function evil(i) { // 引数 i を追加した for (i = 0; i < 10; i++) { // var を削った } } evil(); 「そうですね」って返した。 エレガント成分が足りないのは自分も一緒か。 来年は、がんばって綺麗なコードを書きます。

    今年のアレは今年のうちに - latest log
    shinichitomita
    shinichitomita 2008/12/24
    ときどきbookmarkletなどで使う
  • 依存関係を考慮した部品の読み込み Feature List - latest log

    思えば、JavaScript を学び始めて、最初に立ちふさがった壁が「IEと他のブラウザで動きが違う」「include すら無い」でした。 これって、プログラミング初学者に誤解を与えるには十分な威力です。 それゆえ「文字を点滅、広告を次々に表示、画面を揺らす」などのチープな使われ方に甘んじた暗黒の時代もありました。 しかし、それは、使う側のスキルとセンスの無さを、「JavaScript とブラウザ側の問題だ!!」と、問題をすげ替えていたに過ぎません。 クレーマーはまず自分にクレームを出すべきなんです。 前フリおしまい uupaa.js では、不足しているソースコード(機能)を動的にロードする機能(uu.module)を提供しています。 今日は「uu.module は廃棄予定ですよ」日記です。 uu.module の 何が問題だったか? uu.module は お手製の include 機能

    依存関係を考慮した部品の読み込み Feature List - latest log
    shinichitomita
    shinichitomita 2008/12/17
    onreadystatechange/onload, 依存性解決
  • excanvas.js のハマリどころ, G_vmlCanvasManager.initElement の使い方 - latest log

    追記: uupaa-excanvas.js をリリースしました。 excanvas.js は IE で canvas 要素のエミュレートを行う Google 謹製の JavaScript ライブラリです。 このライブラリは、最初のとっかかりが結構難しいです。 実体験を元に、ハマリポイントを列挙してみます。 動的に生成したcanvas要素は、すぐにドキュメントツリーに追加し、その場で初期化する必要がある。 以下が、動的にcanvas要素を生成し2Dコンテキストを取得する例です。が… var e = document.createElement("canvas"); document.body.appendChild(e); var ctx = e.getContext("2d"); 上記のコードでは、IEでは動作しません(Firefox,Safari,OperaはOK)。 動的に生成したca

    excanvas.js のハマリどころ, G_vmlCanvasManager.initElement の使い方 - latest log
  • 1