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

動的メソッド追加の謎

[GROOVY-3674] In Closure as injected method of Closure, delegate is not collect - jira.codehaus.orgを見て、少し実験してみました。Javaのクラスの場合、最初はメタクラスがないからグローバルなやつを使うんだよ、との事で。つまりメタクラス拡張を行…

Closureにメソッド足すにはExpandoMetaClass.enableGlobally()が必要

これはまぁ、{}でクロージャ作るたびにClosureのサブクラスが一つできるので当たり前なんですけど、エラーがちょっとわかりにくいんですね。メソッドが呼べない訳ではなくて、delegateが適切にセットされなくなる。 なんでdelegateを使わないメソッドを足す…

Closureリテラルのメンバにアクセスするときは、前の行にセミコロンが要る

ちょっと意味不明ですね。後置ifの例で行きます。 def executed = false; {->executed = true}.if('a' == 'A') assert executed == false; {->executed = true}.if('a'.equalsIgnoreCase('A')) assert executed == true なんか、セミコロンが不自然に入って…

Groovyで後置if

なんか後置ifがtwitter上で話題になってたのでやってみました。 文のうしろに「if ほげほげ」みたいに書くとほげほげが真の場合だけ文を実行してくれる、てやつですね。Groovy風にかくなら def executed = false; {->executed = true}.if('a' == 'A') assert…

MacBook Air SMC ファームウェア・アップデート1.2を実行すると「このアーキテクチャが対応していないので起動できません」と言われる件

Mac

ちょっとハマったので書いておきます。 えー、私は「パッケージの内容を表示」して、Unix実行ファイルを直接叩いて入れたんですが、そんな危なげな事は必要ありませんでした。入れ終わってから犯人が判明。 アップデートが終わって再起動してみると、すっご…

new Target(property: value) with assertionによる簡易テスト

懺悔します。私、これまで、Groovyの1ファイルスクリプト書くときテストをさぼってました。 だってテストしにくいんですもん。1ファイルで実行するだけのスクリプトを書いている時に、もう1個テスト用にファイルを作るのはとてもめんどくさいです。ファイル…

プリミティブはオブジェクトじゃないし、プリミティブと参照なんて区別はない

404 Blog Not Found:javascript - にはクラスはないの重箱の隅をつつきます。「JavaScriptにクラスはない」という表題の主張自体は合っていると思うので、重箱の隅。 最初気になったのは「参照」の間違いだったんですけど、調べるうちにいろいろと… 「JavaSc…

embeddedのgroovy-all-1.6.3.jarだけではGrabできない?

@Grabアノテーションを使うためには、embedded/groovy-all-1.6.3.jarの他にlib/ivy-2.0.0.jarが必要な様です。単に固め漏れなのか、あるいはなにかライセンス絡みで入れられなかったのかもしれません。わかりませんが… JFreeChartを試してみようといろいろし…

「topcoderの道1」をGolfで

