タグ

javascriptとamachangに関するhajimepgのブックマーク (25)

  • Google Chrome の JavaScript エンジン V8 を試す - IT戦記

    (基だらだら進行で、過程を追記していきます) Google Chrome が出ました Google ChromeJavaScript エンジンが刷新されたということで、その JavaScript エンジン V8 についていろいろ調べてみようと思います。 Issues - v8 - V8 JavaScript Engine - Monorail ビルドしてみる まず、 svn からソースを持ってくる $ svn co http://v8.googlecode.com/svn/trunk/ v8おおお。以外と少ない で、 trunk の中に入って $ cd v8scons でビルド(scons が入ってない人は、 port や apt-get で入れる) $ scons scons: Reading SConscript files ... scons: done reading SC

    Google Chrome の JavaScript エンジン V8 を試す - IT戦記
  • CSS の「値」とは何か - IT戦記

    この前 以下のようなエントリを書きました CSS の名前の整理 - IT戦記 今回は CSS における この「value(値)」という言葉の意味、そして曖昧さについて書きたいと思います。 6 つの値 CSS において「値」は曖昧な言葉です。 なので、「値」という言葉を使って CSS の説明をするのは非常に効率が悪かったりします。 たとえば、「ここの値って、 hogehoge の意味の値?」「いやいや、ここの fugafuga の意味の値が piyopiyo なんだよ」というように、まったく無駄な会話が繰り広げられるわけです。 ですので、今日からはちゃんと CSS の「値」をちゃんと説明できるように、「値」に以下の 5 つの名前を付けましょう。 Declared values Cascaded values Specified values Computed values Used valu

    CSS の「値」とは何か - 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 を高速化する方法
  • Shibuya.JS の資料「The next genaration of browsers」公開 - IT戦記

    Shibuya.JS の資料を公開します。 発表は時間がなくて飛ばし飛ばしになってしまいましてすみませんでした>< リンク 発表の資料 http://amachang.art-code.org/shibuyajs24/ ちなみに、資料のブラウザアイコンで黄色で囲ってあるやつは新しく実装されたという意味です。 発表の動画 at Google Video http://video.google.com/videoplay?docid=-7565816545804603660

    Shibuya.JS の資料「The next genaration of browsers」公開 - IT戦記
  • IT戦記 - JavaScript の this について

    WEB+DB PRESS 編集の R たんから、僕の連載記事に読者様から質問が来ていると教えていただいたので、その内容を教えていただきました。 以下、内容を転載 「JavaScriptわくわく開発道」の記事に関して質問です。 今回の内容で特に興味を持ったのはthisキーワードの振る舞いでした。 thisキーワードの説明には、オブジェクト型の変数を別の変数にコピーしてから初期化すると、コピーした変数からメソッドを実行できなくなるという例が紹介されていました。 そこには「(1)の時点でobj0には{}が入っているため、hogeは未定義となってしまう」という説明があるのですが、誌面の都合上省略があるためか、thisキーワードを用いることで問題を回避できるという理由がなかなか理解できないでいます。 自分なりに考えてみたところ、内部的には以下のようなことが起きているのではないかと思いました。 (1)

    IT戦記 - JavaScript の this について
  • Firebug で XPath を簡単に試す方法 - IT戦記

    適当に XPath を試したい時に 以下のようにすれば、簡単に XPath をためせます。 document.evaluate( '//div[@class="hoge"]', // XPath 式 document, // 基準となるノード(要素とか null, // 名前空間の解決方法(適当にやるときは null 6, // 取得する形式の指定(適当にやるときは 6 null // 結果を再利用するかどうか(適当にやるときは null ); 簡単ですね。 document.evaluate、式、ドキュメント、ヌル、6、ヌル。 覚えましたか? でも、これを Firebug で実行するとこうなっちゃいます。 うーん。これではどの要素が選択されたかわかりません>< 不便ですねー。 というわけで、以下のブックマークレットを実行してあげてください。 javascript:void(XPathRe

    Firebug で XPath を簡単に試す方法 - IT戦記
  • 正規表現の XPath 字句解析その2 - IT戦記

    またまた XPath ネタです。 先日、XPath の字句解析をワンライナーで作ってみた。 - IT戦記で書いた正規表現の XPath 字句解析ですが、よく考えるといろいろおかしかった(不正な文字が無視されたりする)& id:otsune さんからコメントやブクマの突っ込みもありまして、1から正規表現を勉強してから新しく書き直すことにしました。 正規表現の勉強方法 以下の二つの方法で勉強しました。 1.SpiderMonkey の正規表現デバッグオプションを使う SpiderMonkey をビルドするときに、以下のフラグを付けてビルドします。 $ make -f Makefile.ref "DEFINES=-DREGEXP_DEBUG -DDEBUG"こうすると正規表現がどういう風に実行されたかを調べることができます。 こんな感じ $ js js> 'foobar'.match(/o+/)

    正規表現の XPath 字句解析その2 - IT戦記
  • IT戦記 - JavaScript で数式パーサを書いてみた。

    背景 いままで、ちゃんとパーサというものを書いたことがなかったので勉強のためにアレコレ考えながらやってみようと思って、簡単な数式を木にするパーサを書いてみようと思ったのです>< 今回作るパーサの仕様 パースする数式の演算子は二項演算子 + - * / と単項演算子 + - だけ。 括弧とかは使わない。 演算の優先順位は * / のほうが + - より高い。つまり、 1 + 1 * 1 は 1 + (1 * 1) 単項演算子は二項演算子より優先順位が高い。つまり、 - 1 + 1 は (-1) + 1 で、作ってみた! ソースコード filter 関数とか使ってるので、 Firefox only です。 var parse = function(source) { var tokens = source.match(/[-+*/]|[^-+*/\s]+|\s+/g).filter(/^[^\

    IT戦記 - JavaScript で数式パーサを書いてみた。
  • 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
  • JavaScript < jQuery < Lisp ? - IT戦記

    はじめに 僕は jQuery も Lisp も触ったことがないので、このエントリが言ってることは間違えてる可能性があります>< もし、「それ違うよ」ってのがあれば指摘してくれると嬉しいです>< そういえば 初めて dankogai さんと会ったときに「S 式とアセンブラは両極端にいながら データ==プログラム というところが同じだ」というようなことを言っていた(気がする)。 データ==プログラムというのは当にすごい データとしてプログラムを直接書き換えたりいろいろなことができる。当にすごい。 もちろん、他の言語でも、リフレクションすることや、変数やプロパティに関数を格納することでそれと似たようなことは可能だ。でもそれは、データ=プログラムとは全然違う。 バイトコード書き換えは似ているが、バイトコードの世界がデータ==プログラムなのであってその言語自体はそうじゃない。でも、バイトコードを

    JavaScript < jQuery < Lisp ? - IT戦記
  • Re: スーパー pre 記法で実行可能な JavaScript を - IT戦記

    この記事を読んで http://blog.livedoor.jp/dankogai/archives/50824976.html うんうん!そのとおり!と思った! でも ちょっと変なコードをクリックしてしまって問題になるかもしれない。 「こんにちはこんにちは!!」みたいな。 だから、ちょっと弾さんの executable をこうしたらどうかな? >|javascript| alert(Math.atan2(1,1)*4); |executable|<<pre class="syntax-highlight"><span class="synStatement">alert</span>(Math.atan2(1,1)*4) </pre> <textarea style="display:none"> (function(){ alert(Math.atan2(1,1)*4); })() <

    Re: スーパー pre 記法で実行可能な JavaScript を - IT戦記
  • JavaScript で簡単にスタックトレースを取るテクニック

    Firebug を使うと console.trace(); これだけでスタックトレースを取ることが出来ます。 でも、 XUL の開発とか、人のブラウザで Firebug が入ってない時とかは出来ないので、 そういう時は、 alert(Error().stack); これだけで出来ます。まあ Firefox only ですが。

    JavaScript で簡単にスタックトレースを取るテクニック
  • デブサミ2007資料「JavaScriptの現在と未来」 - IT戦記

    Developers Summit 2007 の資料を公開します。 推奨フォント 以下のフォントが入ってると一番きれいに見れると思います。 メイリオ 推奨ブラウザ 以下のブラウザに最適化(高速化など)して作りました。 Firefox 2.0 IE 7 対応ブラウザ OS いちおう以下の環境では動作確認しました。 Windows Firefox 2.0 Windows IE 7 Windows IE 6 Windows Opera Linux Firefox 2.0 操作方法 Firefox は Flash の上でのクリックは無視されるので注意 左クリック: 進む 右クリック: 戻る →キー: 進む ←キー: 戻る 高度な操作方法 ロケーションバーや Firebug や jsh bookmarklet から以下の操作をすることで、早送り巻戻しページジャンプなどができます。 早送り巻戻し: g

    デブサミ2007資料「JavaScriptの現在と未来」 - IT戦記
  • IT戦記 - 僕も半透明 png を使うためのライブラリ作った!

    いろいろと古い IE で半透明 png を使うための JS が紹介されています http://web.kankodo.net/2007/02/01-233315.html http://labs.unoh.net/2007/02/ie6_png_fix.html http://phpspot.org/blog/archives/2007/02/iepngjavascript.html で、自分も使おうと思ったのですが。 ライブラリの依存とか、 window の load イベントの時に処理されるのがちょっとだけ嫌だったので、自分用のを作りました。 意外と便利だったので公開します デモ(IE5.5 or IE 6 で見てください) http://usrb.in/amachang/static/AlphaLoader/demo.html 使いかた 半透明にしたい img 要素のあとに http

    IT戦記 - 僕も半透明 png を使うためのライブラリ作った!
  • JavaScript の配列と連想配列の違い - IT戦記

    id:cheesepie:20070131:1170172709 最近は、こういう風に JavaScript を勉強する人が増えていてとても嬉しいです ^^ id:cheesepie さん頑張ってください! で、ちょっと配列と連想配列の使いかたが違うようなので、エントリーを書こうと思いました。おせっかいだったらすみません>< ! やっぱり、このへんが JavaScript の難しいところのひとつなのだろうか。 ということで、 JavaScript の配列と連想配列の違い いってみよおー 連想配列とは JavaScript では連想配列は一番シンプルなオブジェクトのことである。つまり、すべてのオブジェクトは連想配列である。 以下のすべての連想配列はまったく同じものである。 // 1 var obj = { hoge: 'hoge' }; // 2 var obj = { 'hoge': 'h

    JavaScript の配列と連想配列の違い - IT戦記
  • JavaScript の in を使って要素の差分を取る - IT戦記

    in 文の実用的な使いかた とりあえず、 Firefox + Firebug 前提で。 link 要素ってどんな要素だっけ じゃあ、とりあえず、<link> にあって <div> にないものを出してみよう for (var n in HTMLLinkElement.prototype) if (!(n in HTMLDivElement.prototype)) console.log(n); disabled charset href hreflang media rel rev target type sheetおお。rel とか rev とか href とか持ってるんだな。ふむふむ。 getAttribute とか setAttribute とか使わなくてもいいな。 じゃあ script 要素は? for (var n in HTMLScriptElement.prototype) i

    JavaScript の in を使って要素の差分を取る - IT戦記
  • 関数一発でプロトタイプチェーンに繋げて、オブジェクトをクローンする。 - IT戦記

    最近、プロトタイプ的継承の話しが盛り上がっています。 http://blog.livedoor.jp/dankogai/archives/50662064.html http://labs.cybozu.co.jp/blog/kazuho/archives/2006/10/javascript_string.php http://blog.livedoor.jp/dankogai/archives/50662606.html 最終形がやたら複雑になっています でも、実際はあそこまで複雑に書かなくても、できると思います ^^; そう思う理由 P 関数は object 関数の中でローカルのものである。コンストラクタとして使える必要はない。なので、 Atomic な場合でも P は function(){} でいい。 method 関数では P.prototype のプロパティに関数が代入されて

    関数一発でプロトタイプチェーンに繋げて、オブジェクトをクローンする。 - IT戦記
  • それすぐ実行!JavaScript! - IT戦記

    思った JavaScript はすぐに実行してみましょう! ブラウザの URL 入力欄に javascript:(function() { /*実行したいコードを書く*/ })()FireBug を使ってる人は、コンソール開いて実行したいコードを書く。 たとえばこんなことができます。 これらの例は僕が日頃使っているものです。 グローバルで使える関数を列挙する(Firefox Only) FireBug用 for(var n in window) if(typeof window[n]=='function')console.log(n); URL用 javascript:(function(){var b='';for(var n in window)if(typeof window[n]=='function')b+=n+"\n";alert(b)})() Object.prototyp

    それすぐ実行!JavaScript! - IT戦記
  • IT戦記 - 複雑で重くなった JavaScript を超高速化する方法3

    8 ヶ月前に setInterval 書き換えのネタで作ったやつ id:amachang:20060104:1136344836 id:amachang:20060114:1137243389 ふと ちょっと設計変えたらすごく速くなる気がして、作り替えてみた。 でも、作ってみたら clearInterval がちょっとだけ速くなったけど、正直そこまで変わらなかった。 でも、設計はきれいになったと思うので公開します。 ダウンロード http://sample.ecmascript.jp/setInterval/setInterval03.js 以前のもファイル化した 最初の失敗作(utf-8だから適当にエンコードして使ってください) 次に作ったやつ、実績はこっちのがある(utf-8だから適当にエンコードして使ってください) 使いかた すべてのスクリプトより前に読み込む <script src

    IT戦記 - 複雑で重くなった JavaScript を超高速化する方法3
  • IT戦記 - [javascript] Plain Old JavaScript Prototypes (普通の JavaScript も使えるようにしよう)

    Prototype.js や MochiKit や jQuery や dojo こういう便利なライブラリがたくさん出てきてとても便利になりました。 でもそのライブラリ当に必要? たしかに、グループワーキングを行うにはこれらのライブラリは必須だと思います。 でも、ちょいスクリプトを作るのに .bind(this) や $ や each や Event.observe が必要でしょうか。 いささかオーバスペックな気がします。 実際に「このツール Prototype.js 必須かよ。こっちは MochiKit で作ってるのにぃ」とかってことも多々あります。 あれを使うためにあれとこれを読み込んで、これを使うためにこれも必要だな。こんな感じだとサイトはどんどん重いものになってしまします。。。orz そこで、原点回帰です。 ちょっとしたツールでライブラリ使うのはやめようよ!何も使わなくても Jav

    IT戦記 - [javascript] Plain Old JavaScript Prototypes (普通の JavaScript も使えるようにしよう)