薄まる自分
PCやら育児やら、徒然についてメモります。
<< March 2024 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
 
デル株式会社 ブログパーツ
RECOMMEND
RECENT COMMENT
RECENT TRACKBACK
カウンタ
ブログパーツUL5
JUGEM PLUS
MOBILE
qrcode
PROFILE
PR
無料ブログ作成サービス JUGEM
 
スポンサーサイト

一定期間更新がないため広告を表示しています

- | | - | - | - | - |
Java7のAutoCloseableで、例外時にclose()されるタイミング
かなり今更ながらなネタなのだが、Java7 で導入された AutoCloseable インタフェース。

try 〜 catch 句で使うことで、リソースの自動クローズをしてくれる。 これが入るまでは、try catch の後、例外処理のときにもリソースをクローズするために、finally で close() をするのが、コーディングのパターンだった。

AutoCloseable インタフェースによりclose()を実装すれば、例外が発生してもうまくclose()してくれるはず。

若干、気になって、close() が呼ばれるタイミングをチェックしてみると…、 意外なことに?、下記のように、finally() で呼ばれるのではなく、catch() の前でclose()が呼ばれている。

finally() でclose()されるイメージで使っていると混乱するかも、特にtryの中で、さらにtry catch resources をネスティングしている場合など。

まあ、あまり注意したくないところではあるけど、知識として覚えておこう。
djUnitをどうしても使わざるを得ない人のために

djUnitは最近更新されていないし、新しいeclipse(luna)ではどうも使えないようだ。 Java7,8の対応も明言されていないということで、利用を推奨できないが、過去の経緯などから使わざるを得ない人もいるかもしれない。

そういう人のためのノウハウを書いてみた。


Java7でdjUnitを使うには

Qiita に記事があるように、jvm のオプションを設定する。


export JAVA_OPTS="-XX:-UseSplitVerifier"

AntのdjunitタスクでJava7でdjUnitを実行するには

Java7で利用するときと同じだが、djunitタスクのボディ部分に下記の設定を追加する。


<jvmarg value="-XX:-UseSplitVerifier" />

Java8 で djUnitをAntタスクで使うには

Java7で設定した、UseSplitVerifierがJava8 では使えなくなっている。
djunit タスクの属性に
usenoverify="true" 

を指定する。これにより結果がどのような影響を受けるかは確認できていないが、動いているように見えるレベルでは動作する。
 

Java8環境でeclipse の中で djUnit を使うには

eclipse-luna(4.4) では  djUnit プラグインは動作しない。インストールしてもメニューに出てこない。
eclipse-kepler(4.3) では djUnit プラグインが使えるが、eclipse-keplerでは Java7までしか使えない。
 
ただし、eclipse-kepler については、Java8の対応パッチがリリースされている。
kepler の Eclipse Marketplace で "Java8" で検索し、"Java 8 Support for Eclipse Kpler SR2" を入れれば、Java8 で djUnitプラグインを使うことができる。 

現状、eclipse を用いた環境で、Java8 を使い、さらにdjUnitを使いたいと思うならば、eclipse-kepler が最新の eclipse になる。
eclipse の GUI からは利用できないが、Ant からは利用できるので、eclipse-luna を使いGUIメニューは利用しないとの使い方もあるだろう。

djUnit では、主にVirtual Mock Object 機能とカバレッジ測定機能がある、後者については、EclEmma なども eclipse-luna で利用可能なので、そちらを使う手もあるだろう。Mock 機能については、mockito などを使えば、大部分が代用できるだろう。
いっそのこと、Groovy のテスティングフレームワークである Spock に移行してしまうのもよいかもしれない。
IntelliJ IDEA のショートカット一覧 勝手日本語訳作ってみた。
IDEといえば、ショートカットを使いこなしてなんぼですよね。

最近、JavaやGroovyなどのIDEとして注目を集めているIntelliJ の IDEA。
Eclipse の比べ、サクサク動くところや、空気をよく読んでくれるところが気に入っています。

Default Keymap というショートカット一覧は英語のものがありまして、読んでみると知らなかった機能などがあって大変勉強になります。

そこで、もう一段、敷居を下げるために日本語訳をしてみました。いまいちなところも多々あると思いますが、ご容赦ください。

IDEA ショートカットデフォルトキーマップ勝手日本語版

※Dropbox上で表示すると、私の環境ではChromeでレイアウトが崩れましたが、ダウンロードしたファイルは大丈夫でした。
※間違い等はご指摘いただけると幸いです。

IntelliJ IDEA のショートカット一覧 勝手日本語訳(OS X向け)もあるよ。

IntelliJ IDEA のショートカット一覧 勝手日本語訳(OS X向け)作ってみた。 #jbugj
 Macbook Air を買った記念に、前にWindows用に作ったIDEAのKeymapsのMac OS X版を作ったった。

いわゆるチートシートですかね。使えるように思えて、実はそんなに使った試しが無いのですが、まあいいのです。

Commandキーに適当に読み替えるだけだろうと高をくくって作業を開始したが、オリジナルのMac用のReferenceCardを見たら、"OS X"用と”OS X10.5+"の2つがあるじゃないですか。
面倒さが倍になったと思いながらなんとか完了しました。


オリジナルのkeymapsのまま文言を日本語にしただけではなく、キーの確認をしています。
私のデフォルトのMacOS X 10.8.2 で入力できないキーについては、一部赤字にしてあるものがあります。
誤訳とか誤植は、ご指摘いただけるとありがたいです。


ちなみに、上記文書の3ページ目に"MacOS X"用と"MacOS X10.5+"のどちらを選べばよいのか?と書いてあり、他のOS(WindowsやLinux)でもIDEA使っている人は"MacOS X"をおすすめすると書いてありますが、私はどちらをおすすめするかというと、"MacOS X"です。
自分が馴染んでいるというのもありますが、"MacOS X 10.5+"のバインドはどこにもそんなこと書いて有りませんが、実は"OS X"向けとは異なりEmacsユーザ向けのキーバインドが定義されています。Ctrl+N、P、F、Bはもちろんのこと、Ctrl+A、Ctrl+Eも効きます。Ctrl+Kまで使えてしまいます。後、Mark-setっぽい"Toggle Sticky Selection"を設定すれば、Emacsユーザでもそこそこ編集ができると思います。よって、Emacsユーザは"MacOS X 10.5+"を選んでもよいと思います。しかし、超便利な、選択範囲を徐々に広げていく Command+W が、"MacOS X 10.5+"では、Ctrl+↑↓にアサインされているのです。Emacs というなるべくキーボードから手を離さないでよいようにアサインされているものに対応しつつ、よく使いそうなキーバインドがカーソルキーを用いるものになっていたり、中途半端なのです。
というわけで、結局は、"MacOS X"バインドを味付けするのがよいのではないかなと思っています。

ちなみに、もう一つIDEAのバグだと思っているのですが、IDEDのキーマップは英語キーボードを基準にアサインされているようです。私は日本語キーボードで使っているので、キートップにある文字とショートカット入力時に認識されている文字が異なって困っています。
つまり、Command + "]" を入力したい場合、日本語キーボードでは"む"のキーを押しますが、それでは認識されず、英語キーボードで"]"がある"@"を Command +"@" として入力すると"]"として認識されるのです。これは困ったものなので直して欲しいですが、暫定的にはkeymapの再定義で対応できそうです。

って、ちなみにの後が長すぎましたね。
デル株式会社

(C) 2024 ブログ JUGEM Some Rights Reserved.