No Programming, No Life

プログラミング関連の話題や雑記

Groovy

GroovyのConfigSlurperがめっちゃ便利

はじめに 本日参加してきたGrailsドキュメント会にて紹介されていたConfigSlurperをちょっと調べてみたらめっちゃ便利だったのでメモしておきます。*1 で、ConfigSlurperって何? 簡単に説明すると、groovyファイルで各種設定系定義を書いておいて使いましょ…

GradleでGroovyのhelloプロジェクトを作成(without Maven Repository)

Gradle楽しいですね! ちょっと現在、環境的にMaven中央リポジトリが使えないので、GroovyプロジェクトをMaven中央リポジトリなしで使えるような構造を作ってみたのでメモしておきます。 置き場所 Githubにコミットしてありますので、こちらからどうぞ。 な…

ScalaでJavaのコレクションを使うには?

Javaのコレクションを取得してそれをScalaのコレクションに変換する方法ではまったのでちょっとメモ。 scala.collection.JavaConversions.asBuffer(/* ここにJavaのコレクション */) としたらうまく行きました。微妙に面倒くさいですね。 考察 そう考えてみ…

Groovyでクロージャを期待するメソッド呼び出し時の挙動について

はじめに (10..1e4).grep(~(9..0).sum{"$it?"}).any''.&println anarchy golf - the source code を見ていたら見つけたのですが、Groovyってクロージャを引数として期待しているメソッドにクロージャインスタンスを渡した場合は自動でうまい感じに動くんです…

Anarchy Golf:perfect square freeをGroovyで解いてみた

やってみた お題の内容 問題 output all the numbers from 3 to 100 without perfect square. (3から100の数値のうち平方数を除くものを出力せよ。) 期待値 [3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30,…

GroovyでBuilder系の定義ファイルの外出しする

はじめに GroovyはほにゃららBuilderが充実していますが、ちょっとだけ不満点を挙げるとしたらそれはコードに直接埋め込まなければいけないことではないだろうか。 new HogeBuilder().aaa { bbb (ccc: 'ddd') { eee() { . . . } } } こんな感じに。 そこで …

Groovyでevalしたかった

はじめに 文字列をevalする例です。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) 解説 BindingはmapをasすればOKみたい。便利ですね。 上記例でinfoとなっているところを外部ファイルから読み込んだりすれば夢が広がります。 2011-03-27追記 評…

Groovyの#stripMarginをもうちょっと便利にしてみた

はじめに v1.7.3からString#stripMarginが追加されたので、先頭にパイプ('|')など*1を指定することで揃えることができるようになりました。 '''|aaa |bbb |ccc'''.stripMargin() みたいな感じで書くと aaa bbb ccc といった感じになります。 まぁ、これはこ…

GroovyのString(Groovy JDK)にいつの間にか#trメソッドが追加されてた

はじめに もう、追加したんなら言ってよぉ〜(笑) ということで、v1.7.3から追加されてたみたいです。前に自分でtrコマンドを書いたりしてたんですが標準サポートされるなんて嬉しい限り。ということで早速使ってみた。 ソース (動作確認: Groovy Version: …

groovyshではdefは使わないほうがいい、たぶん

これは… id:orangecloverさんが Groovyでdef関数からdef関数が呼び出せないのか? - みちしるべ でいろいろと困っているようだったんですが、この症状は私もなったことがある。 groovyshでdefを使うとスコープが(たぶん)その行だけになる $ groovysh Groovy …

Groovyでfoldl, foldrを書いてみた

はじめに 最近関数型言語をよく目にする機会が増えたので、Groovyでは#inject(左畳み込み)はあるけど、そういえば右畳み込みがないんじゃない?と思ってCollectionを拡張してみました。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) 解説 metacl…

Groovyでメソッドをメソッド名(String)で呼び出す

はじめに ちとタイトル分かりにくいですが、せっかく書いたので投稿しておく。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) 解説 動的に作った文字列でメソッド呼べるよね〜っていうサンプルでした。

Groovyでライフゲームを書いてみた

はじめに ライフゲームをなんとなくGroovyで書いてみました。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) スクリーンショット グライダー(初期状態) shape.txtをいじった状態 実行方法 >groovy lifegame.groovy 操作方法など エラー処理などさ…

Groovyで右からや指定した位置でカリー化する

♪右から、右から、カレー化しちゃ〜う〜 ええ、ちょっと古いネタでした。いつのまにやらGroovyのClosureメソッドで#rcurryやら#ncurryやらできるようになってました。*1 軽い説明 メソッド 説明 #curry 普通のカリー化(左から) #rcurry 右からカリー化 #ncur…

Groovyでクロージャ内部で設定してもらった値を利用する

はじめに クロージャ(groovy.lang.Closure)を引数にとって、途中の処理を委譲するようなメソッドを定義し、呼び出し時にブロックのように呼び出すことはGroovyでは普通に行われます。 ただ、通常では#callメソッドに渡す引数がクロージャ内で -> の前に列挙…

