タグ

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

  • 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の最初のテストコードでは、ハンドラをセットして、コールバックして、その後に再度ハンドラをセットするテストが

  • Collection & Copy - Deferred、遅延リソースのインターフェース、パターン

    JavaScript setTimeoutで実行される関数の中で発生するエラーは、セットした部分のtry/catchで補足することはできません。 function throwError(){ throw new Error('ERROR'); } try{ setTimeout(throwError, 3000); } catch(e){ // ここには到達しない alert(e); } MochiKit.Async.Deferredを使うと、エラーバックでエラーを補足できます。 callLater(3, throwError).addErrback(function(e){ alert(e); }); エラーの補足以外にも、Deferredのインターフェースから以下が行えます。 キャンセル(cancel)状態(fired)コールバックの追加(addCallback)エラーバックの追加

  • 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 - 相対パスを絶対パスに変換する

    JavaScriptIE 6、IE 7、Firefox 2.0、Opera 9で確認。 function absolutePath(path){ var e = document.createElement('span'); e.innerHTML = ''; return e.firstChild.href; } alert(absolutePath('/')); 関連リンクJavaScriptな日々 | 相対パスを絶対パスに変換する方法Imageを使っています。 getAttribute href bugBug Report: getAttribute(”HREF”) is always absolutegetAttribute("href",2)とか。既存のa要素のhrefは上記の方法で絶対パスになるけど、document.createElement('a').href='/'では、

  • アスペクト指向/AOP関連 - FAX

    JavaScript, リンク最終更新 2006/12/22AspectJS 1.0.0 - Javascript AOP frameworkSlipwave Javascriptjs.aop.Aspectjs.aop.Observablejs.aop.PointCut あまきた日記 - JavaScriptでアスペクト指向marsのメモ - JavaScriptでAOPsubtechグループ - ピンク ブロッサム ダイアリー - JS で AOP というか before, after trigger檜山正幸のキマイラ飼育記 - JS番外編:これって、アスペクト指向かぁ llameradaの日記 - JavaScriptの簡易プロファイラ(new Hatena).blog() - JavaScript でプロファイリング dotvoid.com - Aspect Oriented Pro

  • 1分でわかるJSAN - FAX

    1分でわかるJSAN 技術 概要 JSANは、他のライブラリをインポートするライブラリです。 リポジトリ リポジトリは、ライブラリの検索対象のパスです。 JSAN.addRepository()で追加します。 JSAN.includePathにリストされます。 デフォルトのリポジトリは「.」と「lib」です。 JSAN.use() ライブラリをインポートするには、JSAN.use()を使います。 クラスがロードされます。 個々の関数もグローバルコンテキストへロードされます。 JSAN.require() クラスのみをロードします。 「Test.Simple.plan()」のように、全部書けば呼び出せます。 グローバルコンテキストを汚しません。 JSAN.exporter() ロード済みのクラスから、好きな関数をグローバルへ置き直します。 関数が使いやすくなります。 好きなライブラリの、好き

  • Collection & Copy - JavaScriptにおける高階プログラミング

    翻訳 原文:Higher Order Programming In Javascript著者:Sjoerd Visscherライセンス:クリエイティブ・コモンズ・ライセンス(帰属) 前提知識JavaScriptを使ったオブジェクト指向プログラミングの知識が必要となります。以下のWebreferenceの記事を読み、よく理解しておいてください。OOP in Javascript, part IOOP in Javascript, part IIDouglas Crockford最終更新2004/3/28はじめに高階プログラミングでは、値として関数を使うことができます。つまり引数として関数を別の関数へ渡すことも、関数を別の関数の返り値にすることもできるのです。この形式のプログラミングは、しばしば関数型プログラミングで使用されますが、「通常」のオブジェクト指向のプログラミングでも非常に有用です。

    westlife
    westlife 2006/10/20
    関数を値として扱う
  • Collection & Copy - JavaScriptにおける古典的継承

    翻訳 原文:Classical Inheritance in JavaScript著者:Douglas Crockford ※原文のコード内に誤りがあり、このまま記述しても動作しません。著者のコメント及び補足情報は翻訳メモを参照下さい。 君は自分が利口で階級にも属さず 自由だなんて思い込んでる―John LennonJavaScriptは、クラスという概念に囚われていない言語です。JavaScriptでは、古典的な継承の代わりにプロタイプ的な継承を使用します。これはC++Javaのような旧来のオブジェクト指向言語に長けたプログラマを当惑させるかもしれません。JavaScriptのプロトタイプ的継承が、古典的継承に比べていかに表現力が優れているかを、これから見ていきましょう。 JavaJavaScript強い型付け弱い型付け静的動的古典的プロトタイプ的クラス関数コンストラクタ関数メソッド関

  • jsh、2006-10-15、zip、概観 - FAX

    jshjsh_20061015.zip ShellクラスプロパティMOVE_KEYS:Object instances:Object instanceList:Array shellNum:Number commonKeyReg:KeyRegistry singlelineKeyReg:KeyRegistry multilineKeyReg:KeyRegistry メソッドcreateTextArea(id)HTMLTextAreaElementgetShell(id)Shellプロトタイププロパティcommand:Command elmExpression:HTMLTextAreaElement win:Window context:Context completion:Completion selection:Selection record:Record candsPanel:Can

  • 脆弱性、全てのサイトでGM_xmlhttpRequestを使う、解説と回避 - FAX

    JavaScript 検討、全てのサイトでGM_xmlhttpRequestを使う 上記エントリのコードは脆弱で、GreasemonkeyのGM_xmlhttpRequestを予期しないコンテンツウィンドウから奪われる可能性があることを、Days on the Moonのnanto_viさんにメールにて教えていただきました。貴重なアドバイスを頂き、深く感謝しております。 具体的には、gmXMLHTTPRequestの__parent__プロパティから、Greasemonkeyスクリプトのコンテキストを取得され書き換え、APIキーをコンテンツウィンドウにコントロールし乗っ取ることができます。サンプルコードは以下です。 gmXMLHTTPRequest.__parent__.API_KEY = 'ABC'; GM_XHR_API_KEY = 'ABC'; gmXMLHTTPRequest({

  • Jetty 6.0 Continuations、まとめ - FAX

    Jetty 6.0 Continuations、まとめ 技術 Jetty 6 Continuations(継続) - Ajax対応! このエントリは、上記エントリのまとめだ。私の思う要点は、以下2点。 クライアントのリアルタイムの更新を行う、大規模アプリケーションの作成には工夫がいる。 Gregさんの問題定義と解決が正しいとすると、Javaだけでなく、他の言語にも応用ができる。 JettyはAjaxアプリケーション向けに、JSP抜きの構成を提供している。 これは、先日の「エンタープライズAjaxアーキテクチャ」に対応する。EJBも、JSPも捨て、J2EEはサーブレットのみの時代まで戻るということだ。 問題とJettyの解決策 従来のモデル 1ユーザー(コネクション)あたり、1スレッド。 非常に活動的なコネクションを使うアプリケーションなら効率的。 実際は、そのようなアプリケーションは少ない

  • Jetty 6 Continuations - Ajax対応! - FAX

    Jetty 6 Continuations - Ajax対応! 翻訳 (via こんな毎日・・・) 原文:Jetty 6.0 Continuations - AJAX Ready! 著者:Greg Wilkins Jetty 6.0.0 alpha 3がリリースされました! サーブレット2.4のサーバが400kのjarと、たった140kの依存ライブラリに収まっています。(さらにJSPが必要な場合でも、たった2.6Mです!!)。 小さくて、速くて、簡潔で魅力的な点は全く損なわずに、スケーラブルなAJAXアプリケーションを構築するための、Continuationsと言う新機能をJetty6はサポートしました。Continuationsは、スレッドを使わずに非同期イベントの待機を実現します。 コネクション単位スレッド スケーラブルなサーブレットサーバを構築する上で、主要な課題の1つにスレッドとコ

  • Windows XP、レジストリ、2次キャッシュ - FAX

    高速化、エクスプローラーでzip/cabのサポートを切るのは大事だよなぁ。 僕は、こんなレジストリファイルを使ってます。 Windows Registry Editor Version 5.00 // 応答しないプログラムを強制終了させる // 1000 = 1秒 [HKEY_CURRENT_USER\Control Panel\Desktop] "AutoEndTasks"="1" "WaitToKillAppTimeout"="100" "HungAppTimeout"="100" // DLLファイルのメモリー常駐を開放する [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer] "AlwaysUnloadDLL"=dword:00000001 // ショートカットのリンク先を追跡しない [HKE

  • Collection & Copy - JSON入門

    翻訳(thanks to JavaScript++かも日記) 原文:Introducing JSON JSON(JavaScript Object Notation)は、軽量のデータ交換フォーマットです。人間にとって読み書きが容易で、マシンにとっても簡単にパースや生成を行なえる形式です。JavaScriptプログラミング言語(ECMA-262標準第3版 1999年12月)の一部をベースに作られています。JSONは完全に言語から独立したテキスト形式ですが、C、C++、C#、JavaJavaScriptPerlPython、その他多くのCファミリーの言語を使用するプログラマにとっては、馴染み深い規約が使われています。これらの性質が、JSONを理想的なデータ交換言語にしています。 JSONは2つの構造を基にしています。 名前/値のペアの集まり。様々な言語で、これはオブジェクト、レコード、構

  • 1