記事一覧

all in one trac のリポジトリ移行

ソース管理用に利用していたサーバを新しくした時に、実施したsubversionのリポジトリ移行と、tracの同期のメモを残します。

新しいサーバにはall in one tracがインストール済みとします。

作業手順は以下の通り
1.旧リポジトリのダンプをとる。
2.新リポジトリの作成
3.新リポジトリに旧リポジトリのダンプをロード
4.tracの同期コマンドを実行


1.旧リポジトリのダンプをとる。
> svnadmin dump <リポジトリパス> <ダンプファイルパス>
<リポジトリパス>
 all in one tracのインストール場所によりますが、デフォルトの場合、 "C:/trac-0.1.1/svn_repo/projects/default" になります。

<ダンプファイルパス>
 今回は適当に、 dumpfile としました。(コマンド実行場所にできます。)

2.新リポジトリの作成
デフォルトのリポジトリを移行する場合について書きます。
まず、デフォルトのリポジトリを移動します。
C:/trac-0.1.1/svn_repo/projects/default の projectsを projects_bak に変更。

リポジトリの作成
svnadmin create C:/trac-0.1.1/svn_repo/projects/default

3.新リポジトリへ旧リポジトリのダンプをロード
svnadmin load C:/trac-0.0.1/svn_repo/projects/default < dumpfile
ダンプファイルは適当な場所に移動しておいてください。

4.tracの同期
3まですべて成功したのち、以下のコマンドを実行
trac-admin resync

これで、リポジトリの移行完了。
動いてよかった・・・

[コンテンツアグリゲータ]モバイルゲームチャンネル

Sはアプリゲット一択だと思ってたんですが、モバイルゲームチャンネルというところもあるみたいですね。
Softbankのアプリ配布解説ページを見ていて初めて知りました。
とりあえず登録してみます!

運営がバンダイナムコゲームスとVectorという有名どころなので期待大♪

[Sアプリ] データを保存する。

Sアプリのデータ保存機能を作成します。
データ保存ができるだけで作成できるアプリの幅が広がりますよね。

データ保存の流れは以下のような感じです。
1) RecordStoreのオープン
2) RecordStoreの書き込み
3) RecordStoreのクローズ

一般的なプログラムのファイル操作と同じっぽいですね。

オープンとクローズだけ実装するとこんな感じですかね。


public class DataManager
{
public void saveData(){
RecordStore rs;
try{
// RecordStore オープン
rs = RecordStore.openRecordStore("テスト", true);

}finally{
if( rs != null ){
// RecordStore クローズ
rs.closeRecordStore();
}
}
}
}

RecordStoreのクローズ処理は確実に呼び出すため、finallyを利用します。

書き込みに関してはまた今度。

[Sアプリ→iアプリ移植]画像ファイルの読み込み

最近、いままで作ったSアプリをiアプリに移植する作業をしています。同じJava言語ではあるので、そんなに違いはないのですが、主に以下の点が各キャリア独自のAPIになっています。
・画面描画
・音楽再生
・キー入力
・その他携帯特有の機能(カメラ機能、振動機能、・・・)

そのため、上記のラッパーを作っておき、直接描画APIなどをアプリケーションから呼び出さないようにすれば、移植時に最小限の作業で済ませることができます。

今回は手始めとして、画像ファイルを画面描画する処理について比較してみたいと思います。

★/resディレクトリ直下に置いてある「cursor.gif」ファイルから、Imageオブジェクトを作成する場合を比較してみると以下のようになります。

■Sアプリの場合
Image image = Image.createImage("/cursor.gif");

■iアプリの場合
MediaImage mi = MediaManager.getImage("resource:///cursor.gif");
try{
mi.use();
}catch(Exception e){
}
Image image = mi.getImage();

iアプリのほうがなんだか面倒ですね!
mi.use()をしなくても、何もエラーにならずに画像が描画されもしないので、これをやらなければいけないことに気づくのに少し時間がかかりました・・・。


