WindowsでGrails 2.3.2だとError Forked Grails VM exited with errorで起動しない

Grails 2.3.2でrun-appしたら以下のエラーになった。

現象

| Error Forked Grails VM exited with error
| Running Grails application
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at ../../../src/share/instrument/JPLISAgent.c line: 844
Exception in thread "main"
| Error Forked Grails VM exited with error

対処

Grails 2.3.2の場合

grails-app\conf\BuildConfig.groovy

grails.project.fork = [
    // configure settings for compilation JVM, note that if you alter the Groovy version forked compilation is required
    //  compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, daemon:true],

    // configure settings for the test-app JVM, uses the daemon by default
    test: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, daemon:true],
    // configure settings for the run-app JVM
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the run-war JVM
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the Console UI JVM
    console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
]
Grails 2.3.3を使う

環境

PostgreSQL Studioも Internet Explorerだと使えないという呪い

IEでloginをクリックするとLoading style and images ...で
ぐるぐる回ってログインできない。

f:id:orangeclover:20131112211647g:plain

FirefoxChromeでもログインできるのでIE対応にバグがありそう。


http://www.postgresqlstudio.org/support/documentation/supportdocumentationfaq/

Is there a specific browser I need to use PostgreSQL Studio?
We haven’t tested across all of the possible browsers, but the GWT supports the following browsers:

Firefox
Internet Explorer 6, 7, 8, 9
Safari 5, 6
Chromium and Google Chrome
Opera latest version
We would love to hear feedback on how PostgreSQL Studio works in different environments, so let us know.

あれ?IE9まで?

自分の環境はIE10だ。

でも、IE9でも同じ現象になるというチケットがあるな。
Failed start-up in IE9


こういうツールだと開発者だからIEなんて使うなってことなのかな。

20%高速化されたZenbackのスクリプトコードを試してみた

平均20%+高速化!Zenbackのスクリプトコードが新しくなりました
新旧のZenbackのスクリプトコードで、直近のエントリー4つとGist、アフィリエイト、リンクを貼ってない10/5のエントリー1つで計測してみた。
2013-11-04
2013-11-02
2013-10-28
2013-10-26
2013-10-05



webpagetest

スクリプト Load Time スクリプト Load Time 高速化割合
Firxt View Repeat View Firxt View Repeat View Firxt View Repeat View
2013-11-04 16.452s 13.824s 16.184s 13.161s 1.6% 4.8%
2013-11-02 20.357s 16.880s 20.185s 16.348s 0.8% 3.1%
2013-10-28 17.810s 14.102s 17.101s 14.188s 4.0% -0.6% (遅くなった)
2013-10-26 35.567s 15.453s 19.351s 14.476s 45.6% 6.3%
2013-10-05 17.393s 13.682s 15.442s 13.247s 11.2% 3.1%

GTmetrix

  • デフォルトの設定
  • Test Server Region: Vancouver, Canada
  • Using: Firefox (Desktop) 14.0.1, Page Speed 1.12.16, YSlow 3.1.7
スクリプト Page load time スクリプト Page load time 高速化割合
2013-11-04 7.94s 6.17s 22.2%
2013-11-02 10.94s 10.09s 7.8%
2013-10-28 10.86s 7.88s 27.4%
2013-10-26 7.96s 8.08s -1.5% (遅くなった)
2013-10-05 7.11s 6.97s 2.0%

Pingdom Website speed test

  • デフォルト設定
スクリプトLoad Time スクリプトLoad Time 高速化割合
2013-11-04 11.61s 4.01s 65.5%
2013-11-02 8.50.s 6.66s 21.6%
2013-10-28 5.63s 5.71s -1.4% (遅くなった)
2013-10-26 17.70s 4.46s 74.8%
2013-10-05 6.95s 4.06s 41.6%

まとめ

1回しか図らなかったのがまずかったかな。
測定し終わって、同じページで3回測ったら測定値がぶれっぶれ。
でも、一部1%ぐらい遅くなったものもあるが、極端に遅くなったのはないし、
効果はありそう。

それ以上に自分のブログが重さをどうにかしないとダメだ。
いろんなものを貼り過ぎようだ。

amazon 250円クーポンキャンペーンでjenkinsでビルド後に鳴らす効果音を手に入れてみては?


誰でも使える MP3ダウンロード250円クーポンキャンペーン
250円分のクーポン券がもらえる。
250円分で買えるものとなると1、2曲。
流行りのあまちゃんには興味ないしという人はスルーしてるのではないだろうか。


