なかなか本業は、、、ズレこむわけです

前エントリに書いたGWTのお勉強もほどほどに、
管理系(主に相談係りですが^^;)、保守のお仕事が少々お忙しくなってきた今日この頃
GWTの構造がWicketに近いということが分かっただけでも拾い物かw
ちゅうことで、また、武器を持たずに戦います><


でも、でもね。
このごろ大分見えてきた内容もあるっちゃぁあるので
勉強にはなってきてる。


ID統合システムやSSOなんてこれまでアプリ実装側としては
お客様がんばれ!な立場をとっていましたが、他人事ではすまされなくなって
まいりました。それもソリューションなんだよ!とw


日々の精進の甲斐もあり、先日お客様先に別の提案でお邪魔しましたが、
先方からの資料にID統合システムが入っており、おぉーこれは、ということで
意気揚々と説明しましたよ


日々精進あるのみぜよ!

GWTだしょ

このごろ、お仕事の合間にお勉強をやっておりますが、
クラウドによったものもお勉強しておこうかなw
ということで、GWTはじめてみました。


なかなかいい日本語のサイトが見つからなかったので
やっぱ、GettingStartからでしょ!
ちゅうことで、
 http://code.google.com/intl/en/webtoolkit/doc/latest/tutorial/gettingstarted.html
を読みながらチュートリして、構造を理解しはじめました。


最終的には、Slim3GWTのエントリでも書ければと思っております。


なんにせよ、がんばんべ!

武器を持たない戦場へ

武器を持たずに戦場で戦えるか?


でも、気概でなんとかしないといけないこともある


ま、何を言ってるか分からないだろうが、
武器(スキル)の合わないお仕事を任されても
リーマンエンジニアな自分には
やらないといけないもんなのさ


さてさて、頑張りますか!


前職の亡くなられた専務がよく言ってたな
 『インフラ知識は、どんなにITが進化しても
  重要だから金払ってでもやっておけ!!』
 『やるんだったら、プロとして筋を通せ!』
今になって背中を押してくれているような気がする。。。

新年明けましておめでとう御座います

新年明けましておめでとう御座います。


正月は、これといって帰省等のイベントもなく、家族3人和気藹々と
家ですごしておりましたが、、、、


昨年末からの咳が正月明けてから、少々ヒドくなり
横で寝ている家内にも迷惑かけはじめたので
新年早々近所の病院で診察してもらいました。


熱もなかったので、診察結果は、風邪!
いくつか薬を処方されましたので
現在投薬治療中です><


娘は、アレルギーの薬を飲んでいたり、年末に家内も
気管支炎をやって薬を飲んでいたのですが、、、
私のが種類が多く
 『父ちゃんのが一番多いwww』
って、、、数の勝負で負けたようです。


薬飲み始めて大分よくなりましたが、
ちゃんと飲みきって元気になるんだwww


新年早々マスクで出勤しているBlackyManなのでした^^;

CreateTableの罠

今、検証環境として、PostgreSQL8.4を利用しています。
当然RDBとして利用している訳なので、以下のようなサンプルテーブルをCreateしてみた

CREATE TABLE company_master ・・・


んで、iBatisから連携するようにXML

select * from cmpany_master


なぁんて、書いてサンプルプログラム動いてたのよ
いろいろとMTGを重ねた上で_masterってうざくね><
と感じ、いきようようと

CREATE TABLE COMPANY ・・・


と書き直し、iBatis側も

select * from COMPANY


とか変更したわけよ。。。

      • Cause: org.postgresql.util.PSQLException: ERROR: リレーション"company"は存在しません

Position: 198


おぃおぃ、さっきまで動いてたじゃないのよ、
何よこのはじきよう><
(再起動までして確認してもだめ・・・)


と、あきらめながら、数日後、冷静になって
psqlとかpgadminとか付属のツールでSQLを実行しても

ERROR: リレーション"company"は存在しません
SQLステート:42P01
文字:15


ありゃりゃ、SELECT文でCOMPANYなのに実行結果でcompany。。。
あ、もしかしてSELECT文で大文字で指定しても小文字に判定される、、、
ちゅうことで

create table company・・・


で作りなおしてみたわけよ。。。


