読者です 読者をやめる 読者になる 読者になる

No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

実行時にGroovyのバージョンを調べる

groovy:000> GroovySystem.version ===> 1.9.0-beta-3

お前に本当のカリー化を見せてやろう、Groovyで

はじめに 思いの外話題になっているようなので、Groovyでちゃんとしたカリー化をする関数を書いてみました。ちょっとタイトルはあれですがお許し下さい。 こんな感じでいいんですよね?(ツッコミ大歓迎) ここでは、addが引数を3つ取って、加算するクロージ…

Groovyでは全要素に対してゲッターを呼ぶような時は*.の*が省略できる

はじめに GPathって言うんでしたっけ?こういうの。 サンプルを見た方が早いので説明はそちらで。 コードで語る まず、こんなクラスを用意する。 class A{ def getName(){ 'a' } } class B{ def getName(){ 'b' } } class C{ def getName(){ 'c' } } そして…

お題:アラビア数字・ローマ数字変換

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 アラビア数字 ローマ数字変換を行う関数、arabicToRoman および romanToArabic を実装せよ。 条件) ・…

お題:フルパスから相対パスを求める

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 二つのフルパスを受け取り、一つ目のパスから二つ目のパスへの相対パスを返す関数を実装せよ。 条件) …

お題:FizzBuzz(Nパターン)

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 1から100までの数をプリントするプログラムを書け。 ただし、[3, "Fizz", 5, "Buzz", 7, "Hoge"] のよ…

Groovyでメソッドのエイリアスを作成してみた

そういやコレクションのcollectメソッドという名称がいまだにしっくりこない。このメソッド名って日本語でいえば何になるんだべ?Rubyではmapって名のほうばかり使ってる。。。2011-08-10 08:40:23 via ちーたん Groovyからの回答 なら、エイリアスを作っち…

GroovyのPowerAssertの力を享受するなら、引数は1つの方を使わないとダメらしい

論よりコード。 動作確認バージョン $ groovy -v Groovy Version: 1.9.0-beta-1 JVM: 1.7.0-internal test.groovy def str = 'abc' assert 'わざと間違う' == str 結果 $ groovy test.groovy Caught: Assertion failed: assert 'わざと間違う' == str | | | …

お題:ある金額になるコインの組み合わせ

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 ある金額になるコインの組み合わせ数とその組み合わせを全て答え下さい。 条件) ・コインの種類は自由…

お題:文字列を先頭から見て同じところまで除去

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 複数の文字列を受け取り、受け取った文字列をそれぞれ先頭から見てゆき、すべてが同じ内容であれば除去…

Mac OSXにOpenJDK7をインストールしてGroovyを実行する

こちらの@yusukeyさんの記事を参考にMac OSXにOpenJDK7をインストールしてGroovyを実行するところまで試してみたのでメモしておきます。 1.まずはOpenJDK7をダウンロード Mac OSX用のバイナリが以下から手に入るのでダウンロードしてきます。 http://code.go…

GroovyなJDK、それがGDK(java.util.List編)

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

Gradleで--daemonオプションを付けた際にnew Fileするとうまくいかない

はじめに --daemonオプションは高速起動するためのオプションなんですが、まだexperimental(実験段階)なんで何があっても自己責任でお願いしますということです。 $ gradle -h (省略) --daemon Uses the Gradle daemon to run the build. Starts the daemon …

Groovy v1.8.1とv1.9-beta-1の新機能をサクっと紹介するよ

