secretbase.log

.NET/C#/Pythonなど

プログラミング言語 Julia で実装された将棋ソフトメカ女子将棋で遊ぶ

プログラミング言語Juliaで実装されている将棋ソフトウェア メカ女子将棋Ubuntuにインストール、動作させてみましょう。

f:id:cointoss1973:20140113223421p:plain


インストール手順は、下記に詳細があります。
http://mechawooser.blogspot.jp/2014/01/blog-post.html
注意点は、 OS は 64-bit のLinux上で動作確認をされているとのことです。

環境

ビルドおよび実行環境の準備(インストール)

mono と git*1 を入れましょう。

$ sudo apt-get install mono-devel
$ sudo apt-get install git
$ sudo apt-get install build-essential

インストール (将棋所)

次に、将棋所をいれましょう。

適当なディレクトリで展開しましょう。

$ wget http://www.geocities.jp/shogidokoro/download/Shogidokoro.zip
$ unzip Shogidokoro.zip

インストール (Julia の最新版)

Julia は開発速度が速いので、Github に登録されている最新版のJuliaを用います。ビルドする手順です。

$ sudo apt-get install gfortran
$ git clone git://github.com/JuliaLang/julia.git
$ cd julia
$ make

gfortran だけでなく m4 など必要になるかもしれません。ビルド時にエラーが出た場合にエラーメッセージをよく読んで必要なパッケージを適宜追加インストールしてください。
make すると依存関係のパッケージのダウンロード、ビルドなど相当時間がかかりますのでしばらく待ちましょうヽ(´ー`)ノ
make -j4 として並列実行してもよいでしょう。
make が終わりましたか?

/usr/local/bin の配下にシンボリックリンクを貼っておくと良いでしょう(このあたりはお好みで)

$ cd /usr/local/bin
$ sudo ln -s $(HOME)/work/julia julia
$ julia --version
julia version 0.3.0-prerelease+842

現時点バージョンでは上記バージョン表記となりました。

インストール (メカ女子将棋)

$ git clone https://github.com/kimrin/WCSC23
$ cd WCSC23
$ make sharedlib
g++ -shared -g -Wall -O3 -fPIC -I. -I/usr/include -I./src ./src/Main.cpp -o lib/libMJ.so.1.0 -lm 
ln -s libMJ.so.1.0 ./lib/libMJ.so.1

準備

メカ女子将棋は,Bonanza が提供している fv.bin を用いているので別途ダウンロードしましょう。
(ライセンスの関係で、同梱していないとのこと。Bonanzaソースコードは公開しているがオープンソースでは無いため。)

$ wget http://gi.cs.uec.ac.jp:10140/bonanza_v6.0.zip
$ unzip bonanza_v6.0.zip
$ cp bonanza_v6.0/winbin/fv.bin WCSC23/

fv.bin を WCSC23配下にコピーしておきましょう。



動作確認 (WCSC23/Julia)

では動作確認していきましょう。

WCSC23/Juliaディレクトリで、$ ./Main.jl してみます。何も出なければ多分動いています。エラーが出る場合は何らかの修正が必要です。

$ cd WCSC23/Julia
$ ./Main/jl
bash: ./Main.jl: /home/kimura/julia/julia: 誤ったインタプリタです: そのようなフ ァイルやディレクトリはありません

おっと、shebangを修正しましょう。

$ sed -i.bak -e 's\#!/home/kimura/julia/julia\#!/usr/bin/env julia\' Main.jl 

修正しましたので再度実行しましょう。

$ ./Main/jl

10秒くらいなにも出力されなけければOKなので、Ctrl+Cで停止。

$ cat inputdata | ./Main/jl
id name Mecha Jyoshi Shogi 0.5
id author Sayuri TAKEBE, Mio WATANABE, Rieko TSUJI and Takeshi KIMURA
option name BookFile type string default ./Joseki.db
option name UseBook type check default true
usiok
readyok
info time 67 depth 1 nodes 30 score cp 52 nps 450 pv 2h1h
info time 194 depth 2 nodes 155 score cp 4 nps 800 pv 2h1h 5a4b
info time 353 depth 3 nodes 1513 score cp 21 nps 4282 pv 2h1h 8b6b 4g4f
info time 594 depth 4 nodes 5850 score cp 2 nps 9849 pv
info time 1195 depth 4 nodes 17540 score cp -6 nps 14681 pv 4g4f 8b9b 2h4h 5a4b
info time 5707 depth 5 nodes 122243 score cp 19 nps 21418 pv 9g9f 3c3d 2g2f 8b9b 4i5h
bestmove 9g9f

こんな感じが出力されればOKです。



エンジンの登録

将棋所に登録しましょう。まずはsocketをインストールしましょう。
ここではsocketを用いた方法で行います。

$ sudo apt-get install socket

4091.regist.sh の shebang を #!/usr/bin/env julia に変更します。
次に下記コマンドにてコピーします。

$ cp -p 4091.sh 4091.sh.org
$ cp -p 4091.regist.sh 4091.sh

将棋所を起動し、エンジンとして 4091.sh を登録します。
f:id:cointoss1973:20140107092350p:plain
f:id:cointoss1973:20140107092358p:plain


下記コマンドを実行し、4091.sh を元に戻しておきましょう。

$ cp -p 4091.sh.org 4091.sh

遊び方

4091ポートで待ち受けるように下記コマンドにて起動します。

$ socket -sqv -p ./Main.jl 4091
$ cd Shogidokoro
$ mono Shogidokoro.exe

f:id:cointoss1973:20140113223421p:plain

起動しました!

*1:以前は git-core というパッケージ名でしたが現在は git というパッケージ名になったようですね

プログラミング言語Julia ~Ubuntu 編~

先日Windowsにインストールしてみた Julia ですが、Ubuntu のパッケージが用意されています。対象のUbuntuは 12.04, 12.10, 13.04, 13.10 があります。ここでは Ubuntu 12.04.3 (LTS) にインストールします。

Ubuntu にパッケージのリポジトリを導入

公式サイトの手順に沿って、実施します。依存関係パッケージは別ppaのためそちらも追加します。

$ sudo add-apt-repository ppa:staticfloat/juliareleases
$ sudo add-apt-repository ppa:staticfloat/julia-deps
$ sudp apt-get update

インストール

julia という名前のパッケージをインストールします。

$ sudo apt-get install julia

REPL

julia でREPLが起動できます。
f:id:cointoss1973:20140103211022p:plain

スクリプト起動時間の比較

どうも起動時間が遅いようですね。Hello World を表示するスクリプトをいくつかのプログラミング言語と比較してみました。

言語 時間
Python 0.065s
Ruby 0.013s
Julia 3.786s

測定

tkondou@zion:~$ time python ~/work/playground/py/hello.py 
Hello, World!

real    0m0.065s
user    0m0.016s
sys     0m0.020s
tkondou@zion:~$ time ruby ~/work/playground/ruby/hello.rb 
Hello, World!

real    0m0.013s
user    0m0.000s
sys     0m0.008s
tkondou@zion:~$ time julia ~/work/playground/julia/hello.jl 
Hello, World!

real    0m3.786s
user    0m3.424s
sys     0m0.052s
tkondou@zion:~$ 

Ubuntu 12.04 LTS にて Python 3.3 の環境構築

Ubuntu 12.04 (precise) の Python 3系をインストールすると、Python 3.2.3 が入ります。Python 3.3 が使いたいですよね*1。そこで、最新の Python 3.3.2 をインストールし virtualenv を用いた環境を構築してみましょう。

f:id:cointoss1973:20131021231757p:plain

1. PPA を導入

PPAにてPython3.3パッケージを公開している方がいます。自己責任で入れましょう。

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:fkrull/deadsnakes
$ sudo apt-get update
$ sudo apt-get install python3.3

 
 
 
 

2. setuptools のインストール

まずは、easy_installを導入します。setuptoolsというパッケージに入っていますので、Linuxの場合の手順 にしたがって導入します。

$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
$ sudo python3.3 ez_setup.py

/usr/local/lib/python3.3 以下にインストールされます。
easy_install-3.3 コマンドが使えるようになります。
 
 
 
 

3. virtualenv のインストール

パッケージが導入できるようになったら、 virtualenv を入れましょう。

$ easy_install-3.3 virtualenv 

 
 
 
 

4. virtualenv にて仮想環境をつくる

virtualenv は Python の仮想環境を好きなディレクトリにつくることができます。
下記は、 ~/venv3.3 以下に virtualenv環境をつくります。好きな場所でよいです。

$ virtualenv-3.3 ~/venv3.3

 
 

起動にする (activate)

tkondou@zion:~$ cd venv3.3
tkondou@zion:~/venv3.3$ source bin/activate
(venv3.3)tkondou@zion:~/venv3.3$ 

期待どおり、python インタプリタが 3.3.2 になっています。

(venv3.3)tkondou@zion:~$ python
Python 3.3.2 (default, May 16 2013, 23:40:52) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

 
 

停止する (deactivate)

仮想環境から抜ける場合は、 deactivate します。

(venv3.3)tkondou@zion:~$ deactivate
tkondou@zion:~$ 

 
 
 

5. ipython を virtual環境にインストールする

python インタプリタは ipython が使いやすいのでインストールします。
activate した状態で、pip コマンドでインストール可能です。

(venv3.3)tkondou@zion:~$ pip install ipython

...

Successfully installed ipython
Cleaning up...

 
 
ipython3 を実行することで ipython 無事起動します。

(venv3.3)tkondou@zion:~$ ipython3
Python 3.3.2 (default, May 16 2013, 23:40:52) 
Type "copyright", "credits" or "license" for more information.

IPython 1.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: 

 
 

6. Python 3.3 を学ぶことができる書籍

Python 3.3 環境が導入できました。下記の本は 3.3 で実行することができますのでそばにおいておくて良いでしょう。

パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)

空飛ぶPython即時開発指南書 (Programmer’s SELECTION)

空飛ぶPython即時開発指南書 (Programmer’s SELECTION)

*1:13.04 raring や 13.10 saucy は Python3.3が apt-get で導入可能のようです

ubuntu の proxy 設定方法

ubuntu 11.04 on Virtual Box でやってみました。

結論としては
「システム」→「設定」→「ネットワークのプロキシ」
のところだけ設定すればよいことが分かりました。

https://forums.ubuntulinux.jp/viewtopic.php?pid=2474

だいぶ前にネットワークプロキシがうまくいかず、
あれこれ設定を悩んだ記憶がありましたが、これでいけました。

Ubuntu上級活用マニュアル

Ubuntu上級活用マニュアル

Redmine インストール on Ubuntu 10.10 using Passenger

Ubuntu 10.10 に redmine をインストールした備忘録です。

LAMP インストール

tasksel を使ってLAMP(Linux/Apache/MySql/Perl,PHP,Python)
をセットアップしておきます。

$ sudo apt-get install tasksel
$ sudo tasksel install lamp-server

redmine インストール

AppArmorはセキュリティ関連の設定らしいですが、
mysqld を complain mode(学習モード)にする必要
があるかもしれないと書いてあります。(詳しいことはそのうち調べる)

$ sudo aa-complain /usr/sbin/mysqld
Setting /usr/sbin/mysqld to complain mode.

Ubuntu 10.04以降 は redmine の pkg が用意されているので
さくっとインストール。
2番目のパッケージ(redmine-mysql)は、redmine-pgsql や redmine-

$ sudo apt-get install redmine redmine-mysql subversion

いくつか問い合わせがきます。
redmine/instances/default のデータベースを dbconfig-common 設定→はい
redmine/instances/default が使うデータベース種類 →mysql
データベースの管理権限を持つユーザのパスワード→mysqlのパスワードを入力
redmine/instances/default用のMySQL アプリケーションパスワード→redmine 入力

Redmine が下記ディレクトリにインストールされました

/usr/share/redmine
/etc/redmine

AppArmor の mysqld profile を元に戻します

$ sudo aa-enforce /usr/sbin/mysqld
Setting /usr/sbin/mysqld to enforce mode.

apache2 と passenger の Configuration

http://localhost/redmine のようにアクセスする設定を行ないます。

シンボリックリンクを貼ります

$ sudo ln -s /usr/share/redmine/public /var/www/redmine

ファイルが無かったのでviで開き

$ sudo vi /etc/apache2/mods-available/passenger.conf

下記を追記します。

PassengerDefaultUser www-data

さらに、/etc/apache2/sites-available/default に下記の追記が必要です。


RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on

passenger を有効にします。

$ sudo a2enmod passenger
ERROR: Module passenger does not exist!

おやエラーがでました。
どうやら passenger が入っていないようですので
インストール。

$ sudo apt-get install libapache2-mod-passenger

さきほど設定した /etc/apache2/mods-available/passenger.conf
が存在しているよと言われるので、”Y"でメンテナ版を入れます。

passenger.conf を確認。

$ more /etc/apache2/mods-available/passenger.conf

PassengerRoot /usr
PassengerRuby /usr/bin/ruby

もう一度下記を追記。

PassengerDefaultUser www-data

passengerを有効にします(どうやらインストールした段階で
有効になっているようです)
念の為 apache2 を再起動しておきます。

$ sudo a2enmod passenger
Module passenger already enabled

$ sudo apache2ctl restart

redmine 起動の確認

以下をアクセスし redmineが起動できていることを確認しました
http://localhost/redmine/