Java

JVM用の純粋関数型言語 Frege で Applicative Functor を使用

Frege は Haskell によく似た JVM 用の純粋関数型プログラム言語です。 Frege なかなか面白そうな言語だったので、関数を Applicative として使うサンプル (書籍「すごいHaskellたのしく学ぼう! 」より) を試してみました。 ソースは http://github.com/f…

Maven を Gradle 上で実行 - SVNKit によるソースのチェックアウト付き

前回 は Groovy スクリプトで Maven を実行してみましたが、今回は Gradle 上で実行してみる事にします。 Gradle 1.6 Maven 3.0.5 ソースは http://github.com/fits/try_samples/tree/master/blog/20130731_2/ 既存資産の pom.xml を Gradle に移行するのが…

Maven を Groovy スクリプト上で実行

Groovy スクリプト上で Maven を実行するには下記のような単純なスクリプトを用意するだけです。 Groovy 2.1.6 Maven 3.0.5 ソースは http://github.com/fits/try_samples/tree/master/blog/20130731/ mvn_run.groovy (Maven 実行スクリプト) @Grab('org.a…

Cucumber を Groovy で実行2 - Maven, Gradle

はじめに 前回 に続き、今回は Maven と Gradle を使って cucumber-jvm を実行してみます。 フィーチャやステップ定義は前回と同じものをそのまま使いますが、common.groovy の @Grab('org.seleniumhq.selenium:selenium-java:2.33.0') は不要なのでコメント…

Cucumber を Groovy で実行 - 単体実行

はじめに cucumber-jvm は BDD ツール Cucumber の Java 実装版です。 cucumber-jvm 様々な JVM 言語 (clojure、Groovy、Scala、JavaScript 等) を使ってステップ定義を実装できるので、今回は Groovy でステップ定義を実装、単体実行してみる事にします。…

Sequel + ojdbc1.4 で TIMESTAMP 変換エラー

はじめに Sequel 3.48.0 で ojdbc14.jar (10.2.0.5) を使って TIMESTAMP 型のカラムを含むテーブルを検索したところ下記のようなエラーが発生しました。 (JRuby 1.7.4 で実行) ただし、ojdbc5.jar・ojdbc6.jar (11.2.0.3) ではこのようなエラーは発生…

Java Scripting API で CoffeeScript を実行

はじめに Java SE 6 から実装されている Java Scripting API を使えば JavaScript を JVM 上で実行できます。そして、CoffeeScript は JavaScript にコンパイルできます。 と言う事で Java Scripting API を使って CoffeeScript を実行する Groovy スクリプ…

Functional Java で Iteratee - take の実装

