2010年6月23日水曜日

GoogleAppEngineでRollback

GoogleAppEngine(GAE)でDeployに失敗すると,
その後Deployができなくなって,
「rollbackしろ」
と怒られることがある.
そんなときの対処法.

プロンプトで自分のアプリケーションディレクトリを開いて,
> eclipseのディレクトリ/plugins/com.google.appengine.eclipse.sdkbundle_xxxxx/appengine-java-sdk-x.x.x/bin/appcfg.cmd rollback ./war
とすればOkらしい.

2010年6月22日火曜日

GoogleAppEngineでStruts

なんか論文投稿用ページを作れという話になってきたので,
再びGAEにStrutsを入れるところから作業が始まります.

まずはstrutsのダウンロード
http://struts.apache.org/download.cgi#struts1310
から,
struts-1.3.10-apps.zip
をダウンロード.

その後は
http://googleappengine.seesaa.net/article/117110106.html
を参考に,ライブラリなどをプロジェクトに追加する.

とりあえず,アップローダを作成しないとなあ.

2010年6月21日月曜日

Robocup Rescue Simulationを動かす2

「Robocup Rescue Simulationを動かす」で動かしたMAPはちょっと大きすぎて
最初の取っ掛かりとしては難しいので,まずは簡単なMAPから実行してみる.

mapの変更
rescue-nightly\boot\config\gis.cfg
の中にMAPが書いてあるので, それを変更.

たとえば,

# The map directory to read
# gis.map.dir : ../maps/gml/legacy/Kobe
gis.map.dir : ../maps/gml/test

とすると,Mapがlegacy/Kobeからtestに変更できる.

これで実行すれば,各種エージェントが1種類ずつしかいない
小さいMAPを試してみることが可能.

エージェントの数の制御
ついでに,エージェント数などを変更する場所もメモしておこう.
rescue-nightly\maps\gml\
にマップデータがあるので,
scenario.xml
を書き換える.



エージェントの作り方
さて,ここまできていよいよエージェントの作成.
基本となるAbstractClassは,
rescuecore2.standard.components.StandardAgent
これを継承して,
import rescuecore2.standard.components.StandardAgent;
import rescuecore2.standard.entities.StandardEntity;

abstract public class AbstractAgent<E extends StandardEntity> extends StandardAgent<E> {
}

などというAbstractAgentクラスを作成すると良い.
さらに,それを継承して,AmbulanceTeam,PoliceForce,FireBrigaterを作成する.

たとえば,PoliceForceを作成するなら,
public class MyPoliceForceAgent extends AbstractAgent<PoliceForce> 

とする.
とりあえず,ざっくりとしたMyPoliceForceAgentを作成してみる.
package jp.ac.nagoyau.is.ss.kishii.tori.rescue.test.agent;

import java.util.Collection;

import java.util.EnumSet;

import rescuecore2.messages.Command;
import rescuecore2.standard.entities.PoliceForce;
import rescuecore2.standard.entities.StandardEntityURN;
import rescuecore2.worldmodel.ChangeSet;

public class MyPoliceForceAgent extends AbstractAgent<PoliceForce> {

    /**
     * つなげるために呼ばれる.<br>
     * これが呼ばれると全体のMAPなどが読み込めるようになる
     */
    @Override
    protected void postConnect() {
        super.postConnect();
        //何か初期化処理
    }
    
    /**
     * なんだかよくわからないけど,書いておく.
     * たぶんサーバ側で利用する
     */
    @Override
    protected EnumSet<StandardEntityURN> getRequestedEntityURNsEnum() {
        return EnumSet.of(StandardEntityURN.POLICE_FORCE);
    }

    /**
     * 1ステップごとに呼び出される.
     */
    @Override
    protected void think(int time, ChangeSet changeSet, Collection<Command> commands) {
        //面倒なので何もしません
    }

}



自分のエージェントで動かす
せっかく作ったら動かしたいというのが人間のサガ.
動かす方法も考えよう.

