uehaj's blog

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

2008-03-01から1ヶ月間の記事一覧

GroovyのmetaClassは本当にメタクラスか?

前から疑問に思ってたんですが、GroovyのMetaClassつまりString.metaClassなどで返ってくるものってほんとにメタクラスなんでしょうか。そう呼ぶに値するものなんでしょうか?呼び方として適切なんでしょうか。私の理解では、クラスが実行時にオブジェクトと…

Groovyのパフォーマンスについて

警告!: 本記事の内容は古いです。今はGroovyのチューニングが非常になされていて、さらに@CompileStaticアノテーションを指定することでJavaと同等の実行速度が得られます。少し前に、「Groovyおせえぞごるぁ」な記事があって、それに対する「チューニング…

groovychart

groovychartは図表を描くためのDSLでJFreeChartのラッパー。 抜粋ですが ChartBuilder cb = new ChartBuilder(); def pieChart = cb.piechart3d(title: "Simple Pie Chart") { defaultPieDataset { Series1(40.0f) Series2(30.0f) Series3(30.0f) } antiA…

なぜJVM上のスクリプト言語が必要か

理由を3つ上げてみます。 (1)Javaに欠けている、「実行時(運用時)に変化する部分の記述」機能のため。従来はXMLで実現されてきましたが、XMLは基本的に可読性も低劣だし、木構造以外を表現できないため表現力に劣ります。コンパイルレスでそこらへんの可変…

Expando MetaClassとは何か

Groovyでは動的にメソッドを付け足したりする方法がいくつかある。MetaClassは従来からあるそのような仕組みの一つである。しかし、従来はinvokeMethodをオーバーライドしたりする必要があり、面倒であった。これをExpandoのように、つまりマップの様に簡単…

Expandoとは何か

Expandoはマップの様に動作するオブジェクト(orオブジェクトの様に動作するマップ)である。マップの要素にクロージャを代入するとメソッドの様に動作する。マップの要素に値を代入すると、そのフィールドがあるかのように動作する。Expandoはas演算子により…

猫村さん

「きょうの猫村さん」第三巻が久々に出てたので買いました。 感想としては「あいかわらず」です。この揺ぎ無い世界観は尋常ではない。 1巻、2巻と淡々と買い進めてきた人にとっては後悔は無いでしょう。 出版のペースが絶妙なのかなー。きょうの猫村さん 3…

例外時にGSPのソースを見るにはshowSourceをつける

GSPはいったんJavaコードに変換されて実行されるようで、例外スタックトレースの行番号はコンパイル後のコードとしてのものだから、わからん、お前の行番号はわからん、というときのTIPS: http://piragua.com/2008/03/15/viewing-the-source-of-a-compi…

Grails本がでる

4月にGrails 1.0に対応した本"Practical Grails Project"が出るそうです。 http://jshingler.blogspot.com/2007/11/grails-book.html

プラグインで再利用限界を突破せよ

ソフトウェア開発において、基盤層や基本部品(画面部品、ウィンドウシステム、標準ライブラリ、API)や、中位層(フレームワーク、ミドルウェア)の再利用・実現に関しては、オブジェクト指向は絶大な威力を発揮し、実績としては大成功を収めたといっていい…

Groovyのアクセス修飾子はかざりか

現時点での結論:飾りである。涙ではない。 例えば、 class C { private f; private m(){} } x = new C() x.f x.m()全然大丈夫(Groovy 1.5.4)。Groovyで定義されたクラスではなくて、JavaのAPIにいても、「"abc".value」とava.lang.String#valueはprivateメ…

Grailsのファイルアップロードは一行も書かなくていい

(追記) grails3ではscaffoldの仕様が変り、以下の内容に加えて、create.gspのg:upload..を g:uploadform..に修正する必要があります。 Grailsで、ちょっとファイルアップロードの処理でもするか、と思って調べたら、ドメインクラスにbyte[]メンバを書くだけ…

コントローラについて

ここら辺を読んだことを整理しておこう。Grailsのコントローラに含まれるアクションのクロージャができる/やるべきこと3つ【1】前処理(クロージャに対する入力データ) FORMパラメータから必要なデータを読み取る(「params」変数を使用。) セッション情報か…

Groovy版コンビネータパーサGParsec

コンビネータパーサParsecのJava版のJParsecのGroovy版とのことです。http://kenbarclay.blogspot.com/2008_02_01_archive.html今作ってる最中っぽいですね。Alex氏Dierkからコメント欄で「これってオペレータオーバーロードで+とか*とか|とかを再定義す…

===(あるいはis演算子)はどこに行ったの

どこに行ったのシリーズ。 Groovyでの==は、Javaの==の意味ではなく、Javaでのequals呼び出しと等価です。では、Javaの==(オブジェクトの同一性判定)の用途のためにはGroovyでどう書けば良いか?結論から言うと、ここにも書かれているように、その用に供す…

「はじめてみよう Groovy」「Grails と Groovy で超高速アプリケーション開発」

須江さんも発表されるセミナーです。http://www.ibm.com/developerworks/jp/evangelist/events/080425.html行きたい!

「ジョジョの奇妙な百人一首」

http://www.carddas.com/jojo100nin/ 届きました。第一句はこれ: 上の句: もうひとつ! 僕は犬が嫌いだ! 怖いんじゃあない 下の句: 人間にへーこらする態度に虫唾が走るのだ! もうひとつ: 上の句: JOJO そのチェリー食べないのか? ガッつくよう…

Groovy/Grailsの限界らしきもの、1つ

こないだd:id:uehaj:20080228:1204194784を書いてて思ったのは、Grailsではフレームワーク内のコードをカスタマイズするのに限界があるなあと。最初フィールドの表示を変えるのに、 org.codehaus.groovy.grails.commons.GrailsClassUtils#getNaturalName(Str…

ClipBoardWriterってのを作った

marsさんの記事を見て作ったClipBoardWriter。こんな風に使います。 new ClipBoardWriter().withPrintWriter { pw -> ['あ', 'い', 'う', 'え', 'お' ].each { pw.println it } } 出力したデータがクリップボードにコピーされます。クラス定義はこちら。 imp…