タグ

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

  • MacPorts の SpiderMonkey と CPAN の JavaScript::SpiderMonkey を一緒に入れる - IT戦記

    MacPorts で SpiderMonkey を入れた場合は、以下の位置にライブラリファイルとインクルードファイルがあります。 /opt/local/lib/* /opt/local/include/*なので、 JavaScript::SpiderMonkey をインストールする際には、 Makefile.PL の 38 行目あたりを以下のように修正しなければなりません。 my %possible_install_paths = ( "../js/src/*" => "../js/src", "/usr/lib" => "/usr/include", "/usr/local/lib" => "/usr/local/include", "/usr/lib/firefox" => "/usr/include/firefox", "/opt/local/lib" => "/opt/local/

    MacPorts の SpiderMonkey と CPAN の JavaScript::SpiderMonkey を一緒に入れる - IT戦記
  • Firebug のコンソールに出力される形式を変える - IT戦記

    そう>< length が数字だと無条件で配列扱いなんですよね。 childNodesとコメント - ロックスターになりたい という訳で、 domplate をちょっといじってみたら意外と楽に出来たのでメモメモ domplate は Firebug のテンプレートエンジン コンソールの形式を定義したオブジェクトを作る 自分が担当するオブジェクトが supportsObject に渡ってきたら true を返す tag はコンソールに出るときのテンプレート(domplate) shortTag は配列の中に入ってるときのテンプレート(domplate) getTitle はプロパティの中に入ってるときの文字列(たぶん?) 作ったオブジェクトは registerRep に入れる image diff Index: reps.js ================================

    Firebug のコンソールに出力される形式を変える - IT戦記
    penalty
    penalty 2007/10/30
    firebugのchildNodeの問題対応
  • AutoPagerize の SITEINFO を JSON 化するブックマークレット - IT戦記

    実際に使われている XPath のデータを大量に欲しかったので どうしよーって悩んでたら 。。。!!!AutoPagerize があるじゃん!!! ってことで SITEINFO を JSON 化するブックマークレット作った。(既出? ブックマークレット javascript:(function(){var result = document.evaluate('//textarea[@class="autopagerize_data"]',document, null, 7, null); var array = [];for (var i = 0, l = result.snapshotLength; i < l; i ++) {var data = result.snapshotItem(i).value;var json = '({' + data.replace(/\s*$/, '

    AutoPagerize の SITEINFO を JSON 化するブックマークレット - IT戦記
  • 「再帰→ループ」の変換が大変だった件 - IT戦記

    まず、ループは再帰で表現できる ループというのはすべて再帰呼び出しで表現できる。 たとえば、コレは var array = [1, 2, 3]; for (var i = 0; i < array.length; i ++) alert(array[i]); こんな感じになる (function f(array, i) { if (i < array.length) { alert(array[i]); return f(array, i+1); } })([1, 2, 3], 0); もし、 array がこの目的以外に使われないならコッチのがキレイかも (function f(array) { alert(array.shift()); if (array.length) return f(array); })([1, 2, 3]); ということは、再帰はループで表現できるはず という

    「再帰→ループ」の変換が大変だった件 - IT戦記
    penalty
    penalty 2007/10/25
    実用というより、勉強に良いかも。良いところに目をつけるなぁ
  • JavaScript で 1_000_000_000 とか書けるようにする。 - IT戦記

    以下のブクマを見て、 はてなブックマーク - HINのブックマーク / 2007年10月11日 たしかに、Perl とか Ruby は 1_000_000 とか書けるなあ。 JS も出来たら便利だなあと思いました。 ということで SpiderMonkey で _ に対応してみる。 こんな感じで書き換えてみた。 Index: jsscan.c =================================================================== RCS file: /cvsroot/mozilla/js/src/jsscan.c,v retrieving revision 3.138 diff -r3.138 jsscan.c 1334,1335c1334,1338 < } else if (JS7_ISDEC(c)) { < radix = 8; --- >

    JavaScript で 1_000_000_000 とか書けるようにする。 - 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 を高速化する方法
    penalty
    penalty 2007/10/22
    特定の状況では早くなるのは間違いない
  • HTML 用の XPath 機能テストを書いた - IT戦記

    こんな感じ ここでテストできます(DOM 3 XPath 対応ブラウザでしか動きません) XPath Functional Test テストしてみると Safari 3.0.3 Public Beta はバグが多い Opera と Firefox はかなり優秀 要素名は大文字? あと、特に気になった点として、 name 関数の復帰値が Firefox では大文字となって Opera, Safari は小文字となる。 なので、クロスブラウザ的には以下のように or で繋いであげないといけない。めんどくさいなあ // <p>hoge</p> var result = document.evaluate('//*[name() = "P" or name() = "p"]', document, null, 7, null);

    HTML 用の XPath 機能テストを書いた - IT戦記
  • 前の記事は間違っていました。申し訳ありません。という訳で、改めて別の IE のオブジェクト配列のソート高速化。 - IT戦記

    でも、基準値が整数 & 65536 以下の場合限定です>< しょぼいですね>< 以下のようにプロパティ値で並び替えたいとする。 var Klass = function(order) { this.order = order }; var array = [new Klass(3), new Klass(1), ....]; array.sort(function(a, b) { return a.order - b.order }); こうすると、 10 倍近く速くなる var Klass = function(order) { this.order = order; var _order = String.fromCharCode(order); // ここを追加 this.toString = function() { return _order }; // ここを追加 }; var

    前の記事は間違っていました。申し訳ありません。という訳で、改めて別の IE のオブジェクト配列のソート高速化。 - IT戦記
    penalty
    penalty 2007/10/14
    別のアプローチ
  • IE でオブジェクトの配列のソートを 10 倍速くする - IT戦記

    この記事の内容は嘘です。間違えてました。申し訳ありません。 謝罪 すみません。この記事の内容では並び替えが行われないようです。手元の環境では toString を見ていて並び替えられていたようです。指摘してくださった id:nanto_vi さんご指摘ありがとうございます。 以下のようにプロパティ値で並び替えたいとする。 var Klass = function(order) { this.order = order }; var array = [new Klass(3), new Klass(1), ....]; array.sort(function(a, b) { return a.order - b.order }); こうすると、 10 倍近く速くなる var Klass = function(order) { this.order = order }; Klass.proto

    IE でオブジェクトの配列のソートを 10 倍速くする - IT戦記
  • mixi 新デザインでグリモン作ったり、スクレイピングしたり、しやすくなった - IT戦記

    今回の mixi のデザインのポイントは 全ページで prototype.js の 1.5.0_rc0 が読み込まれている 新しいデザインのページはテーブルレイアウトじゃない 新しいデザインのページは id class 付きまくり いろいろ試してみた prototype.js が読み込まれているか確認する alert(Prototype.Version); // 1.5.0_rc0 ページ内に id が何個あるか alert($$('*[id]').length); // トップページに 52 個! ページ内に class が何個あるか alert($$('*[class]').length) // トップページに 239 個! おおすごい! 試しに日記一覧ページから日記の URL を抽出するワンライナー $$('#bodyMainAreaMain dt a').filter(/view_

    mixi 新デザインでグリモン作ったり、スクレイピングしたり、しやすくなった - IT戦記
  • オブジェクトをプリミティブに型変換するときに便利な関数 - 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戦記
    penalty
    penalty 2007/10/08
    そんなに悪く無いと思うけど・・
  • はてブがページランクに影響を与えなくなったら - IT戦記

    どうなるんだろう? ブログが検索エンジンにひっかかりにくくなる でも、ブログって検索から来る人より RSS から来る人のほうが多いからいいのかな 中にはブックマークするモチベーションが下がる人もいる(どうだろ? SEO 狙いのスパムはなくなるけど、注目ページやホッテントリ狙いのスパムは無くならない 僕は賛成でも反対でもありません。 id:naoya さんが正しいと思うサービスを使いたいです。 リンク http://naoya.g.hatena.ne.jp/naoya/20070925/1190686664

    はてブがページランクに影響を与えなくなったら - IT戦記
  • 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 について
  • 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戦記
    penalty
    penalty 2007/09/16
  • JavaScript 第5版 を読んでみたよ - IT戦記

    今日の朝 オライリー・ジャパンから「サイ最新作」こと「JavaScript 第5版」が送られてきてたのでガーっと読んでみたよ。弾さんより早く書評を書こうと必死だったのは内緒だよ。 JavaScript 第5版 作者: David Flanagan,村上列出版社/メーカー: オライリー・ジャパン発売日: 2007/08/14メディア: 大型購入: 52人 クリック: 1,011回この商品を含むブログ (271件) を見る 感想 書は JavaScript を学ぶうえでは、少しだけ難しいだと思います。しかし、同時に「JavaScript を学ぶための善意の嘘」がほとんど書かれていないでもあります。ひととおり読んでみたのですが、文法(字句〜スコープチェーン、プロトタイプ)から JavaScript のコアオブジェクト、 DOM の操作、 CSS の操作、 SVG、 VML、 canva

    JavaScript 第5版 を読んでみたよ - IT戦記
    penalty
    penalty 2007/09/16
  • JavaScript < jQuery < Lisp ? - IT戦記

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

    JavaScript < jQuery < Lisp ? - IT戦記
    penalty
    penalty 2007/09/16
    jsでlispライクなコーディング
  • ロケーションバーに直入力するとブクマを見に行って補完してくれるコンポーネント作った - IT戦記

    今日徹夜ぎみで作ってみた でも 使ってみたら逆に不便だった>< 勉強になったからいいや。 破棄! もったいないので、今手元にあるソースを貼っときます このソースを Firefox インストールディレクトリ以下の components に入れると textbox 要素で autocomplete="delicious" が使えるようになります。 開発中のものなのでバグありまくりです。 ちなみに、僕が一日に書けるコードはちょうどこのくらいです↓ const Cc = Components.classes; const Ci = Components.interfaces; const Cr = Components.results; const CLASS_ID = Components.ID('{aa892eb4-ffbf-477d-9f9a-06c995ae9f85}'); const C

    ロケーションバーに直入力するとブクマを見に行って補完してくれるコンポーネント作った - IT戦記
  • 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戦記
    penalty
    penalty 2007/09/16
    $X関数が使える・・・?
  • JavaScript のワンライナーでカラーコード - IT戦記

    RGB 値が分かってて #XXXXXX を計算するのめんどいなーと思って Firebug でやってみた。 '#' + [76, 84, 105].map(function(i){ return (i >> 4 ? '' : 0) + i.toString(16) }).join('') このくらいならワンライナーで書けて便利ー^^ 追記: 弾さんからトラックバックもらって見てみたけど弾さんはちょっとミスってたので再トラバします。 (function(r,g,b){return '#' + (r < 16 ? 0:'') + (r*65536+g*256+b).toString(16)})(15, 127, 255) http://blog.livedoor.jp/dankogai/archives/50911084.html これだと (function(r,g,b){return '#'

    JavaScript のワンライナーでカラーコード - IT戦記
    penalty
    penalty 2007/09/16
    jsってmapあったんだ・・・orz