絵を中心に表示させたい時など、
int x = (nWidth – img.getWidth() ) / 2;
みたいなことをよくするが、人のコードを見ていて
int x = nWidth – img.getWidth() >> 1;
とかやってて、ビットシフトいいかもと思いました。優先順位が + – より低いのがミソ。使うかどうかは好み次第。
絵を中心に表示させたい時など、
int x = (nWidth – img.getWidth() ) / 2;
みたいなことをよくするが、人のコードを見ていて
int x = nWidth – img.getWidth() >> 1;
とかやってて、ビットシフトいいかもと思いました。優先順位が + – より低いのがミソ。使うかどうかは好み次第。
問題:
バックライトがオフになり暗くなる。
対策:
com.nttdocomo.ui.PhoneSystem.setAttribute(0, 1);
を定期的に呼んでやればよい。(第一引数の 0 は DEV_BACKLIGHT, 1 は on)
– DataOutputStream.write(byte[] str, int offset, int len) は offset + len が str.length() を超えると ConnectionException が投げられる。
try {
DataOutputStream out = Connector
.openDataOutputStream(“scratchpad:///0;pos=0”);
out.write(“Something”.getBytes(), 1, 20); // OK
out.write(“foo”.getBytes(),0,4); // Error!!
out.close();
} catch (IOException e) {
e.printStackTrace();
}
autorun.inf というファイルを作って以下のように記述する。
[autorun]
OPEN=foo.exe
これで foo.exe を自動的に起動する。
参考:
CD に保存したホームページの自動起動
– AppClass = Foo
IApplication を継承している実行クラス。必須。
– PackageURL = foo.jar
アプリを格納している jar ファイル。相対ディレクトリ指定、URL 表記ともに可能。必須。
– AppSize = 12345
PackageURL で指定したファイルのサイズをバイト単位で正確に指定する。必須。
– SPsize = 102400
確保する必要のあるスクラッチパッド領域をバイト単位で指定する。必須。
– LastModified = Mon, 07 Nov 2005 16:00:00
更新時刻。
WWW, DD MMM YYYY HH:mm:ss
という表記をとる。503i 系対応にするときは月に Apr を指定してはならない。必須。
i アプリのバージョンアップ時にチェックされる。
– UseNetwork = http
i アプリ上で Web アクセスする場合に必須
– UseBrowser = launch
i アプリ上でブラウザを立ち上げる場合に必須
– AppVer = X.X
バージョン指定。必須?
– AppTrace = On
指定すると携帯端末でデバッグ出力(トレース情報, ダウンロード元 URL 等)を表示するようになる。
トレース表示の仕方は機種によって全く異なるため、<http://www.saturn.dti.ne.jp/~npaka/ibook2/izon.html> の各バージョンについての「待ち受けボタン・トレースの表示」を参照。
最低限必要なのは次の表記:
<!–
– 参照用の id(“fooId”) と jam ファイル(“foo.jam”)を結びつける。
–>
<object declare id=”fooId”
data=”foo.jam”
type=”application/x-jam”>
</object>
<!–
– ダウンロードのためのリンク。
– ijam に指定した ID(“fooId”) に関連づけられているアプリケーションをダウンロードする。
– i アプリ対応していない端末からアクセスした場合は href に指定した error.html にリンクする。
–>
<a ijam=”#fooId” href=”error.html”>Download</a>
– ビルド時とビルド後でライブラリ周りで非互換な部分があるため微妙に面倒なことになっている。
ビルド/実行の流れは次の通り
– i アプリライブラリの設
少し前にはまった。DoJa エミュレータのデフォルトではライブラリが不足しているので呼び出そうとすると RuntimeError になる。エミュレータ上で正しく動作させるには micro3d_v2_32.dll というファイルを DoJa の bin フォルダにいれてやる必要がある。
<http://www.mascotcapsule.com/toolkit/docomo/>
– micro3d_v2_32.dll の配布元。
– 追記 2005-12-19: ダウンロード場所がわかりにくい気がするので捕捉。現在、
DoJa 2.5oe/3.0/3.5 の Tools -> DLL micro3d_v32.dll でダウンロード可能。
Eclipse + iαppliTool for DoJa-X.X を使って開発しているのだが、
Eclipse の DoJa プラグインを使わずに新規プロジェクトを作るときに何が必要なのか毎度忘れるのでメモ。(DoJa 4.0 で確認)
注: prefix の + はディレクトリ, – はファイルをあらわす事にする。
+projectname – プロジェクト名と同じディレクトリ名
-projectname – プロジェクト名と同名のファイル(拡張子なし)
-projectname.properties – プロジェクト名と同名のファイル(拡張子 .properties)。 なくても動作はするが、これがないとファイル配置など設定が保存されない。
+src – ソースフォルダ(*.java)
+bin
-projectname.jam – プロジェクト名.jam
+res – リソースディレクトリ(resource:///filepath でのアクセス用)
Eclipse で作業する時は、リリースディレクトリを bin ではなく classes 等にすると干渉しない。また Eclipse で必要な設定は次の通り。
– リリースディレクトリを bin でなく classes にする。
任意。DoJa との干渉を防ぐため
– JDK のコンパイラ互換性関係のオプションをバージョン 1.1 に近づける。
任意。DoJa の動作する J2ME は JDK1.1 相当のため, Eclipse で通るものが DoJa のビルドでエラーになってしまったりする。そのためできるだけバージョンを下げておくのが望ましい。
– Java のビルドパスに DoJa のライブラリ(classes.zip, doja_classes.zip)を追加しておく。
必須。DoJa をインストールすると DoJa のインストールディレクトリの /lib 以下にあるもの。
lib/profile の中のものは旧バージョンのライブラリ。
– 処理を場合に応じて自由に変えられる。スマートになった Visitor パターンみたいなものかなぁ..
イテレーションを Iterator パターンなしでできる(内部で Iterator パターンを使って外には each メソッドを公開する等)。
class Iterator
@values
@nIndex
def initialize(*values)
@values = values.dup
@nIndex = 0
end
def each
yield(getNext) while hasNext
end
def hasNext
return @nIndex < @values.size
end
private :hasNext
def getNext
throw RangeError.new(“no element for next”) if !hasNext
res = @values[@nIndex]
@nIndex += 1
return res
end
private :getNext
end
iterator = Iterator.new(0,1,2,3,4)
iterator.each{ |i|
print( i * 2, “, ” )
}
# result:
# 0, 2, 4, 6, 8,
#
この例はそのまま [0,1,2,3,4].each{|i| … } とした時の動作と同じだけど、マスターデータが膨大になりうる時などは自分で yield するメソッドを実装するとコスト削減になってよい。
参考:
<http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%E1%A5%BD%A5%C3%A5
%C9%B8%C6%A4%D3%BD%D0%A4%B7#yield>