uehaj's blog

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

2012-01-01から1年間の記事一覧

プログラミングGROOVY別冊:第8章 Groovy 2.0の新機能]

今年のG*アドベントカレンダーも無事におわりましたね。なかなか濃い内容でした。最後の関谷さんの記事の末尾にありましたが書籍「プログラミングGroovy」の執筆チームからのクリスマスプレゼントとして、 プログラミングGROOVY別冊:第8章 Groovy 2.0の新…

ヘッドレスGrails

"昨日"の記事ではあんなことを書きましたが、単に「Grailsでバッチ処理ができるよ」と言う話では無いと私は思います。つまり、Grailsが、Webアプリに限定されない、アプリ開発のフレームワークになるということです。デスクトップGUIアプリの分野はGriffonに…

Grailsでバッチ処理を実行

Webアプリ機能は使用せずに、GORMやサービスなどのGrailsのすべての機能を使いたい場合があります。たとえばデータベースにデータをバッチ的にひたすらインポートするような処理です。GORMを使いたいですね。その目的のためにbatch-launcher-pluginというプ…

Staticalizer - G* Advent Calendar 2012-

今年もやってまいりました恒例行事「G* Advent Calendar 2012」その4日目ということで、私が作ったプログラム「Staticalizer」を紹介します。発音は「スタティカライザー」で二〜三回舌を噛む感じで発音します。これは、Groovy2.0で導入された静的Groovy機能…

QuartzプラグインでTriggerのスケジューリングタイミングを動的に変更する

GrailsのQuartzプラグインを使っている場合に、ジョブスケジューリングを動的に変更したいときがあります*1。一見、こちらにある「Dynamic Jobs Scheduling」にある方法で変更できそうにも思えますが、ジョブ名やトリガー名を与えることができないインターフ…

HowToPublisher

Grailsのハウツー文書を、Peter Ledbrookさんがまとめております。これはかなり参考になります。今回の本題は、このHOWTOの内容ではなくて、このHOWTOがどのようにHTMLとして作られているかです。調べると、github上のプロジェクトとして管理されています。…

静的リソース機能はGrails 2において中核的価値の一つである

タイトルは釣りっぽくもありますが、G*MagazineのVol.3とVol4にも紹介されているGrails Resoucesプラグインについて熱く語ってみます。 Grails ResouceプラグインはGrails 2.0からGrails本体に同梱される標準プラグインとなりました。つまり明示的にインスト…

Kickstart with Bootstrapプラグインがかっこいいぞ

GrailsにはKickstart with Bootstrapプラグインというのがあって、サイトの雛形として使える便利ものですが、実にかっちょ良い。 スキャッフォルドも手が加わっていて、Twitter Bootstrap対応になっています。 こういうテンプレートがいっぱいあると良いなあ…

G*Workshop「Groovy2.0の新機能」を発表してきました

10/26金曜日は、JGGUG G*Workshopでした。 五十嵐さんのJavaOne報告、杉浦さんのVert.xなど盛り沢山で、G*としては大変盛況でした。参加者各位および発表者の皆さまにおかれましては、ありがとうございました。 以下は@kimukou2628さんによるまとめです。あ…

GVM: Groovy enVironment Manager

GVM Toolというのがありますので入れてみました。Groovyを始めとするgroovy関連のツール・フレームワーク類をインストールして、複数のバージョンを切り替えて使用したりするためのものです。RubyのRVM相当のものとのこと。 % curl -s get.gvmtool.net | bas…

はてなブログに移行しました

はてなダイアリーからはてなブログに移行しました。 デザインとかはおいおいに直していきます。 今後ともよろしくお願いします。

[groovy][grails] groovy,grailsのロードマップ(追記あり)

この記事の一部、今後のロードマップに関わるところを抜粋してみました。 InfoWorld Groovyは今後どのように改良していくんですか? Laforge Groovy 2.1では、invokedynamicバイトコード命令サポートを、この言語の動的側面すべてについての性能改善のための…

G*Workshop in 福岡(Groovy 2.xの新機能)

もう1週間たっちゃいましたが、先週はG*Workshop初の九州開催ということで、福岡博多にて開催してまいりました。@orange_cloverさんによるまとめ(ありがとうございます!)はこちら。 個人的には ラーメン旨い 替え玉を頼まないと負けになる 九州の人はみな熱…

[jggug][groovy][grails] この夏は福岡@九州のGroovy/Grailsが熱い!

Groovy 2.0の新機能について、以下で話します。G*ワークショップ in 福岡#jggug G*ワークショップがついに福岡に進出します! G*ワークショップは、日本Grails/Groovyユーザーグループ(JGGUG)が主催する、Groovy/Grailsを中心としたG*テクノロジーの勉強会で…

Groovy 2.0でindyを使う

Java 7では、Java VM上での動的言語の実行を効率化することを目的とした一連の機能拡張(JSR 292: Supporting Dynamically Typed Languages on the Java Platform,日本語解説)がなされました。具体的にはたとえば、Java Bytecode命令の1つにinvokedynamicとい…