Jenkinsでビルドしてるなら、ビルド後に効果音として、ドラクエスーパーマリオブラザーズなどの
効果音を手に入れてみてはどうだろうか。


参考

jenkinsの設定方法はこちらが詳しい。
Jenkinsでビルド後に音(BGM、SE)を鳴らしてみた

2013年10月 Groovyist/G*のあれやこれや

f:id:orangeclover:20131019181345j:plain


ブログの秋。
先月よりも倍ぐらいエントリーがあったようだ。
内容もGroovy、Grails、Gradle、G*ワークショップのVert.xもあり。

blog

そろそろPower Assertについてひとこと言っておくか - ぐるぐる~
Bitbucket | The Git solution for professional teams
GitHub - IBM/japan-technology: IBM Related Japanese technical documents - Code Patterns, Learning Path, Tutorials, etc.
[GroovyとProcessing]キーボードとマウスからの入力 - Qiita
ちょっとしたことがGroovy「エラーの出るSSL証明書を無視してHTTPSアクセスをテストする」 - Qiita
本家Grailsユーザガイドを開くと自動的に日本語翻訳にリダイレクトするChrome拡張 - 豆無日記
TDD Boot Camp 横浜 3rd に参加してました #TDDBC - くりにっき
Groovyのちょっとしたこと「マップを使ってオブジェクトの実装」 - Qiita
[GroovyとProcessing]画像を表示する - Qiita
groovyあれこれ: groovyとApache POIでMicrosoft Officeのファイルのプロパティを表示する
groovyあれこれ: groovyとApache POIでPowerpointに角丸四角を描画する
groovyあれこれ: groovyとApache MetaModelでCSVファイルに対してクエリーを実行する
http://qiita.com/i18n/items/72cc2a0c820a8fb0ca72
[GroovyとProcessing]画面のステータスを遷移させる - Qiita
温帯気候: Groovyで色々やってみた テンプレートに関してのメモ
groovyあれこれ: groovyとApache MetaModelでAccessテーブルに対してクエリーを実行する
groovyあれこれ: groovyとApache MetaModelでExcelのシートに対してクエリーを実行する
TDDBC 横浜3rd に参加しました #tddbc - ケロSE
Groovyでカード分配?アルゴリズム - Qiita
SpockでClosureのコールバックをテストする - GeekFactory
groovyあれこれ: groovyとApache MetaModelでRDBのテーブルに対してクエリーを実行する
GradleからPostgreSQL Studioを起動する方法 - Qiita
groovyあれこれ: groovyとApache MetaModelでMongoDBのコレクションに対してクエリーを実行する
http://qiita.com/i18n/items/66d74b4519d4a08edb68
Groovyでカレンダーを生成する方法 - Qiita
Groovy 2.2 で強化された groovysh - Masato Nagai's Blog
groovyあれこれ: groovyとApache MetaModelでXMLファイルに対してクエリーを実行する
一部で話題のIKEAorDEATHをGrailsのコントローラだけで作ってみた - sudo -u grails
[GroovyとProcessing]図形の移動 - Qiita
groovyあれこれ: groovyとApache MetaModelでPOJOのリストに対してクエリーを実行する
TDDBC(TDD Boot Camp)仙台03に参加してきた - marsのメモ
Groovyでtrampolineを使って末尾再帰最適化 - Qiita
antからgradleのタスクを実行する(ベタにexecで) - memo88
groovyあれこれ: groovyとApache MetaModelで集約関数を使用する
groovyあれこれ: groovyとjava-diff-utilsで2つのファイルの違いを表示する
groovyあれこれ: groovyとApache POIを使用してExcelにテキストボックスを描画する
Grailsアプリケーションの構成を理解する(1/4):初心者のためのGroovy/Grails入門 - libro
Grailsアプリケーションの構成を理解する(2/4):初心者のためのGroovy/Grails入門 - libro
Grailsアプリケーションの構成を理解する(3/4):初心者のためのGroovy/Grails入門 - libro
Grailsアプリケーションの構成を理解する(4/4):初心者のためのGroovy/Grails入門 - libro
コントローラーとビューの基本(1/5):初心者のためのGroovy/Grails入門 - libro
コントローラーとビューの基本(2/5):初心者のためのGroovy/Grails入門 - libro
コントローラーとビューの基本(3/5):初心者のためのGroovy/Grails入門 - libro
コントローラーとビューの基本(4/5):初心者のためのGroovy/Grails入門 - libro
コントローラーとビューの基本(5/5):初心者のためのGroovy/Grails入門 - libro
groovyあれこれ: groovyとApache MetaModelでRDBとExcelのデータをJOINしたクエリーを実行する
groovyあれこれ: groovyとApache MetaModelでカラムの型変換を行う
Grails 2.3.1 リリース!2.3系最初のバグフィックス! - leftovers...
[GroovyとProcessing]エンティティを作る - Qiita
GradleでAndroidアプリをビルドする « androidnote
groovyあれこれ: groovyとApache MetaModelでクエリーのソートを使用する
GSPのカスタムタグを使おう(1/4):初心者のためのGroovy/Grails入門 - libro
GSPのカスタムタグを使おう(2/4):初心者のためのGroovy/Grails入門 - libro
GSPのカスタムタグを使おう(3/4):初心者のためのGroovy/Grails入門 - libro
GSPのカスタムタグを使おう(4/4):初心者のためのGroovy/Grails入門 - libro
groovyあれこれ: groovyとApache POIを使用してExcelにデータベース型、ペーパー型、角丸四角を描画する
Gradle でアプリケーションを zip 化する - なんとなくな Developer のメモ
国内注目のWebサービスを支える言語・フレームワーク・アーキテクチャ一覧【2013年版】
GaidenをCMSとして使ってみる - R SATO Weblog
groovyあれこれ: groovyとApache MetaModelでテーブル・カラムを一覧表示する
http://qiita.com/i18n/items/d2e128290d904b8505ff
Groovyのmeta classによるメソッド置き換えとテスト - GeekFactory
Gradle入門 | DevelopersIO
Tim Fox氏、Vert.x 2.0の変更点について語る
GroovyServとGradle Daemonとの違い - 豆無日記
Groovyスクリプトでファイルコピーをやってみる - MofuMofuFarm
JPA(Hibernate)で全文検索する - Qiita
[Grails] プラグインの基本的な使い方 - Qiita
ドメインクラス(Modelクラス)を作ろう!(1/5):初心者のためのGroovy/Grails入門 - libro
ドメインクラス(Modelクラス)を作ろう!(2/5):初心者のためのGroovy/Grails入門 - libro
ドメインクラス(Modelクラス)を作ろう!(3/5):初心者のためのGroovy/Grails入門 - libro
ドメインクラス(Modelクラス)を作ろう!(4/5):初心者のためのGroovy/Grails入門 - libro
ドメインクラス(Modelクラス)を作ろう!(5/5):初心者のためのGroovy/Grails入門 - libro
[Grails] 起動時・終了時になにか処理をしたい場合 - Qiita
http://d.hatena.ne.jp/esmasui/20131024/1382631092
GitHub - IBM/japan-technology: IBM Related Japanese technical documents - Code Patterns, Learning Path, Tutorials, etc.
Gradle初心者がはまったこと、悩んだ事。 - 600000007
Gradle ためしてみる - yamanetoshi's diary
JavaでのHttpClientサンプル - CLOVER🍀
GradleのCoveturaPlugin設定 - Qiita
GitHub - IBM/japan-technology: IBM Related Japanese technical documents - Code Patterns, Learning Path, Tutorials, etc.
Gradle で Build したら UnsatisfiedLinkError - yamanetoshi's diary
GitHub - yamanetoshi/HowToUseGradle: Gradle を使ってパッケージを作るための設定について (OSX 限定)
GroovyでStateモナドを書いてみる - uehaj's blog

