No Programming, No Life

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

Groovy

Groovyで文字列のバイト値を得るメソッド

引数に渡すencodeを変えれば違ったバイト値が取得できます。

GroovyでHello World

Groovyで辞書サイトからランダムにキーワードを取得する(Wikipedia版)

スクレイピング!スクレイピング!

はてなハイクをAPIを使わずにHTMLで解析することになった。 ここにとりあえずURLをまとめてある。 で、最終的にはHatenaHaiku4Jに組み込む予定なんですが とりあえずGroovyで動作などを下調べということで、書いたソースが以下。 ソース 解説 正規表現版とXm…

「このキーワードに投稿した人は、こんなキーワードにも投稿しています」 for はてなハイクをGroovyで書いてみた

以前、何かを受信したときのアイデアをコードに起してみた。 ソース Powered by HatenaHaiku4J import hatenahaiku4j.* import hatenahaiku4j.util.* def baseKeyword = 'ひとりごと' def list = konnaKeyword(baseKeyword, 20, 10) println ('*' * 20) prin…

Groovyにおけるimport staticした時のスコープ優先順位

ちょっと気になったので実験した結果のメモです。*1 その1 A, Bの順にstatic importして、scriptにも同じフィールド名を宣言 import static A.* import static B.* class A { static def FIELD = 'aaa' } class B { static def FIELD = 'bbb' } static def …

GroovyでHatenaHaiku4Jを使ってみた

Groovyからかなり簡単にいろいろできるのを示すために ちょっとだけサンプルを書いてみた。使ったのは HatenaHaiku4J v0.2.1 // キーワード「ひとりごと」の最新20件のうち // "なう" or "なぅ" が含まれているエントリに対して // "なうっ♪" とReplyする。 …

Groovyでラムダ式版のQuickSortを書いてみた

ここを見ていたらGroovyでもラムダ式版のQuickSortが書きたくなったので書いてみた。 GroovyでQuickSortラムダ式版 - No Programming, No Lifeなんとなく時間ができたのでxyzzy Lisp(Common Lisp)の勉強中なのだが、関数型言語の底力をひしひしと感じる今日…

GroovyでQuickSortラムダ式版

おださん(id:odashinsuke)のところでGinAに載っているQuickSortについて書かれていたので ラムダ式版にさらに改変してみた。ダックタイピングの恩恵 - お だ のスペース 2010-10-10追記 クイックソートのお題だったので、#g100pon No.47 として下記コードを…

GroovyでTemplateEngineとbinding

