IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
2015/4/11のJJUG CCC 2015 Springで、Groovyについてお話ししてきました。 CFPに応募するかしばらく迷ってたんですが、ネタが思いつかなかったので先送りしていたら、〆切最終日辺りにさくらばさんや複数の人から「初心者向けでいいんですよ、むしろいいんですよ」的なメッセージを受信したのと、その近辺で今回の発表ネタのようなことを業務的にやるために割と時間をかけて資料を作り込んだのでその余波で割とどうにかなるんではないかということで応募してみたところ、有り難いことにAcceptされたのでした。 というわけで、今回は「Groovy入門+小人さんスクリプト」という構成でお話ししました。 以前にJavaOneの報告会で「Groovyの使いどころ、7つの導入パターン」というお話をさせていただいたのですが、その中の「小人さんスクリプト(House Elf)」パターンにあたります。
Groovy2.3.0-beta-1がリリースされましたね。 目玉としてはやはりtraitでしょう。 今までのMetaClassによるメソッドの動的探索パスをいじる系の機能で似たようなことはできましたが、何かと限界(複数スレッドにおける動作の保証とかかなり泥臭い感じだったり、一度動的メソッドを追加すると取り除くのが大変だったり)がありましたが、それらを超えるために静的ソリューションとしてtraitが実装されました*1。 ドキュメントがすごくわかりやすくて、サンプルコードを上から順に読むだけで少なくともどのように使えるかは難なく理解できるでしょう。 http://beta.groovy-lang.org/docs/groovy-2.3.0-SNAPSHOT/html/documentation/core-traits.html 最初の方を読んでるとJava8のインタフェース+デフォルトメソッ
groovy.util.TestCase のshouldFail(Closure code) は「何らかの失敗が期待されるテスト」に用いると絶大な効力を発揮します。 「何らかの失敗」というのはError でもException でも“assert false” でも、とにかく正常にプログラムが動かない状態の事を指します。 例えばこのような感じ。 これらは全て「何らかの失敗」をするので、shouldFail(Closure code) は成功します。したがってテストはパスします。 このようにshouldFail(Closure code) は大変便利ですが、いささかパワフル過ぎるケースもあります。 例えばこんなJava のメソッドのテストをしたい時を考えます。 (このサンプルソースについて深く考えないで下さい。深く考えたら負けです!!) この場合、shouldFail(Closure cod
2014-06-08 tqkey-groovyとgradle-groovy-android-plugin Groovy 2.4でAndroidのサポートが始まったので、練習がてら卓球ハウスの在宅APIを閲覧できるアプリを作りました。 ソースコードはGitHubに公開しています。 https://github.com/hotchemi/tqkey-groovy Groovyで書いてみてどうか Jsonの扱いが楽 基本的にGroovyで書けるのは便利で、例えばAndroidでjsonをパースする時はJavaだとJsonObjectを使って手動パースしたり、あるいはGsonとかJacksonを使う事が多いと思いますが、GroovyはJsonの読み書きをネイティブサポートしているので、例えばこんな感じで柔軟に処理する事ができます。ただ、JsonSlurper#parseTextのreturnはOb
Groovy の便利な仕様として、メタプログラミングがあります。 クラスやメソッドを呼び出すときに、そのクラスの定義を変更して振る舞いを変えることができます。 その実装方法はシンプルでわかりやすいものとなっています。 ですが、はまりました シンプルなコードで MetaClass を試してみたところ簡単に実装できました。 これは使えるとばかりに仕事で使ってみたところ、うまくメソッドがオーバーライドされなくて悩みました。試行錯誤してオーバーライドされない原因がわかりました。 型指定したパラメータをもつメソッドをオーバーライドするときは、Closure のパラメータに型指定しないといけません。 以下、サンプルコードです。 まずはオーバーライドする対象のクラスです。 class Sample { String execute(String val) { val } } 次に、オーバーライド失敗して
I use GVM to manage my Groovy/Grails environment. How do I uninstall GVM and all the candidates currently installed? I suspect one would simply just delete the ~/.gvm directory. Surprisingly the GVM website doesn't seem to mention how to do this, nor is there documentation to confirm how this is done.
こんにちわ、みけです。 groovyでantのタスクでいろいろと大量のタスクを実行させている時に、 標準出力に出てくるログがちょっとうざったい時があります。 その場合に、ログの出力先のstreamを変更することができるようです。 1 2 3 4 5 6 7 8 9 10 11 // 出力先のstream def x = new ByteArrayOutputStream() // antの出力先を変更 ant = new AntBuilder() ant.project.buildListeners.each{ it.outputPrintStream = new PrintStream(x) } // 大量のタスクを実行 (1..100).each { ant.echo "this is $it time log." } このスクリプトを実行すると次のような標準出力になります。 1 1.
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.apache.maven:maven-embedder:3.0.5') import org.apache.maven.cli.MavenCli MavenCli.main(args) ただし、環境によっては下記のようなエラーが発生するかもしれません。 実行(失敗時) > groovy mvn_run.groovy org.codehaus.groovy.control.MultipleCompilationErrorsE
前回は、CassandraのThriftサンプルを意味はあまり考えずにGroovyに書き直したものでしたが、今回はちょっと意味の理解も踏まえて書いてみることにしました。 まずは、キースペースとカラムファミリの用意。 [default@unknown] create keyspace Room; 7b6e7ec9-d6ef-3d5e-9e54-53784a03e59b [default@unknown] use Room; Authenticated to keyspace: Room [default@Room] create column family Users ... with key_validation_class = 'UTF8Type' ... and comparator = 'UTF8Type' ... and default_validation_class = 'UT
2013年04月26日 IntelliJ IDEA 12 + GroovyでConfigSlurperを試そうとしたら軽く嵌った件 ちょっと嵌ったのでメモ。 ちょっと長いので結論を先に書くと、IntelliJ IDEA 12のsettings -> compiler -> Resource patternsを !?*.java;!?*.form;!?*.class;resources:*.groovy;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj にしないと動かなくて嵌るよ、という話です。以下はその結論に至るまでの経緯です。 GroovyのConfigSlurperがめっちゃ便利とのことなので、試しに使ってみました。 IntelliJ IDEA 12でGroovyプロジェクトを作って、ディレクトリ構成はこんな風にしました。 設定ファイルとして使う
今年もあとわずかとなりましたが、今年最初となる(しかも 多分 今年最後になるであろう)記念すべきエントリーは 『G* Advent Calendar 2012』の21日目です。 昨年はすっかり出遅れて寂しい思いをしましたが、今年は間に合いましたよ!! で、早速ですが... 皆さん Gradle 使ってますか? (GroovyFX の話はちょっとおいといて...) 自分はというと... Gradle の正式版がリリースされたにも関わらず、今年も本格的に導入することができず、ちょっとしたプロトタイプ プロジェクトのビルドやツールとして利用する程度という残念な結果に... とは言え 泥臭い現場では ちょっとしたツールというのが結構大事なんですよね。 でも それを周りにも使ってもらおうとすると 『コマンドライン はちょっと...』 ということ よくありますよね? そこで GroovyFX ですよ!
今回は、前回載せたビルドスクリプトを実行できるビルダーを実装します。 実装に必要なのは 各ノードに対応するファクトリ・クラスを実装する ビルドを実行するビルダーに実装したファクトリ・クラス(のインスタンス)を登録する ファクトリの実装で注目なのは、プロパティを自動で設定してくれる onHandleNodeAttributes() メソッドでしょう。 他にも、既に構築した親ノードに対応するオブジェクトの取得なども行ってます。 ファクトリ まずは、POI に出てくる要素 (Workbook, Sheet, Row, Cell など) を構築するファクトリ・クラスに対して、共通の親クラス PoiComponentFactory を定義しておきましょう。 このクラスは groovy.util.AbstractFactory を継承させます: PoiComponentFactory abstract
Spock0.7でStubを作る機能が追加されました。 http://docs.spockframework.org/en/latest/interaction_based_testing.html#stubs Mockとの違いはデフォルトで返す値が違うとのこと。mockはnullを返しますがstubでは プリミティブ型以外の数字系は0 デフォルトコンストラクタを持つクラスの場合はそのインスタンス デフォルトコンストラクタを持たないクラスや、インタフェースなどはそのスタブ といった感じ。どんな値を返すかはorg.spockframework.mock.EmptyOrDummyResponseで定義されている。すごく小さいクラスなので、ざっとみるだけでもどんな動作をするのかわかると思う。 あとorg.spockframework.smoke.mock.StubDefaultResponses
Groovy AST Browser Improved!の記事に書いたように、Groovy 1.8のGroovy ConsoleはAST変換の過程を見ることができるのです。 では、ファイルでスクリプトのコードが(Groovy Consoleからコピペせずに)欲しいときはどうすれば良いかというと、以下のようにします。 groovy -e 'println(new groovy.inspect.swingui.AstNodeToScriptAdapter().compileToScript("1+1", 9))'すると以下が標準出力に表示されます。 return 1 + 1 public class script1309421611172 extends groovy.lang.Script { private static org.codehaus.groovy.reflection.Cla
このシリーズの一覧はこちら はじめに 前回は自分でクラスを書いて対応していましたが、Groovyのv1.8からJSONは組み込みでサポートされるようになりました。 Groovy本家より この機能は既にGroovyにあるXMLの生成や読み込みをサポートするMarkupBuilder, XmlSlurper, XmlParserのJSON版と捉えると理解が早いです。 ということで、簡単なサンプルをご紹介します。 (動作確認: Groovy Version: 1.8.0-rc-1 JVM: 1.6.0_22) 準備 用意したjsonはこんな内容です。 json.txt [ ["aaa", "bbb", "ccc"], { "key1" : "value1", "key2" : "value2", "key3" : "value3", "key4" : "" }, ["ddd", "eee", "
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く