groovy
Groovyで書かれたBASICインタプリタだそうな。http://groovyconsole.appspot.com/script/192001サンプルコード ' initialize the loop counter count = 10 ' stop looping if we're done top: if count = 0 then end print "Hello, world!" ' decrement and …
つい昨日0.4がリリースされたGroovyServですが、相当バグフィックス入ってるのでお薦めです。GroovyServはGroovyスクリプトの起動を高速化するものですが、Groovyから呼び出すものはGroovyに限りません。つまりJVM上で動くものならなんでも起動の高速化が理…
bashの場合、以下のような関数を定義しておくと便利。 println() { eval "groovyclient -e 'println($*) ' "; }すると、 $ println 3+5*2 30 $ println 'System.getProperty("user.dir")' /Users/hoge $ println 'System.getProperties().keys().findAll{it.…
JGGUG総会とG*Workshop、参加して参りました。会場を提供いただきました、オラクル様、関谷さん懇親会幹事およびLT大会を取り仕切っていただきました、綿引さん、今回もありがとうございました。山田さん、参加者の皆様おつかれさまでした。ありがとうござい…
契約による設計(Design by Contract, DbC)をGroovyで実現する、GContract 1.1.0がリリースされています。http://wiki.github.com/andresteingress/gcontracts/ http://en.wordpress.com/tag/gcontracts/指定できるのは、@Invariant(不変条件), @Require(…
JGGUG主催のG*ワークショップ(+JGGUG総会)がきたる7月24日に開催されます。 JGGUG総会+スペシャルG*ワークショップ 先日0.2版が公開されたGroovyServについてのセッションもあります!そのほかGrails Groovyに関する注目の情報が満載。ご都合つく場合、是非…
Groovyではreturn文において、returnキーワードの省略ができます。たとえば boolean even(n) { if (n % 2 == 0) { return true } else { return false; } } はこうかけます。 boolean even(n) { if (n % 2 == 0) { true } else { false; } } でも、こうは書…
Groovy 1.7.1から、MapにメソッドwithDefaultが追加されています。通常、マップにキーが存在していない場合のデフォルト値はJavaの時代からnullと決まってますが、withDefaultでnullではないデフォルト値を設定することができます。何が嬉しいかというと、た…
注:本記事は、車輪の再発明です。 「例外が発生することを期待するassert」を書きたいときがあります。これを書きたいケースが生じるのは、テストコードや、サンプルコードを書くときです。例外のthrow/catchのコストを考えると、プロダクトコード中にはあ…
ExpandoMetaClassを使って、メソッドを定義するときに、置き換える前のメソッドを呼びたいときがあります。あるんです。以下やりかたです。置き換える前のメソッドを保存しておきます。 def old = Integer.metaClass.getMetaMethod("asType", [Class] as Obj…
groovyには、 def (a,b) = [1,2] assert a == 1 assert b == 2 というようなマルチ代入*1の構文があります。 私は、マルチ代入分の右辺はリストである必要があるのかと思っていたのですが、こちらの記事を読むとそうではなくて、getAtが定義されていればよい…
Trygve Reenskaug氏とJames O. Coplien氏らが提唱する「DCIアーキテクチャ」について、id:digitalsoulさんが論文を翻訳してくださり、またその解説とサンプル実装(groovy, scala)を示してくださっており、読んでみたところ、大変興味深いので理解した限りを…
ThoughtworksアンソロジーのあのThoughtworksが出している「Technical Radar」というレポートがあります。2010年1月のはこちら。InfoQに記事(和訳版)も出ています。これの現時点で最新版である、2010年4月のが出ています。 http://www.thoughtworks.com/s…
前の記事に書きましたが、id:kskyさんが記事「Groovyの「静的型付け」はホンモノか!?」でも考察されているように、Groovyの「静的型付け」は、Javaのようなコンパイル言語でのそれとは違った意味合いがあります。その違いを細かく考えると、静的型付けには、…
Android上でgroovyを動かすには、discobotというものを使います。これはGroovyに対するパッチ群を中心としたもののようです。 準備 JDK,Android SDKをインストールしておきます。Eclipse plugin(ADT plugin for eclipse)は使わない方向で。 ダウンロード dis…
Groovyにはオプショナルタイピングという概念があって、これは要するに変数宣言、メソッドの返り値や引数の宣言において、型指定を省略する事も、しないこともでき、適切な方を選べるという事です。ささっと書きたいときは省略し、安全性を期待するときは指…
前にちょっと紹介した、Groovy++のv0.2がリリースされました。 http://groovy.dzone.com/articles/groovy-v02-small-version ちょっとしたドキュメントがついてます。インストールせずにいろいろ試せるGroovy++Webコンソールというものも作られています。「…
curry化の話。GroovyのClosure#curry()は「カリー化」じゃなくて部分適用だと言われる事があります。なんでそうなんだという話を私の理解している限りで説明してみます。まず、カリー化というのはラムダ算法方面の話で、関数適用に関する概念です。たとえば…
以下が面白そうなので参加してみますね。今定員の半分ぐらい埋まっているみたい。 ご興味のある方はご検討ください。 Paul King氏特別講演開催決定! ============================4/19,20に開かれるQConでの講演のため、Groovyの主要コミッタで、"Groovy in…
GrUnitというものができたようです。これは何かというと、ざっとみたかぎり、「Groovyでもっと簡単にGroovy流儀でテストを書けるようにする」というもののようです。今のところ、これはGroovy++に付属する機能であるようです*1。 http://groovy.dzone.com/ar…
まえに、Groovyのsortにまつわる衝撃の事実という記事で、Groovyには簡単に複数のキーでソートする方法があるとおもってたけど実は存在しなかった、という事を書きました。複数のキーでのソートとは、例えば"Groovy list.sort by first, second then third e…
クラスにWithLogアノテーションというのを指定すると、Log4Jのロガーをインジェクトしてくれる。log4j以外にも切り替えら得たりできるかは不明。まあある形で「初期化コードの分離」ができているから原初的なDIとは言える。
以前予告編として紹介した、Groovyを常駐サーバ化して、見た目の起動速度を高速化するGroovyServの0.1版をApache Lisence 2.0に基づくOSSとして公開しました。GroovyServを使う事で、Groovyの起動がRubyやPerlのように速くなります。これにより、「JVM上のス…
さっき書いたenumの記事で思い出したのでご紹介ですが、フランスのINRIAがやってる(やってた?)Spoonというプロジェクトがありまして、これはなにかというと、Javaのコンパイラを拡張して、特定アノテーションの指定をきっかけとしてコンパイラのコード生成と…
Javaのenumは、ご存知のようにクラスの特殊なものです。その実体は、複数個数のシングルトンすなわち「N-ton」のさらに特別な場合としての、クラス初期化時に固定個数が生成される(サブクラスの)インスタンスの集合ですね(あとそれにプラスして多少の言語…
2.0になって良くなったと言われるGroovy-Eclipse plugin 2.0.0.xxをしばらく使ってました。前バージョンを使ってたわけではありませんので、以下で書いてることは2.0の機能なのか1.0から引き続きなのかは不明。 うれしい点 クラスを使用したとき、対応するim…
ご存知だと思いますがGroovy++というのがあります。(山本さんも記事書いてます。LT発表もされています)。この名を聞くと、Cに対するC++のような、Groovyを拡張した別の言語のように思えますが、違いまして、利用者からすると、「Groovyコードの中で@Typedア…
Groovyのダウンロード形態として、Windows版には「インストーラ版」というのがあります。それを選んでインストールすると、インストール時にEasyb,Gaelyk,Gant,GPars,Griffon,Spockなどが追加パッケージとして選択できます。意外だったのが、Gaelykが入って…
id:kiy0takaさんが、d:id:kiy0taka:20100120#1264001023にて「Groovyの起動を速くするという記事を書かれています。非常に短く、簡潔に実装されています。-lオプションの良い利用例ですね。コマンド名もいい。あと、そうなんですよ。言いっぱなしになってま…
2009年の10月ぐらいに「Prototype style OOがGroovyに採用」という話をtwitterで聞いて、わたしもRTしました。http://topsy.com/tb/jira.codehaus.org/browse/GROOVY-1523んで、あれはどうなったかなーと思って調べるとどうやら上の形での採用はされていませ…