2010-01-01から1年間の記事一覧

名前渡し Call-by-name にて引数のコード実行タイミングを制御する

Java で以下のコードにてgreeting()を呼び出すと、 public String hello() { return "HELLO"; } public void print(String s) { System.out.println(s); } public void greeting() { print(hello()); } 最初に hello() メソッドが呼ばれ、その結果の HELLO …

コレクションと関数による関数型プログラミングの真価

入力をどう変化させるか? 命令型のプログラミングでは、制御(命令)フローを考え、そのフローにてデータをどのように変化させるかを考えますが、Scala では入力を出力に変換する という考え方にてロジックを組み立てていきます。 奇数を抽出する場合、命令…

Selenium-RC の利用

Selenium-RCとは JUnit や TestNG などから Selenium によるインテグレーションテストを実行できる。本家は以下。 http://seleniumhq.org/ Selenium Server Selenium Server はテストコードなどから Selenium コマンドを受け、コマンドを実行し、結果を返却…

SeleniumServer 起動サンプル

SeleniumServer 起動のサンプル。裏で起動してたらシャットダウンして新たに起動。 package etc9; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; i…

JDK7 の WatchService を試す

WatchService とは JDK7でクロージャがやっぱり追加されることになったのはいいのですが、リリース時期が延びるそうで、NIO2を待たなければならないのは残念。ベータ版でNIO2を試してみよう。 WatchService とはファイルシステムに対する変更を監視できるサ…

Javaのコードをインメモリでコンパイルして実行するサンプル

文字列のJavaコードをインメモリでコンパイルして実行するサンプル。 JavaCompiler によりJavaソースをコンパイルすることができる。以下はコンパイル後のクラスをメモリに保持してそのまま実行する。 package etc9; import java.io.ByteArrayOutputStream; …

Compose Method のステキな例

