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

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

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

MavenでScalaのソースコードをコンパイルする

Mavenを使ってScalaのソースコードをコンパイルする簡単なサンプルです。maven-scala-pluginを使ってさくっとコンパイルできます。 Scalaのソースコード置き場を作成し、ソースコードを配置 pom.xmlにmaven-scalaプラグインの取得先とか、scalaでコンパイル…

型キャスト

オブジェクトを指定の型にキャストするには、Any#asInstanceOfを使います。また、指定した型と互換性があるか評価するにはAny#isInstanceOfを使います。 どちらもAnyのメソッドです。 型パラメータとして、変換or評価したい型を渡します。 var i = 10 var st…

派生クラスでtype aliasの指定を強制する

abstractなclass or trait に、型指定のない名前だけのtype aliasを書くと、派生クラスでこのtype aliasの定義を強制することができます。 abstract class Foo( ) { // 派生クラスで明示する必要があるtype alias // このクラスの派生クラスでは、Xのtype al…

type alias

type <名前> = <型> で、型に別名をつけることができます。 別名をつけた型は、別名でパラメータの型指定などに使えます。 複雑な型パラメータを持つ型を複数回使うような場合に便利。 // 「Array[Int]」の別名としてXを作る。 type X = Array[Int] // X型の…

呼び出し元のスタックトレースを引き継ぐFuture

JavaのConcurrentフレームワークで非同期例外が発生した時に、非同期スレッド内のトレースに加えて呼び出し元のスタックトレースを返すFutureのデコレータを作ってみました。例えば、次のようなコードを実行した場合、 // 非同期処理 Callable<Void> c = new Calla</void>…

assertEqualsを作るスクリプト

javaclassのサンプルその2。指定したJavaBeanのassertEqualsをさくっと作るスクリプトです。 equals()が実装されていなくて、assertEquals(Object, Object)で単純に比較できないJavaBeanの場合、フィールドを1つづつ取り出して評価する必要があって面倒です…

推論された型パラメータからClassを得る

出羽ブログ - 型推論のS2Containerラッパーより。以下の手順で、推論された型パラメータからそのClassを得ることができます。 型パラメータ「T」を受け取るようにして、型推論により実行時に「T」が特定されるようにします。 さらに、可変長引数で「T」の配…

配列の先頭から複数の要素を取り出して返す。

配列の先頭から複数の要素を取り出して返す。 取り出した要素は配列から消す。 要は、Array#shiftの複数取得版を作りたい!場合には、「Array#slice!」を使うのがスマートかな。 class Array # 配列の先頭から指定された数だけ要素を取得して返す。 # 返却し…

jar内のクラスの型階層を表示するRubyスクリプト

jar内のクラスの型階層を表示するスクリプトです。たとえばaopalliance.jarを対象に実行すると、↓のようなツリーを表示します。 --- interface org.aopalliance.aop.Advice └interface org.aopalliance.intercept.Interceptor ├interface org.aopalliance.in…

結果報告

えー、無事、合格しました。ということで、今日から情報セキュリティエンジニアです!、、といえるほどスキルがついたとは到底思えませんが、まぁ、SQLインジェクションとか、XSSとか、常識として知っておくべきことは確認できたかと。あと、「ブログに勉強し…

非Maven製のjarをリポジトリにデプロイする

ローカルにある非Maven製のjarをリモートリポジトリにデプロイするコマンドです。Mavenでビルドしていれば「mvn deploy」でデプロイ可能ですが、他チームがリリースしたjarなどでAnt製のがあったりするとpom.xmlがないので使えません。かといってpom.xmlを用…

MailBox

MailBoxは、複数スレッド間での同期制御とメッセージの送受信をさくっとできるようにするユーティリティクラスです。 要は、Javaにおけるjava.util.concurrent.BlockingQueueです。メッセージ送付側はブロックしないようなので、容量制限のないjava.util.con…

スレッドの同時実行制御(synchronized)

synchronizedで複数スレッドの同時実行制御ができます。 機能はJavaのsynchronizedと同じで、指定された処理が、1スレッドからのみ実行されるようになります。同時に複数スレッドから実行されることはありません。 Javaと違って、すべての参照型の基底クラス…

spawnで処理を並列実行する

scala.concurrent.opsで定義されているspawnメソッドを使って、任意の処理を別スレッドで並列に実行させることができます。 処理は引数で渡します。 内部的には、処理を実行するだけの専用のスレッドが1つ生成されるようです。スレッドは処理の実行完了後に…

testrbを使ってみる

rubikitchさんより、「testrb」というツールを教えて頂いたので(ありがとうございます!)、早速使ってみます。 基本の使い方 「testrb」の基本の使い方は次の通り。 引数でファイルまたはフォルダを指定でき、 ファイルを指定した場合、そのファイルに含まれ…

テストスイートの作り方

以下のようなテストケース「foo-test.rb」,「hoge-test.rb」があるとして、 require 'test/unit' class FooTest < Test::Unit::TestCase def test_A ... end def test_B ... end end これら両方のテストを実行するようなテストスイートは、次のように書けま…

ソースをgithubにアップロードしました

しばらく更新してなかったJavaクラス解析機ですが、密かにテストケースなんかを書いていたのです!まだまだTODOは多いですが、現在のバージョンをgithubにアップロードしてみました。→http://github.com/unageanu/javaclass/tree/masterもうちょっと形になっ…

WebDAVでアクセスできるGitリポジトリの作成手順

WebDAVでpushできるGitリポジトリを作ったのでメモ。 以下は、 ロカールにあるGitリポジトリ「hoge」を、 WebDAVでpushできるGitリポジトリとして「http://foo.com/git/hoge.git」で公開したい! 場合の作業手順です。 環境 使用した環境は次の通り。 クライ…

Hashのfindには何が渡されてくるのか?

RubyのHashはEnumerableをMixinしてるのだけど、Enumerable#findのブロックに渡される引数は1つ、となっているわけだ。Hashならキーと値を持つのに何で1つ?Hash#eachは2つじゃん!とかひそかに疑問に思っていたのだけど、今日解決しました。 { :a=>"aa", :b=>…

世界のナベアツに Scala で挑戦する

今更ですが、世界のナベアツに Scala で挑戦してみました。 Scalaだと、 <レシーバ> <メソッド> <引数>でメソッドを呼び出したりできるので、「.」とか「()」とかを排除できてやばいことになるんじゃね!と思って始めたのだけど、0にするのは無理でした。 imp…

正規表現

Regexを使うのがよさげです。 使い方はAPIドキュメントを見ればだいたいわかるかと。 なお、古いScalaには含まれていないので注意。scala-2.7.0には入っておらず、scala-2.7.1.finalを落としてくると入ってました。 以下は簡単なサンプルです。 // 正規表現 …

JDKのソースコード

Sun Community Source Licensing (SCSL) - Java 2 Platform, Standard Edition (J2SE)でJDKのソースコードが取得できます。 sunパッケージのクラスのソース nativeのコード JVM JavapやJvmstatのコード なんかが入ってます。一見の価値はありかと。ちなみに…

OpenIDで認証するCGIのサンプル

OpenIDで認証するCGIのサンプルです。taslamの日記 - 認証APIいろいろをRubyで使うを参考に(というかほとんどコピペですが)作成させて頂きました。 OpenIDとは? @IT - OpenIDの仕様と技術を参照。 OpenIDでの認証の流れ サービス「Hoge」の利用をOpenIDで認…

セッションを使うCGIの簡単なサンプル

セッションを使うCGIの簡単なサンプルを書いてみました。 CGI::Sessionを使って簡単に使えます。 データの格納先や形式をオプションでいろいろ変更できます。詳細はCGI::Sessionの解説を参照。 以下の例では、特にオプションは指定せずデフォルトで使ってま…

ローカルのJavaVM一覧を表示するツールを作ってみた。

ローカルのJavaVM一覧を表示するツールを作ってみた。 jvmstatのAPIを呼び出して情報を取得し表示します。 なので、実行時にtools.jarをクラスパスに通す必要があります。 属性はとりあえず全部表示するようにしてみた。 import java.net.URISyntaxException…

Socket作成で「Address already in use: connect」が発生する件の続き

昨日の続き。「closeしたソケットがTIME_WAIT状態になってしばらく使えない」件ですが、TCPの仕様的に使えないようです。 TCPコネクションの破棄処理では、切断を開始した側のホストは、自身のCloseおよび相手のCloseが完了した後も、一定期間接続を維持しな…

Socketの作成で「Address already in use: connect」が発生する

Windows XP環境で、次のコードを実行すると、 for ( int i = 0 ; i < 20000; i++ ) { System.out.println( i ); Socket s = null; try { s = new Socket("hogehoge.com", 80); } finally { if (s != null) { s.close(); } } } 4000回目くらいで以下のエラー…

View Bounds

「暗黙」シリーズ3つめ。型パラメータの指定で [<型パラメータ名> <% <クラス>] 例) [X <% String] とすることで、「に暗黙的に変換可能ななにか」を受け付ける関数が作成できます。 上の例だと、Xは「Stringに変換可能な何か」になります。 なので、実行時…

シストレFXグランプリ-デモ取引に接続してレート一覧を取得するサンプル

今日からClick証券-シストレFXグランプリのデモ取引サイトにアクセス可能になりました!ということで、早速ClickClientを利用してデモサイトに接続し、レート一覧を取得するサンプルを書いてみました! デモ取引でも既存のFX取引Webサービスと同等のサービスが…

Implicit Conversions

「暗黙」シリーズ二つめ。「implicit」をつけた型変換用関数を定義しおくと、暗黙の型変換が行われるようになります。 型変換は、必要なときに自動的に変換関数が実行されることで行われます。 型変換用の関数は「implicit」をつけて定義しておく必要があり…