フリーのプログラミング関連の書籍やサイトのまとめ
Github の最近ついたスターのリポジトリをつらつらとみていたら面白そうなリポジトリを発見。フリーのプログラミング関連の書籍やサイトのリンク集がMarkdownで書かれています。
- 作者: ブライアンカーニハン,ロブパイク,Brian Kernighan,Rob Pike,福崎俊博
- 出版社/メーカー: アスキー
- 発売日: 2000/11
- メディア: 単行本
- 購入: 58人 クリック: 1,152回
- この商品を含むブログ (204件) を見る
プログラミング言語 Julia で実装された将棋ソフトメカ女子将棋で遊ぶ
プログラミング言語Juliaで実装されている将棋ソフトウェア メカ女子将棋 をUbuntuにインストール、動作させてみましょう。
インストール手順は、下記に詳細があります。
http://mechawooser.blogspot.jp/2014/01/blog-post.html
注意点は、 OS は 64-bit のLinux上で動作確認をされているとのことです。
環境
- Ubuntu 12.04.3 64-bit on VirtualBox
ビルドおよび実行環境の準備(インストール)
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 を登録します。
下記コマンドを実行し、4091.sh を元に戻しておきましょう。
$ cp -p 4091.sh.org 4091.sh
遊び方
4091ポートで待ち受けるように下記コマンドにて起動します。
$ socket -sqv -p ./Main.jl 4091
$ cd Shogidokoro $ mono Shogidokoro.exe
起動しました!
*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が起動できます。
スクリプト起動時間の比較
どうも起動時間が遅いようですね。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:~$
Julia Studio で始める Julia 入門
julia とは
ハイレベルでハイパフォーマンスの動的プログラミング言語です。文法は他の言語と似ているようです。
去年くらいからたまに話題にならないレベルで、周りでも話にも聞かないレベルですが、将棋の電王戦のあるプログラムが juliaで実装されているという話を聞いて興味を持ちました。
R は新しいExcel。 Python は新しいR。julialang は新しい Python とかいうつぶやきもあり、あまり話題に上がらないけど、ベンチマークとかみると非常に優秀なので気になっていた julialangを少し触ってみることにしましょう。*1
Julia Studio
インストール
Julia Studio をダウンロードして入れましょう。Qtで実装されているようなので、Windows, Mac, Linux があります。ここでは Windows で進めますね。
Finish。これといって問題なし。
julia studio を入れると、julia 自体も下記インストールされるようなので、これ一本でとりあえず julia を始めることができます。
インタプリタの設定もできますので、別に入れた julia のバイナリを指定することもできます。
現時点の 0.4.3 を入れると、julia の 0.2.0 (最新)が入ったのでひとまずこれでOK。
起動
では、Julia Studio を起動してみましょう。
ふむ、Packages とかいろいろあるようですねぇ。
Githubからメタパッケージらしきものをひっぱってきて、どうやらパッケージリストを作成してくれるみたいです。これはJulialangとしてサポートしている機能なんだろうか、それとも Studioの機能なんだろうか... いきなりIDEから入る弊害ですね。あとで調べてることにして先にいきます。
チュートリアル
julia studio に チュートリアルのページ があるので実行してみる。
Hello World
println("Hello, World!")
をhello.jl というファイルで新規作成すればOK。 console (いわゆる REPL)があるので、そちらに入力してもOKですが、まぁチュートリアルに従ってみます。
F5 を押すと実行されます。F5 で Run って個人的に身体に馴染んでいていい感じです。
fizzbuzz
さて、チュートリアルは続きますが英語を読むのも飽きますね。
ということで、文法もよくわからぬまま、fizzbuzz を実装してみます。
Julia Documentation — Julia Language 0.2.0 documentation この辺に、ドキュメントがあります*2
関数定義は、function で始まり、 end までのようですね。
条件分岐は、if else elseif end ですね。
演算子 は、だいたいPythonと一緒ですね
さくさくとエディタに書いてみます。
もっともベタな実装で、こんな感じですね。
インデントは 8 タブなんだけど、これが標準なんだろうか。ちょっときもい*3
なかなか手軽で性能が良いのであれば良さそうですね。
Pythonなみのコミュニティやライブラリが充実するような流れになれば主流になるかもしれませんね*4
環境
- Windows 7 64-bit
- Julia Studio Version 0.4.3 (Julia 0.2.0)
参考
2013年ふりかえり
2013年大晦日ということで簡単にふりかえっておきます。
ふりかえり
- 今年の前半は、OSC2013にmercuriap-users.jpで出展をしたり、OSPN Pressに寄稿 したりと少し活動をしていましたが、プライベートが忙しくなり3月くらいから時間があまり割けなくなってしまいした。
- 後半は、WiXでインストーラーをつくったり、社内でWPF/MVVM入門の発表をしたり(このスライド)を大幅に加筆したもの)した程度で主にマイクロソフト寄りな技術方面の勉強になりました。
その他
- 出会いがあり別れがありました。気持ちの同期をとることが難しいですね。
- SPEC クローズの後編(爻ノ編)をみるタイミングを逸したのが心残りです。
Windows 7 / Python 2.7.6 にて ez_setup.py にて UnicodeDecodeError が出て困ったけど解決した件
Windows上でソースコードから開発版TortoiseHg をビルドしてみる
Mercurial & TortoiseHg Advent Calendar 2013 - connpass の 8日目のエントリです*1
TortoiseHg を 使っているとちょっと改良してみたいなぁと感じることもありますが、Windows上のビルド環境構築はけっこう面倒だったりしますね。Windows 上で環境をスクラッチでソースコードからビルドしてみましたのでご紹介します。
環境構築の概要
Windows 上での TortoiseHg のビルドは、 thg-winbuild リポジトリを用います。*2
手順は、TortoiseHg の thg-winbuild リポジトリの README に記載されている内容を参考にしています。
https://bitbucket.org/tortoisehg/thg-winbuild/src
ここでは Windows 7 の 32-bit および 64-bit を準備します。
Mercurial ビルドに必要なもの
まずは、Mercurial をビルドするために必要な環境を準備しましょう。
Python 2.7.6
Windows用のインストーラーからインストールします。ここでは 2.x系の最新である 2.7.6 をインストールします。
32-bit http://www.python.org/ftp/python/2.7.6/python-2.7.6.msi
64-bit http://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi
- インストール先
C:\Python27
C:\Python27-x64
C++ Compiler
Visual Studio 2008 Express Edition を入れましょう
- Visual Studio 2008 Express Edition CD(DVD)イメージ版のダウンロード
http://go.microsoft.com/?LinkId=9348306
Visual Studio 2008 は Python 2.7 の場合の組み合わせです。(MinGW/MSYS は使わないほうが良いです)
gettext
下記からセットアッププログラムを最新版をダウンロードします
http://gnuwin32.sourceforge.net/packages/gettext.htm
gettext-0.14.4.exe が最新。
py2exe
http://sourceforge.net/projects/py2exe/
http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/
32-bit py2exe-0.6.9.win32-py2.7.exe
64-bit py2exe-0.6.9.win64-py2.7.amd64.exe
上記 exe を実行してインストール。
Windows Installer XML
WiX の最新安定板を用いてよいでしょう。
ちなみに WiX38.exe が現時点の最新ですのでこれを入れます。*4
http://wix.codeplex.com/releases/view/115492
setuptools
こちらも PyPI で提供されているパッケージになります。
http://pypi.python.org/pypi/setuptools
Windows の場合は、下記手順でインストール可能です。
https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py を実行しましょう。
C:\Python27\python.exe ez_setup.py C:\Python27-x64\python.exe ez_setup.py
docutils
PyPIで提供されている Pythonパッケージ のひとつです。
そして easy_install docutils を実行すればOK。
C:\Python27\Scripts\easy_install.exe docutils
ドキュメントのビルドに必要な環境準備
MiKTeX (to build PDF docs)
setup-2.8.3553.exe をダウンロードし実行したところ、2.8はもうサポートが切れているといったメッセージが出て入らない。最新2.9 インストーラーをダウンロードしインストール。
HTML Help Workshop (to build CHM docs)
htmlhelp.exe をインストール。
TortoiseHgのビルド・インストーラーに必要なソフトウェア
PyQt 4.8 or later
http://www.riverbankcomputing.co.uk/software/pyqt/download
Pythonのバージョンとあわせたバイナリをダウンロード。
PyQt4-4.10.3-gpl-Py2.7-Qt4.8.5-x32.exe
pywin32
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/
pywin32-218.win32-py2.7.exe
SVN
TortoiseSVN http://tortoisesvn.net/downloads.html
TortoiseSVNインストール時に、 svn のコマンドライン版を選択しインストールしておく。
comtypes (no longer optional)
- 32-bit
http://sourceforge.net/projects/comtypes/files/comtypes/0.6.2/
http://sourceforge.net/projects/comtypes/files/comtypes/0.6.2/comtypes-0.6.2.win32.exe/download
- 64-bit
http://sourceforge.net/projects/comtypes/files/comtypes/0.6.2/comtypes-0.6.2.zip/download
http://sourceforge.net/tracker/?func=detail&aid=3036368&group_id=115265&atid=692940
64-bitの場合は、ソースコードからインストールしましょう。
上記パッチは trunk に取り入れられているので、svnのtrunkからインストールします。
svn checkout https://svn.code.sf.net/p/comtypes/code/trunk comtypes-trunk cd comtypes-trunk C:\Python27-x64\python.exe setup.py install
Subversion Python bindings (no longer optional)
https://bitbucket.org/tortoisehg/thg-winbuild/downloads/svn_1.7.5_py27_x86.zip
https://bitbucket.org/tortoisehg/thg-winbuild/downloads/svn_1.7.5_py27_x64.zip
zip を解凍し、 svn と libsvn フォルダを site-packages 以下にコピーする
C:\Python27\Lib\site-packages
C:\Python27-x64\Lib\site-packages
以上で必要なビルドに必要なソフトウェアの準備が完了しました。
ビルド手順
ソースコード取得
コマンドプロンプトで下記コマンドを実行。
hg clone https://bitbucket.org/tortoisehg/thg-build cd thg-build python setup.py
スクリプト調整
thg-build/winbuild/setup.py の下記 try_paths の引数に 2.9 のパスを追加しておきます。
if not pdflatex: found = try_paths([r'\MiKTeX 2.7\miktex\bin\Pdflatex.exe', r'\MiKTeX 2.8\miktex\bin\Pdflatex.exe', r'\MiKTeX 2.9\miktex\bin\Pdflatex.exe'])
その他
もし mercurial など tortoisehg でビルド対象のパッケージがすでにインストールされていたら該当パッケージを別名にするか削除するかしておきましょう。
参考
最新TortoiseHg の各ソフトウェアバージョン TortoiseHg 2.10.1 時点
記バージョンですが、ここでは最新開発版をビルドしました。
- 作者: 藤原克則
- 出版社/メーカー: 秀和システム
- 発売日: 2013/02
- メディア: 単行本
- 購入: 3人 クリック: 13回
- この商品を含むブログ (10件) を見る