2009年3月17日火曜日

NetBeans IDE 6.5.1 リリース

NetBeans IDE 6.5.1 がリリースされました
ダウンロードはコチラです

主な変更点は以下の通りです
(メーリングリストより抜粋)

・同梱の GlassFish v2 UR2 が GlassFish v2.1 に変更
・08年12月、及び09年1月のパッチ取り込み
・JDK6 Update 12 やその他のバグ修正対応

詳細は上記リリース情報を参照してください
最後にいつも通りのスプラッシュです



今回、JDK6 Update 12 の不具合はじめ、多くのバグ修正が行われているようなので、バージョンアップすることをおすすめします

2009年3月13日金曜日

NetBeans 6.7 の新機能(1)

6.7 にて個人的に気になっている(期待している)新機能を紹介したいと思います
なお、 紹介した機能が最終的なリリース版に含まれるかは現時点では不明ですので、ご了承下さい

今回は JUnit の機能追加です
以前、メーリングリスト でも話の挙っていた、 JUnit 実行結果のプログレスバーが実装されました
(JUnit 3.x系、4.x系ともに利用できます)



ちなみに、失敗したテストを右クリックすると、メニューが表示されるのですが、今回から新たに "View Difference" というのが追加されました
これは、期待値と結果値の差異を比較するウィンドウを表示してくれます



この差異の比較ですが、日本語では正確に判定できていないようです
以下は英語の場合です



次は日本語の場合です



JUnit の結果出力では正常に差異を判定できているので、 NetBeans 側のモジュールの問題かと思われます

最後に、 JUnit の機能追加そのものに関することではないのですが、TestCase のファイル単体を実行する場合、以前はそのファイルを選択し、"ファイルを実行"("Run File")で実行していたのですが、6.7からは、テスト対象となるクラスを選択し、 "Test File" というメニューを選択するよう変更になりました
また、 TestCase ファイルそのものを実行するときも、 "Test File" を選択します
(以前のように"ファイルを実行"("Run File")では、main メソッドがないと警告されます)

テストパッケージをいちいち開かずに実行できるようにするための配慮かと思うのですが、 TestSuite を作成していたり、 任意のクラス名で TestCase を作っている場合、かえって煩雑な処理になるように思います

JUnit テスト結果のプログレスバーは以前より要望もあり(自分でも以前作っていましたし)、実装自体はうれしいのですが、従来の UI のままでは詰め込みすぎている感があります
PHPRuby ではコードカバレッジが実装されるようなので、 Java でも JUnit 実行結果の UI 調整と併せて実現されたらと思います

2009年3月1日日曜日

Ubuntu に Apache CouchDB をインストールする

先日構築した Ubuntu サーバに Apache CouchDB をインストールします
Apache CouchDB は Erlang で実装された、ドキュメント指向のデータベースです

Ubuntu 用パッケージが用意されています
(09/03/01現在、若干古いバージョンの 0.8.0 が提供されています)
以下のコマンドのみでインストール可能です
(ソースからインストールを行いたい場合は、コチラを参照すると良いかと思います)

$ sudo apt-get install couchdb


erlang など必要なパッケージが入っていない場合は依存性解決により一緒にインストールされます
インストール完了後、CouchDB を起動します

$ sudo /etc/init.d/couchdb start


起動後、正常に稼働しているか、以下のコマンドで確認します
(curl がインストールされていない場合は別途インストールしてください)

$ curl http://localhost:5984/


実行後、以下のように表示されれば、正常に稼働しています

{"couchdb":"Welcome","version":"0.8.0-incubating"}


デフォルトのままでは外部からアクセスできないので、"/etc/couchdb/couch.ini" を以下のように編集します
なお、セキュリティ等を考慮した設定ではありませんので、サービスとして公開する場合は適時変更を行ってください

[Couch]

ConsoleStartupMsg=Apache CouchDB is starting.

DbRootDir=/var/lib/couchdb/0.8.0

Port=5984

;デフォルト値
;BindAddress=127.0.0.1
;変更後
BindAddress=0.0.0.0


また、データファイルやポート番号などを変更したい場合も同ファイルを変更します
その他、ファイアーウォールが動作している場合はその設定も行ってください

変更後、CouchDB を再起動します
起動後、外部から以下の URL にアクセスすると、CouchDB のユーティリティ画面が表示されるかと思います

以上で CouchDB のインストールと初期設定は終了です

2009年2月28日土曜日

D945GCLF2 でサーバ環境を作る


