java

request#getRequestURL()とかgetServerName()とか

以下は apache1.3系、mod_jk2、Tomcat4.1.31での話。 getRequestURL()とかを呼ぶと http://hoge.somehost.dn.jxx/context/hoge.jsp とか帰ってくるけど、このホスト名の生成に関しては GET /context/hoge.jsp HTTP/1.1 Host: hoge.somehost.dn.jxx というよ…

メソッドコールキャッシュの実装その2.0.1

ehCacheとOSCacheの違いを備忘録 キャッシュエントリのキーがehCacheではSerializableに対して OSCacheではString固定…に見える いずれにせよこの手のライブラリを使おうとしたらキーはシリアライズできないとダメだ、ということだな。もしくは…「使用すると…

メソッドコールキャッシュの実装その2

キャッシュマネージメントについては、自分で作るのもバカらしいので以下のものを候補に上げておき、実装レイヤを分離できるようにするのがよさげだ。 ehCache OScache とりあえずehCacheで作ってみよう。この手のキャッシュフレームワーク?ライブラリ?は設…

メソッドコールキャッシュの実装その1

CallCacheInterceptorというものを実装してみているところ。 これは、あるインスタンスのあるメソッドにある引数リストで呼び出したときに、その結果をキャッシュして次回以降は実際には呼び出さずにキャッシュした戻り値を返却する、というもの。二次キャッ…

3.1M7が出ました

ということで早速ダウンロードして使ってみました。3.1M6aから、F2でjavadocを閲覧した時に tableタグその他のHTMLタグがレンダリングされて、非常によろしくなったのですが、反面ソース上の日本語が表示化けしたり謎の事象に見まわれ導入を見送っていました…

CruiseControlで日本語が化ける場合

CruiseControlのWebインタフェースを使っていると、日本語がとにかく化ける。これは、UTF-8なXML を XSL で HTMLに変換するとき、xsl:outputでencodingを指定していないせいで、htmlもutf-8になっているのに、そのファイルをストリームに流し込むときに''Fil…

久しぶりに書いといてなんですが

今日の今日まで知らなかったことを恥じるのですが、 Javaがfgで動作中に Ctrl+[\] (Linuxもしくは telnetとかでlinuxに入ってるとき) Windowsだと Ctrl+Break それ以外にも # kill -3 javaのpid で、全スレッドの現在のスタックトレースを出力できるのですね…

Actionとは独立に動的に遷移先を変更する…の続き

昨日の続き。 あの方法の場合、端末ごと、など条件ごとにファイルを分けるような使い方になるが、変更に対するトレースが重要になってくる(メンテしたけどPCの画面しか変わってないなんてことが起こる)ので、場合によって選ぶしかないのかな。ただ、デザイナ…

遷移先ページの動的な変更

Strutsを使ったシステムで、Actionのオブジェクトは各種処理を実施したあと、遷移先の画面を決定することになる。Actionは遷移先を通知する手段としてActionMapping#findForward(String)を使う。 この仕掛けのおかげでクラスの責務の分離が取れているように…

setCharacterEncodingが効かない!

いつも使ってるsetCharacterEncoding()が効かない!日本語が化ける!と思ってたら、手元の試験用Tomcatが4.1.29だった。このバージョンはServlet Specにマジメに準拠した "GETのURIは適用外"のやつなんだよね。4.1.30から元に戻ったのでしたっけ。ひょっとし…

jMusicとjSyn

なかなか面白そう。別に両者に関係があるというわけではないが。 jSynのほうはASIOも対応してるらしい。CのライブラリをJNIで叩いてるからか。 jMusicのほうはフレームワークとしては目的からすると重いけど、アルゴリズミック音楽へのアプローチが面白い。…

SDU mismatch

Oracle JDBC(thin)で。普通に問い合わせしてると…なんかいきなり"SDU mismatch"とかいうSQLExceptionが発生することがある。謎が多い。 調べてみると結構遭遇している人は多いようなのだけども、これだ!という確実さがない。いろんなケースで起こるのか? 他…

webtools M1

ど、どうやって使うのかすらわからん。。。。featureのリストにも出て来ないしなんかインストールミスってるっぽいのかな。 JEMとかXSDは追加でいれてみたんだけど。contributorに lombozのとこがはいってるのでlombozとダブってると実はわからんのだろうか…

GroovySqlのいいところ

