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

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

Java

JavaScriptの文字列をエスケープする

$("#foo").text("${var}"); の場合、「${var}」に含まれるXMLエンティティはエスケープしなくていいとしても「"」や「'」は「\」でエスケープしないとJavaScript的にダメなんでは、と思ったらVelocityにちゃんと機能が用意されていましたよ、と。XMLエンティ…

埋め込み文字列内のXMLエンティティをエスケープする

プロパティ「"eventhandler.referenceinsertion.class"」と「"eventhandler.escape.html.match"」を設定することで、埋め込み文字列内のXMLエンティティのエスケープ(「<>&」→「<>&」)を行なってくれます。 デフォルトは何もしないので、明示的に設定する必…

今日の罠

Class.getField()は親のstatic変数も探索します。例えば、以下のコードを実行すると、 Child.B,Child.C,Parent.Aには値が設定される。 Parent.Bは初期化されない。 Child.Bが先に見つかるのでそちらが返されてしまうため。 という結果になります。 public st…

find

なんだ、findはあるのか。 > Google Collections import static com.google.common.collect.Iterables.*; import static com.google.common.collect.Sets.*; import static com.google.common.base.Predicates.*; ... // セット Set<String> set = newHashSet("aaa",</string>…

mapとinject

Google Collectionsを使ったmapとinjectを作ってみました。 @SuppressWarnings("unchecked") static <IN, OUT, X extends Collection<OUT>> X map( Collection<IN> collection, Function<IN,OUT> f ) { try { X out = (X) collection.getClass().newInstance(); for ( IN i : collection ) out.add( f.apply(</in,out></in></in,>…

google-collectionsを使ってSetにフィルタをかけるサンプル

Google Collectionsなるものを発見。APIを眺めていて、Sets.filterユーティリティが個人的にちょいぐっときたのでサンプルを書いてみました。 import static com.google.common.base.Predicates.*; import static com.google.common.collect.Sets.*; .... //…

今日のまよい道

JSPとか使ったことないからわかんないよー。今日はまったのは以下のエラー。Tomcatは起動するのだがjspを実行すると発生する。 2009-09-17,12:39:05,JST ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/xxxx].[jsp]] (tomcat-http…

リソースの探索候補リストを作成する関数

"ja"や"en"などをキーとして各言語に対応する文字列を格納するMapがあって、そこから指定されたロケールにマッチする文字列を取り出して使う、ということなのだけど、ResourceBundleの取得先特定ってvariantとかも考慮してたよなー。一応その辺と仕様をあわ…

Hello Velocity World!

次はVelocityなのです。ということで、とりあえずHello World!的なものを書いてみました。 // Velocityを初期化 Velocity.init(); // テンプレートに渡す値を保持するコンテキストオブジェクトを作成 VelocityContext context = new VelocityContext(); cont…

今日の「作ってみたけど微妙だった」

「ロックしてから処理をする機構を、タイプセーフな感じで」ということで、処理のインターフェイスとロツクメソッドを定義してみたわけですが。 /** * 処理 * @param <X> 戻り値の型 * @param <E1> 例外の型1 * @param <E2> 例外の型2 * @param <E3> 例外の型3 * @param <E4> 例</e4></e3></e2></e1></x>…

Tupleの型パラメータが鬱陶しいときには

この前作ったTupleですが、TrioとかQuartetを使っていると、型パラメータが長くなってしまって鬱陶しい時があります。 List<Trio<String,Number,String>> kittens = new ArrayList<Trio<String,Number,String>>(); kittens.add( new Trio<String,Number,String>( "mii", 1, "mike" ) ); kittens.add( new Trio<String,Number,String>( "kuro", 0, "egyptian" ) );</string,number,string></string,number,string></trio<string,number,string></trio<string,number,string>…

PushbackReader

PushbackReaderを使うと、Readerで読み込んだ文字を再度Readerに戻す(読まなかったことにする)ことができます。以下は簡単な利用例。連続する文字を1つにまとめつつ、出力します。 // PushbackReader を作成 PushbackReader reader = new PushbackReader( ne…

GAEでもGoogle GuiceのAOPは使えます。

Google App Engine上でも普通に使えましたよ > Google GuiceのAOP。ということで、動作確認に使った簡単なサーブレットを公開してみます。 import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletReque…

URLフェッチ機能でBasic認証を使う

Google App EngineのURLフェッチ機能では、HttpURLConnectionが普通に使える訳ですが、Basic認証が必要なサイトにアクセスしたいと思って以下のように書いてデプロイしたら実行時エラーに。 static { Authenticator.setDefault( new Authenticator(){ @Overr…

最近の流行

以下のような書き方が個人的に流行中。 String[] strs = // 略 // 配列がnullでなければ各要素に対して処理を実行 if ( strs != null ) for ( String str : strs ) { // 処理 } forで列挙する対象がMap.Entryとかになると、Genericsもあって行がすぐに長くな…

JSONBrokerのJava版クライアントを書いた

RubyクラスをJSONでアクセスできるWebサービス化するJSONBrokerのJava版クライアントを書いてみました。 サンプル 以下はクライアントを使ってjijiにアクセスし、レート情報を取得するサンプルです。 /** * レート情報を提供するサービス */ static interfac…

タプル

タプルを書いてみた。 import static java.util.Arrays.deepEquals; import static java.util.Arrays.deepHashCode; /** * タプル */ public class Tuple { /** * ペア * * @param <A> Aの型 * @param <B> Bの型 */ public static class Pair<A,B> { private final A a;</a,b></b></a>…

SAXで現在解析中の行番号を得る

Locatorから取得できます。 XMLFilterImpl#setDocumentLocator()をオーバーライドしておくとLocatorが渡されてくるので、 必要なタイミンクでLocator#getLinenumber()を呼び出して、行番号を取得すればOK 以下は、各要素の行番号とカラム番号を出力するサン…

LinkedHashMapでFIFO方式のキャッシュをさくっと作る。

LinkedHashMapを使うとFIFO方式のキャッシュがさくっと作成できます。新しいエントリが追加されるたびに呼び出されるremoveEldestEntry()をオーバーライドして、削除するかどうかの判定処理を書くだけでOK。 public static void main( String[] args ) { // …

JSONICでオブジェクトをJSON形式に変換する

JSONICを使うと、任意のJavaBeanをJSONにさくっと変換できます。 // テスト用クラス static final class Kitten { private String name; private int age; public Kitten() {} public Kitten( String name, int age ) { this.name = name; this.age = age; }…

軽量サーブレットコンテナ「Winstone」でjspをさくっと動かす環境を作る

軽量サーブレットコンテナ「Winstone」を使って、jspをさくっと動かすための環境を構築する手順のメモです。 ※[http //winstone.sourceforge.net/:title=Winstone]とは:サーブレットコンテナの一種。300kくらいの1つのファイルでHTTPサーバー、サーブレット…

JerseyのServiceクラス探索がどうなっているのか調べてみた

JAX-RSの実装であるJaersyでは、アノテーションを付与したサービスクラスを自動で探索して、デプロイしてくれます。マッピングを指定するわけでもなく、もちろん「META-INF/services/...」とかも不要。んー、内部実装はどうなってるんだろー、気になるー!、…

JAX-RSでRESTなWebサービスを作ってみる

JAX-RSを使うとRESTFullなWebサービスがさくっと作成できるらしい。ということで試してみました。 概要 Webサービスを公開するまでの手順は以下の通りです。 JAX-RSの実装(Jersey)をダウンロード Webサービスとするクラスを書いて、アノテーションを付ける。…

JAX-WSでWebサービスを作ってみる

ITPro -「Java SE 6完全攻略」第81回 JAX-WS その1より。Java 6 から標準添付になったJAX-WSを使うと任意のJavaクラスをさくっとWebサービスにして公開できるらしい。ということで試してみました。 概要 公開までの手順は以下の通り。 Webサービスとするクラ…

if文を式に変換する

Javaのif文は「文」なので値を返しません。条件を評価した結果に応じて値を返す「式」を作るには三項演算子を使いますが、「これがどうしても気に食わん!」という奇特な人のために(いるのか?)、こうすればifを「式」にして関数の引数にぶちこんだりできるよ!…

昔書いたコード

昔書いたコードを発見。interface内でどうしてもstaticブロックが使いたかったようだ。 public interface Foo { ...略 /** 必要なシステムプロパティを設定。*/ Object INIT = new Object(){{ System.setProperty( "foo", "var" ); }}; } 我ながら、一瞬何が…

Retryユーティリティ

癒しを求めてSVNリポジトリを徘徊していたら、昔書いた懐かしいコードを発見したので公開してみます。 任意の処理を実行し、 処理の戻り値または例外を評価して、リトライする必要がある場合、 指定された回数だけ再試行する ための、ユーティリティです。 /…

配列の中身をさくっと文字列にする

配列だとtoString()とかできないので、(これも原罪というやつか) String[] strs = new String[]{ "a", "b", "c" }; System.out.println( strs != null ? Arrays.asList( strs ) : "null" ); とかいう感じで書いていたのだけど、Arrays.deepToString()とかあ…

今日の罠

↓のようなコードがたくさんあって、 int result = 0; result = <処理1>; if( result != 0 ) { return result; } // end if result = <処理2>; if( result != 0 ) { return result; } // end if result = <処理3>; if( result != 0 ) { return result; } // e…

Runtime#addShutdownHook()

System.exit()が好きなコードですが、案の定、必要な後始末をせずにSystem.exit()してるじゃないか!と思ったら、ShutdownHookが仕込まれていた。 Runtime.getRuntime().addShutdownHook( new Thread() { public void run() { System.out.println("x"); } });…