以前使っていたサーバ機がさすがにへたってきたので、D945GCLF2 に入れ替えてみました
性能は高くないものの、搭載されている Atom 330 がデュアルコアと Hyper-Threading により、擬似的にクアッド CPU のように動作します
メモリ(2GB)と併せても1万円で収まるという CP の高さも魅力的です
(価格は店舗やメモリのメーカーによって異なりますが…)

昨晩、仮組→動作確認→本組とトラブルも無く、拍子抜けしてたのですが、インストールに大きな罠がありました
サーバ機なので、インストール後はさほど光学ドライブを使うことがないこともあり、内蔵ドライブはつけていませんでした
ブータブルな USB-CD ドライブを持っていたので、今回も同様につないでインストールを試みたところ、ドライブは回るのですが、全くブートしてくれません
BIOS を確認する限りでは、ドライブは認識できているようですが、ブートまでできていないようです
各所にて、 BIOS が原因で外付け USB ドライブからブートできないという報告が確認できましたので、 Intel のサイトから最新の BIOS のダウンロードし、更新したのですが、状況は変わりませんでした
更に BIOS の設定をいろいろと変更し、一晩費やして発見したのが、下記手段でした

1. BIOS の設定にてブード順を変更、 USB 接続ドライブからブート可とする設定を行う
2. 外付けドライブ接続、インストールディスクを入れて、本体を起動する
3. "F2" を押して、BIOS 画面を表示する
4. 外付けドライブの回転がおさまったら、 BIOS 画面を閉じる(このとき、変更は保存せずに終了する)

上記の手順でブートすることができました
おそらく、外付けのドライブからブートする前に HDD へブート順が移るのが原因のようです
(BIOS 画面にてブート順が変更されるまでの時間を稼ぐことにより上記問題を回避)
ブートしてしまえば、インストールは特に問題なく終了しました
(ちなみに入れたのは Ubuntu 8.10-server)
これから、このサーバ機を使っていろいろと試したいと思います

2009年2月15日日曜日

開発版を旧L&Fに戻してみる

先日紹介した、NetBeans の新しい Mac 用ルック&フィールですが、もちろんすばらしい取り組みなのですが、現状では似て非なるものになっているので、どうも好きになれません
ということで、旧L&F(6.5のもの)に戻す方法を聞いたところ、stan より、関連する Jar を上書きしたらいいと教えて頂いたので、挑戦してみました
なお、基幹モジュールの Jar の上書きや設定ファイルを削除したりしていますので、試される場合は自己責任にてお願い致します

6.5 よりコピーする Jar は "/Applications/NetBeans/NetBeans 6.5.app/Contents/Resources/NetBeans/platform9/modules" 以下(インストール先を変更せずにインストールした場合)の2ファイルです。

・org-netbeans-swing-plaf.jar
・org-netbeans-swing-tabcontrol.jar

次に上記ファイルを開発版にペーストします
場所は "/Applications/NetBeans/NetBeans Dev 200902131548.app/Contents/Resources/NetBeans/platform10/modules" 以下(使用するバージョンにより .app 名が異なりますので、注意ください)になります
既存ファイルの置き換えについて聞いてくるので、2ファイルとも「置き換える」とします
最後に、HOME にある設定ファイルを削除します

$ rm -r ~/.netbeans/dev

以上で準備が終わったので、起動します
起動した結果の画面が以下になります


ボタン類はもどりましたが、完全には戻っていません
L&F周りに関連する Jar をいろいろと試したところ、 "org-netbeans-core-windows.jar" も置き換えると以下のように一通り戻るようです


試しはしましたが、基幹部分の Jar を置き換えるのはあまりに危険なので、さすがに解決策とは言えません
選択肢として、旧(6.5) UI も残してほしいものです
(プラグインで対応できるのなら作るのですが、 core なのでいじれないだろうな…)

2009年2月2日月曜日

NetBeans の新しい Mac 用ルック&フィール

Twitter 経由で片貝さんから教えてもらいました、NetBeans の新しい Mac 用ルック&フィールです
(Stanislav のブログでも紹介されています)


起動後の画面はこんな感じです

サンプルの "MarsRoverViewer" を開くとこんな感じになりました


まだ完全な Mac の UI ではありませんが、今後楽しみに思います

2009年1月31日土曜日

NetBeans Wicket サポート

新年1回目のポストです(1月最終日ですが…)

元ネタは Geertjan のWicket に関するデモ(NetBeans.tvはコチラ)です

