JUNG開発環境構築

JUNG(Java Universal Network/Graph Framework)は、Javaでグラフ構造の処理や可視化なんかができるオープンソースのライブラリーだよ。早速使ってみるよ。今回はJUNGのサンプル・アプレットを動かすところまでやるよ。

ダウンロード

  1. TOPページの左のメニューからDownloadを選択
  2. Download All Jung Releases HereのHereをクリック
  3. sourceforgeの緑のボタン「Download Now!」をクリックしてダウンロード

そんなのいちいち教えられなくてもわかる?そうだね。
JUNG1.0系のときはCommons-CollectionsとかColtなどの依存してるライブラリーを別途集めなければいけなかったみたいだけど、JUNG2.0系では、上のダウンロード対象zipにすべて含まれているよ。

参考までに、jung2-2_0_1.zipの中身は以下の通り。色が薄いのはデモ、サンプルのjar。

  • collections-generic-4.01.jar
  • colt-1.2.0.jar
  • concurrent-1.3.4.jar
  • j3d-core-1.3.1.jar
  • jung-3d-2.0.1.jar
  • jung-3d-demos-2.0.1.jar
  • jung-algorithms-2.0.1.jar
  • jung-api-2.0.1.jar
  • jung-graph-impl-2.0.1.jar
  • jung-io-2.0.1.jar
  • jung-jai-2.0.1.jar
  • jung-jai-samples-2.0.1.jar
  • jung-samples-2.0.1.jar
  • jung-visualization-2.0.1.jar
  • stax-api-1.0.1.jar
  • vecmath-1.3.1.jar
  • wstx-asl-3.2.6.jar

eclipseにJUNG開発環境構築

eclipse(GALILEO以降)でJUNG開発環境を構築するよ。
まずはサンプルのアプレットを動かすプロジェクトJungSampleを作るよ。

jarの配置

先ほどダウンロードしたzipを展開して、eclipseインストール先のplugin以下に置いたよ。
ECLIPSE_HOME/plugins/jung2-2_0_1 以下に、上のjar群が並んでいる感じで。

eclipseにライブラリー追加

必要なjarを個別に選ぶ場合

Project→Property→Java Build PathからAdd External JARs.
ECLIPSE_HOME/plugins/jung2-2_0_1 以下から選ぶ。

まとめて追加する場合

Add Library…→User Library→User Libraries…→New
ユーザーライブラリー名 を jung2-2_0_1 (任意)としてOK. このまま続けてAdd JARs…
上のjar群を片っ端から全部選択(実はデモやサンプルはいらない)。これでユーザーライブラリーjung2-2_0_1 にjung2のjarが設定される。→OK
jung2-2_0_1 にチェックを入れる→Finish→OK

サンプルソースのダウンロード

ライブラリーを入手したのと同じダウンロード先から、jung2-2_0_1-sources.zipをダウンロードしてzipを解凍
さらにjung-samples-2.0.1-sources.jarをjarコマンドで展開。
jarコマンドはtarと違って展開先のフォルダ指定できないっぽいので、怖い人はあらかじめ作業用ディレクトリ作るとよい。
展開されたファイルをeclipseのプロジェクトに取り込む。以下ではプロジェクトのsrc以下にすべて移動して取り込ませた。

$ cd ~/Downloads/jung2-2_0_1-sources/
$ mkdir src
$ cd src
$ jar xvf ../jung-samples-2.0.1-sources.jar

$ ls
META-INF    datasets    edu    images    pom.xml
$ mv * ~/workspace/JungSample/src

サンプルの実行

Run→Run As→Java Applet
で実行してみたいサンプルのクラス名を選択してOKするとサンプルのアプレットが起動する。
以下の画像は「ShowLayouts – edu.uci.ics.jung.samples」を選んで実行してみた例

Gitコミット時にHudson自動ビルド

debianにhudsonをインストールしたのでgitと連携させるよ。とりあえずgitコミット時に自動ビルドすることにしたよ。

Hudson GIT pluginのインストール

  1. Hudsonの管理>>プラグインの管理>>利用可能タブを選択
  2. Hudson GIT pluginを探してチェックを入れる
    (利用可能タブに見つからない場合はインストール済みタブを確認してみる。)
  3. 最下部の「インストール」ボタンを押す
  4. インストールが完了したら「ジョブが実行でなければ再起動」ボタンを押してHudsonを再起動
  5. 再起動したらHudsonの管理>>プラグインの管理>>インストール済みタブでHudson GIT pluginが有効化されていることを確認

Gitコミット時にHudsonによる自動ビルドを行うための設定

Hudson側

ジョブの作成(設定)

■ ソースコード管理システム

Gitを選択し、URL of Repositoryを入力する。
ローカルファイルシステムの場合file://はつけなくてもOK.

■ ビルド・トリガ

Hudsonの管理>システムの設定>セキュリティを有効化 していない場合は設定不要
セキュリティを有効化している場合は次のようにして認証トークンを設定する

  1. 「リモートからビルド(例:スクリプトから)」を選択
  2. 認証トークン(任意の文字列)を入力 以下では仮にtokenstringとする

Gitレポジトリ側

hostnameはhudsonの稼動しているホスト名、
jobnameは上で作成したHudsonのジョブ名 とする。

