VMWareはLinux等の仮想イメージを有償(といっても1本1ドルくらい)で販売してる。

https://solutionexchange.vmware.com/store
今日なんとなくVMWare Fusion のメニューの「仮想アプライアンスのダウンロード」を選択してみたら、ブラウザが開いて上記URLのページが表示された。
VMWare向けの他、ParallelsVirtualbox向けもあるらしい。
有償と言うことは、ある程度動作確認などもしているのだろう。個人的には歓迎。

MacのWeb共有のサイトからPHPとPostgreSQLが使えるようにする(2)

動作環境、前提条件

  • Mac OS X 10.6.8
  • PostgreSQL 8.4.10 (/usr/localにソースからビルドしてインストール済み)
  • Macに元々入っているWeb共有(apache)とPHPから、前回の方法でエクステンションだけビルドしてPostgreSQLを呼び出せるようにしようとしたが、できなかった。
  • 今回はPHPPostgreSQL連携機能込みでソースから作り直し、Macに元々入っているWeb共有(apache)からPHPを呼び出す形にする。

ビルド

下記のように、--with-pgsql 、 --prefix=/usr/local 、 --with-apxs2=/usr/sbin/apxs のオプションをつけてconfigureし、その後makeする。

$ pwd
/usr/local
$ ls php-5.3.15.tar.gz 
php-5.3.15.tar.gz
$ rm -r php-5.3.15
$ sudo rm -r ./lib/php
$ tar xf php-5.3.15.tar.gz 
$ cd php-5.3.15
$ ./configure --with-pgsql --prefix=/usr/local --with-apxs2=/usr/sbin/apxs
        :
        :
Thank you for using PHP.
$ make
$ make test
        :
        :
Do you want to send this report now? [Yns]: n
$

ビルドは成功したようだ。

インストール、設定

ビルドできたようなので、インストールする。

