uehaj's blog

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

groovy

内部から見たVert.xとNode.jsとの比較

socket.ioがJavaやGrailsから扱えるかを調べている関係でvert.xを調べていて興味深かったので、こちらにあるVert.xの記事を翻訳してみました。JGGUG G*Workshopにおける杉浦さんのVert.x資料もお奨めです。Vert.xは急速に発達つつあるサーバ・フレームワーク…

G*ワークショップZ May 2013 - Spockハンズオン5/17

G*ワークショップZ Spockハンズオンのおしらせ。Spockを試してみたいかたは是非どうぞ。 http://jggug.doorkeeper.jp/events/3872:title=http://jggug.doorkeeper.jp/events/3872 日時 2013/05/17 (金) 19:00 - 21:00 開催場所 NTTソフトウェア品川本社 品川…

オフラインどう書く第九回の問題をJava 8 Lambdaでやってみた。

オフラインどう書く第九回の問題をやってみた オフラインどう書く第九回の問題をCompileStatic指定してやってみた という記事を書きましたが、今回はJava 8 Lambda式を使って書きなおしてみました。 import java.util.*; import java.util.function.*; impor…

オフラインどう書く第九回の問題をCompileStatic指定してやってみた。

オフラインどう書く第九回の問題をやってみたという記事を書きましたが、今回はCompileStaticアノテーションを使って書きなおしてみました。 import groovy.transform.* @CompileStatic int ceil10(int n) { (Math.ceil(n/10) * 10) as Integer } @CompileSt…

てっとり早くGroovyでJava8のLambdaを使う

追記 http://groovy.codehaus.org/Groovy+2.3+release+notes#Groovy2.3releasenotes-OfficialsupportforrunningGroovyonJDK8groovy 2.3以降、Goovyクロージャはfunctinal interface(sum型)が要求される場所で使用される場合、自動的にそのインターフェースに…

RubyライクにGroovyを書く

誰得なエントリ、かつ「これはひどい」ネタ。まず、以下のようなコンパイラ設定ファイルを書いておき、例えば~/.groovy/config.groovyなどに保存しておきます。 import org.codehaus.groovy.control.* import org.codehaus.groovy.antlr.* import org.codeha…

オフラインどう書く第九回の問題をやってみた。

id:torazukaさんのところで紹介されていたオフラインどう書くの問題をやってみた。 問題はこちらです。 バス代 横へな 2013.4.6 http://nabetani.sakura.ne.jp/hena/ord9busfare/ def ceil10(n) { (Math.ceil(n/10) * 10) as Integer } def half(n) { ceil10…

JJUG CCC 2013 Springにて発表致します

5月11日に、「JJUG CCC 2013 Springにて発表致します。わたしは、Groovy2.Xの新機能を包括的に紹介する予定です。他にもさまざまに興味深いセッションがありますので、ご興味あるかたは、是非登録下さい。

Groovy基礎勉強会で発表してきました

@kyon_mmさんたちが企画した、Groovy基礎勉強会で発表してきました。 機会を頂きありがとうございました>kyonさん、スタッフの皆様、場所を提供頂いたオラクルのみなさん。「コンパイラ処理系としてのGroovyの中身」を覗いてみよう、というのが今回のテーマ…

G*Magazine Vol.6に寄稿しました

日本で唯一のGroovy/Grails関連技術専門オンラインマガジン「G*Magazine Vol6 に寄稿しました。 Groovy 臨機応変(第一回) 〜動中の静...Groovy 2.1.0の新機能 その1 〜 私のは時期的にはちょっと逸しておりますが、他の記事はみな読み応えありです。 相変ら…

動的型情報に基づく静的型チェックというアイデア(Groovy 2.1リリース記念)

Groovy 2.1がリリースされました。おめでとう! 「Groovy 2.1.0は凄い」で自力で調べた以上の情報がリリースノートには書いてあります。まあ、そうなるわな。これを記念して、こないだ作った静的型支援ツール「Staticalizer」を、Groovy 2.1.0でより機能強化…

G*ワークショップ 2013新春SP #jggug

G*Workshopが今週末開催されます。 http://kokucheese.com/event/index/68561/いろいろと楽しい話が聞けると思いますので是非どうぞ。 私も、LTにて、Groovy 2.1.0の濃いところを話します。いや話したい。いや話せれば。がんばります。

Groovy 2.1の初回βがリリースされました(翻訳)

A Groovy New Year!(挨拶) みなさまあけましておめでとうございます。今年もよろしくお願いします。ということで、去年の21 December, 2012 (2 weeks ago)に、Groovy 2.1の初回βがリリースされていましたが、Guillaume Laforge氏のブログエントリの翻訳をし…

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

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

Staticalizer - G* Advent Calendar 2012-

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

HowToPublisher

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

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…

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

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

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…

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。 クロージャが「ちゃんとしている」とは何か 「クロージャがちゃんとしてる」とは何を意味するか、あるいは「ちゃんとしたク…

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…