sample.LaunchSampleAgentsを自分の開発パッケージにコピーしておく.
で,作成したエージェントとSampleAgentを入れ替える.
たとえば,SamplePoliceForceAgentを今作成したMyPoliceForceAgentに変更するなら,
コピーしたLaunchSampleAgentsの100行目付近を
                Logger.info("Connecting police force " + (i++) + "...");
                //launcher.connect(new SamplePoliceForce());
                launcher.connect(new SamplePoliceForce());
                Logger.info("success");

と変更する.

で,実行してみると・・・

無事PoliceForceが何もしないチームが完成.
ますます役立たず.

2010年6月19日土曜日

Robocup Rescue Simulationを動かす

ロボカップレスキューシミュレーションを研究にしている割には
新サーバは一度も自分で動かしたことがなかったので動かしてみる.

ダウンロード&インストール
http://roborescue.sourceforge.net/
からnightly build⇒rescue-nightly-src.tgzをダウンロード
適当なところで展開する.

プロジェクト作成
Eclipse上で適当なプロジェクトを作成.
rescueなどという名前にしておけばいいと思う.
nightlyとは別のところにすべし.

そこに,
rescue-nightly/jars

rescue-nightly/lib
をコピーする.
ちなみに中身は,
・jars以下:ロボカップのjars
・lib以下:各種ライブラリ
である.
それぞれのディレクトリに入っているすべてのjarファイルをビルドパスに追加.

さらに,
rescue-nightly/modules/sample/src/以下をコピー

antをインストール
ANTをインストールする.
http://www.javadrive.jp/ant/install/index.html
この辺が参考になる.


いよいよ実行

nightly直下でプロンプトを立ち上げ,
> ant start-kernel

出てきたWindowでMaximumにチェックがついているものを
Civilian以外はすべて外す.

OKボタンをクリック.
⇒KernelGUIとViewerが立ち上がる.



eclipseで
sample/LaunghSampleAgent
を実行する.


KernelGUIで,
Component manager
にメッセージがないことを確認できれば,すべてつながったことが確認できる.

RUN!

で,とりあえずSampleは動くことを確認,.


街が真っ黒けになりました.

2010年6月16日水曜日

新しいノートPC

新しいノートPCを買ったので、早速インストールがてら遊んでみている。

Let'sNoteのSシリーズで、
Core-i7 2.67GHz
メモリ 8G
SSD 256G
と、とりあえず現状ではかなりがんばっている。
欠点は、若干画面が狭いことか。1280x800だから。
まあ、慣れるでしょう。

で、さっそくいろいろソフトをインストール中。
・Symantec Endpoint Protection
・FireFox
・Eclipse
・Lingoes
・Java
・Lhaca+
・ALZip

・Firefoxのタブが開く位置を変更する。http://www.lifehacker.jp/2010/02/100204firefoxtab.html

PreadesEclipse日本語化
eclipse.iniを書き換える必要があるので要注意。http://www.db.is.kyushu-u.ac.jp/rinkou/javaintro/eclipse.html

・subclipse
Eclipseのヘルプ⇒なんとかかんとかを選んで、
http://subclipse.tigris.org/update_1.6.x
を追加。
いくつか見つからないパッケージがあるので、チェックをはずしてインストール。
で、いざインポートしようとすると
> svn: Can't create tunnel
とかいわれる。
解決策は、こちら。
http://www.woodwardweb.com/java/000155.html
なんか面倒なことになっているなあ。
とにかく、無事できた。

とりあえず,こんなところで一段落.

疲れる.

2010年6月2日水曜日

アクティブ遷移図Wiki

アクティブ遷移図に関して情報をWikiにまとめました.
興味がある方は是非読んで利用してみてください.
http://www.kishii.ss.is.nagoya-u.ac.jp/project/openpne/at/

きっとOpenPNEの運営に大いに役立つことと思います.