プログラム悪戦苦闘日記

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

2004-09-01から1ヶ月間の記事一覧

AspectJで時間を計測する

どのメソッドがどれくらいの時間が掛かっているかを測るには、アスペクトを用いるのがbestだと思う。 import java.util.*; public aspect TimeAspect { static final long freq_ = PerformanceCounter.queryPerformaceFrequesncy(); HashMap map_ = new Hash…

オレ流 ヨドバシ式ポイント考察

10%ポイント還元 = 10%引き なのだろうか?という疑問が前からあったので、 計算してみることにした。 n回目の買い物後に ポイントが溜まっているとする。 a円の買い物をして、pポイント還元されるとすると、 --- (1) となる。ただし、全てのnに対して(常に…

画像処理3 - 抜き色転送

通常抜き色転送は、抜き色はGraphic Contextに描画しないようにしますが、 Javaの場合、抜き色のalpha値を0にしてしまったほうが早い。 これを行うにはjava.awt.image.RGBImageFilterのサブクラスを作るのが、一般的らしい。 RGBImageFilterのサブクラスは、…

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

QueryPerformanceCounterがJNIで実装できたので計測をしてみた。 測定プログラムは後述。 CPU:Pentium3 1.2GHz + メモリ512MByte + WindowsXP Pro sleepの引数(msec)| 12 | 6 | 3 --------------------|-------|------|----- Thread#sleep | 12.40 | 6.42 | …

Windows update - 先日のGDI+の不具合

は、バッファーオーバーランだそうで。たしかにこの理由なら緊急度「高」ですね。 でもそうなら、アナウンスして欲しいんだけど、って普通の人には「バッファーオーバーラン」と 書かれていても分からないか。

いまさら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()現在の時間をミリ秒で返します。 戻り値の時間単位はミリ秒ですが、値の…

MS セキュリティパッチ

JPEG開くとハッカーにデータを盗まれるって、どういうことよ。 GDI+の問題らしいですが‥。

描画処理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(…

オンライン本

以前は、ブログやHPにある個人の日記なんて誰が読むんだ、と思っていたのだが、 自分は結構見ていたりする。本なんて全然読まないのに。 なぜだろうか、と考えてみたら、おそらくインターネット上にあるためにお手軽に読めるから、 仕事の合間、ではなくてち…

フェード処理

単純に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…

.NET2005 beta1 ようやく入手

C#

9月3日、10月号のdotNETマガジンの付録に.NET2005 beta1 がついてくるので、 昼に本屋へ行ってみた。 この雑誌、今まで一度も買ったことがなかったので、 その辺の本屋でも売っているだろうと思っていたら、甘かった。ないのである。 Cマガジンとか結構まに…

AspectJをやってみた2

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