動くじゃないの><
なるほど、大文字・小文字も気をつけないといけないのね。
当たり前なのね。。。orz


ちゅうことで、カラムも小文字に再定義しなおして
Create実行することで解決しました。


Windows環境だけかもしれませんが、PostgreSQL環境で
今後はじめられる皆様、お気をつけ下さい
『CreateTable文は、小・文・字で!!!』


業務に関係ないけど、はまったので^^;
こんな内容でつまづいてサーセン><

続・CreateTableの罠

エントリ書いたら、よろず相談なid:tagui99さんから
ありがたい情報頂いた。
以下の通りですw

[15:44:03] tagui99: windows版のpostgresql

postgres=# select version();
version

                                                                                                                        • -

PostgreSQL 8.4.1, compiled by Visual C++ build 1400, 32-bit

postgres=# create table TEST(d_id integer, name char(10));
CREATE TABLE

postgres=# \d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者

                                                                      • -

public | test | table | postgres
(1 行)

小文字で作られている。

postgres=# select * from test;
d_id | name

                        • -

(0 行)


postgres=# select * from "TEST";
d_id | name

                        • -

(0 行)

postgres=# select * from "TEST";
ERROR: リレーション"TEST"は存在しません
行 1: select * from "TEST";

" で囲むと大文字、小文字が意味をなす。
囲まなければ、暗黙で小文字変換。
[15:44:25] tagui99: 結果が違う><
[15:47:25] tagui99: 大文字のテーブルつくりたければ、" で囲むと出来る。

postgres=# create table "MASTER"(i_id integer);
CREATE TABLE
postgres=# \d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者

                                                                          • -

public | MASTER | table | postgres
public | test | table | postgres

MASTER と大文字になっていることが分かる。
[15:51:15] tagui99: これでつくると、アクセス時は、" で囲まないとアクセスできない。。小文字になっちゃうから。。変換されて
[15:51:19] tagui99: postgres=# select * from MASTER;
ERROR: リレーション"master"は存在しません
行 1: select * from MASTER;
^
postgres=# select * from master;
ERROR: リレーション"master"は存在しません
行 1: select * from master;
^
postgres=# select * from "MASTER";
i_id

          • -

(0 行)
[16:15:21] こげっち(BlackyMan): ダブルクォーテーションかぁ、なるほど
[16:15:29] こげっち(BlackyMan): 情報アザースw


ということで、Windows版のPostgreSQLで大文字のテーブル名を使いたいときは
『"(ダブルクォート)』で囲むといいらすぃ
また、1つ勉強になりましたwww


なので、こちらで情報共有w


やっぱ、エンジニアとしてこのくらい調べないとね^^;
日々精進です><
id:tagui99さん、情報有難う御座いました


追伸:

WindowsLinux関係なく、Postgre君の仕様らしぃ^^;; 前パッケージソフトの移行話しの際にEDB担当者と調べてたけど。

とのことらすぃ。。。

formのinputの必須チェックを回避するの巻

そんなことも知らずにWicket-jaを語るな!と怒られそうですが、
業務でやっていなかったということでお許しをwww


FormのInputで必須項目があった場合に

    Form form = new Form("form");
    add(form);

    TextField addressField = new TextField("address", new PropertyModel(this, "address"));
    addressField.setRequired(true);
    form.add(addressField);

    TextField zipField = new TextField("zip", new PropertyModel(this, "zip"));
    zipField.setRequired(true);
    form.add(zipField);


って実装しますよね。
でも、このFormでzipFieldの値を利用した郵便番号検索をしたい場合に
更新時の必須項目addressFieldは、必須ではない。
そういった場合に、郵便番号検索のボタンに

    zipButton = new Button("zipButton") {
        private static final long serialVersionUID = -6563042577556478557L;
            public void onSubmit() {
            //郵便番号検索処理
        }
    };
    zipButton.setDefaultFormProcessing(false);
    form.add(zipButton);


とすることで、他のボタンの時のように必須チェック等を行わなくなる。
ただし、その場合に、このボタン押下時にPropertyModelを使っている場合に
ローカル変数zipには、値が入ってこないので注意が必要です。


ふぅ〜、このケースに気づかず画面動かしてからアタフタしたのは内緒^^;