via twitter4j+Groovyテンプレートエンジンを試しに使ってみた。 - けみかるGroovy日記 - はてなGroovyグループ by けみかるさん(id:tmftake) 以下の部分が、LinkedHashMapをbingdingクラスにキャストできないよーと怒られてました。 binding = ["statuses":…

電卓を作ろうを解いてみた

beautiful-programというはてなグループに招待されたので早速参加。そのグループの中でお題が出題されたので早速解いてみた。 詳細は↓via 「第0-1回 電卓を作ろう」を解いてみた - プログラムは美学 - beautiful-programグループなんだかはてなグループを…

static final がうまく動かない?

いま、Google App Engine(GAE)上でGroovletを動かす実験をしているところなんですが既存でつくってたGroovyスクリプトがうまく動きません。Const.groovyみたいなstatic finalフィールドをいっぱいもったクラスを作ってあるんですがどうも、それを外部からimp…

GroovyでTinyURLのAPIを使ってURL圧縮

TinyURLでURLが圧縮できますが、シンプルなAPIも提供されているようです。 http://tinyurl.com/api-create.php?url=ここに圧縮したいURL で、レスポンスが以下のようになる。 http://tinyurl.com/n2apo5 ということで、Groovyだととともシンプルにできます d…

HatenaHaikuAPI for Groovy

ふもぼ(h:id:fumobot)が使っている はてなハイクAPIをGroovyから操るAPIをせっかくなので公開してみます。 #ただし、自分用に書いているので、使いにくいかもしれません。エッセンスだけでもどうぞ。 HatenaHaikuAPI.groovy import java.text.* class Hatena…

Groovyでテンプレートエンジン

Groovyにはテンプレートエンジンと呼ばれるものがあります。 埋め込みのプレースホルダを設けておいて、そこに値をバインドしていくっていうアレです。サンプルだけでもメモしていきます。 SimpleTemplateEngine まずは一番基本のものから。 バインディング…

Groovletを試してみた

いまさらですが、Groovletを試してみました。 ハローワールド的な内容ですが、すごく簡単にできたのでとてもビックリしました。 まずはTomcatをインストール ここから最新版をダウンロードしてきたインストール*1 フォルダ構成&ソース 以下のような感じにソ…

GroovyでFTP by grape

Groovyで(というかJavaで)動的に作った文字列をFTPでアップロードしてWebページをゴリゴリ更新できないかな〜と思い、ライブラリを探してみたらJakartaのcommons-netに行き着きました。 ちょうどその頃、twitterでゲンゾウさんにGroovy使ってるんならgrapeが…

Groovyでケブンッリジ関数を

当メモは [お題] Typoglycemia関数の作成 | Think Twice へ移管しました。

Groovyでデータベース操作(GroovySQL)

GinAのデータベースの章*1に書かれていることをまとめておこうと思う。 ここに書かれている内容はSQLをある程度理解している方を対象としています。また、JavaでDB操作を行ったことがあると理解が早まります。 DBに接続 まずは、JDBCドライバを使ってDBに接…

Groovyでスクレイピングしてみる(NekoHTML編)

Groovyでスクレイピングしてみる - No Programming, No Life の続き。 前回は取得したHTMLの内容を正規表現で解析していましたが、JavaのライブラリでNekoMTMLというのがあるらしく*1、それを使うと曖昧なHTMLをいい感じに解析してくれるようです。GroovyのX…

GroovyでRootLoaderによるクラスパスの拡張

Javaプログラムを起動する際にやらなきゃいけない面倒な作業の一つとして、クラスパスを通すことがあります。 Groovyでしたら、動的にクラスパスを追加できますのでとても便利です。 GinA P418より def loader = this.class.classLoader.rootLoader loader.a…

Groovyで範囲内乱数

ちょっと1.6から追加されたdefineを使って範囲内乱数を実現するメソッドを追加してみた。 IntRange.metaClass.define { // 範囲内でランダム random { int from = delegate.isReverse() ? to : from int to = delegate.isReverse() ? from : to int size = t…

Groovyでスクレイピングしてみる

ウェブサイトのデータを必要な部分だけ抽出して利用すること。 スクレイピングとは - はてなキーワード Groovyだと簡単にWebからデータを取得できる。 お試しで書いてみたので、一応公開しておく。*1 /* * はてなハイクのトップページ(http://h.hatena.ne.jp…

Groovyのコマンドラインで遊んでみる

Groovyはコマンドラインからでも色々と遊べます。 ということで、Windows環境で試してみました。とりあえず、試したのは以下のオプションです。 -v または --version display the Groovy and JVM versions # GroovyとJava VMのバージョン情報を表示*1 バージ…

Re:Groovy で文字列を Camel 形式、Pascal 形式に変換する

Groovy で文字列を Camel 形式、Pascal 形式に変換する - 集中力なら売り切れたよ にてid:r_ikedaさんが書かれていたスクリプトを私も書いてみました。 ソース 動作確認:Groovy Version: 1.6.0 JVM: 1.6.0_12 replacer = { _0, _1 -> _1.toUpperCase()[-1] }…

Re:ひらがな->カタカナ変換Groovyスクリプト

id:nemo_kazさんのところ(⇒こちら)で変換スクリプトが書かれていたので、私も書いてみた。 単純に変換テーブルを宣言しただけだが。 ソースコード class Converter { def maps = [ [from:'あ', to:'ア'], [from:'い', to:'イ'], [from:'う', to:'ウ'], [from…

AntBuilderでデフォルトではNative2Asciiタスクが使えない

AntBuilderでnative2asciiを使いたかったんですが、そのままだと使えないみたい。 動作確認: Groovy Version: 1.6.0 JVM: 1.6.0_12 実行すると以下のようなエラーが出る >groovy compile.groovy Caught: : Problem: failed to create task or type native2as…

Groovy 1.6 公開

あーついにGroovy 1.6が公開されましたねぇ。 Groovy - Home時間がなくてまだインストールも出来てない! 早くインストールしていじりたいですなぁ。 参考 Groovy 1.6 has been released! | Groovy Zone

Re:アルファベットの繰り上がり

お題: Server error 投稿: Server error こんな感じになりました println alphaList('A'..'Z', 100)*.join()*.trim().join(', ') /** アルファベットのリストを返却 */ def alphaList(values, num) { // 必要な桁を求める int digit = { int d = 1; int size…

Re:RFC 4180対応版 CSVレコードの分解

お題: Server error 投稿: Server error RFC 4180対応版*1でCSVを分解するお題でした。 こんな感じになりました def csv = '''\ "aaa","b bb","ccc",zzz,"y""Y""y",xxx\ ''' resolveCSV(csv).eachWithIndex{ it, idx -> println "${idx+1} => ${it}" } /** C…