2006年04月24日
_ [Seasar] 読み方。
「シーサー」と読むようです。 今の今まで、「シーザー」って読んじゃってました。
土曜日に行ってきたPosgreSQL勉強会に、 SeasarカンファレンスのPDFを印刷して持っていって宣伝してきたというのに、 そのときにも「シーザー」って連呼してしまっていました。
今度から気をつけよう…。
_ [PostgreSQL] PostgreSQL勉強会に行ってきた。
一昨日の土曜日に、PostgreSQLの勉強会に行ってきました。 ふと思い立って前日に申し込みをする、というムチャをやらかしたんですが 無事参加できてよかったですよ。
商用DBはそれなりに触っているんですが、オープンソースなDBには今まであまり縁がなかったので、これを機にいろいろおべんきょしとこうかな、と。
以下、思ったことをつらつらと書いてみます。
マニュアルすげー。
Windows版のPostgreSQL8.1をインストールして持っていったんですが。 Windowsヘルプな日本語マニュアルがしっかり完備されているんですよね。 これにはびっくりです。てっきりマニュアルなんて英語ばっかりで、 調べ物するならGoogleさんに聞くほうがはやいだろーなーとか思っていたんですが。
これなら、最初にマニュアルを読むべきでしょうね。
残念だったのは、Windowsヘルプのキーワードがちょっと貧弱だったところでしょうか。 日本語のキーワードがなかったのと、あるキーワードの候補が複数あったときの選択肢が全て同じだったところが気になりましたね。 ここがよくなるともっと使いやすいマニュアルになりそうです。
PL/pgSQL
プログラム自身のお話は、OracleとかSQL Serverとかでストアドプロシージャを 作ってきているので、つまずくところはなし。 各DBMS間の構文の差を理解すればOKですしね。
というかそれよりもなによりも、PL/なんちゃらってのがたくさんあるっていうのが楽しそうですね。 PL/rubyとかあるのかなー。…あるようです。
ETL?
勉強会後の質問コーナーで、データベース屋さんぽい人が「ETL」について いろいろ言っていました。 「〜〜ETLでは〜〜」「〜〜データのクレンジングが〜〜」なんて単語を連発 していたんですが、全然意味を理解できず(T-T) かろうじて「DWH(データウェアハウス)」って単語はわかったので、 話っぷりから「DWHにデータを作るときにいろいろ大変なんでうんちゃらかんちゃら」 みたいなことを言っているのかなーと想像しながら聞いていました。
同じ卓に座っていた人も頭に?が浮かんでいたようで、「何言っているかわかります?」 なんて聞かれたんですが、まともに答えられませんでした。
で。
今日「ETL」について調べたところ、「Extract(抽出)/Transform(加工)/Load(読込)」の略で、基幹データから「抽出」して、適宜「加工」して、DWHに「読込」ませること、もしくはそれをやってくれるソフトのこと、ってことを知りました。
これを踏まえて、あの時言っていたことをもう一度反芻すると、なんとなくわかったきがします。 自分の言葉に適当に置き換えて以下に引用(?)してみます。
ETL使ってDWHにデータを入れようとすると、各システムのデータの変換の負荷(開発コスト)が全部ETLに集中しちゃうんだよねー。ETLはそういうことができるツールだって謳ってはいるけど、実際はいろいろと面倒で。だから、ETLに渡す前にデータ変換しておくのがよいと思うよ。今までETLにやらせすぎて失敗してきたし。
うーん。調べたときに見た世のETLツールたちが言っていることは幻想なのでしょうか(T-T)
あのときの方。もし大嘘書いていたら指摘してくださいませm(_ _)m
Seasar ConferenceのPDFが無事なくなりました。
Seasar ConferenceのPDFを5部ほど印刷して持っていって、宣伝してきました。 20人強の参加者だったので、全部無くなることはないだろーなーと思っていたんですが。
興味を持っていただけた方がいらっしゃいまして、無事印刷した全てが参加者さんの手に渡りました。
後は事前申し込みしてもらって、当日着ていただける事を願うのみです。
_ [Seasar] S2JSFで画面の初期化。
html要素にm:actionを指定すると、そのHTMLの初期化処理が記述できる、ということで以下のように試してみた。
<html xmlns:m="http://www.seasar.org/maya" m:action="#{hogeAction.initialize}"> <head> <title>テスト</title> </head> <body> <form> item:<input type="text" m:value="#{hogeDto.item}" /> <input type="submit" m:action="#{hogeAction.execute}" /> </form> </body> </html>
とHTMLを書いておき、
public class HogeActionImpl implements HogeAction { private HogeDto hogeDto; public void setHogeDto(HogeDto hogeDto) { this.hogeDto = hogeDto; } public String initialize() { //項目「item」を「test」で初期化 hogeDto.setItem("test"); return null; } public String execute() { //項目「item」の後ろに「xxx」を付加する hogeDto.setItem(hogeDto.getItem() + "xxx"); return null; } }
なんてアクションを書いた。(HogeActionとHogeDtoとdiconは省略ね。なんとなくわかるでしょ)
で実行するんだけど、思ったように動かない。
私が期待した動作は以下の通りだ。
- このHTMLを開くと、initializeの処理が実行されてitem項目が初期化され「test」と表示される。
- で、適当に文字を書き換えてsubmitすると、executeの処理が実行されてitem項目の後ろに「xxx」がついた結果が表示される。
しかし、何度submitしても「test」としか表示されない。 なんでかなー、と数時間悩みつづけていたわけなんだけど。
submitすると、input要素に指定したm:actionのhogeAction.executeが実行されるけど、その後に、html要素に指定したm:actionのhogeAction.initalizeも実行されちゃって、値が結局初期化されてしまうのが理由だった。
なので、今回のような場合は、このHTMLを表示するアクション(今回の例では作ってないけど)の中でhogeDto.itemの内容を初期化して表示するようにし、html要素のm:actionは使わないようにするべきだったようだ。
Seasar本に「5-3-14 画面の初期化処理」として説明されている手法だったので、今回間違えちゃったような書き方ができると勘違いしてしまったようだ。
ということで、html要素にm:actionを指定するときには私のようなポカをやらかさないように注意しよう。
html要素にm:actionを指定する手法が有用なのは、そのHTML(画面)で不変の内容を処理するようなときだろうか。 セレクトボックスに表示する内容をマスタから取ってくる処理とか。
_ kfuji [先日はpostgreSQL勉強会でお世話になりました。 ETLツールの質問で長々と引張りまして失礼しました。今年にな..]
_ ももたろ [こちらこそお世話になりましたm(_ _)m 解釈が同様とのことで、ほっと一安心しました(^^;; この業界、どこも大..]