No Programming, No Life

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

Groovy

Groovyソースコード斜め読み(その2)「私をもっと評価して! 」

このシリーズの一覧はこちら はじめに GroovyにゃGroovyShellっていう便利なクラスがおってのぅ、こいつにevaluatしておくれとお願いすれば、なんとまぁ普通の文字列をGroovyコードとして評価してくれるんじゃ。良い時代になったもんじゃのぅ。と、誰得かわ…

GroovyなJDK、それがGDK(Enum編)

このシリーズの一覧はこちら はじめに GroovyにはJavaの標準API(JDK)を拡張したGroovy JDK(GDK)があります。大量の便利メソッドが追加されており、これを使いこなすだけでも相当のことができるようになります。このシリーズでは毎回1クラスずつ各メソッドの…

Groovyでクラスを静的に動的拡張する方法

はじめに GroovyではExpandoMetaClassの機能を利用してメタプログラミングが可能です。これにより動的にクラスにメソッドを定義できるため豊かなプログラミングスタイルを提供できます。 しかし、GroovyにはRubyのようなincludeキーワードがないため、拡張部…

GroovyなJDK、それがGDK(String編その5)

このシリーズの一覧はこちら はじめに GroovyにはJavaの標準API(JDK)を拡張したGroovy JDK(GDK)があります。大量の便利メソッドが追加されており、これを使いこなすだけでも相当のことができるようになります。このシリーズでは毎回1クラスずつ各メソッドの…

GroovyなJDK、それがGDK(String編その4)

このシリーズの一覧はこちら はじめに GroovyにはJavaの標準API(JDK)を拡張したGroovy JDK(GDK)があります。大量の便利メソッドが追加されており、これを使いこなすだけでも相当のことができるようになります。このシリーズでは毎回1クラスずつ各メソッドの…

GroovyなJDK、それがGDK(String編その3)

このシリーズの一覧はこちら はじめに GroovyにはJavaの標準API(JDK)を拡張したGroovy JDK(GDK)があります。大量の便利メソッドが追加されており、これを使いこなすだけでも相当のことができるようになります。このシリーズでは毎回1クラスずつ各メソッドの…

GroovyなJDK、それがGDK(String編その2)

このシリーズの一覧はこちら はじめに GroovyにはJavaの標準API(JDK)を拡張したGroovy JDK(GDK)があります。大量の便利メソッドが追加されており、これを使いこなすだけでも相当のことができるようになります。このシリーズでは毎回1クラスずつ各メソッドの…

GroovyなJDK、それがGDK(String編その1)

このシリーズの一覧はこちら はじめに GroovyにはJavaの標準API(JDK)を拡張したGroovy JDK(GDK)があります。大量の便利メソッドが追加されており、これを使いこなすだけでも相当のことができるようになります。このシリーズでは毎回1クラスずつ各メソッドの…

GroovyのList#unique()って破壊的だったっけ?

はじめに タイトルの通りなんですが、以下のようなコードを実行したときに どうも破壊的に動作するようで… def list = [1, 1, 2, 2, 3, 3] assert list.size() == 6 def newList = list.unique() // 破壊的! assert newList.size() == 3 assert newList == …

はてなダイアリーのカテゴリーの一覧を取得する

はじめに はてなダイアリーのカテゴリ 編集設定 > カテゴリー」のテキストボックスで編集可能。">*1は記事を書く際に新しいカテゴリーを指定した際はどんどん増えてゆくのに、記事を編集してカテゴリー名を変更したり、記事自体を削除してしまったりした場合…

現場で使えるGroovy(その1)「Windowsのパスは /文字列/ を使おう」

このシリーズの一覧はこちら はじめに 現場で使うマシンは残念ながらWindowsであることが多い。そこで、Groovyスクリプトを書く際のちょっとしたTipsを一つご紹介します。 /文字列/ 表記 Groovyでは正規表現を簡潔に記述するための文字列記述方式として、 /…

現場で使えるGroovy(その2)「今日の日付フォルダを作る」

このシリーズの一覧はこちら はじめに 現場でよくある作業として、今日の日付フォルダを作る作業があります。よくあるのが以下のようなYYYYMMDD形式。 20110318 これをGroovyでやってみようというお話です。わざわざGroovyでやらなくてもバッチ(Windows)やシ…

GroovyのMarkupBuilderで再起的な構造のXMLを生成する

はじめに 発端はid:kyon_mmさんが groovyでパラメータでわたってきたkey,valueをそのままxmlのタグ名とバリューにしたいときってどうやるのがいいんだろう。DOMを使うのがいいのかな? #groovy とつぶやいていたところから。(2011-03-19追記) id:kyon_mmさん…

GroovyでBrainf*ckインタープリタを実装してみた