このシリーズの一覧はこちら はじめに 2011-07-21にGroovy v1.8.1とv1.9-beta-1が同時リリースされたようなので、その新機能の一部をサクっと紹介します。 1. プリミティブ型演算のパフォーマンス最適化 割愛*1 2. ストリーミングビルダー(StreamingJsonBuil…

猫にもわかるSwingBuilder「frame」

このシリーズの一覧はこちら はじめに 自分のSwing力の無さに愕然としたので、ちょこちょこサンプルを作ってはまとめてゆく。故にちょこちょこ記事は加筆修正されてゆく予定です。 まず何はともあれframeを作らないと始まらないですよね、ということでframe…

現場で使えるGroovy(その3)「JavaにREPLが無いならgroovysh, groovyConsoleを使えばいいじゃない」

このシリーズの一覧はこちら はじめに ご存知の通り、JavaにはREPLがありません。しかし残念がることはありません、そう、あなたにはGroovyが付いています。 Groovyがこれらの特性とJavaとの親和性を高いレベルで同時に実現していることです。 (中略) ・Ja…

「1000以下の回文素数で最大のものを示せ」をGroovyでやってみた

はじめに 1000以下の回文素数で最大のものを示せ - Kumappusの日記 をGroovyでやってみた。 説明 素数を求める部分は素数を求める - ゲンゾウ用ポストイット-newを使わせてもらいました。 どうもソースが冴えない。もっといい方法があるはず。改造したよ!っ…

Groovyでリスト内包表記(その2)

はじめに Groovyでリスト内包表記 - No Programming, No Lifeの記事にfujwaraさんより、Scalaでは以下のようにできるけど、Groovyではどうやればできるの?とコメントをいただきました。 手始めにGroovy流に書いてみる うん、ほんとはこれでいいと思うんだけ…

Groovyの再帰処理(trampoline)についてひとつ分かったこと

はじめに Groovyのクロージャ(Closure)には.trampolineってメソッドがあって、これをうまい感じに使うと末尾再帰を最適化してくれる。 よしやってみよう では、簡単な合計値を求めるサンプルを再帰処理で。 java.lang.StackOverflowError お約束。 よし、今…

Groovyでdo-whileループを!

はじめに No 'do ... while()' syntax as yet. do ... while() 構文はまだないよ! Due to ambiguity, we've not yet added support for do .. while to Groovy 曖昧だもん、だからGroovyのサポートにはまだdo ... while()ループは追加してないんだからね! …

Groovyでスリープソートとバケットソートをやってみた

はじめに ちょっと前にスリープソートが流行ってたので、それをid:orangecloverさんが実装していたのを見て、id:nobeansさんがさらに添削していたものを参考に書いたコードが下のようになりました。 スリープソートって スリープソートって、あるデータのも…

I made jar that adding Groovy's logo on your icon

(◕ ‿‿ ◕)Groovee Please contract with me, and will be a Groovyist!! This is a groovy badge, generated by contract in exchange. (This is parody of Japanese Anime "Madoka Magica") How to use First, download this jar. Using by GUI Double click…

アイコンにGroovyのロゴを追加するjarを作りました 

(◕ ‿‿ ◕)グルーべぇ 僕と契約して、Groovyistになってよ! 契約と引き換えに出来上がるのがGroovyバッジ。 契約方法 まずは、ここからjarをダウンロードして下さい。 GUIで使う jarをダブルクリックして起動 配置場所や縮小率などを調整 ウィンドウにアイコ…

ぼくのかんがえたUserscript

一覧化しておくための記事です。 順次追加して行きます。(動作確認のFはFirefox with Greasemonkey, CはChromeにて動作確認済み) 英語・語学の学習情報サイト「スペースアルク」:地球人ネットワークを創るアルク 向け 名称 インストール 説明 動作確認 ALC …

Groovyのtrampolineを使ってピラミッドのお題を解いてみた

お題はなつかしのどう書く?orgのもの。 Server error ソースコード 解説 計算したくない、再帰で書きたいと思った、そこでトランポリンですよ! ソース上に示したHINTみたいなリスト構造をつくって、エイヤで出力しています トランポリンしてるので、4段じ…

Erlang基礎文法ひとめぐり

はじめに ErlangかわいいよErlang。 ピリオド ピリオドは式の終わりを表す。 式. コメント コメント %から行末までがコメントになる。ブロックコメントはない。 % コメント %% コメント NOTE: 慣例として%%がよく使われる。 簡単な演算 1> 2 + 3 * 4. 14 2> …

Groovyで@Categoryを使ってカテゴリクラスを作成する

@Categoryアノテーションを付けるとそのクラスをカテゴリクラスにできますよというサンプル。この機能はObjective-Cのカテゴリ由来のようです*1。 以前までは第一引数にメソッドを追加したい型をパラメータself*2として付けたstaticなメソッドを宣言してやる…

Groovyソースコード斜め読み(その3)「GDKのメソッドはDGM、DGSMに定義されている」

このシリーズの一覧はこちら はじめに org.codehaus.groovy.runtime.DefaultGroovyMethods (JavaDoc) org.codehaus.groovy.runtime.DefaultGroovyStaticMethods (JavaDoc) というクラスをご存知でしょうか。実はGDKによって拡張されたメソッドの実態はこのク…

Groovy v1.8の新機能をサクっと紹介するよ

このシリーズの一覧はこちらGroovy v1.8リリースノートより。 はじめに 待ちに待ったGroovy v1.8がやっと出ましたね!ということで、Groovy v1.8の新機能をサクっと紹介したいと思います。 Groovy v1.8は結構多くの機能拡張がなされておりますので、サラっと…

気になってたSpockを試してみた

Groovy!(挨拶) はじめに SpockはGroovy製のBDDフレームワークです。前から気になっていた*1ので是非試してみたいなと思っていたら、 id:backpaper0 さんが はじめてのSpock - 裏紙 で試していたので、私も試してみました。といってもやった内容はほぼコピ…

5分で理解するProject Coin

はじめに そろそろJDK7が登場する時が近づいてきたのでJavaプログラマならProject Coinを先取りして予習しておくべき時期になってました。Project CoinというのはThe Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR#…

Groovyならインタフェースはクロージャとマップで実装できる

はじめに インタフェースは機能仕様と実装を切り離す素晴らしいアイデアです。Javaではinterfaceキーワードでこの機能を提供しています。が、Javaだとこれを実装するのが意外と面倒くさいんですよね。 Javaだとこうなる Readable r = new Readable(){ int re…

ゼロから2時間で作るGroovy DSL

はじめに この記事はA Groovy DSL from scratch in 2 hours | Groovy Zoneを意訳したものです。訳者の力不足により翻訳に未熟な部分が多数あると思われますこと、ご勘弁願います。 ゼロから2時間で作るGroovy DSL 今日はついてるな。DZoneでArchitecture Ru…

こだまでしょうか、いいえ、Groovyです。

「pom.xml書くのめんどい」っていうと「Gradle」っていう。「静的が良い」っていうと「Groovy++」っていう。「起動が遅い」っていうと「GroovyServ」っていう。「マルチコア」っていうと「GPars」っていう。「ウェブアプリ」っていうと「Grails」っていう。…

Ruby基礎文法ひとめぐり

はじめに やっぱり日本人ならRubyをやっとくべきかなと思いとりあえずひとめぐりしてみることにした。文法がGroovyに似ていることもありこれまで "わかったつもり" でいたのを払拭していきたいと思います。 表示 print が改行なし puts が改行あり p は主に…

Re:今流行のお題を出してみた(一方通行を許可した迷路を作成)

はじめに 元ネタはこちら。前から取り組んでいたのですが、仕様が複雑なのとアルゴリズムを考えてたら頭がこんがらがってきてしまっていたのと、新年度が始まったので色々と忙しかったので、なかなか取り組めてなかったのですが、力技で作ったやつを公開して…

お題:時間帯重複チェック(応用編)

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 前回の時間帯重複チェックについて、後日、お客様から仕様変更を言い渡されました。 仕様変更の内容は…

Gosuをインストールしてみた

前から気になっていたGosuをインストールしてみました。たぶんGosuは日本ではほとんど流行っていないのでご存知ない方も多いかもしれないので補足しますとJVM上で動くプログラミング言語の一つです。インストール方法は簡単で、よくあるパターンの アーカイ…

Groovyでクラスにプロパティをくっつける

はじめに プロパティは オブジェクト.プロパティ の形式でアクセス可能なものです。Groovyの場合は引数を取らないクロージャとして定義することができます。 サンプルコード 解説 プロパティをくっつける方法は二つあります。 その1. ゲッターで定義 Object…

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

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

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

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

お題:時間帯重複チェック

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 ある二つの時間帯(日をまたがない)が重複しているかどうかをチェックする処理を書いて下さい。 時間帯…

お題:ランダム文字列

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 半角英数からなる16桁の文字列をランダムに生成して下さい。使用できる文字は 'a'から'z', 'A'から'Z'…

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 == …