BashoのrebarというErlang用ビルドツール(?)を使い始めて3週間ほどたったのですが、ようやく「複数階層」「複数スーパバイザ」という今回のSimple dungeonの構成を模したソースツリーが構築できました。
なんというか、この感謝を言葉にするのがすごく難しい。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してまたご報告します。
とにかく感謝の気持ちがいっぱいなので、とりあえずエントリ書きました。
ありがとーーー!
2012年03月30日
2012年03月11日
Windowsでrebarを使う
ふだんの開発をWindowsで行っているのですが、ErlangのビルドツールとしてVoluntasさんがこちらの記事で推奨してた、rebar (githubはこちら、zipはこちら)を入れてみることにしました。
Windows固有のハマリが2つ。
・nmakeでmakeできない。
・self containing escriptになってるのを動かそうとしたら、escriptが下のようなメッセージを出してrebarを実行してくれない
というわけで、それぞれのとりあえずの解決。
・nmakeでmakeできない。
本体のビルド作業だけなら bootstrap.bat を実行すればよいので、makeではなく
のようにすればOKです。
・escriptがエラーを出してrebarを実行してくれない
上の手順でビルドして作られた「rebar」ファイルだけを持ってくれば動くはずなのですが、今度はescriptがうまく動かない。。。
解決してしまえばシンプルでした。
Franco Lombardoさんのこちらのエントリ(英語)にあるように、escriptを"escript.exe" として起動してあげないと、引数のファイルを読みに行ってくれないようです。
escriptのソースは読んでませんが、argv[0]が自分のファイル名(escript.exe)でない場合は、escript.exeが「argv[1]ではなく、argv[0]が実行すべきescriptファイルだ」と判断して、argv[0]そのもの、もしくはargv[0]に".escript"を付加したファイルを探しに行く、という動作になっているものと思われます。これ自体は妥当な動きなので「escript.exe」で実行するようにすればいいだけですね。
というわけで、
という流れで、Windowsでもrebarの準備ができました^^
※補足
ビルドされたrebarファイルですが、Windowsで作ってもLinuxで作っても同じようにUnixのスクリプトファイル形式(#!で始まるあれ)で出力されます。というわけで、Erlangのバージョンが同じならLinux環境でビルドしたものをそのまま使うことも可能ですね。
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環境でビルドしたものをそのまま使うことも可能ですね。
2012年03月09日
Rev277でGreenに戻りました>Simple dungeon
開発中のMMO作成支援サービス「Simple dungeon」で、trunkのツリーでテストエラーが発生していたのですが、テストが通るようプログラムとテストデータを修正。
Simple dungeonのJenkins画面
Stableに戻りました。
テストが2つ減っていますが、これは古いコードで残っていたテストを、古いコードごと削除したことによるものです。
Simple dungeonのJenkins画面
Stableに戻りました。
テストが2つ減っていますが、これは古いコードで残っていたテストを、古いコードごと削除したことによるものです。
Simple dungeon、ふたたびunstable状態です(Rev276
開発中のMMO作成支援サービス「Simple dungeon」で、trunkのツリーでテストエラーが発生中です。
Simple dungeonのJenkins画面
ここ2ヶ月の修正で内部構造をいじった時に、内部的にIDを数値で持たせようとしていたのですが、それだと一部クライアントが動かない現象が発生するため、方針を再度あらため、旧構造のように文字列(erlang的にはリスト)として扱うように変更することにしました。
これに向けて先行してテストを変更したため、エラーが出始めたものです。
現在、本体の方の修正を行っています。
Simple dungeonのJenkins画面
ここ2ヶ月の修正で内部構造をいじった時に、内部的にIDを数値で持たせようとしていたのですが、それだと一部クライアントが動かない現象が発生するため、方針を再度あらため、旧構造のように文字列(erlang的にはリスト)として扱うように変更することにしました。
これに向けて先行してテストを変更したため、エラーが出始めたものです。
現在、本体の方の修正を行っています。
2012年03月06日
Simple dungeonのビルドがGreenに戻りました
というわけで、開発中のサーバー側ソフトSimple dungeonのビルドがGreenに戻りました。
Jenkinsのページはこちら。
マルチテナント化するために直し壊ししてましたが、ようやくスタート地点まで押し戻したという感じです。
リファクタリングとかはこれからですが、なんとか開発を加速していきたいですね。
Jenkinsのページはこちら。
マルチテナント化するために直し壊ししてましたが、ようやくスタート地点まで押し戻したという感じです。
リファクタリングとかはこれからですが、なんとか開発を加速していきたいですね。