プログラミング

バージョン管理って何だっけの図

[http://www.git-scm.com/book/ja/v1/:title=Pro Git]の「バージョン管理に関して」の冒頭部分を図解してみました。なんかせせこましい。もっと余白が必要なのかな…観測野帳の淡い青い線はちょっと調整するとすぐに飛ばせて便利でした。 野帳が飛ばせるなら…

presentViewControllerで元の画面も見えるようにするのがうまくいかない

iPhoneのキーボードが表示されるように、自分の作ったViewControllerを表示させるやつです。ViewControllerを作成し、そのViewControllerのViewのBackgroundをClearColorにしてpresentViewControllerすれば行ける…と思ったのですが、トランジション中は透け…

ファイル名の連番の桁数をそろえるスクリプト

Macは、連番の数字の桁数が違って file1.txt file2.txt file3.txt … file101.txt file102.txt … とかなっていても番号順に並べてくれるのだけれど、JavaのListFilesは文字列順に file1.txt file10.txt file100.txt … とかと並べてしまうのでちょっと具合が悪…

commonsのHttpClientを試してみた

3.1は古いけど、libに入っていたので3.1の呼び方を確認。 @Grab('commons-httpclient:commons-httpclient:3.1') import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.*; HttpMethod method = new GetMethod("http://www.…

GroovyでJAXB使うときには@XmlAccessorType( XmlAccessType.NONE ) する

JAXBの感触を確かめようとGroovyで弄ってみたら、ちょこっとハマりました。 さらっとバインディング対象のクラスを書いてマーシャリングしてみようって以下のようなコードを書いたんですが、 import javax.xml.bind.annotation.* import javax.xml.bind.* @X…

GrabでJDBCドライバを読み込めない

Groovyのjiraにもあがっているのですが、GroovySQLを使うときにGrabでドライバを取ってこようとして @Grab('postgresql:postgresql:8.4-701.jdbc3') import groovy.sql.Sql Sql.newInstance('jdbc:postgresql://localhost:5432/database', 'user', 'password…

動的メソッド追加の謎

[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…

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

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

「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…