SlideShare a Scribd company logo
1 of 58
Download to read offline
JGGUG
                                             japan grails/groovy user group




def speaker = new Cast(name:”T.Yamamoto”,version:”G*-2009-12-18”)
Grails/Groovy
http://www.jggug.org/
package my.domain         HelloController.groovy
import org.springframework.stereotype.*
import org.springframework.web.bind.annotation.*
import org.springframework.beans.factory.annotation.*
import org.hibernate.*
import org.springframework.ui.*
                              beans = {  
                                                  resources.groovy
@Controller                     xmlns context:"http://www.springframework.org/schema/context"
class HelloController {         context.'component-scan'( 'base-package' :"my.domain" )
                              }

  @Autowired
  SessionFactory sessionFactory
  
  @RequestMapping("/hello.dispatch")
  ModelMap handleRequest() {
    def session = sessionFactory.getCurrentSession()
    println "hit"
    return new ModelMap(session.get(Person, 1L))  
                                                                    hello.gsp
  }                                              <h1 id="hello">          ${person.name}</h1>
}
% grails uninstall-plugin tomcat
% grails install-plugin jetty
JNDI
Config.groovy
grails.naming.entries = [foo:"bar"]

resources.groovy
beans = {
  xmlns jee:"http://www.springframework.org/schema/jee"
  jee.'jndi-lookup'(id:"foo", 'jndi-name':"java:comp/env/foo")
}


grails tomcat deploy
grails tomcat undeploy

       Config.groovy (tomcat-users.xml            )
tomcat.deploy.username="manager"
tomcat.deploy.password="secret"
tomcat.deploy.url="http://myserver.com/manager"



grails tomcat list
@Grapes([
   @Grab("org.grails:grails-docs:1.2.0.RC2"),
   @Grab("radeox:radeox:1.0-b2"),
   @Grab("ant:ant-nodeps:1.6.5"),
                                                                      Directory
  @GrabConfig(systemClassLoader=true)
])
import grails.doc.ant.*
new AntBuilder().sequential {
   native2ascii(src:"conf",dest:"src/docs",
                 includes:"**/*.properties",encoding:"UTF-8")
   taskdef(name:'docs',classname:'grails.doc.ant.DocPublisherTask')
   docs(src:"src/docs", dest:"build/docs",
     properties:"src/docs/doc.properties",
     styleDir:new File('src/resources/style'),
     cssDir:new File('src/resources/css'),
     imagesDir:new File('src/resources/img')
   )
}
Grails-1.1.x   Grails-1.2
def foo = {
  def hoge = params.some
                                      def foo = {
  if(hoge) println hoge.toInteger()
                                        def hoge = params.long('some')
}
                                        if(hoge) println hoge.toInteger()
                                      }


//int('          ')   long('          ')   boolean('          ')
def total = params.int('total')
//
def names = params.list('names')
default.paginate.prev=
default.paginate.next=
default.boolean.true=
default.boolean.false=
default.date.format=yyyy/MM/dd HH:mm:ss z
default.number.format=0

default.created.message={0}(id:{1})
default.updated.message={0}(id:{1})
default.deleted.message={0}(id:{1})
default.not.deleted.message={0}(id:{1})
default.not.found.message={0}(id:{1})
default.optimistic.locking.failure=     {0}


default.home.label=
default.list.label={0}
default.add.label={0}
default.new.label={0}
default.create.label={0}
default.show.label={0}
default.edit.label={0}


default.button.create.label=
render(contentType:"text/json") {
  categories = [ { a = "A" }, { b = "B" } ]
}




{"categories":[ {"a":"A"} , {"b":"B"}] }
name productDetail:"/showProduct/$productName/$flavor?"{
  controller = "product"
  action = "show"
}

<link:productDetail productName="licorice"
 flavor="strawberry"> Strawberry Licorice </link:productDetail>




             "/hello"(uri:"/hello.dispatch")
import org.springframework.transaction.annotation.*
class BookService {
  @Transactional(readOnly = true)
  def listBooks() {
    Book.list()
  }
  @Transactional
  def updateBook() {
   // …
 }
}
beans {                  Config.groovy
  someService {
    someProperty = new SomeObject()
  }
}
BootStrap.groovy
def init = { ServletContext ctx ->
  environments {
    production {
      ctx.setAttribute("env", "prod")
    }
    development {
      ctx.setAttribute("env", "dev")
    }
  }
  ctx.setAttribute("foo", "bar")
}
class Book {
   String title
   String author
   Boolean paperback
 }


Book.findAllPaperbackByAuthor("      ")

