読者です 読者をやめる 読者になる 読者になる

argius note

プログラミング関連

JavaでJVM言語を作ってみる(2) - バイトコード解析

前回の続きです。 足し算プログラム"Adder"を、直接バイトコードを出力して作ります。 その前に、JVMの機械語について少し触れてみたいと思います。

JavaでJVM言語を作ってみる(1) - 環境を準備する

これまでも極簡単な処理系を作ってみたことはありますが、いずれもインタプリタで実用的ではないものでした。 今回も、本格的なものを作る気は今のところはありません。 ですので、題名は正確には、JVM言語を作る環境を準備する、と言ったところでしょうか。…

Cayenne(3.0.2)で任意のSELECT文+SQLを外部ファイルにする

※使用しているCayenneのバージョンは3.0.2ですが、バージョン3以上なら使えると思います。 Cayenneでは、CayenneModelerで"Query"というマッピングを作ることができ、SQLTemplateとして利用できます。この機能は、Adapter(DBMSのインターフェイスみたいなも…

Wicketで真のステートレスページ

Wicketはステートフルが基本。 それでも、ステートレスなページをWicketで実現したい、実現できるなら多少制限があってもかまわない、という場合の、真のステートレス(と言い切っていいものかどうか)を実現する方法を模索してみました。

雑感:Wicket&Cayenneをお堅いアプリに採用する場合のハードル

年明け早々、予定していたバタバタと予定外の(ある程度は覚悟していたものの、予想を上回ってしまった)バタバタとしておりまして、書きたいことがまとめられないので、雑感ってことで。

"EMBEDDED JETTY SERVER"でWicket+Cayenneテスト環境が完結している

先に結論から。 Wicket-QuickStartでソースフォルダー"src/test/java"の下に作られる"Start.java"をEclipseなどからデバッガで実行すれば、軽快なテスト用アプリケーションサーバが起動します。JNDIの設定もjndi.propertiesだけでOK。 さらに、「Cayenne(3.0…

JUnitテストで使う即席のJNDIデータソースを用意する

Cayenneの接続設定でJNDIDataSourceFactoryを使っている場合、JNDIサーバが参照できない環境で設定を切り替えずに単体テストをするにはどうしたら良いのか...と考えたらこうなりました。

Cayenne(3.0.2)でUnitTestするときにテスト用のデータソースを設定する

Apache CayenneでUnitテストを実行する際のガイドが下記ページにあります。 Apache Cayenne » Running Unit Tests ここで、UnitTestのときにデータソースを切り替える方法が書かれていて、"-DcayenneTestConnection"もしくは"-Dcayenne.test.connection"を使…

(Apache) Wicket+CayenneでWebアプリ

ApacheのWicketとCayenneの組み合わせでWebアプリを作ってみることにします。 導入した際のまとめです。 (2011-12-17)訂正および追記しました。(朱色の箇所。)

MacOSX版 Hudson CI → Jenkins CI 実施しました

2011-02-19の日記に書いていた、Jenkinsへのマイグレーションを行いました。 思ったよりは少しだけ時間がかかってしまいましたが、無事移行できました。

NIO2とWin7とシンボリックリンク

2011-09-18にJava SE 7 (4) - "NIO.2" ファイルシステム関連APIの増強のエントリ中、Files.createSymbolicLinkの箇所で、 WindowsXPではシンボリックリンクはUnsupportedOperationExceptionがthrowされます。(いい加減サポートされてくれないでしょうか。)…

ミニゲーム?「迷いの森」

今朝は早くに目が覚めたので、珍しくちょっと勉強なんかしたりして、ちょっとだけ早く家を出ました。 おとといの暑さとは打って変わって、秋らしい風の冷たさを感じつつ、気分が良いので鼻歌など鳴らしながら駅への道を歩いていると、ふと思いつきました。 …

Java SE 7 - 目次

Java SE 7 の記事の目次です。 Java SE 7 (1) - 文字列switchのからくり Java SE 7 (2) - リソース自動closeの仕組み Java SE 7 (3) - 異なる系統の例外をまとめてcatchのあらまし Java SE 7 (4) - "NIO.2" ファイルシステム関連APIの増強 Java SE 7 (5) - j…

Java SE 7 (6) - 総括と補足

ここまで、2011-07-28に正式リリースされたJava SE 7について、2ヶ月遅れになりましたが、まとめてきました。 最後に、Java Platform Standard Edition 7 Documentationの"What's New in Documentation"を元に整理しておきます。項目リストはそのまま使って…

Java SE 7 (5) - java.langとjava.utilへの追加

主要なパッケージである、java.langとjava.utilの新規クラス/インタフェースと既存クラスの追加メソッドについて簡単にまとめます。 全部ではありません。

Java SE 7 (4) - "NIO.2" ファイルシステム関連APIの増強

残りの言語仕様変更は「その他の雑多な変更」に含めるとして、次はAPIのほうを見ていきましょう。

Java SE 7 (3) - 異なる系統の例外をまとめてcatchのあらまし

バイトコードに影響する言語仕様の3つ目、"Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking"です。 これは、言語仕様変更としては不可分のものなのでしょう。 ですが、使う側としては別々に見ていった方が分かり…

Java SE 7 (2) - リソース自動closeの仕組み

文字列switchに続いて、バイトコードに影響する言語仕様の2つ目、"The try-with-resources Statement"です。 これまでは下のように書いていたものが、 InputStream is = new FileInputStream("a.txt"); try { // TODO } finally { is.close(); } こう書ける…

Java SE 7 (1) - 文字列switchのからくり

遅れ馳せ乍ら、Java7について自分なりにまとめてみます。最初は概論から入るのが定石でありましょうが、現状は何時投稿できるか分からない状況ですので、小出しにしていくことにします。

JOptionPane.showInputDialogでキャンセルしたのに

JOptionPane.showInputDialogは、キャンセルすると普通はnullが返されます。 ところが、リストをダブルクリックしてキャンセルすると、なぜか値が選択されたことになってしまいます。 正確には、入力をJList形式(Object[]で良い)でプルダウンでなくリスト状…

Hudson CI → Jenkins CI

java.netからHudsonを連れて出て行こうとしたら、「まて、おまえは出て行くことは許さん」と言われ、泣く泣くクローンの子をJenkinsとして育てていくことにしたのでした。 先日、その子がやっと生まれました。 で、移行が面倒なんですけど。提供されているマ…

GlassFish v3 と Tomcat 5.5 でディレクトリに関する共通のプロパティ

GlassFish v3 と Tomcat 5.5 でコンテナのルートディレクトリを調べたい場合には、"catalina.home"もしくは"catalina.base"で取得できます。

GlassFish v3 データソースの設定(PostgreSQLの例)

ごく簡単に説明。lang=enの環境で試しているので、日本語は間違っているかも。なお、JDBC接続のパラメータは URL=jdbc:postgresql://localhost:5432:defaultdb user=user password=passwordとします。 起動中のドメイン(%glassfish%/domains/domain1/)のli…

即興:ストップウォッチ改

2年ほど前のエントリで、Java1.5で作ったGUIストップウォッチ。 今、見直してみると、けっこう無駄が多いので、書き直してみました。 ただ書き直しではつまらないので"Stay On Top(常に手前に表示)"機能を追加。時間のパネルを右クリックするとチェックボッ…

JTreeって何でこんなに使いづらいのか

只の愚痴です。引数無しのコンストラクタから始まって、ノード追加とか、イベントリスナとか、何とも歯痒いですね。

RSS・Atomフィードのためのライブラリ"ROME"

RSSリーダを作るには、 フィードデータ(XML)をダウンロード フィードを解析(パース) 更新日時のチェック などの処理を書けばできそう。でも、RSSとAtomはバージョンが何種類もあるので、それらの仕様を全て調べるのはちょっと大変。 そこで、"ROME"を使いま…

-XdockパラメータでDockの表示を設定

MacOSXでJavaのGUIアプリケーションを起動すると、デフォルトでは Dockアプリケーション名がmainクラスのFQCN アイコンはデフォルト(Javaのドキュメント?) になります。 これを変えたい場合は、-Xdockパラメータを使います。 $ java -Xdock:name="Stew" -X…

MessageFormatで日時フォーマット

非常に今更で恐縮ですが、これは良い方法でしょうか? 少なくとも、SimpleDecimalFormatを直接書かなくて良いという点において。 String format = "{0,time,yyyy-MM-dd HH:mm:ss.SSS} ({1}) {2}"; System.out.println(MessageFormat.format(format, new Date…

NailGun - 「めちゃくちゃ起動がはやい」

日本語の記事が少なかったからでしょうか、高速起動を調べていたときにはすでにあったはずなのに、見つけられなかったなんて。やっぱり英語の記事もちゃんと読まないとダメですね。

NetBeans6.8でプロファイラを使ったので感想

プロファイラを使うために最新版の6.8JavaSE版をインストールしました。前回は正式版がリリースされたばかりの6.0をインストールしてちょっと使ったきりでした。 プロファイラの使い方は、メニューの「プロファイラ」から「手プロジェクトをプロファイル」ま…

配列のClass型をどう書けば良いか忘れました

リフレクションのコードで、Class.getDeclaredMethod()に渡すClassの配列で、メソッドの引数に配列が含まれている場合、その型を表すClassはどうやって指定すれば良いでしょうか。 良く考えてみると、これを実際に使ったことが全くと言う程なかったようです…

OracleJDBCのgetObjectでDATE型をjava.sql.Timestampとして取得

OracleのDATE型は時刻情報を保持しますが、ResultSet.getObject()で取得すると、(たぶん9i,10gでは)java.sql.Dateにマッピングされ、時刻が切り捨てられてしまいます。ResultSet.getTimestamp()なら日時を取得できますので、これを使えるのであればあっさ…

java.sql.Statement.setMaxRows(int)が存在した

あれ? Java1.4からありますね。見落としていました...

GlassFishセットアップ+JavaDB起動

プロプラな製品とTomcat、ちょっとだけJBoss、のアプリケーションサーバを使っていて、特に必要性を感じなかったので、インストールはされていたものの全く触っていなかったGlassFish。確かNetBeansをインストールしたときに一緒にインストールされたんだと…

参照可能なクラスのリストを取得したい

「Java1.4&ライブラリ非依存」という条件で。そうでなければ、「Java クラス 検索 OR 一覧」あたりで検索するといくつか見つかります。BeanShellを使うのは、試していませんが楽そうですね。 Java1.4で大きなライブラリを使いたくない場合は、こんなのは如…

自プロジェクト名の規則(大文字小文字)

何だか座りが悪いです。 製品名 プロジェクト名 jar名 規則 Stew Stew stew.jar (1)(2) Frui Frui frui.jar (1)(2) Calendar Calendar argius-calendar.jar (1)(2) armadillo Armadillo armadillo.jar (2) 製品名に準じる(1) 常に大文字で始める(2) 常に小文…

Java1.5のJDKが壊れた

以前は1.4が壊れたりしましたが、今度は1.5です。 どうやら"classes.rsa"と"rt.jar"がおかしくなったようです。サイズは変わっていませんでしたが、ハッシュ値(MD5)が違っていました。 これは何なのでしょう。

良いコメント悪いコメント

http://d.hatena.ne.jp/bleis-tift/20090421/1240324323 ためになります。 ほぼ全面的に同意です。ただし、自分がすべてにおいてこのルールを遵守しているかというと、そうでもありません。 それも含めて、コメントについてコメント。 ※見出しをお借りしてお…

Ubuntu8.04でJava

互換性テストのため、最近Ubuntu8.04を使ってみています。 これにはJavaが入っていないので、最初はOpenJDKを入れてみました。コマンドラインのプログラム(Fruiとか)は普通に動くみたいです。 次に、Antを動かそうとしたら、OpenJDKだと上手く行きません(…

SQLite+JDBC+Stew

StewでSQLiteに接続するのは、実はまだやったことがありませんでした。 今回、Trac関連でDBを直接覗くために試しました。※この実験は、Stewのプラグイン的な接続設定で動作するかどうかを試したものです。普通にCLASSPATHに通せば問題なく動作すると思います…

ドラッグ&ドロップ(DnD)でドロップされたファイル情報を取得する

DnDは、あまり使ったことありません。せいぜいmouseDraggedイベントの操作くらいで、ドロップ関連は全く触ったことがありませんでした。 というわけで練習。JFrameにExplorerなどで1つまたは複数選択したファイルをドラッグ&ドロップすると、標準出力にファ…

Antで日時文字列(DateFormat)を使用する

日時の付いたファイル名でZIPアーカイブを作成。 <tstamp> <format property="now" pattern="yyyyMMdd-HHmmss"> </tstamp> <zip destfile="results-${now}.zip"> <fileset dir="." includes="**" /> </zip> 追記(2010-01-30) JarタスクをZipタスクに修正。Jarでも出来ることは出来ますが、MANIFEST.MFがついてしまいます。

JUnitはテストケースごとにTestCaseインスタンスを生成する

Martin Fowler's Bliki in Japanese - Junit新インスタンス いままで気にする必要がなかったので、今回ちょっとハマってしまいました。 今回初めて、DBアクセスクラスのJUnitテストケースを作ることにしました。SELECTの場合は上手く行ったので、それで担当…

Effective Java 第2版

著者:ジョシュア・ブロック(Joshua Bloch) 訳者:柴田芳樹 asin:489471499X 遅ればせながら入手。まだざっと読んだ程度です。実践と交互に読んだほうが理解が深まると思いますので、繰り返し読むと良いでしょう。 Java5で導入された、ジェネリクスを始めとす…

なぜJavaびいきなのか

馬鹿な子 手のかかる子ほどかわいいものです。

Clojureが実(運)用

http://www.infoq.com/jp/news/2009/01/clojure_production;jsessionid=E564A7F9644CEE615D016B4A87C48288 Clojureは並列プログラミング(リンク)に重点を置いた開発言語である。ソフトウェアトランザクショナルメモリ(リンク)のモデルとエージェント・システ…

Java 7ロードマップ最新版 関連

現時点でのJava7の姿。個人的にはほとんど追跡していません。クロージャが無くなりそうなのは意外ですね。 以下、抜粋して。 Java 7で登場する新機能一覧、クロージャは残念な状況 | マイナビニュース アップデートされたJava 7ロードマップへの反応 InfoQの…

Gosling氏 インタビュー

Javaがレガシーだって? 冗談じゃないよ - James Goslingが語るJavaの現在 (1) Java 7の開発ペース、ゆっくりすぎやしませんか? | マイナビニュース なんとも心強いお言葉。FXとかJava7とか正直心配ですが、少し安心しました。

Ganymede(3.4.0)に移行

プラグインもだいぶ揃ってきたようなので、全面的にGanymedeに移行しました。 日本語対応は今後しないつもりなので、"IntelliJ IDEA"に乗り換えようかなとちょっと気持ちが動いています。もちろん、併用はすると思います。 Eclipseは相変わらずメニューのニ…

"Generate Javadoc"で生成されるjavadoc.xmlの改造

メニューの"Generate Javadoc"(Javadocの生成)で生成した javadoc.xml は、なんかゴチャゴチャしているので、雛形として改造したものを使いまわしたほうが良い気がします。 <project default="javadoc"> <target name="javadoc"> </target></project>