プログラム悪戦苦闘日記

はてなダイアリーからの移行(遺物)

Java

いまさらJNI 2 - QueryPerformanceCounterを呼び寄せる

Windows APIでタイマー関連のAPIは、 SetTimer() マルチメディアタイマーのtimeげとTime() QueryPerformanceCounter() Direct Musicのなんか忘れた の4つだそうで、このうち、1と4は使えない/使うのが難しいので無視。 のこりはtimeGetTime()とQueryPerforma…

いまさらJNI - お約束のHello World

というわけで、JNIの作り方。 まずはJava側のインターフェイスでこんなのを用意する。 public class HelloNative { static { System.loadLibrary("HelloNative"); } public static native hello(); }で、javac でコンパイル。その後C/C++用ヘッダーファイル…

System.currentTimeMillis()の罠に堕(お)ちる

のんきに描画APIを調べている場合ではないようだ。 System.currentTimeMillis()はミリ秒をlong値で返すので、分解能は1msecだと思っていたら、 public static long currentTimeMillis()現在の時間をミリ秒で返します。 戻り値の時間単位はミリ秒ですが、値の…

描画処理2 - フェード

いろんなサイトの、おいしいところをまとめるシリーズ第2弾。 Javaでフェード処理をするのに一番手っ取り早い方法は、alpha値を操作すること。 しかし、pixel単位での操作は遅すぎ。それでAPIを調べてみると、 java.awt.image.RGBImageFilterのサブクラスを…

描画処理1 - 画像のロード

前日の続き。アレだけでは分からないので、具体的な手順もTips的に書いておく。 画像のロードの方法は4つあって java.awt.Toolkit javax.imageio (Image I/O) com.sun.image.codec.jpeg.JPEGImageDecoder Java Advanced Imaging API 3,4の方法は、標準JDK(…

フェード処理

単純にalpha値を変えて Image → Graphics2D に転送するときは、 java.awt.AlphaCompositeとGraphics2D#setComposit()すればいいみたい。 それ以外の細かい処理は、java.awt.image.PixelGrabber と java.awt.image.MemoryImageSource を使えばいいようだ。 月…

Appletからサーバーにあるテキストファイルを読む

画像ファイルは、 createImage(applet.getCodeBase() + "hoge.gif");で読み込むことが出来るので、テキストファイルも読み込むことが出来るはず。 java.io.Fileクラスを調べてみたら、URIを引数に取るコンストラクタがあるので、 new BufferedReader( new Fi…

AspectJをやってみた2

このメモ、3回くらいでネタ切れになると思ったけど、しばらくAspectJネタでつなげそうだ。 Javaは1クラス=1classファイルになるから、クラスの境界=バイナリ境界になっているんだよね(えっ COMってなんですか?)。アスペクトもコンパイルすると、クラスと同…

AspectJをやってみた

「やってみた」といっても実際やってみたのは1ヶ月ほど前なんですけどね。C Magazineで特集をやっていたので、そろそろ世間に認知されてきた頃かと重い、ちとやってみることにしました。 まずは本の入手から。あまぞんで検索してみたら、なんと日本語の本は…

JSFってなんだ?

Java Server Facesの略で、Webコントロールの配置をドラッグ&ドロップでできるようにするツールだそうです。ASP.NETの後追いですな。 しかしこのツールがEclipseに組み込めないなら、使い途ないですな。仮に無理して使っても、すばらしく遅いんでしょうね。J…