「そろそろPower Assertについてひとこと言っておくか」に、SpockのPower Assertならどうだろう?と思って試してみたけど
Groovyの人気が急上昇!!
Gradle でコマンドラインから指定したタスク名を取得する方法
Gradleでzipファイルをダウンロードする
Gradleでzipファイルを解凍する
Gradleで依存関係を設定して2つのタスクを1つにまとめる
Gradleでタスクから別のタスクを呼び出す
Gradeを使って配布されているWarファイルをjetty上で動作させる
GradleからPostgreSQL StudioのWarファイルをダウロードしてJetty上で動作させる



Tweet










































































































































































































































































Q


























































































Q&A




























Vert.xハンズオン with CRaSH - JGGUG G*ワークショップZ Oct 2013

Vert.xハンズオン with CRaSH - JGGUG G*ワークショップZ Oct 2013 (資料の)まとめ #jggug




リンク切れやおかしなリンク、漏れがあったら、教えてください。


コメント、トラックバックはてブTwitter @orange_clover宛 で、お願いします。



G*エコシステムの代表例

コミュニティ

イベント・勉強会

GradleからPostgreSQL StudioのWarファイルをダウロードしてJetty上で動作させる

やりたいこと

Gradleでzipファイルを解凍する
Gradleで依存関係を設定して2つのタスクを1つにまとめる
Gradeを使って配布されているWarファイルをjetty上で動作させる
上記3つをまとめて、GradleからPostgreSQL StudioのWarファイルをダウロードしてJetty上で動作させたい。

