No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

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

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

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

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

お題:ポーカーをGroovyで解いてみた

お題 第一回 オフラインリアルタイムどう書くの参考問題 #勉強会 #Ruby #C - Qiita 問題 ポーカー5枚のカードを示す文字列を入力とし、ポーカーの役を出力せよ。 ただし: 一枚のカードは、スートを表す文字+ランクを表す文字列 で構成される。 スートを表す…

"fizzになる数字をn個挙げる"をGroovyで無限リストと遅延評価を駆使して

cf.mike、mikeなるままに…: "fizzになる数字をn個挙げる"をGroovyで解説は後日追記します。

GroovyとClojureでunlessを書いてみた

Groovy!(あいさつ) Clojure!(あいさつ)今回はClojureのマクロの練習も兼ねて、unlessを書いてみました。 unlessはifの逆です。(つまり、条件が偽なら実行するやつですね) まずはClojure test-isでテストなども書いてみました。 マクロって素敵。 次はGroov…

Clojureで文字列から動的に関数名を作って実行したいんだが・・・

リストの第一要素がシンボルなら関数として起動できるのかな?と思っていたんだがどうも違うらしい。とりあえず、printlnを例として。(symbol 文字列) でシンボルは作れるらしい。 $ clj Clojure 1.4.0 user=> (symbol? 'println) true user=> (= 'println (…

エラトステネスの篩を使ってClojureで素数を求める

はじめに Project Eulerの問題7, 素数10001番目を求める問題。 今回はエラトステネスの篩を使って実装してみた。 By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10 001st prime numbe…

Groovyで関数型を意識したFizzBuzzを書いてみた

はじめに なるべく関数型を意識して書いてみました。 なんとか140文字に収めることができました。 a={n,s->['']*n+s};f={n->[0..n,a(3,'fizz')*n,a(5,'buzz')*n].transpose().collect{i,f,b->[f,b].any()?f+b:i}};f(100).drop(1).each{println(it)}2012-05-1…

Buzzになる数字をn個挙げるをClojureで(その2)

このシリーズの一覧はこちら はじめに Clojure! (あいさつ)Buzzになる数字をn個挙げるをClojureで - No Programming, No Lifeの続き。 clojure-contrib.str-utilsのstr-joinをuseして、出力をカンマ区切りにしてみました。 useを追加 (use '(clojure.contrib…

Buzzになる数字をn個挙げるをClojureで

このシリーズの一覧はこちら はじめに Buzzになる数字をn個挙げる - 日々常々 "Buzzになる数字をn個挙げる"をGroovyで…やろうと思ったんだけど - 日々常々 “Buzzになる数字をn個挙げる”をScalaで - 裏紙 なんか面白そうだったのでClojureで。前回のClojureで…

javaとかScalaで全角を半角に変換する方法をGroovyでもやってみた

はじめに javaとかScalaで全角を半角に変換する方法 - ブログなんだよもんをGroovyでもやってみた。 元記事でも触れられておりますが、確かにこういう処理は再発明はしたくない。 ソース Groovyの場合、Grape(@Grabアノテーション)でMavenリポジトリなどから…

Groovyのチートシート

はじめに この記事は Groovyで頻出なコードの書き方のチートシート - No Programming, No Life からの転載です。 Groovyで頻出なコードのチートシート集です。 動作確認はGroovy Version: 1.8.6 JVM: 1.6.0_31 Vendor: Apple Inc. OS: Mac OS Xにて。 リスト…

ClojureでFizzBuzzを書いた

このシリーズの一覧はこちら はじめに またClojureをちょこちょこいじりはじめています。ということで、凄く初歩的ですがFizzBuzzからやり直しています。 個人的な感想ですが、Clojureはやはり習得が少々難しい気がするので、ステップアップで学べるような記…

Javaでenumを使ってプロパティファイルのキーを定義する

はじめに enumでインタフェースが実装できることが分かったので、その応用例の一つとして、Javaでenumを使ってプロパティファイルのキーを定義するサンプルを書いてみました。 プロパティファイル読み込みは何が問題か Javaでの外部プロパティファイルの機構…

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

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

Javaのenumは継承できないけどインタフェースが継承できる

はじめに Javaのenumって便利ですよね。enumを使い続けていくとグルーピングしたくなってくる事があると思いますが、継承はできないので、そんな場合はインタフェースを実装してやるといいようです。 とりあえずテストを書いた 解説 インタフェース interfac…

JavaでPropertyDescriptorを使ってBeanのプロパティに簡単にアクセスする

はじめに Java標準のSDKに java.beans パッケージがありますが、この中にJavaBeansの getter/setter を便利に扱える PropertyDescriptor というクラスがあるようです。 クラス階層 java.beansClass PropertyDescriptorjava.lang.Object └java.beans.FeatureD…

JavaEEでリクエストのHTTPヘッダに値を付加する

タイトルの通りなんですが、いまやってるプロジェクトでJavaEEでリクエストのHTTPヘッダに値を付加して持ち回る必要が出てきていまして、その方法を模索中です。とりあえず色々ググってたどり着いた案は、今のところ以下のような感じ。 サーブレットだと、#s…

私がGroovyを好きな9つの理由 2011年版

ぐるーびーたんと本 by id:torazuka はじめに G* Advent Calendar 2011 12/12(12日目)に参戦ということで。 そろそろGroovyについて語っておくベキかなと思ったのであらためて書いてみます。私なりの、Groovyを気に入っている理由を9つほど述べてみたいと…

Groovyでバブルソートを再発明してみた

車輪の再発明シリーズ!とりあえずバブルソート。 繰り返しはクロージャで、判定結果は畳み込み(inject)などを駆使してみた例。 効率?そんなの気にしちゃいかんです。

C#のNull許容型(Nullable)について

null 許容型は、System.Nullable 構造体のインスタンスらしい。 C#では型に ? をつけるとNullを許容するようにできる。 int? i = null; // nullが入れられるint型 ??演算子 ??演算子を使うと、型がnullでなかった場合は左辺、nullだったら右辺になる。 int y…

Leiningenを使ってClojureのREPLを起動

ClojureやるならLeiningenが簡単だよということで、Homebrewを使って、インストールからREPLを起動するまでをやってみたのでメモ。(動作環境: Mac OS X 10.6, Homebrew v0.8) まずはHomebrewでleiningenのインストール $ brew install leiningen ==> Downlo…

GroovyのMarkupBuilder用の文字列をXMLから生成するクラスを書きました

はじめに GroovyにはMarkupBuilderというのがあって、GroovyのDSLを用いて簡単にXML(などのマークアップランゲージ全般)を作れるというもの。このブログでも前にこれとかこれとかで記事を書いています。さて、今回はこの逆をやってみようという話です。つま…

Groovyでファイルツリーを巡り、最初に見つかったファイルを返却するメソッド書いたよ

はじめに GroovyにDirectory.EnumrateFiles("hogeDir").First()みたいなのってあったっけ?2011-09-10 12:24:59 via Twitter for Mac @kyon_mm @kimukou_26 new File('hogeDir').listFiles({it.isFile()} as FileFilter).first() とか?2011-09-10 12:35:24 …

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

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

お前に本当のカリー化を見せてやろう、Groovyで

はじめに 思いの外話題になっているようなので、Groovyでちゃんとしたカリー化をする関数を書いてみました。ちょっとタイトルはあれですがお許し下さい。 こんな感じでいいんですよね?(ツッコミ大歓迎) ここでは、addが引数を3つ取って、加算するクロージ…

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

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

お題:アラビア数字・ローマ数字変換

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 アラビア数字 ローマ数字変換を行う関数、arabicToRoman および romanToArabic を実装せよ。 条件) ・…

お題:フルパスから相対パスを求める

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 二つのフルパスを受け取り、一つ目のパスから二つ目のパスへの相対パスを返す関数を実装せよ。 条件) …

お題:FizzBuzz(Nパターン)

プログラミングお題の一覧はこちら※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。 説明 1から100までの数をプリントするプログラムを書け。 ただし、[3, "Fizz", 5, "Buzz", 7, "Hoge"] のよ…