Groovy Stream

Groovy Streamというのがあるようです。「Lazy Generator class for Groovy」とのこと。 http://timyates.github.com/groovy-stream/ http://blog.bloidonia.com/post/22117894718/groovy-stream-a-lazy-generator-class-for-groovy サンプル。 @GrabResolve…

[grails]Grailsベストプラクティス

InfoQ記事の翻訳です(日本語版で翻訳されない…orz)。 わたし(Amit Jain氏)はIntelliGrapeというGroovy&Grailsを専門とする会社で働いています。この記事は、私たちのGrailsプロジェクトが従う、メーリング・リスト、スタック・オーバーフロー、ブログ、ポッ…

[grails] GrailsのGSPでスクリプトレット(<%=..%>)の出力でHTMLエスケープをデフォルトにする方法。

まず、Config.groovyで以下を設定。grails.views.default.codec='html'これによってGSP中で${}とかの出力はデフォルトでHTMLエスケープされるようになります。これはセオリー。問題は、これだけでは、やの出力はHTMLエスケープされないということです。なの…

JavaOne 2012 Tokyo/JVM言語BOF

JavaOne Tokyoに参加しています。 表記のBOFにはスピーカーの一人として参加致しました。資料はこちら。 Java One 2012 Tokyo JVM Lang. BOF(Groovy) View more presentations from Junji Uehara 直前の暴風雨で、予定していた懇親会が流れたせいで(?)、慣れ…

"Codeplex" Groovy

ちまたには、複数の実装があってこその成熟した言語、と言う見方もありますが、その意味ではGroovyにも別実装があってもいいのかもしれません。でもあまり聞きませんね。この理由はたとえば「Mavenの別実装」「antの別実装」が無いのと同様に、groovyはツー…

静的で行こう

Groovy 2.0系では、静的型チェック(STC)の実装がぼちぼち進んでいます(参考過去記事,GEP-8 Static Type Checking)。さて、もう早速静的型の悪魔に魂を売り払いたい*1、という諸兄におかれましては、「@TypeChecked」というアノテーションを付けるのももどか…

Groovyじゃんけん作ってみた

JGGUGのイベントではおなじみの「Groovyじゃんけん」を実際に作ってみました。 import static Hands.* enum Hands{ GOO,CHOKI,PAR; public result = [:].withDefault{"$this is even with $this"} } def rule(Hands x) { [defeats:{Hands y-> x.result[y]="$…

Groovyクロージャはいかにしてクロージャであるか?

前回記事「Groovyのクロージャはちゃんとしているか?の続きです。前回検討したGroovyのクロージャの振る舞いは、実際にJavaバイトコードとしてどのように実現されているでしょうか、ってのが今回のテーマです。本来ならここで、 groovycコマンドでコンパイル…

Groovyのクロージャはちゃんとしているか?

先日参加したStartupGroovy #1にて、参加者の方から「Groovyのクロージャはちゃんとしたクロージャか?」という質問がありました*1。 クロージャが「ちゃんとしている」とは何か 「クロージャがちゃんとしてる」とは何を意味するか、あるいは「ちゃんとしたク…

[groovy]StartupGroovy#1 参加報告

本日、うさぎ組きょん(@kyonn_mm)さんによる「StartupGroovy」イベントに参加してきました。公私ともに切羽詰りつつも、あたふたと参加しましたが、ひっじょーうに有意義なイベントでした。 Togetterまとめhttp://togetter.com/li/259632 マテリアル http://…

1.8.1以降をキャッチアップするシリーズその5、collectAllのcollectNestedへのリネーム、collectManyの新規追加

Groovy 1.8.1以降で追加されたGDKメソッド(主にコレクション関係)を解説するシリーズ第5段、「collectAllのcollectNestedへのリネーム、collectManyの新規追加」です。とりあえずこれでシリーズ打ち止め予定です。 collect系とfind系の概括的な違い まずは、…

1.8.1以降をキャッチアップするシリーズその4、findResultsの新規追加

Groovy 1.8.1以降で追加されたGDKメソッド(主にコレクション関係)を解説するシリーズ第4段、「findResultsの新規追加」です。 findResultsの新規追加 Groovy 1.8.1では新規GDKメソッドfindResultsが追加されました。findResultsは既存メソッド「findResult」…

1.8.1以降をキャッチアップするシリーズその3、引数無しfind/findAllの新規追加

Groovy 1.8.1以降で追加されたGDKメソッド(主にコレクション関係)を解説するシリーズ第3段、「引数無しfind/findAllの新規追加」です。 引数無しのfind()とfindAll() Groovy 1.8.1では以下の2つのGDKメソッドが追加されています。 public Object find() publ…

1.8.1以降をキャッチアップするシリーズその2、複数クロージャによる多段groupBy

あけましておめでとうございます。書き初めならぬ、エントリ初め。今年もよろしくお願いします。みなさまにとって飛躍の年になりますように。さて、Groovy 1.8.1以降で追加されたGDKメソッド(主にコレクション関係)を解説するシリーズ第2弾、「複数クロージ…