Book.findAllNotPaperbackByAuthor("        ")
class Person {
  String name
  static hasOne = [address: Address]
}
                      create table address (
class Address {        id bigint ... ,
  String street        version bigint not null,
  String postCode      person_id bigint not null,
                       street varchar(255) not null,
  Person person        post_code varchar(255) not null,
}                      primary key (id),
                           unique (person_id))
                         create table person (
                           id bigint ... ,
                           version bigint not null,
                           name varchar(255) not null,
                           primary key (id)
                         )
class Publication {
 String title
 Date datePublished

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


def list = Publication.recentPublications.list()
def list = Publication.recentPublications.list(
            max: 10, offset: 5)
Publication.recentPublications.count()
try {
     book.save(failOnError:true)
}catch(ValidationException e) {
   // handle
}
grails.gorm.default.mapping = {
   cache true
   id generator:'sequence'
  'user-type'( type:org.hibernate.type.YesNoType,class:Boolean )
}


grails.gorm.default.constraints = {
   '*'(nullable:true, blank:false, size:1..20)
}




  grails.gorm.default.constraints = {
     myConstraints(nullable:true, blank:false, size:1..20)
  }

           static constraints = {
             myProperty shared:"myConstraints"
           }
def c = Person.createCriteria()
def peopleWithShortFirstNames = c.list {
    sqlRestriction "char_length( first_name ) <= 4"
}
import javax.persistence.*

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

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

    static constraints = {
      name blank:false
    }
}
chat.label=
chat.message.label=
chat.name.label=
chat.id.label=
chat.dateCreated.label=
chat.lastUpdated.label=
grails.project.dependency.resolution = {
   ...
   repositories { //
     mavenRepo "http://repository.codehaus.org"
    }
    dependencies {
      runtime 'net.homeip.yusuke:twitter4j:2.0.9'
    }
    ...
}                                        ls -al ~/.ivy2/cache




% grails install-dependency net.homeip.yusuke:twitter4j:2.0.9
% grails release-plugin --skipMetadata




  % grails release-plugin --zipOnly
% grails install-plugin webflow



        def searchFlow = {  
           onStart {
               println "started"
             }
             onEnd {
               println "ended"
             }    
             displaySearchForm {
                onRender { println "rendering" }
                onEntry { println "entered" }
                onExit { println "exited" }
                on("submit") {
                  [results: Book.findAllByTitle(params.title)]
                }.to "displayResults"
              }
              displayResults()
        }
% grails test-app -echoOut -echoErr
grails test-app <phase>:<type>
//‘spock’      ‘unit’
grails test-app unit:spock
                                    //‘unit’
                                    grails test-app unit:
                                    //              ‘spock’
                                    grails test-app :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
PermGen




1.0   1.1.x   1.2




                      1.0   1.1.x   1.2
grails deploy-to-cloud --app-servers=4 --db-servers=2
Grails/Groovy
http://www.jggug.org/

More Related Content

What's hot

The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...
The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...
The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...Databricks
 
The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...
The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...
The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...Matthew Tovbin
 
Cycle.js: Functional and Reactive
Cycle.js: Functional and ReactiveCycle.js: Functional and Reactive
Cycle.js: Functional and ReactiveEugene Zharkov
 
Object-Oriented Javascript
Object-Oriented JavascriptObject-Oriented Javascript
Object-Oriented Javascriptkvangork
 
Sprout core and performance
Sprout core and performanceSprout core and performance
Sprout core and performanceYehuda Katz
 
Spring data iii
Spring data iiiSpring data iii
Spring data iii명철 강
 
Testing Backbone applications with Jasmine
Testing Backbone applications with JasmineTesting Backbone applications with Jasmine
Testing Backbone applications with JasmineLeon van der Grient
 
Security Challenges in Node.js
Security Challenges in Node.jsSecurity Challenges in Node.js
Security Challenges in Node.jsWebsecurify
 
Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe ConversetTalk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe ConversetCocoaHeads France
 
AngularJS - $http & $resource Services
AngularJS - $http & $resource ServicesAngularJS - $http & $resource Services
AngularJS - $http & $resource ServicesEyal Vardi
 
Avoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAvoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAnkit Agarwal
 
Building Go Web Apps
Building Go Web AppsBuilding Go Web Apps
Building Go Web AppsMark
 
NoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDBNoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDBSqreen
 
Angular.js Fundamentals
Angular.js FundamentalsAngular.js Fundamentals
Angular.js FundamentalsMark
 
06 jQuery #burningkeyboards
06 jQuery  #burningkeyboards06 jQuery  #burningkeyboards
06 jQuery #burningkeyboardsDenis Ristic
 
History of jQuery
History of jQueryHistory of jQuery
History of jQueryjeresig
 

