Hatena::ブログ(Diary)

leftovers... このページをアンテナに追加 RSSフィード

2010-02-07

JGGUG新春LT大会2010 groovyプラプラとか「はやい、はやいよ」の資料。

JGGUG新春LT大会2010

JGGUG新年会をかねた新春LT(Lightning Talk)大会に行ってきた報告を今さらします。

そういえば、時間を無駄に使い時間オーバーになったのでスライド最後までいってなかった・・。

そして、Groovyたん。良いタイミングに座り版があったので使わせていただきました。

Groovyたんの座り絵バージョンを描きました - 虎塚

id:torazukaさんありがとうございます。これからも使わせていただきます。

2009-12-04

Grails 1.2 RC1 リリースっ。

Grails 1.2 RC1リリースですね。

最近リリースラッシュのGroovy系のソフト達。

Grails 1.1.x系のバグフィックスGrails 1.1.2がリリースされたり。

http://www.grails.org/1.1.2+Release+Notes

Groovyは、1.6.6と1.7-RC-1そしてGrails1.2のバグFix用にGroovy-1.6.7

そして、Gaelyk 0.3.2のリリースと、

Gantは1.8.1、http://gant.codehaus.org/

Gradleも0.9がリリース(まだ?) http://www.gradle.org/

Griffonは0.3-SNAPSHOTがいたりとか・・・。http://griffon.codehaus.org/Download

と何気にGroovy関連を並べてみる!

Spring 3.0.0.RC3がリリースされて、http://www.springsource.org/node/2198 (ぇえ!正式リリースじゃなかったのん??)

そして、ここ最近ちゃんと短い期間で正式1.2へ向けてマイルストンリリースされているGrailsのRC1がリリースです。

はい!本題!

今回のGrails 1.2 RC1リリースに含まれる新機能のご紹介です。


詳しくは以下のエントリーも参考に!

Grails 1.2-M4 リリースだよ! - leftovers...

Grails 1.2-M3 に更新! - leftovers...

Grails 1.2-M2 リリースですよ! - leftovers...

Grails 1.2-M1 リリース & JSUG+JGGUG合同勉強会 お疲れ様でした。 - leftovers...

Grails-1.2-M3辺りでも紹介した、依存解決関連 (Apache Ivyで実装されてる)が、さらにパワーアップ!?

コマンドからもローカルキャッシュにレポからライブラリ引っ張れます。

grails install-dependency mysql:mysql-connector-java:5.1.5

ドメインクラスのnamedQueriesプロパティDSL記述します

class Publication {
  String title
  Date datePublished

 static namedQueries = { 
   recentPublications { 
     def now = new Date() 
     gt 'datePublished', now - 365
   }
   publicationsWithBookInTitle { 
     like 'title', '%Book%' 
   } 
 }
}

以下のように使用できます。

def recentPubs = Publication.recentPublications.list()
def recentPubs = Publication.recentPublications.list(max: 10, offset: 5)

Publication.recentPublications.count()
  • CriteriaビルダーでsqlRestriction実装
def c = Person.createCriteria()
def peopleWithShortFirstNames = c.list {
    sqlRestriction "char_length( first_name ) <= 4"
}

grails-app/domains内にあるドメインクラスにGORMシンタックスの代わりにアノテーションでも定義できます。(GAE/J対策になるかな!?)

こんな感じです。

import javax.persistence.*

@Entity
@Table(name = "animal")
class Animal {

  @Id 
  @GeneratedValue
  int id
  String name
  @ManyToOne
  @JoinColumn
  Owner owner

  static constraints = {
    name blank:false
  }
}

コントローラとかで使うparamsとタグリブのattrsにnullセーフコンバータメソッドが追加されました。

例えばこんな感じ

int('パラメータ名')とかlong('パラメータ名')とかboolean('パラメータ名')と付ける

def total = params.int('total')

あと、同じ名称のパラメータリスト型にまとめるlist('パラメータ名')

(これプチ便利ぢゃん)

def names = params.list('names')

プロジェクトsrc/doc/ref、src/doc/guide以下にファイルを配置することで、Grailsリファレンスと同じドキュメントエンジンプロジェクトで利用可能。

これが、さらに、Grailsの外でも使えるようになりました。

ぉぉ!これ待ってた、他でも使いたいね!

Gradleのシンタックスでは、こんな感じ

compile group: 'org.grails', name: 'grails-docs', version:'1.2.0.RC1'

Antタスクだと、

ant.taskdef (name: 'docs', classname : 'grails.doc.ant.DocPublisherTask')
ant.docs(src:"src/docs", dest:"build/docs",
                properties:"src/docs/doc.properties")

※個人的に試していないのでリリースノートそのまま書いています(-.-);

// Config.groovy

beans {
     someService {
          someProperty = new SomeObject()
     }
}

元々Grailsでのテスト実装では、JUnit以外で実装されたテストGrailsの深い部分で使用する際、結構大変でしたが、(例えば easybとか)、今回オーバーホールされて、様々なテストに対応しやすくなりました。


テストフェーズの指定方法が向上しました。

※多分spockはspockプラグインが必要。まあ、以下は例としてなので。

grails test-app <phase>:<type>
grails test-app unit:spock    // ‘spock’ テストを ‘unit’ フェーズで実行

