タグ

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

  • 脆弱性、全てのサイトで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({

    toton
    toton 2010/03/30
    unsafeWindow
  • Collection & Copy - IE、テキストエリア内の選択範囲/キャレットの位置(文字数)を取得する

    JavaScript簡単なようで、とても難しく、情報もあまり見つからなかったので、知らない方はぜひ読んで。 選択範囲の移動でもなく、選択範囲の内容の取得でもありません。選択範囲がテキストエリアの中で何文字目から何文字目に渡っているかをIEで調べる方法です。 まずFirefoxではElement#selectionStart/selectionEndで簡単に取れます。 次に、テキストエリアではなく一行のインプットボックスならば以下で大丈夫です。 setEndPointメソッドは、rangeTo.setEndPoint('EndToStart', rangeFrom)のように使い、rangeFromの範囲をrangeToにコピーします。名前はEndPointですが、始点/終点のどちらの端もこのメソッド一つで動かすことができます。'EndToStart'は、「rangeToの終点を、rangeF

  • 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)エラーバックの追加

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

    toton
    toton 2009/02/07
    高階プログラミング
  • 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つにスレッドとコ

    toton
    toton 2008/11/01
  • XMLHttpRequestでRefererをセットする - FAX

    JavaScript 追記Firefox 3.0で確認したところエラーになった。 Firefox 2.0.0.13で確認しました。 var url = 'http://localhost:8080/index.html'; var referrer = 'http://www.hatena.ne.jp/'; var req = new XMLHttpRequest(); req.open('GET', url, true); req.onreadystatechange = function(){ // 1: 読み込み中 if(req.readyState == 1) req.setRequestHeader('Referer', referrer); // 4: 準備完了 if(req.readyState != 4) return; console.log(req.responseTe

    toton
    toton 2008/10/03
    readyState == 1 のときに setRequestHeader('Referer', referrer); すれば反映される
  • Flash、デコンパイル、リソースの抽出 - 実用

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

  • 実用 - ウィンドウの外で発生するmouseupイベントを取得する、Firefox

    JavaScript save the assistants 上記のスライダー、ドラッグを開始して、ウィンドウ外でボタンを離し、再度ウィンドウに戻るとずっと押しっぱなしのおかしな状態になる。これは、たぶんマウスが離されたことを検知できていないため。 WebFXのスライダーは、ちゃんと動く。実装を読んでみた。 Slidebar (WebFX) Firefoxは、文字を選択するようにドラッグを開始すれば、ウィンドウ外でマウスのボタンを外した時にもmouseupが起こせるようだ。これを利用し、見えない文字を選択し、選択状態も見えなくして、スライダーが正常に動作するようにしていた。 簡単なサンプルは以下。スライダに限らず、ドラッグ全般に使えると思う。mouseup以外に、mousemoveなども取れた。 IEの場合は、onlosecaptureイベントを使っていた。WebFX++

  • クラスパスを実行時に追加する - FAX

    JavaKoders - ClassPathModifier.javaKoders - ClasspathHacker.java 以下コードで、実行時に動的にクラスパスを追加できるようです。 import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; public class ClassPathModifySample { public static void main(String[] args) throws Exception { // JARファイルのURLを指定する addClassPath(new URL( "file:C:/hsqldb.jar" )); Clas

    toton
    toton 2008/03/14
    Method#setAccessible(true); URLClassLoader#addURL(URL.class) => m.invoke()
  • Collection & Copy - 上下左右中央の件、改善、補足

    Collection & Copy - 上下左右の中央にボックスを配置する id:inception9さんから、より簡単な方法をコメントで教えて頂きました!ありがとうございます。 これだ!これが正解だから、前回のが「バッドノウハウ(?)」なんですね。余分な空間用divもなくなり、ほんますっきりやわぁ。 ただ、どうも前回の元記事は「画面をコンテンツのボックスより小さくしても、ボックスの左上が欠けない」というところがポイントだったようです。たしかにウィンドウサイズを小さくすると、左上隅にボックスがきっちり収まります。ここにこだわらない場合は、短縮版がよさそうですね。 HTMLCSS、共に勉強不足ですので、直接指摘頂けるのは大変助かります。コメントを書く時間を頂けたことを、感謝しております。ではでは。 雑記軽い気持ちでHTML/CSSのことを書くと、なぜか反響が大きく、戸惑う。なんとなくプロ

    toton
    toton 2007/08/29
    上下左右中央にボックスを合わせる
  • Greasemonkeyではwindow.evalが使えない、eval.call(window, src) - FAX

    Greasemonkeyではwindow.evalが使えない、eval.call(window, src) JavaScript まずGreasemonkeyスクリプト内ではis(typeof(window.eval), 'undefined')。 GreaseMonkey で MochiKit 使ってみる。すなわち外部ライブラリの読み込み。あるいははてなのグラフが綺麗じゃない < 12 < August < 2006 < nulog, NULL::something : out of the headphone 次に上記内で使われている(function (){eval(str)}).call(window)は、MochiKit.Base.map = function(){}のようなリテラルを使った代入形式では関数をグローバルに使えたが、function map(){}のようなステートメ

    toton
    toton 2007/07/25
    "ここでwindow.eval(src)の代わりに、eval.call(window, src)を使うことで問題を解決できた。"
  • Collection & Copy - ドキュメントのロード完了に合わせて関数を実行する

    JavaScriptページロード時にプログラムを実行するためにwindow.onloadやbody.onloadがしばしば使われる。しかし、ページ内に大きな画像が存在する場合などは、画像のロードを待つため、実行が遅れてしまう。「ドキュメントのロードが終わっていて、かつ、イメージのロードが完了する前」に関数を実行する方法のリンク2つの要点をコピー。 script要素defer、DOMContentLoadedイベントを利用する方法The window.onload Problem - Solved! Firefoxの場合非公式のイベントハンドラ、DOMContentLoadedを利用する。 // for Mozilla browsersif (document.addEventListener) { document.addEventListener("DOMContentLoaded",

    toton
    toton 2007/07/18
    「ドキュメントのロードが終わっていて、かつ、イメージのロードが完了する前」に関数を実行する方法
  • スタックトレースの取得 (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

  • JSAdapterクラスの特殊メソッド - FAX

    JSAdapterクラスの特殊メソッド JavaScript, Rhino (via A. Sundararajan’s Weblog - Self, JavaScript and JSAdapter) Sundararajanさんは、MustangのJavaScriptエンジンの開発を行なっているSunのエンジニアの様子。 ブログの内容が濃い。 Scripting for the Java Platfor (PDF) JavaOneでは、上記プレゼンテーションを行なっている。 Core JavaScript 1.5 Guide:Creating New Objects:Defining Getters and Setters - MDC Ajaxian >> Getters and Setters in JavaScript FirefoxのJavaScript1.5では、ゲッター/セッ

    toton
    toton 2007/06/30
    "JSAdapterにより、Rubyのmethod_missingを使ったリモート呼び出しや、GroovyのBuilderのような機能を作成できるため、JavaScriptの可能性が大きく拡がるように思う。"
  • ORマッパー、20070628 - FAX

    JavaScriptFirefox、Storage、SQLite用。Firefoxに対象を絞り、アクセサや存在しないメソッド呼び出しの捕捉などを使っている分、クライアントがすっきり書ける。E4Xをヒアドキュメント+テンプレートとして利用。XMLとStringの引数は、arg+='';で文字列へ揃える。 日付型のサポート__noSuchMethod__を使ったfindBy/countByの取り扱いSQLのパラメーター値をオブジェクト以外に配列でも渡せるように(一つの場合に{id:id}のように冗長な表現になるため) mozIStorageStatementWrapperは、なんかバギー。無言で落ちる。 クライアントコードは以下。 var db = new Database(file); var Video = Entity({ name : 'video', fields : { id :

    toton
    toton 2007/06/30
    Firefox、Storage、SQLite用
  • AJAXアプリケーションのデバッグ、JavaScriptログ出力、Log4js - FAX

    リンク Ajax非同期通信アプリケーションのデバッグを行う際に、以下ライブラリを利用し、ログ出力を行ないながら動作詳細を確認した。フランス製。 Log4js 前提クライアントとサーバーの通信をリアルタイムでログ出力を確認したい。Venkmanでステップ実行を行うと、タイムアウトが発生する。また正確なタイミングで振る舞いを確認できない。debug.jsは、まとめてフラッシュするため利用は難しい。 特徴ログを出力すると、リアルタイムに行が増えていく。ソートや、フィルタも存在する。debugや、infoなどのカテゴリ分けがある。ログと一緒に、オブジェクトインスペクタも表示できる。 利用手順ダウンロードし展開されたファイル全てを一つのディレクトリへ配置。HTMLヘッダに、以下を記述。 ログ出力したい部分に、以下を記述。debug、info、error、warnの4つのメソッドがある。フランス語、N

    toton
    toton 2007/06/23
  • ページ遷移前に確認をする、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('?'

  • アスペクト指向/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

    toton
    toton 2007/01/03
    javascriptのaop情報まとめ
  • jrunscriptビルトインオブジェクトソース - FAX

    Rhino昨日書いた経緯でjrunscriptを使わずに、Rhinoを直接使おうと思っているため、エミュレーションに使うコードをペーストしておきます。リファレンスと、簡単な利用方法は以下のエントリです。 jrunscriptビルトインオブジェクト一覧 (Java 1.6.0 RC b70)jrunscriptビルドインオブジェクトの利用例 簡単に各自で出力できますので、あんまり貼り付けておく価値はないんですが...、ま。Java 1.6.0 Beta b59gで出力しました。 function JSInvoker(obj) { return new JSAdapter({__get__:function (name) { return function () { return obj.invoke(name, arguments); }; }}); } function XMLDocum

  • jrunscriptビルトインオブジェクト一覧 (Java 1.6.0 RC b70) - FAX

    jrunscriptビルトインオブジェクト一覧 (Java 1.6.0 RC b70) JavaScript, Rhino Java 1.6(Mustang)にはスクリプト実行コマンドjrunscriptが添付される。 jrunscriptは、対話的にシェルとして使うことも、スクリプトファイルを読み込み実行することもできる。 Rhinoの、org.mozilla.javascript.tools.shell.Mainクラスに類似する機能を持つ。 簡単な利用方法は以下を参照のこと。 Java SE 6 Mustang じゃじゃ馬ならし Scripting jrunscriptは、簡単なタスクから共通的に利用する基となる関数群をビルトインオブジェクトとして提供している。 以下、JavaOne発表資料PDFの28ページで紹介されている。 Scripting for the Java Platf

    toton
    toton 2006/11/23
    Java 1.6(Mustang) jrunscript."グローバルスコープにあるオブジェクトを列挙し表示"