$ sudo make install
Password:
Installing PHP SAPI module:       apache2handler
/usr/share/httpd/build/instdso.sh SH_LIBTOOL='/usr/share/apr-1/build-1/libtool' libs/libphp5.so /usr/libexec/apache2
/usr/share/apr-1/build-1/libtool --mode=install cp libs/libphp5.so /usr/libexec/apache2/
cp libs/libphp5.so /usr/libexec/apache2/libphp5.so
Warning!  dlname not found in /usr/libexec/apache2/libphp5.so.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/libexec/apache2/libphp5.so
[activating module `php5' in /private/etc/apache2/httpd.conf]
Installing PHP CLI binary:        /usr/local/bin/
Installing PHP CLI man page:      /usr/local/man/man1/
Installing build environment:     /usr/local/lib/php/build/
Installing header files:          /usr/local/include/php/
Installing helper programs:       /usr/local/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/lib/php/
[PEAR] Archive_Tar    - installed: 1.3.7
[PEAR] Console_Getopt - installed: 1.3.0
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util       - installed: 1.2.1
[PEAR] PEAR           - installed: 1.9.4
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
/usr/local/php-5.3.15/build/shtool install -c ext/phar/phar.phar /usr/local/bin
ln -s -f /usr/local/bin/phar.phar /usr/local/bin/phar
Installing PDO headers:          /usr/local/include/php/ext/pdo/
$

システム領域にもともと入っていた/usr/libexec/apache2/libphp5.soを置き換えてしまった。これは美しくない。残念。
どうやら/etc/apache2/httpd.confも勝手に置き換わってしまうようだ。
メーカーのサポート領域とユーザーのカスタマイズ領域をはっきり分けるには、Apacheも/usr/localに作るのが理想のようだが、MachttpdAppleが定期的に更新してくれており、これを使いたいので、現状でがまんする。

$ which httpd
/usr/sbin/httpd
$ httpd -v
Server version: Apache/2.2.22 (Unix)
Server built:   Jul 12 2012 15:09:37

ただし、今後Appleの更新でもしlibphp5.soが置き換わる場合、今回作った分がpostgres連携機能ごと消えてしまうような気がするので、念のためlibphp5.soを/usr/local/libexecに置き、apacheからもそっちを見ることにする。

$ sudo cp -p /usr/libexec/apache2/libphp5.so /usr/local/libexec
Password:
$ ls -l /usr/local/libexec/libphp5.so 
 -rwxr-xr-x  1 root  wheel  8664312 11 24 15:20 /usr/local/libexec/libphp5.so
$ cd /etc/apache2
$ sudo vi httpd.conf
httpd.conf編集内容)
        :
        :
#LoadModule php5_module        libexec/apache2/libphp5.so
LoadModule php5_module        /usr/local/libexec/libphp5.so
        :
        :

動作確認

ここを参考にテストページを作り、PostgreSQLへの接続を含めて動作することを確認した。
(テストプログラムの作者様に、この場を借りてお礼申し上げます。)

MacのWeb共有のサイトからPHPとPostgreSQLが使えるようにする(1)

動作環境、前提条件

  • Mac OS X 10.6.8
  • PostgreSQL 8.4.10
  • Macに元々入っているWeb共有(apache)とPHPから、下記の方法でエクステンションだけビルドしてPostgreSQLを呼び出せるようにしようとしたが、できなかった。

ソース入手、展開

自分の環境では、現時点でPHP 5.3.15が(Appleから更新されて)入っているので、このバージョンを使用する。
ここからダウンロードする。

$ which php
/usr/bin/php
$ php -v
PHP 5.3.15 (cli) (built: Jul 31 2012 18:42:11) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

ダウンロードしたソースを/usr/localに移動・コピーした後、下記のように展開する。

$ pwd
/usr/local
$ ls php-5.3.15.tar.gz 
php-5.3.15.tar.gz
$ tar xvf php-5.3.15.tar.gz 
        :
        :
x php-5.3.15/LICENSE
x php-5.3.15/README.input_filter
$ 

ビルド

$ cd php-5.3.15/ext/pgsql/
$ phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
$ ./configure --with-pgsql
        :
        :
configure: creating ./config.status
config.status: creating config.h
$ make
/usr/local/php-5.3.15/ext/pgsql/pgsql.c:6241: warning: passing argument 3 of ‘php_addslashes’ from incompatible pointer type
make: *** [pgsql.lo] Error 1
$ 

ビルド失敗。
いろいろ試したが、どうしてもできなかった。
makefileを見てみると、なんかmakefile内の設定が、もともと/usrに入っているphpのものと、/usr/localのものと、ごっちゃになってる。

        :
        :
prefix = /usr
phplibdir = /usr/local/php-5.3.15/ext/pgsql/modules
phpincludedir = /usr/include/php
        :
        :

どうやら、もともと入っているPHPを使うのはあきらめて、PHP全体をソースから作り直したほうがよさそうだ。
次回へ続く。

OSC 2012 Tokyo、翻訳カフェ

先週、土曜日だけの参加でしたが、オープンソースカンファレンス2012 Tokyo/Fallに行ってきました。
またLibreOfficeチームの方々の懇親会に参加させて頂きました。
翌日は、翻訳カフェに参加させて頂きました。
おかげさまで大変充実した週末でした。
enoさんはじめ、LibreOfficeチームのみなさん、翻訳カフェのみなさん、ありがとうございました。
また機会があればお邪魔させてください。

FX研究中

数年前から趣味でFXをしています。でもなかなか勝てません。

なぜFXをしているかというと、いわゆるコンピュータを使った自動売買に興味があるからです。自分の大学時代の専門が環境シミュレーションだったので、このシミュレーションの経験を応用できないかと。

自動売買でよく言われるシグナルやEAについてですが、自分はこれらの妥当性を評価するためには、検証用の価格データの分類をいかにするかが重要ではないかと思っています。つまり、あるシグナルやEAのバックテストをするのはいいけど、バックテストのデータが単純に過去10年全部のデータとかでは、踏み込んだ評価が出来ないのではないかと。

たとえば、政策金利が予想外に利下げとなったら、下降トレンドが始まることになるでしょうが、この場合、そういった出来事の前後では、基本的な状況が違うわけですから、前後ひっくるめて同じEAを使っていいのだろうか、と思っているのです。状況が変われば勝てるEAも変わるのではないかと。

勝てないと言うより、このデータの分類手法がまだ確立できていないから、本気で参入できないわけです。

それはともかくとして、その過程で開発したツールをひとつ公開しました。ツール名はRecordingTickDataといいます。FXCMジャパンというFXブローカーの配信する価格情報を受信してPostgreSQLデータベースにリアルタイムに保存しつづけるツールです。
基本的な動作確認は取れていますが、最終的なテストがまだ途中なのでプレリリース版にしました。最終テストが終わったら細かいバグフィックスなどをした正式版を公開します。

レートデータはCSVとかに保存したものをMetaTraderなどで使う人が多いでしょうから、あまりこのツールの用途はないかもしれませんが、もし興味のある人は試してみてください。