どちらもオプショナルなので、以下のようにどちらかの指定もできます。

grails test-app unit:    // ‘unit’フェーズで全てのタイプのテストを実行
grails test-app :spock    // 全てのフェーズで、‘spock’テストを実行

‘SomeController’の全てのテストを ‘unit’フェーズで実行

grails test-app unit: SomeController

‘unit’ と ‘integration’の全てのタイプのテストを実行

grails test-app unit: integration:

従来の指定方法でも動きます。

grails test-app --unit    // grails test-app unit: と同じです
grails test-app -clean
  • System.outとSystem.errをエコーさせる。

デフォルトでは、テスト時は何も表示されません。-echoOutや-echoErrを指定すると表示を許可します。

grails test-app -echoOut -echoErr


そして、このリリースラッシュの理由はGroovy Grails eXchange 2009だったりもするらしいです。そうです、自分スピーカーで2年前に(もうそんなになるのか・・ xmlDo.net - Grails Web Development: Grails eXchange 2007)参加したことある、Groovy Grailsの祭典がロンドンで、 12/9、12/10に開催されます。

http://skillsmatter.com/event/java-jee/groovy-grails-exchange-2009

行くという方いたら、連絡ください!オイスターカード渡します! (本気です)

2009-10-13

JJUG CCC Fall 2009でGrails/Groovyでクラウドな話を話してきた。

10/8にJJUG CCC Fall 2009でGrails/Groovyでクラウドな話をしてきました。

参加された皆様、お疲れ様でした。

JJUGの運営の皆様、ありがとうございました。

今回の内容。

スライドは、こちらです。

最後のGaelyk(ゲーリック)は話をするのが2回目なのですが、いつも時間がなくて紹介がかけ足になってしまっています。GaelykはGAE/Jを簡単に始めるのにコンパクトでわかりやすいGroovyGAE/J用フレームワークです。スライドの後半にGaelykの紹介がのっていますが、Gaelykな内容は近々ブログでも紹介したいと思います。



GroovyGrailsに関してのもっと深い勉強会を、ほぼ毎月JGGUGのGアスタリスクワークショップで行っています。

開催場所は東京・横浜・名古屋・大阪です。他の地域でもG*な勉強会したいですね。

詳しくはJGGUGのホームページhttp://www.jggug.org

2009-10-03

Grails 1.2-M3 に更新!

Grails 1.2-M3がリリースされました。


前回のGrails-1.2M2の更新に引き続き安定版1.2へ向けてのリリースです。

今回の更新で追加された機能は、

MavenレポジトリからのJar依存解決用DSLが追加されました。

実装にはApache Ivyを使用しています。Maven、Ivyを使わずに、依存関係を明示的にコントロールできます。

grails.project.dependency.resolution = {
    inherits "global" // inherit Grails' default dependencies
    repositories {
        grailsHome()
        mavenCentral()
    }
    dependencies {
       runtime 'com.mysql:mysql-connector-java:5.1.5'
    }}
  • GSPパフォーマンスの超最適化

レンダリングレイヤーのGSPとSitemeshのスループットが2,3倍に!

  • マルチ組込コンテナサポート、デフォルトはTomcatに!に追加機能。

Grails Plugin: Apache Tomcat plugin

コマンドからのリモートデプロイが実装されました。

grails tomcat deploy
grails tomcat undeploy

今まで基本機能に含まれていたWebフロー機能(SpringのWebFlow)は、今後はプラグインとして提供されます。

GrailsプラグインZipファイルだけ、(セントラル)プラグインリポジトリにリリースできるようになりました。

SVN以外でプラグインバージョン管理している場合に有効。

grails release-plugin --zipOnly
  • formatNumberとformatDate タグの改良

http://grails.org/doc/1.2.x/ref/Tags/formatNumber.html

http://grails.org/doc/1.2.x/ref/Tags/formatDate.html

2009-08-22

JGGUGサマーイベント2009 「G* on GAE/J 挑戦編」

もちろん来年も夏にやるから2009ってついてるわけで!?

まあ、とにかく参加した皆様おつかれさまでした。

参加できなかった皆様にも、サイトが準備されています。

http://groups.google.co.jp/group/jggug-summer-2009

そして、ネタに使われて実況もしていた。Twitterもあります。

http://twitter.com/jggugsummer2009

そして自分の発表内容 「G* on GAE/J 挑戦編」はこんな感じです。

おしながき

詳しくは以下のプレゼン資料を参照してください。

SlideShareでみれます

http://www.slideshare.net/tyama/g-on-gaej

PDFダウンロード

http://grails.jp/sample/gr_on_gaej.pdf

このほぼ同じ内容とか、コマンドのコピペとか、コードの断片とか、各フレームワークの設定方法とかは、以下を参照してください。

http://groups.google.co.jp/group/jggug-summer-2009/web/g-on-gae-j


資料を作るときのトラブルとか、バグとの戦いとか、本番の時間の押しとかは、あたりまえに予測しておくべきですね ;-)。いろいろ補足説明は後日書きます。

あと、懇親会でTDDとかの話いろいろ勉強になりました。ありがとうございました。


で、次回はいつにしましょうか!?