無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

2007-07-01から1ヶ月間の記事一覧

Errorから行番号を取得する。

Errorを使うと、Errorを作成した行の番号やスタックの情報を取得できます。 FireFoxのみ。 IE6では行番号、スタック情報ともに取得できませんでした。 var stdout = document.getElementById("stdout"); var error = new Error(); stdout.innerHTML += "mess…

Axisクライアントが使うHTTPSenderの差し替え

Axisクライアントが使うHTTPSenderはclient-config.wsddで定義されており、これをカスタマイズすることで利用するHTTPSenderを差し替えることが可能です。 手順 1.カスタマイズしたclient-config.wsddを用意します。 デフォルトのclient-config.wsddはaxis.j…

System#identityHashCode(Object)

System#identityHashCode(Object)で、オブジェクトの「デフォルトのハッシュコード(Object#hashCode()と同じ値)」を返します。 クラスがhashCode()をオーバーライドしていてもオーバーライド前のハッシュコードを取得できます。 返される値は、通常、オブジ…

DIコンテナ作成計画

JavaScriptで使えるDIコンテナはないかなとGoogleで10分だけ探したけど見つからなかったので、作ることにしました!(予定) 何に使うの? MVCでUIを作ると、各レイヤー間の依存関係が何気に複雑になりがちです。 要素のイベントハンドラとコントローラの関連付…

はてなブックマークの登録スクリプト

はてなブックマークAtomAPIを利用してブックマークを登録します。 WSSE認証のコードはtowardの日記 - Ruby はてなブックマーク Atom API WSSE認証を使わせて頂きました。 HTTPリクエストを投げるところはHTTPリクエストユーティリティを使っています。 requi…

アノテーションを使ってインターセプタを適用する

JavaScriptでインターセプトの方法だと、インスタンスの生成ごとにapplyInterceptor()行う必要があって面倒です。クラス定義にアノテーションを書いておくと勝手にインターセプタを設定してくれるようにしたい! アノーテョン とはいえ、JavaScriptにアノテー…

Modelの更新をリスンする

MVCでは、ViewはModelの変更をハンドリングしてUIを更新します。一般的に?、ModelはViewに依存しない(普通、View →依存→ Controller →依存→ Modelの関係になる)ので、リスナを使って間接的に依存する感じにします。Observerパターンというヤツです。でも、こ…

URIエンコードとデコード

JavaScript→Rubyに渡す文字列のエンコードではまったのでメモ。 結論 JavaScriptでencodeURIComponent()でURIエンコード RubyのCGI#unescape()でデコード すると上手く動きそう。 JavaScriptでURIエンコード JavaScriptには、文字列をURIエンコードする関数…

GGroundOverlayで画像を表示

ver2.79で追加されたGGroundOverlayで画像を表示してみます。 地図上の領域に画像を張ります。 画像は領域のサイズにあわせて拡大縮小されます。ズームインすると画像も大きくなります。 // 地図 var map = new GMap2(document.getElementById("map")); map.…

クリックした場所の緯度経度を得る

地図をクリックした場所の緯度経度は、"click"イベントの引数で渡されます。GEventでリスナを登録すれば簡単にハンドリンクできます。 var stdout = document.getElementById("stdout"); // 地図 var map = new GMap2(document.getElementById("map")); map.…

HTTPアクセスユーティリティ

HTTPアクセスをスタブ風?に行うためのユーティリティを書いてみました。 やりたかったこと 接続先URLやパラメータ、プロキシ設定を一箇所にまとめたい。 HTTPアクセスで使用するホスト名、パス、ポートなど接続先の情報は、共通のYAMLファイルに書きます。 …

ネームスペースを作る

YAHOO.namespace()で一発、とか思っていたら、最初に"YAHOO"が。 YAHOO.namespace("hoge.foo"); // "hoge.foo"ではなく"YAHOO.hoge.foo" ができる というわけで、自作しました。 /** * ネームスペースを作成する。 * @param {String} path 作成するネームス…

インターセプタでコマンド実行条件をチェック

インターセプタの使い方その1。インターセプタを使って、コマンドの実行条件チェックを行います。 何がうれしいか。 透過的なチェック機能の追加 個別のコマンドの実行前にちまちまチェックとかいれるのは、実装漏れの元。すべてのコマンドに一括で適用した…

JavaScriptでインターセプト

JavaScriptでメソッド呼び出しをインターセプトしてみます。 実装 渡されたオブジェクトの関数のうち、regexにマッチする関数を「インターセプターを実行する関数」に置き換えます。 インターセプターは関数で指定。 引数として、関数名、オブジェクト自身、…

IE6でa:hoverに設定したスタイルが適用されない。

CSS

href属性が付いていないと適用されません。 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> </head></html>

HTTP.CookiesでCookieを読み書きする。

