タグ

ブックマーク / npnl.hatenablog.jp (21)

  • メタプログラミングGroovy入門 - No Programming, No Life

    Groovy!(挨拶) 最近Groovyであまり遊べていないfumokmmです。G* AdventCalender2012の10日目ということで、久々に記事を書かせていただいております。 せっかくの機会なので、Groovyでメタプログラミングする際のとっかかり部分をまとめてみました。自分の理解が至らないところがあると思いますので、変なところがあったらツッコミよろしくお願いします。では早速スタートです。 Groovyでメタプログラミング GroovyではあらゆるクラスにExpandoMetaClassと呼ばれる特別なクラス(メタクラス)が提供されていて、メソッドやプロパティを利用する際にこのメタクラスを経由して様々な力を得ることができます。 たとえば、メタクラスに実行時、動的にメソッドを定義してあげれば、あたかも初めから存在していたかのようにそのメソッドが利用できるようになるという寸法です。

    メタプログラミングGroovy入門 - No Programming, No Life
    kanemu1117nc
    kanemu1117nc 2012/12/10
    よくわかってない内容だったので助かる
  • Scriptomがうまく動かない - No Programming, No Life

    Scriptomを使おうかなと思ったんだけど、エラーが出てしまってどうもうまく動かない…。 ちなみに、うちのPCにはGroovy 1.5.7 Windows-Installer版を使ってインストールしてあるので*1、Scriptomは最初から入ってるはずなんだが…。 以下の%GROOVY_HOME%\supplementary\Scriptom\examples.zipに入ってたIE.groovy*2を実行してみたんだが、だめでした。 import org.codehaus.groovy.scriptom.*; Scriptom.inApartment { def ie = new ActiveXObject('InternetExplorer.Application') ie.Visible = true ie.AddressBar = true ie.Navigate("http://

    Scriptomがうまく動かない - No Programming, No Life
  • Groovyのチートシート - No Programming, No Life

    当記事は、Groovyのチートシート | Think Twiceへ移管しました。

    Groovyのチートシート - No Programming, No Life
  • Groovy v1.8の新機能をサクっと紹介するよ - No Programming, No Life

    このシリーズの一覧はこちら Groovy v1.8リリースノートより。 はじめに 待ちに待ったGroovy v1.8がやっと出ましたね!ということで、Groovy v1.8の新機能をサクっと紹介したいと思います。 Groovy v1.8は結構多くの機能拡張がなされておりますので、サラっと行きたいと思います。 コマンドチェーン(ドメイン固有言語:DSL) Groovy v1.8以前まではトップレベルでのメソッド呼び出しの括弧は省略できませんでしたが、新しいコマンドチェーン機能を使えば括弧なしのメソッド呼び出しが可能になります。 これは、a b c d のように呼び出した場合は実際には a(b).c(d) と同等となるようなことです。複数メソッドやクロージャ、名前付き引数と一緒に機能して、さらに右側に連ねてゆくことができます。 新しい構文でサポートされている例を見てみましょう。 turn le

    Groovy v1.8の新機能をサクっと紹介するよ - No Programming, No Life
  • ゼロから2時間で作るGroovy DSL - No Programming, No Life

    はじめに この記事はA Groovy DSL from scratch in 2 hours | Groovy Zoneを意訳したものです。訳者の力不足により翻訳に未熟な部分が多数あると思われますこと、ご勘弁願います。 ゼロから2時間で作るGroovy DSL 今日はついてるな。DZoneでArchitecture Rulesという小さくて素敵なフレームーワークのJDependの抄録を見つけたからだ。 Architecture Rulesは自分自身のXMLスキーマによって設定されます。これが例です。 <architecture> <configuration> <sources no-packages="exception"> <source not-found="exception">spring.jar</source> </sources> <cyclicaldependency t

    ゼロから2時間で作るGroovy DSL - No Programming, No Life
    kanemu1117nc
    kanemu1117nc 2011/04/20
    あとで。
  • GroovyのString(Groovy JDK)にいつの間にか#trメソッドが追加されてた - No Programming, No Life

    はじめに もう、追加したんなら言ってよぉ〜(笑) ということで、v1.7.3から追加されてたみたいです。 前に自分でtrコマンドを書いたりしてたんですが標準サポートされるなんて嬉しい限り。 ということで早速使ってみた。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) tr.groovy // すべての 'a' を 'A' に変換 assert 'abcabcabc'.tr('a', 'A') == 'AbcAbcAbc' // a->b, b->a assert 'abcabcabc'.tr('ab', 'ba') == 'bacbacbac' // 範囲もいける assert 'Groovy is so fun!'.tr('a-zA-Z', 'A-Za-z') == 'gROOVY IS SO FUN!' assert '123456789

    GroovyのString(Groovy JDK)にいつの間にか#trメソッドが追加されてた - No Programming, No Life
  • Groovyなら1行でできる97のこと - No Programming, No Life

    タイトルはまぁあれですが、Groovyって結構ワンライナーで出来ちゃうことが多いよねということで、みんなで97個(+αそれ以上)の一覧を作っちゃいませんか?という企画です。 以前jggugで行われていたg100ponみたいな感じでできたらいいなと思ったので、Google Docsのスプレッドシートで共有してありますので、こんなのあるよ!というのがあったらみなさんでどんどん追加して行っちゃって下さい。よろしくお願いします。 97 Things Groovy can runs by one liner http://bit.ly/97_Things_Groovy_can_runs_by_one_liner ※Twitterでつぶやく際はハッシュタグ (#groovy97oneliner) でお願いします。 ※ちなみに、順番はあとで並べ替える可能性があります。 参考リンク プログラマが知るべ

    Groovyなら1行でできる97のこと - No Programming, No Life
  • GroovyでJSONを使おう(その2) - No Programming, No Life

    このシリーズの一覧はこちら はじめに 前回は自分でクラスを書いて対応していましたが、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", "

  • JavaからGroovyへ移行する簡単なステップ - No Programming, No Life

    この記事は From Java to Groovy in a few easy steps | Groovy Zone の和訳です。思いっきり意訳です、あしからず。 GroovyとJavaは、いとこみたいに近い存在で、構文がとても似ているからJava開発者にとってGroovyを覚えることはとても簡単です。Javaプログラムのほとんどはそのまま、有効なGroovyプログラムなんです!でも、Groovyを学ぶようになるとそのうちにGroovyに用意されている気の利くデフォルト値やGStringなどショートカット記法を使うようになっていくでしょう。 この記事では最初にJavaプログラムを取り上げ、それをGroovyに置き換えてゆくプロセスをご紹介します。まずは少々馬鹿げているかもしれませんが、複雑なHello Worldプログラムから始めることにしましょう。後の方の記事ではより高度な例をご紹介し

    JavaからGroovyへ移行する簡単なステップ - No Programming, No Life
  • Java使いをGroovyに引き込むサンプル集 - No Programming, No Life

    はじめに Java使いをScalaに引き込むサンプル集 | mwSoft のGroovy版を書いてみました。 記事中に登場するサンプルコードや文章など多くの部分を引用させていただいております。 (動作確認: Groovy Version: 1.7.7 JVM: 1.6.0_22) 前書き Groovyという言語をご存知ですか? Javaと同じくコンパイルされるとclassファイルになり、実行時はJVM上で動作し、またスクリプトとしても記述可能なオブジェクト指向スクリプト言語です。 Groovyは後発の言語ということもあって、Javaを書いている時に感じる冗長さに対する様々な解が用意されています。 記事では、GroovyとJavaのコードを比較しながら、JavaユーザがGroovyに移った際に得られるメリットを提示していきます。 尚、序盤のサンプルコードはJavaユーザに伝わりやすいように

    Java使いをGroovyに引き込むサンプル集 - No Programming, No Life
  • Groovyのwith - No Programming, No Life

    Server error のコードを見ていて、withがあることに気づいた。 withのこと - Grな日々(uehajの日記) あたりを見て使用法がやっとわかった。 使用例 既存クラスのCalendarとかだとこんな感じに使える。 def calendar = Calendar.instance calendar.with { clear() set MONTH, JULY set DATE, 4 set YEAR, 1776 println time } withの中では変数calendarのフィールドやメソッドが "calendar." の指定なしに使えるわけですね。 ちょっとテスト 実現方法はクロージャでデリゲートしている模様。ステートメントじゃなくてクロージャとして機能提供するあたりがGroovyっぽくて素敵。 id:uehaj さんのところではmetaClassを使って試してい

    Groovyのwith - No Programming, No Life
    kanemu1117nc
    kanemu1117nc 2011/02/12
    withあったんだ!
  • Groovyスクリプトをダブルクリックで実行できるjar形式に変換するGroovyスクリプト - No Programming, No Life

    はじめに ちょっとタイトルがまどろっこしいですが、要するにexecutable-jarをAntBuilderを利用して作っちゃいましょうという話題です。これは便利!これでGroovyスクリプトの配布が楽になるかも。 とても簡単にGroovyスクリプトを配布可能&実行可能なjarにまとめることができます。 Chipotle Mexican Grill というページをたまたま発見しまして、これを利用することで簡単にできるようです。 以下にexecutable-jarを生成してくれるGroovyスクリプトを載せます。*1 GroovyWrapper.groovy 適当なフォルダにたとえば以下のようなスクリプトファイルを置いて hello.groovy cd ${適当なフォルダへのパス} groovy GroovyWrapper.groovy -c -m hello これで完成。 出来上がったja

    Groovyスクリプトをダブルクリックで実行できるjar形式に変換するGroovyスクリプト - No Programming, No Life
  • GroovyCSVを使ってみた - No Programming, No Life

    はじめに id:fitsさんが、こちらにてCSVを処理されているのを拝見しまして、GroovyでCSVを処理する場合、そういえばGroovyCSVがあったなぁと思い出したので使ってみたよという記事です。 こんな感じ サンプルは元記事と同じです。 @Grabが使えるので楽チンですね。 parseCSV.groovy // see. http://xlson.com/ // https://github.com/xlson/groovycsv @Grab('com.xlson.groovycsv:groovycsv:0.2') import com.xlson.groovycsv.CsvParser def csv = new File('test.csv').text def data = new CsvParser().parse(csv, separator: ',', quoteCha

    GroovyCSVを使ってみた - No Programming, No Life
  • GroovyのConfigSlurperがめっちゃ便利 - No Programming, No Life

    はじめに 日参加してきたGrailsドキュメント会にて紹介されていたConfigSlurperをちょっと調べてみたらめっちゃ便利だったのでメモしておきます。*1 で、ConfigSlurperって何? 簡単に説明すると、groovyファイルで各種設定系定義を書いておいて使いましょうというノリのものです。groovy.utilパッケージに含まれているクラスですのでデフォルトでインポートされています。 機能としては ドット区切りで階層指定できたり クロージャで階層指定できたり プロパティファイル(java.util.Properties)からもパースできたり 設定同士をマージできたり 設定をエクスポートできたり 環境によって設定の値を変えたり 変数をバインドしたり できるようです。では簡単に使用例をば。 動作確認 (Groovy Version: 1.7.5 JVM: 1.6.0_22) 使

    GroovyのConfigSlurperがめっちゃ便利 - No Programming, No Life
  • GroovyでBuilder系の定義ファイルの外出しする - No Programming, No Life

    はじめに GroovyはほにゃららBuilderが充実していますが、ちょっとだけ不満点を挙げるとしたらそれはコードに直接埋め込まなければいけないことではないだろうか。 new HogeBuilder().aaa { bbb (ccc: 'ddd') { eee() { . . . } } } こんな感じに。 そこで このBuilder定義部分*1を別ファイルなどに外出しにできないか?と思って、色々試してみたところできました。以下にソースを載せます。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) サンプルとして前に書いたMarkupBuilderでHTML生成を試してみた - No Programming, No Lifeで利用したソースを改造しました。 markup.groovy import groovy.xml.MarkupBuilde

    GroovyでBuilder系の定義ファイルの外出しする - No Programming, No Life
  • お題:テストの実装 - No Programming, No Life

    プログラミングお題の一覧はこちら ※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 テストドリブン開発が主流になってきていますね。そこで各言語でJUnitのようなテストを実装して下さい。 解いてみた Groovyで解いてみた (2010-10-13更新) Groovy (2010-10-13更新) GroovyTestCaseを利用。 一覧へ戻る

    お題:テストの実装 - No Programming, No Life
  • Groovyでjava.text.Collatorを試してみた - No Programming, No Life

    はじめに こちらにて、java.text.Collatorの使い方が示されていた。 知らなかったんですが、このCollatorというクラスはソートで使うらしく、通常のソートではUnicode順になってしまうところを良きに計らってくれるようです。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) おわりに 使いどころがいつか来るかもしれないのでメモということで。 なお、コードは参考にさせていただいたサイトのものをGroovyで書いただけです。詳細はリンク先でどうぞ! 参考 java.text.Collatorによる、それっぽい日語ソート : mwSoft blog

    Groovyでjava.text.Collatorを試してみた - No Programming, No Life
    kanemu1117nc
    kanemu1117nc 2010/09/28
    後で試そう。
  • Groovyで頻出なコードの書き方のチートシート - No Programming, No Life

    ※こちらの記事は Groovyのチートシート - No Programming, No Life へ転載致しました。 Groovyリファレンス系記事の一覧はこちら はじめに Groovyで頻出なコードの書き方のチートシート集。 動作確認はGroovy Version: 1.5.7 JVM: 1.6.0_10にて。 リスト (2009-01-27 更新) assert [].size() == 0 assert [1,2,3,4] == (1..4) assert [1,2,3] + [1] == [1,2,3,1] assert [1,2,3] + 1 == [1,2,3,1] assert [1,2,3] << [1] == [1,2,3,[1]] assert [1,2,3,1] - [1] == [2,3] assert [1,2,3] * 2 == [1,2,3,1,2,3] as

    Groovyで頻出なコードの書き方のチートシート - No Programming, No Life
  • Groovy基礎文法最速マスター - No Programming, No Life

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

    Groovy基礎文法最速マスター - No Programming, No Life
  • POIのHSSFを使ってExcelに画像を挿入 - No Programming, No Life

    POIのHSSFを使って画像を挿入したExcelファイルを作りたいって要望があったんで、用意したJpeg画像をExcelに挿入するテストを行ってみました。ネットとかで軽く探してみると、POIは画像挿入できないよ的な情報が多かったもので出来るのか不安だったが、出来たんで良しとしよう。コーディングは例によって練習も兼ねてGroovyで。*1 以下、ソースです。*2 import org.apache.poi.util.* import org.apache.poi.hssf.usermodel.* /* ブック作成 */ def book = new HSSFWorkbook() /* シート作成 */ def sheet = book.createSheet("画像挿入テスト") /* 画像をストリームで読み込む */ def bytes = IOUtils.toByteArray(new

    POIのHSSFを使ってExcelに画像を挿入 - No Programming, No Life