タグ

ブックマーク / d.hatena.ne.jp/brazil (12)

  • LDR、エントリーを全て開く - oct inaodu

    raimon49
    raimon49 2011/02/27
    get_active_feed().items.forEach(function(i){ window.open(i.link) });
  • iPad、画像リソースのメモリリーク - はてなダイアリー - 無料で簡単。広告のないシンプルなブログをはじめよう!

    JavaScriptiPadのSafariは、2カ所から画像のメモリに接続するとリークしガベージされない。iOS、3.2、4.2.1、どちらも起きる。 例えば、2つのimg要素が同じsrcを設定すると、その画像リソースはページのリロードまで2度と離されない。以下のサンプルは、画像ロードが途中で停止し、以降は新しい画像を表示できない。デスクトップのブラウザのように、別のimg要素でプリフェッチして、他のimg要素で表示する手法は使えない。 // imagesにsrcのリストを用意 var elmImage = document.body.appendChild(document.createElement('img')); var elmOther = document.createElement('img'); (elmImage.onload = function(){ documen

  • Collection & Copy - JavaScript 1.7、yieldがわからない

    JavaScript MDC - New in JavaScript 1.7 上記ページでは以下のように使われている。(1行目に確認用のprintを追加した) function fib() { print("START") var i = 0, j = 1; while (true) { yield i; var t = i; i = j; j += t; } } var g = fib(); for (var i = 0; i 今までのJSのスコープの感覚で考えると、iとjは各呼び出しで共用されるため、複数のジェネレーターを生成できず、一度数を進めてしまうと再度使えないように見える。 fibの実行結果は以下。 js> typeof(fib) function js> fib() [object Generator] 実行されず(関数スタートが表示されず)、Generatorのインスタンス

    raimon49
    raimon49 2010/05/13
    >ruby と python の yield は構文は似てるけど別物ですよ。ruby のは JS の apply,call に近いですが、python のは 複数回返せる return (コメント欄より)
  • Deferred、結果値の保存、非同期にインターフェースを合わせる - FAX

    JavaScript はじめてMochiKit.Async.DeferredのJSON取得のサンプルコードを見たとき、「いつ取得の処理が開始されるのか」、「なぜ、はじめにコールバックを渡さなくてよいのか」という疑問が起きました。ベルトコンベアで流れ作業を行うときに、作業者が並ぶ前に、材料を投入してラインを始動してしまっているような感覚です。そのサンプルコードは、以下のようなものです。 var deferred = loadJSONDoc('http://sample.com/data.json'); deferred.addCallback(function(data){ alert(data); // JSONデータが渡される }); MochiKit.Async.Deferredの最初のテストコードでは、ハンドラをセットして、コールバックして、その後に再度ハンドラをセットするテストが

  • Deferredチェーン、非同期処理の逐次実行 - 実用

    JavaScript MochiKit.Async.Deferredは、「現時点ではまた利用できない値」を扱うためのクラスです。 以下のように、コールバックを並べ、イベントを発火させると、各々の返り値が次のコールバックへ渡され実行されていきます。 function increment(value){ alert(value); return value+1; } var d = new Deferred(); d.addCallback(increment); // alert(1) d.addCallback(increment); // alert(2) d.addCallback(increment); // alert(3) d.callback(1); この時、コールバックは以下のようにチェーンを形成しています。(当はエラーバックも合わせて一つのチェーンを形成しているのですが、

  • Collection & Copy - パフォーマンス、インターフェイス、まとめること

    メモ仕事JavaScriptを使う前、理屈だけを勉強しているときは、パフォーマンスを軽んじていた。まずは適切に書くことが一番で、きちんと書けてさえいれば、後から簡単に高速化できるように漠然と思っていた。 しかしプロジェクトで書き、またLDRを使い、速いことは気持ちよいということを知った。サーバーからのレスポンスタイムを5秒から2秒に縮めるよりも、GUIのポップアップを0.3秒から0.1秒へ縮めるほうが、0.1秒から0.05秒に縮めるほうが、効果が大きく、より使って気持ちよくなるように思う。 時間は、意識の集中の度合いにより伸び縮みする。ページロードを待つ時間の集中よりも、キー操作を行い反応を待つ時間の集中のほうが濃く、この間、時間は延びている。また逆に、時間の掛かるインターフェイスに対しては、時間が延びるのを避けるため、意識が集中しない。 ユーザビリティや、使い勝手は、ベンチマークの数値

    raimon49
    raimon49 2009/06/14
    >ページロードを待つ時間の集中よりも、キー操作を行い反応を待つ時間の集中のほうが濃く、この間、時間は延びている。
  • スタックトレースの取得 (callee/caller/argumentsの利用) - FAX

    スタックトレースの取得 (callee/caller/argumentsの利用) JavaScript (in 『JavaScript 第3版』) 呼び出された関数の中では、arguments プロパティを利用できる。arguments は実引数を保持している。 以下コード例では、「a, b, c」が仮引数、「5, 1, 9」が実引数になる。 function max(a, b, c){...} max(5, 1, 9); arguments のプロパティを手繰り、呼び出し階層を求めることができる。 プロパティ関連図は以下。IE 6.0、Firefox 1.0.6で確認を行なった。 概念的には以下が成り立つ(IEでは動作もする)。 ok(arguments.caller == arguments.callee.caller.arguments); ok(arguments == argum

    raimon49
    raimon49 2009/01/27
    callee, caller, arguments 再帰で辿る方法。
  • 関数、オブジェクト、クロージャ - FAX

    (thanks to id:koyachi、del.icio.us/rtk2106) OOPとFPと。関数、オブジェクト、クロージャの使い分けについて考えます。 関数型が良いのか、オブジェクト指向が良いのか、知りたいと思っていました。色々なページを読み、現時点で一応の答えを得ました。 カウンタを例にして、関数、スコープ、オブジェクト、クロージャの順に見て行きます。関数関数は処理です。入力と出力があります。関数型プログラミングでは、関数同士の入力と出力を連結しプログラムが構成されます。 var current = 0; function next(v){ return v + 1 } function previous(v){ return v - 1 } ok( 1 == ( current = next(current) ) ); ok( 2 == ( current = next(cu

    raimon49
    raimon49 2008/09/19
    関数、オブジェクト、クロージャを、 スコープと処理の数で分類。
  • Tombloo、ブックマークをクロスポストするGreasemonkey - FAX

    追記 2008/7/14Tombloo 0.3 - 実用 Tombloo 0.3には、Tomboo自体で各種サービスへポストするフォームが追加されています。 Cross Bookmark / Tombloo はてなブックマーク、del.icio.us、Yahooブックマーク、いずれかのポスト画面から、他のサービスへも同時にポストするGreasemonkeyスクリプトです。Firefox拡張のTombloo 0.2.1以上に依存しているため、この拡張がインストールされている必要があります。 ポスト先は、はてなブックマーク、del.icio.us、Yahooブックマーク、Googleブックマーク、Tumblr、Twitter、6つのサービスから選ぶことができます。ポスト先のサービスに、予めログインしていないとエラーが発生します。アイコンが薄くなっているサービスへはポストされません。また、最後に

  • ページ遷移前に確認をする、onbeforeunload - 実用

    JavaScriptwindowのonbeforeunloadハンドラで、Event#returnValueに値を入れると、ページ遷移直前にユーザーに確認ダイアログを表示することができる(んだって)。 以下コードの正常動作を、Firefox 2.0とIE 7で確認した。Operaでは実行されなかった。 window.onbeforeunload = function(event){ event = event || window.event; event.returnValue = '?'; } 以下は、IEとFirefoxの確認ダイアログのキャプチャ。 MochiKitでは、Event#confirmUnloadで確認ダイアログを出せる。 connect(window, 'onbeforeunload', function(event){ event.confirmUnload('?'

    raimon49
    raimon49 2008/04/28
    event.returnValueに入れた内容がメッセージとして表示される。
  • LDR、重複エントリをグレー表示するGreasemonkeyスクリプト、約第三版 - 実用

    JavaScript LDR - Dedupe Entries – Userscripts.org LDRで表示したエントリーと、訪問済みのエントリーをグレー表示するGreasemonkeyスクリプトです。フィードを既読にするタイミングでフィード内の全エントリーのアドレスが保存されます。以降同じエントリーは「以前表示したことがある」とわかるように文字と写真が薄くなって表示されます。以前のバージョンが入っている場合は、「関連付けられた設定も削除」をチェックして一度アンインストールを行ったうえで、再度インストールを行ってください。 このブログには書いてませんが、今までに、何度か大きく更新をしていて、最初のバージョンよりずいぶん良くなってます。エントリー表示テンプレートを書き換える方式になり、エントリーが多いときでも固まらなくなりました。このバージョンではDOM Storageを使うことで、10

  • JavaScriptにおける繰り返し - 実用

    JavaScriptにおける繰り返し 翻訳 原文:from __future__ import * >> Iteration in JavaScript 著者:Bob Ippolito JavaScriptには、基的は2種類のオブジェクトの繰り返しがある。 すべてのオブジェクトはプロパティの列挙をサポートしている。 for (var propName in someObject) { var value = someObject[propName]; } "Arrayプロトコル"をサポートするオブジェクトもある。 for (var i=0; i<someObject.length; i++) { var value = someObject[i]; } どっちも、ひどい。 プロパティの列挙はデバッグぐらいしか使い道がない。何故なら、列挙の中では興味のないプロパティにたくさん遭遇するくせに

    raimon49
    raimon49 2007/11/23
    iterインタフェース + ダックタイピング
  • 1