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

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

2008-08-01から1ヶ月間の記事一覧

JSONをエンコード/デコードするサンプル

as3corelibで提供されているJSONユーティリティを使って、JSONのエンコードとデコードを行うサンプルです。 package { import flash.display.*; import flash.text.*; import com.adobe.serialization.json.JSON; public class JsonSample extends Sprite { …

flexTasksでFlexをコンパイルする

Flex SDK 3.1.0をダウンロードすると、flexTasksなるAntタスクが添付されていたので、それを利用してのmxmlのコンパイルを試してみました。以下、手順のメモです。 1.flexTasks.jarをAntのライブラリに追加する。 Flex SDKのアーカイブを展開したディレクト…

Procとセーフレベル

Rubyリファレンスマニュアル セキュリティモデルより。「Procはその時点でのセーフレベルを記憶する。そのProcオブジェクトがcallされると、 記憶していたセーフレベルで実行される。」とのこと。 # セーフレベル0で作ったproc p0 = proc { $SAFE } # セーフ…

続 汚染されたクラスの利用

keita_yamaguchi さんより、最新のRubyでは汚染状態によるメソッド呼び出しの制限が修正されているとの情報を頂いたので(ありがとうございます!)、最新のRubyをインストールして試してみました。 $ ruby -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cyg…

汚染されたクラスの利用

注 (2008-08-28) 最新のRuby(1.8.7-p72)ではメソッド呼び出し制限の動作が修正されています。最新の環境での制限表は、続 汚染されたクラスの利用を参照ください。 汚染されたクラスの利用について、気になっていたことの検証結果をまとめる。 クラスの汚染 …

続 FlashとCanvasのどっちが早いか、四角を4000個描いて試してみた

やっぱり、ちゃんと測ってみようかな。ということで、プログラム上で画像を描き終わるまで(=graphics.drawRectやctx.fillRectから復帰するまで)の処理時間を出力するようにしてみました。 →Flashで描く →Canvas+JavaScriptで描く(ExplorerCanvasを設定済み。…

FlashとCanvasのどっちが早いか、四角を4000個描いて試してみた

FlashとCanvas+JavaScriptのどっちが描画が早いか、四角を16*16*16=4096個描くスクリプトを書いて試してみました。 →Flashで描く →Canvas+JavaScriptで描く(ExplorerCanvasを設定済み。IEでも見れます。) ちゃんとは計ってないけど、何回かリロードして試し…

CSVの追加書き込み

Rubyに標準添付されているCSVライブラリですが、なぜか追記がサポートされていないようなのでちょっと改造してみました。以下のコードをロードすると、CSV.openのmodeとして「a」,「ab」が指定できるようになります。 require 'csv' # 追記をサポートするよ…

Webrickサーバーにapache経由でアクセスできるようにする

apacheと同じマシンの8080ポートで動作しているWebrickサーバーに外部からapache経由でアクセスできるようにしたい。ということでmod_proxyでapacheをリバースプロキシにした。以下は、 「http:///foo/」にアクセスされた場合に、 apacheと同じマシンの8080…

ブロック式ログインを非ブロック式ログインに変換する

↓みたいな、ブロックで処理を受け取って、ログインして実行するAPIがあって、 # ログインして何かする def do_as( user ) begin # ログインして.. puts "login as #{user}" # ブロックの処理を実行 # 引数としてセッションIDを渡す yield "sid-#{user}" ensu…

クラスを動的に作る

Class.newで名前の付いていないクラスを動的に作成できます。 # 無名のクラスを新規作成 kitten = Class.new # メソッド「meow!」を追加。(define_methodはprivateメソッドなので直接は呼び出せない。) kitten.send(:define_method, :meow) {|i| puts "meow!…

Rubyでクラスをホットデプロイする手段を考える

Rubyでクラスのホットデプロイをサポートするにはどういった方法がいいかな、と考えてみた。 案1:evalを使う そもそもRubyでは、ロード済みクラスを後から書き換える、といったことが可能なので単純な手段としては新しいクラスが書かれた文字列を読み込んでe…

succ

succなるものを見つけた。 i = 10 puts i.succ # 次の整数を返す 実行結果です。 11なんだー、これで i += 1 とかしなくていいんじゃん、とか思ったけど、「Integer#succ!」はないのね・・・。Numeric 関連クラスはimmutableとのこと(→Integerより)。ふむ。…

サービスモデル

サービスモデルを指定することで、Needleのレジストリに登録したサービスの生成タイミングを制御できます。 指定可能なサービスモデルとしては以下のようなものが用意されています。 :singleton 常に同じインスタンスを返す。 :prototype リクエストのたびに…

Set

JavaのコレクションフレームワークでおなじみのSetですが、Rubyでは添付ライブラリとして提供されています。 require 'set' # Setを作る。 # 引数でEnumerableを指定でき、その要素がSetに追加される。 set = Set.new(["a","b","c"]) #set = Set["a","b","c"…

データ構造を伝えるコード

例えばネストされたリストを作成する場合、 List<List<String>> nested = new ArrayList<List<String>>(); List<String> list1 = new ArrayList<String>(); list1.add( "a" ); list1.add( "b" ); list1.add( "c" ); nested.add(list1); List<String> list2 = new ArrayList<String>(); list2.add( "d" ); list2.add( "e"</string></string></string></string></list<string></list<string>…

Javaクラスを実行する

「exec:java」でOK。 http://repo1.maven.org/maven2で配布されているので、特にインストールとかなしに使えます。 http://repo1.maven.org/maven2/org/codehaus/mojo/exec-maven-plugin/がプラグイン。 オプションでメインクラスと引数を指定します。 $ mvn…

Compound Types

<継承元の型> { <追加の定義...> }で、継承元の型に合致し、さらに追加の定義を持つ型を作成?できます。例えば // Cat派生でかつmeowメソッドを持つ何かを引数として受け付ける関数 def meow( foo: Cat { def meow:Unit } ) = { foo.meow } みたいなCompound…

deprecatedなJavaクラスを探すスクリプト

指定ディレクトリ配下のjarファイルから、deprecatedなJavaクラスを探すスクリプトを書きました。javaclassを使ってます。 #!/usr/bin/ruby # 引数で指定したディレクトリ配下のjarからdeprecatedなJavaクラスを探す # # 使い方: ./find_deprecated.rb <探索…

もう限界です。

先週に引き続き、今週も厳しい感じです。リアルが。ということで、小ねたが続きますがご容赦。(そもそも小ねただらけだろー、という話もありますが。)

rubyのnilはオブジェクトです。

rubyのnilはオブジェクトです。なのでObjectのAPIが使えます。 puts nil.to_s puts nil.object_id puts nil.hash 実行結果です。 4 4

until

いまさらだけど、untilなんてあったんだー。 # until # 条件がtrueになるまで処理を繰り返す。 i = 0 until i >= 3 puts i+=1 end puts "---" # 修飾子としても使える。 i = 0 puts i+=1 until i >= 3 実行結果です。 1 2 3 --- 1 2 3unlessと空目してた可能…

モジュールからクラス定義を消す

remove_constでモジュールからクラス定義を消すことができます。 module Test class Foo; end end # クラス定義を消す。 # remove_constはprivateメソッドなのでsendで送る。 Test.send(:remove_const, :Foo) # 消されたクラスは利用できなくなる。 begin Te…

セーフレベル4でのクラス定義

セーフレベル4ではトップレベルへのクラスの追加はできませんが、汚れたモジュールを用意してそこに追加することは可能です。 # ブロックを実行し、SecurityErrorとなるのを確認する。 def expects_security_error begin yield if block_given? raise "期待…

セーフレベル

Rubyリファレンスマニュアル - セキュリティモデルより。Rubyでは、セーフレベルによりスレッドが実行可能な操作が制限されます。 セーフレベル スレッドのセキュリティレベルを示す値。0から4まであり、基本的に数が大きくなるほど制限が増える。 スレッド…

@serializable

アノテーションを使ってシリアライザブルであることを明示できます。 // アノテーションを使ってシリアライザブルであることを明示 @serializable class Foo {} // ↑は↓と同じ class Var extends java.io.Serializable {} // 確認 println( "Foo: " + new Fo…

関数を連結する

Function#chainで複数の関数を連結して、1つの関数にできます。 // 連結する関数の配列 var fs = Array( (i:Int)=>i+2, (i:Int)=>i*3, (i:Int)=>i-2) // 連結した関数を実行。 println( Function.chain(fs)(4) ) 実行結果です。 16

配列に指定の要素が含まれているか評価する

existsが簡単。 val array = Array("a", "b", "c") if ( array.exists( i=> "a".equals(i) ) ) println( "exist" ) else println( "not exist" ) findして、isEmptyで評価するとか。 if ( array.find( i=> "a".equals(i) ).isEmpty ) println( "not exist" )…

任意の長さの文字列を返す式をさくっと作成したい。

Scala でも「*」が使えます! println( "a"*20 ) 実行結果です。 aaaaaaaaaaaaaaaaaaaa

WEBrickのHTTPサーバーをDeamonとして動作させる

WEBrickのHTTPサーバーは、「:ServerType」設定値として「WEBrick::Daemon」を指定すると、daemonとして動作するようになります。具体的には↓のような感じ。 # httpサーバー s = HTTPServer.new( :Port => 8080 :ServerType=>WEBrick::Daemon ) 後は普通にサ…