JavaでWebアプリを使用してる人なら、なんなくデプロイして動作させることもできるだろうけど、
Warファイルってなに?って人向けにGradleでWar、Servletコンテナ・WebサーバのJettyもダウンロードして
PostgreSQLを動作させる。

使用方法

  • gradle deploy 初回のみ
  • gradle warRun

動作結果

gradle deploy
:downloadZip
:unzip
:deploy

BUILD SUCCESSFUL

Total time: 46.576 secs

gradle warRun
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war SKIPPED
:jettyRunWar
:warRun

BUILD SUCCESSFUL

Total time: 1 mins 22.652 secs

以下にアクセス
http://localhost:8080/pgstudio/


f:id:orangeclover:20131028222159p:plain



なにGradleがない?

Gradleがない環境でも動作できるようにGradleラッパーというものがある。
https://github.com/orangeclover/pgstudio
git cloneするなり、zipをダウンロードするなり。

  • gradlew deploy 初回のみ
  • gradlew warRun
$ gradlew deploy
Downloading http://services.gradle.org/distributions/gradle-1.8-bin.zip
.....................................................................

上記のようにgradlewを使用することで、gradle自信もダンロードしてくれる。

なにJavaがない?

OSのパッケージマネージャーなり、Oracleからダウンロードするなりして・・・
Macならjvmってのもあるよ。
JVM the *poor* Java enVironment Manager only for Mac



環境

------------------------------------------------------------
Gradle 1.8
------------------------------------------------------------

Build time:   2013-09-24 07:32:33 UTC
Build number: none
Revision:     7970ec3503b4f5767ee1c1c69f8b4186c4763e3d

Groovy:       1.8.6
Ant:          Apache Ant(TM) version 1.9.2 compiled on July 8 2013
Ivy:          2.2.0
JVM:          1.7.0_45 (Oracle Corporation 24.45-b08)
OS:           Windows 7 6.1 amd64

添削歓迎

ここ間違ってるよ
こうした方がよくないか?
こういうことなんじゃないかな。
この環境だとこうなるよ
などなど
方法は、コメント、はてブTwitter @orange_clover宛 で、お願いします。





Gradle in Action

Gradle in Action

Amazon





Gradeを使って配布されているWarファイルをjetty上で動作させる

やりたいこと

ソース環境をGradleを使ってビルドして、Jettyで起動するのではなく、
配布されてるwarファイルをjettyへデプロイして、起動して、サクッと動作させたい。
warファイルは既に手元にある状態で、ソースからのビルドはしたくない。

java -jar xxx.war」 で動かせるものもあるけど、
そうなっていないWarファイルを手軽に動かしたい。





jettyでwarファイルのデプロイはどうやる?

リファレンスだと、

プロジェクトレイアウト
Jettyプラグインは、Warプラグインと同じレイアウトを使用します。

warファイルってどこにあったっけ?

samples\webApplication\quickstart で試す。

─build
│  ├─classes
│  │  └─main
│  │      └─org
│  │          └─gradle
│  │              └─sample
│  │                      Greeter.class
│  │
│  ├─dependency-cache
│  ├─libs
│  │      quickstart.war  ←デプロイしたWarファイル
│  │
---->8 ばっさり 8<----
│      └─war
│              MANIFEST.MF
│
└─src
    └─main
        ├─java
        │  └─org
        │      └─gradle
        │          └─sample
        │                  Greeter.java
        │
        ├─resources
        │      greeting.txt
        │
        └─webapp
                index.jsp

libs/XXX.war におけばよさそうだ。





構成

.
│  build.gradle
│
└─build
    └─libs
            webapp-quickstart.war

build.gradle

samples\webApplication\quickstart を真似る

apply plugin: 'war'
apply plugin: 'jetty'


httpPort = 8080
stopPort = 9451
stopKey = 'foo'





実行

Gradle jettyRunwar
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war
> Building > :jettyRunWar > Running at http://localhost:8080/DeloyAndRun

実行してるディレクトリ名になってしまってる。
build\libs\DeloyAndRun.war ができてるし。





