投稿

2月, 2006の投稿を表示しています

遠方より友来る 亦楽しからずや

イメージ
昨日、上海で副総経理(副社長)をされていた方がひょっこり尋ねてこられました。 中国での仕事を終え、日本に帰ってきたとのこと、ご苦労さまでした。 中国の現在のソフトウェア業界の話等、聞くことができとても有意義な時間が過ごせました。 私が関わっていた頃に比べて結構変化しているという印象を受けました。 帰国後は何かと忙しいでしょうが、落ち着いたらまたお話をお聞かせください。

iBatisでSELECT

イメージ
iBatisの中のsqlMapsを使いデータベースの情報をSELECTで取得し、Javaのオブジェクトに格納しようと思います。 JDKは、jdk1.5.0_06、データベースはPostgres8.1を使ってみました。 iBatisは、2.1.5です。 iBatisのライブラリは、 ここ からダウンロードしてください。 ダウンロードしたファイルの中から、以下の2つを、クラスパスの通った場所に入れてください。 ibatis-common-2.jar ibatis-sqlmap-2.jar データベース接続用のJDBCドライバも忘れないように。 以上で最低限の準備は完了です。 iBatisはデータベースがないと試すこともできないので、とりあえず、以下のようなテーブル、データを準備しました。 ID NAME 1 User1 2 User2 3 User3 IDとNAMEだけを持った単純なものです。 このテーブルの情報を取得していきます。

基本情報技術者

イメージ
ボクが取ったときは、第二種情報処理技術者って名前だったんですけどネ。 今日、あるサイトを紹介してもらいました。 http://www.techscore.com/index.html TECHSCOREというサイトなんですけど、うちの会社で使われる技術(基本的なところではJAVA、SQLなど。Hibernateとかもありました。)を解説しているサイトです。 ここの特徴として、覚えたことを簡単に試験できるのですよ。 各カテゴリごとに問題がいくつかありまして、それをやってどれだけ覚えているかを正答率という具体的な数値で見ることが出来ます。 eclipse ショートカットとか、Java コーディング規約なんていうものまでありました。 いろんなものがあるなぁと思って見てたのですけど、 そこで目に付いたのが基本情報技術者の過去問。 二種を取ったのが結構前なので、今でも通用するのかやってみることに。 ……聞いたことない単語がばしばし出てくるんですが、これは何ですか? 結果は正答率66%。 あれ、まずい。合格するための正答率って70%だったような気がするのですけど。 てゆーか、午前で落ちたら午後採点してもらえないんじゃなかったっけ? 唯一の資格なんだから剥奪しないでよ…(´・ω・`) Share on Tumblr Tweet

Tapestry4 ローカライズ Validation

イメージ
Tapestryでは、Formから入力された文字列のValidation機能が存在します。 必須入力項目に何もデータを入力せずにSubmitされたときに、自動的にJavaScriptのダイアログを出したり、画面上にエラーメッセージを表示したりします。Validation自体の機能の説明は別の機会に譲るとして、ここで表示されるエラーメッセージもブラウザの言語設定によって自動的に英語やフランス語等に変わります。 必須入力項目等の簡単な処理であれば、標準で用意されている物を使った方が便利ですが、Tapestry3の時と同様に日本語のメッセージファイルがjarの中に含まれていませんので日本語メッセージが表示されません。 プロパティファイルなので作るのは簡単ですが、作る前に調べてみると http://issues.apache.org/jira/browse/TAPESTRY-812 で、既にアップロードされていました。(ありがとう作った方) 次のリリースのTapestry4.1には含まれるようです。 Tapestry4.1がリリースされるまでは、上記URLからプロパティファイル(ValidationStrings_ja.properties)をダウンロードし、jarにパックしなおすか、プロジェクトのソースディレクトリ JavaSource/org/apache/tapestry/valid/ValidationStrings_ja.propertiesにコピーすることで、エラーメッセージ等が自動的に変わります。 Share on Tumblr Tweet

