プログラム悪戦苦闘日記

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

2004-01-01から1年間の記事一覧

オブジェクト倶楽部 メールマガジンのINDEX

気づいたら2ヶ月以上も更新しなかった。結構欝だ‥。 メールマガジンで同一のトピックが複数回にまたがって連載されるとき、連続して記事が書かれるわけではないので、トピックを追っていくのが面倒臭い。そのため、勝手にINDEXを作ってしまった。 今のとこ…

なんとなくRubyでCGIをやってみた

じつはCGIは未経験なのだが、インターネットでRuby+CGIで検索かけてみると‥ ほとんど無いですね。そのため、Apacheのhttpd.confの設定にはハマりました。 このhttpd.confの設定は、Perlのサイトを見ながらやったのですが、なんか適当なことをかいてあるとこ…

MS Excelを操作する

ポイントは require 'win32ole' VBAの関数やプロパティは同名。ただし先頭は小文字にする require 'win32ole' excel = WIN32OLE.new('Excel.Application') excel.visible = false excel.displayAlerts = false book = excel.workbooks.add sheet = book.work…

指定したディレクトリにあるファイル名を変更する

ネタがなかったら、2週間も空いてしまった。しかたないのでRubyネタ。よく忘れるからメモしておく。 指定したディレクトリの拡張しを .htm → .html に変更するプログラム。 dir = Dir.new(gets.to_s.chomp) dir.each do |file_name| s = file_name.to_s nex…

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ってなんですか?)。アスペクトもコンパイルすると、クラスと同…

AspectJをやってみた

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

最近C#の話題が多く見かけるようになった

C#

.NET2005 beta1のダウンロードができるようになった影響もあるのだろうけど、C#がだいぶ使われだしたなぁ、という印象を受ける。そろそろ手をつける頃かもしれない。そのためにまずは、どんな本があるかを調べてみた。 プロフェッショナルC#上下巻 (\5,299 +…

JSFってなんだ?

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

あすたりすく

たす たす たすたす たすたす きーわーど せつめい... きょうちょうします ほげほげ コードのれい↓ #include <iostream> using namespace std; int main() { cout << "ほげほげ" << endl; return 0; }ちゅうい!*1! 引用引用引用 …… *1:注釈です</iostream>