No Programming, No Life

プログラミング関連の話題や雑記

小ネタ

Groovyによるうるう年チェック

当メモは [お題] うるう年チェック | Think Twice へ移管しました。

Groovyで既存クラスのasTypeをOverrideする

はじめに Groovyでは as演算子 を利用するためには #asType(Class) メソッドを実装すればよい。既存クラスには既に #asTypeメソッド が実装されているため、通常あまりいじることはない(と思われる)のだが、とある事情でいじる必要が出てきた。その際、ちと…

Javaで型トークンを利用したファクトリクラスを書いてみた

はじめに Javaでインスタンスを生成するクラス、いわゆるファクトリクラスを書く場合、色々な書き方があると思いますが、特定のクラスのインスタンスのみしか作れないとわりと不便なので、今回は、型トークン(クラスクラスと呼ばれるやつですね: Class<T> で</t>…

GroovyのDSLとかに使えるかもしれない小ネタ:連なった括弧

こんな感じで沢山クロージャを受け取るようなメソッドを書くと {} {} {} のように連なって中括弧が書ける。

実行時にGroovyのバージョンを調べる

groovy:000> GroovySystem.version ===> 1.9.0-beta-3

Groovyでは全要素に対してゲッターを呼ぶような時は*.の*が省略できる

はじめに GPathって言うんでしたっけ?こういうの。 サンプルを見た方が早いので説明はそちらで。 コードで語る まず、こんなクラスを用意する。 class A{ def getName(){ 'a' } } class B{ def getName(){ 'b' } } class C{ def getName(){ 'c' } } そして…

Groovyでメソッドのエイリアスを作成してみた

そういやコレクションのcollectメソッドという名称がいまだにしっくりこない。このメソッド名って日本語でいえば何になるんだべ?Rubyではmapって名のほうばかり使ってる。。。2011-08-10 08:40:23 via ちーたん Groovyからの回答 なら、エイリアスを作っち…

GroovyのPowerAssertの力を享受するなら、引数は1つの方を使わないとダメらしい

論よりコード。 動作確認バージョン $ groovy -v Groovy Version: 1.9.0-beta-1 JVM: 1.7.0-internal test.groovy def str = 'abc' assert 'わざと間違う' == str 結果 $ groovy test.groovy Caught: Assertion failed: assert 'わざと間違う' == str | | | …

Groovyでdo-whileループを!

はじめに No 'do ... while()' syntax as yet. do ... while() 構文はまだないよ! Due to ambiguity, we've not yet added support for do .. while to Groovy 曖昧だもん、だからGroovyのサポートにはまだdo ... while()ループは追加してないんだからね! …

Groovyのtrampolineを使ってピラミッドのお題を解いてみた

お題はなつかしのどう書く?orgのもの。 Server error ソースコード 解説 計算したくない、再帰で書きたいと思った、そこでトランポリンですよ! ソース上に示したHINTみたいなリスト構造をつくって、エイヤで出力しています トランポリンしてるので、4段じ…

バイナリ分割されたファイルを結合する for Windows

たまに使うのでメモです。基本は+でつなぐ。/bオプションはバイナリとして結合するという意味。 @echo off copy /b nul test用.zip copy /b test用.zip + test用.zip.001 test用.zip copy /b test用.zip + test用.zip.002 test用.zip copy /b test用.zip + …

GroovyでファイルのMD5を計算する

説明 第一引数にファイルへのパスを指定してそのファイルのMD5を取得するコマンドです。 AntBuilderめちゃ便利。 使用例 (自分自身のMD5を取得) $ groovy -v Groovy Version: 1.8.0-rc-1 JVM: 1.6.0_22 $ groovy getMD5.groovy getMD5.groovy 8fcc4f38b1123f…