これも実は2009-06-06 - uokumuraの日記する前にやっていたのだけれど、こっちはやる前にコードを見ちゃったのと、野球見ながらやっていたので時間が計れてないのです。 で、縮めれそうなのでGolfの方向でネタにする事にして縮めてみたら、(指定されてる範…

「10分でコーディング」に挑戦

ゲンゾウ用ポストイット: 10分でコーディング|プログラミングに自信があるやつこい!! だって。とか10分でコーディング - uehaj's blogとかはやってるみたいなのでやってみました。(もちろん自分でやってみるまではコードには目を通しませんでしたよ…

加重移動平均

移動平均 - uokumuraの日記で作った単純移動平均 List.metaClass.define { getAverage {-> sum() / size() } movingAverage {int n-> (1..<n).collect {delegate[0..<it].average} + (n..size()).collect {i->delegate[(i-n)..</n).collect>

移動平均

件のチーム防御率のグラフで、初期の成績がいつまでも影響してしまうと狩野捕手の成長が見えないので、移動平均を取りたくなりました。移動平均というのは、リストの先頭から1個ずつ後ろにずらしながらn個のデータの平均値を取ったリストのことで、リストl…

防御率計算DSLの強化

http://d.hatena.ne.jp/uokumura/20090427/1240854856で作った防御率計算スクリプトですが、成績の投入が [ "4/3": [[投手: "安藤", 捕手: "狩野", 投球回: 7, 自責点: 2], [投手: "ウィリアムス", 捕手: "狩野", 投球回: 1, 自責点: 0], [投手: "藤川", 捕…

割引キャッシュフロー計算

今コーポレートファイナンスを勉強中です。…ていっても1月以上かけて300ページちょっとしか読めてないんですけど… で、割引キャッシュフローを計算する問題がいっぱい出てきます。 0年 1年 2年 設備 -100 販促 -50 -30 -20 費用 -50 -100 -120 売上 150 300 …

できたよ!

Grails goes on: 惜しいリストの、 def merge = { x, y, r = [] -> x == [] ? r : merge(x-x[0], y-y[0], r+[[x[0] , y[0]]]) } まぁ記法がいいかどうかは別として, 意味は分かると思う. ところが Groovy1.5 でこれは動かないのだ. merge の定義中に再帰的に…

ややこしいのはthisではない:JS

続いて元記事JavaScriptのthisではまった - No Programming, No Lifeの方も。 JavaScriptのthisではまったのでメモしておきます。 とあるのですが、さきほどのid:katzchang氏も 元記事に対して「どのオブジェクト上で走るかの話で、javaのthisも同じっちゃ同…

ややこしいのはthisではない

thisはメソッドとフィールドで微妙に違う件 - @katzchang.contextsを見て。Javaのthisがややこしいという話なんですが、ややこしいのはthisではないです。 結論としては、メソッドとフィールドの扱いは違うっぽい。 メソッドを参照する場合、thisは実行時の…

チーム防御率とかの計算

最近阪神のチーム防御率がぐんぐんと良くなってます。狩野捕手がどんどん伸びているようで、頼もしい限りです。 というわけで、ちょっといろんな軸で切って防御率の計算をしたくなったのでした。 データの記述方法 DSL風味バリバリで、 [ 4/3: [安藤-狩野: 2…

破壊的?持続的?

単に私の解釈が間違ってるだけなのかもしれませんが… 「破壊的イノベーション」とは、今までとは違う全く新しい技術が使われている、という意味ではありません。既存の市場と比べて魅力の薄い、新たな市場を開拓するイノベーションを指すのです! …言い切っ…

Groovyラムダ化計画の挫折

おとうさん、ぼくにもYコンビネータがわかりましたよ!を読んで試しているうちに、なぜか意識が明後日へと飛んでしまいました。…なんかこれ、プロパティーチェーンに見えない? プロパティの連鎖ならgroovyが理解出来ます。理解出来れば実行もできるやん!て…

「Groovyってどんな言語?」がちょっとおしい。

CodeZineにGroovyってどんな言語? JavaプログラマのためのGroovy入門 (1/7):CodeZineて記事が載っていたのですが、いろいろと気になる所が… 文章は読みやすく、7ページも使って結構おいしい所を一通り紹介しているのですが、それだけにちらほらと目につ…

数学パズルを解いてみる その1

ちょっと前にtwitter上で数学パズルがいくつか紹介されていて、groovyで解いてみたくなりました。 これ好き。問8.「AとBはそれぞれ、1以上1000以下の整数をひとつ考えて紙に書く。Aの考えた数がBのそれよりも大きい確率は?」 「スマリヤンの究極の論…

ベキ集合

とある数学パズルを解く最中にベキ集合を取得するための算出プロパティを書いたので、メモ。もっともそもそものパズルは設問を誤解していて、ベキ集合では不十分だったんですが… ArrayList.metaClass.getPowerSet = {-> if (delegate.size == 0) return [[]]…

それはJavaのパワー

[id:r_ikeda:20090331:oneliner]に、 動的言語なのでこんなのも書ける。 groovy -e '[Long,Integer,Short,Byte].each() { println it.MAX_VALUE }' と書いてあったのですが、これはJavaでも書けます。 for (Class c: new Class[]{Long.class, Integer.class,…

「hashMap」メソッド

jijixi's diary - 関数型脳になると、ちょっとイラっとする Ruby の要素 , ActiveSupport::OrderedHash に絶望したで、 例えば、あるハッシュをいじって別のハッシュを作りたいときがある。 関数型脳なんだから、当然のように元のハッシュを書き換えるんじゃ…

正の整数mの4乗を5倍したものの下2桁として現れる数をすべて求めよ

http://hiw.oo.kawai-juku.ac.jp/nyushi/honshi/07/t01-22p/3.html の問題が話題になっているようです。 正の整数の下2桁とは、100の位以上を無視した数を言う。たとえば2000, 12345の下2桁はそれぞれ0, 45である。mが正の整数全体を動くとき、5m^4の下2桁と…

ナベアツ算2号

「ナベアツ算の下書き。 - uokumuraの日記」からはだいぶ様変わりしましたが、とりあえず 200.まで { 3.の倍数.と(3.のつく数字).のとき(アホに) 5.の倍数.のとき(ナルシストに) 8.の倍数.のとき(人を捜してる感じに) }.なります() ができるようになったので…

ナベアツ算の下書き。

doukaku.orgの書きかけ。 1つは投げたんですが、sumimさんの「風変わりな実装」(世界のナベアツに Squeak Smalltalk で挑戦する(改訂) - Smalltalkのtは小文字です)に触発されて大改訂を初めてしまいました。 Integer.metaClass.の倍数 = {->(delegate..1…

metaClass.defineが凄い!

今日のGCRはustream参戦。途中で途切れてしまったり、音が聴こえなくなったりしてしまったもののパワポを見ながら眺めていたら結構勉強になりました。 中でも興味を引かれたのがdefine。 String.metaClass.define { foo { s-> println s + delegate } bar { …