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

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

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

Method#callとObject#send

インスタンスの任意のメソッドを実行する方法として、 Method#call Object#send があります。どちらも同じことが可能ですが、指定されたメソッドが存在しなかった場合の動作が違います。 方法 メソッドが存在しなかった場合の動作 Method#call エラー(メソッ…

RubyクラスをJSONでアクセスできるWebサービス化する

Rubyで書いたサービスをCGIにして実行できるようにするのが面倒だったので、クラスをJSONでアクセスできるWebサービスにするクラスを書いてみました。(こういうのをObject Request Brokerというらしい。) JSON形式で実行するメソッド名と引数を受け取って、…

JSONのパーズとシリアライズ

ruby-jsonを使って、JSONのパーズとシリアライズをしてみます。サンプル: require 'json/lexer' # 引数をJSONにシリアライズして、パーズする。 def process( value ) # 値をJSONにシリアライズ json = value.to_json puts json # JSONをパーズする jsonobj …

Methodオブジェクト

Object#methodでMethodオブジェクトを生成します。Methodオブジェクトは取得元のインスタンス(レシーバ)と関連づけられていて、Method#callでレシーバのメソッドを実行できます。サンプル: class Kitten def initialize( name ) @name = name end def meow p…

CGIの改行コード

はまるのが三回目くらいなのでメモ。「CGIの改行コードに気をつけろ!」 CGIを実行して以下のエラーがapacheのログに出力されたら、改行コードが不正な可能性があります。 [Wed Jun 20 20:04:54 2007] [error] [client xx.xx.xx.xx] failed to open log file …

File#flockを利用したReadWriteロック

File#flockを利用したReadWriteロックを書いてみました。仕様は以下の通りで、 「読み中に書き」 「書き中に書き」 「書き中に読み」 の場合、前の処理が終了してロックを解放するまで次の処理をブロックすることで、処理を排他制御します。 読み中に.. 書き…

実行しているプログラムのパスを取得する

組み込み変数「$PROGRAM_NAME」と疑似変数の「__FILE__」が使えそうです。 疑似変数の「__FILE__」は現在実行しているプログラムのパスを返します。requireしたソース内で実行すると、「requireしたソースのパス」となります。 組み込み変数「$PROGRAM_NAME…

Object要素のイベントを拾う

swfを貼り付けるときに使用するobject要素、embed要素にonclickなどをいろいろ設定してみました。 結果 IE6:object要素のonmouseout,onmouseover,onmousemoveは反応する。 Firefox2:swfの隅のほうでobject要素のマウス系イベント(onclick,onmouseout ..etc)…

ビヘイビア

ビヘイビアを使うと、UIコンポーネントに簡単にエフェクトを適用できます。 ビヘイビア = トリガ + エフェクト。マウスオーバーなどのイベント(トリガ)に、イベント発生時の効果(エフェクト)を組み合わせたもの。 mxml内で宣言的に設定することができます。 …

スタイルを使う

