2013年11月 Groovyist/G*のあれやこれや
G*(Groovy, Grails ..) Advent Calendarも始まってますが、11月のまとめです。
Grailsセミナー@日本大学、JJUG CCC 2013 FallのJVM言語パネルディスカッション、G*ワークショップZ、第四回 #渋谷javaと
3つ4つイベントがあり、そのうちGrailsが2つ3つありました。
blog
Groovyでリストモナド(orリストアプリカティブ)を書いてみる - uehaj's blog
[GroovyとProcessing]ポンゲーム(未完成) - Qiita
Gradle SSH Plugin 0.1.9をリリースしました - GeekFactory
Groovyで決まった月のカレンダーを任意の曜日はじまりの形で生成する方法 - Qiita
データベースアクセスの基本(CRUD)(1/4):初心者のためのGroovy/Grails入門 - libro
データベースアクセスの基本(CRUD)(2/4):初心者のためのGroovy/Grails入門 - libro
データベースアクセスの基本(CRUD)(3/4):初心者のためのGroovy/Grails入門 - libro
データベースアクセスの基本(CRUD)(4/4):初心者のためのGroovy/Grails入門 - libro
Apache Wicket User Guideを grails doc してみた - Qiita
Bitbucket | The Git solution for professional teams
Groovy で ZooKeeper を組み込み実行 - なんとなくな Developer のメモ
groovyあれこれ: JenkinsのREST APIを使用してプロジェクト名と説明を一覧表示する
[GroovyとProcessing]まいんくらふと2D? - Qiita
gradle の dependencies は「Gradle, please」に聞け
JJUG CCC 2013 Fall に参加してきた - くろめも
http://pekokun.hatenablog.jp/entry/2013/11/12/010239
Grails 2.3系バリデーションblank:falseがUnitテストで無視される件 - leftovers...
Grails Spring Security Coreプラグイン2.0の話を少し。 - leftovers...
https://dl.dropboxusercontent.com/u/20288797/groovy-documentation/index.html
Ubuntu 12.10にGroovy 2.1.9をインストールする(GVM:Groovy enVironment Manager使用) - Symfoware
温帯気候: Groovyで色々やってみた SwingBuilderでのIDの活用(後、フォーカスに関してメモ)
2013.11.16 shibuya java #4 Grails Goodness
https://github.com/2YY/instant-image-manager
第四回 #渋谷java に参加しました - 混沌とした備忘録
[Groovy] 実行時にバージョンを取得する - Qiita
[GroovyとProcessing]まいんくらふと2Dにブロック選択を追加 - Qiita
Shibuya.Java #04 - Speaker Deck
AsakusaFW0.5.2 Gradle対応! - ひしだまの変更履歴
Gradle 1.9 がリリースされました - ひだまりソケットは壊れない
Mavenさんの代わりにGradleさんを使ったら依存解決で - 日々常々
Grails 2.3.3 リリース!!! - leftovers...
http://piyopiyoducky.net/blog/2013/08/16/indent-the-comment-in-intellij-idea/
Java 8のOptionalをGroovyから超簡潔に使用する - uehaj's blog
Gradle1.9でsetupBuildがinitに - 日々常々
http://qiita.com/i18n/items/1069730df5a120a1585a
Groovy学習2 クロージャ、ファイル処理、文字列処理 - Symfoware
Asakusa Gradle Pluginを試してみた - ひしだまの変更履歴
Groovy学習3 正規表現 - Symfoware
Groovy学習4 正規表現を使用し、データをまとめて取り出す - Symfoware
Groovy学習5 使用できる演算子まとめ - Symfoware
Groovy学習6 色々なループの方法 - Symfoware
[GroovyとProcessing]まいんくらふと2Dのブロック選択を改造 - Qiita
http://qiita.com/i18n/items/eae8b08ef373794025da
http://qiita.com/i18n/items/940558ec34622f0358c4
gradleをつかって依存ライブラリを含む単一で実行可能なjarを生成する - Qiita
温帯気候: Groovyで色々やってみた NetbeansのGradle Supportプラグインを用いてGroovyでプロジェクトを構築する話
Gradleプラグインで動的にタスクを生成したいのだけどどうやるのか分からない - へんてこ
Gradleプラグインでの入れ子構造引数による動的タスク生成 - へんてこ
ふつうのWebアプリにGradleをしこむ - I'm still growin' up ...
http://qiita.com/i18n/items/3081c3c423fa71b31f61
GroovyServでGroovyの起動を高速化 - Symfoware
Groovy で Dempsy を単独実行1 - なんとなくな Developer のメモ
WindowsでGrails 2.3.2だとError Forked Grails VM exited with errorで起動しない
WindowsでGrails 2.3.3だと起動はできるようになったけど、今度は止められない
WindowsでGrails 2.3.3だと起動はできるようになったけど、今度は止められない(続き)
1回目はUnsatisfiedLinkErrorで、2回目以降はNoClassFoundError
Q
Q&A
JJUG CCC 2013 FallのJVM言語パネルディスカッション
JJUG CCC 2013 FallのJVM言語パネルディスカッションにGroovy代表として参加してきた - Yamkazu's Blog
Grails 2.3: RESTハンズオン - JGGUG G*ワークショップZ Nov 2013
リンク切れやおかしなリンク、漏れがあったら、教えてください。
コメント、トラックバック、はてブ、Twitter @orange_clover宛 で、お願いします。
G*エコシステムの代表例
コミュニティ
- JGGUG、日本 Grails/Groovy ユーザーグループ
- @jggug
- @hatena_groovy
- @hatebu_groovy
- @groovybook
イベント・勉強会
- イベントカレンダー
- 2013/12/20(金) G*ワークショップz 2013 Dec(仮) 第3金曜日に開催中。
- G*(Groovy, Grails ..) Advent Calendar 2013
- 開催中、募集中
ドキュメント
始めるためのまとめ
書籍
1回目はUnsatisfiedLinkErrorで、2回目以降はNoClassFoundError
忘備録
現象
1回目はUnsatisfiedLinkErrorで、2回目でNoClassFoundErrorになる。
ソース
class Native{ static{ System.loadLibrary("hoge") } } try{ def hoge = new Native() }catch(UnsatisfiedLinkError e){ e.printStackTrace() } def fuga = new Native()
スタックトレース
groovy NativeError.groovy java.lang.UnsatisfiedLinkError: no hoge in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Runtime.loadLibrary0(Runtime.java:845) at java.lang.System.loadLibrary(System.java:1084) at java_lang_System$loadLibrary.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at Native.<clinit>(NativeError.groovy:3) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77) at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:186) at NativeError.run(NativeError.groovy:8) at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:257) at groovy.lang.GroovyShell.run(GroovyShell.java:220) at groovy.lang.GroovyShell.run(GroovyShell.java:150) at groovy.ui.GroovyMain.processOnce(GroovyMain.java:557) at groovy.ui.GroovyMain.run(GroovyMain.java:344) at groovy.ui.GroovyMain.process(GroovyMain.java:330) at groovy.ui.GroovyMain.processArgs(GroovyMain.java:119) at groovy.ui.GroovyMain.main(GroovyMain.java:99) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:106) at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:128) Caught: java.lang.NoClassDefFoundError: Could not initialize class Native java.lang.NoClassDefFoundError: Could not initialize class Native at NativeError.run(NativeError.groovy:13)
staticイニシャライザーで失敗してるので、2回めのインスタンス生成はNoClassDefFoundErrorになる。
「Could not initialize class Native」がポイント。
DLLのロード処理だけなので、NoClassFoundErrorになったので、最初原因が分からなかった。
GroovyじゃなくてJavaの仕様。
WindowsでGrails 2.3.3だと起動はできるようになったけど、今度は止められない(続き)
誤解がある表現だったので、捕捉。
Grails 2.3.1でも、フォークされたプロセスであるForkedTomcatServerは止まらない。
Grails 2.3.1の動き。
起動
>grails run-app
アプリを起動。
>jps |grep -v Jps
34832 GrailsStarter
31240 ForkedTomcatServer
2つのプロセスが起動する
停止
| Server running. Browse to http://localhost:8080/hellowolrd バッチ ジョブを終了しますか (Y/N)? y
Ctl+C を実行すると受け付ける
>jps |grep -v Jps 31240 ForkedTomcatServer
GrailsStarter が止まるが、ForkedTomcatServerは残ったまま。
ForkedTomcatServerを止める
ForkedTomcatServerを止めるには grails stop-appが必要。
>grails stop-app | Server Stopped jps |grep -v Jps
Grails2.3.2以降だとCtrl+Cを受け付けてくれないので
「バッチ ジョブを終了しますか (Y/N)?」もでない。
2つのプロセスが止まることは期待していないんだ。
Ctrl+Cでコマンドプロンプトに制御が戻ってくることを期待していたんだけど、
返ってこなかった。
あれ?そんな挙動だったっけ?と思って2.3.1で試してみたら挙動が違った。
で、どう動くのが仕様なのか分からんが、コマンドプロンプト使わなきゃいいという
話なのでまぁいいっかと。
WindowsでGrails 2.3.3だと起動はできるようになったけど、今度は止められない
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] ]
PostgreSQL Studioも Internet Explorerだと使えないという呪い
IEでloginをクリックするとLoading style and images ...で
ぐるぐる回ってログインできない。
Firefox、Chromeでもログインできるので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%ぐらい遅くなったものもあるが、極端に遅くなったのはないし、
効果はありそう。
それ以上に自分のブログが重さをどうにかしないとダメだ。
いろんなものを貼り過ぎようだ。