プログラム悪戦苦闘日記

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

スレッドデザインパターン - Single Threaded Execution

Lockインターフェイスを使って、1章の「Single Threaded Execution」を書いてみた。 Main.java package dp.chap01; public class Main { public static void main(String[] args) throws Exception { System.out.println("Testing Gate, hit CTRL+C to exit…

Tiger Concurrency Utilities

まずは同期オブジェクトから。 Lockインターフェイス - ミューテックス 1.sychronizedの違い synchronizedはオブジェクト全体にロックがかかるが、LockはLockオブジェクトにロックがかかる。 2.ロックのしかた ・普通にロックするときは、Lock#lock()を呼ぶ…

JDK1.5.0のスレッドについてメモ

いずれちゃんとまとめるとして、とりあえず列挙しておく。 1.同期オブジェクト ・Lock (ミューテックス) いわゆるミューテックス。Javaはデストラクタがないので、Lock#unlock()をfinally内に書くのはお約束。 WindowsプログラムではCriticalSectionと呼ば…

boost 1.32.0をVC7.0にインストールする

C++

1.実体をダウンロードする 本家 http://www.boost.org の download から boost_1_32.zip をダウンロード 2.コンパイル用にjamをダウンロードする 先と同じ場所からWin用のjam boost-jam-3.1.10-1-ntx86.zip をダウンロード 3.boost_1_32.zipを解凍 以下解凍…

RUnitの使い方

↓あとでまとめておくこと > 自分 手順 1. require 'test/unit' をする 2. テストクラスは、Test::Unit::TestCaseから派生させる 3. あとはテストメソッドを書くだけ 注意点 テストクラスにsetup, teardownだけしか定義しないとエラーになる とりあえず asser…

数式てすと

正準方程式(Hamlton方程式) ここで、はそれぞれ一般化運動量、一般化座標で時間:tの関数 。 とは、 という関係がある。 はHamltonianで、通常は と書ける。 は運動エネルギー、はポテンシャルエネルギーで、。

数値積分

C++

数値積分というとRunge-Kutterだったが、全く新しい方法「Symplectic数値積分法」というのがあるらしい Symplectic数値積分法の解説 http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/ やばいなぁ。計算方法忘れてるよ。 boost::uBLASの使い方 http://w…

RUnitの使い方

version1.8から送付ライブラリに組み込まれたそうで、どっかからダウンロードしなくても使えるようになったそうです。で、いつものように参考URLを。 本家マニュアルのページ http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Test%3A%3AUnit Ruby…

オブジェクト指向の原則集(OOD)のはなし

いつかはまとめたいと思ってたもの。論文を発見したので載せておきます。 OODの日本語の説明 http://homepage3.nifty.com/masarl/article/oo-principles.html OODの論文(一次ソース?) http://www.objectmentor.com/publications/Principles%20and%20Pattern…

Win32OLEを使う2

るびま(http://jp.rubyist.net/magazine/)の第2回(http://jp.rubyist.net/magazine/?0004-Win32OLE)はExcelの使い方だ。実際の使い方やよく使うオブジェクトはこのページを見るとして…。このページの補足を書いておく。 Excelのオブジェクトモデルについて…

RubyからWin32OLEを操作する1

RubyからWin32OLWが操作できるのは知っていたが、あまり情報がない。 なにげなくWebで検索していたら、Ruby Magazine(るびま)に連載があった。第1回 http://jp.rubyist.net/magazine/?0003-Win32OLE 第2回 http://jp.rubyist.net/magazine/?0004-Win32OLE…

オブジェクト倶楽部 メールマガジンの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マガジンとか結構まに…