groovy
groovy 1.8からは、「int i = null」はエラーです。 $ groovy -e 'int i=null' Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'null' with class 'null' to class 'int'. Try 'java.lang.Integer' instead at …
以下で周知させていただいた、「g*workshop 14th, 「Groovyの使い倒し方、Hudsonの場合」他」ですが、いったん満席となったものの、調整され、今ちょっとだけ人数に余裕があるようです。http://d.hatena.ne.jp/uehaj/20110210 http://kokucheese.com/event/i…
来る2/24、Hudson改めJenkinsの開発者、川口耕介さんが来日するのにあわせ、G*ワークショップが開催され、じきじきにHudon&Groovyの話がお伺いできます。日本を代表するJavaハッカーの川口さんがいかにGroovyを使い倒しているか聞いたら凄いことになりますね…
1/24日、DevLOVEのぐるぐるGroovyでCCCでやった「気楽に使おうGroovy」の再演をしてまいりました。会場を提供いただきましたクラスメソッドさま、参加者のみなさん、DevLOVEのみなさん、ありがとうございました。様子をid:kimoku26さんがTogetterしてくれま…
昨日trampoline()について書きましたが、今日はtrampoline()で相互再帰もできますという話。まずはtrampoilne()使わないバージョン。 oddp = { n -> if (n==0) { false } else evenp(n -1) } evenp = { n -> if (n == 0) { true } else oddp(n - 1) } printl…
Closure#trampoline()はGroovy 1.8の新機能の1つです。何かっていうと、「明示的な末尾再帰の指定*1」を行うためのものです。これを使うと実際には再帰じゃなくなります。ループになります。スタックを消費しなくなります。だから正確に言うと、「いっけん再…
Groovy 1.8.0 beta 2 から@Field*1というAST変換アノテーションが使えるようになっています。これは何かといいますと、いままではスクリプト中で int x = 3 def y() { println x } y() の様に書くとエラーになっていました。なぜならxは、このスクリプトが実…
メーリングリストを眺めてたら目にとまった、「ANTLRパーサプラグインを作成して、Groovyコードに任意の加工を行う」というテクニックをご紹介。Groovy web console - Custom antlr parser pluginここではメソッド呼び出しの括弧を挿入しているようです(GEP3…
Javaと同等レベルに高速に実行できるGroovyコードを書く方法が紹介されてます。 Yes, Fibonacci in Groovy can be as fast as Java ! こんなスクリプトです。 @ast.Bytecode int fib(int i) { l0 iload 1 iconst_2 if_icmpge l1 iconst_1 _goto l2 l1 frame …
Groovy用の静的解析ツールであるCodeNarcの0.11リリースのアナウンスが出ています。Groovy版checkstyleと思えばよろしい。今バージョンではチェックルールが増えたようです。業務開発ではコーディング規約を揃える必要がありますが、これを使うとGroovy開発…
昨日、「STSにおいてGroovyデバッグサポートが向上した」という記事を書きました。これは、SpringSource Team Blog]の記事を読んだだけで書いたのですが、今日は実際に試してみました。デバッグ時の「式の評価」機能については、勝手な思い込みとして、「実…
当日リマインダーですが、本日、今年最後のJGGUG G*WSがあります。 http://www.jggug.org/news/13th_g_workshop 2010年12月9日(木)、青山の日本オラクルセミナールームにてJGGUGの定例イベント、 G*ワークショップを開催します。今回は年末スペシャル!通常…
SpringSource Team Blog]によれば、STS 2.5.1では、EclipseにおけるGroovyデバッグサポートの機能が向上しているようです。STSというのはEclipseのSpring関係詰め合わせパックです。要約すると、 1. Step in/Step outで、いままではreflection and cached ca…
JGGUGの月例勉強会「G* Workshop」が11月9日に行われます。http://kokucheese.com/event/index/5267/DCIアーキテクチャ、合宿企画報告、JavaOne参加者が語る海外Groovy/Grails事情など、興味深いところがもりだくさんです。ぜひご参加ご検討ください。 JGGUG…
ハイウェスト日記経由で、「Groovy 1.8 beta3 からClosureのメモ化ができるようになった」とのことを知り、情報を探してみました。 Implement closure memoization, like in GPars を読むとクロージャに以下の3つのメソッドが追加されています。 memoize() m…
本日、JJUG CCC 2010にて、Groovyのプレゼンをして参りました。コマ割りの都合上、和気あいあいと、フレンドリーに発表ができ「勉強会状態」でした。http://twitter.com/#search/%23CCC10の最後の方で皆様がつぶやいてくれています。ありがたいです。JVM言語…
知っている人には、今さらですが、HtmlUnitというものがあります。名前からするとxUnit系の、ユニットテストツールのような気がするかもしれませんが、違うよ!全然違います。誤解を招く名称です*1。これはGUIレスなブラウザなのです。GUIがないだけでなく、C…
groovyをコンパイルする際に一部のユニットテストだけを実行する方法。 ant -DtestCase=groovy.RegularExpressionsTest test ant -DtestCase=groovy.GroovyMethodsTest test こんな感じ。
こないだのエントリで書いた、日本語DSLのサンプルコードが、ただいま開催されているJavaOneにおけるPaul King氏のセッションで紹介されたとのことです。@nobeans: [DSL/Groovy]@uehajのDSLがJavaOneで晒された瞬間 URL #javaonejp2010-09-24 09:13:59 via Y…
Groovy Web Consoleを見ていて気づいた事ですが、Groovy 1.8ではクロージャに対する演算子>で関数合成ができるようになってますね。 def twice = { a -> a * 2 } def plus3 = { a -> a + 3 } def t1 = twice >> plus3 def t2 = twice << plus3 assert t1(1) …
注意:以下の内容はGroovy 1.8のβ(9/19時点のtrunk)で試した結果を元にしています。最終版では異なってくる可能性があります。前に「Groovyの日本語DSL」という記事を書きましたが、前に紹介したGEP3の機能(Groovy 1.8系でのみ利用可能)を使って、括弧やピリ…
旧聞に属しますが、ちょっと前に流行った括弧ゴルフ(括弧をなるべく使わずに階乗を計算するやつ)をgroovyでやってみました。 a = args as List a += '1' a.putAt 1, 'x' a -= 'x' s = a as String c = s.chars c.putAt 0, " " minus1 = -1 c.putAt minus1, "…
Groovy 1.8ではGEP3という機能拡張が予定されていて、それは何かと言うとカンマや括弧の解釈の優先度とか省略ルールを変えることで、「メソッド呼び出しっぽくなく」英語のようにメソッドが呼べるようになると言うものです。以下、glaforge氏による実行可能…
http://groovy.dzone.com/articles/512000-concurrent-websockets?utm_campaign=toya256ForRSS&utm_medium=twitter&utm_source=am6_feedtweetによれば、GrettyとはNettyを使っており、Groovy++で書かれており、超軽量でノンブロッキングなイベント駆動のWeb…
結論:予想通り、あまり嬉しくないやってみた。 $ alias gs_grails="groovyclient -cp $GRAILS_HOME/lib/groovy-all-1.7.4.jar:$GRAILS_HOME/dist/grails-bootstrap-1.3.4.jar:/System/Library/Java -Dgrails.home=$GRAILS_HOME -e 'org.codehaus.groovy.gra…
http://groovyconsole.appspot.com/script/202001にも投稿しましたが、 java.util.regex.Matcher.metaClass.call = { Closure c -> while (delegate.find()) { (0..delegate.groupCount()).each { c.setProperty("\$$it", delegate.group(it)) } c.call(dele…
Eclipseとかでは常識ですが、あるいはflymakeを適用したruby-modeでもそうなってますが、Groovyソースを保存したときにgroovycをかけるというもの。基本的なエラーは見つけてくれるので便利。もちろん、今までのgroovycでもできた訳ですけど、遅い。毎回保存…
GroovyServ配下で実行中は、システムプロパティ"groovy.runningmode"が定義されています。 GroovyServ配下での実行と、通常実行中で動作を切り分けたいときに使えます。 $ groovycilent -e 'if (System.getProperty("groovy.runningmode")){println "GroovyS…
昨日のEmacs版に続き、編集中のGroovyコードを1アクションで実行する方法のEclipse版です。これはid:nobeansさんがid:masanobuimaiさんに記事「http://d.hatena.ne.jp/masanobuimai/20100714#1279119388」にてコメントしている内容そのものです。[Run]-[Ext…
編集中のバッファ中のGroovyコードをGroovyServで実行するコマンド。 (defvar groovy-command "groovyclient %f" "groovy or compatible command. %f means buffer-file") (setq groovy-command-line nil) (defun groovy-execute-argument() (if (null groov…