uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

2009-10-01から1ヶ月間の記事一覧

どう書く.orgカバレッジ到達目標達成?!

以前、「どう書く.orgをGroovy好きな方、みんなで解きませんか」という呼びかけをさせていただきましたが、JGGUG合宿のイベントとしてid:nobusueさんと取り組み、無事目標であったScalaのカバレッジを越えることができました。投稿いただいた皆さん、groovy…

細粒度並列処理について

JSR-166yはJava 7で導入が予定されている、細粒度並列処理を効率よく行うことができるようにするためのライブラリ群です。Java7でjava.util.concurrent.forkjoinパッケージで提供される予定ですが、実は今でもダウンロードして利用できます。本記事ではこれ…

Maven3ではGroovyでPOMが書ける

合宿で教えてもらいましたが、Maven 3ではPOMがGrovoyでかけるようになるようです。http://www.wakaleo.com/blog/236-writing-your-pom-files-in-groovy-a-sneek-preview-of-maven-3s-polyglot-features GMavenが取り込まれたということかな。Groovyがいろい…

hatena_groovy

id:nobuseさんが作られたツイッターボット。じわじわととても便利なので改めて紹介。Gaelykで作られているとのことです。 http://d.hatena.ne.jp/nobusue/20090823/p2 http://twitter.com/hatena_groovy はてなキーワードの「Groovyを含むブログ」(http://k.…

Groovyのsortにまつわる衝撃の事実

今日までわたしは、リストを返すクロージャを、sortに渡せば、ソートの第一キー、ソートの第二キーみたいにソートするのに使えると私は思っていました。 例えば以下のようなコードです。 data1 = [aa:1, z:1, c:7, b:1, g:1] println data1.sort{[it.value, …

Grailsプラグイン探訪: 第六回「Simple Blogプラグイン」

地球に優しいリサイクル記事、今回はJGGUGニュースレターの宣伝をかねてJGGUGニュースレターVol.6に書いた記事を紹介します。こんな記事を含むJGGUGニュースレターをほぼ毎月読めますので、お気に召しましたらJGGUG(日本Grails/Groovyユーザ会)に加入なども…

真偽のほどは

長さゼロのリストは偽とみなされるけど、長さゼロの配列は偽とみなされない。なんでだろう。 a = [] as int[] assert a b = [] assert !b

GAE/J SDK 1.2.6以降でGrailsを動作させるために指定が必須のプロパティ

(訂正があります) ついったー経由で知りましたが、以下の設定を行わないと、Groovy/GrailsはGAE/J 1.2.6 以上では動かないようです。自分では試していませんが。 set the System property, "stringchararrayaccessor.disabled" to true. 理由はこちら。 さ…

Writableは何のため?

Groovyにはgroovy.lang.Writableというインターフェースがあります。定義は以下の感じ。 package groovy.lang; interface Writable { Writer writeTo(Writer out); } また、クロージャにはasWritable()というメソッドがあり、「クロージャ引数である出力スト…

Groovyの仕様続き

id:kskyさんに以前書いた記事についてコメントで教えてもらいましたが、JSRになった時点では、仕様書が無いのは普通だとのことです。ありがとうございます。そうですね。「リクエスト」ですもんね。ちょっと間が開いているなあ(^^;)とは思いますが、いただい…

Groovyの日本語DSL

ついったーで評判が良かった(?)ので紹介。 日本語DSLです。Scalaのを見て書いてみました。http://jggugcode.appspot.com/view.groovy?id=2011 Object.metaClass.getの = {delegate} Object.metaClass.getを = {delegate} Object.metaClass.getが = {deleg…

GroovyなBASIC認証

JavaでBASIC認証するのは、ちらっとめんどい。http://d.hatena.ne.jp/nacookan/20071109/1194592229を参考にすれば、 import java.net.Authenticator; : final String username = "username"; final String password = "p@ssw0rd"; Authenticator.setDefault…

「えせMVC論争」についてこそこそと一言言っておくか

某所でRailsの「えせMVC」の論争が話題のようです。へたれなので、トラバは打ちませんが一言いわささしていただきます。 MVCパターン != MVC2。これ重要。Java界では誰もMVCなんていってません*1。むしろ「2」をつけることで、「本来のMVCそのものじゃない…

groovyクロージャについて徒然と

groovyのクロージャをブロックとして使っていると、breakとかcontinueとかができませんのできっと誰もが最初はあれ?と思ったはず。理由は単純で、クロージャというのは無名メソッド定義であって、たまたま平たくコード中にならんでいて、スコープ則にしたが…

Groovyの仕様書が無いのはしょうがない?

id:masanobuimaiさんもおっしゃるようにGroovyの言語仕様書が無いと困るというのはもっともな話ですねー。今あるのは、たぶんJSRの要件を通すためだけに作ったもの。JSRになるためには、仕様書+TCK+RIが必要*1ですからね。JSR化のいきさつはここらへんに文章…

"unified" Grails CMS

"unified" Grails CMS 今まで3つあったGrailsのCMSプラグイン Weceem Plugin Simple CMS Plugin Content Manager Plugin を統合することになったんだって。0.001秒で思いついた疑問として「GAE/J上で動くのか?」というのがあったんだけど、既に誰かが同じ…

The Groovy Way

JJUG CCCの発表で、私が紹介しようとしたコンセプトの一つは、Groovyは独立した言語ではなく、Java技術のGroovy流な扱い方「Groovy Way」なのだ、ということです。 Groovy Wayは、Java Wayに重なる広がりであり、拡張である。あるいは、Java技術の階層の一つ…

JJUG 2009 Fall発表資料「変容する言語Groovy」

JJUG CCC 2009 Fallに参加させていただきました。 聴講したセッションについては、クラウドを中心にさまざまな話題があり、興味深かったです。GroovyのBOF発表に来ていただいた方は、ほとんどがGroovyをすでに使ったことがあり、また、既に業務で使った・使…

単位をあらわすDSL

少し古い記事ですが、http://groovy.dzone.com/news/domain-specific-language-unit-に、単位を定義する「JSR-275」をwrapするGroovy DSLの記事があって面白い。 println( 18.4.kg * 2 ) println( 1800000.kg / 3 ) println( 1.kg * 2 + 3.kg / 4 ) println(…

ExpandoMetaClass.enableGlobally()について一言いっておくか

前から書こうと思ってたのですが、つい遅くなりました。 以下でid:genzouwさんや、id:odashinsukeさんが報告されている: MetaClassを使用したクラスの拡張は、インスタンス生成前に行わないといけない??CommentsAdd Star 型に対するメタクラスとインスタ…

Groovy 1.6.5リリース

Groovy 1.6.5がでました。 Windowsインストーラ版もでてます。 バグフィックスとのこと。

Polyglotプログラミング

最近、polyglotプログラミングなる言葉をGroovy界隈でたまに耳にします。最初に聞いたのはGrails Pod Castの会話かな。意味はおそらく、「複数の言語を組み合わせて扱う」というようなことかと思います。要は多言語プログラミングですね。プロダクティブ・プ…

@Mixinの例が変だぞ

http://groovy.codehaus.org/Category+and+Mixin+transformations とか http://www.infoq.com/articles/groovy-1-6 にある@Mixin/@Categoryの例が変に思われる。 @Category(Vehicle) class FlyingAbility { def fly() { "I'm the ${name} and I fly!" } } @C…