★次に、Imageオブジェクトを画面に描画する処理を比べてみます。

■Sアプリの場合
paint(Graphics g){
g.drawImage(image, x, y, Graphics.TOP|Graphics.LEFT);

■iアプリの場合
paint(Graphics g){
g.drawImage(image, x, y);

x, y で描画の基点を指定しますが、Sアプリのほうは、その基点の左上に描画するのか、右下に描画するのかなどを第三引数で指定する必要があります。iアプリのほうは右下固定だったかな?


★画像を回転して表示する場合は次のようになります。
■Sアプリの場合
paint(Graphics g){
g.drawImage(Image.createImage(image, 0, 0, image.getWidth(), image.getHeight(), Sprite.TRANS_ROT180)
, x, y, Graphics.TOP|Graphics.LEFT);

Imageオブジェクト生成時に角度を指定する感じです。
上記の例だと一度Imageオブジェクトを作り直しているので効率悪いですね・・・。かといって最初に全パターンの角度でImageオブジェクトをつくっておくのもメモリが・・・。

選択肢は以下。
* javax.microedition.lcdui.game.Sprite.Sprite.TRANS_NONE - 指定されたイメージ領域を変形せずにコピーします。
* javax.microedition.lcdui.game.Sprite.Sprite.TRANS_ROT90 - 指定されたイメージ領域を時計回りに90度回転してコピーします。
* javax.microedition.lcdui.game.Sprite.Sprite.TRANS_ROT180 - 指定されたイメージ領域を時計回りに180度回転してコピーします。
* javax.microedition.lcdui.game.Sprite.Sprite.TRANS_ROT270 - 指定されたイメージ領域を時計回りに270度回転してコピーします。
* javax.microedition.lcdui.game.Sprite.Sprite.TRANS_MIRROR - 指定されたイメージ領域を水平中央辺りで反転してコピーします。
* javax.microedition.lcdui.game.Sprite.Sprite.TRANS_MIRROR_ROT90 - 指定されたイメージ領域を水平中央辺りで反転した後、時計回りに90度回転してコピーします。
* javax.microedition.lcdui.game.Sprite.Sprite.TRANS_MIRROR_ROT180 - 指定されたイメージ領域を水平中央辺りで反転した後、時計回りに180度回転してコピーします。
* javax.microedition.lcdui.game.Sprite.Sprite.TRANS_MIRROR_ROT270 - 指定されたイメージ領域を水平中央辺りで反転した後、時計回りに270度回転してコピーします。

■iアプリの場合
paint(Graphics g){
g.setFlipMode(Graphics.FLIP_ROTATE_RIGHT);
g.drawImage(image, x, y);

Graphics.drawImageに対して角度を指定する感じです。

選択肢は以下。
* Graphics.FLIP_NONE - 指定されたイメージ領域を変形せずにコピーします。
* Graphics.FLIP_ROTATE_RIGHT - 指定されたイメージ領域を時計回りに90度回転してコピーします。
* Graphics.FLIP_ROTATE - 指定されたイメージ領域を時計回りに180度回転してコピーします。
* Graphics.FLIP_ROTATE_LEFT - 指定されたイメージ領域を時計回りに270度回転してコピーします。
* Graphics.FLIP_VERTICAL - 指定されたイメージ領域を水平中央辺りで反転してコピーします。
* Graphics.FLIP_HORIZONTAL - 指定されたイメージ領域を水平中央辺りで反転した後、時計回りに90度回転してコピーします。
* Graphics.FLIP_ROTATE_RIGHT_HORIZONTAL - 指定されたイメージ領域を水平中央辺りで反転した後、時計回りに180度回転してコピーします。
* Graphics.FLIP_ROTATE_RIGHT_VERTICAL - 指定されたイメージ領域を水平中央辺りで反転した後、時計回りに270度回転してコピーします。

ページ移動

  • 前のページ
  • 次のページ