Flexアプリケーションの外観は、スタイルの設定で変更できます。 アプリケーションの背景色変更のサンプル サンプル: <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Style> Application { backgr…</mx:style></mx:application>

JavaScript関数の呼び出し

swfからJavaScriptの関数を呼び出すには「ExternalInterface」を使います。サンプル(ExternalInterfaceSample.as): package { import flash.display.*; import flash.external.*; /** * メインクラス */ public class ExternalInterfaceSample extends Sprit…

SimpleButtonで簡単ボタン

「flash.display.SimpleButton」を使うと簡単にボタンを作成できます。基本的な使い方は次の通り。 SimpleButtonのインスタンスを作成します。 初期状態、押された状態、マウスが乗った状態のUIをそれぞれ指定します。 あたり判定に使うDisplayObjectを設定…

swfに埋め込んだ画像の表示

画像をswfに埋め込むことで、ロードによる遅延なく画像を表示することができます。 ○外部からの読み込みと違い、swfと共にダウンロードされるので読み込みに時間がかからない。 ×swfのサイズが大きくなる。 ×画像を差し替えるにはswfの再作成が必要。 埋め込…

外部イメージのロード

外部イメージをロードして貼り付けるにはflash.display.Loaderを使用します。単純なサンプル(SWFと同じデイレクトリの画像を読んで表示する): package { import flash.display.*; import flash.net.*; /** * メインクラス */ public class ShowImage extends…

ActionScriptだけでUIを作る

MXMLを使わずに、ActionScriptだけでUIを作ることもできます。作り方は次のとおり。 メインクラスを作る。このクラスは「flash.display.Sprite」を継承させる。 メインクラスのコンストラクタで貼り付けるUIコンポーネントを生成。 作成したUIコンポーネント…

ボタンイベントを拾う

MXMLで定義したボタンが押された時のイベントを拾います。 イベントプロパティ(clickやactivateなど)をキー、イベント発生時の処理を値としてボタンのプロパティに設定すればOKです。 利用可能なイベントプロパティはAdobe Flex 2 リファレンスガイドの各UI…

Flex Compiler Shellで高速コンパイル

Flexのコンパイルを高速化できる「Flex Compiler Shell」を使ってみました。(via 川o・-・)<2nd life - ActionScript3 (mxmlc) でのコンパイルを100倍速にする方法) インストール Flex Compiler Shellから「flex_compiler_shell_012307.zip」をダウンロー…

日付とタイムゾーンのメモ

日付とタイムゾーンのメモ。 Calendarにはタイムゾーンがある。カレンダーを使ってDateを作成するときにタイムゾーンは重要。 Dateにタイムゾーンはない。「1970 年 1 月 1 日 00:00:00 GMT からのミリ秒」がすべて。 // タイムゾーンの違う2つのカレンダー…

バインドメソッド

インスタンスから取得したメソッド(これをバインドメソッドと呼びます。)は、取得元のインスタンスと関連づけられています。バインドメソッド内の「this」は取得元のインスタンスになります。Kitten.as: package { public class Kitten { public function Ki…

アクセサ

get,set修飾子でメソッドをアクセサにできます。アクセサを使うとインスタンスのプロパティのように「.」シンタックスで値の参照や設定ができます。Kitten.as: package { public class Kitten { // プロパティ。privateなので外部からはアクセスできない。 p…

ダイナミッククラス

クラスをダイナミック(dynamic)にすると、実行時にプロパティやメソッドを追加できます。クラス定義(Kitten.as): package { // dynamicクラス public dynamic class Kitten { public var name:String = "mii"; public function run():String { return "run!"…

arguments

argumentsは関数に渡された引数が格納されるオブジェクトです。 インデックスを指定して引数の値を取得できます。(arguments[0]) arguments.length で引数の数を取得できます。 arguments.callee で関数を再実行します。これで再帰を実現可能です。 function…

for, for in, for each in

for文は3つあります。 「for」は初期条件、繰り返し条件、継続処理からなるよくある(?)forです。javaのforと同じ。 「for in」「for each in」はオブジェクトのプロパティを列挙します。 「for in」では、プロパティのキー(配列の場合、インデックス)が順番…

XMLリテラル

XMLリテラルとかあるわけですよ。 // XMLリテラル public const xml:XML = <kittens> <kitten>mii</kitten> <kitten>kuro</kitten> <kitten>shiro</kitten> </kittens>; // メイン public function main():void { for each (var child in xml.child("*")) { stdout.text += child.name() + ":" + child.text() + "\n"; } } コンパイ…

変数と定数

変数はvar,定数はconstで宣言します。変数は変更できますが、定数は変更不可です。 変数 <アクセス指定子> var <変数名>:<型> = <初期値>; 定数 <アクセス指定子> const <変数名>:<型> = <初期値>; サンプル <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete = "main()" > </mx:application>

はじめてのクラス

クラスを作成して、MXML内のスクリプトから呼び出します。 クラス定義 <クラス属性 .. > class <クラス名> { ... } でクラスを定義します。 クラス属性でクラスの公開範囲や継承の可/不可などを制御できます。(publicとかfinalとか。) 外部から使用するクラ…

外部スクリプトファイルの読み込み

mx:Script@source、またはincludeステートメントで、外部のスクリプトファイルを読み込みます。 mx:Script@sourceを使う。 mx:Scriptのsource属性で指定した外部スクリプトファイルを読み込み、その中のmain関数を実行します。MXML(include_sample.mxml):

String#splitと$1

String#splitで$1や$2の値がリセットされます。 str = "hoge-foo/var" if str =~ /([a-z\-]+)\/([a-z\-]+)/ puts $1.split("-") puts $2 end puts "---" if str =~ /([a-z\-]+)\/([a-z\-]+)/ puts $2 puts $1.split("-") end 出力: hoge foo nil --- var hoge…

Hello Flex World!

FlexでHello Worldです。手順は次のとおり。 MXMLファイルを書きます。 コンパイラの設定ファイルを書きます。 mxmlcでMXMLファイルをコンパイルし、SWFを作成します。 MXMLファイル(hello.mxml) ユーザーインターフェイスのレイアウトなどを書くファイルで…

UNION

SQL

UNIONで、複数のSQL実行結果の「和」を返します。構文: <SQL文1> union <SQL文2>; サンプル: select name from kittens where id between 1 and 2 union select name from kittens where id between 2 and 3; データ: mysql> select * from kittens; +----+-------+---------</sql文2></sql文1>…