タグ

ブックマーク / amachang.hatenablog.com (28)

  • finally がマイブーム - IT戦記

    皆様お久しぶりです そろそろ、日記を書かないと「はてな市民権」を剥奪されそうなので、書いておきまつ>< 最近 finally がマイブームです どういうときに? 比較的に大規模な開発のとき(プロトタイプとかちゃんと使ってるとき) どんなコードで? こんなコード。 Fuga を継承した Hoge を作る場合とか var Hoge = function() { /* ...(snip)... */ }; Hoge.prototype = new Fuga(); // メソッドのオーバーライド Hoge.prototype.getValue = function() { return Fuga.prototype.getValue.apply(this, arguments); }; この return 〜 .apply(this, arguments) までは定型区みたいなもんなので、まず書い

    finally がマイブーム - IT戦記
    sawat
    sawat 2009/02/21
    java屋からするとtry ... finally で事後処理をするのはすごく自然。だが、なぜかjavascriptにはfinallyはないと思い込んでた。(C++と混同?)
  • ブラウザでお絵描きプログラミング! Processing.js 登場! - IT戦記

    はじめに 今日、 jQuery の作者として有名な John Resig さんが Processing.js という JavaScript のライブラリを公開しました。 John Resig - Processing.js このライブラリを使うと、比較的簡単に以下のようなグラフィックスやアニメーションを書くことができるようになります。 というわけで、公開されたばかりのこのライブラリを簡単な使い方から詳しい使い方までとことん掘り下げてみたいと思います。 Processing.js 概要 まず、 Processing.js とは何かという話をします。 Processing.js とは、ブラウザで Processing というプログラミング言語を実行する JavaScript のライブラリです。 では、 Processing とはどのようなプログラミング言語なのでしょうか。 Processing

    ブラウザでお絵描きプログラミング! Processing.js 登場! - IT戦記
  • Google Gears の機能のおさらいと HTML5「Client-side DB」の相互運用を考える。Client-side DB に未来はあるか? - IT戦記

    さきほど Client-side database storage について書きましたが そこで、 Client-side database storage は今は Safari からしか使うことができません しかし、 Google Gears を使ってすべてのブラウザに実装することは可能だと思います。(すでにある?) その辺りも少し調べてみたいです。 Safari 3.1 に実装された「Client-side database storage (SQL API)」とは何か? - IT戦記 と書いてから、少しだけ Google Gears が持っているクライアントサイドデータベースについて調べてみました。 Google Gears とは まず、 Google Gears について少し触れておきます。 Google Gears はブラウザの機能を拡張するためのもので、以下の機能を提供します。

    Google Gears の機能のおさらいと HTML5「Client-side DB」の相互運用を考える。Client-side DB に未来はあるか? - IT戦記
    sawat
    sawat 2008/03/28
    『ローカルのデータはローカルに保存する』
  • IE8 で実装された Selectors API とは何か? - IT戦記

    はじめに IE8 には Selectors API という新しい仕様が実装されました。 ということで、今後 DOM 操作 API の主流になるであろう Selectors API についてまとめておきます。 Selectors API が使えるブラウザ 2008 年 3 月 6 日現在の一覧 WebKit Build Archives | WebKit (開発版の Safari) Windows | Official Site for Microsoft Windows 10 Home & Pro OS, laptops, PCs, tablets & more (IE8 の Beta 版) Selectors API とは Selectors API とは W3C で定義された仕様です。詳細に関してはこちらをどうぞ 簡単に説明すると getElementsByTagName や getE

    IE8 で実装された Selectors API とは何か? - IT戦記
  • 昔のプレゼン資料の URL が変わります>< - IT戦記

    経緯 今まで色々なプレゼン資料を usrb.in ドメイン以下に置かせていただいていたのですが、そのマシンを別の用途に使うことになったらしいので、すべての資料を移動させることになりました。 対象の URL http://usrb.in/amachang/static 以下の URL は基的にすべてですが、主な URL は以下のものです。 http://usrb.in/amachang/static/gaiax01/ http://usrb.in/amachang/static/cssstudy/200701/ http://usrb.in/amachang/static/cssstudy/200701/haihu.html http://usrb.in/amachang/static/shibuyaes/ http://usrb.in/amachang/static/devsum/ ht

    昔のプレゼン資料の URL が変わります>< - IT戦記
  • JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記

    JavaScript-XPath とは JavaScript-XPath は、 DOM 3 XPath を実装していないブラウザに対して、実用的な速度で動作する DOM 3 XPath のエンジンを追加します。 一言で乱暴に言ってしまえば、どのブラウザでも document.evaluate って関数で XPath 使えるようになるよ!ってことです。 以下が公式サイトになります。 http://coderepos.org/share/wiki/JavaScript-XPath DOM 3 XPath ってなんなの!? めっちゃ簡単(で、ちょっとだけ適当)なDOM 3 XPath の説明をします><。 JavaScript でよく使う document.getElementById や document.getElementsByTagName って関数ありますよね? DOM 3 XPath

    JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記
  • for 文を setTimeout に変換する - IT戦記

    for 文で 100 項目とか 1000 項目とかあるテストケースを処理するとブラウザが固まる。 こんなダイアログが表示されます。 ということで for 文を setTimeout や setInterval に変換する事で定期的にブラウザに処理を戻すことができる。 // ここでは console.log のところでログを取ってますが // 通常は処理が入ります。 for (var i = 0; i < 3; i ++) { console.log('a' + i); } /* * 結果 * a0 * a1 * a2 */ これをまず while 文に変換 var i = 0; while (true) { if (!(i < 3)) break; console.log('a' + i); i ++; } /* * 結果 * a0 * a1 * a2 */ で、 setTimeout に

    for 文を setTimeout に変換する - IT戦記
    sawat
    sawat 2007/11/08
    後はこの変換を自動化すれば完璧だね!
  • JavaScript だってマルチスレッドくらいできるさ! - IT戦記

    Rhino を使ってみた。 なんか spawn でスレッドが起動できる!便利! spawn(function() { var i = 10; while(i--) print('hoge'); }); spawn(function() { var j = 10; while(j--) print('fuga'); }); 結果 fugahoge fuga hogefuga fuga hogefuga hoge fuga hogefuga hogefuga hogefuga fuga hoge hoge hoge sync で同期を取る print = sync(print); // <- これ spawn(function() { var i = 10; while(i--) print('hoge'); }); spawn(function() { var j = 10; while(j

    JavaScript だってマルチスレッドくらいできるさ! - IT戦記
  • IT戦記 - 一行で IE の JavaScript を高速化する方法

    以下の一行をすべての JavaScript の前に読み込む /*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。 たとえば 以下のように、読み込む前と読み込んだ後を比較してみます。 // Before var date = new Date; for (var i = 0; i < 100000; i++) document; alert(new Date - date); // 643 /*@cc_on _d=document;eval('var document=_d')@*/ // After date = new Date; for (var i = 0; i < 100000; i++) document; alert(new Date -

    IT戦記 - 一行で IE の JavaScript を高速化する方法
    sawat
    sawat 2007/10/11
    100000回のdocument参照がおよそ0.5秒短縮される。これに気付くのがすごい。恩恵にあずかれるケースはほとんどないだろうけど。 ループ無しだと20倍ぐらいだった。逆に他の処理に埋もれて差がなくなりやすいとも言える。
  • オブジェクトをプリミティブに型変換するときに便利な関数 - IT戦記

    ふと、思った オブジェクトを作るときに、以下のように型変換用の関数を作っておけば、便利じゃないかと var Hoge = function() { /* ... */ }; Hoge.prototype.number = function() { /* Hoge オブジェクトを数値に変換するコード */ } Hoge.prototype.string = function() { /* Hoge オブジェクトを文字列に変換するコード */ } Hoge.prototype.boolean = function() { /* Hoge オブジェクトを真偽値に変換するコード */ } Hoge.prototype.object = function() { return this } 使う時はこんな感じ if (object[typeof any0]() == any0) { // 比較相手に

    オブジェクトをプリミティブに型変換するときに便利な関数 - IT戦記
    sawat
    sawat 2007/10/04
    なるほど…でもキモいな。
  • IT戦記 - XPath は実用に耐えうるかの考察と xpath.js

    背景>< Safari 3 系から DOM Level 3 XPath が実装されました!!!キタコレ!!! Firefox 2 系は DOM Level 3 XPath が実装されている。 Opera 9 系は DOM Level 3 XPath が実装されている。 XPath 1.0 in JavaScript • Cameron McCormack's blog (以下、 xpath.js)なるものがあり Internet Explorer 6 および 7 のような DOM Level 3 XPath を実装していないブラウザでもそれ相当の機能を実装することができる ということで、以下のことを試してみたい!! Safari, Firefox, Opera の XPath のパフォーマンスはどうか? xpath.js のパフォーマンスはどうか? xpath.js は XPath 1.0

    IT戦記 - XPath は実用に耐えうるかの考察と xpath.js
  • 配列を結合したり、配列を初期化したり - IT戦記

    既出かもー 配列の結合 var array1 = [1, 2, 3]; var array2 = [4, 5, 6]; [].push.apply(array1, array2); alert(array1); // [1, 2, 3, 4, 5, 6] 3文目で空配列を使ってるのは書くのが短いからってだけ。 配列の初期化 function hoge() { var args = []; [].push.apply(args, arguments); alert(args); }; hoge(1, 2, 3); // [1, 2, 3]

    配列を結合したり、配列を初期化したり - IT戦記
    sawat
    sawat 2007/08/16
    破壊的なconcatはspliceでもできるよん。
  • style.cssText の使い処に関する考察 - IT戦記

    cssText って知ってますか? cssText っていいうのは CSSRule オブジェクトとか CSSStyleDeclaration が持っている情報を css ファイルに書く形式の文字列にしてくれる機能です。 乱暴に言ってしまえば、 css 系のオブジェクトが持っている innerHTML みたいなものです。 具体例を見てみましょう。 こんな感じの body があるときに <body style="margin: 1em; padding: 1em; border: 1em">....</body> こんな感じで使えます。 alert(document.body.style.cssText); // 'margin: 1em; padding: 1em; border: 1em' 簡単でしょう?(ボブ略 設定も出来ますよ こんな感じ // さっきの続き document.body

    style.cssText の使い処に関する考察 - IT戦記
  • IE 以外の JavaScript で getter setter が使えるようになる! - IT戦記

    Opera 9.5 では getter setter が使えるようになります。 http://my.opera.com/desktopteam/blog/kestrel-is-coming で Safari 3 でも使えるか試してみたら・・・ alert({ get x() { return 'ok' } }.x); // ok つ、使えた! Firefox でも かなり前から getter setter が使える という事は・・・ IE 以外で getter setter が使えるのはもうすぐだ!!! IE にしかないプロパティを他のブラウザで実装することができるようになる!! たとえば、こんな感じ? // ↓条件付きコンパイル /*@cc_on @if (@_jscript) @else @*/ if (!('returnValue' in Event.prototype)) { Ev

    IE 以外の JavaScript で getter setter が使えるようになる! - IT戦記
    sawat
    sawat 2007/06/27
    おおっ!
  • getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記

    getComputedStyle とは!? ある要素にどんなスタイルが当たっているかを計算してくれる。便利な関数。 使いかたはめっちゃ簡単! var style = getComputedStyle(element, ''); alert(style.fontSize); // 14px alert(style.color); // rgb(0, 0, 0) ちなみに第二引数は疑似要素の style を取りたい場合に使います。通常は空文字列でいい。 でも、 getComputedStyle はこのままでは IE, Safari では動かない。 Safari では window(グローバル領域) に getComputedStyle は定義されてなくて、 document.defaultView だけに getComputedStyle が定義されている。 ちなみに、 Firefox, Op

    getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記
    sawat
    sawat 2007/06/12
    getComputedStyleとcurrentStyleの「単位をpxに変換する/しない」という違いがなければもっと便利なんだけどな。というかIEがgetComputedStyleを実装すれば済むことだけど。
  • JavaScript の関数を「引数そのまま返す化」

    関数を「引数そのまま返す化」 // sonomama の s Function.prototype.s = function(arg) this(arg); // 来の処理 return arg; // そのまま返す } 例1 hoge.method(); // ← この hoge を調べたい alertだけ alert(hoge); hoge.method(); 改行めんどいー。 console.logだけ console.log(hoge); hoge.method(); 改行めんどいー。 alert + そのまま返す化 alert.s(hoge).method(); // 1 ステートのまま console.log + そのまま返す化 console.log.s(hoge).method(); // 1 ステートのまま 例2 function hoge() { // ...略...

    JavaScript の関数を「引数そのまま返す化」
    sawat
    sawat 2007/05/18
    小さいことだけど、結構便利。
  • 濃い JavaScript のテクニック集見つけた - IT戦記

    jslibs の wiki を眺めてたら、 JavaScript のテクニック集を見つけてしまった http://code.google.com/p/jslibs/wiki/JavascriptTips 内容 Firefox 限定のテクニックも含まれてますが、 JavaScript のテッキーな書き方満載です。 例えば カンマ演算子 var a = (1, 2, 3, 4); alert(a); // 4 var b = ( a += 3, a *= 6, a ); とか、普通やらないようなこともいろいろあって楽しかったです。

    濃い JavaScript のテクニック集見つけた - IT戦記
    sawat
    sawat 2007/04/23
    カンマ演算子は、for文と、bookmarkletなどで文字数をぎりぎりまで切り詰めなきゃいけないときに使う。with(a){b=3;c=4;} => with(a)b=3,c=4; って具合に。
  • 「勝手に添削 - JavaScript 入門」を勝手に添削 - IT戦記

    このエントリーは以下のエントリーへの解答です 404 Blog Not Found:javascript - 勝手に添削 - JavaScript入門 はじめに 僕はあまりブログを一生懸命書くのは嫌いです。で、いつも適当に言葉は少なめにソースだけで解説しているが。今回は、それだけでは伝わらないところまで突っ込まれてしまったので、僕が伝えたかった意図をこと細かく説明していこうと思います。 文章が苦手なので、変な言い回しで読み辛かったりすると思いますがよろしくお願いします。 一応、弾さんには断っておきますが、別に弾さんに噛みついている訳ではないです。ただ、弾さんのような有名人に突っ込まれたら、僕の講義を聞いてくれたエンジニアが嘘を教えられたと不安になってしまうのではないかと思ったのです。僕の講義を聞きにくれた人には、虚像でもいいから 100 % の自信と勇気を付けて欲しい(プログラムを書く上で

    「勝手に添削 - JavaScript 入門」を勝手に添削 - IT戦記
    sawat
    sawat 2007/04/13
    同意。Hoge.prototype = { ... } は今まさに自分でクラスを定義する場合の構文であって、なにか継承しているかもと考えること自体ナンセンスだろう。
  • 社内勉強会資料 - IT戦記

    今回の趣旨 あまり JavaScript を書いたことのない人用に講義をしました。 内容 一つ一つ例を見せながら質問を聞き、参加者全員が JavaScript のオブジェクト指向を理解できるまでやりました。時間は当初 40 分の予定でしたが、結局 1.5 時間になりました。 成果 最終的にガイアックスのほとんどの開発者(マークアップエンジニアから、インフラの人まで)が JavaScript を読めるというレベルまでは、到達したのではないかと思います。 まあここからは、テクニックとバッドノウハウの世界ですが・・・。 資料 大切なことは言葉で話して、資料はほとんど例とかソースとかだけですが。教える手順とか参考になるところもあるかもしれないので公開します。 http://usrb.in/amachang/static/gaiax01/

    社内勉強会資料 - IT戦記
    sawat
    sawat 2007/04/12
    内容はいい。「構造化」が一般的な意味とちがくない?あえていうなら「構造体(struct)化」か?
  • 0.5px は見えているか? - IT戦記

    ちょっと アニメーション作ってて、見えたり見えなかったりする 1px が気になるので調べてみた いきなり、結論 結論から言うと 0.5px 〜 1px が見えるかどうかはブラウザによる。(Firefox だけ挙動が違う) 実証コード http://usrb.in/amachang/static/tmp/pxtest.html 手元のブラウザでは Win Opera 1px から見える Win IE6 1px から見える Win IE7 1px から見える Win Firefox 0.5px から見える(四捨五入で求めてる) Linux Firefox 0.5px から見える(四捨五入で求めてる) Linux Konqueror 1px から見える まとめ 1px を気にするときってありますよね!そんなときはFirefox の px 指定は四捨五入と覚えておこう。

    0.5px は見えているか? - IT戦記
    sawat
    sawat 2007/03/06
    Math.floor(width/2) + 'px' みたいにするようにしてます。