warファイル名を設定

war {
    baseName = 'quickstart'
    archiveName = "webapp-quickstart.war"
    from 'war' 
}




実行

gradle jettyRunWar
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war
> Building > :jettyRunWar > Running at http://localhost:8080/quickstart





結果

あれ??
f:id:orangeclover:20131026163700p:plain


f:id:orangeclover:20131026163710p:plain





原因

warファイルが置き換わってる

2013/10/26  16:03               261 webapp-quickstart.war

何が動いてる?

Gradle -i jettyRunWar
Starting Build
Settings evaluated using empty settings script.
Projects loaded. Root project using build file 'C:\workspace\Gradle_SandBox\DeloyAndRun\build.gradle'.
Included projects: [root project 'DeloyAndRun']
Evaluating root project 'DeloyAndRun' using build file 'C:\workspace\Gradle_SandBox\DeloyAndRun\build.gradle'.
Starting file lock listener thread.
All projects evaluated.
Selected primary task 'jettyRunWar'
Tasks to be executed: [task ':compileJava', task ':processResources', task ':classes', task ':war', task ':jettyRunWar']
:compileJava (Thread[main,5,main]) started.
:compileJava
Skipping task ':compileJava' as it has no source files.
:compileJava UP-TO-DATE
:compileJava (Thread[main,5,main]) completed. Took 0.652 secs.
:processResources (Thread[main,5,main]) started.
:processResources
Skipping task ':processResources' as it has no source files.
:processResources UP-TO-DATE
:processResources (Thread[main,5,main]) completed. Took 0.052 secs.
:classes (Thread[main,5,main]) started.
:classes
Skipping task ':classes' as it has no actions.
:classes UP-TO-DATE
:classes (Thread[main,5,main]) completed. Took 0.034 secs.
:war (Thread[main,5,main]) started.
:war
Skipping task ':war' as it is up-to-date (took 0.113 secs).
:war UP-TO-DATE
:war (Thread[main,5,main]) completed. Took 0.521 secs.
:jettyRunWar (Thread[main,5,main]) started.
:jettyRunWar
Executing task ':jettyRunWar' (up-to-date check took 0.001 secs) due to:
  Task has not declared any outputs.
Configuring Jetty for root project 'DeloyAndRun'
Logging to Logger[org.mortbay.log] via org.mortbay.log.Slf4jLog
Context path = /quickstart
Tmp directory =  determined at runtime
Web defaults = org/mortbay/jetty/webapp/webdefault.xml
Web overrides =  none
Starting jetty 6.1.25 ...
jetty-6.1.25
No Transaction manager found - if your webapp requires one, please configure one.
Started SelectChannelConnector@0.0.0.0:8080
> Building > :jettyRunWar > Running at http://localhost:8080/quickstart

warタスクが動作してるから、空のwarファイルができるのか。


jettyRunWarタスクはwarタスクに依存してる
f:id:orangeclover:20131026163753p:plain


Warタスクを実行しないようにすればいいのかだら、-x Warをつける

Gradle jettyRunWar -x War
> Building > :jettyRunWar > Running at http://localhost:8080/quickstart



f:id:orangeclover:20131026164107p:plain






でも、-x Warを付け忘れると、Warファイルが上書きされてしまうので、どうにかしたい。
依存関係でどにかできるか?

warタスクを除外するのはどうする?
15.8.3. タスクの有効化と無効化
これでいけそう。

task warRun {
    war.enabled = false
    dependsOn jettyRunWar
}





実行結果

Gradle warRun
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war SKIPPED
> Building > :jettyRunWar > Running at http://localhost:8080/quickstart



f:id:orangeclover:20131026164107p:plain





環境

------------------------------------------------------------
Gradle 1.8
------------------------------------------------------------

Build time:   2013-09-24 07:32:33 UTC
Build number: none
Revision:     7970ec3503b4f5767ee1c1c69f8b4186c4763e3d

Groovy:       1.8.6
Ant:          Apache Ant(TM) version 1.9.2 compiled on July 8 2013
Ivy:          2.2.0
JVM:          1.7.0_45 (Oracle Corporation 24.45-b08)
OS:           Windows 7 6.1 amd64

添削歓迎

ここ間違ってるよ
こうした方がよくないか?
こういうことなんじゃないかな。
この環境だとこうなるよ
などなど
方法は、コメント、はてブTwitter @orange_clover宛 で、お願いします。





Gradle in Action

Gradle in Action

Amazon