java

JavaCCの文法ファイル

1.4から1.5の文法ファイルへ切り替えるため、1.4に行った作業内容を見つつ、1.5を改変してゆく。って思ったのだけど、結構違う。Token.javaは生成されたヤツではなく、手を加えたやつっぽい。これは、JavaCC自体についてきたもの。 とりあえず、弄り倒す。デ…

visitor

から、例外投げれないね。引数か、フィールド変数で処理かな?

インタフェース設計

インタフェイスを抽出する設計をする事が無駄であって 発生したときにインタフェイスを抽出するリファクタリングをすれば良い話と言う意味でこのエントリになりました。Scatterbrain - 業務系のクラスでインタフェイスの実装クラス名に「インタフェイス名+Im…

ログのAPI

1.4から導入されているjava.util.loggingパッケージ。ログを様々なレベルで表示でき、さらにその表示方法も多種多様だ。もちろん、ファイルへの出力もできる。 ログの表示レベルを変えるには、setLevelメソッドを使用。 Logger.global.setLevel(Level.ほにゃ…

ファイルが更新されてるときだけAntでターゲットを実行する方法

<uptodate property = "flag.build" targetfile = "${jar.dir}\${jar.name}"> <srcfiles dir = "${classes.dir}"> <include name = "**/*.class" /> <include name = "**/*.properties" /> <include name = "**/*.xml" /> </srcfiles> <uptodate>この例では、JAR に含まれる内容が更新されているときのみ、JAR を生成するようにするために uptodate タスクを利用しています。JAR…</uptodate></uptodate>

rmi

ひょんなことから触ることになったのだが、分からないことが多いのでまとめ。 判ったこと。 スケルは1.2から不要。1.5からはスタブも不要らしい。 クライアント側が動作するときにはスタブが必要 謎っぽいこと。 サーバ側を立ち上げるときにスタブがレ…

テキスト置換

javaで書いてみた。思いのほかてこずった・・・やっぱりテキスト処理は結構独特だと思う。時間があればアルゴリズムを勉強してみたいな。 package fileinsert; import java.io.*; public class Main { public static void main(String[] args){ if(args.leng…

文字列定数

final String うんたらで、宣言される文字列。表示用のメッセージなどをよくこれにするとおもうのだけど、メッセージを一箇所にまとめたほうが、楽だよねぇ。ってわけで、そういうのいっしょくたにしたクラスとか作ってみたりとか・・・。いいんかね。ほら、…

JavaCCとデザインパターン

このJavaCCのパッケージには、jjtreeという構文木(Syntax Tree)を生成するためのコードを自動生成する便利なツールが添付されています。Syntax Treeは、構文を木構造で構成したものであり、Interpreterパターンを利用したコンポジット構造になっています。…

例外処理

エレガントなモジュールを作るには、ちゃんとした例外処理がされて、モジュールを扱う側に対して如何なる場合にも、毅然としたリターンをすることが必要であろう。ってわけで、受け取ったパラメータに対する、正しいリターン、または正しい例外のスローが上…

デザパタ

まだまだつかめない。やっぱり、数こなして、いろんなところでデザパタを意識して組んでみるのがいいと思う。それにはまず、似たようなパターンの違いを意識できるようにならねば。

連携。

設計うんぬんもあるけど、表示をJSPにやらせるなら、ユーザとのデータのやりとりを出来るだけJSPで緻密につくる必要がある。 というか、JSPで画面を作ることは、ユーザからの入力と実際の処理とのインターフェースを柔軟に実現することができるよう…

XSLT使ってみた。

良く分からんかった。 一体どういうもの?という理解は、XML文書をHTMLや、XML、TEXTなどに変換して出力するという感じだろうか。XML文書をDOMやSAXなどのパーサでツリーなどのデータにして、それを指定の形式に変換するといった感じ…

URLが変わってしまう。

基点となるURLが変わってしまうと、相対パスが全て壊れてしまう。といっても、普通そんなこと無いと思うのだが、今日それに直面した。 servletのプログラムを組んでいるときに相対パスを張ったページに getRequestDispatcher("相対パスのページ") に飛ばした…