HYSPRO Diary
2002-06-03 (Mon)
_ Jikes
コンパイルがとっても速いので、WindowsでもJikesを使ってみました。
jikes-1.15バイナリ版は-encodingオプションに対応していないので、CVSでビルドしました。Cygwinが必要です。
$ ./configure
$ make
でOKです。src/jikes.exeが出来ます。コンパイルには数分かかるので、気長に待ちましょう。このexeを実行するにはcygwin1.dllが必要です。
mingwというgccを利用するCygwinに依存しないWindowsピュアなexeが出来るのですが、X on Windowsの設定がよく分からずそのままビルドしました。rpm -qするとmingw自体はインストールされているようですが。
が、-encodingを指定してコンパイルすると、Segmentation fault(core dump)されてしまいます。よって、Windows上でのjikesは断念。
2002-06-07 (Fri)
_ Struts
「Strutsは使われ始めてきた」という言葉を昨日耳にして、違和感を覚えました。それは、私の周りのMLやWebページではあたりまえのようにStrutsを耳にするからという理由だけではないような感じがしました。その場ではすぐ分からなかったのですが、一晩たって次のような言葉にまとめられます。Strutsを使う理由を探すときは過ぎ、Strutsを使わない理由を探すときなのだと。
特別な事情がないならStrutsを使うべきです。XML/XSLTでやりたいんだけど、Strutsではいまいち統合性が悪いというなら、別の方法を探しましょう。FlashやAppletをclientとする方法もあるでしょう。
「使われ始めてきた」という言葉にふさわしいのはVelocityかなと私は思います。でもその利点がまだ私にはつかめていません。JSPと同じようにVelocity templateで書けるなら、Velocityを積極的に使う理由にはなりません。何かVelocityじゃないと出来ないような技が沢山あればよいのですが。Turbineと連携したいという理由はその一つかな。
とらねこさんのところでVelocity-Struts連携のサンプルがあります。私の環境ではうまく日本語が表示できず(私の環境のせいかどうかも調べきれていない)、その理由を見つけてからと思ったのですがはや2週間も経ってしまい、ちょうどこの話題が出たのでちゃんとDLして動かしてますよというアピールをこめて、ここでもご紹介します。
_ とらねこさん
JikesがWindowsでうまく動かないことについてとらねこさんにご指摘いただいきました。直すべきポイントまで教えてくれたのですが、すみません、Cは少ししか分からないので、私の手に余ります。でも、こんなことがすぐに分かるとらねこさんて、いったい何者なんでしょうか。
_ Arianda (IDEA 3.0)
IDEA掲示板でも盛り上がっている通り、IDEAのearly access版を使っているのですが、素晴らしいです。今担当しているProjectが佳境なので、ホームページにfeed backできなくて申し訳ないのですが、その触りをここで。
自分の小人さんがPCの中に住んでいるようで、とってもコーディングがはかどります。その効果は、1週間に平日が1日あいた感じ、1日の就業時間が1時間あいた感じと言えば伝わりますでしょうか。もちろん、「あいた」時間もIDEAで開発しているわけで、その効果は複利となり増大の一途です。
まず、コーディング中のエラーチェックが素晴らしい。import文の自動追加は以前からもあったのですが、不要なimport文、文法エラーなどをエディタで色分けして教えてくれます。JavaDocコメントもエラーチェックしてくれるという優れものです。
Refactoring機能が素晴らしいです。各種renameに対応してます。パッケージ名・クラス名・メソッド名・パラメータ名などです。以前にもあったのですが、それに磨きがかかっています。プロパティの変数名をrenameすると、getter/setterも直してくれます。コメントも直してくれる優れものです。クラス名をrenameする場合、Javaではクラス名から動的に生成する機会が多いので不安ですが、文字列リテラルも変更してくれます。ですから、IDEAでrenameすれば、完全にrenameできます。
それから、JSPのtaglibやXMLに対応しました。Ctrl + SPACEで、補完してくれます。name spaceでCtrl + SPACEすると、elementが一覧され、閉じタグまで自動生成してくれます。しかも、省略不可能の属性があればそれまで生成してくれる優れものです。
_ Velocity
VelocityをViewで使うんでしょうか。もちろんVelocityはViewのテクノロジーではありませんが、JSPの代わりに使うとなると、Viewの機能ですよね。となると、そもそもViewにロジックを沢山書いてよいかという問題が出てきて、Velocityのadvantageがつかめません。そこら辺を切り分けて、Javaオブジェクトとして実装するのではなくスクリプト内にVelocityを書くのは、どのような場面なのでしょうか。でも、mikiさんご推薦なので、がぜん興味が出てきました。
2002-06-10 (Mon)
_ Viewにどこまでロジックを書くか
mikiさんのご指摘どおりなのですが、私の中で答えが出ていません。「数を表示するとき、10を超えたら赤く書く」を実装する場合、結論としてはcase by caseなのですが、次の3通りのやり方があると思います。Velocity文法をまだ理解していないので、書き方は適当です。
(1)ViewでIF文 if ($int>10) <font color="red">$int</font> else $int
(2)RangeIntegerクラスを作り、そこでIF文 if ($rangeInteger.isOutOfRange) <font color="red">$rangeInteger.toString</font> else $rangeInteger.toString
(3)RangeIntegerクラスとOutOfRangeクラスを作り、fontタグを含めてそこに書き、継承や多態で処理。 $rangeInteger.toString
_ で、「今」の私の好みは(3)[ないし(2)]です。(1)ではありません。「10を超えたら赤く書く」はある意味ロジックと捉えます。もちろん赤を青に変更しやすいようなロジックとして実装するのですが。その心は、ViewはTestCaseしにくいからです。なるべくTestCaseとして実装できるようにし(私の言葉ではユニットテスト可能性[TestCaseablity(笑)])、Viewは極めて軽く、が早く・安いコーディングかなと思っています。もちろんcase by caseというか、refactoring次第なのですが。
_ telnetの接続が遅い&操作しないと切れる
遅いのはDNSの逆引きに時間がかかっているのかもしれません。クライアントDNSの逆引きを設定してみましょう。
環境変数TMOUTで、タイムアウト秒数を設定します。0で無限大。
_ miki [VelocityはWebデザイナのような非JavaプログラマにViewを書かせることが可能であるという点こそメリット..]
_ miki [VelocityではJavaオブジェクトをスクリプトでアクセスできるようにするため、Java側でVelocityCo..]
_ ASIP [#WebデザイナにVelocityスクリプトの習得を強要はできないし、Viewがロジックの塊というのも良くないと思う..]
_ miki [文字が赤くなるという例が悪かったようです。もちろん不要なロジックの記述は避けるべきですが、HTMLのタグを動的に切替..]
_ ASIP [タグをJavaのコードに埋め込まないことを前提として「View内で複雑なロジックが必要ならばJava側でそれをできる..]
2002-06-18 (Tue)
_ XP祭り2002
日本XPユーザグループがXP祭り2002を開催するそうです。7月8日月曜日10時から代々木で講演があります。19時から新宿でうちあげです。私は参加してみます。
最近はXPそのものよりも、Agile方法論に興味があります。XPは、Agileの1つのカテゴリーのようです。Agileの本が数冊出版されそうなので、アンテナを立てておきましょう。
2002-06-24 (Mon)
_ Debianで電源が切れない
# shutdown -h now しても、Power Downという行がコンソールに出て、それきり電源が切れません。いろいろ調べた結果、
BIOSでPnPをOffにする。liloに、append="apm=on"やappend="apm=on acpi=off"を加える。
などがあり、やってみたのですが、どれもhitせず。未解決です。Kondaraでは電源が切れたマシンなので、BIOSが悪いというわけではないと思うのですが。
最近はこんなのばっかりで、Debianのインストールは難しすぎます。他のディストリビューションならなんでもないことが、Debianではなかなか出来ません。うーん、Kondaraにもどろうかな、とひよってます。でも、Debianを使っている人がいるのが悔しい。
2002-06-26 (Wed)
_ Debian WoodyでCocoon2をinstall
またまたCocoon2のinstallです。Cocoon2は依存関係が複雑なので、installを楽しませてくれます。せっかくdocumentが揃ってきたのですから、Cocoon2のInstallingやFAQは目を通しましょう。
今回の前提は、Cocoon2は2.0.2を使用し、JDKは1.3.1とします。
JDK1.4を選びたいのですが、Blackdownはまだ1.3.1なので、aptでinstall出来ない1.4はパスします。woodyにcocoon2パッケージがあるにはあるのですが、1年以上も前のバージョンでメンテされていないため、cocoon.warはApacheから自分でDLします。
さて、Tomcatのバージョン選びですが、結論から言うとTomcat 3.3が楽です。エッと思うかもしれませんが、Tomcat 4.0.3では、TomcatとCocoonとの間でXercesやXalanなどの衝突があり、いろいろjarを取り替えねばならず面倒です。Tomcat 4.0.4を選びたいのですが、まだaptに上がってきてないので、パスです。
結局、バージョンは、Blackdow JDK1.3.1、Tomcat 3.3、Cocoon 2.0.2です。JDKとTomcatはapt-get installします。Cocoon2は自分でDLし、webappsにcocoon.warを置きます。
さて、お馴染みのX Serverとの兼ね合いです。この状況でX Serverからの接続拒否エラーを回避するには、いろいろ手があります。お勧めはPJAです。
まず、X Serverを使用する手があります。一見素直そうですが、X上でやればOKという単純な話では終わりません。Tomcat 3.3は、www-dataユーザーで動作します。このユーザーにX Server接続権限がないので、xauthで権限を与えるか、動作させるユーザーを通常のユーザーとするかします。
2番目に、ちょっとacrobaticな方法として、cocoonの中からBatik関連のパッケージを全て(jarファイルやpilelineでの記述)除く手があります。Batikを使わないのであれば、これが根本解決かもしれません。
次に、Xvfbを使用する手があります。
最後に、PJAを使用する手です。これをDebianでやるのは簡単です。unstalbeに、pjaのパッケージ(libpja-java, libpja-java-doc)があるからです。sources.listにunstalbeを加えて、これをaptしましょう。驚きと言うべきかやはりと言うべきか、このパッケージのメンテナはとらねこさんでした。Thanksです。aptすると、pja.jarとpja-tools.jarは/usr/share/javaに入ります。
残るは、Tomcat 3.3がPJAを使用して起動するようにするだけです。/etc/init.d/tomcatが起動scriptなので、これをいじりましょう。72行目のCLASSPATHに、/usr/share/java/pja-tools.jarを追加します。74行目のTOMCAT_OPTに次の設定を追加します。
-Xbootclasspath/a:/usr/share/java/pja.jar -Dawt.toolkit=com.eteks.awt.PJAToolkit -Djava.awt.graphicsenv=com.eteks.java2d.PJAGraphicsEnvironment -Djava2d.font.usePlatformFont=false -Djava.awt.fonts=/usr/lib/j2sdk1.3/jre/lib/fonts -Duser.home=/usr/lib/j2sdk1.3/jre
以上で、OKです。
Debian使っててよかったなぁと思う瞬間ですね。いや、Debianじゃなかったら、迷わずJDK1.4入れてたんだから...。まあ深く考えるのはやめましょう(笑)。
追伸:DebianのJavaのライブラリは古いものが多いです。せっかくDebianなのにとても残念です。メンテナを助けるにはどうすればよいのだろうか。まずは己の腕を上げねば。
2002-06-28 (Fri)
_ 訓 自分ならどいう結末にするか
上司に報告する前に、自分ならどうするか最後まで思考実験しよう。そうしないと、商売人としての勘が育たない。思考停止するべからず。
Debian links:スレッドテンプレ, Debian Quality Assurance, Debian Package Tracking System
written by はんばあぐ

_ miki [私はVelocityの第一印象はよくなかったのですが、使い出したらはまりました。Velocityを使うとJavaオブ..]
_ miki [Anakiaを使うとXML(のJDomオブジェクト)をVelocityスクリプトからXPathを使って参照できます。..]
_ miki [しつこくてすみません。Velocityの一番良いところは、Javaを操作しているのにも関わらずスクリプトに一切Jav..]
_ Oかもと [Anakiaもいいですが、DVSLとかXSLTライクで良さげですね。あと、Velocity-Struts連携の日本語..]
_ ASIP [http://xion.s11.xrea.com/pub/java/kpj/で拙作のライブラリKLPを公開しています..]
_ miki [Velocityを使い出したきっかけは、JSPやServletの代わりとか、そういうのではなくて、GUIのカスタマイ..]
_ miki [私がVelocityServletを使っていると書いたのは、GUIプロタイプをWeb上で作っているからです。アプリを..]
_ miki [Velocityを使う気になったのは、ChibaというXFormの処理系と、LuxorというXULの処理系(両方とも..]
_ miki [「そもそもViewにロジックを沢山書いてよいかという問題」について。Velocityで扱うのはプレゼンテーションを作..]
_ extend_uni [Struts-Velocity連携で viewにVelocityを使っています。 HTMLのコーディング内に <!-..]