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

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

Java

@Inheritedの動作確認

@Inheritedの動作確認です。JavaDocを確認すると以下のような機能らしい。 @Inheritedは、アノテーションが自動で継承されることを示すアノテーション。 アノテーション探索時に、派生クラスにアノテーションが付与されていなければ、自動的に親クラスに付与…

依存モジュールのdependencyを調べるなら「jarvana」が便利!

実は有名だったりするかもですが、依存モジュールのdependency定義(pom.xmlに書くやつね)を調べるなら「jarvana」が便利ですよ!→「jarvana」「jarvana」を使えば、 クラスのFQCNからそれを含むモジュールを探す。 プロジェクト名(「guice」とか)から、モジ…

GAE+JSPではまった点x3

GAE+JSPではまった点x3のメモ。雑魚中の雑魚ばかりですが。 1.JSTLが使いたい! GAEではデフォルトで組み込まれているので、WEB-INF/libにjstl.jarとかstandard.jarとかを追加する必要はありませんよ。 「Google App Engine - JDO を利用したデータストアの使…

miibotのOAuth対応メモ

TwitterでBasic認証が利用できなくなるらしいので連休を利用してmiibotのOAuth対応をしましたよ、ということで以下は対応手順のメモです。 はじめに miibotはGoogle App Engine/Javaで動いています。 いわゆるbotさんです。OAuth対応といっても、ハードコー…

データストアの単体テストを書く手順 for 1.3.3

GAEのSDKを1.3.3にバージョンアップしたら、データストアの単体テストがコンパイルエラーに! ドキュメントを見ると、どうやらテストケースの書き方が変わったらしい。(1.3.1 - 1.3.2はスルーしていたので、実はずっと前からかもですが)ということで、SDK1.3.…

GAEで作るサムネイル画像作成サービス

Google App Engineでは画像変換サービスが提供されていて、画像サムネイルサービスをさくっと作れたりします。ということで作成手順をまとめてみました。 仕組み サービスの仕組みは以下のとおりです。 画像のアップロード formのファイル選択を利用して、画…

「+」演算子での文字列連結は、コンパイラでStringBuilder#append()にされるよ!

文字列をちょこっと連結したい時に、いちいちStringBuilderを使うのは面倒くさいですよねー。 というか、「+」で連結しても実はコンパイラがうまいこと最適化してくれるんじゃね?とふと思い立って調べて見ました。 結論:単純な連結なら、コンパイラがちゃん…

Java変態?コード最速マスター

Java変態文法最速マスター - プログラマーの脳みそが面白かった && 参考になったので便乗してリスペクト。変態世間であまり見かけない(かも知れない)Javaコードを、過去のエントリからまとめてみました。 nullでなければループ 「配列がnullでなければループ…

GAEのデータストアで使えるJDO関数

JDO2.2で規定されている関数のうち、どれとどれがデータストアで利用できるのか調査してみました。結論としては、 「Collection.contains」は利用可。 「String.matches」は制限付きで利用可。 前方一致条件(「hoge%」みたいな条件)のみ指定できる。 後方一…

Javaメソッドの呼び出し元をツリー表示するスクリプト

JavaClassを使って指定メソッドの呼び出し元を探索しツリー表示するスクリプトを書いてみました。 引数で指定されたパス以下の*.class,および*.jarに含まれるクラスファイルを解析し、 メソッドの呼び出しコードを収集。 収集した情報を再帰的に探索し、呼び…

データ更新を行うユーティリティ

検索条件作成ユーティリティ向けに定義したプロパティを再利用して、データの更新を行うユーティリティも作ってみました。専用のユーティリティとペアで使うことで、 ↓のような感じで指定したモデルの属性を更新(以下の例では、年齢を"2"に更新)できるように…

XMLをコピーするSAXハンドラ

