– MediaImage.use() で利用可能にしたあと MediaImage.getImage() とする。
dispose(), unuse() は呼び出す必要はない模様。
投稿者: editor
非互換, 機種による制限のある機能
– 利用するメソッドが本当に全機種対応しているかどうか各機種オプションAPI・拡張API実装状況を見たほういい。
対応していない場合は利用を避けるか、
System.getProperty(“microedition.platform”).indexOf(“N504”) >= 0
とかして端末によって処理を分けること。
– 以下公式の iアプリ作成上の注意点より端末固有の制限。
– N504i(S) では Graphics.drawString() は半角 33 文字までしか描画されない。
– N504i(S) では ScratchPad クローズ処理は
– P504i(S) では扱う画像の一辺の長さは 256 ピクセルまで。
– P504iS では同様に 512 まで。
– F504i では Connector.open() に渡す URL は 256 バイトまで。
– F504iS では同様にクエリ以外が 255 バイトまで、クエリ部が 512 バイトまで。
– F504i と SO504i ではキーを押したまま(key press イベント発生中)システムのポップアップメッセージ(iモード接続中など)が表示されると Canvas.getKeypadState() の結果が残る。回避するために、ポップアップが立ち上がる処理のトリガはキーリリースにする。
– D504i では(Canvas.processEvent(), Canvas.getKeypadState() 等を使った低レベルキーイベント処理で)一部のボタン同士の同時押しを受け付けられない。(1,2,3), (4,5,6), (7,8,9), (*,0,#) のそれぞれは同時押しができない(ex. 1,2 はだめ)。
– SO504i では MediaImage オブジェクトは use() で有効になることができるのは 255 個まで。
– SO504i では時刻情報処理で 1 時間につき約 3.5 秒の割合で遅れる。正確には経過時刻に対し 0.09756% 遅れる。
– D2101V ではサマータイムが有効になっているため 3月の最終日曜の 10:00 から 10 月最終日曜の 11:00 まで +1:00 となる(10:00 が 11:00 になって始まり、11:00 が 10:00 になって終わる)。
画像処理 paint の置き換え
paint(Graphics g){ /* do something */ }
は、次のものに置き換えられる。
Graphics g = getGraphics(); // Canvas.getGraphics() メソッド
g.lock();
// do something
g.unlock(true);
Jarg, 7zip による Jar ファイルサイズ削減
– ここ <http://www.moreread.net/mario/Any/appli/memo.html?id=1> のソースを改変して一つのファイルで実行するようにしたもの。空白を含むパスに微妙に対応してある。DOJA エミュレータと同時に実行するとロックのために書き換えに失敗するのが難点。
– JavaBlender <http://homepage.mac.com/t.sekiguchi/javablender/index-j.html> を先に実行したらいいらしい。(Java Blender はクラス融合/パッケージ構造の平坦化などでプログラム自体のサイズ最適化を行う)
@echo off
REM ———————————————————-
REM = 使い方:
REM = optimize.bat “C:\path\to\jars\app.jar”
REM = 指定した jar のサイズを削減し、同じディレクトリにある同名
REM = の .jam のサイズ指定を書き換える。ドラッグ&ドロップ実行に
REM = 対応
REM ———————————————————-
REM = 下準備:
REM = ●jarg.jar <http://jarg.sourceforge.net/index.ja>を
REM = ダウンロードして、適当なところに配置。
REM = ●7zip <http://www.7-zip.org/> をインストールして
REM = 7za.exe にパスを通しておく。
REM ———————————————————-
REM = 設定
REM ———————————————————-
REM = クラスパス(DOJA 付属の zip 2つ)
set _CP=D:\Progra~1\Java\iDKDoJa4.0\lib\classes.zip;D:\Progra~1\Java\iDKDoJa4.0\lib\doja_classes.zip
REM = preverify.exe のパス(DOJA に付属)
set _PREVERIFY=D:\Program Files\Java\iDKDoJa4.0\bin\preverify.exe
REM = jarg.jar のパス
set _JARG=D:\Program Files\Java\tool\jarg\jarg.jar
REM ———————————————————–
if %1 == “” goto MES
set TARGET_F=%~f1
set TARGET_P=%~p1
set TARGET_SP=%~sp1
set TARGET_N=%~n1
mkdir %TARGET_P%bin
cd %TARGET_P%bin
mkdir temp
java -jar “%_JARG%” -nobco -j2me-prev “%_PREVERIFY%” -j2me-cp “%_CP%” “%TARGET_F%”
7za x %TARGET_SP%%TARGET_N%_s.jar -otemp -w -r -y > nul
REM del .\%TARGET_N%_s.jardel “%TARGET_SP%%TARGET_N%_s.jar”
REM ! “%TARGET_F%”
cd temp
7za a -tzip “%TARGET_F%” * -mx=9 -mpass=4 -r -y > nul
cd ..
rd temp /s /qtype %TARGET_SP%%TARGET_N%.jam | find /v “AppSize” > %TARGET_SP%%TARGET_N%.tmp
type %TARGET_SP%%TARGET_N%.tmp > %TARGET_SP%%TARGET_N%.jam
echo AppSize = %~z1 >> %TARGET_SP%%TARGET_N%.jam
del %TARGET_SP%%TARGET_N%.tmp
cd %TARGET_P%
rd bin /s /q
exit /b
MES
echo optimize.bat [App.jar]
ERR
pause
JavaScript から画像の存在有無を調べる
– Image オブジェクトを使うとスマートにできる。Firefox1.0.4, IE6 で確認。
function existImage(sImageUrl){
var img = new Image();
img.src = sImageUrl;
return img.height > 0; // 読み込みに失敗すれば 0 になる。
}
if(existImage(“http://www.google.co.jp/intl/ja_jp/images/logo.gif”)){
alert(“存在します”);
}else{
alert(“存在しません”);
}
追記(2009-08-18):
メモリークラフトさんの記事より、この方法はIE7以降では動作しないようです。代替実装はリンク先を参照してください。
ファイル/フォルダの共有でのアクセス制限
– 2重の制限を行っているため、単に共有許可とするだけでは外部からのアクセスは蹴られてしまう。
ファイルプロパティ -> セキュリティタブで Everyone に許可を与えれば認証に関係なく無条件でアクセスできるようになる(ただし拒否優先)。
未確認だが認証をしない匿名ユーザに割り当てられる Guest に対しての設定でもいいはず。
また, Authenticated Users に対しての許可なら適切に認証を経由したユーザ全員になるのでセキュリティ上よい。
一部のユーザだけなら、外部公開用のアカウントをつくってそのユーザで入ってもらうようにするといいかな。
他の PC にメッセージダイアログを表示させる
net send 192.168.1.20 あいうえお
とか、XP で
net send /domain:192.168.1.20 あいうえお
とかする。マシン名でもよい。
net send * あいうえお
で同じグループの全てのマシンに対して送信する。
RPC やら(サービスの)メッセンジャーサービスを切っていたり、ポートを閉じている場合は応答しない。
<http://support.microsoft.com/default.aspx?scid=kb;ja;330904>
– Microsoft サポート – インターネット広告を含む Messenger サービス ウィンドウが表示される
バッチファイルに引数で渡されたファイルのパスを変換/抽出する
– 引数(フルパス)は %1 … %n に格納される。
> echo %1
C:\WINDOWS\system32\mspaint.exe
– 部分だけ取り出すには %~n1 のように %~ で始め、次に取り出す部位の略字, 最後に引数の番号を指定する。
ファイル名: n
> echo %~n1
mspaint.exe
ドライブ名: d
> ecoh %~d1
C:
ドライブ、ファイル名を含まないパス: p
> echo %~p1
\WINDOWS\system32\
フルパス: f
> echo %~f1
C:\WINDOWS\system32\mspaint.exe
bat にフルパスをしたかファイル名だけを指定したかに問わず、同等の結果を返す。
上記の結果を短いファイル名で取得: s を追加
> echo %~sp1
\PROGRA~1\foo\
– 参照:
cmd.exe のコマンドヘルプ
for /?
call /?
ブラウザでページを操作
– ブラウザのアドレスバーを使った遊び。日本語テキストたっぷりなページでを開いた後、次のコードをアドレスバーにいれて実行すると文章を書き換える。
javascript:varelm=document.getElementsByTagName(“body”)[0];elm.innerHTML=elm.innerHTML.replace(newRegExp(“。”,”g”),”にゃ。”);
堅苦しい言葉がトロ語に。replace 使うと Firefox だと化けるなぁ.. split(“from”).join(“to”); としたほうがいいかも。
document.getElementsByTagName(“body”)[0].innerHTML;
これがキモ。DOM メソッドを使って Body タグの全文章を取得/操作する。
追記[2005-06-22]:
document.getElementsByTagName(“body”)[0]
は、
document.body
でも参照可能らしい。某所にあったコードのほうが汎用的で簡素みたい。
JavaScript:document.body.innerHTML=document.body.innerHTML.split(‘。’).join(‘にゃ。’);focus();
focus() しないと、実行後が別ページ扱いになって相対パスの外部ファイル(画像, js, css)の読み込みに失敗して見ためが崩れるみたい。
ファイルアップロード "multipart/form-data" 処理のときに正しくパラメータを受け取るには
– form タグで ENCTYPE=”multipart/form-data” にすると ServletRequest.getParameter(Sting) 系ではパラメータを解釈できず全く値が渡って来なくなるため、Jakarta Commons FileUpload の org.apache.commons.fileupload.DiskFileUpload.parseRequest(…) 等を使うとよい。
// 適当に書いたコードなのでエラーあるかも。
DiskFileUpload o = new DiskFileUpload();
o.setSizeMax(-1);
o.setSizeThreshold(1024);
o.setRepositoryPath(“/tmp”);
o.setHeaderEncoding(“Windows-31J”);
List list = o.parseRequest(request); // FileItem のリスト
for(Iterator it = list.iterator(); it.hasNext();){
FileItem param = (FileItem)it.next();
if(!param.isFormField())
continue();
out.println(param.getFieldName() + “: ” + param.getString());
}
<http://www.jajakarta.org/commons/fileupload-1.0/ja/withoutPrimary/org/apache/commons/fileupload/DiskFileUpload.html#parseRequest(javax.servlet.http.HttpServletRequest,%20int,%20long,%20java.lang.String)>
– jajakarta.org: FileUpload API 1.0 (Ja)
<http://jakarta.apache.org/commons/fileupload/apidocs/org/apache/commons/fileupload/DiskFileUpload.html>
– Jakarta 公式: FileUpload API (current ver.)