idにほにゃららな人集まれ!をチェックするクラスを書いてみた

はじめに なんとなく書いてみた。せっかくなので公開。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) ちなみに 気が向いたらもっとチェックメソッドを増やしていこうと思う。気が向いたらね。 参考 idにアルファベットの重複がある人集まれ! - …

Groovyでjava.text.Collatorを試してみた

はじめに こちらにて、java.text.Collatorの使い方が示されていた。 知らなかったんですが、このCollatorというクラスはソートで使うらしく、通常のソートではUnicode順になってしまうところを良きに計らってくれるようです。 ソース (動作確認: Groovy Vers…

GroovyでJSONを使おう

このシリーズの一覧はこちら はじめに JSONとGroovyのマップは非常に形式が似ている。 違っているのはJSONの方はマップに {} を利用するのに対して Groovyは を使う点くらいだ。 ということで、{} を することでJSONをGroovyObject*1に変換するクラスを書い…

MacのGroovyConsoleのバックスラッシュでハマった

最近購入したMacでGroovyConsoleを利用していた時のこと。 以前まで使っていたWindowsの感覚でバックスラッシュを入力してしまっていてハマったのでメモ。*1Windowsだとキーボードの一番右上にある「¥」のキーを押すことでバックスラッシュを入力できますが…

MacでのGroovyのエイリアス

Mac(Mac OS X 10.6.4)のターミナルからgroovyを実行しようとすると、エンコードの指定がうまくいっていないのか、文字化けしてしまって起動できなかった。 根本的な解決法は他に在りそうだけど、ひとまずエイリアスを作ってUTF-8にエンコードを固定するよう…

Re:数字混じり文字列ソート

お題: Server error 投稿: Server error こんな感じになりました 動作確認はGroovy Version: 1.7.3 JVM: 1.6.0_20にて。 考察 ソートする際に数値と数値でない部分に分けて、数値のところは数値でソートするような形で実装してみました。 関連記事にも挙げま…

Groovy基礎文法最速マスター

この記事はGroovy基礎文法最速マスター | Think Twiceへ移管しました。

Antスクリプト内でGroovyを利用する

はじめに GroovyではAntBuilderやGantといったAntを利用する上でとても強力な拡張が存在しますが、もうちょっとシンプルにAntスクリプト内からGroovyを利用する方法もあるのでそのご紹介です。 使い方 Seeing is believing!! ということで、サンプルをば。 (…

GroovyでApache Ivyをいろいろ試してみる(その2)

このシリーズの一覧はこちら はじめに 前回の記事の続き。iPad発売記念日ですがこんな記事を書いてます(笑) IvyリポジトリをWeb上に公開したい まだわかっていないことも多いのですが、ちょこちょこ調べていった結果ivy.xml的なものを宣言して、あとは とい…

GroovyでApache Ivyをいろいろ試してみる(その1)

このシリーズの一覧はこちら はじめに Groovyの@GrapeはIvyを使っているらしい。IvyとかMavenとかよくわかっていなかったんですが、これを機に勉強を開始したところです。*1で、いろいろ探ってみるとどうも日本語の情報があまり見当たらない*2…長期戦になり…

Scalaも素晴らしいけど、Groovyも素晴らしいですよ

id:nazokingさんが、java使いのためのScala の勉強のための資料作り scalaって素晴らしい いろいろ1 - nazonoDiaryという記事を書いていた。 ここでは、Scalaで書くとJavaよりも簡潔に書けるよとのことで紹介されているのですが、比較対象にGroovyが入ってお…

Groovyで切符問題を解いてみた

id:nidouchiさんのところ(http://d.hatena.ne.jp/nidouchi/20090904/p1)にて切符問題というものが取り上げられていたので、私も解いてみた。 いくつかの正の整数と加算・減算・乗算 の3つの演算子(そして、括弧)を使って、ある別の正の整数を生成する方法…

GroovyでプロパティファイルをXML形式で読み書きする

よく利用する機能なのでメモ。 基本的にはJavaのコードを同じなので、ちょっとだけ#with(Input|Output)Streamとか使ってGroovyっぽくしてみました。 (動作確認: Groovy Version: 1.7.2 JVM: 1.6.0_20) XML形式で書き込み 上記スクリプトを実行するとルートデ…

Re:階層的なキーの連想配列化

前回のどう書く?org投稿から約1年ぶりくらいで、久々に投稿してみました。お題: Server error 投稿: Server error こんな感じになりました def data = [ ['東京都', '区部', '千代田区', 'object1'], ['東京都', '区部', '中央区', 'object2'], ['東京都', …

Groovyスクリプトをダブルクリックで実行できるjar形式に変換するGroovyスクリプト

はじめに ちょっとタイトルがまどろっこしいですが、要するにexecutable-jarをAntBuilderを利用して作っちゃいましょうという話題です。これは便利!これでGroovyスクリプトの配布が楽になるかも。 とても簡単にGroovyスクリプトを配布可能&実行可能なjarに…