uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

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

Announcing CodeNarc 0.11

Groovy用の静的解析ツールであるCodeNarcの0.11リリースのアナウンスが出ています。Groovy版checkstyleと思えばよろしい。今バージョンではチェックルールが増えたようです。業務開発ではコーディング規約を揃える必要がありますが、これを使うとGroovy開発…

STS 2.5.1試した

昨日、「STSにおいてGroovyデバッグサポートが向上した」という記事を書きました。これは、SpringSource Team Blog]の記事を読んだだけで書いたのですが、今日は実際に試してみました。デバッグ時の「式の評価」機能については、勝手な思い込みとして、「実…

JGGUG 第13回 G*ワークショップ+忘年LT大会

当日リマインダーですが、本日、今年最後のJGGUG G*WSがあります。 http://www.jggug.org/news/13th_g_workshop 2010年12月9日(木)、青山の日本オラクルセミナールームにてJGGUGの定例イベント、 G*ワークショップを開催します。今回は年末スペシャル!通常…

STSにおいてGroovyデバッグサポートが向上した

SpringSource Team Blog]によれば、STS 2.5.1では、EclipseにおけるGroovyデバッグサポートの機能が向上しているようです。STSというのはEclipseのSpring関係詰め合わせパックです。要約すると、 1. Step in/Step outで、いままではreflection and cached ca…

MacOS Xでアプリ(Eclipseなど)をでかく表示する方法

いつも忘れるのでメモ。/Developer/Applications/Performance\ Tools/Quartz\ Debug.appを起動して、Window-UI Resolutionを選び、適当な倍率を選び、対象となるアプリケーションを(再)起動します。DPI値がかわるので、フォントだけではなく、アイコンや画像…

[HtmlUnit] HtmlUnit利用の落し穴

前にHtmlUnit賛歌という記事を書きました。この記事は「スクレイピングにHtmlUnitを使おう」という趣旨でした。今回、結論が変るわけではないのですが、開発を通じて経験した留意点をちょっと書いてみます。前の記事では以下のように書きました。 HtmlUnitで…

Chrome KeyConfig Extensionが便利

Chrome拡張の"Chrome KeyConfig Extension"が超便利。要はキーカスタマイズなわけですが、嬉しいのは: bookmarkletの呼び出しをショートカット化できる(go toアクションのURLに設定)。例えば「はてなbookmarに登録ブックマークレット」とかを登録できる 文字…

第12回G* Workshop 11月9日

JGGUGの月例勉強会「G* Workshop」が11月9日に行われます。http://kokucheese.com/event/index/5267/DCIアーキテクチャ、合宿企画報告、JavaOne参加者が語る海外Groovy/Grails事情など、興味深いところがもりだくさんです。ぜひご参加ご検討ください。 JGGUG…

クロージャのメモ化

ハイウェスト日記経由で、「Groovy 1.8 beta3 からClosureのメモ化ができるようになった」とのことを知り、情報を探してみました。 Implement closure memoization, like in GPars を読むとクロージャに以下の3つのメソッドが追加されています。 memoize() m…

JJUG CCC 2010 BOF「気楽に使おうGroovy」プレゼン資料

本日、JJUG CCC 2010にて、Groovyのプレゼンをして参りました。コマ割りの都合上、和気あいあいと、フレンドリーに発表ができ「勉強会状態」でした。http://twitter.com/#search/%23CCC10の最後の方で皆様がつぶやいてくれています。ありがたいです。JVM言語…

HtmlUnit賛歌

知っている人には、今さらですが、HtmlUnitというものがあります。名前からするとxUnit系の、ユニットテストツールのような気がするかもしれませんが、違うよ!全然違います。誤解を招く名称です*1。これはGUIレスなブラウザなのです。GUIがないだけでなく、C…

groovyをコンパイルする際に一部のユニットテストだけを実行する方法

groovyをコンパイルする際に一部のユニットテストだけを実行する方法。 ant -DtestCase=groovy.RegularExpressionsTest test ant -DtestCase=groovy.GroovyMethodsTest test こんな感じ。

Emacsテクニック・バイブル

このところ、「Emacsテクニック・バイブル」の本を読んでました。この本はひとことで言って、Emacsの設定集です。標準機能と、非標準機能の両方について、これでもか!というぐらいの便利設定が満載されています。Emacsテクニックバイブル 〜作業効率をカイゼ…

日本語DSLのサンプルコードがJavaOneで引用された!

こないだのエントリで書いた、日本語DSLのサンプルコードが、ただいま開催されているJavaOneにおけるPaul King氏のセッションで紹介されたとのことです。@nobeans: [DSL/Groovy]@uehajのDSLがJavaOneで晒された瞬間 URL #javaonejp2010-09-24 09:13:59 via Y…

クロージャの合成

Groovy Web Consoleを見ていて気づいた事ですが、Groovy 1.8ではクロージャに対する演算子>で関数合成ができるようになってますね。 def twice = { a -> a * 2 } def plus3 = { a -> a + 3 } def t1 = twice >> plus3 def t2 = twice << plus3 assert t1(1) …

Groovyで日本語DSL再び(+GEP3の解説)

