Groovy

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 で一定時間参照されないと削…

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 スクリプ…

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" となっており、…

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

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

Groovy で JBoss Drools を使う2 - CEP機能

前回 id:fits:20120104 に引き続き、今回は Drools の CEP 機能(Drools Fusion)*1を Groovy で簡単に試してみました。 Drools 5.4.0 beta1 Groovy 1.8.5 (java 1.7.0_01 64bit) サンプルソースは http://github.com/fits/try_samples/tree/master/blog/201…

Groovy で JBoss Drools を使う - ルールエンジン機能

JBoss Drools はルールエンジン(Drools Expert)の機能と CEP(Drools Fusion)*1 の機能を兼ね備えており、なかなか興味深いツールです。(さらに BPMN2 等も処理できる)というわけで今回は Drools のルールエンジン機能を Groovy で簡単に試してみました…

Groovy で Storm を使う

リアルタイムデータ処理の Storm を Groovy から軽く使ってみました。 Storm 0.6.1-rc Storm は CEP(複合イベント処理)の一種のようですが、Esper (id:fits:20081126)などよりも Hadoop (id:fits:20101010, id:fits:20101026)に近いような印象です。(…

Groovy で Apache ZooKeeper を使う - Webコンテンツの分散ダウンロード

id:fits:20110925 や id:fits:20111016 でやったような Web コンテンツのダウンロード処理を Apache ZooKeeper を使って分散処理してみました。Apache ZooKeeper は分散システム間で協調動作させるためのサーバーソフトウェアで、シンプルで可用性が高くなる…

Apache Mahout でレコメンドを実践 - GitHub リポジトリをレコメンド

前回(id:fits:20111113)は適当なサンプルデータを使ったレコメンドだったので、今回は GitHub から API 経由で取得した実データを使ってレコメンドしてみます。 Apache Mahout 0.5 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/…

Apache Mahout で単純なレコメンドを実施 - Groovy

Groovy で機械学習ライブラリの Apache Mahout を使った単純なレコメンド処理を試してみました。 Apache Mahout 0.5 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20111113/ レコメンド処理の実装 Apache Mahout の基本的なレコメ…

非同期処理でWebコンテンツをダウンロードする方法2 - Groovy, Scala, Java, C#

今回は、前回(id:fits:20111016)と同様の非同期ダウンロード処理を Java と C# で実装し、Groovy と Scala は別の実装方法を模索してみました。使用した機能は以下の通りです。 Groovy : Actor (GPars) Scala : 限定継続 + ops Java : Concurrency Utiliti…

非同期処理でWebコンテンツをダウンロードする方法 - Groovy, Scala, F#

前回(id:fits:20110925)、並列コレクション等で Web コンテンツをダウンロードする処理を実装してみましたが、今回はその非同期処理版を Groovy, Scala, F# で実装してみました。(主な仕様は前回と同じ) 実行例 groovy async_download_web.groovy destdi…

信頼されない証明書を使ったHTTPSサーバーにBasic認証でPOST - Ruby, PHP, C#, Java, Groovy

信頼されないSSL証明書(自己証明書)を使ったサイトに対して、Basic認証を行い POST するサンプルを Ruby, PHP, C#, Java, Groovy で実装してみました。サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20111002/ サンプルは、第1引…

並列処理でWebコンテンツをダウンロードする方法 - Groovy, Scala, C#, Java, Ruby

複数のWebコンテンツ(HTMLや画像など)をダウンロードする際に 1件ずつ処理していたのでは非効率です。 というわけで、並列的にWebコンテンツをダウンロードするプログラムを Groovy, Scala, C#, Java, Ruby で実装してみました。主な仕様は以下で、外部ラ…

jclouds の BlobStore API - 単純な Blob の put/get

様々なクラウド環境に対して共通的な API でのアクセスを提供する Java 用ライブラリ jclouds の BlobStore API を試してみました。BlobStore API は Amazon S3, Windows Azure Blob, Google Storage 等、様々なクラウドストレージ環境をサポートしています…

BDDツール spock の Mock

Groovy の BDDツール spock における Mock の使い方を簡単にご紹介します。spock の Mock は定義が簡単なので個人的にはかなり有用だと考えています。 例えば、以下のような記述でモックの処理内容が定義できます。(実行回数と戻り値の組み合わせも可) 戻…

Ratpack + JHaml + Morphia で MongoDB を使った Web アプリ開発

これまで以下のような構成で作成してきたサンプルと同様のものを Ratpack + JHaml + Morphia の構成で作成してみました。 Sinatra + Haml + Mongoid, MongoMapper (id:fits:20110306) express + haml.js + mongoose (id:fits:20110409) Scalatra + Scalate +…

LINQやコレクションAPIを使ってCSVファイルからデータ抽出 - C#, F#, Scala, Groovy, Ruby の場合

id:fits:20110702 や id:fits:20110709 にて、SQL を使ってデータ抽出した処理を LINQ やコレクション API を使って実施し直してみました。(ただし、今回は station_g_cd でのソートを実施していない等、以前使った SQL と完全に同じではありません)今回は…

SQLを使ってCSVファイルからデータを抽出する方法 - Groovy + H2 データベース

CSV ファイルからデータを抽出するのに SQL を使いたいケースがあると思いますが、RDB をセットアップして CSV ファイルをインポートしたりするのは非常に面倒です。そこで、Groovy と H2 データベースを使って手軽に実施する方法をご紹介します。必要な環境…

JVM上の WebSocket サーバープログラム - Jetty, Grizzly, Netty, EM-WebSocket を試す

WebSocket の簡単なサーバープログラムを Jetty, Grizzly, Netty, EM-WebSocket をそれぞれ使って、Groovy や JRuby で実装してみました。 WebSocket のプロトコル仕様は確定しておらず、互換性の無い改訂が行われているようなので、今回は draft-ietf-hybi-…

Embed Jetty - Groovy と Scala で Jetty を組み込み実行

プログラム内での Jetty 組み込み実行を試してみました。 id:fits:20110521 で作成したサンプルの war ファイルを Groovy と Scala から組み込み実行してみます。使用した Jetty のバージョンは以下の通りです。 Jetty 8.0M3 サンプルソースは http://github…

Maven での BDD - Specs, Specs2, RSpec, Easyb, spock

Maven3 を使ったプロジェクトでの BDD(振舞駆動開発)の実施方法をまとめてみました。 今回試した BDD ツールは以下の通りです。 Specs Specs2 RSpec Easyb(Maven2) spock 結果として、この中では Specs/Specs2 か spock あたりを使うのが良さそうです。…

Groovy, Scala, F#, Haskell による関数・クロージャの合成

Groovy 1.8 のクロージャ合成の機能を試したついでに、Scala, F#, Haskell での関数合成の機能も簡単にまとめてみました。サンプルのソースコードは http://github.com/fits/try_samples/tree/master/blog/20101213/ Groovy の場合 Groovy では >> や Groovy…

Ruby, Groovy, Scala での Excel準拠 CSV ファイルのパース処理 - opencsv使用、Iterator.continually() 等

Excel の仕様に準拠した以下のような CSV ファイル(改行・カンマ・ダブルクォーテーションを要素内に含む)をパースし、第1・3の要素を標準出力に出力するサンプルを Ruby、Groovy、Scala で作成してみました。 CSVファイル例 test.csv 1,テスト1,"改行 含…

Groovy から Neo4j を使ってみた - スタンドアロン実行とRMIリモート接続によるNodeの追加と探索

グラフDBの Neo4j を Groovy から使ってみた。 具体的には、スタンドアロン実行と RMI を使ったリモート接続の各々で Node の追加と探索を試してみた。使用した環境は以下の通り。 Groovy 1.7.4 Neo4j 1.1 サンプルソースは http://github.com/fits/try_samp…

JSONデータとして取得したDBの検索結果をExtJSで表示するWebシステムのサンプル - Sinatra, Grails, CakePHP

DB の検索結果を JSON で返して、JavaScript(ExtJS)で表示するような Web システムのサンプルを Sinatra, Grails, CakePHP の 3種類のフレームワークで作成してみました。処理の概要は以下の通りで、MySQL の information_schema データベース TABLES テー…

Groovy, Scala, Ruby, PHP による XML の加工 - 要素や属性の追加・更新・削除

今回は、各種スクリプト言語による XML の加工方法をまとめてみました。 Groovy, Scala, Ruby, PHP を使って以下のような XML を <root> <data id="1">sample1</data> <data id="2" ext="none"> <details /> <details /> </data> </root> 次のような加工を施して (1) id="3" の data 要素を追加 (2) id="2" の data 要素に type 属性を追加 (3) id="1…