Java

tar.gz から .deb をつくって Ubuntu に Oracle Java をインストール

Oracle Java の Linux 向け公式インストーラーは RPM と tarball との二択。 alian というパッケージ変換ツールを使うと RPM を DEB に変えられるというので Ubuntu で試してみたところ、インストール後のスクリプトで alternatives がないとエラーが(とい…

AES暗号ユーティリティ

AES 暗号をお手軽に使えるよう InputStream/OutputStream にかぶせて使うアダプター Stream をつくってみた。 暗号化アダプター 暗号化したいデータを格納した InputStream is があるとして、これに 16 バイト(あるいは 24、もしくは 32 バイト)の鍵データ…

一般的なInputStreamからChannelを生成する

FileInputStream には #getChannel() があるけれど、一般的な InputStream を Channel にしたいときはこうする。: Channel ch = java.nio.channels.Channels#newChannle(InputStream);

StringをInputStreamに変換する

InputStream を受け取る API に、文字列から生成した InputStream を渡したいことがある。 このために StringBufferInputStream があったのだけれど deprecated であり、 StringReader を使うよう推奨されていて困る、ことがある。 自前で String から Input…

半開区間の探索

連続した半開区間があるとき、与えられた整数がどの半開区間に属するかを知りたい、なんて応用があって。たとえば [0,30), [30, 50), [50, 80), [80, 100) とのような半開区間列があったとき 13 は [0, 30) に入るし、 50 は [50, 80) に入る。 この探索を J…

配列の分割

Java の配列を、一定の長さでちぎって分割したい …って、そういう応用って結構ありそうな気がするんだけど、ない?ということでざっと書いてみた。オブジェクトの配列ならジェネリクスで全部まるっと書けるんだけれど、組み込み型の int や long、 boolean …

ラッチオブジェクトによる、一回だけ呼び出し

Heavy_WritableCheck() が重いため update() を呼びだす UI スレッドが固まるという問題が報告された。幸い isWritable() はワーカースレッドから呼ばれるので、そちらに Heavy_WritableCheck() の呼び出しを移そうということになった。なんてことがあったり…

この数値より小さいことをテストする

パフォーマンス調査用のテストケースで if (timeDiff > 200) fail(); のように書かれていたのを assertTrue(timeDiff どうせならテストの結果で expected: but was: と表示されるようにしたいなあ…ってんでつくってみました。 class LessThanEqualTo { priva…

例外を捕捉するテストの書き方

例外が送出されることを期待する Java のユニットテストの書き方は、テストメソッドの中に例外を捕捉するコードを書いて、期待する例外を捕捉したら return し、メソッドの末尾では fail を呼び出すような書き方をするのが常道のよう。 public void test001(…