Tapestry4 ローカライズ(2) ネームスペースメッセージカタログ

イメージ
前回の続き… Tapestry4で追加されたネームスペースメッセージカタログを使うことで、複数のページやコンポーネントで共通したキーを使い1つのメッセージカタログに纏める事ができます。 ファイルの名前は、サーブレット名+propertiesとなります。 従って、 WEB-INF/myApp.application WEB-INF/myApp.properties WEB-INF/myApp_ja.properties 上記のような配置になります。 非常に便利になるお勧め機能です。 Share on Tumblr Tweet

タオソフトウェアのオフィス

イメージ
タオソフトウェアのオフィスは、『葛飾区創業支援施設』にあります。 ここは旧松南小学校の一部をオフィススペースとして改装し、企業に貸し出されているところで、 事務所は15室、その他に共有の打ち合わせスペースや会議室があります。 タオの事務所は教室半分の広さで、社員6名が働くにはかなりゆったりとしています。 元小学校の名残といえば黒板があること。打ち合わせの時はホワイトボード代わりです。 夕方になると、グラウンドでは子供たちのサッカー教室が始まります。 子供たちの動きを観察しているとなかなか面白い。 体育館ではバスケット教室(?)が開かれているようなのですが、事務所の真上にあるので地震かと 思うほどの揺れがくることがあります。…o(;-_-;)o Share on Tumblr Tweet

Tapestry4 ローカライズ(1) HTMLテンプレート

イメージ
Tapestryの一つの利点は、ローカライズ手法がきちんと用意されているということです。 Tapestryを使用した開発で、日本語の文字化けやその他、日本語独自の問題という物を体験した事はありません。 Tapestryでは単純な文字列のローカライズ方法に関してもいくつか用意されています。 HTMLテンプレート自体の切り替え Home.htmlを日本語ブラウザでアクセスしたときにHome_jp.htmlを自動的に表示されるといったことが出来ます。 Home.htmlと同じディレクトリにHome_jp.htmlを配置するだけ終了です。 フランス語専用であれば、Home_fr.htmlを用意する等各言語別にHTMLテンプレートを用意することが可能です。 Home.htmlとHome_jp.htmlの2つのファイルが存在し、言語frでアクセスした場合、Home_fr.htmlは存在しませんのでデフォルトのHome.htmlが表示されます。このような仕様になっているためとりあえず。日本語と英語だけといった開発も可能です。 ロケールの違いによる、動作確認には、FireFox1.5では、オプションパネルの「詳細」->「言語」->「言語設定」で切り替え可能です。 この手法の欠点はHTMLテンプレートが増えるという事です。 HTMLテンプレートは画面毎に必要なため、2種類の言語対応しただけでも倍のファイル数となります。HTMLテンプレートには、コンポーネント呼び出し等のロジックが入るため、修正も両方のファイルに行う必要があるため非常に煩雑な作業になります。 このため通常使われるのは、次にあげるコンポーネントメッセージカタログによるローカライズ手法が使われます。 コンポーネントメッセージカタログによるローカライズ メッセージファイルは、Javaのプロパティファイルと同じ形式で「key=値」の形式で、キーに関連付けられた値をHTMLテンプレートから参照可能です。 例えば -Home.html <span key="hoge" /><span jwcid="@Insert" value="message:hoge" /> -Home_ja.properties hoge=こんにちは -Home.

O/Rマッピングについて(1)

