uehaj's blog

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

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

JGGUGサマーイベントのお知らせ

以下にありますように、今週末の土曜日にJGGUGイベントが実施されます。 http://www.jggug.org/news/summer_event_2009 8月22日(土)、IBM渋谷オフィスにて、JGGUGの定例イベント g* ワークショップの サマースペシャルバージョンを開催します。ふるってご参…

再帰下降パーサ

正規表現を使った簡単なパターンマッチベースの再帰下降パーサhttp://groovyconsole.appspot.com/view.groovy?id=5001意図的かどうか分からんが右結合になってるね。ちゃんと左結合でした。*がGreedyだからだな。

groovyでスクリプトのエンコーディングを指定する

前に、「コメントに何を書いてもいい」と思うのは、/**/については正しいが、//については正しくない」という記事を書きましたが、そこでの対策との一つとしては、「スクリプトのエンコーディングを正しく指定する」でした。で、続編として「Groovyでスクリ…

GroovyユーザのためのRubyのクロージャ対応物(block/Proc/lambda)の理解法

Rubyのlambdaはgroovyクロージャと同等*1。 RubyのblockとProcは実体は同一であり、つまりいずれもProc。違いは、受け取る側で、明示的にProc型引数として受け取る(Proc)か、暗黙の唯一のブロック引数として受け取る(ブロック)か、という受け取る側の表記の…

どう書く.org課題「loan patternのサンプル」

loan patterというのか。一応呼ぶだけということでやってみました。

どう書く.org課題「初期設定の読み書き」

ConfigSlurperでやってみました。ConfigSlurperってGrailsのものかと思ってたけど、Groovyにとりこまれたのか。ConfigObject経由でSlurper形式での書き出しもできるって知らなかったな。JSONで吐けないかな

どう書く.org課題「ラングトンの蟻」

課題のラングトンの蟻は本来、規定されたルールに従って1ステップずつ升目を変更していくものですが、コンソール制御が面倒だし遅いので最終結果(枠をはみ出たら終了)だけをテキストとして表示するというものとしてやってみました。これは課題自体が面白い…

どう書く.org課題「リングノードベンチマーク」

円環状のリングノード(ATMのトークンリングみたいなやつ?)を配置してメッセージを順繰りに受け渡していく処理の「どう書く」の課題を、GParallelizerで書いて見ました。確かに書きやすい。書こうとする処理の直接的な反映になってる。杉浦さんのG*WSでの…

どう書く.org課題「 複素数 」