What's hot (20)

The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...
The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...
The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...
 
The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...
The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...
The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...
 
Cycle.js: Functional and Reactive
Cycle.js: Functional and ReactiveCycle.js: Functional and Reactive
Cycle.js: Functional and Reactive
 
Elm: give it a try
Elm: give it a tryElm: give it a try
Elm: give it a try
 
Object-Oriented Javascript
Object-Oriented JavascriptObject-Oriented Javascript
Object-Oriented Javascript
 
Sprout core and performance
Sprout core and performanceSprout core and performance
Sprout core and performance
 
Spring data iii
Spring data iiiSpring data iii
Spring data iii
 
Testing Backbone applications with Jasmine
Testing Backbone applications with JasmineTesting Backbone applications with Jasmine
Testing Backbone applications with Jasmine
 
Security Challenges in Node.js
Security Challenges in Node.jsSecurity Challenges in Node.js
Security Challenges in Node.js
 
JavaScript patterns
JavaScript patternsJavaScript patterns
JavaScript patterns
 
Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe ConversetTalk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe Converset
 
AngularJS - $http & $resource Services
AngularJS - $http & $resource ServicesAngularJS - $http & $resource Services
AngularJS - $http & $resource Services
 
Avoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAvoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promises
 
Building Go Web Apps
Building Go Web AppsBuilding Go Web Apps
Building Go Web Apps
 
NoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDBNoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDB
 
Angular.js Fundamentals
Angular.js FundamentalsAngular.js Fundamentals
Angular.js Fundamentals
 
06 jQuery #burningkeyboards
06 jQuery  #burningkeyboards06 jQuery  #burningkeyboards
06 jQuery #burningkeyboards
 
React for Beginners
React for BeginnersReact for Beginners
React for Beginners
 
History of jQuery
History of jQueryHistory of jQuery
History of jQuery
 
dotCloud and go
dotCloud and godotCloud and go
dotCloud and go
 

Similar to Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-

Symfony2 Building on Alpha / Beta technology
Symfony2 Building on Alpha / Beta technologySymfony2 Building on Alpha / Beta technology
Symfony2 Building on Alpha / Beta technologyDaniel Knell
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 SpringKiyotaka Oku
 
Grails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to OrbitGrails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to OrbitZachary Klein
 
Construire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleConstruire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleThierry Wasylczenko
 
JavaScript - i och utanför webbläsaren (2010-03-03)
JavaScript - i och utanför webbläsaren (2010-03-03)JavaScript - i och utanför webbläsaren (2010-03-03)
JavaScript - i och utanför webbläsaren (2010-03-03)Anders Jönsson
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScriptAndrew Dupont
 
G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門Tsuyoshi Yamamoto
 
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6Dmitry Soshnikov
 
Groovy Grails Gr8Ladies Women Techmakers: Minneapolis
Groovy Grails Gr8Ladies Women Techmakers: MinneapolisGroovy Grails Gr8Ladies Women Techmakers: Minneapolis
Groovy Grails Gr8Ladies Women Techmakers: MinneapolisJenn Strater
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsJarod Ferguson
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript IntroductionDmitry Sheiko
 
The Beauty Of Java Script V5a
The Beauty Of Java Script V5aThe Beauty Of Java Script V5a
The Beauty Of Java Script V5arajivmordani
 
Тестирование и Django
Тестирование и DjangoТестирование и Django
Тестирование и DjangoMoscowDjango
 

Similar to Grails 1.2 探検隊 -新たな聖杯をもとめて・・・- (20)

Griffon @ Svwjug
Griffon @ SvwjugGriffon @ Svwjug
Griffon @ Svwjug
 
Symfony2 Building on Alpha / Beta technology
Symfony2 Building on Alpha / Beta technologySymfony2 Building on Alpha / Beta technology
Symfony2 Building on Alpha / Beta technology
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 Spring
 
G* on GAE/J 挑戦編
G* on GAE/J 挑戦編G* on GAE/J 挑戦編
G* on GAE/J 挑戦編
 
Grails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to OrbitGrails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to Orbit
 
Construire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleConstruire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradle
 
JavaScript - i och utanför webbläsaren (2010-03-03)
JavaScript - i och utanför webbläsaren (2010-03-03)JavaScript - i och utanför webbläsaren (2010-03-03)
JavaScript - i och utanför webbläsaren (2010-03-03)
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
 
Django quickstart
Django quickstartDjango quickstart
Django quickstart
 
jQuery introduction
jQuery introductionjQuery introduction
jQuery introduction
 
G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門
 
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
 
