12/10(Sun)
/** らくらく休日出勤♪ */ 今日は、いつもより2時間ほど早い午後4時ごろに作業終了。 これで丸一日代休がもらえるってんだから、おいしいよね。 /** 隔離病棟 */ 今の席から、狭い部屋に閉じ込められるらしい。 つまりそれは、保守という暗黒の日々から抜けられるかもしれないという 微妙な可能性もあったりするわけで、ちょっぴり期待モード。 まあ、窓際族的扱いかも知れないけどねぇ。 /** 目指せ! Oracle Master Silver!! */ ・一時的なビュー表から検索する方法。 SELECT 項目群 FROM (SELECT 項目群 FROM table_name WHERE 条件) WHERE 条件 つまり、FROM句にサブクエリーを指定することで、 実表から検索をするのではなく、あらかじめ条件の絞り込まれたビュー表(のようなもの) から検索をすることが出来ます。 何十万件というテーブルを扱う時なんかには、 あらかじめ条件を絞って、件数を少なくしておけるので、 使えるテクニックでしょう。 ・ROWNUM列と比較演算子 ROWNUM列は、結果の表に対して、シーケンシャルにつけられる列です。 つまり、結果の最初の行には「1」、次の行には「2」が割り当てられることになります。 これを応用すると、検索結果件数の多いテーブルに対して、 その一部を取り出すことが出来ます。 例えば、結果の最初の10行だけを取り出すには、次のようにします。 SELECT * FROM hoge_table WHERE rownum < 11; ここで、「<= 10」とやらない理由は、=演算子を含んだ場合、 「rownum < 10 or rownum = 10」と展開されてしまうので、 比較回数が増えてしまい(2倍になりますね)、効率が悪くなるからです。 扱うデータ量が多くなると、影響してくるでしょう。 ・上記を踏まえて、BETWEENを考えてみると? 注)これは、Oracle Master Silverとは関係ないです。(どっちかっていうと、DBSP?) BETWEEN演算子って、めちゃくちゃ効率悪くない? hoge BETWEEN A AND Bって、「A <= hoge <= B」 って意味だから、(hoge = A or hoge > A) AND (hoge = B or hoge < B) って展開されるとすると、なんか遅いような気がする... 逆に、NOT BETWEEN演算子は、 hoge NOT BETWEEN A AND B --> 「hoge < A OR hoge > B」 に置換されるから、上記のような問題は発生しないね。12/9(Sat)
/** 目指せ! Oracle Master Silver!! */ ・DDL(Data Definition Language)とトランザクション CREATE TABLEとか、DROP SEQUENCEなどの、DDLを発行すると、 勝手にコミットされちゃうそうです。 結構、CREATE TABLE new_table_name AS SELECT * FROM src_table_name みたいなことをやって、テーブルの複製をしてるけど、 良く考えないと、ヤバイことになるのかもねぇ。 ・PRIMARY KEYとインデックス PRIMARY KEY指定した列には、自動的にインデックスが張られるそうです。 なんだか、便利に出来てるんですねぇ。Oracleって。 ・SQL*Plusって便利!? SELECT count(*) FROM &table_name みたいに、&付きの名前をクエリーに埋め込むと、 >table_nameを入力して下さい。 みたいなプロンプトが出てきて、table_nameに入力値が代入される。 で、バッファには、「SELECT count(*) FROM &table_name」が残ってるから、 「r」もしくは「run」コマンド、再実行すると、 またプロンプトが出てきて、また別のテーブルを試せるってわけ。 もちろん、バッファの中身に対して、置換をかけるコマンドも存在するけど、 こっちの方が手軽だしねぇ。 /** 超ハードスケジュールツアー */ 中吊り広告を見ていたら、こんなツアーが載ってました。 2000/12/31 〜19:00 ガーラ湯沢着 2000/12/31 19:00〜21:00 キアヌリーブス主演のザ・ウォッチャーを見る。 2000/12/31 21:00〜23:00 ナイトスキー 2001/01/01 0:00〜 5:00 カウントダウンイベント&パラパラオールナイト(^^; 2001/01/01 5:00〜 7:00 早朝スキー 2001/01/01 7:00〜 東京行きの新幹線で帰る なんつうか、めちゃめちゃハード(^^; まさに、10代にのみ許されたツアーだね。 /** 容量が危ないんだよねぇ */ Biglobeは、5MBしかホームページ用スペースくれないから、 もう結構危ない状態っぽいんだよね。 まさか、お金払ってまで増やそうとは思わないし。 だからといって、サイトを分割すると管理がめんどいし。 とりあえず、雑記の過去ログを削除するかねぇ。 多分、僕以外は誰も見てないし(^^; でも、これまでの過去ログのファイルサイズを合計すると、1MBを超えるんだよね。 よくもまあそんなに書いたねぇ。って感じです。 /** コンポがピンチ */ まず、CDが聴けなくなって、カセットのオートリバースが不可能になり、 AMに激しい雑音が入り、そしてついに、FMにまで雑音が入るようになりました(T_T) っていうか、ただ場所食ってる物体になってるし。 思えば、高校1年の冬ぐらいに買ったから、既に7年ぐらいになるのかねぇ。 いいかげん寿命が来たのかも。 ナスも出たことだし、景気良くMD + CDコンポでも買いますかぁ? /** ひさびさにペヤングを食す */ BBSで話題になってたから、食べてみたくなっちゃいました(^^; あの、「ふりかけ」ってのと、「スパイス」(金色の袋に入ってる)ってのが、 すっげぇ懐かしかったねぇ。 そして食べ終わった感想。 「めちゃ辛い(>_<;」 っつーか、あんなに辛かったっけ? やっぱり、黄金のスパイス入れたから?(^^;12/8(Fri)
/** ナスの日 */ ちゃんと出ました(^^; と言っても、さしたる使い道は無いので、そのまま保留。 ここが、妻子持ちと違うところ。 オジサンに話聞くと、「いやぁ。左から右に流れちゃってさぁ。」 という悲しい話が聞けます(^^; 当面は、資格試験の受験代と、勉強のための本代くらいかねぇ。 この辺り、一般人の物欲とかけ離れているところがあるのかも。 /** 冷や汗 */ 実稼動UNIX機で作業していたんですが、「WHERE句」つけるの忘れて、 せいぜい6000件ぐらいのデータをハンドリングするつもりが、 全部で50万件ものデータを複製してしまいました(^^; 慌てて「Ctrl+C」するも、既に手遅れで止まらない状態。 ディスクがあふれないように祈りつつ、見守ることに。 5分後。 無事に止まってくれました。 特に、ディスクがあふれたとかのメッセージも出てないもよう。 んで、要らないテーブルを慎重に消しました。 間違えると、実稼動中のDBも消せちゃうからねぇ(^^; ふぅ〜い(^^; って感じでした。12/7(Thu)
/** もんのすごいコーディング */ 今日は、サーバ側のソース眺めた日。 こっち側はクライアントと違って、詳細設計もフローチャートもあるけど、 いかんせん、誰かのをパクって書いたせいか、本質的なところが欠けている。 ただ単に、プログラムの流れを追っただけで、その機能で何を実現しているか分からない。 というシロモノ。 結局、PADを起こして、内容を把握することに。 っていうか、そういうドキュメントを残しておいてくれよなぁ(T_T) で、ソースを解析していくうちに、溜息モードに(T_T) というのも、SQL文を条件によって、文字列連結して組み立てているのですが、 これがもんのすごいんです。 なにがすごいって、一時変数につなげるSQL文をセットして、 つなげるサブルーチンを呼び出すっていう処理で、SQLを組み立てているところまではいいが、 それを50行近く繰り返しているから驚き(^^; 実際は、↓のような感じ。 MOVE "SELECT 項目1, 項目2, 項目3, " TO WK-SQL (MOVE A TO B → B = Aっていう代入文に等価です。) PERFORM SQL-PACKING-RTN MOVE " 項目4, " TO WK-SQL PERFORM SQL-PACKING-RTN MOVE " 項目5, " TO WK-SQL PERFORM SQL-PACKING-RTN ... 以下延々と続く(^^; COBOLでは、STRING文なるアヤシゲな機能を使わないと、文字列連結は出来ないから、 サブルーチンを使うのは仕方が無いとしよう。 ただ、もっと項目をまとめれば、そんなに何十回も呼ばなくて済むのに。 とか思うんですが。 ちなみに、こうして作られたSQL文は、メインルーチンに戻され、 (戻り値の概念は無いが、グローバル変数に格納され、処理が戻るという意味で。) FROM句が結合され、WHERE句をくっつけるために、 また別のサブルーチンに渡されるという...(っていうか、機能分割がめちゃくちゃ!) しかし、一番問題なのは、当事者は既にいないってことだったりして。 いれば、色々聞けるっていう余地は残ってるからねぇ。 だからドキュメントは大事なんだけどなぁ。12/5(Tue)
/** ある意味休日出勤おいしいかも? */ 今度の日曜日出勤だそうで(>_<; まだこないだの代休も取ってないと言うのに... ごくごく楽な仕事だと良いけどねぇ。 /** 目指せ! Oracle Master Silver!! */ 楽勝っぽい「SQL: 1Q0-005J SQL」をエントリーしました。 今回は、Java試験で使った御茶ノ水会場ではなくて、大手町の会場。 地図はあっても、迷わずにちゃんとたどり着けるか心配(^^; 試験に関しては、試験前日に勉強日として代休をもらったし、多分余裕でしょう。 (とか言ってると落ちるのだが(-_-;) それにしても、このテのベンダー試験は、学生の頃から興味が無かったわけじゃないけど、 なんせあの時は、全然お金無かったからねぇ。 それに引き換え、今はお金も時間もあるから、 取れるものは取っとかないと状態。 とある出来る人の話だと、2年ぐらいでヒマが無くなるらしいし。 1コ上の先輩は、Oracle Masterの試験一科目15000円は高すぎるって言うけど、 それぐらい自己投資していかなきゃねぇ。 /** お粗末な仕様書 */ 現在、なぜかVB(ver.4(-_-;)のソースを眺めていたりします。 この既存のソースに修正を加えつつ、新規に画面を作ったりするのが、 今回、クライアントサイドのシステム対応だったりしますが、 なんせ、仕様書と呼べるものがほぼ皆無状態(>_<; 一応、画面設計書(画面上の各項目について説明したもの)、 ユーザ関数仕様書(なぜか、全部一行説明しかない...) 以上(^^; これでどないせいっちゅうねん! 関数の説明はあるのに、イベント処理の説明が無かったら読めないでしょうが。 仕方無いので、主要部分に限り、コーディングからPAD(フローチャートのニセモノ)を起こしてます。 これだけでも、驚くほど分かるようになるから不思議。 ひょっとしたら、画面担当は別の人かも知れないから(っていうかやりたくない(^^;)、 引継ぎ文書としても有効だしね。 っていうか、保守プロジェクトなのに、ドキュメントの少なさには驚き。 本当はあるかもしれないけど、整理されてないのも含めて。12/4(Mon)
/** 先行き不安プロジェクト */ リリースが3月のせいか、なんだか緩み過ぎ。 確かに、「調査・分析」ってのも大事だけど、 汎用機側の人間と打ち合わせなきゃならないこともあったりするし、 とりあえずでも、動いて見なきゃ分からない部分もあるしねぇ。 案の定、スケジュール遅延の可能性を指摘すると、慌てたりして(^^; まあ、上の人は忙しいから、突っついてあげないと、 見きれないって部分もあるんだろうけどねぇ。 /** 目指せ! DBSP!! Part2 */ Networkに続いて、DataBaseもPart2です...(-_-; っていうか、もうSP(Specialist)じゃ無いんだっけ? とりあえず、itec事例解析の技術解説部分だけを読む作戦。 Network同様、去年の知識の蓄積が生かされて、いまのところ順調っぽい。 なんせ、第1,2,3正規形が理解出来るし(^^) 相変わらず、BCNF(ボイスコッド正規形)は理解出来ないけど... 今年一杯ぐらいは、午前問題の演習かなぁ。 去年の自己採点9割だったから、午前はスムーズに行くはず。 そして、残り3ヶ月ちょいは、ひたすら午後対策...12/3(Sun)
/** 近所の中華料理屋 */ 職場の近所の中華料理屋のお話。 ここの料理は、量が多いことで有名。 たとえばライスを例に取ると、 半ライス → お茶碗1.5杯分。 普通ライス → お茶碗2.5杯分。 っていうか、ライス大盛りって言ったらどうなっちゃうの!? って感じ(^^; そしてこの店には、デンジャラスメニューが数多く存在する。 デンジャラスメニューとは、食べきるのが困難なほどに量が多い料理のこと。 新川崎って土地柄のせいか、工事現場っぽい人が多く、 彼らはよく食べるので、大盛りだろうがなんだろうが構わないんだろうけど、 こちとら、オフィスで座りっぱだから、大盛りは食べらんないよねぇ。 こないだ、先輩がおごってくれるからとふらふらくっついて行ったら、 「おまえは、生姜焼きと、普通ライスね。」 とか言われ、出てきたのが山盛りの普通の焼肉ライス。 生姜焼きっつーのはウソです。っていうか、勘違いしてない? 食べはじめこそ、おいしく食べられていたものの、 半分ぐらいを食べた頃から、だんだん苦しくなってきて、 しまいには、「なんだこれ、減らないじゃ〜ん!?」 状態に(-_-; なんとか完食したものの、大食い選手権じゃあるまいし、 もう、デンジャラスメニューはいらないです... っていうか、先輩のおごりは要注意やね(^^;12/2(Sat)
/** ヤイダフィーバー */ IP Messenger(ブロードキャストを利用したメッセンジャー: ICQみたいなもの?)の、 名前の設定に、(だり・だり〜ん♪)とか書いてる人いました。 街じゃあ、歌ってる人とかいるし(^^; 僕的には、TSUNAMIに次ぐ、今年の大ヒット。 っていうか、今年あんまり音楽聴いてなかったけど(^^; ちなみに、アルバム「daiyamonde」の、 my sweet darlinの次の曲(曲名分からん...)が、面白いです。 っていうか、全般的に面白い歌が多いんだけど。(もしものうた〜とか(^^;) テンポが遅くなったり、速くなったり、その変化が面白いんだわ。 機会があったら聴いてみることをオススメします。 /** ある意味休日出勤おいしいかも(^^; */ だって、かなぁり楽な仕事だし、楽な格好してやれるし(カジュアルサタデー(^^;)、 代休を一日もらえる分、ツライ平日を一日パス出来るし。 ただ、気をつけなければならないのは、 「代休を取れる」 っていう前提があるからおいしいわけで、 代休を満足に取れない状態だと、ただ仕事が増えるばっかりでちっともおいしくないね。 たとえ代休を消化したとしても、今度は有給を消化出来ないし。 まあ、こんなこと言ってられるのも、新人のうちだけかも知れません。 (↑っていうか、まだ新人なの?(^^;) /** 今月のJavaWorld読破。 */ XMLは来てるって感じがするね。 XSLニガテとか言ってる場合じゃない気がしてきた。 しかも、いままで僕がXSLだと思ってたのは、実は「XSLT」らしいし(^^; XSLTに関しては、今分かりやすい連載をやってるので、 そこで基礎を理解してるつもり。 基礎さえ理解すれば、情報ソースはいくらでもありそうな世界だからねぇ。12/1(Fri)
/** なぜか...(T_T) */ なぜか明日出勤になってしまいました(T_T) 昨日さぼったバツ?