Functional Java の Iteratee を使って、以前試した Play2 の Iteratee (http://fits.hatenablog.com/entry/20130212/1360681996, http://fits.hatenablog.com/entry/20130216/1361027691) や RxJava (http://fits.hatenablog.com/entry/20130310/1362876…

記号文字の URL エンコード - Java, .NET, JavaScript, Ruby, Python, PHP

下記のような文字をいくつかのプログラム言語の標準的な API で URL (URI) エンコードしてみたらどうなるか試してみました。 ; / ? : @ = & % $ - _ . + ! * ' " ( ) , { } | \ ^ ~ [ ]使用した言語は下記の通りです。 Groovy (Java API) C# (.NET Fram…

RxJava で行単位のファイル処理 - Groovy, Java Lambda

前回 (id:fits:20130224) のファイル処理と同様の処理を RxJava を使って実装してみました。今回作成したソースは http://github.com/fits/try_samples/tree/master/blog/20130310/ Groovy で実装 まずは Groovy で実装してみました。 Groovy 2.1.1 前回の…

軽量 Web フレームワークで REST API を実装 - Vert.x, Gretty, Play2 Mini, Socko, Restify

個人的に REST API の実装では JAX-RS (Java)*1 や Sinatra (Ruby) あたりを使っていますが、今回は選択肢を増やす目的で下記のようなフレームワークを試してみました。 Vert.x (Java, Groovy, JavaScript, Ruby, Python) Gretty (Java, Groovy, Scal…

Java でマッピング・フィルタリング・畳み込み - FunctionalJava, totallylazy, Commons Collections, Guava, Java 8 Lambda

Java でコレクションのマッピング(map)・フィルタリング(filter)・畳み込み(foldLeft)のような処理を使いたいケースがありますが、今のところ標準で用意されていません。そこで、以下のようなライブラリを使って試してみました。 Functional Java 3.1 …

Functional Java で List モナド - Groovy, Java 8 Lambda

id:fits:20120912 にて Scalaz で実装したナイト移動の List モナド処理を Functional Java を用いて Groovy と Java SE 8 Early Access with Lambda Support(b56) で実装してみました。使用した環境は以下の通り。 Functional Java 3.1 Groovy 2.0.4 Open…

Scalaz で Writer モナド

今回は、ログを追記する Writer モナドを Scalaz で使ってみます。 Scalaz 7.0.0-M3 sbt 0.12.0 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20120917/ 使用した sbt 用ビルドファイルは以下です。 build.sbt scalaVersion := "2…

Scalaz でリストモナド - Kleisli による関数合成

前回 id:fits:20120828 に引き続き、今回も書籍「 すごいHaskellたのしく学ぼう! 」 のサンプルを Scalaz で実装してみる事にします。今回は、リストモナドを使ったナイト移動 *1 の処理です。 Scalaz 7.0.0-M3 sbt 0.12.0 サンプルソースは http://github.c…

Scalaz で Ordering モノイド

書籍「 すごいHaskellたのしく学ぼう! 」 の Ordering モノイドを使った lengthCompare 関数を Scalaz で実装してみました。 Scalaz 7.0.0-M3 sbt 0.12.0 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20120828/ lengthCompare 関…

Markdown の HTML 変換 - Ruby, PHP, Groovy, Scala, Node.js

Markdown 形式の文字列を HTML 変換する処理を複数のプログラム言語で試してみました。処理としては、標準入力から UTF-8 の Markdown 形式の文字列を取得し HTML 変換した結果を標準出力へ UTF-8 で出力しています。ちなみに、Markdown 文字列は LOGGiX プ…

Play framework 2.0 のアプリを Eclipse でデバッグする方法

Play framework 2.0 で作成した Web アプリを Eclipse 上でデバッグする方法をご紹介します。 準備 まず、play eclipsify を実行し、Eclipse 用のプロジェクトファイルを生成します。 Eclipse 用プロジェクトファイル作成 > play eclipsify次に、このプロジ…

Groovy で Vert.x のモジュールを作成

Vert.x のモジュールを Groovy で作成する方法をご紹介します。 Vert.x 1.1.0 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20120708/ モジュールの配置場所 モジュールは以下のディレクトリに配置できます。 Vert.x の mods ディ…

Vert.x の使い方 - Windows 環境でソースからビルドする方法

Vert.x を Windows 上でソースビルドして実行環境を構築する手順をご紹介します。 ちなみに、わざわざソースからビルドしなくても https://github.com/purplefox/vert.x/downloads からパッケージ(例 vert.x-1.0.final.tar.gz)をダウンロードして解凍すれ…

Commons JCS のキャッシュ保持期間

Apache Commons JCS のキャッシュを保持する期間設定には以下のようなものがあります。 MaxLifeSeconds MaxMemoryIdleTimeSeconds MaxLifeSeconds で一定時間が経つと無効になるキャッシュを設定でき、MaxMemoryIdleTimeSeconds で一定時間参照されないと削…

Play framework 2.0 での自作プラグイン - Scala版

Play framework 2.0 における基本的なプラグインの作成方法をご紹介します。ちなみに Play framework 2.0 は Java・Scala 用の Web アプリケーションフレームワークで、JPA・Akka・EhCache 等の機能をプラグインとして実装しています。 Play framework 2.0 …

Hector で JPA の Entity オブジェクトを Cassandra に登録

Java 用 Cassandra クライアント Hector の Object Mapper を使って JPA の Entity オブジェクトを Cassandra に保存する方法をご紹介します。 Cassandra 1.0.8 ソースは http://github.com/fits/try_samples/tree/master/blog/20120311/ 事前準備 Cassandra…

sbt のプラグイン作成 - 単純な Groovy スクリプトをコンパイル

sbt 0.11 プラグインの作成方法を簡単にご紹介します。 題材として、単純な Groovy スクリプトをコンパイルするプラグインを作成してみます。 sbt 0.11.2 ソースは http://github.com/fits/try_samples/tree/master/blog/20120304/ はじめに Groovy スクリプ…

Ext JS MVC + RESTEasy - 一対多の関連を持つモデルデータを JSON で送受信する

Ext JS 4 の MVC 機能を使ったクライアントと RESTEasy を使った JAX-RS サーバー間を JSON データで連携するサンプルを作成してみました。 Ext JS 4.0.7 RESTEasy 2.3.1 GA サンプルのソースは http://github.com/fits/try_samples/tree/master/blog/201202…

Maven で CoffeeScript を使用する

Maven を使った Web アプリケーションで CoffeeScript を使うためのプラグイン coffee-maven-plugin をご紹介します。coffee-maven-plugin を利用するには pom.xml ファイルに以下のようなプラグイン設定を追加します。 coffee-maven-plugin の設定例 <plugin> <groupId>com.t</groupid></plugin>…

H2 でユーザー定義関数を使用する

H2 Database Engine ではユーザー定義関数(Java で実装)をサポートしており、以下のような 2通りの登録方法が用意されています。 Java クラスメソッドをユーザー定義関数として登録 (Referencing a Compiled Method) ソースコードを指定してユーザー定義…

Drools でルールの有効期間を指定する - date-effective, date-expires

Drools の DRL ではルール毎の有効期間を以下のルール属性を使って指定できるようになっています。 date-effective 開始日時 date-expires 終了日時 どちらも日付の指定に文字列が使えますが、デフォルトの日付フォーマットが "dd-MMM-yyyy" となっており、…

Hibernate Validator を使ったメソッド引数のチェック - AspectJ による組み込み

JSR 303 - Bean Validation のリファレンス実装である Hibernate Validator と AspectJ を使ってメソッドの引数をチェックする処理を実装してみました。 Hibernate Validator 4.2.0 Final サンプルソースは http://github.com/fits/try_samples/tree/master/…

セット割引をルールエンジンで処理 - Drools 使用

カテゴリ A の商品 1点とカテゴリ B の商品 1点の同時購入でセット価格が適用されるといったようなセット割引(セット商品割引)処理をルールエンジン Drools で実装してみました。使用した環境は id:fits:20120104、id:fits:20120105 と同じです。 Drools 5…