Compose Method の例がステキだったのでメモ。 public class List { public void add(Object element) { if(!readOnly) { int newSize = size + 1; if (newSize > elements.length) { Object[] newElements = new Object[elements.length + 10]; for (int i …

ソフトウェア開発におけるドキュメント記載の視点

etc

「テストコードにはWhat、ソースコードにはHow、そしてドキュメントにはWhyを書くんだよ!」

Play! - Step By Step Tutorial その5 〜CRUDモジュール〜

CRUDモジュール Rails のように Play においても一般的な CRUD 処理を簡単に組み込むことができる。CRUD モジュールを組み込むために /conf/application.conf にてモジュールを有効にする。 # Additional modules # ・・・ module.crud=${play.path}/modules…

Play! - Step By Step Tutorial その4 〜アクションの追加〜

showアクションの追加 ブログへのPost内容を表示するshowアクションを作成。/app/controllers/Application.java に以下を追加。 public static void show(Long id) { Post post = Post.findById(id); render(post); } 上記アクション用のテンプレート /app/v…

Play! - Step By Step Tutorial その3 〜Playタグ〜

Playタグ 前回はブログのトップページにてPostの一覧を表示した。Postの一覧はいくつかの方法で出力するため、Postの表示部をPlayタグとして切り出して再利用可能とする。tags ディレクトリ中に display という Playタグを作成。 app/views/tags/display.htm…

Play! - Step By Step Tutorial その2 〜Fixtures〜

Fixtures Playではエンティティの初期データ作成のために Fixtures という仕組みが提供されている。Rails と同様。test/data.yml に以下の YAML ファイルを用意。 # Test data User(bob): email: bob@gmail.com password: secret fullname: Bob isAdmin: tru…

Play! - Step By Step Tutorial その1 〜導入〜

本家サイトの Tutorial をかいつまんで。 このチュートリアルでは、'Yet Another Blog Engine' 略して yabe というプロジェクトにてブログエンジンを作成していく。 プロジェクトの作成 yabeというプロジェクトを新規作成。アプリケーション名は'Yet Another…

是非ためしてもらいたいフルスタックなWebフレームワーク Play

Play framework とは RoR風のフルスタックフレームワークです。Java5以上。ダウンロードは以下から。 http://www.playframework.org/今回は play-1.0.1.zip をダウンロード。解凍したディレクトリ内で play を起動してみる。Usageが表示される。 play-1.0.1>…

Draggable な Applet をJNLP で起動する

前回blog1.mammb.comでみた Applet を JNLP で起動してみる。 JNLPによるアプレット記述子 次世代の Java Plug-In にて、従来 Java Web Start で使用してきた JNLP がアプレットを起動するためのアプレット記述子として利用できるようになった。 アプレット…

Draggable な Applet は地味に使えるのではないか

ちょっと古いネタですが、今更ながらに Draggable Applet を試してみました。 Applet の作成 ボールが画面内を跳ね返り続ける 簡単な Applet をサンプルとして作成。 ボールクラスを作成。 package etc9; import java.awt.Color; import java.awt.Component;…

WinShot で PNG 保存

今までしらなかったのですが、画像キャプチャソフトの WinShot で PNG とか GIF で保存することが出来るんですね・・。設定は以下の「その他設定」の「自動保存時の拡張子」で PNG とか設定するだけ。 でもこの分かりにくさってないよなぁ。

軽くて使い易い Java Decompiler

Java の Decompiler としては JAD が有名ですが、Java 5 以降の文法に対応していなかったりします。 Java Decompiler はJava 5 以降の文法にも対応した Decompiler で、単体起動できるGUIアプリケーションと、Eclipse プラグインの双方が提供されています。 …

NetNeans 6.8 で Java EE 6

NetBeans 6.8 で EJB 3.1 を使用した簡単なサンプルアプリを作成。 NetBeans 6.8 のインストール 以下のサイトから NetBeans 6.8 を落としてインストールします。今回は netbeans-6.8-ml-java-windows.exe を使用しました。GlassFish 等含めてインストールさ…

遅延初期化ホルダー

リソースなどを初期化する場合には、以下のようにstaticイニシャライザにて事前に初期化することが多い。 public class Hoge { private static Resource resource = new Resource(); public static Resource getResource() { return resource;} } リソースの…

Maps.asMap でシンプルにマップを初期化したい・・

List の初期化は Arrays.asList() が可変長引数取るようになって、 List<String> list = Arrays.asList("a,b,c,d,e,f".split(",")); のように少し書きやすくなった。 Set についても同様で例えば、 Set<Integer> set = new LinkedHashSet<Integer>(Arrays.asList(4, 8,15,16,23,42)); </integer></integer></string>…

java.nio によるHTTPサーバのサンプル

単純に固定レスポンス返すだけのHTTPサーバのサンプル。やっつけです。 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import …

HTTPサーバのとりあえずサンプル

実行してブラウザからlocalhostでアクセスすると時刻を返すだけのHTTPサーバのサンプル。またまた、やっつけでごめんなさい。 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.Input…

TCPクライアントの例

GoogleにTCPで接続してレスポンス取得するだけのサンプルです。 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import ja…

シンプルなTCPサーバのサンプル〜その2〜

TCPは、ポートへのアクティブな接続や、これからクローズする接続があるときは、リッスンしているポートの再利用ができません。サーバの接続のクローズ処理は、プロトコルを最後まで正しく実行するために2分ぐらいかかります。サーバの起動や停止を繰り返す…

シンプルなTCPサーバのサンプル〜その1〜

シンプルなTCPサーバのサンプルです。 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net…

Strategy パターン

Strategy パターンとは 一連のアルゴリズムを定義し、それぞれをカプセル化してそれらを交換可能にします。Strategyパターンによってアルゴリズムを使用するクライアントとは独立して、アルゴリズムを変更できます。 Strategyクラス Listに含まれる重複を削…

機能仕様書を書くためのヒント

etc

仕様書は読まれない 仕様書は書いても読まれません。読まれないから更新されなくなり、現実との乖離がどんどん大きくなっていきます。乖離が大きくなると、誰も修正しようとは思わなくなり、ハイ、陳腐化した仕様書が出来上がります。短い期間の2〜3人のプロ…

Google Collections Library 〜immutable collection編〜

Google Collections Library とは Google Collections Library とはJDKのコレクションフレームワークを自然な形で拡張したコレクションライブラリです。2009年末1.0がリリースされました。プロジェクトは以下のサイトでホストされています。 http://code.goo…

JUnit 4.8 の新機能 Categories とは

2009年12月に JUnit 4.8 がリリースされました。このリリースではテストケースにカテゴリを付与することで、実施するテストを選択できるようになっています。カテゴリのために以下の2つのクラスが追加されています。 org.junit.experimental.categories.Cate…