7/20(Thu)
/** Visual Testを思い出す... */ たまにしか見てない、JDCTechTipsなんですが、 久々に見たら、面白いものが載ってました。 それは、java.awt.Robot。 Visual Testみたいに、ほっといても自動的にテキストフィールドに文字を入れたり、 ボタンを押したりしてくれる機能です。 これをRobotと命名するのはどうかと思うんですが、 こんなのまでJavaで出来るようになっちゃったんですね。 JDK1.3って侮れないなぁ。 これのラッパクラスを作って、コーディングレスに出来れば、 簡単なJava版Visual Testの完成なんじゃない? 結構面白いかも(^^) ちなみに、ウインドウサイズを超えた座標を、マウスカーソル移動命令に与えると、 Javaアプリのウインドウを超えて、カーソルが移動するんですが、 ここで、マウスクリックとかやると、他のアプリケーションも操作できちゃいます(^^; ちなみに僕が試したところ、Navigatorのリンクをクリック出来てしまいました。 ディスプレイの解像度とかも取れちゃうし、 なんか悪いこと出来ちゃうかもね(^^; まあ、デスクトップの構成なんて、プラットフォーム非依存なわけないから、 そんなものを、Javaでコーディングするメリットも無さそうだけど。 (簡単に書けるっていうメリットはある。) /** あんまり読んでないと思ったけど */ JDCTechTipsちゃんと読んでました(^^; 前々回に、ラベル付きbreak(≒goto)の説明をしていたのですが、 システム開発実習の時に、3重ループから脱出するのに使っていたんでした。 読んでて良かったJDCTechTips。 Tipsって、ちょっとしたテクニックとかいう意味だったと思うけど、 こいつの威力はなかなかのもんです。 ちなみに、ラベル付きbreakってのは、↓みたいなやつ。 out_loop: for(int i=0; i<10; i++) { for(int j=0; j<10; j++) { if(i==5) break out_loop; } } 一見、またループに入っちゃうんじゃないの!? って思うんですが、ちゃんと脱出します。 なんでこういう記述の仕様なのかは分からないですけどね。 /** 無名内部クラス */ 無名内部クラスを使うと、$1, $2...みたいな名前が付くんですが、 内部クラスに、1とか2とかいう名前を使ったら、 その無名内部クラスとバッティングするんじゃないの? とか思って、内部クラスとして、「class 1{}」みたいに宣言したところ、 「識別子がありません」という感じのコンパイルエラーが出ちゃいました。 で、Javaの言語仕様を見てみたところ、 「先頭はJava文字、以降はJava文字 or Java数字」で、 Java文字は、Character#isJavaIdentifierStartがtrueになる文字。 Java文字 or Java数字は、Character#isJavaIdentifierPartがtrueになる文字だそうです。 つまり、1とか2っていうJava数字に該当する文字は、 識別子の先頭には使えないということだったらしく、 やっぱりちゃんと考えてるんだなぁとか思いました(^^; /** まだまだあるどころか... */ 雪印製品がまだ売ってることを、先週の金曜日に報告したんですが、 7/19の時点でも、まだまだ売ってます。 売ってるどころか、人気商品(イチゴ|バナナ|抹茶|カフェ)オレに関しては売りきれてます(^^; みんな気づかないで買っているのか、やっぱりおいしいから買っているのか... あの場所に該当する生産工場は野田工場なので、事件とは直接関係ないとは思うんですが、 とりあえず、補充されるかどうかが見物ですねぇ。 僕としては、補充して欲しいところです。 ある意味日課に近かったし(^^;7/19(Wed)
/** これがウワサの。 */ 「コーディングなんて、システム開発のごく一部。」 とは、良く聞く話ですが、これがどうも本当だったらしいです。 なんせ、今回僕が担当した分は、たったの30Step程度しかないのに、 ドキュメントは15ページ近く必要になるし、レビューは2回もやらなきゃいけないしで、 そっちの方に注ぐ力が、全然多いんですねぇ。 ドキュメントって言っても、当然字ばっかりじゃなくて、絵もかかなくちゃいけないし、 レビューは、みんなで集まってあーでもないこーでもないと議論したり、 レビュー用ドキュメントの間違い探しをしてみたり... そりゃあ、人手も時間もかかるよねぇ。 そうまでして作るソフトって、この先何年も使うから、 ミスをなるべく無くすってのと、保守性を考慮してるんだろうね。きっと。 結局、全ては「品質」って言葉に集約されそう。 会社としての信頼を得るには、品質ってすごく大事だから、 どこの会社もISO9000シリーズ取るのにがんばってるみたいね。 学生のときは、上の二行を表面的にしか分かってなかったけど、 現場に出てみて分かった、もうちょっと深い話。 /** プログラミングとコーディングの違い */ 一応。 プログラミング = 詳細設計(プログラム設計とも言う) + コーディング + 単体テスト という関係が成り立つので、コーディングなんて、ほんとにごく一部ですね。 この二つの言葉については、自分も今まで随分間違って使ってきたなぁ。 /** FRISK! Sharpens you up! */ 最近妙に眠いので、FRISKを買ってみたんですが、なんかカラいだけです(T_T)7/18(Tue)
/** 電車止まった(T_T) */ しかも、チカンで(T_T)。 おかげで、乗ってた京浜東北線が山手線に抜かされるし(T_T)。 ...まあ、近くで追っかけっこが見られたのは、貴重だったのかも(^^;; ホームで逃げたところで、袋のネズミも良いとこなのにねぇ。 にしても、素早い判断で、山手線に乗り移ったオジサン。 あなたの判断力はすばらしすぎますm(_ _)m 判断力というか、異常察知能力なのかなぁ。 /** 仕事開始! */ 7/3に配属されてきたはずなのに、ようやく仕事を始められました。 今日詳細設計を書き始めて、明日レビューという、超ハードスケジュール(^^; まあ、手書きベースでは、ほとんど出来てたんだけどね。 しっかし、本当にWindowsNT3.51は、GUIが使いづらいねぇ。 telnetでUNIXサーバーにつないだ時の快適さと言ったら、 もう、全然比較になりません。やっぱ「!$」でしょ(^^; 先輩がviを使っているのを横で見ていたけど、 はっきり言って、まだまだ甘いね。 そんなにEscを何回も押さなくても、set showmodeすればいいのにね。 って、横で思ってました(^^; 使いこなすとカッコイイけど、使いこなしてないと妙にダサいUNIX。 そんな気がするのは、僕だけでしょうか。 (とか言ってる自分も、多分まだ全然甘いとは思うけど。)7/17(Mon)
/** 久々の定時帰り */ 別に忙しいわけでもないのに、ヘンな感じだねぇ。 ところで、ようやく明日自分専用の端末が来そうです♪ (あくまでも、来るかどうかは明日にならないと分からない...) 搭載OSは、もちろんWindowsNT Workstation3.51!! もう、めちゃ古でもなんでもいいんです。 これでようやく仕事が出来そうだ... /** まだあったよ(^^; */ 当然のごとく、あの自販機は置いてありました。 賞味期限が8/6らしいから、それまでは撤去されないかも。 もしかすると、過去数回に渡って補充された形跡があるっていうのと、 事件のあった工場と違うっていうのと、テニスコート横という、 比較的需要の高い場所を考慮して、ずっと置いてあるのかも(^^;;7/16(Sun)
/** マジで疲れた... */ 昨日に同じく。7/15(Sat)
/** マジで疲れた... */ 今日一日中爆睡。7/14(Fri)
/** まだあったよ(^^; */ ふと、愛飲している(いちご | バナナ | 抹茶)オレの紙パックを見てみると! めちゃめちゃ乳飲料(入院量って変換された(^^;)ってところがヒットしてるし(^^;; あの自販機って、しばらく回収されないような気がする。 っていうか、毎日のように飲んでるから、回収しないで欲しいかも(^^; /** もう〜(>_<; */ 今週も端末がまともに使えなかったので、机上のお勉強でした(-_-; C Shellとか、grepとか、sedとか、awkとか、ORACLEの勉強してました。 本当は、grepとかsedは仕事的には使わないのですが、 UNIXの達人的な人になるためには、知っといた方がいいかなぁと。 ただ、grepは検索で使えるのはよく分かったんですが、sedはワケ分からんね。 コマンドが一文字だから、pはprintの略でいいとしても、 Nとか、yとか、ぱっと見さっぱり分かりませんね。 今は、awkの勉強中だったりしますが、 こっちの方がC言語ライクで、とっつき良さそうです。 ORACLEは、シーケンス番号付与の方法。 CREATE SEQUENCE sequence MAXVALUE 99999 ORDER; とかって作って、 SELECT sequence.CURRVAL FROM T_SEQ; とか、 SELECT sequence.NEXTVAL FROM T_SEQ; とかやるらしい。 従来型なら、 $sequence = SELECT MAX($id) FROM T_SEQ; $nextsequence = SELECT MAX($id) FROM T_SEQ + 1 みたいなイメージでやるんだろうけど、これだと呼び出し側の言語に依存するから、 全部オラクル側でやってしまえるSEQUENCEの機構は便利なのかも知れない。7/13(Thu)
/** もう〜(>_<; */ 今日、PCが二台来ました♪ でも、需要は3台なので、供給2台では足りません。 誰がとばっちりを食ったか。 それは当然新人である僕しかいないわけで.... もう半分グレて、手書きで詳細設計書書きはじめました。 必要なものはもらったので、あっさり書けました(^^; というか、今回はめちゃめちゃ守備範囲狭いです。 なんせ、結合テスト要員だからねぇ。 PCLを1000とか作って、テストするらしい.... (もちろん、一人でじゃないんだろうけど(^^;)7/11(Tue)
/** もう〜(>_<; */ 腐りかけです。と言っても、全然おいしくないけど(>_<; 本気でグレそう。 /** 目指せ! NSP!! Part2 */ さて、今年もこの季節がやってまいりました(^^; 届かなそうで、やっぱり届かない高度の厚い壁なんですが、 さすがに二回目の受験ということと、今自分の置かれている立場を考慮すると、 甘えたことは言ってられない状況です。(ちょっとしつこいね(^^;) 実は、ちょろりちょろりと、去年の問題集あたりをこなしているのですが、 とりあえず、午前は今のままでも、7割は取れそうな勢いだなぁと。 さすがは、大学受験に通っただけあって、それなりの記憶力だったりするわけで(自画自賛(^^;) 去年のことも、なんとはなしに覚えてたりします。 去年の試験の感触から言えば、午後T対策ぐらいまでは、 結構楽に進められそうな感じ。 あとは、事例解析をひたすらこなすのみかも。 なんと言っても、ここに多大な時間をつぎ込まないで合格はありえないからね。