ぐるぐる Groovy。。

記事書いていませんでしたが、最近も Groovy くんにはだいぶお世話になっております。

テストデータ作成や小物ツールをつくるのに非常に便利な Groovy。

開発環境も Eclipse にプラグイン入れるだけでフルセットそろいますし、テキストエディタだけでも jar ひとつでいけますし、実行環境も Java が入っていればいいだけなので、人にも渡しやすく非常に重宝しております。

ということで、ちょこちょこいじっている訳なんですが最近気がついたこと。

ふと Groovy 1.8 系で下のコードを。

import org.codehaus.groovy.runtime.NullObject

// Groovy だとどちらも普通(Java だと上だけ通る)
assert(Integer.valueOf(127) == Integer.valueOf(127));
assert(Integer.valueOf(128) == Integer.valueOf(128));

// なるほど
assert(null == null)
assert(null.equals(null))
// なんとなく Groovy が不思議
assert(null != new NullObject())
assert(!null.equals(new NullObject()))

Groovy の == は equals の演算子オーバーロード。

というわけで、上の2つの assert は普通に通ります。 ちなみに Java だと両方通らない感じですが、上は通ります。 結構謎ですね(笑)

で、したの null のほう。 null もオブジェクトっぽいのですが、最後の2つの assert が不思議な感じ。

なんとなく別件ですが、このパッチがそれっぽい…。

