CLOVER🍀

That was when it all began.

Groovy

Groovyの実行環境を管理する、GVM(the Groovy enVironment Manager)

Groovy 2.1.1が出ていたことは知っていたので、ダウンロードしようと思った時にGroovyのダウンロードページにこんな表記があるのに気付きました。GVM??全然知らないし、今まで気付きもしませんでした…。いつからあったんだろう。オフィシャルサイト GVM(t…

Matcher#replaceAll、String#replaceAllで後方参照が使える

コロッと忘れていたようなので、メモ。java.util.regex.Matcher#replaceAllやreplaceFirst、String#replaceAllやreplaceFirstで$を使った後方参照が使えます。普段あんまりJavaで正規表現による置換を多用しないのと、Perlに頼り切ってることが多かったです…

いろんな言語で、文字コードを指定してファイル書き込み

Readをやったので、今度はWriteということで。記載パターンは、以下の2通り。 変数messageに格納された文字列を一括してファイル出力 改行を含まない文字列リストmessagesに対して、行末に改行(LF)を付与してファイル出力 今回も、前提はこんな感じです。 …

いろんな言語で、文字コードを指定してファイル読み込み

ふと、書いてみたくなりまして。だいたいスクリプト系の言語で、よく忘れてしまうのが書いた動機です…。記載パターンは、以下の2通り ファイルの中身を全て読み込んで、1つの文字列として変数contentsに格納 ファイルの中身を全て読み込んで、改行無しの1行…

mustache.javaをGroovyで使う

mustacheにはGroovy版はありませんが、そのままJava向けのmustache.javaが使えます。mustache.javaではMapのキーが使えることを考えると、MapとListでけっこう簡単にバインドするオブジェクトを表現することができます。例えば、mustache.javaのサンプルでJa…

いろんな言語で、外部プロセス起動

前のエントリで、Groovy/Scalaでプロセス起動に関するコードをちょこちょこと書いていたのですが、ちょっと自分が割と使う言語でまとめてみることにしました。ほんの、サンプルです。サンプルのお題は、 外部プロセスの実行結果(戻り値)を取得し、変数ret…

Javaのプロパティファイルを比較するスクリプト

前に、仕事でJavaのプロパティファイルを比較するのに、Groovyで簡単なスクリプトを作りました。プロパティファイルにいろいろ環境に依存した設定が書かれていて、なおかつその内容がExcelとかで管理されていたので実際のソースコードとその内容が一致してい…

JDK 6から同梱されている、簡易HTTPサーバを使う

ちょっと試したいことがあって、HTTPサーバを用意したかったのですがApacheとかをインストールするのも面倒だったので、JDK 6から同梱されている簡易HTTPサーバを使ってみることにしました。が、実際に書いたのはJavaも面倒で、Groovyですが(笑)。参考にし…

Groovy 2.0.4

なんか、9月21日にGroovyの2.0.4がリリースされてたみたいですね。とりあえず、インストールしておきました。 $ groovy -version Groovy Version: 2.0.4 JVM: 1.7.0_07 Vendor: Oracle Corporation OS: Linux バグフィックスリリースだそうな。それにしても…

GroovyのOne Linerで、システムプロパティの値を出力する

また小ネタです。Groovyは、groovyコマンドの「-e」スイッチでOne Linerを実行することが可能ですが、これを使って現在のシステムプロパティを出力するコードを書いてみましょう。んで、できたのがこちら。 $ groovy -e 'System.properties.sort().each{prin…

Groovyで現在実行しているスクリプトのパス、またはファイル名を取得する

小ネタです。Groovyで、現在実行中のスクリプトファイルのパスおよびファイル名を取得する方法です。サンプルコード。 print_script_name.groovy println("path => " + this.class.protectionDomain.codeSource.location.path) println("fileName => " + new…

GradleでWebアプリを作ってみようと…

タイトルの通り、今度はGradleのWar PluginとJetty Pluginを使ってWebアプリ…というかサーブレットプログラミングをやってみようと思ったのですが、うまくいきませんでしたという…。一応、以下を見ながらやったんですけどね、何がマズかったんでしょう? htt…

Gradle Daemonを使う

昨日はGradleをちょっと使ってみたわけですが、元がGroovyだからかどうかはわかりませんけど、とにかく重い印象があります。やっぱり、こういうのって1回きりの使い捨てより、常駐型でないと厳しいですよね。というわけで、ここでGradleが用意しているのがDa…

GradleでScalaを使う

今度は、GradleでScalaを使って「Hello World」をやってみましょう。基本、ユーザガイドに沿ってやっていく感じです。 http://www.gradle.org/docs/current/userguide/scala_plugin.html Scala用のプロジェクトを作る まずはディレクトリ作成。 $ mkdir hell…

GradleでGroovyを使う

Gradleで「Hello World」をするのにJavaを使ったわけですが、そもそもユーザガイドの最初がJavaから入っているわけで、Gradleのスタンス的には GradleはGroovyで書かれているけど、ビルドツールとしてはJava標準でGroovyもサポートしてるよくらいなのかもし…

Gradleことはじめ

ちょっと更新間隔が空いてしまいましたね。いろいろと予定があったり、暑さに負けたり(笑)していたのが主な原因ですが…。あと、NettyがそろそろVersion 4を出しそうな雰囲気なのですが、Alpha1からまだしばらくかかりそうなので、方向を変えてGradleを触っ…

Groovyの簡易依存関係管理ツール、Grapeを使ってみる

Groovy 2.0が出ましたね〜。機能的なところはあんまり見てませんが、なんか型チェックとかができるようになったんだとか?それって、Groovyで待ち望まれてたものなんでしょうか?よくわからんです…。ま、とりあえずバージョンアップはしておきましたと。とこ…

GroovyでScalaのOptionを書いてみる

今日の小ネタ、第2弾。ホント、なんとなく書いてます…。ScalaにはOptionというクラスがあって、標準ライブラリやら普通のアプリケーションのコードの至る所に出てきます。これは、どこぞのMaybeモナド…にあたるものだと思うのですが、これをGroovyで書いてみ…

Scala/Clojure/Groovyで即時関数

あまり意味のない小ネタです。JavaScriptで使われるテクニックとして、即時関数というものがあると思います。こういうやつですね。 immediate_func.js (function (firstName, lastName) { println("Hello! [" + firstName + " " + lastName + "]"); })("Taro…

Object#withとClosureと

先週購入したこんな本を読んでいて、Groovyであんまり見慣れないコードが書いてあるのを見つけました。実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ (Programmer’s SELECTION)作者: Debasish Ghosh,佐藤竜一出版社/メーカー: 翔泳社発売日…

Clojure(とScalaとGroovy)でEcho Serverを書く

Clojureの入出力系の関数を一通り目を通した(と思っている)ので、ちゃんとアプリっぽいものを書いてみようとClojureでEcho Serverを書くことにチャレンジしてみました。今回のEcho Serverの動作は、以下の通りです。 起動引数にポート番号、またはホスト名…

Groovy、Clojureでもっと関数合成(オマケでScala)

珍しくトラックバックなどいただいたので、もうちょっとこのネタを書いてみることにしました。関数合成して何が嬉しいのか…ですが、前の例みたいな足し算、掛け算なんか書いても、確かにあんまりまあ現実味ないですからねぇ。それに、こういう単純なメソッド…

Groovyで特定のパッケージ配下のクラスを検索する

以前、JavaとScalaで同じようなタイトルのエントリを書いたことがありましたが、これには元ネタがあって、そちらは実はGroovyだったりします。元々、仕事でクラスをディレクツリーを辿って動的に走査して、見つかったクラスの継承関係やらアノテーション付与…

Groovy、Scala、Clojureで関数合成

あまり使ったことがないので、メモを兼ねて試してみます。 Groovy Groovyの場合は、Closureクラスのインスタンスを合成します。使用するメソッドは、leftShift(>)です。 def add2 = { x -> x + 2 } def multiply3 = { x -> x * 3 } def multiply3AndAdd2 =…

ScalaとGroovyのクロージャで、再帰を使った場合の違い

最近、業務でこそっとGroovyを使いだしているのですが、軽くクロージャ周りでハマったのでメモ。別に階乗のプログラムが書きたかったわけではないのですが、サンプルとして。 def factorial = { n -> if (n > 0) { n * factorial(n - 1) } else { 1 } } prin…

Groovyのバインディング変数とローカル変数

Groovyでは、スクリプト中の変数のスコープが宣言方法で大きく変わるようです。これも仕事でGroovyを使っていて、ハマったのでメモ。例えば、以下のスクリプトについて。 binding_local.groovy outside = "binding object" def outsideLocal = "local object…