GroovySqlはなかなかいいヤツです。例えばこんなかんじ url = 'jdbc:oracle:thin:@hogefuga:1521:sid' driver = 'oracle.jdbc.driver.OracleDriver' user = 'scott' password = 'tiger' sql = Sql.newInstance( url, user, password, driver ) sql.eachRow("…

mix-in

mix-in的なものの言語サポート、やっぱり欲しいよなあ。 一番シンプルなケースだと、extends TestCaseな、ちょっとした機能が追加されたテストケースクラスっていっぱいある(GroovyTestCase, djUnitのTestCase(VMO対応), S2TestCase, jMockの...etc)んだけど…

3.0.1にしたら

3.0.1にしたら、antの補完が復活した。どういうわけか Ctrl+Spaceでうんともすんともだったんだよね。なんかbugfixらしいけど…良かった良かった。なんか3.0.0の動作が不穏、という人は3.0.1にしましょう。ちなみにうちはplugins/とかfeatures/とかオラオラ上…

意外と知られていない?

今日後輩のソースコード見ながらあれこれいじってたら(ペアプロとよべるような代物ではないけど)、「おっなんすか その機能??」という指摘?質問?を受けたので、意外と知られていないのかと思い、はてなプッシュ。まず while (condition) { if (con != null) …

URLEncoder#encode()のバージョン

JDK1.3までのURLEncoder#encode()は引数1つを取る。 JDK1.4からは引数2つを取る。2つ目の引数はenctypeを指定する。これは考えてみれば当たり前のことで、URLエンコードにJavaの内部形式であるStringを渡して、出力されてくるものはバイト列のエンコード表…

JavaWorld11月号の記事

読みましたよ 上原さん。Nanowebの紹介が入るかと期待しましたがなしで残念!!! Groovyの利用用途としてscript-enabledなアプリケーション(plugin,hotspot)がかなり魅力的だと思うのですがとっつきにくいっすかね?? beta-5,beta-6あたりでSecurityManage…

JVMのオプション一覧 via id:habuakihiro

http://blogs.sun.com/roller/resources/watt/jvm-options-list.html 圧巻です。使いこなしたらすごいのか、はたまた -server オプションを超えるお手軽存在はないのか??興味はあるけれども〜

パッケージエクスプローラがjarだらけになって困る人へ

パッケージエクスプローラを見ると、やたらと"jar"が散らばってて困っている人へ。 PackageExplorerの「▼」でメニューを出す Filters...を選択 上のName Filter Patternにチェックを入れる Filter条件のところに "*.jar" とか入れる これでちょっとスッキリ…

ServerEclipseを試して見る

が、JSPでクラス名の補完やチェックが行われず、XMLエディタでもDTDを読み込んで補完してくれるわけでもなく、バリデーションをしてくれるわけでもなく、実はちょっぴり期待していたXMLファイル中でのクラス名の補完入力もできなかった。 とりあえずハイライ…

Flow4Jを試してみる

Flow4Jを試してみた。なかなか面白い。なんというか簡潔で、出来ること、多様性はそれほど提供されていないが、シンプルに使えるという印象。 ちょっとフレームワークに依存した作りを要求されるような気がするが、TaskFlowletをインプリメントすればいいわ…

jadでJ2SE1.5ものをデコンパイルする

J2SE1.5(5というべきか)のクラスのバージョンは48.0。jadは47.0までしかサポートしていない。 で、やろうとするとエラーが出る。うーん、そりゃ当たり前なんですが、new featureを使っていないclassの場合とかもあるし。 しかも、.jadが造られる場合と造られ…

IPMessengerをgroovyから送信

Project Amateras/IP-Messenger実装を使って、Groovyからワンショット?メッセージを送信してみた。 import tk.ipmsg.*; class Messenger extends tk.ipmsg.IPMessenger { public Messenger() { super("hogefuga", "hogefuga", "TEST", true); } public void …

Groovy StoredProcedure

、というのを思いついた。きっとすでに考えている人もいるに違いない?? いるかな。手元にはまだOracle8iしかない。10gとかを試す環境もない。のでまだ試していない*1。8iの知識を元に話すと、loadjavaを使ってGroovyおよびそのdepsを全てライブラリロードす…

既存のlog4jにロギングをマージする

Velocity1.4にて確認。 Velocityはlog4jがあっても自分のcategory,appender,layoutで出してくるのでそのままでは使いにくいですが、以下の方法でマージというか、取り込むことができます。 まずは、velocity.propertiesに以下の行を追加 runtime.log.logsyst…

p6spyであれれ?

p6spyでSQLデバッグをしてみてるのだが、resultsetとかいうcategoryがいつも出てきてうざい… excludecategories=result,statement,resultset とかしてみてもダメ。どうしてもresultsetだけ出てくる。ソース見てみるか…結果。 やっぱりそうですか。私も調べて…

Eclipse便利テンプレート iteration編

もう少しお気に入りの自作テンプレートを紹介しておきまっす。 Iterator ${iterator} = ${collection}.iterator(); while (${iterator}.hasNext()) { ${Object} ${element} = (${Object}) ${iterator}.next(); ${cursor} } これが「いかにラクチンか」を説明…

Nanowebを強引に試してみる

codehausにホスティングされているNanoContainer関係のコンポーネント?ファミリ?のnanoweb(今はnanowarにマージされてるの?)を試してみた。pserverが使えない環境からのアクセスなので distサーバからSNAPSHOTを拾ってきて動作させる。サンプルも置かれてい…