uehaj's blog

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

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

JavaとRubyとGroovyの有益なサンプル

http://www.hjsoft.com/blog/link/A_Useful_Example_in_Java_Ruby_and_Groovy文字コード変換をするツールをJava, Ruby, groovyで書いたらそれぞれ40,20,19行だったという話。加えてGroovy 1.6beta1なら、多重代入文が使えるので15行になるとのこと。短いこと…

謎の予約語threadsafe

用事があってgroovyのソースを調べてたところ、「thradsafe」が予約語であることが判明。確かに代入とかしようとするとエラーになる。 古い本を見ると昔のJava(Java 1.0αとかβとかのころ?)では予約語だったような。盲腸みたいなものかなあ。

Grails紹介

しばらく前に書いた資料だけどはっておこう。 15分ぐらいの発表用に作った超短縮版資料だから期待しないでちょ。 | View | Upload your own

「DI技術の有用性」と「DIコンテナの有用性」は異なる

DIコンテナを利用することは、当然DI技術を使用することでもあるのですが、両者の有用性の意味には差があります。DIフレームワークは、DI技術の適用のベストプラクティスを、容易に利用可能な形で利用者に提供してくれます。たとえば、JDBCのDataSourceの切…

Spring入門

Javaフレームワークの本を大量に買い込んで、今Springの本をじっくりよんでます。 Springについての感想を一言で:「正しい問題意識+誤った手段による解決」Javaが静的型言語であることに由来する制約(動的性質/柔軟性の欠如)を、AOP+XML+Interface...な…

DSL&Builder

勉強会資料をSlideshareに乗せました。 GobyのをPowerpointに手作業でコピーしましたよ。はい。サンプルコード、Q&Aは以下からどうぞ。 http://groups.google.co.jp/group/grails-ja/browse_thread/thread/be5d23652324a4a2/65feba1677610b9f#65feba1677610b…

Slim

なかなか面白そう。 「ホットデプロイ可能なフルスタック・フレームワーク」という,Javaでアジャイル(俊敏)な開発を行うための新しいカテゴリのソフトウエアとして位置付ける。 いやそれは「新しいカテゴリ」じゃないから・・・と思ったら、Javaに限定し…

mixinとMixinアノテーション

いつの間にか(少なくとも1.5.4で確認)(誤認でした。すみませんでした)Groovy 1.6betaあたりから、Groovyにmix-in機能が標準装備されているようです。Groovyに当初からあったuse文+カテゴリの機能はある意味「メソッド単位のmix-in」だったわけであり、以…

Grailsコードリーディング発表"DSL&Builder"スライド&サンプルコード

昨日、発表させていただきました、Grailsコードリーディング発表"DSL&Builder"で使用したスライドとサンプルコードをアップロードし、以下に周知しました。http://groups.google.co.jp/group/grails-ja/browse_thread/thread/be5d23652324a4a2/65feba1677610…

第11回 grailsコード・リーディングのお知らせ

今回は不詳わたくしがコードリーダを勤めさせていただきます。http://groups.google.co.jp/group/grails-ja/browse_thread/thread/be5d23652324a4a2場所は西新宿のATLシステムズさまの居室をお借りさせていただきます。ありがとうございます。—— 第11回 g…

[Groovy] Java3DのSceneGraphBuilder

みたいなものが、ありそうで、無い。 Groovy3Dとかって誰かやらないものだろうか。

不完全な抽象化としてのORマッピング

Joel on softwareの本を最近やっと読みました。いい本ですねこれは!!わりと最近の事情とかが織り込まれているので、ソフト開発の関係者なら、近年のソフトウェアエンジニアリング一般教養を最低限はフォローするのに適した本だといえましょう。Webの記事は…

インジェクトぉぉぉーーーーー!!いっぱぁぁーつ。

GroovyでMixinを実現する、Injecto。http://ldaley.com/injecto/ import injecto.Injecto class Dog { def bark = { -> println "woof" } } use (Injecto) { String.inject(Dog) } "".bark() // prints "woof" おもしろす。 Mixinはモジュール化単位の一つ。…

grails run-app-gf

http://weblogs.java.net/blog/vivekp/archive/2008/05/embedding_glass.html | Embedding GlassFish v3 with GrailsJettyの代わりに「組み込みGlassFish」を使って、grails war経由しなくても直接Grailsアプリをインタラクティブに開発できるとのこと。リロ…

Groovy 1.6-beta-1

Groovy 1.6-beta-1が出ました。 GroovyZoneの記事「Groovy 1.6-beta-1 is released」を簡単に訳してみました。 Location: http://groovy.codehaus.orgG2OneとGroovy開発チームが1.6の最初のベータを出すことができたことについて、本当にうれしく思います。7…

Groovyコンパイラが速くなった

Groovy 1.5.5 が登場し、数々のバグフィックス以外に、Groovyコンパイラ(groovyc)によるコンパイルが3倍から5倍速くなったそうです。http://glaforge.free.fr/weblog/index.php?itemid=238Grailsも恩恵を受けると書いてあるけど、最初のscript/配下のコンパ…

DIコンテナって何?

「DIコンテナ」の説明ってわかりにくいですが、以下の説明はいかがでしょう。 「オブジェクトの生成や、オブジェクト間の結びつきについてのサポート機構。アプリケーションにおける決まりきった生成パターンや結びつけに関する処理を、一手にまかなうもので…

Ng - MOPの高速化を達成するさらにもう一つのJVM上の動的言語処理系

http://docs.google.com/View?docid=ah76zbd6xsx2_9ck33c8dp です。Ngといいつつ表記はNjをリガチャしたような変な字です。発音記号かな。読み方は「んぐ」?XmlSlurperの作者John Wilson氏へのインタビュー記事があって、これは全体として大変興味深いので…

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)や、中位層(フレームワーク、ミドルウェア)の再利用・実現に関しては、オブジェクト指向は絶大な威力を発揮し、実績としては大成功を収めたといっていい…