今日の発掘品。XMLをコピーするSAXハンドラです。最新のXalanを使うとDTDのコピーもできる、というのは調べたけど影響範囲があれなので不採用→仕方なく自前で実装した記憶があったり。使い方は以下です。 /** * {@link XMLReader}を作成する * @param handle…

一覧の検索条件を生成するユーティリティ

データストアからモデル一覧を取得する際の検索条件を生成するユーティリティを書いてみました。以下のような感じで使えます。 // ユーティリティをstaticインポート import static Expressions.*; .... // 名前が"mii"のKittenオブジェクト一覧を取得 List<Kitten> </kitten>…

データストアの単体テストを書く手順

追記:2010-05-01 以下は1.3.0の頃のテスト手順です。最新のSDKではテストケースの書き方が変わっています。1.3.3でのテスト手順はこちらを参照。 いまさらですが、データストアの単体テストを書く手順のメモです。単体テストでは、 ローカルでGoogle App Eng…

指定パッケージ内のクラス一覧を取得するサンプル

1.6より追加されたStandardJavaFileManagerを使用して、指定パッケージ内のクラス一覧を取得するサンプルです。 import javax.tools.DiagnosticCollector; import javax.tools.JavaCompiler; import javax.tools.JavaFileManager; import javax.tools.JavaFi…

JDK6のソース取得先

JDK6のソースも、Sunのサイトからダウンロードできます。 →Java(TM) Platform, Standard Edition 6u18 Source Snapshot Releases 各種Javaクラスのソースは、真ん中あたりのjdk-6u18-ea-src-b05-jrl-18_nov_2009.jarに含まれています。jar形式になっています…

Keyシリアライザ

Enumに続いて、com.google.appengine.api.datastore.Keyのシリアライザも実装。 import org.jabsorb.serializer.AbstractSerializer; import org.jabsorb.serializer.MarshallException; import org.jabsorb.serializer.ObjectMatch; import org.jabsorb.ser…

Enumシリアライザ

jabsorbはデフォルトではEnumをシリアライズ/デシリアライズできないみたいなので、ドキュメントの「7.2. Implementing a Serializer」と添付のシリアライザクラスのソースを参考にカスタムシリアライザを作成。以下の実装でよいはず。 import org.jabsorb.s…

jabsorbでJSON-RPCインターフェイスを作る手順

JSON-RPCライブラリのjabsorbを利用して、Google App Engine上で任意のJavaクラスのメソッドをJSON-RPCで公開する手順です。jabsorbはServletで提供されていて、Google App Engine上でもさくっと動作しましたよ。 概要 必要なモジュールをダウンロードして、…

1対多の所有関係にあるデータを記録するサンプル

Google App EngineのDatastoreで1対多の所有関係にあるデータを相互参照できる形で記録するサンプルです。 1対多 1つの親が、複数の子を持つような関係です。 親(Parent.class) ├子1(Child.class) ├子2(Child.class) └子3(Child.class) 所有関係 オブジェク…

Guiceのインターセプタってprivateメソッドには適用できないんだっけ?

privateメソッドにインターセプタを適用したはずが、どうもうまく設定できていない風の動作になったのでちょっと調査。ドキュメントのAOPのLimitationsのところに記述があり、適用対象のメソッド(を持つクラス)は以下の条件を満たす必要があるとのことです。…

トランザクションインターセプタ

Google App Engineのデータストア用にトランザクションインターセプタを作成。もはやお約束ですなー。 package test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; impo…

javaclassでCode属性とStackMapTable属性の解析をサポート

javaclassにCode属性とStackMapTable属性の解析機能を実装してコミットしましたよ。 →GitHub - unageanu/javaclass以下はjavaclassを使ってクラスの解析結果を表示する例です。Code属性の解析をサポートしたので(昔と違って)javapに近い結果が得られるように…

Java6での修正が反映されたクラスファイル仕様書の在処

Java6での修正が反映されたクラスファイル仕様書は以下から取得できますよ。 →JSR-000202 Java Class File Specification Updateちなみに、Java1.4→Java5の変更はこちら。いやー、javaclassの単体テストが通らないなー、と思っていたらJava6で追加された属性…

flyweightパターンを久々に見た

とあるコードを読んでいたら、flyweightパターンを使っている箇所を発見。 import java.util.HashMap; import java.util.Map; /** * IDファクトリ */ public interface IDFactory { /** * 文字列からIDを生成します。 * @param src 文字列 * @return ID */ I…

Javaのopcodeとパラメータの表

Javaのopcodeとそのパラメータの表です。Java Virtual Machine Online Instruction Referenceにて公開されている情報をありがたく再編集させて頂きました。 名前 説明 aaload retrieve object reference from array [u1] aaload (0x32) aastore store object…

com.sun.xml.internal.ws.util.ByteArrayDataSourceでコンパイルエラーになる件の続報

この間のコンパイルエラーについて続報。SUNのBug Databaseに情報があった。 →Bug Database - Bug ID: 6778491 javac cannot find all classes from rt.jar やはり「内部クラスを使うんじゃねぇ」という話らしい。 クラスの使えるor使えない制御は「ct.sym」…

ランダムな文字列を生成する関数

データを全部「aaaa...」で作っていたら圧縮率が大変よろしくて試験にならんので、ランダムな文字列を生成する関数を書きました。 「a-zA-Z0-9」の文字をランダムに組み合わせて 指定された長さの文字列を生成します。 /** * ランダムな文字列を作成する。 *…

今日のコンパイルエラー

com.sun.xml.internal.ws.util.ByteArrayDataSourceを使っているクラスがあって、それをコンパイルしようとするとエラーになる。 $ javac ./Test.java ./Test.java:2: パッケージ com.sun.xml.internal.ws.util は存在しません。 import com.sun.xml.interna…

URI#isAbsolute()

URI#isAbsolute() はURIが相対か絶対かを判定するAPIですが、あれ、「/foo/var」とかはfalseを返すのか・・・。 System.out.println( "http://foo/var : " + String.valueOf(new URI( "http://foo/var" ).isAbsolute())); System.out.println( "/foo/var : "…