2012/12/31

mac な eclipse で jdk の中にある jar を classpath に追加する

環境 : Mac OS X Mountain Lion, Eclipse Juno (4.2.1)

Eclipse で jdk の中に入ってる jar を classpath に追加しようとして

Project 右クリック -> Propaties -> java build path -> Add External JARs

をしたのは良いけれど、選択方法がFinderな感じで
  /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/jfxrt.jar
とかを指定したいのに
  /Library/Java/JavaVirtualMachines
の *.jdk とかしか指定できない。

jdk を右クリックしてもQuickLookしかできなくてどーしようもない感じ。

なので プロジェクトの下の .classpath を直接編集して
    <classpathentry kind="lib" path="/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/jfxrt.jar"/>
とか追加したら大丈夫だった。

.classpathの例はこんな感じ。

2012/12/28

Mac な jdk 7u10 で javafx なアプリをコマンドラインからコンパイルする

javafx を使っているアプリを javac なりでコンパイルしたかったのだけれど、javac *.java だと怒られた。

ググるとjavafxc なるコマンドがあるらしいけれど not found。
javafx SDK を入れたらどうにかなるかな、と思ったけれど javafx SDK は jdk7 から標準で付いてくるみたい。
jdk7u10入れてるけれど javafxc が無い様子なので困っていたけれど
JavaFX 2.0 Developer Preview SDK for Mac OS X - Onto JavaFX
によるとjavafxなライブラリはjarになってる様子。

2012/12/28 時点での最新 のjdk7 は u10 なので .zshrc に

export CLASSPATH= ${CLASSPATH}:/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jd/Contents/Home/jre/lib/jfxrt.jar

を書いたら javac からの java で動いた。
一応環境は jdk 7u10 な java 1.7.0_10 で Mac OS X Mountain Lion さん。

動かしてみたのはこれ。
いろふさん絵描き歌 by JavaFX - JavaFX in the Box
いろふさんとは一体何物なのだろうかとか思いつつ。

ちなみに javafx アドベントカレンダーあるみたいです。
JavaFX Advent Calendar 2012 : ATND
ごんごさんが Musclide なる muscle base slideshow system を書いてました。
javafxな参考のために Musclide.java と Ring.java をちょっと読んだけれどコメントが秀逸感。

追記 : 
jdkのバージョンが決め打ちなのはなんかアレなので
export CLASSPATH=${CLASSPATH}:`/usr/libexec/java_home`/jre/lib/jfxrt.jar
くらいに。とはいっても /usr/libexec/java_home が無い環境だとまた微妙そうだけれど……

2012/12/17

kvm の qcow2 なディスクイメージを拡張する

kvm 専用なのかは分からないけれど、仮想ディスクのイメージに qcow2 形式というものがある様子。
仮想ディスクの容量を拡張したい場合は一旦 raw 形式に変換してから拡張して戻すとOKらしい。
これが最善かは分からないけれど上手くいったので。
コマンドはこんな感じ。

一旦 raw に変更
% qemu-img convert -f qcow2 origin.img -O raw raw.img
サイズ拡張
% qemu-img resize raw.img +3G
qcow2に戻す
% qemu-img convert -f raw raw.img -O qcow2 resized.img

-f が入力形式指定で -O が出力形式指定らしい。

2012/12/13

zsh で cd を誤爆した時だけ pushd する

zsh は
setopt auto_pushd
としておくと、cd するたびにディレクトリスタックにディレクトリが積まれるので、"cd" と打って誤爆しても cd - で前のディレクトリに戻れるのでたまに使ってました。

けれど細かにcdする場合はディレクトリスタックに大量のディレクトリが積まれて分かりにくいのと、pushd/popd がほとんと使いものにならない状態だったり。

auto_pushd はあまり必要ないけれど、cd を誤爆った時のみリカバリできないかなー、とか思っていたので、試しに簡単なfunction書いてみたら割といけそうな感じに。

コードは以下。コードというか .zshrc に書く設定というか。

コードといっても cd に引数が無ければ pushd を呼んで引数があれば cd を呼ぶだけ。
これで上手くいくんじゃないかなー、とか思う。
実際 auto_pushd と比較した使い心地はこれから分かるであろうので謎。
cd のエラーはちゃんと吐くけれど微妙にメッセージが違ってたり。ちょっと違和感。

一応bashでも動いてる様子。というか使っているのがほとんど無いので基本どこでも動く?