サイエンスデザインノート

仕事やプログラミングやそうでないことwo覚え書くブログです

Scala で ReadWriteLock にローンパターンを使う

ReadWriteLock は確実にロックを解除しないといけません。 readWriteLock.writeLock().lock(); try { // 何かの処理 } finally { readWriteLock.writeLock().unlock(); } いけませんが、よく忘れます。unlock() がコピペの魔術かなにかで lock() になったま…

Eclipse と sbt を同時に使うとメモリを食い過ぎて我慢できなかったので

メモリを購入。Scala 開発に使ってるビルドツールの sbt はメモリがそこそこ必要になります。 Java も平行してコーディングするので Eclipse も同時に起動しているのですが、Eclipse 64bit Mac 版は、Eclipse の SWT がやたらめったらメモリーリークします。…

よく使うテスト用のモックは生成クラスを作ってしまう

要旨 ユニットテスト時に使うモックオブジェクトは、static ファクトリクラスを作ってしまう。 通常のモックオブジェクトの使い方(Mockito使用)。 public class SourceTreeModelTest { @Test public void setTreeSource() { TreeSource<String> source = mock(Tree</string>…

MIN_VALUE は最小値かもしれないし最小値ではないかもしれない

浮動小数点プリミティブ型のラッパークラスの MIN_VALUE 定数フィールド、 Float.MIN_VALUE や Double.MIN_VALUE は、その型が表現できる最小の有限値であって、最小値ではない。 整数型の極値定数 Java にてプリミティブ型は、そのラッパークラスの静的定数…

Javaで16進数の文字からアルファ(半透明)値を持ったColorを作成する。

アルファ値が128以上の16進数文字列(0x80000000以上)をデコードしようとすると、Integerの桁があふれてうまくデコードできないよ、という話。 Color.decode(String) による作成 基本のデコード方法。アルファ値無し。 @Test public void decodeHexString()…

SwingアプリケーションのMVC構造のクラス設計

Swingで、モデルとビューとコントローラを分離させたアプリケーションをどう書くか。MVCパターンクラス設計とは悩ましいもので、これぞという手順をいつまでも模索してしまいます。現在の開発の手順を、自分のベストプラクティスをまとめます。 なにから作り…