はじめに 最近、これを読んでいてBrainf*ck面白いなーと思っていた矢先、こことかこことかでBrainf*ckをScalaで実装されておられるのを発見しました。そこで私もGroovyで実装してみました。 とりあえずHello! Worldだけ (動作確認: Groovy Version: 1.8.0-rc…

GroovyでファイルのMD5を計算する

説明 第一引数にファイルへのパスを指定してそのファイルのMD5を取得するコマンドです。 AntBuilderめちゃ便利。 使用例 (自分自身のMD5を取得) $ groovy -v Groovy Version: 1.8.0-rc-1 JVM: 1.6.0_22 $ groovy getMD5.groovy getMD5.groovy 8fcc4f38b1123f…

Groovyのクロージャ生成時のパラメータ指定について

はじめに クロージャって便利ですよね。私はクロージャと出会ったことで処理とイテレーションの分離の考え方を身に付けることができました。さて、今回はそのクロージャ生成時のパラメータ指定についてです。普段何気なく使ってしまっているクロージャですが…

Groovyソースコード斜め読み(その1)「Groovyにもタプルがあった 」

このシリーズの一覧はこちら はじめに なんと、無いと思っていたタプル(組)がGroovyにもある模様。しかし、実体はListを薄くラッピングしただけのもののよう…せっかく見つけたので一応ご紹介ということで。 (動作確認: Groovy Version: 1.8.0-rc-1 JVM: 1.…

GroovyでJSONを使おう(その2)

このシリーズの一覧はこちら はじめに 前回は自分でクラスを書いて対応していましたが、Groovyのv1.8からJSONは組み込みでサポートされるようになりました。 Groovy本家より この機能は既にGroovyにあるXMLの生成や読み込みをサポートするMarkupBuilder, Xml…

Groovy使いがScalaを書く際の注意点(その1:defに気をつけろ)

このシリーズの一覧はこちら はじめに 昨日(2011-02-19)に第2回Scala道場に参加してきたわけですが、コーディング最中に一点はまったことがあったのでメモしておく。 はまった点 まずは、ソースコード*1をご覧下さい。 /* DishOrderSheetTest.scala */ packa…

Java使いをGroovyに引き込むサンプル集

はじめに Java使いをScalaに引き込むサンプル集 | mwSoft のGroovy版を書いてみました。 記事中に登場するサンプルコードや文章など多くの部分を引用させていただいております。 (動作確認: Groovy Version: 1.7.7 JVM: 1.6.0_22) 前書き Groovyという言語を…

JavaからGroovyへ移行する簡単なステップ

この記事は From Java to Groovy in a few easy steps | Groovy Zone の和訳です。思いっきり意訳です、あしからず。GroovyとJavaは、いとこみたいに近い存在で、構文がとても似ているからJava開発者にとってGroovyを覚えることはとても簡単です。Javaプログ…

Scalaのfor式がうまく動かない件について

Scalaの練習がてら、引数で受け取ったパスのファイルを読み込んで単純Grepするコードを書いていたときの話です。 以下のようなソースコードを書いてみて、ひとまず動くことを確認しようと思っていたのですが、(動作確認: Scala code runner version 2.8.1.fi…

Groovyなら1行でできる97のこと

タイトルはまぁあれですが、Groovyって結構ワンライナーで出来ちゃうことが多いよねということで、みんなで97個(+αそれ以上)の一覧を作っちゃいませんか?という企画です。以前jggugで行われていたg100ponみたいな感じでできたらいいなと思ったので、Goog…

Groovyの動的型変換ではまった

GroovyはGroovy++などを使わない場合は静的型チェックしてくれず、よしなに動的型変換をしてくれる。(ということを忘れていてはまったのでメモしておこうと思います。)動作確認: Groovy Version: 1.7.6 JVM: 1.6.0_22 型宣言されてる場合は動的にその型に…

GradleのdependsOnがうまく動かない

task clean << { println 'cleaning.' } task build << { println 'building.' } build.doLast { println 'finish!' } task local(dependsOn: [clean, build]) << { println 'local debug.' } みたいな感じのファイルを用意してlocalタスクを実行すると $ gr…

GroovyでRFC822形式の日付文字列にパースする

GroovyでRFC822形式の日付文字列にDateインスタンスをパースする処理を書こうと思った際のメモ。 ROMEというライブラリを使うと簡単にできるらしい。 サンプルソース 参考 [ヅラド] Java で RFC822 や W3C の日付形式を解析する 参照 Maven Repository: rome…

GroovyでどうせならStringを拡張してテンプレートにしちゃえばいいじゃない

はじめに サクっとテンプレートエンジンを使いたいなって時、ありますよね。Groovyの場合、GStringがあるから、あらかじめ宣言された変数値を文字列に埋め込むことは簡単なんですが、後からMapにしといてバインドしたい!って用途が実は結構あったりする気が…

Groovyでリスト内包表記

はじめに Groovyにはリスト内包表記が無いなぁと思って書いてみた。 ソース(参照) def listComprehension(list, filter, expr) { list.findAll(filter).collect(expr) } println listComprehension( (0..10).toList(), // 0から10までのリストを渡して {it %…

Javaでビープ音を鳴らせ!

半分くらいネタです。ひょんなことからJavaのコード内でビープ音を鳴らすメソッドを発見したのでメモしておこうかなと。 ソースコードはこんな感じ 10.times { java.awt.Toolkit.getDefaultToolkit().beep() System.sleep(100) } 上のサンプルはGroovyですが…

GroovyCSVを使ってみた

はじめに id:fitsさんが、こちらにてCSVを処理されているのを拝見しまして、GroovyでCSVを処理する場合、そういえばGroovyCSVがあったなぁと思い出したので使ってみたよという記事です。 こんな感じ サンプルは元記事と同じです。 @Grabが使えるので楽チンで…