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の運営に大いに役立つことと思います.

2010年5月25日火曜日

javax.jdo.JDOUserException

こんなエラーが出た場合。
javax.jdo.JDOUserException: Persistent class "Class hogehage does not seem to have been enhanced. You may want to rerun the enhancer and check for errors in the output." has no table in the database, but the operation requires it. Please check the specification of the MetaData for this class.


Eclipseでプロジェクトのクリーンをすると解決。