Java

ショートカットでファイルを切り替えるだけのEclipseプラグイン(作り方)

WEB+DB PRESS Vol.43のEclipse特集を読んで以来、積極的にショートカットを使うようにしている。特にJUnitのCtrl+9とかDoltengのCtrl+3~6とかで関連ファイルとの切り替えが出来るのは本当に楽だと思う。 TestCaseじゃなくても、組になったファイルを交互に編…

OO厨(?)の俺がFizzBuzz書いてみた

お題: 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 どうしてプログラマに・・・プログラムが書けないのか? …

もっと形式的に出来ないか

プログラミングは好きだけど同一物の反復は苦手です。 アクションを書くのが嫌 アクションを書くのが嫌だ。心の底から嫌だ。本当に面倒だ。複雑なロジックを呼び出しているならまだしも、フォームで入力した値を元にごにょごにょして最後にデータベースに突…

それWebL○gicで出来るよ?

ここの日記は、成果だけ書くようにして、あんまり思考の過程は書かないようにしようと思ってたんだけど…… 主にStrutsで、アクションで処理した結果をテンプレートで表示するプログラムを毎回毎回書いていて段々嫌になって来た。最初はどの辺が嫌か、つまり何…

続・設定ファイルの内容をAOPでオブジェクトに設定する実験

(前回の続き)ConstructorInterceptorを使った設定ファイル内容のオブジェクトへの自動適用の仕組みを作ったものの、ターゲットとして想定していたDI+AOP環境であるSeasar2では(そのままでは)ConstructorInterceptorを使用できないようなのでその辺をなんとか…

設定ファイルの内容をAOPでオブジェクトに適用する実験

開発環境と本サイトなど、異なる環境でプログラムを動作させる場合、環境に応じてソースコードの変更をおこなわなくても済むように設定値を設定ファイルに外出しするというのは割と一般的だと思う。しかし、その設定値を使うクラスにとって設定値(例えば、メ…

plistっぽいxml読み込み用digester-rules

(2008/5/24 追記: 本物のplist読み込みについては真・plist形式のxml読み込み用digester-rules(およびクラス) - terazzoの日記を参照)設定ファイルをXMLで書く事って多いんだけど、javaでXML使う時って型安全や妥当性に拘りすぎて仰々しいと時々思う。かとい…

Proxyを使ってメソッド呼び出しを記録/再生する実験

(前回からの続き)Proxyを使ってリモート呼び出しをおこなうという魂胆。ところでネットワークストリームを使ったoneway voidのリモート呼び出しは、ストリームをファイルに置き換えるだけで、メソッド呼び出しの記録/再生に使えるはず。ということでProxyを…

Proxyを使って強引にキャストする実験

というのが出来そうなので書いてみた ソースコード package sample.proxycast; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; @SuppressWarnings("unchecked") public final class ProxyC…

ProxyでMixin的な処理

が出来るんじゃないかと思ったけど、これは流石にかなり昔にやられてた。 ProxyでMixin - lambda {|diary| lambda { diary.succ! } }.call(hatena) 呼び出されたメソッドがどのクラス/インタフェースに載ってるのかをMethodのgetDeclaringClass()で取得出来…

メソッドの呼び出し結果をProxyを使用してキャッシュする実験

インタフェース経由でのメソッド呼び出しにおいて、間にProxyを挟んでキャッシュするサンプル。 DIコンテナは不要だけど、DIコンテナを使用して粗結合にしている場合に適用が簡単という例示の為に使ってます。 ソースコード CacheおよびCacheManagerクラスに…

メソッドの呼び出し結果をAOPでキャッシュする実験

DI+AOPにはSeasar2を使用。 このサンプルの問題点などは後ろで。 ソースコード まずキーに対して値をキャッシュするクラスを作る(今回は単純にHashMapで) package sample.cache.cache; import java.util.HashMap; import java.util.Map; public class Cache …

CyberNeko HTML Parser関係Tips

サンプルソースコード 特定URLのHTMLの内容をDOMで取り出してAuto-Discovery URLを取得するイメージで。 package sample.parser; import java.io.IOException; import java.io.InputStream; import java.net.URL; import javax.xml.transform.TransformerExc…

Mayaaを普通のテンプレートエンジンとして使う

解説などは後ろで。 ソースコード package sample.mayaa; import java.io.OutputStream; import java.util.Map; import javax.servlet.ServletContext; import org.seasar.mayaa.FactoryFactory; import org.seasar.mayaa.engine.Engine; import org.seasar.…