[#GROOVY-4985] null and .with{} – jira.codehaus.org

Currently this fails:

null.with { assert it == null }

単純にぼくがなんかぼけてるのか、、、まぁなんだってわけでもないのですがふと(笑)

あ、そうそう、壁紙変えました。 🙂

Screenshot20111210

[tegaki]は、張る画像がなかったわけじゃないんだからね![/tegaki]

textile 文書をつくる

なにか文書をつくるとき、、まぁ普通は Microsoft Word とかワープロになると思うのですが、操作が煩わしかったり、バージョン管理できなかったり、なんとかテキストに近い形で書きたいことっていうのは結構あると思います。

docbook や XHTML を直書きするのはあまりにも冗長、tex は環境つくるの大変だしそこまで大がかりでなくてもよい、、なんてとき Eclipse Mylyn の WikiText モジュールが良いかもしれません。 実は Eclipse のリッチテキストエディタのキャレット制御も優秀でなかなか使えます。 🙂

Eclipse 上で動きますので統合環境のバージョン管理やローカルヒストリーも使えますし、各種キーボード操作、増分検索やカーソル飛ばしも同じ。 Eclipse 使っている方はお試しを。 J2EE 版をお使いならスタートは簡単。 .textile 拡張子のファイルをつくってダブルクリックするだけです。

エディタはこのような感じです。 たとえば textile 記法で文書をつくります。 設定により他の wiki 記法にも切り替えられます。 ヘッダとかはリアルタイムで表示変換されます。

textile10

ちゃんと word-warp ・折り返しするエディタです。簡単あるね。

Eclipse 上ですので当然(?) CTRL + SPACE とか ALT + \ とかの補完機能も使えますので wiki 記法分からなくても大丈夫。 ぼくもよく知りません(笑)

textile15

画面下タブに Preview がありますので、CTRL + PageUP とかで切り替えると画像展開を含むプレビューをすることができます。

ちなみに、ここで使われているインターナルブラウザは Eclipse Indigo からは標準で WebKit になるはずです。スクリーンショットは Ubuntu の Eclipse/SWT の WebKit です。

Windows だと iTunes か Safari が入っていないと Gecko になるのかな。(SWT のソース確認していませんが C:\Program Files\Common Files\Apple\Apple Application Support\webkit.dll を見ている気がします)

textile11

脚注利用時に存在しない番号を指定してしまった場合等、リアルタイム警告などもるようです。

アウトラインビューをだせばアウトラインだせます。

textile12

編集時のフォントはいつもの設定画面より WikiText 部分。 Text Font をプロポーショナルフォントで設定すればさながらワープロです。

textile14

ちなみに、この SWT のエディタはちゃんとオンザスポット入力で、文字列の途中挿入でも横の文字をずらすキャレット制御タイプなので文書入力も違和感ありません。(確定後ちょっとばたつきますが)

Windows のテキストエディタでも、この動作ができないのありますので優秀です。 Linux のテキストエディタだと、Eclipse と gedit くらいしか出来るのをみたことがありません。。

プレビュー部分は CSS で表示制御できます。 フォントなど気に入らなければ body タグとかに font-famiry を追加して設定しちゃうとよいでしょう。 また画像も展開しますので img に width きっておくと、ブラウザ縮小ではありますがいい感じで表示できます。

textile13

できた文書は docbook や HTML にコンバートすることもできます。 docbook のほうが素直そうな感じでした。 残念ながら脚注とかは正確な docbook タグにはなっていないようでしたが XML ですので別系で加工すると面白いことが出来るかもです。

てなわけで、お手軽に wiki 記法でテキスト文書つくれてバージョン管理できますので、そんな環境をお探しの方は試してみるといいかもしれません。 😀

Redmine 1.2.2 + Eclipse Mylynでチケット管理

前々からバージョンが上がっているのに気がついてはいたのですが、、Eclipse 用の Mylyn Redmine Connector が Redmine の最新バージョンに対応されましたのでようやく試してみました。

うちのローカルサーバには Redmine がたっていまして、その wiki の機能やバージョン管理システム連携を使って、作業のメモなどを残しています。 Redmine プロジェクトの扱いが簡単なのでこういった用途にも便利です。

redmine30

本来的にはチームで作業するためのもので、そのうち仕事でも使う機会があるかなぁとたまにいじっていたりするのですが、できればいいと思っていたのが Eclipse 連携。 Eclipse には Mylyn というチーム作業用の仕組みがありますが、これが Redmine に対応すればOKです。

ということで、以前から Eclipse Redmine Mylyn Connector に注目していました。

SourceForge.net: Project redmin-mylyncon

This project is an Eclipse Mylyn Repository plug-in for the Redmine bug tracking / project management application.

Eclipse 3.7 and Redmine 1.2 now also supported

The new Eclipse-Plugin 0.3.0  supports now Eclipse 3.5, 3.6 and 3.7, the new WS-API-Plugin 2.7.4 supports now Redmine 1.0, 1.1 and 1.2.

ついに最新バージョンの Redmine と Eclipse にも対応しましたので今回はこれを導入してみました。 Redmine 1.2.2 + Eclipse 3.7.1 で Redmine は JRuby + Tomcat + PostgraSQL で動作させています。

Redmine Mylyn Connector は2つの要素で構成されており、Redmine に入れるプラグインと Eclipse のプラグインの2つを併せて導入します。 ちょっと sourceforge でのファイルの配布状況が分かりづらいのですが、Redmine プラグインは git から最新版を、Eclipse プラグインは dev のアップデートサイトからインストールしています。

Redmine プラグインは、Redmine ディレクトリの vender/plugins に git より

git clone git://redmin-mylyncon.git.sourceforge.net/gitroot/redmin-mylyncon/redmine-mylyn-connector

のような感じでファイルを格納します。 ぼくは JRuby で warble して tomcat にデプロイしているので、一回 war を作り直しています。

redmine13

こんな感じで Redmine に認識されたら、管理画面より REST API を enable にします。(一番下)

redmine14

できたら Eclipse 側にプラグインをいれます。 いつもの Install new software より

こちらの dev チャンネルを登録。

redmine00

これでプラグインをインストールします。

できたら Eclipse Mylyn の Task Repository ビューを表示してリポジトリを登録します。

今入れたコネクターを選択します。

redmine10

Redmine サーバの設定をします。 Label はお好みで…。

redmine11

Validate Setting が通ったら Finish できます。:)

Task List ビューも表示させて、Preference で自動取得間隔などが設定できます。

redmine12

あとはチケットの検索クエリー等を設定すれば…。

[tegaki]じゃんじゃん![/tegaki]

redmine21

よい感じです。 :) 新規チケットはこんな感じで書けます。 ちょっとエディタが遅いのですが、、textile なども利用できます。

redmine22

上は Eclipse on Ubuntu の図。 Windows ではこんな感じです。

redmine23

リポジトリで更新があると Eclipse からこんな感じで通知が来ます。

redmine25redmine24

左 Windows、右 Ubuntu。 Linux 版 Eclipse の日本語が入った Eclipse Notification スクリーンショットは珍しいかもですね(笑)

redmine20

通知後すぐチケットを開くと昔のデータが出てしまうことがあるようなので、更新ボタンを押す運用にするとよいと思われます。

ということでなかなかうまいこと動くようです。 何か機会があるまでひとりで寂しく使ってみようと思います。。(笑)