2012年03月30日

Bashoのrebar、いいね

BashoのrebarというErlang用ビルドツール(?)を使い始めて3週間ほどたったのですが、ようやく「複数階層」「複数スーパバイザ」という今回のSimple dungeonの構成を模したソースツリーが構築できました。

simpledungeon-tree-20120330.png


なんというか、この感謝を言葉にするのがすごく難しい。rebarを作って公開してくれたBashoのみなさん、あと、サイトでrebarを紹介されてたVoluntasさんにも。


rebar入れてから「とりあえず使えるようになりました」と言えるまで3週間も時間がかかったのは、今まで、まじめにOTPを使ってこなかったのが原因です。ずっとErlangとしてしか使ってなかった。OTPじゃなかった。rebarはもう初日からバリバリとテンプレートコードを生成してくれてたのに、もうほんと申し訳ないって感じ。rebarが吐き出してくれるコードが意味わかんない状態だったからもうw


ただ、rebarのありがたみというかOTPの有り難みは、「自作loopでメッセージを何とかこなすのが精一杯の、それでも目的の動作はしてくれる初期構築コード」を経たからなのかもしれない。それでも4年はかけ過ぎだけどww (今確認したら、アマゾンから飛行機本を買ったのが2008年3月21日。うは。まじ4年)


今、とりあえず、OTPベースのプロセス監視ツリーをきちんと構築したsimpledungeonにリフレッシュ作業中です。そこまでできたら、コードの動的入れ替えやら、いろんなことが可能になって、ちゃんと「リリースしました」といえる気がする。今はまだ「落ちたらごめんなさいサンプル」だ。それではオンラインゲームのサーバーとしては「実証段階」だし、そんなレベルじゃ誰も使わない(私も使わない)。


というわけで、落ちないsimpledungeonに向けて、コードの書き換え中。rebarベースに移植が完了したら、commitしてまたご報告します。

とにかく感謝の気持ちがいっぱいなので、とりあえずエントリ書きました。

ありがとーーー!
posted by へろ at 00:52| Comment(0) | TrackBack(0) | Erlang

2012年03月11日

Windowsでrebarを使う

ふだんの開発をWindowsで行っているのですが、ErlangのビルドツールとしてVoluntasさんがこちらの記事で推奨してた、rebar (githubはこちらzipはこちら)を入れてみることにしました。

Windows固有のハマリが2つ。

・nmakeでmakeできない。
・self containing escriptになってるのを動かそうとしたら、escriptが下のようなメッセージを出してrebarを実行してくれない
C:\HOGEHOGE>escript rebar
escript: Failed to open file: C:\HOGEHOGE\escript.escript



というわけで、それぞれのとりあえずの解決。


・nmakeでmakeできない。

本体のビルド作業だけなら bootstrap.bat を実行すればよいので、makeではなく
C:\rebar> bootstrap.bat

のようにすればOKです。

・escriptがエラーを出してrebarを実行してくれない

上の手順でビルドして作られた「rebar」ファイルだけを持ってくれば動くはずなのですが、今度はescriptがうまく動かない。。。

解決してしまえばシンプルでした。

動かない > C:\HOGEHOGE> escript rebar


動く!  > C:\HOGEHOGE> escript.exe rebar


Franco Lombardoさんのこちらのエントリ(英語)にあるように、escriptを"escript.exe" として起動してあげないと、引数のファイルを読みに行ってくれないようです。

escriptのソースは読んでませんが、argv[0]が自分のファイル名(escript.exe)でない場合は、escript.exeが「argv[1]ではなく、argv[0]が実行すべきescriptファイルだ」と判断して、argv[0]そのもの、もしくはargv[0]に".escript"を付加したファイルを探しに行く、という動作になっているものと思われます。これ自体は妥当な動きなので「escript.exe」で実行するようにすればいいだけですね。

というわけで、

C:\> copy \rebar\rebar \HOGEHOGE
C:\> cd \HOGEHOGE
C:\> escript.exe rebar


という流れで、Windowsでもrebarの準備ができました^^


※補足

ビルドされたrebarファイルですが、Windowsで作ってもLinuxで作っても同じようにUnixのスクリプトファイル形式(#!で始まるあれ)で出力されます。というわけで、Erlangのバージョンが同じならLinux環境でビルドしたものをそのまま使うことも可能ですね。
posted by へろ at 11:19| Comment(1) | TrackBack(0) | Erlang

2012年03月09日

Rev277でGreenに戻りました>Simple dungeon

開発中のMMO作成支援サービス「Simple dungeon」で、trunkのツリーでテストエラーが発生していたのですが、テストが通るようプログラムとテストデータを修正。


Simple dungeonのJenkins画面


simpledungeon-rev277-jp.png

Stableに戻りました。

テストが2つ減っていますが、これは古いコードで残っていたテストを、古いコードごと削除したことによるものです。
posted by へろ at 23:41| Comment(0) | TrackBack(0) | 日記

Simple dungeon、ふたたびunstable状態です(Rev276

開発中のMMO作成支援サービス「Simple dungeon」で、trunkのツリーでテストエラーが発生中です。

Simple dungeonのJenkins画面

ここ2ヶ月の修正で内部構造をいじった時に、内部的にIDを数値で持たせようとしていたのですが、それだと一部クライアントが動かない現象が発生するため、方針を再度あらため、旧構造のように文字列(erlang的にはリスト)として扱うように変更することにしました。

これに向けて先行してテストを変更したため、エラーが出始めたものです。

現在、本体の方の修正を行っています。
posted by へろ at 11:13| Comment(0) | TrackBack(0) | 日記

2012年03月06日

Simple dungeonのビルドがGreenに戻りました

というわけで、開発中のサーバー側ソフトSimple dungeonのビルドがGreenに戻りました。

Jenkinsのページはこちら

jenkins-goes-back-green-rev266.png

マルチテナント化するために直し壊ししてましたが、ようやくスタート地点まで押し戻したという感じです。

リファクタリングとかはこれからですが、なんとか開発を加速していきたいですね。
posted by へろ at 00:07| Comment(48) | TrackBack(0) | Erlang