paint(Graphics g){ /* do something */ }
は、次のものに置き換えられる。
Graphics g = getGraphics(); // Canvas.getGraphics() メソッド
g.lock();
// do something
g.unlock(true);
paint(Graphics g){ /* do something */ }
は、次のものに置き換えられる。
Graphics g = getGraphics(); // Canvas.getGraphics() メソッド
g.lock();
// do something
g.unlock(true);
– ここ <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
– 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 に対しての許可なら適切に認証を経由したユーザ全員になるのでセキュリティ上よい。
一部のユーザだけなら、外部公開用のアカウントをつくってそのユーザで入ってもらうようにするといいかな。
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)の読み込みに失敗して見ためが崩れるみたい。
– 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.)
– ulimit -s で得られる、スタックの限界サイズを超えた場合、最初の代入を行った時点で Segumentation Fault (core dumped) になる。
例えば、
$ ulimit -s
65536
の時、次のようなコードで発生する。
/* オプティマイズされると処理がなくなるため、
* gcc -O0 を付けてコンパイルすること。
*/
int main(int argc, char* argv[]){
char ac[64 * 1024 * 1024];
ac[0] = ‘\0’; // ここで発生
return 0;
}
対策は、
ulimit -s [limit]
で十分なスタックサイズを確保することを許可すればよい。
– exモードのコマンドを ~/.exrc に書いておけばいいとのこと。環境変数 EXINIT に同じ内容を設定してもよい(が, この場合 .exrc が無視される)。
set number
set showmatch
set autoindent
set tabstop=4
set expandtab