タグ

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

  • 実行間隔を調整する - はてなダイアリー - 無料で簡単。広告のないシンプルなブログをはじめよう!

    JavaScriptDebouncing Javascript Methods | Unscriptable.com 密に処理が実行されてしまうのを避けるため、二つのかたちがあるとのこと。下のデモ。throttleは、0.5秒ごとに点の位置が変わる。debounceは、0.5秒いると赤くなる。 デモ throttleひとつ目は一定間隔以内の呼び出しは間引いて無視する方法。イベントの発生頻度が多く、処理が重い場合に使う。 Function.prototype.throttle = function(threshold, alt){ threshold = threshold || 100; var me = this; var last = Date.now(); return function(){ var now = Date.now(); if(now - last debounceも

  • Jetty + Rhino - RapidShare

    Java, JavaScriptJavaScript/Rhino + 組み込みJettyでサーブレットを使った。 var jetty = Packages.org.mortbay.jetty; function update(s, t){ for(var p in t) s[p] = t[p]; return s; } var servlet = new Packages.javax.servlet.http.HttpServlet({ name : 'JavaScriptServlet', doGet : function(req, res){ var out = res.writer; out.println('HELLO'); }, }); var server = update(new jetty.Server(), { stopAtShutdown : true, sendSe

  • OSCache、クラスタリング - RapidShare

    JavaOSCache キャッシュライブラリOSCacheのクラスタリングについて調べた。 Clustering - OSCache - ConfluenceConfiguration - OSCache - Confluence まずoscache.propertiesに以下を記述しクラスパスに置く。マルチキャストのフレームワークJavaGroupsを使って各ノードへメッセージを送信する設定。(その他のehcache/HelmaSwarm/SwarmCacheなどもJavaGroupsも使ってる/使える。ノードの追加/削除がラク) cache.event.listeners=com.opensymphony.oscache.plugins.clustersupport.JavaGroupsBroadcastingListener 次に以下のRhinoのループコードを実行し続ける。キャッ

    dann
    dann 2009/05/21
    [rihno
  • Firefox、leak-gauge、メモリリークを調べる - 実用

    Firefoxのメモリリーク解析ツール:leak-gauge 上記に書かれている通りです。普通のFirefoxリリースビルドで動作しているように見えました(ここにも書いてある)。 まず以下のバッチファイルからFirefoxを起動する。そして、普通のブラウジング操作をする。問題と思われる拡張を使ったりして。 set NSPR_LOG_MODULES=DOMLeak:5,DocumentLeak:5,nsDocShellLeak:5set NSPR_LOG_FILE=nspr.log "C:\Program Files\Mozilla Firefox\firefox.exe" Firefoxを終了すると、バッチファイルと同じディレクトリにnspr.logができてる。内容は、以下のようなもの。 0[2c4928]: DOCUMENT 1db9db0 created0[2c4928]: DOCUM

    dann
    dann 2009/04/03
  • 関数、オブジェクト、クロージャ - 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

  • GreasemonkeyスクリプトからDOM Storageを使う - FAX

    JavaScriptGreaseSpot - Code snippets - make an array persistent in globalStorage これを見た。 storage('user', 'taro'); ok(storage('user')=='taro'); storage('user', null); ok(storage('user')===void(0)); storage('user', {a:5}); ok(storage('user').a == 5); storage('user', [1,2,3]); ok(storage('user').length == 3); ok(storage('user')[0] == 1); function ok(exp){ exp? console.info('OK') : console.error('FAIL

  • Deferred、非同期処理の直列化 - FAX

    Deferred、非同期処理の直列化 JavaScript Deferredの効能のひとつに、連続する非同期処理の直列化がある。 例えば、以下の論理コードがあったとして。 (継続が一番ふさわしそうね) トークンの取得 <待ち> エントリーのポスト <待ち> 終了処理 これを関数渡しを使った簡単なプログラムにすると、たぶん、こんな感じになる。 getToken(urlA, function(token){ postEntry(urlB, token, function(result){ alert(result); }) }) 関数が入れ子になってっちゃう。 複数のものを繰り返すときも、入れ子になる。 (関数を分ければ、直接はこの形にならないけど、論理的にはこうなる) つまり、非同期と繰り返しがあると、プログラムの流れが階層構造になって複雑になっちゃう。 Deferredで書くとこんな風にな

    dann
    dann 2007/11/23
    非同期と繰り返しがある場合にコードが追いにくくなるのをDeferredで回避。なるほど。
  • Flash、デコンパイル、リソースの抽出 - 実用

    (via MOONGIFT) no|wrap.de - FlareActionScriptの抽出、デコンパイル。インストールし、swfを右クリック、[Decompile]で全てのスクリプトがひとつのテキストファイルに出力される。 SWFTOOLSシェイプ、フォント音楽、画像などは、上記に含まれるSWFExtractで取得できる。 関連リンクSWF Decompiler窓の杜 - HugFlash

    dann
    dann 2007/03/13
  • 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 - AJAX/JavaScriptライブラリまとめ

    AJAX/JavaScriptライブラリまとめ (2005/9/6 Revision .1.3) 翻訳 原文:Survey of AJAX/JavaScript Libraries Copyright 2005 by Sergio Pereira, Joe Walker, Matthew Eernisse ※翻訳は、2005/9/6の1.3版を基に作成されています。原文であるWikiページは、1.18以上に更新が進み記載されているライブラリの数が増え、複数の誤りが修正されているようです。最新の情報は原文を参照してください。 Prototype (http://prototype.conio.net/) ライセンス:MIT 概要: Prototypeは、動的なウェブアプリケーションの開発を容易にするためのJavaScriptフレームワークです。Ruby on Railsフレームワーク駆動で

  • 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はじめに高階プログラミングでは、値として関数を使うことができます。つまり引数として関数を別の関数へ渡すことも、関数を別の関数の返り値にすることもできるのです。この形式のプログラミングは、しばしば関数型プログラミングで使用されますが、「通常」のオブジェクト指向のプログラミングでも非常に有用です。

  • 1