ネタ

(ε・◇・)з CoffeeScript と mofmof.js

(ε・◇・)з CoffeeScript は Ruby や Python っぽく書けて JavaScript にコンパイルできるプリティな言語だとか! (ε・◇・)з 噂では CoffeeScript で書くとコードが短くなるとか!!物は試しに http://jashkenas.github.com/coffee-script/ にある幾つかのコード…

Flashのように滑らかなアニメーションを実装するには(uupaa.js vs jQueryデモ)

JavaScript で Flash のような滑らかなアニメーションを行うためには、クロスブラウザな知識の他に、GC(ガベージコレクション)や「どうすれば安定した品質がだせるのか」といったスキルが求められます。 # GC の話は WEB+DB PRESS 57 でちょっと書いてます。…

コードを削る

Twitter だとちょっと厳しいので、こっちでまとめ。MobileWebKit に対応しようと思ったら、コードをなんとかして削る必要があります。 AND 演算子 で 4byte 削る(10byte → 6byte) if (a) { b(); } ↓ a && b(); OR 演算子 で 5byte 削る(11byte → 6byte) if (…

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

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

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…

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 は予約語ではありませんが、(他のライブラリと衝突する可能性があるので)通…

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

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

140文字以内でパスワード丸見え

パスワードを忘れちゃった時などに。 Firefox3.5+, Safari4+, Google Chrome, Opera10.10+ で動きます。IE9でも動くかもしれません 76byte javascript:document.querySelector("input[type=password]").type="text";void 0

CookPadの開発コンテスト24に参加したよ

http://info.cookpad.com/24contest http://info.cookpad.com/24contest_award応募して、落選したよ。 審査はすごく大変だと思うけど、またされずに結果がすぐ分かるのはステキだね。 覚えてること 「応募するからには、他の参加者もシステム的な要素を取り…

140文字以内で DOMContentLoaded

DOM構築完了またはそれ相当のタイミングで (どこかで定義されている)関数A をコールバックします。 function Z(){try{(new Image).doScroll();A()}catch(e){setTimeout(Z,0)}} +[1,]?document.addEventListener("DOMContentLoaded",A,!1):Z() 130byteで驚き…

Google Chrome 3 をサポートブラウザからはずします。

以下の理由から、JavaScriptライブラリで、Google Chrome3 をサポートする必要はなくなったと考えます。 Google Chrome2 や3用のインストーラーを使うと、Chrome3 がインストールされます。 Chrome3 を起動していると、裏で Chrome4.1 がダウンロードされて…

IE9 で

IE9 を含む様々なブラウザで <audio> や window.Audio の機能の一部を利用できるようにしてみました。Silverlight3+ がインストールされている、Firefox3.0, Firefox3.5+, IE8, IE9, Google Chrome3+, Safari4+ で動いてます。 # そのうち、Flash でも動作するよう</audio>…

Firefoxのin演算子がモッサリなので何とかしてみた

今日は「Firefox3.5+で、配列に対してin演算子を使うと、Firefox3に比べ5〜10倍モッサリする」という困った現象を、何とかする方法をご紹介します。 Firefox3 33 Firefox3.6 157 Firefox3.7a1pre 96 <body onload="bench()"><script> function bench() { var pure = [0, 1, 2, 3, 4, 5, 6, 7</body>…

とある最短のIE判定コード

ちょっと前まで、IEかどうかを判別する世界最短のコードは、「IEは垂直タブ(\\v)を理解しない」バグを利用した以下のコードでしたが、 '\v'=='v' // 9byte via Ajaxian その後 7byte 版が登場し、去年まではこれが世界最短とされていました。 !+"\v1" // 7by…

JavaScript で 形態素解析ってこうですか? わかりません ><

http://pigs.sourceforge.jp/blog/20091232/perry.zip zip ファイルを解凍し、perry.htm を IE で開きます。 文章を選択するか [say] ボタンをクリック ActiveX の実行を許可しますか? と聞かれたら、許可してください。 だいたい、小学校三年生ぐらいだった…

== はやればできる子(でも95%のシーンではいらない子)

var ary1 = [1, 2]; var ary2 = [1, 2]; プリミティブな値(文字列とか数値)だけが格納されている2つの配列(ary1 と ary2)の内容が、同じかどうかを確認したい場合に… function like(ary1, ary2) { if (ary1.length !== ary2.length) { return false; } var v…

140文字以内でコナミコマンド

<script>k="";document.onkeyup=function(e){k=/38384040373937396665/.test(k+=(e||event).keyCode)?(alert(573),""):k.length>99?"":k}</script>137文字

... の中身を取ってみる

<script id="js" src="http://example.com/hoge.js"> alert("hoge!"); </script>script 要素に src を設定していると、script 要素内部のテキストは JavaScript としては理解されず、実行されません。こうするとテキストとして取得したり、実行できたりします。 var node = document.getElementById("js"); var txt = wi…

良く訓練されたスライダー

JavaScript で作った UI 部品の話になると、 jQuery UI とか、jQuery TOOLS あるじゃん とか良く聞きますね。 jQuery UI http://jqueryui.com/demos/ ソータブルなリスト http://jqueryui.com/demos/sortable/default.html スライダー横 http://jqueryui.com…

グローバルフラグ付きの RegExp.test が予想外の動きをする

正規表現が沢山あると、書くほうも読むほうもしんどいので、時々まとめちゃいます。 たとえば、こんなふうに。 function hoge(ary) { var i = 0, iz = ary.length, val; var rex = /\s*\!\s*important\s*/g; // グローバルフラグ付き for (; i < iz; ++i) { …

Acid2 セーフな uuCSSBoost.js で、ヒャッハーな世界へようこそ

ブラウザのレンダリングの互換性テストといえば、Acid2, Acid3 が有名です。 モダンブラウザだと、Firefox3+, Safari2+, Opera9+, IE8の標準準拠モードが Acid2 をパスします。 さかのぼること 8ヶ月前 こんなことを語ってました。 いまやってること CSSパー…

日本語でJavaScript

前衛的でギルティなコードを目指してみた。 <body> <div id="defs" title="constructor,document,body"></div> <script> 定義 = defs.title.split(","); 窓 = this; 発火 = (0)[定義[0]][定義[0]]; 本体 = 窓[定義[1]][定義[2]]; 発火('本体.innerHTML' + '="<img src=http://www.google.co.jp/images/nav_logo4.png>"')(); </script> </body> 発火(…

リバース・ドット・えんじにありんぐ

こーやって打ってました。シンプルライフ・スキー と ヒッコシ・スキー 属性があるので、物欲に駆られたコレクションとかまずやらないのですが、なーんかこれだけは捨てれずにずっと取ってました。 コンプリートはできず。ハンマーブロスとかが足りてない。

Metatunnel in javascript を試してみた

連日の HTML5::Canvas ネタ投下です。Canvasのテストデータに飢えてて、色々と試したりしてます。Ajaxian で紹介されていた http://ajaxian.com/archives/metatunnel-1k-demo-js-vs-osを、所々最適化して、IEでも動くようにしてみたのがこちら、 http://pigs…