注意:以下の内容はGroovy 1.8のβ(9/19時点のtrunk)で試した結果を元にしています。最終版では異なってくる可能性があります。前に「Groovyの日本語DSL」という記事を書きましたが、前に紹介したGEP3の機能(Groovy 1.8系でのみ利用可能)を使って、括弧やピリ…

undo/redoがソースコードの履歴管理になればいいんじゃね

エディタのundo/redoというのはソースコード履歴管理システムの一種です。Emacsにはundo-tree.elというのがあるのですが、これはEmacsでのundo-redo履歴を可視化してくれます。これは例えば、gitの以下のような履歴ツリーというかDAGと同種のものです。われ…

括弧を減らせ…括弧ゴルフwith Groovy:結果0個

旧聞に属しますが、ちょっと前に流行った括弧ゴルフ(括弧をなるべく使わずに階乗を計算するやつ)をgroovyでやってみました。 a = args as List a += '1' a.putAt 1, 'x' a -= 'x' s = a as String c = s.chars c.putAt 0, " " minus1 = -1 c.putAt minus1, "…

GEP3の例

Groovy 1.8ではGEP3という機能拡張が予定されていて、それは何かと言うとカンマや括弧の解釈の優先度とか省略ルールを変えることで、「メソッド呼び出しっぽくなく」英語のようにメソッドが呼べるようになると言うものです。以下、glaforge氏による実行可能…

JNAで死ぬほどはまった件

MacOS XおよびLinuxで、JNA(Java Native Access)を通じて、putenv("A=B")すると、即座もしくは数秒後〜数十秒後に設定したはずの環境変数が消え去るという現象に遭遇した。消え去るまでの時間が不定なので、何かを修正して、「直った」と思ったら実は発現ま…

Gretty..軽量でノンブロッキングなイベント駆動Webサーバ

http://groovy.dzone.com/articles/512000-concurrent-websockets?utm_campaign=toya256ForRSS&utm_medium=twitter&utm_source=am6_feedtweetによれば、GrettyとはNettyを使っており、Groovy++で書かれており、超軽量でノンブロッキングなイベント駆動のWeb…

GroovyServの小技シリーズ番外編 - GrailsをGroovyServで実行してみる。

結論:予想通り、あまり嬉しくないやってみた。 $ alias gs_grails="groovyclient -cp $GRAILS_HOME/lib/groovy-all-1.7.4.jar:$GRAILS_HOME/dist/grails-bootstrap-1.3.4.jar:/System/Library/Java -Dgrails.home=$GRAILS_HOME -e 'org.codehaus.groovy.gra…

正規表現における部分文字列の後方参照(キャプチャリング)をスマートに

http://groovyconsole.appspot.com/script/202001にも投稿しましたが、 java.util.regex.Matcher.metaClass.call = { Closure c -> while (delegate.find()) { (0..delegate.groupCount()).each { c.setProperty("\$$it", delegate.group(it)) } c.call(dele…

GroovyServの小技シリーズ6 Groovyコードの保存時に自動的にコンパイルエラーチェック(ただしEmacsに限る)

Eclipseとかでは常識ですが、あるいはflymakeを適用したruby-modeでもそうなってますが、Groovyソースを保存したときにgroovycをかけるというもの。基本的なエラーは見つけてくれるので便利。もちろん、今までのgroovycでもできた訳ですけど、遅い。毎回保存…

超絶未来のprintfデバッグ

printfデバッグというものはなかなか滅びないものでございます。詳細ログファイルを見ながらデバッグするということに形を変えている様にも思われます。ならいっそ、それを発展させるとどうなるか?ログ出力指向のデバッギング。ログビューワの超強力なもの…

GroovyServの小技シリーズ5 - GroovyServで実行しているかどうかを判定する

GroovyServ配下で実行中は、システムプロパティ"groovy.runningmode"が定義されています。 GroovyServ配下での実行と、通常実行中で動作を切り分けたいときに使えます。 $ groovycilent -e 'if (System.getProperty("groovy.runningmode")){println "GroovyS…

GroovyServの小技シリーズ4 -- Eclipseの外部ツールにgroovyclientを登録する

昨日のEmacs版に続き、編集中のGroovyコードを1アクションで実行する方法のEclipse版です。これはid:nobeansさんがid:masanobuimaiさんに記事「http://d.hatena.ne.jp/masanobuimai/20100714#1279119388」にてコメントしている内容そのものです。[Run]-[Ext…

GroovyServの小技シリーズ3 -- groovy-execute-buffer-file

編集中のバッファ中のGroovyコードをGroovyServで実行するコマンド。 (defvar groovy-command "groovyclient %f" "groovy or compatible command. %f means buffer-file") (setq groovy-command-line nil) (defun groovy-execute-argument() (if (null groov…

Gasic -- Basic Intepreter by Groovy

Groovyで書かれたBASICインタプリタだそうな。http://groovyconsole.appspot.com/script/192001サンプルコード ' initialize the loop counter count = 10 ' stop looping if we're done top: if count = 0 then end print "Hello, world!" ' decrement and …

GroovyServの小技シリーズ2 scalacを高速化する

つい昨日0.4がリリースされたGroovyServですが、相当バグフィックス入ってるのでお薦めです。GroovyServはGroovyスクリプトの起動を高速化するものですが、Groovyから呼び出すものはGroovyに限りません。つまりJVM上で動くものならなんでも起動の高速化が理…