Hudsonにてセキュリティを有効化していない場合

.git/hooks/post-commit に

wget -O /dev/null "http://hostname:8080/job/jobname/build?delay=3sec"

を追加して保存。
もともと書かれている:Nothngは実質何もしないので気になる人はコメントアウトするか削除すればよい。

delayパラメータ: コミット後、ビルドまでの待機時間。上の例はコミット後3秒待ってビルド開始する。

※post-commitを実行可能形式にするのを忘れないこと。

chmod +x post-commit
Hudsonにてセキュリティを有効化している場合

.git/hooks/post-commitに

wget "http://hostname:8080/job/jobname/build?delay=3sec&token=tokenstring&cause=gitcommit"

を追加して保存。

tokenパラメータ: Hudsonのジョブの設定で指定した認証トークン
causeパラメータ: ビルド要因。ここではgitのcommitをトリガとするのでそれがわかるような文字列 gitcommitとした。

gitコミット時にwgetの出力を表示したくない場合は次のように書く(失敗時にはechoでメッセージ表示)

wget -q -O /dev/null "http://hostname:8080/job/jobname/build?delay=3sec&token=tokenstring&cause=gitcommit" || echo "hudson build job failed."

自動ビルドの実行

以上の設定が終了したらgit commitを行うと自動的にジョブで作成したビルド処理が実行される。
うまく行かない場合は、ジョブのコンソール出力を確認してみる。

結局

wgetでビルドのURLを直接叩いてるだけ。
ということは、このコマンドをcrontabに書いて「定期実行は俺に任せろー!」\やめて!/
定期実行はHudson側のスケジュールで設定するといいよ。

CoRD 0.5.4(r607) ja 公開

CoRD の 新バージョンが出た。相変わらず日本語キーボードが認識されないので、とりあえず認識させる patch を含む binary を公開。

CoRD は以前 patch を書いた時は、結局 patch は送っていなかったが、今回は JIS keyboard support と日本語カタログのパッチを送っておいた。

日本語のキーマップは「英数」に 「英数/CapsLock」、「かな」に「カタカナ/ひらがな/ローマ字」を割当。また「_」でも「¥」が入力出来るようなマッピングにしています。

Download

read only bind mount

bind mount を -o ro を使って read only で mount しようとして、read only にできない。read only にするには、-o remount, ro と、remount 時に ro に設定すればよい。

bind mount を使えば、directory を 別の場所にマウントできる。例えば、以下は /tmp を /mnt にマウントしている

# mount –bind /tmp /mnt
# mount

/tmp on /mnt type none (rw,bind)

read only で mount しよとすると -o ro をつけて以下の様に mount すればよいはずだが、実際は 、mount の見た目は ro にもかかわらず、rw になってしまう。

# mount –bind -o ro /tmp/ /mnt/
# mount

/tmp on /mnt type none (ro,bind)
# touch  /mnt/au

read only にするために、remount を使う。remount 時に ro にするとなぜか read only にすることができる。

# mount -o remount,ro /mnt/
# touch  /mnt/au
touch: cannot touch `/mnt/au’: 読み込み専用ファイルシステムです

参考:

debian で cert の update 方法

cert を追加するには 「dpkg-reconfigure ca-certificates」

curl を使って https://twitter.com/ を取得したら certificate が信用ならんとエラーがでた

$ curl https://twitter.com/
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

どうも、認証機関が追加されてないようだ。以下のようにして、再構成して追加すればよい。

sudo dpkg-reconfigure ca-certificates

参考文献

コンテナ内でapacheの起動

コンテナ内でapacheを起動して、”libgcc_s.so.1 must be installed for pthread_cancel to work” というエラーが error.log に出ていたら、”LoadFile /lib/libgcc_s.so.1"を設定ファイルに追記すれば回避出来る。

chroot 環境やコンテナ内で、apacheを起動すると error.log に 以下の様なメッセージが出て動作しない。

“libgcc_s.so.1 must be installed for pthread_cancel to work”

この場合、apache.conf に以下の行を追加することで回避出来る。

LoadFile /lib/libgcc_s.so.1

参考: http://www.modsecurity.org/documentation/modsecurity-apache/1.9.3/html-multipage/06-special_features.html

CoRD r452(0.5.1 base) ja 公開

CoRD の 新バージョンが出た。相変わらず日本語キーボードが認識されないので、とりあえず binary だけ公開。

CoRD は以前 patch を書いた時点に比べ著しくコードベースが変化していた。preference 周りの GUI は全く異なっており、各国語のローカライズも消えていた。

日本語キーボード回りは相変わらず問題があるので、認識出来る様にした binary を公開。patch は後で投げる予定。

Download

LENS EXCHANGE リリース

LENS EXCHANGEiTunes Store でリリースされました!

LENS EXCHANGEIOTA DESIGNING 発案、企画、デザインし、UNICUS がプログラムを担当した iPhone アプリケーションです。

LENS EXCHANGE は、 特定のカメラ機種とレンズで撮影した写真と同一の構図を別の機種で再撮影したい時に、最適なレンズを計算します。また、アスペクト比などの誤差を視覚的に確認することが出来ます。

credit

main screen

main screen