複素数もやってみた。apache commonsには複素数計算ライブラリもあるみたいだけど、ここでは自前で。「.i」あたりに、誰も気づかない小さな工夫があるので、言及しておこう。 class Complex { double re double im Complex(re, im) { this.re = re; this.im …

どう書く.org課題「 IPv4アドレスのマスクの変換 」

IPv4アドレスのマスクの変換もやってみた。投稿したあとでゲンゾウさんのを見ると、「Integer/Long.toBinaryString」というメソッドやcountというメソッドを使ってたのでさすがと思いました。以下はそれを取り込んだバージョン。 def netMask(addr) { Long.t…

どう書く.org課題「Twitterに投稿する」

Groovy 1.7のGrabのテストとして、どう書く.orgの課題を書いてみました。例はTwitter4jのサンプルそのまま。前に試したときより確実に処理が速く、2度目以降の処理は気にならないぐらい速くなってるね>@Grab @Grab('net.homeip.yusuke:twitter4j:[2.0,)') i…

変なものシリーズその2、XML DSL

さすがにこれはアイデア倒れになると思うだけど、ていうかアイデア倒れにしたいのだけれど、XML DSL(or XMLBuilder)というのを思いついた。 $ {html lang:"ja"} {head} {meta 'http-equiv':"Content-Type", content:"text/html; charset:EUC-JP"} {body} {ul…

どう書く.org課題「バイナリクロック」

JGGUGニュースレター第四号はお楽しみいただけたでしょうか。この中でGroovy以外で着目している言語は?というアンケートを実施してるんですが、今のところ Scala 5 Smalltalk/Squeak 1 Ruby 1 という状況です。Scalaはとても強い。ということで、どう書く.o…

Groovy 1.7のキモはAST変換である

AST変換についてはこの資料もどうぞ。こないだ出たGroovy 1.7 の新機能の目玉は、AST変換周りです。これは間違いないです。power assertも興味深いですが、実際にはpower assert自体、グローバルなAST変換と呼ばれるものによって、AST変換として実現されてま…

Groovy 1.6.4 and 1.7-beta-1

すっかり見逃してたわけですが、Groovy 1.7-beta-1がでてます。 http://docs.codehaus.org/display/GROOVY/(draft)+Groovy+1.7+release http://groovy.dzone.com/announcements/groovy-164-and-17-beta-1-wild 以下翻訳。 Groovy開発チームとSpringSourceは…

インスタンスごとのメタクラスを使っての「電卓を作ろう」2番煎じバージョン

id:fumokmmさんが書かれた「電卓を作ろう」のお題プログラムを、私の好きな「Javaにも適用可能なインスタンスごとのメタクラス」機能を使って、失礼をばして、ちょっとだけ書き直してみました。文字列オブジェクトインスタンスにmetaClassを通じてpush()アク…

[Groovy][DSL]DSLについて

DSLすなわちDomain Specific Language(特定[業務]領域特化型言語)は最近良く聞く言葉です。でも、バズワードっぽくて、多少とっつきが悪いのではないでしょうか?ですよね?なのでちょっと解説を試みてみます。 DSLは何でないか まず最初に、「DSLは何か」…

App Engine Java SDK 1.2.2リリースノート

遅ればせですが、Google App Engine Java SDK Release Notesの1.2.2部分を翻訳してみました。(追記:こっちのがまとまってるわい) 基本的にバグフィックスですね。私の知る範囲では、web.xmlのにSevletとかを書くとCSSが使えなくなる問題が解決されたのがう…

求人数から見るGroovy/Grailsの人気

TIOBEランキングでは、scalaにも後塵を拝した(´・ω・`)のですが、www.indeed.comの求人数から見ると去年ぐらいからぐっと増えてます。まあ、人気と仕事に使うかどうかは別だってことですかね。 groovy, grails, scala Job Trends groovy jobs - grails jobs …

Gaelyk-GAE/Jのための軽量Groovyツールキット

G*WSで関谷さんと山本さんに教えてもらった、Groovyのglaforgeさんが作っているGAE/J上で動作するGroovyツールキット(フレームワークと呼ばないのは、一歩手前ということか)。http://gaelyk.appspot.com/tutorial/GSPじゃなくてGroovy Tempalte Servletを使…

LispBuilder-Groovy内部DSL限界突破の試み

昨日、LispBuilderについて、JGGUG主催G*WS第四回にショートプレゼンで発表して参りました。発表資料を公開しておきます。Lisp BuilderView more documents from uehaj.参加者の方、主催者の皆さん*1、会場を提供くださったCIJのみなさん、ありがとうござい…

「インスタンスごとのメタクラス」の活用法

こないだLispBuilderを作っていて発見?したテクニックを1つ紹介します。 前提 Lispでは、データ構造の最小単位を「アトム」と呼びます。たとえば、 "A" ・・・文字列アトム a ・・・シンボルアトム 12 ・・・整数アトム 3.14 ・・・浮動小数点数アトム など…

Groovyの人気

id:hide1080さんの記事プログラミング言語の人気ランキング 2009年7月経由。プログラミング言語人気度ランキング。Groovyが47位で、率は・・カタカタカタ 47 Groovy 0.114% 低い!ギギギギ! でもGrailsキーワードで引っ掛けたらもっと多いと思うよ。

LispBuilderを作ったよ(Groovy DSLによるLisp風言語のパーサ?+インタプリタ)

LispBuilderというものを作ったのでgithubに公開しておきます。これは何かというと、GroovyのBuilderとして作ったlisp風のDSLであり、実行もできます。言ってみるとGroovy上に構築したLisp風言語のインタプリタです。実験的なものですが、以下のようなコード…

JVM上の動的言語の決定版: ebXl

「プロダクティブ・プログラマ -プログラマのための生産性向上術」という本が、話題も幅広く含蓄にも富んでいてとてもなかなか面白い。趣味と実益を兼ねたレクリエーションとしてメモとりながら読んでいます。この作者の人は、かなりGroovy好み(かつDSL好み)…

コメントに何を書いてもいい」と思うのは、/**/については正しいが、//については正しくない

Groovyで「//」で日本語のコメントをつけていたところ、ソースをMacOSからWindowsに持ってきたらシンタックスエラーで動かなくなった。なんでかなーと思ったら原因は以下の通り、 元のソースはUTF-8で書いてあった つまり全角文字1文字3バイト 元のソース…

遅延評価やってみた

OKIソフトウェアさんの「Groovy 応用: 遅延評価によるフィボナッチ数の計算」という記事があり、大変興味深いのです。もうちょっとシンプルにできるか&リスト処理をGroovyで少しきれいにかく方法はないか、と思ってやってみました。 「クロージャが遅延評価…

Grails on GAE/J アプリケーションサンプル Fixdapfeed

遅くなりましたが、6月8日に行われたJGGUGのショートプレゼン資料「Grails on GAE/J 簡単事例編:Fixdapfeed」をアップロードしました。 発表内容は、ちょっとしたツールをGrails on GAE/Jで作ったよ、というもので、何をするものかというと、ライブドアさん…

javassist/Groovyでバイトコード加工をやってみた

とある目的のために、javaassistを使ったバイトコード加工(パッケージ名の変更)をgroovyでやってみた。 @Grab(group=’javassist’, module=’javassist’, version=’3.8.0.GA’) class Dummy1{} import javassist.bytecode.ClassFile; def convOnMemory(javaCl…

サーバーサイドGroovyのための5つの性能TIPS

以下、記事「5 Performance Tips for Server Side Groovy」の訳です。 GroovyでGitHubに公開できた投資のコードを書いてたときに性能面をいじくっていたんですが、サーバサイドGroovyをやってる人ためのいくつかの一般的なTIPSを書いておきたいと思います。 …