2010-01-01から1年間の記事一覧
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とは JUnit や TestNG などから Selenium によるインテグレーションテストを実行できる。本家は以下。 http://seleniumhq.org/ Selenium Server Selenium Server はテストコードなどから Selenium コマンドを受け、コマンドを実行し、結果を返却…
SeleniumServer 起動のサンプル。裏で起動してたらシャットダウンして新たに起動。 package etc9; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; i…
WatchService とは JDK7でクロージャがやっぱり追加されることになったのはいいのですが、リリース時期が延びるそうで、NIO2を待たなければならないのは残念。ベータ版でNIO2を試してみよう。 WatchService とはファイルシステムに対する変更を監視できるサ…
文字列のJavaコードをインメモリでコンパイルして実行するサンプル。 JavaCompiler によりJavaソースをコンパイルすることができる。以下はコンパイル後のクラスをメモリに保持してそのまま実行する。 package etc9; import java.io.ByteArrayOutputStream; …
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 …
「テストコードにはWhat、ソースコードにはHow、そしてドキュメントにはWhyを書くんだよ!」
CRUDモジュール Rails のように Play においても一般的な CRUD 処理を簡単に組み込むことができる。CRUD モジュールを組み込むために /conf/application.conf にてモジュールを有効にする。 # Additional modules # ・・・ module.crud=${play.path}/modules…
showアクションの追加 ブログへのPost内容を表示するshowアクションを作成。/app/controllers/Application.java に以下を追加。 public static void show(Long id) { Post post = Post.findById(id); render(post); } 上記アクション用のテンプレート /app/v…
Playタグ 前回はブログのトップページにてPostの一覧を表示した。Postの一覧はいくつかの方法で出力するため、Postの表示部をPlayタグとして切り出して再利用可能とする。tags ディレクトリ中に display という Playタグを作成。 app/views/tags/display.htm…
Fixtures Playではエンティティの初期データ作成のために Fixtures という仕組みが提供されている。Rails と同様。test/data.yml に以下の YAML ファイルを用意。 # Test data User(bob): email: bob@gmail.com password: secret fullname: Bob isAdmin: tru…
本家サイトの Tutorial をかいつまんで。 このチュートリアルでは、'Yet Another Blog Engine' 略して yabe というプロジェクトにてブログエンジンを作成していく。 プロジェクトの作成 yabeというプロジェクトを新規作成。アプリケーション名は'Yet Another…
Play framework とは RoR風のフルスタックフレームワークです。Java5以上。ダウンロードは以下から。 http://www.playframework.org/今回は play-1.0.1.zip をダウンロード。解凍したディレクトリ内で play を起動してみる。Usageが表示される。 play-1.0.1>…
前回blog1.mammb.comでみた Applet を JNLP で起動してみる。 JNLPによるアプレット記述子 次世代の Java Plug-In にて、従来 Java Web Start で使用してきた JNLP がアプレットを起動するためのアプレット記述子として利用できるようになった。 アプレット…
ちょっと古いネタですが、今更ながらに Draggable Applet を試してみました。 Applet の作成 ボールが画面内を跳ね返り続ける 簡単な Applet をサンプルとして作成。 ボールクラスを作成。 package etc9; import java.awt.Color; import java.awt.Component;…
今までしらなかったのですが、画像キャプチャソフトの WinShot で PNG とか GIF で保存することが出来るんですね・・。設定は以下の「その他設定」の「自動保存時の拡張子」で PNG とか設定するだけ。 でもこの分かりにくさってないよなぁ。
Java の Decompiler としては JAD が有名ですが、Java 5 以降の文法に対応していなかったりします。 Java Decompiler はJava 5 以降の文法にも対応した Decompiler で、単体起動できるGUIアプリケーションと、Eclipse プラグインの双方が提供されています。 …
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;} } リソースの…
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>…
単純に固定レスポンス返すだけのHTTPサーバのサンプル。やっつけです。 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import …
実行してブラウザからlocalhostでアクセスすると時刻を返すだけのHTTPサーバのサンプル。またまた、やっつけでごめんなさい。 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.Input…
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サーバのサンプルです。 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クラス Listに含まれる重複を削…
仕様書は読まれない 仕様書は書いても読まれません。読まれないから更新されなくなり、現実との乖離がどんどん大きくなっていきます。乖離が大きくなると、誰も修正しようとは思わなくなり、ハイ、陳腐化した仕様書が出来上がります。短い期間の2〜3人のプロ…
Google Collections Library とは Google Collections Library とはJDKのコレクションフレームワークを自然な形で拡張したコレクションライブラリです。2009年末1.0がリリースされました。プロジェクトは以下のサイトでホストされています。 http://code.goo…
2009年12月に JUnit 4.8 がリリースされました。このリリースではテストケースにカテゴリを付与することで、実施するテストを選択できるようになっています。カテゴリのために以下の2つのクラスが追加されています。 org.junit.experimental.categories.Cate…