イメージ
企業向けの情報システムやWebアプリケーションでは、ほとんどの場合、基本の機能としてデータの出し入れがあります。 そのデータ自体は、リレーショナルデータベース(以下RDB)内に格納されていることが多く、システムを構築する上でRDBに対するアクセス方法は避けては通れないものとなっています。 Javaなどでリレーショナルデータベース(以下RDB)を利用する場合、一般的に以下の点が問題としてあげられます。 インピーダンスミスマッチ RDBとオブジェクト指向言語の設計思想の相違から発生する問題。 通常、クラス図等で表現されたデータをそのままRDBに入れることができない。 RDB<->オブジェクト指向言語間の双方向の変換(マッピング)処理が必要となるデータモデルの違いをいう。 このような問題を解決する手段として「O/Rマッピング(Object/Relation Mapping)」というのがあり、JavaのO/Rマッピングフレームワークの代表的なものとしては、 Hibernate Torque Castor TopLink などがあげられます。 ほとんどの場合、XMLにマッピング情報の定義(テーブルとクラスのマッピング、フィールドとカラムのマッピングなど)を記述することで、JavaのオブジェクトとRDBの間のマッピングを自動的に実行してくれるようになり、 提供されているAPIを通じて、「検索」「更新」などが実行できるようになります。 プロダクトによっては、内部的にSQLを組み立てて発行してくれるため、SQLをまったく記述せずにRDBにアクセスすることも可能ですし、ツールが提供されておりクラスのソースコードを自動生成してくれるようなものもあります。 マッピングを設定ファイルで行ってくれるので、RDBのスキーマ定義が変更になった場合などは、マッピングファイルを更新すればよいのです。 といっても、マッピングファイルを作成する作業量の増加等、プログラマーの負担も増えるわけですが。。。 実際問題として、O/Rマッピングツールを利用したからといって、100%問題が解決できるというものでもありませんし、自動的にSQLを生成してくれるものを利用したとしても、デバッグ、パフォーマンスチューニング等でSQLがまったく不要になるわけではありません。 それに、RDBを利用するアプリケーショ

JavaでRSSの出力

イメージ
JavaでRSSファイルを出力する必要がありライブラリを調べてみました。 RSSLibj Informa Jakarta FeedPaser  (リリース版なし) RSSLibjは、名前は出てくるが当初ダウンロードサイトや、正式なサイトを探せず。Infomaを少し試してみました。 最初は楽だと感じましたが、RSS20の出力やATOMの出力を同じコードで出力させる事を考えていくとInfoma総ての動作を把握する必要がある。覚えるのが手間だし、LGPLライセンスなので改良するのも手間、出力がFileのみでStreamへの出力ができない。 結局何のライブラリを使うにせよ、RSS要素の仕様はきっちりと押さえる必要があり、そうすると出力をするだけなら自分で直接書いてしまった方が良いという結論に達しました。(ライブラリを使用するための学習コストは勿体ない) 結局JDOMを使って書いてしまいましたが、何で書くのが楽なんでしょうか…. JDOM を使用してRSS1.0を出力するコード

ブログスタート

イメージ
会社としてのブログを始める事にしました。 タオソフトウェアとして何らかの技術的な情報の発信をしていきたいと思っています。 旧HPに載せていた好きな言葉を載せておきます。 「道」  自分には自分に与えられた道がある。  天与の尊い道がある。  どんな道か知らないが、ほかの人には歩めない。  自分だけしか歩めない、二度と歩めぬかけがいのないこの道。  広い時もある。せまい時もある。  のぼりもあればくだりもある。  坦々とした時もあれば、かきわけかきわけ汗する時もある。  この道が果たしてよいのか悪いのか、思案にあまる時もあろう。  なぐさめを求めたくなる時もあろう。  しかし、所詮はこの道しかないのではないか。  あきらめろと言うのではない。  いま立っているこの道、いま歩んでいるこの道、ともかくもこの道を休まず歩むことである。  自分だけしか歩めない大事な道ではないか。  自分だけに与えられているかけがいのないこの道ではないか。  他人の道に心うばわれ、思案にくれて立ちすくんでいても、道はすこしもひらけない。  道をひらくためには、まず歩まねばならぬ。  心を定め、懸命に歩まねばならぬ。  それがたとえ遠い道のように思えても、休まず歩む姿からは必ず新たな道がひらけてくる。  深い喜びも生まれてくる。 (『道をひらく』 松下幸之助 PHP研究所より引用) Share on Tumblr Tweet