7/20(Fri)
/** やっぱ、友達と飲むのがいいね♪ */ 昨日の会社の飲みは、まあ、つまらなかったわけじゃないけど、 基本的に、えらい人とかいるし、なんか下っ端だから、あーだこーだ言われるし、 やっぱ、どことなく堅苦しい部分もあって、好きになれません。 しかも、新人歓迎会ってのもあって、いつもより多く払うのは覚悟してても、 大して飲み食いしてないのに、7000円は、ちょっとヒドイんじゃないかなぁ。と。 料理も大しておいしくなかったし。。。 それに比べて、今日の飲みは最高! 同業他社の状況が聞けたりするし、好きなもの飲み食いできるし、 なんつっても、話がかなぁり合うし(^^) こういう友達がいることは、やっぱ幸せなんだろうなぁ。7/19(Thu)
/** 頭痛が痛い(>_<; */ なぁんか、普段飲まないワインなんて飲んじまったもんだから、 いつにもまして頭痛いです(>_<; 本気でアルコールに弱いね(T_T) /** 目指せ! Sun Certified Developer for the Java2 Platform!! */ SwingのGUI作成中。 とりあえずレイアウトは、BorderLayout使ってみたり、 GridLayout使ってみたり、FlowLayout使ってみたり、 自分の書いた画面イメージに合うようにするに一苦労(-_-; まあでも、とりあえずレイアウト的には、いい感じになってきたっぽい。 ただ、setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)してるから、バツ押せば終了するけど、 全然動かない画面だったりするけどね(^^;7/18(Wed)
/** 横須賀線がやってくれました(>_<; */ こいつも結構ヤってくれるんだけどね(-_-; 座って寝てたんで、原因はよくワカランが、止まってたことは確か。 残業すると、電車が止まるのか? つーことは、定時になったらさっさと帰れって? とにもかくにも、今週は全敗(-_-; もう、なんとかして〜(>_<; /** 目指せ! Sun Certified Developer for the Java2 Platform!! */ システム構成図なんかを書いてみたり。 というか、手書きベースのものを電子化して、プリントアウトしただけだったりして(^^; 今日は、バグバグしてたので、昼休みに休んでいる余裕は無かったのです(T_T) 明日から画面作り始めるぞ〜(^^)/ (つっても、中途半端なTableModelだけは出来てるけど(^^;) /** 目指せ! Oracle Master Platinum!! */ ここ2,3日、オラクルのネットワーク関連の設定ではまったおかげで、 ネットワーク管理の基礎 or 概要は、結構すんなり読めました(^^) Oracleサーバへのつなぎ方(サーバの名前解決方法)は、3通りあって、 1) tnsnames.oraという、hostsファイルもどきを用意して、サーバに接続する 2) DNSや、NISを利用して、サーバに接続する 3) Oracle Namesという、専用サービスを利用して、サーバに接続する という感じです。 ちなみに、この名前解決を確認するコマンドがあり、 その名も「tnsping」。 なんか、パクりっつーか、ほぼまんまやんっ(-_-; って感じです。 この調子でいけば、来月中には受験可能かも(^^) (→甘い?) /** ここ2,3日は、バグとの戦いでした... */ Javaには、transientというキーワードがあります。 これは、Serializableインタフェースをimplementsしたクラスに対して、 シリアライズしたくないフィールドに対して付与することができます。 EJB(RMI-IIOP)、RMI、JavaIDL、など、リモートメソッド呼び出しを行う技術は、 リモートメソッドの引数や返り値などは、シリアライズして、 リモートに転送されたあと、復元されて使われるという仕組みになっています。 つまり、引数や返り値に渡すクラスのフィールドに、 transientの指定がしてあれば、その分のデータの受け渡しが省略され、 通信コストが少なくて済むというメリットがあります。 ここまでが、基本的なところ。 で、僕は、SQL文はデータじゃないから、 シリアライズする必要はないだろうと思い、 private transient String hogeQuery = "..."; のように定義しました。 ところが、このフィールドは、ServletからEJBのメソッドに渡された時に、 なくなってしまっていました(具体的にはnullがセットされる)。 その結果、nullのクエリーは発行できないという現象に陥ってました。 (JDBC-ODBCブリッジのエラーは、「引数の値が無効です」でした。分かるわけないよなぁ〜(>_<;) 今日のところは、とりあえず「transient」をはずすことで対応しましたが、 そうすると、本質的なデータではない、SQL文がネットワークに流れることになります。 そこで、 private static transient String hogeQuery = "..."; のようにすることで、ServletとEJBそれぞれ(のVM)で、SQL文をローカルに保持でき、 ネットワークにSQL文を流すことなく、それぞれでSQL文を実行できそうだ。 という結論に達しました。いやぁ疲れた(>_<;7/17(Tue)
/** 常磐線がやってくれました(>_<; */ 今日も...(-_-; なにやら今日は、「ハシゴ」が線路に投げ入れられたとのこと。 まったく、一体だれが、何のためにそんなことをするんでしょうか。 ジャストなタイミングでやられたために、30分も車内で待たされました(>_<; 半分しか読み終わってなかったDB Magazineも、さらっと読み終わってしまいました(T_T) ただ、車内アナウンスが微妙に面白かったです。 Phase-1) 停止信号です Phase-2) 前の電車が北小金 〜 柏間で停車しているため、この列車も停止します Phase-3) どうやらハシゴが投げ入れられた模様です Phase-4) どうやら、「アルミの」ハシゴが投げ入れられた模様です ... 確かに、状況は次第に詳しくなっていっているのだが、 詳しくなる方向性が違ってないか〜? 乗客は、いつになったら動き出すのかを一番知りたいわけで、 ハシゴがアルミかどうかなんて、知ったこっちゃないんだよね(-_-; ニーズの取り違えもはなはだしいんだけど、 まあどうせ、「いつになったら動き出すのか」なんて、 知らないんだろうけどね〜 それから、何の罪もない駅員さんに、怒鳴りつけるのはやめて下さい。 > その辺のオジサン あまりにもかわいそう過ぎます(;_; /** 目指せ! Sun Certified Developer for the Java2 Platform!! */ 今日は、仕様書から画面イメージなんぞを書いてみました。 う〜ん。なかなかの出来栄え(^^) ただ、これをSwingで実装しなきゃイカンと思うと、 結構、先が思いやられるって気も... やっぱ、getContentPane().setLayout(null); ですかねぇ(^^; GUIアプリなだけに、色んなデザインパターンが使えそうなんだけど、 なんとなく、Mediatorパターンだけは、絶対使うと心に決めてたりするこの頃(^^; とりあえず、画面が決まったので(?)、かなり作れそうな気になってきました。 2ヶ月もほっぽっといて、ようやくモチベーションが上がってきた感じ(^^)7/16(Mon)
/** 常磐線がやってくれました(>_<; */ いつぞやもやった、「置石&投石」。 まぁったく、どこのガキなんだか(>_<; とっつかまえて、オシオキしてることを切に祈ってます(-_-; で、該当場所の北小金 〜 南柏の間は25km/h以下の徐行運転していたのですが、 「それって意味ある?」 とか思うんですが、どうなんでしょう。 もう、北小金 〜 南柏の安全確認は済んでいるはずだし、 どうせ徐行運転するなら、全区間やりなよって思うんですが。 まあ、さすがにそれはダルいので、全区間飛ばしましょう(^^)/ ってのが僕の意見だったりします。 さすがに、各駅停車に先越されると、頭にくるね〜(-_-; /** antさまさま */ 無かったら、仕事になりませんでした。 /** 目指せ! Sun Certified Developer for the Java2 Platform!! */ 例の課題プログラムなんですが、会社で作り始めました。 とりあえず家だと、さっぱりやる気起きないので、 ちっとも進まないんだわ。これが。 で、とりあえずAbstractTableModelの継承クラスなんか作ってみたりして、 JTableでデータを表示してみたり。いい感じかも。 案外、冷静に考えてみると、簡単に作れそうな気がしてきたこの頃。7/15(Sun)
/** 目指せ! UML技術者認定制度 ゴールドレベル!! */ この試験、すでにゴールドが始まっているらしい。 うかうかしてられないね(^^; 8月 〜 9月にシルバーをゲットして、 それから12月までの間に、ゴールドゲット!? 多分、そんなにうまくはいかないと思うけどね(^^; /** ホールドとリリーフポイント */ パワプロをやっていると、こいつらの意味が分かんないんだよね(-_-; でも、こんなところにルールっぽいのがありました。 っていうか、めっちゃこまかいわぁ(>_<; 結構大変な計算してるのね〜(T_T) /** パターンハッチング */ この本、かなぁりイケてる可能性高し。 今までさぁっぱり分からなかった(T_T) Visitorパターンを、 なんとなく分かる気にさせるところまでしてくれるし(^^; (継承階層にメソッドを追加することなく、継承階層に機能を追加するためのパターン → ナゾ(^^;) どういう思考過程で、どういうパターンを選択するのかってところを、 書いてくれているので、そういう風に悩んだ時に、 そういうデザインパターンを使うのね。 ていうのが、分かります。(分かった気になります。) デザインパターンの本を一冊読んだ後は、パターンハッチングも読んで、 「???」→「なんとなく分かったような...」 の進化をとげましょう(^^; /** インクリメンタルコンパイルの問題 */ 変更があったソースファイルだけをコンパイルしてくれる機能を、 「インクリメンタルコンパイル」といいますが、 J2se付属のjavacコマンドにも、これが含まれています。 しかし、依存関係を間違ってコンパイルしてしまうと、 必要なクラスがコンパイルされず、クラスファイル(*.class)間の 整合性が取れなくなってしまいます。 こうした場合、NoSuchMethodErrorや、IncompatibleClassChangeError が投げられることもありますが、そうでない場合もあります。 この問題を解決するには、いわゆるリビルド(全ファイルコンパイル)をすれば、 解決しますが、ソースファイルの数が多くなってくると、 コンパイルに時間がかかるため、あまりスマートなやり方とは言えません。 これって、何か良い解決策 or 回避策ってないんでしょうか?7/14(Sat)
/** 目指せ! Oracle Master Platinum!! */ 「バックアップリカバリ(8i)」ゲット♪ 合格ラインが、42/60で、得点は46/60。 かなぁりギリギリ(^^; テスト中、あんまり「きたきた〜!」って感覚がなかったもんなぁ。 多分、自信ある問題だけだったら、合格ライン達してないよ。きっと。 その理由は、iStudyの問題そのままじゃなくて、ひねったようなヤツが 多かったからなのかも知れないです。 まあ、「そのまま」ってのもいくつかはあったんですが(^^; とりあえず、問題を解くのは30分ぐらいで終わったものの、 あんまりにも自信がある問題が少なすぎるせいで、見直しすらする気になれず。 最初の5,6問だけ見直しして、「終了ボタン」を押してしまいました(-_-; この科目、ネットワークを除いた6科目の中で、 DBAに続いて、2番目に難しいような気がします。 ま、とっちまえば、こっちのもんですが(^^)v つーわけで、プラチナに「リーチ」ですな。 8月いっぱいぐらいをメドに、次の(っていうか最後の)ネットワークをやってく予定。 /** 暑い(>_<; */ なんか、じっとしてても汗が出てくるんですけど... 試験の帰り道、秋葉原からの定期を持っているので、 「電車賃浮かし&運動して健康♪」のために、御茶ノ水 → 秋葉原を歩きました。 が、 それが大失敗(>_<; なんかもう、暑すぎでバテバテ。 なんとか秋葉原にたどり着き、上野から柏まで30分ぐらい座って寝てたものの、 やっぱりバテバテ(>_<; 最近、運動不足過ぎです(>_<; 100mダッシュでもしようもんなら、骨折しそうなイキオイです(-_-; /** 野菜生活パックジュース */ しばらく飲みつづけてる、「野菜生活100」のパックジュース。 平日は、新川崎のコンビニ(ローソン)で買って、飲んでいるんですが、 ふと、土日も飲もうかと思って、近所のコンビニ(デイリーストア)行ってみると、 同じ野菜生活が売ってました。 でも、なんかストローが違うんです。 うちの近所で買ったやつは、じゃばら式になっていて、 飲みやすいようにストローを曲げられるのですが、 新川崎のやつは、ストレートタイプ? で、曲げられません(T_T) なんで同じ商品なのに、こういう違いがあるんだろうねぇ? っていうか、地域間格差??? (→ やっぱ、新川崎だもんねぇ(^^;) /** JRの自動券売機 */ 昨日、西船橋に飲みに行った帰り、3駅分だけ微妙に定期が有効な区間があったので、 定期で切符を買おうとしたところ、 「経由駅を選んで下さい。」 みたいな感じで画面に3つの選択肢が出てきました。 僕の定期は、カバーする範囲が非常に広いので(^^; ひょっとしたら、来たルートよりも、別のルートを選んだ方が安いかも!? と淡い期待をもちつつ、なにげなく「東京」を選択してみると、 あっけなく期待は裏切られました(T_T) っていうか、最初から最安のルートを選択して、 それを自動的に出してくれればいいのにねぇ。 まるで、間違えたらいっぱいお金取れるからいいじゃん。 って言ってるみたいだよ。これじゃあ(>_<;7/13(Fri)
/** ぼてっ */ 今日は久々の平日の休日。 普段会社にいると、クーラーが付いているのが当たり前なんですが、 家にいるとそうはいきません。 あまりに、クーラーのある生活が当たり前になりすぎてしまったので、 家で、付けずに過ごすのは不可能と判断し、 今年初めて、クーラーの電源をONしました。 すると、「ぼてっ」という音がして、何かがクーラーから落ちてきた模様。 辺りをみても、何にも無かったので、 「ま、いっか。」 と、ほっておくことにしました。 ところが! ふと横を見てみると、茶色い物体が「カサカサ」と歩いているではありませんか(>_<; もう、速攻で「バシバシ」して(^^; 撃退しました(^^)v にしても、「そんなところに潜んでたんかいっ!」 ってツッコミたくなるところですね(^^; /** ド素人映画評論家 */ バトルロワイアルがレンタル開始になってるらしい。 これは見とくべき?7/12(Thu)
/** 目指せ! テクニカルエンジニア(Network)!! */ 模試&試験申し込んじゃった(>_<; おととしの予想問題集と、去年の過去問&事例解析まだ使えるかなぁ。 /** 自腹メモリ復帰♪ */ こないだ会社にメモリを買ってもらったおかげで、 自腹で持っていってた128MBのメモリが、無事帰還しました(^^; ただ、このメモリって、 「JBuilder4使うのに、64MBとか128MBじゃ少なーい(>_<;」 とかだだこねて買ってもらったものだけど、 僕は、Ant使ってるので、あんまり意味無かったのかも(^^; 体感速度変わりようないし(^^; どっちかっていうと、CPU変えてもらった方が良かったなぁ。 /** 目指せ! Oracle Master Platinum!! */ Oracle的メモ。 とあるテーブルにデータをインポートする際に、 ORA-604とかいうエラーが出て、どうもうまくいかない。 エラーメッセージを見てみると、制約がどうのって言っている。 そこで、当該テーブルの制約を調べるべく、 SELECT constraint_name FROM user_constraints WHERE table_name = 'xxx'; とやってみる。 と、滝のごとくデータが画面に表示され、 最後に、「6xxx件が選択されました。」 と出てきた。 っていうか、一つのテーブルに制約6000コは普通ありえない。 そこで原因を考えてみる。ハッタリOracle Masterとして。 Oracleのエクスポートコマンドは、 テーブルのデータと一緒に、テーブルの定義をファイルに吐き出すので、 インポート時には、そのテーブル定義が復元されることになっている。 ということは、インポート前には、「drop table」をすればよいことになる。 ところが、実際の運用は、 「truncate(delete * のロールバック不可能版; 速い) → import」 となっていたところに問題がある。 truncateは、テーブル中のデータを消すだけなので、テーブル定義が残る。 そこに、インポートによるテーブル定義の復元が行われたら...? テーブル定義が上書きされれば、問題は発生しないだろう。 ただ、テーブル定義が追加されたとすれば、制約の数が増えても不思議ではない。 そこに問題があったと考えられるだろう。 インポート時の手順は、 「truncate → import」ではなく、 「drop table → import」で行うべきである。 と結論付けられる。7/11(Wed)
/** New新川崎! */ VSS復活♪ ...ついに新人よりも先に帰ってしまった(^^; 指導員(っていうカタガキが付いてるらしい)がそれでいいのかなぁ?(^^; /** DB Magazine */ 今月の特集で、即効バックアップ・リカバリなんてやってた。 「即効」だけあって、入門的な記事じゃなく、まさに現場レベルで 「すぐ使える」記事っぽかったです。 で、この特集記事を、案外すんなり読めたっぽいので、 今週末の試験もすんなり行くのかなぁと(^^; とりあえず、試験前の良い確認にはなったって感じです。