Groovy Grails Gr8Ladies Women Techmakers: Minneapolis
Groovy Grails Gr8Ladies Women Techmakers: MinneapolisGroovy Grails Gr8Ladies Women Techmakers: Minneapolis
Groovy Grails Gr8Ladies Women Techmakers: Minneapolis
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.js
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
The Beauty of Java Script
The Beauty of Java ScriptThe Beauty of Java Script
The Beauty of Java Script
 
The Beauty Of Java Script V5a
The Beauty Of Java Script V5aThe Beauty Of Java Script V5a
The Beauty Of Java Script V5a
 
Introduction to Groovy
Introduction to GroovyIntroduction to Groovy
Introduction to Groovy
 
dojo.Patterns
dojo.Patternsdojo.Patterns
dojo.Patterns
 
Тестирование и Django
Тестирование и DjangoТестирование и Django
Тестирование и Django
 

More from Tsuyoshi Yamamoto

JJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootJJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootTsuyoshi Yamamoto
 
Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告Tsuyoshi Yamamoto
 
Grailsx@ロンドンへ行ってきた報告。
Grailsx@ロンドンへ行ってきた報告。Grailsx@ロンドンへ行ってきた報告。
Grailsx@ロンドンへ行ってきた報告。Tsuyoshi Yamamoto
 
groovyプラプラとか「はやい、はやいよ」
groovyプラプラとか「はやい、はやいよ」groovyプラプラとか「はやい、はやいよ」
groovyプラプラとか「はやい、はやいよ」Tsuyoshi Yamamoto
 
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」Tsuyoshi Yamamoto
 
Groovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトークGroovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトークTsuyoshi Yamamoto
 
G*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョンG*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョンTsuyoshi Yamamoto
 
JGGUG Camp 2009 いっぽう熱海では、
JGGUG Camp 2009 いっぽう熱海では、JGGUG Camp 2009 いっぽう熱海では、
JGGUG Camp 2009 いっぽう熱海では、Tsuyoshi Yamamoto
 
G*なクラウド ~雲のかなたに~
G*なクラウド ~雲のかなたに~G*なクラウド ~雲のかなたに~
G*なクラウド ~雲のかなたに~Tsuyoshi Yamamoto
 
GrailsでSpringをGroovyにしよう!
GrailsでSpringをGroovyにしよう!GrailsでSpringをGroovyにしよう!
GrailsでSpringをGroovyにしよう!Tsuyoshi Yamamoto
 

More from Tsuyoshi Yamamoto (20)

JJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootJJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-boot
 
Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告
 
JGGUG grails-spring-boot
JGGUG grails-spring-bootJGGUG grails-spring-boot
JGGUG grails-spring-boot
 
Grailsx@London 2011 報告
Grailsx@London 2011 報告Grailsx@London 2011 報告
Grailsx@London 2011 報告
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
Grails 1.4.0.M1 メモLT
Grails 1.4.0.M1 メモLTGrails 1.4.0.M1 メモLT
Grails 1.4.0.M1 メモLT
 
G * magazine 1
G * magazine 1G * magazine 1
G * magazine 1
 
G * magazine 0
G * magazine 0G * magazine 0
G * magazine 0
 
JGGUG 2011-02 LT
JGGUG 2011-02 LTJGGUG 2011-02 LT
JGGUG 2011-02 LT
 
Grailsx@ロンドンへ行ってきた報告。
Grailsx@ロンドンへ行ってきた報告。Grailsx@ロンドンへ行ってきた報告。
Grailsx@ロンドンへ行ってきた報告。
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
 
groovyプラプラとか「はやい、はやいよ」
groovyプラプラとか「はやい、はやいよ」groovyプラプラとか「はやい、はやいよ」
groovyプラプラとか「はやい、はやいよ」
 
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
 
Groovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトークGroovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトーク
 
G*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョンG*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョン
 
JGGUG Camp 2009 いっぽう熱海では、
JGGUG Camp 2009 いっぽう熱海では、JGGUG Camp 2009 いっぽう熱海では、
JGGUG Camp 2009 いっぽう熱海では、
 
ExtJS勉強会@名古屋
ExtJS勉強会@名古屋ExtJS勉強会@名古屋
ExtJS勉強会@名古屋
 
G*なクラウド ~雲のかなたに~
G*なクラウド ~雲のかなたに~G*なクラウド ~雲のかなたに~
G*なクラウド ~雲のかなたに~
 
はじめてのGroovy
はじめてのGroovyはじめてのGroovy
はじめてのGroovy
 
GrailsでSpringをGroovyにしよう!
GrailsでSpringをGroovyにしよう!GrailsでSpringをGroovyにしよう!
GrailsでSpringをGroovyにしよう!
 

Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-