以下は、"Java Web および EE" サポート、 GlassFish アプリケーションサーバー、または Tomcat サーブレットコンテナがインストール、設定されていることが前提になっています
(今回は GlassFish V3 を使用しています)
まずは、 Wicket プラグインのインストールを行います
プラグインウィンドウのリストより "Wicket Support" と "Wicket File Template" が対象となります


インストール、 NetBeans の再起動後、プロジェクトの作成を行います
プロジェクト作成ウィンドウにて、"Java Web > Web Application" を選択します


プロジェクトの場所とプロジェクト名は適当な値を入力します
(例では "WicketSampleApp" としています)


次はサーバー等の設定では、お使いの環境に合わせ、適時変更してください
(例ではデフォルトのままとしています)


最後にフレームワークの選択します


リストより "Wicket" を選択します
Wicket に関する各設定項目は必要に応じて入力してください
(今回はデフォルトのままにしています)

すべての設定を終えると、プロジェクトが生成されます
生成後、プロジェクトを選択し、実行してみます


実行すると、 GlassFish の起動とデプロイが行われ、ブラウザにサンプル画面が表示されます


次は単純に文字列を表示してみます
"Source Package" 内から "HomePage.html" を開きます


ファイルへ以下のように追記します
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title></title>
<link wicket:id='stylesheet'/>
</head>
<body>
<span wicket:id='mainNavigation'/>
<!-- 追加分 -->
<span wicket:id="message1" >ダミー用メッセージ(実行時置換されます)</span>
<!-- 追加分 -->
</body>
</html>

入力後、 "wicket:id" の値 "message1" を ⌘ + クリックすると、対応する "HomePage.java" が開きます
コンストラクタに"add(new Label("message1", "Hello World!"));"を追記します
public class HomePage extends BasePage {

public HomePage() {
// message1 に表示する文字列を追加
add(new Label("message1", "Hello World!"));
}
}

保存後、 NetBeans 6.5 の新機能により自動デプロイされるので完了したら、プラウザをリロードします
(自動デプロイを Off に設定している場合はメニューよりデプロイを行ってください)
以下のように、設定した "Hello World." が表示されます


最後に Ajax を利用した、入力補完機能を実装してみます
先ほどの "HomePage.java" に "AutoCompleteTextField" 型のプロパティ "field" を追加し、 "getChoices()" メソッドを以下のように実装します
    final AutoCompleteTextField field = new AutoCompleteTextField("countries", new Model("")) {
@Override
protected Iterator getChoices(String input) {
if(Strings.isEmpty(input)) {
return Collections.EMPTY_LIST.iterator();
}

List choices = new ArrayList(10);
Locale[] locales = Locale.getAvailableLocales();

for(Locale locale : locales) {
String country = locale.getDisplayCountry(Locale.US);

if(country.toUpperCase().startsWith(input.toUpperCase())) {
choices.add(country);

if(choices.size() == 10) {
break;
}
}
}

return choices.iterator();
}
};

追加した "field" をコンストラクタに追加します
    public HomePage() {
add(new Label("message1", "Hello World!"));
add(field);
}

全体としては以下のようになります
public class HomePage extends BasePage {

public HomePage() {
add(new Label("message1", "Hello World!"));
add(field);
}

final AutoCompleteTextField field = new AutoCompleteTextField("countries", new Model("")) {
@Override
protected Iterator getChoices(String input) {
if(Strings.isEmpty(input)) {
return Collections.EMPTY_LIST.iterator();
}

List choices = new ArrayList(10);
Locale[] locales = Locale.getAvailableLocales();

for(Locale locale : locales) {
String country = locale.getDisplayCountry(Locale.US);

if(country.toUpperCase().startsWith(input.toUpperCase())) {
choices.add(country);

if(choices.size() == 10) {
break;
}
}
}

return choices.iterator();
}
};
}


最後に "HomePage.html" へ以下のようにテキストフィールドの追記を行います
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title></title>
<link wicket:id='stylesheet'/>
</head>
<body>
<span wicket:id='mainNavigation'/>
<span wicket:id="message1" >ダミー用メッセージ(実行時置換されます)</span>
<p/>
<!-- 追加分 -->
<input type="text" wicket:id="countries" size="50" />
<!-- 追加分 -->
</body>
</html>


デプロイが完了したら、ブラウザを再度リロードします
新たにテキストフィールドが追加されて表示されますので、そこへ"u"と入力してみてください
以下のように入力値の候補が表示されるはずです


以上、簡単ですが、 NetBeans TV の内容を紹介してみました
実際のムービーにはより詳細に説明されていますので、ぜひご覧頂ければと思います