uehaj's blog

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

2009-08-01から1ヶ月間の記事一覧

Java 7における5つ(かそこいら)の変更点確定版

Java 7の最終変更点が確定したとのことで、記事を翻訳してみました。 Project Coin: The Final Five (Or So)まず最初に、Project Coinへ興味深い提案をお送りいただいたみなさま、思慮深いコメントをくださった方々、そしてJavaプログラミング言語を発展せし…

どう書く?org課題「メソッド数の多い組み込みクラスを列挙」

どう書く?org課題「メソッド数の多い組み込みクラスを列挙」をGroovyで、かつGDKに読み替えてやってみました。今読み直すと、staticメソッドは除くのね。 [[]] 手っ取り早くGDKのメソッドを探したり検索したいときは、GDKのリファレンスを見るよりも、Groov…

scalaはGroovyと全く競合しない

このところ思ってたのですが、ScalaとGroovyは競合しませんね。まったくしない。適用領域に関して、GroovyのスイートスポットとScalaのスイートスポットに共通部分は、ほぼ全く全然無いと思います。Scalaは、JVM上で動作しはしますが、Javaと完全なる別言語…

どう書く.org課題「化学反応式の完成」

どう書く.org課題「化学反応式の完成」をgroovyでそこはかとなく解いてみました。Groovyには2つのリストを処理できるリスト処理(Haskellでいうzip関数みたいなもの)が無いことに気づいた。不便だ。実装がArrayListだとあまり効率よく処理できないとは思う…

GroovyでMaybe Monadを書いてみた。

「モナドなんて難解なものを含んだ言語は業務で使えねー!!」とScalaの悪口を言おうとして調べてたらモナドが何となく分かった気がしたのでMaybe Monadをgroovyで書いてみました。面白いわこれはw。ただ、HaskellもScalaもちょっと読んだぐらいの経験しかな…

Gaelykチュートリアル

これは要チェックや。id:kskyさんによる翻訳。 http://d.hatena.ne.jp/ksky/20090827/p1id:kskyさんも多分同じことを言ってますが、Gaelykは、Groovyハッカーが、何らかの新しいJavaプラットフォーム、何らかの新しいJavaフレームワークに直面したときに反応…

GroovyLive!

Groovyの勉強用サイト。例題を解きながら、Web上で実行して試して行けます。Groovyのインストール不要。http://trygroovy.appspot.com/tutorialFirefoxだと、アドインいれてるせいか、キー入力が変になる・・。VIA: http://twitter.com/Inetgate/status/3…

JGGUG サマースペシャルG*WS

JGGUG サマースペシャルG*WS、おつかれさまでした。休日開催のせいか、日本全国各地から(新潟、大阪、静岡、広島、・・)もご参加いただき、大変盛況であったと思います。資料や当日の様子について、山本さんも紹介しているように、ここにアップロードして…

GrapeとGrabとIvyの関係

分かりにくいので整理しておく。 つまりだ、 Grape - Groovy組み込みのJAR自動ダウンロード・管理機構。JARの依存関係を考慮して連鎖的にダウンロードしてくれたり、複数のバージョンのJARを同時にインストールし区別して使うことができる。GroovyからGrape…

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が使えなくなる問題が解決されたのがう…