JSANにあった、HTTP.Cookiesを利用して、Cookieを操作してみます。 読み書き HTTP.Cookies#read()でCookieから値を読み込みます。 HTTP.Cookies#write(,,,ドメイン>,,)でCookieに値を書き込みます。 パラメータはクッキーに設定する属性?に対応しています。…

json.jsをインポートすると、Ajax.Requestでエラーになる。

json.jsとprototype.jsを両方インポートするとAjax.Requestでサーバーと通信する際に以下のエラーが発生します。 [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIXMLHttpRequest.setRequestHeader]" nsresult: "…

ドラッグできる要素内にテキストフィールドを置く。

YAHOO.util.DDProxyで要素をドラッグできるようにすると、内部にあるテキストフィールドが編集できなくなります。(マウスイベントがきていない感じ)。回避するには、YAHOO.util.DragDrop#addInvalidHandleIdなどを使用して、input要素をドラッグを開始する要…

URLのアンカーを取得する。

「location」で現在のURLを取得できます。「location.hash」でアンカー部分を取り出し。 // 現在のURLにアクセス。 stdout.innerHTML += location + "<br/>"; // URL stdout.innerHTML += location.search + "<br/>"; // クエリー文字列 (?xx=aaa&yyy=bbbの部分) stdou</br/></br/>…

継承

プロトタイプチェーンを以下のようにつなぐことで、メソッドの継承(のようなこと)が実現できます。 オブジェクト → 共有オブジェクト1(子クラス) → 共有オブジェクト2(親クラス) オブジェクトでは、子クラスや親クラスで定義した関数が使える。 オブジェクト…

オブジェクトとプロトタイプチェーンまとめ

今更ですが、JavaScriptのオブジェクトとプロトタイプチェーンについて。 オブジェクトはハッシュ JavaScriptのオブジェクトはハッシュです。ハッシュに関数や変数を追加すると、オブジェクト的に扱えるようになります。 // ハッシュ var mii = {}; // プロ…

要素のコピーをドラッグしたい。

YAHOO.util.DDProxyを使うと、要素そのものでなく、要素のコピー(エイリアス?)をドラッグできるようになります。Windowsでファイルをドラッグした時のような感じです。 ドラッグできるようにするだけであれば 「new YAHOO.util.DDProxy()」でOK ドラッグする…

||で三項演算子風nullチェック

Core JavaScript 1.5 Guide:Operators:Logical Operatorsより: expr1 || expr2 (論理 OR)expr1 を true と見ることができる場合は expr1 を返す。そうでない場合は expr2 を返す。 nullやundefinedはfalseと評価されるため、「||」で簡単に三項演算子風nul…

要素をドラッグできるようにする。

Yahoo! UI Libraryのドラッグ&ドロップユーティリティを使って、要素をドラッグできるようにしてみます。 手順は次の通り。簡単です。 dragdrop-min.jsなどのライブラリファイルHTMLに追加。 引数としてドラッグできるようにする要素を指定し、YAHOO.util.DD…

要素を透過表示する。

CSS

filterとopacity属性を設定すると、IEやFirefoxで要素を透過表示できます。 IEやFirefoxの両方に対応する場合、filterとopacity属性を両方指定する必要があります。 属性のパラメータで透過度を指定します。 要素の幅を指定しないとIEで透過が行われません。…

Enumerable#sortBy

prototype.jsを利用すると、配列にソートAPI(sortBy)が追加されます。 引数でソートする値を返す関数を指定します。関数が返す値にしたがって、配列がソートされます。 関数の引数として、配列の値とインデックスが渡されます。 var stdout = $("stdout"); /…

テスティングフレームワーク

JavaScriptのテスティングフレームワークを調べたのですがあまりいいのがなさげです。調査したのは以下の2つ。 JsUnit テストケースの実行が面倒。(実行ページを開く→テストケース選択→実行という手順が必要。) テストケースをHTMLにするのが面倒。 テストケ…

オブジェクトがnullやundefindでないか評価する。

ifで評価すれば一発で判定できます。 if ( !target ) { ... } // 以下のようにはしなくてもいい。 // if ( target == null || target == undefined ) { ... } 値ごとのifでの評価結果は次の表の通り。空文字列や0はfalse扱いなので注意。 値 ifで評価した結…

非同期処理の待ち合わせ

非同期処理の実行完了を待ち合わせるユーティリティを書いてみました。 要件 複数の非同期処理を実行し、すべての処理の実行完了後に特定の処理を実行したい。 実装 JavaScriptはシングルスレッドで動作しているらしいので同期化は不要。こんなのでいいはず…

setTimeout()で同期化は不要?

setTimeout()で登録した処理の実行は、setTimeout()を呼び出したスレッドとは別のスレッドで、非同期で行われると思っていたのです。(Javaだとそんな感じなので。)なので、setTimeout()で処理をたくさん登録すると、同時実行される可能性があると信じていた…