
2003.2.2 〜 2003.12.28
[1999.9-2000.9 2000.9-2001.3 2001.4-2001.12 2002.1-2002.6 2002.7-2003.1 2003.2-2003.12 2004.1-2004.12 最新版]
僕のホームページ[1]および[2]の更新メモですが、自分のページ作成に関して参考にしたサイトなどや興味あってちょっと調べたことなどを紹介しています。
- 2003.12.28
- インタフェース誌はC++テンプレートプログラミング特集なので買い。C++でテンプレートの解説というと、今まではSTLの解説位しかなく、あとはModern
C++ Designのように難解な本となってしまいます。さて、この記事はどうでしょうか。
Web+DB PRESS誌、DBマガジン誌を購入。年末は雑誌出費がかさみます。オライリーのTomcat本も購入してしまいました。
メトリクスの中にプログラム規模の指標となるLOC(Line
Of Code)がありますが、これ測定する際にコメントを含むべきか含まざるべきか・・・。
- 2003.12.27
- うーむ、日経バイトのCD-ROM、2003年分まで入ったDVD版が出ていた。つい先日2002年分までのCDを買ったばかりなので、ちょっとやられたーっと思いましたが、よくよく考えてみればうちでDVDを読めるマシンはない(故障中のノートPCにはあるのだけれども・・・)。
JavaWorld誌、JavaDeveloper誌を購入。JavaWorld誌はTapestoy連載記事が購入理由。JavaDeveloper誌は、アスペクト指向、JNIの連載開始といったところ。DBマガジンとWEB+DB PRESSは荷物が重くなるのでまた次の機会にしました。DBマガジンは今まであまり内容をチェックしていなかったのですが、J2EE分野を中心にJavaの記事がけっこういろいろ載っているのを最近になって知りました。12.24発売の号では付録CD-ROMに2003年のセレクト記事が収められており、サーブレットやJDBCの記事が含まれていました。
J2SE SDK1.5alpha ?
More Java Pitfallsを読む読書会の日です。今日でこの本は読み終わる予定。次回の課題図書は何になるのか、現在読書会のページで投票中です。
- 2003.12.21
- 年末の整理をかねて、たまっていた日経バイト、日経インターネットのバックナンバーを処分。日経バイトはCD-ROMを購入したので記事はいつでも読めるのでがばっと束ねたけれど、日経インターネットの方は残しておきたい記事をチェックしながらなので時間がかかってしまいました。あとはJavaWorldだけど、こっちも
Linux上でのApache、Tomcat設定になんだかんだで1,2週間ほどかかってしまいました。インターネット上にも情報があるようで実はなく、苦労しました。Tomcat
5の場合にコネクタjk2はどれを取ってくればよいのか、コンパイルで出た問題の回避方法、Tomcat5のサービス起動設定方法とか、いろいろはまってしまう部分があったのです。顛末はApacheとTomcatを連携させるページに記載しています。
JDBCのはまり:自動コミット機能。データを大量に作成するプログラムでは、自動コミットを無効にしておかないと一件ずつコミットが働くため、作成に異常に時間がかかってしまいます。
- 2003.12.12
- 情報処理学会ソフトウェア工学研究会パターンワーキンググループの第1回ソフトウェアパターン勉強会に参加しました。議題は4つで、ソフトウェアパターン入門、プログラミングパターン、C.Alexanderの読書会概要、パターンランゲージの紹介です。以下当日のメモ(自分にしか役立たず)
パターン:エキスパートの良い設計を学ぶことができる。何でもパターンを適用するのはNG。
プログラミングパターン:熟練プログラマのコーディング(意図)を伝達
セミラティス:部分的に格子構造をもつ。問題分割をしていた時に重なりがある。対比されるのはツリー。マスタープラン
v.s. プロセス
「質」を実現するために何かが欠けている!
パターン 上位のパターンに下位のパターンをはめ込む。
パターンの完成度を3レベルで表現。
- 2003.12.7
- Windowsマシンにおいて、Java3D APIの実装は、DirectX版とOpenGL版があります。どちらが最適かはハードウェア構成によって異なります。自分のマシンではどちらがよいか評価するには、とりあえずJava3Dをインストールするときに一緒にインストールされるJava3dデモの中のFPSCounterを実行するとよいかもしれません。
以下、CPU: AthlonXP 2500+/SiS746/Radeon 9100の場合
|
OpenGL版 |
DirectX版 |
FPS値 |
1995fps |
5034fps |
- 2003.12.3
- J2EEコンテナ上では、JDBCデータベース接続においてドライバクラス名、接続URL名を指定するのにJNDI経由で情報を引っ張ってくることが出来ます。これはデータベースの実装に依存しないコーディングをするのに大いに役立ちます。しかし、J2EEコンテナ上でないと使用できないのは不便です。例えばテスト・検証、ちょっとしたコードを書くときなど、いちいちJ2EEアプリケーションとして作成してデプロイするのはちょっと勘弁、という状況です。プロパティファイル等から情報を引っ張ってくれるJNDIプロバイダがないかと探していたら、Simple JNDIというライブラリを見つけました。Javaのプロパティファイル形式でファイルに情報を記述し、JNDIディレクトリ階層に合わせてファイルシステムのディレクトリを掘ってプロパティファイルを置いておけばよいようです。自作しようと思っていたのですが、既にありました。
- 2003.11.29
- Java読書会の日でした。議事録を書かねば・・・。
OpenORB 1.3.1のIDLコンパイラ起動にて、-jarオプションでopenorb_tools-1.3.1.jarを指定するとNoClassDefFoundError:
org/openorb/util/Traceと例外となってしまいます。原因はopenorb_tools-1.3.1.jarのMANIFEST.MFのClass-Path:にopenorb-1.3.1.jarが指定されていないためです。本日現在、OpenORBのCVSリポジトリを見ると、MANIFEST.MFを生成しているopenorb/OpenORB/src/etc/idl2java.propertiesには設定が抜けています。
Eclipse 2.1.2の標準CVSプラグインで、knjwrp適用CVSサーバを使用しているとコミットログが文字化けしてしまいます。理由はknjwrp適用したCVSサーバではコミットログを日本語EUCコードに変換していますが、EclipseのCVSプラグインはSJISと思い込んでいるためです。暫定処置としては、plugins/org.eclipse.team.cvs.core_2.1.1/cvs.jarに含まれるorg/eclipse/team/internal/ccvs/core/connection/Connection.classのソースに手を加えて置き換えます。eclipse-mlのログで紹介されていました。
- 2003.11.27
- IBMのJava技術情報サイトdeveloperWorks Java
technologyに、J2SE v.1.4から追加されたレイアウトマネージャSpringLayoutの解説記事"Merlinの魔術:SpringLayoutマネージャ"が掲載されています。精密にレイアウトを制御したい場合は、GridBagLayoutより直感的に使いやすそうな印象を受けます。既存のレイアウトマネージャでは制御が難しくてレイアウトマネージャをnullにして座標制御をするような場合、SpringLayoutを使用するのがよいでしょう。この記事の参考文献で紹介されている、Sunの"Java Tutorial - How to Use SpringLayout"は、J2SE v.1.4が出た当初は執筆途中だったのですが、現時点では完成しています。
Led Hat Linux(無償版) が打ち切りになり、その後継ともいえるFedora
Coreをインストールしてみました。IDGのLinux
World OnLineサイトの主要LinuxのインストールガイドにFedora Coreのインストールガイドが掲載されています。
ソフトウェアメトリクスを計測するツール-Eclipse
plugin編
- 2003.11.24
- 雑誌/書籍の買い込み日です。"Java Press
Vol.33"、"Java World 2004.1"、"Linux
World 2004.1"、"図解でわかるデータベースのすべて"。Java
Pressは創刊以来購入し続けているので内容を見ずに買ったが、読むところがほとんどなかった。記事の濃度が薄いというか、興味を惹かれるテーマがないというか・・・。Java
WorldはTapestryの連載の続きとCactus、Swingの記事があったので買い。メモリ消費量の記事も良。一時期のようにサーバーサイド記事偏重からバランスを取り戻したようで、うれしいところ。Linux
Worldは、Fedora CoreのCDが付いていたのが主な理由(他の本でFedora
Core DVDが付いていたのもあったが、DVDはドライブがないのでNG)。図解でわかるデータベースのすべて、は、データベースの基礎としてファイル編成から解説があるので知識の整理およびRDBMSの基礎知識獲得のために購入。RDBMSも所詮ファイルをラッピングしたものなので、ファイル編成の基本を知っておくのがよかろう、というところ。買わなかったのは"Java
Developer"、O/Rマッピング特集は着目がよいなと思いながら取り上げている製品がO/Rマッピングの標準化JDO非準拠のものばかり。
- 2003.11.19
- 週末は風邪で仕事も1日休んでしまいました。講師のため朝早く出ていながら、調べ物などで夜がいつものペースだったので慢性睡眠不足、そこをやられてしまいました。サーブレットのユニットテストをCactusで実施するなどのネタがありながら、Web化するゆとりがない現状です。
XP(eXtreme Programming)はやはりスキルが高い人が必要です。タスク分割の際に暗黙裡に設計(アーキテクチャ設計)が実施されており、またタスクの開発時にはテストケースを考えるにあたって暗黙裡に設計が実施されています。特にタスク分割の際の設計はかなりのスキルが必要となります。この部分がXPのウィークポイントでしょう。現にXPのプラクティス上も「メタファ」と曖昧な表現で逃げている部分です。補完するには何がいいのかを考えるのが課題ですが、今のところいい案なし。経験しかないのかもしれません。
- 2003.11.12
- 仕事上で新入社員向けにソフトウェア開発実習の講師をしています。今年は開発ツールを自分たちで調査・選定させたところEclipseを使用することになりました。今までEclipseを食わず嫌いしていたので、今回いろいろ学ぶことがありそうです。数日使用している様子を見ている限りよく出来ているツールだなと感想を持ちました。バージョン管理(CVSクライアント)機能を最初から持っているのもよいですが、コード編集アシストが充実しているのにはつくづく関心しました。Emacs系のエディタになれているので、バリバリ文章やコードを書くのは辛いですが、タイプ以外の開発作業が楽になるのがよいかな。Emacs系は文章(コード)を書く際に痒いところに手が届くようにするツール、Eclipseはコードをいかに書かずにすませるようにするツールといった感じかと思います。
なるべくXPに近い開発実習をとっていますが、タスク分割作業が難しいです。タスク分割の時点で実はかなり設計行為が発生しますが、熟練したプログラマーでないと頭の中で設計が湧き上がってこないのでタスク分割が頓挫してしまいます。分割にあたってタスク間にインタフェースが発生しますが、このインタフェースも頭の中で設計する状態なので、タスクを開発する段になって関連するタスクを見直すことも起きます。この辺はいろいろ事例を調べてみたいところ。
- 2003.11.3
- このサイト(246.ne.jp)は年内もしくは年度内には新しいドメインに移行する予定です。(利用しているプロバイダが統廃合によってドメインが変更になるため)
「品質、コスト、納期」という記事がAll About Japanというサイトに記載されています。”大切なのはどれ?”と問うと多くの現場では”納期>コスト>品質”となるだろうが、実は”品質管理の結果が納期やコストである”と述べている記事です。”いくら、がんばってプロジェクトマネージメントをしても、品質のつくりこみがきちんとできていない限り、納期も短くならないし、コストもさがりません。”という内容になるほど、と思いました。
- 2003.10.30
- Red Hat Linux 9にOracle 9iをインストールする場合、インストーラが途中で固まってしまいます。Oracleが検証しているLinuxディストリビューションはRed
Hat Enterprise Linux(\98,000〜)、Miracle
Linux Standard Edition(\60,000)、TurboLinux
Enterprise Server 8 powered by UnitedLinux(\98,000〜)と高価なものばかり。日本語のサイトでは、解決した情報は見つかりません。OTNの掲示板では、動作保証していないLinuxを使うなというニュアンスの非テクニカルな情報が載っているばかり(エンジニア魂はない発言だなぁ。なぜエラーになるかとかに議論が展開しないのが・・・)。英語検索すると、Installing Oracle 9i on RedHat Linux 7.2,7.3,8.0,9,AS2.1,3.0のページに詳細にエラー原因と対処方法が載っていました。このサイトの情報でインストールは完了にこぎつけたのです。また、Installing Oracle 9iR2 on Red Hat 9というページもありました。
- 2003.10.29
- 自宅と会社でRedHat 9をインストールしています。LinuxのディストリビューションはもともとDebianだったのですが、最新環境をテストするにはRedHatの方が手っ取り早いかと。早速Samba3.0のテスト。まず日本Sambaユーザ会のWebサイトから情報収集し、3.0以降は日本語機能がオリジナルのsambaに組み込まれることを知りました。しかしまだバグがあるらしく、Linuxの場合にglibcかlibiconvかどちらかにパッチを当てて対処する必要があります。今回は、libiconvにパッチを当てたものと、そのiconvを使用するようにビルドされたSambaのrpmパッケージをringサーバから入手しインストールしました。以下設定の試行錯誤のメモ。
- 2003.10.24
- 海上自衛隊の観艦式(予行)の体験航海で護衛艦きりさめに乗船してきました。約8時間の航海で横須賀港から観艦式会場となる相模湾の往復でした。前日にひょんな偶然でチケットが手に入ったのでした。天候が良く波も静かで予定イベントがほとんど実施されました。何十隻もの艦艇が一同に会して航行する姿を見ることができました。
CygwinのXサーバに関してのメモ。startxwin.sh/startxwin.batは、マルチウィンドウモード(各ウィンドウが、Windows
OSの配下に置かれ、ルートウィンドウは表示されない)で立ち上がります。startxは従来どおりでデフォルトのウィンドウマネージャはtwmです。
昨日と今日の書籍・雑誌購読リスト
ちょっと買い込み過ぎたかも。「オブジェクト脳の作り方」は自分で勉強するつもりなら買わない本なのですが、来月から新人向けに実施する教育のネタ探しに使えそうだったので購入。
- 2003.10.21
- ようやくLinux稼動。さっそくJavaサーバマシン化するので手始めにSunからJ2SE
SDKをダウンロード。Ver.1.4.2_02になっている。最近はtelnetはデフォルトではつかえないようになっているので、sshでリモートからログインするようです。Windows側にCygwinのOpenSSHパッケージを追加インストールし、sloginでアクセスしてみます。結構簡単だ。。。
Java読書会MLで、XPエピソード(翻訳)を紹介してもらいました。関西弁翻訳もあって楽しい読み物になっています。2人が対話しながらXP開発を進めるストーリーで、テストファーストとペアプログラミングの様子がよく分かります。
- 2003.10.20
- マウスをUSBのホイール付きマウスに交換。再度Linuxインストールに、と思ったら2回目の起動時にまたBIOSの診断エラー、ピーーー、ピピピ、これはビデオカードだ。Voodo
Bansheeですが、これがどうも原因らしい。もう一枚余っているPermedia
2vチップのカードに変更したところOK。うーむ、とりあえずこれでいくしか。
- 2003.10.19
- 今年のG/Wに電源、マザーボード、CPU、メモリ、HDD、グラフィックスカードと筐体以外をほとんど換装したので、筐体がもう1つあればPCが組みあがる程の部品が余っていました。これら余り部品に筐体とキーボードを足せばもう1台PCが出来るので、週末に筐体とキーボードを買いました。新しい筐体はケースファンもついてよく冷えそうなので、今稼動しているPCの中身をごっそり移し、古い筐体に余った部品を取り付けて2台のPCを組みました。筐体を変えたらCPU温度が10℃下がり快調です。ケースファンが付いていることが効いているのかもしれません。古い部品で組みあがったPCにはLinuxを入れるつもりです。古い部品の組み立てでは、最初CPUが認識されず、これはCPUを強く挿してOK(スロット1)。次は1回だけ正常起動後、次から起動時にBIOSのビープ音がエラーを告げて起動せず。うーん、長音が何度も繰り返され、メモリかビデオカードのエラーと判明。数々の試行錯誤の結果、メモリを挿し変えても変わらずだけれどビデオカードを強く挿したらOK。現在Linuxインストール中。しかし今度はマウスが認識しない。あれーっ、単なるPS/2の2ボタンマウスなのに。。。とっかえひっかえしていると、どうやらマウスが壊れていることが確認できた。機械式なのに壊れるのか。そういえば、子供がマウスをおもちゃに遊んでいたからなぁ。いろいろあってLinuxは未だ入らず。
- 2003.10.15
- Servlet一本槍だとHTMLのprint文があちこちに散在して管理しずらいという話がある。JSPを見ると、やはりあちこちにprint文がある。何だ、結局一緒じゃんっ。とServlet+JSPという組み合わせがよいとの記述につながるのかぁ。しかもスクリプトは薦めていなくてタグを使うのがよいらしい。
- 2003.10.11
- 書籍「Cygwin+JE」の日本語強化パッケージがインターネット公開されました。Project HeabyMoonのページ参照。ここ1,2ヶ月ウィルスによるメールが大量にやってくるので、WinBiffの振り分け正規表現対応版(Ver.2.34RC1)にアップし、正規表現を調べて「Riueちゃんの正規表現講座」に行き当たってそこから見つけました。
昨日購入した書籍
- 2003.10.9
- Servletを使うWebサーバをちょっと非力なPCで動かすべく、Apache+Tomcatを調べ始める。情報が多いと思ったが、若干古い情報(Tomcat
3.x)であったり、Deprecatedなmod_webappだったりというものが多い。そこで、整理がてら3年ほど放置していたServetの安息ページに追加開始。
- 2003.10.7
- 「個々の開発者自身は再利用についてできることはほとんどない。」(ソフトウェア再利用ハンドブックより)
久々に「ソフトウェア再利用ハンドブック」(原題"Software
Reuse"、当時トッパンから出版)を読み返している。1章では上述の表現が妙に印象に残った。再利用を行うには技術者の出る幕はそうないということ。買った当時はさらっと読み流した1章だが、今読み返すといろいろ響いてくることが書かれている。再利用における共通の原理として
- 上級管理者が変革を開始し維持すること
- 製品ライン、アーキテクチャの重要性
- 再利用を可能にするプロセスと組織の重要性
が挙げられている。CMMとのつながりがよさそうな感じもする。
- 2003.10.5
- CygwinのX関連メモ。キーボードをJIS配列に設定するには、
- 独自Xの場合、setxkbmapを実行する。
.xinitrcに記述すると便利
- リモートXサーバの場合、リモート側でxmodmapを実行してJIS配列となるよう設定する。
「Cygwin+XFree+日本語アプリケーション」のWebサイトで公開されているstartup.gzの中に106キーボード用のXmodmapファイルがあるのでこれを利用するとよい。
X起動オプションの-engineって描画エンジンの指定とあるけど何だろう?
数値で{1|2|4}が指定可能で、意味は 1: GDI
blitter, 2: DirectDraw blitter, 4: DirectDraw4
blitter らしい。最近のマシンであれば、-engine
4を指定すると速いかも。
CygwinでGTK+のページ、CygwinでQtのページ、双方インストールからHello Worldプログラムの実行までを記述した。
Cygwin上でQtプログラミングをする際、まずHello
Worldを確かめた。最初リンクエラーが解決できず大いに困ったが、原因はCygwin
QtがGCC3.xに対応していないためであった。うむむ・・・、C++はコンパイラのバージョンに依存するという教訓を前の仕事で得ていたのに。
C/C++では最初にHello Worldプログラムを作って動かすことが慣例になっているが、これはコンパイラ、OS、ライブラリなどをセッティングした後にコンパイル・リンク・実行と動作確認をするためだ。まずコンパイル時点でコンパイラの設定・OS/ライブラリのヘッダファイルのインストール場所や漏れ、ソースファイルの指定方法や文字コード/改行コード、作業ディレクトリのパーミッションなどが確認できる。このとき、あまり複雑なプログラムではコンパイルエラーが発生したときに環境が悪いのかツールが悪いのかプログラムコード自身が悪いのか問題の切り分けが大変だ。であるから、簡単明瞭な分割コンパイルなどしない単一ファイルのHello
Worldプログラムが望ましい。次にリンク時点で、ライブラリファイルの指定方法、リンカへの指示方法、ライブラリファイルの漏れなどが確認できる。コンパイラのエラーよりも問題の切り分けが難しいので、C/C++ではリンクが結構大変である。最後に実行となるが、昨今では共有ライブラリファイルを使うので実行時リンクが行われ、意外と問題が多い。結局いいたいことは、Javaはいい、に尽きる。
- 2003.10.4
- GTK+, Motif, Qtの比較検討であちらこちらを調べる日々。それにしてもUNIX系はまだまだC言語が主体でC++はあまり浸透したとはいえないようです。C++の場合、コンパイラが違うとリンクできないので、それも痛い。C++はコンパイラによって名前のマングリング規則が違うため、規則の異なるコンパイラで生成されたバイナリ(ライブラリまたはオブジェクトファイル)とリンクすることができない。
冗長インクルードガード有無での性能比較をしたときに、GCCだとどちらも同じ結果で首をひねっていた。しかし、GCCのプリプロセッサがインクルードガードで囲われたヘッダファイルについては、冗長インクルードガードと同じく2回目以降はファイルの読み込み自体をスキップする機能を持っていることが分かった。
- 2003.9.29
- JDEE2.3.3beta6がリリースされました。
- 2003.9.28
- TAOの実行でエラーになると連絡を頂きました。Webに記載しているインストール手順はVer.1.3.3用ですが、Visual
C++でビルドするときにあちこちでエラーとなっています。なんとかビルドしても、実行時にエラーとなってしまいます。Ver.1.3.1に戻せばOK.TAOのインストールページはVer.1.3.1のインストールとして修正しました。
- 2003.9.25
- Eメールを扱うJavaのAPIにJavaMail APIがあるが、これはどちらかというとメールクライアントを作成する用途向き。メールサーバ用途には、Apache
Jamesというフレームワークがある。勿論JamesもJavaMail
APIを利用している。JavaMail APIについては、書籍「JavaMail完全解説」(木下さん著)が出ている。Jamesについては、IBM
developerWorksサイトで「Jamesの使用第1回 ApacheのJamesエンタープライズ電子メールサーバの紹介」記事が掲載されている。
オライリーから「C++実践プログラミング第2版」が9.29付けで出版されるようだ。C++については最近やっと標準仕様に基づいた内容の書籍が増えてきた。
- 2003.9.24
- 雑誌JavaWorldとJavaDeveloperの2誌を購入。何故だろう? きっと仕事上Javaが全然ないのでその反動だろうかと推測する。自分のことが一番分かっていない。そういえば、「自分の誤りを自分で見つけることができない」というのがレビューの原理だそうだ。
- 2003.9.23
- 先週のJDCセミナーでHotSpot VMではメモリアロケートが非常に早いと云っていた。2003.6.23にJavaWorld1998.12のベンチマークをC++/Javaで比較していたが、その結果によると、インスタンス生成はJava(JDK1.4.2)の方がC++(VC++6.0)より2.5倍ほど速いとなっている。ベンチマークが古いため、HotSpot最適化にはまり過ぎてしまっている気がするが、確かにHotSpot
VMは速い。
JavaのHotSpotに関する日本語資料がSunのWebサイトで閲覧できます。
- 2003.9.18
- 昨日はSunのJDCセミナー「Garbage Collection
in Java」を聴きに行きました。HotSpotのGCに3種類あること、Generation
GCの仕組みについて、Eden,Survivor Space,
Old, (Permanent)と世代毎に分かれてそれぞれGCの方法が異なっていること、Generation
GCのおかげで新しいオブジェクトをnewする処理がすっごーく速いこと、finalize()の仕組み、オブジェクトプールを作ることはあまりよくない習慣、nullを入れるのもあまり役立たないこと、などを学びました。なかなか濃い内容でGood。
- 2003.9.16
- J2EEの修得メモ:開発環境としてはJ2EE SDKがあるが、本格的な開発環境に慣れるという意味では開発ライセンスが無償のSun
ONE Application ServerのPlatform Editionを使う方法もありそうだ。ZDnetの連載記事「無償で構築可能なSun ONE Application Server」で紹介されている。ちなみに無償で構築可能とは無償で運用可能とは違うということに注意。
- 2003.9.14
- C++のページ下に、GNU Autotoolsのページを作成開始。まだ書き始めの段階。autoconf/automakeについては2年前にかじったことがあるが、そのときはプログラムの規模も小さくMakefileのみで手におえたので深入りはしなかった。再び調べ始めたので今度は記録を残す意味でページを作成。
- 2003.9.11
- Meadow本が出てから、少しMeadow環境の向上を行いました。スペルチェックを搭載したので、変数名をつけるときに別に辞書を引いてスペルを確認する手間が減りました。
- 2003.9.7
- C++のページにimake追加。imakeについては情報が非常に少ない。
- 2003.9.3
- 低迷の一週間。ふとしたことでC++のテンプレート機能を調べることになった。意外と入門的な解説がないものだった。STLを使う本は多いが、テンプレート機能を使って設計するとなると、ごく通り一辺の説明が書かれている本位しかない。唯一本格的(過ぎて難しい)のがModern
C++ Design、これは何度も挫折している本なので、もう少しやさしいところが欲しい・・・。
(数時間後)「オブジェクト指向プログラミング入門 第2版」(T.A.バッド著)では、テンプレートについても扱っていることを発見した。初版を読み込んでいたので、第2版は買っただけになってしまっていたが、をちゃんと読むべきか。。。
- 2003.8.27
- J2SE SDK Ver.1.4.1_01がリリースされています。今回Java
Updateという機能が追加されています。インストールしたJ2REを最新版にUpdateしてくれる機能なので、ユーザ環境でのJ2REの更新が楽になりそうです。J2SDK部分をUpdateしてくれるかどうかは不明(多分してくれないだろうなぁ)。Update機能を使わないなら特に_01を入れる必要はなさそう。
- 2003.8.24
- 昨日は「More Java Pitfallを読む会(第4回)」でした。次回からいよいよWeb編に入ります。
- 2003.8.17
- Java高速起動計画Mercuryのプロジェクト管理(ビルド・リリース作業)を、ApacheのMavenを使用するように変更しました。ライセンス文書も整え(といってもGPL)、やっとフリーソフトウェアの体裁が整い始めてきました。OS固有の実行ファイルは現時点ではWindows版のバイナリしか用意していませんが、このC++ソースはACEライブラリを使用したマルチプラットフォーム対応なので容易に他のプラットフォームでもビルドできると思います。
ということでMavenのページも加筆。デフォルトのゴールではやっぱり不十分なところが出てきたので、カスタマイズ方法を四苦八苦しているところです。しかし、Mavenを使用すると、ディレクトリツリーやビルド・配布・テスト・コード検査・ドキュメント生成などの作業がほぼ準備作業なしに自動化されます。ここで重要なのが、Mavenを使用するプロジェクトでは作業がほとんど同じになる(=標準化される)ことです。プロジェクトごとにばらばらにAntやMakefileを書いている限り決して達成できないレベルなのですね。CMM的に言えば、レベル2とレベル3以降の差があります。「うちのプロジェクトはMavenのポリシーに合わない」という考えから、「うちのプロジェクトもMavenのポリシーに合わせて作業効率を向上しよう」と発想を変えていかなければ・・・。
- 2003.8.16
- コマンドシェルにbashを使っていて、CVSで管理しているディレクトリをcdコマンドでうろうろするときに、ファイル名補完でいちいちCVSディレクトリが引っかかって不便だな、と思っていました。解決策として、変数FIGNOREに補完対象としたくない名前を登録しておくとよいことが判明。複数指定するときは:で区切ります。(~/.bashrcに記述)
FIGNORE=CVS
AspectJの書籍(洋書)いくつか
Meadow2でCVS管理下のファイルfoo.cを編集して保存すると、バックアップファイルがfoo.c..~1.3.~のようなリビジョン番号付きの名前になります。このときのマイナーモードはvc-modeでした。
- 2003.8.15
- Javaのアサーションに関して、事前条件の検査に使うことについての是非が論点として存在する。SunはJDKのドキュメントにて「public メソッドのパラメータのチェックにはアサーションを使用しないでください。」と述べている。 一方、事前条件の検査にアサーションを積極的に使おうという意見も存在する。JavaWorld誌2002.6の記事「アサーションの真価を測る」(ウィリアム・ポール・ロジャーズ著)、やJavaOne2002
YokohamaのTS-1136「エクストリームプログラミングの探求」(Ravi
Shankar Narayanan Nair氏)などである。
- 前者の意見
アサーションは無効にすることができるので、事前条件違反(パラメータチェック)は例外を使用すべきである
- 後者の意見
事前条件違反を例外機構によってメソッド呼出し後に検出しても遅すぎる。問題の発生源にできるだけ近い場所で手を打つべき。
アサーションは開発時にチェックするものなので、運用時に無効にするのは問題ない。
- 2003.8.5
- html-helper-modeの使い方を求めてネットをさまよっている間に見つけたもの。Defect
and Issue Tracking Tool(問題追跡管理システム) Scarab。sourceforge.jpにscarab-jaプロジェクトが設けられており、日本語の情報交換が行われている模様。
- 2003.8.4
- EmacsでJSPファイルを編集するには・・・。
- 拡張子.jspのファイルはhtml-modeとして編集する。
→ <% のタグ入力が面倒。Javaのコード部分の編集が原始的。
- mmm-modeを入手して使用する。
- anjspを使うらしいが、リンク切れで不明。
- html-helper-modeを使う
- 2003.8.2
- SmartDoc文書からのPDF生成については、Apache FOPのほかにiTextも試しましたが、結局LaTeX経由が一番安定しているので・・・LaTeXをインストールして設定しました。昔と違ってdvipdfmコマンドによってPostScriptを介さずにPDF化できるのでよいです。AmbySoftのWriting Robust Java Codeの日本語訳をPDF化してみたけど、表関係の修正を加えてHTML4/LaTeX両形式対応のSmartDoc文書とすることができました。LaTeX対応の修正内容についてSmartDocのページに加筆しました。
- 2003.7.30
- Apache FOPを使ってSmartDoc文書をPDFにしたい作業中。以前SmartDoc文書からはLaTeX経由でPDF形式を得ていたが、LaTeX環境をこのためだけに設定するのも・・・ということでTeX無しにPDFへ持っていくための模索中。そこでFOPのページ作成開始。
- 2003.7.25
- Jakarta POIのページ作成開始。
昨日発売のJava雑誌、JavaWorldとJavaDeveloper。JavaDeveloperはJUnit/Cactusのテスト特集だったので購入、いつもサーバ側の記事ばかりでしかも内容も物足りなく表紙を眺めて終わっていたのが、今回はちょっとプログラミング寄りだったから。
オープンソースCORBA(C++)のACE+TAO、新しいバージョン(ACE5.3.3/TAO1.3.3)に合わせてインストールページを修正中。ACEはほとんど修正ないが、TAOはちょっとありそう。また、OpenSSLのインストールページにMASM使用の記述を追記。
- 2003.7.23
- Jakarta POIとJDOMをJavaツール・ライブラリ・リンクページに追加。
POIは、Microsoft OLE2複合文書形式を操るAPIで、現在Excelの操作が提供されています。今月発売のJava Press誌Vol.31にPOIの記事が掲載されています。ただし、記事中のPOIのバージョンは1.5.1と一年前のもので、日本語対応に難があったりAPIが古かったりします。現在最新なのは2.0-pre2です。2.0-pre2で日本語を使う場合の例は
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName(0, "シート1",HSSFWorkbook.ENCODING_UTF_16);
HSSFRow row = sheet.createRow((short) 0);
HSSFCell cell = row.createCell((short) 0);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("Poiの練習");
- 2003.7.21
- Javaツール・ライブラリ・リンクページの定期更新。先月からのバージョンアップは、JDEE2.3.3beta5/ECB1.95.1/JBuilder
9 Personal/BlueJ 1.3.0beta4/JRefactory 2.7.06/JAI1.1.2(FCS) 。また、新しいツールCrouseControl/JavaNCSS/Jude竹/JOnASを追加しました。ORBacusを削除しました。CrouseControlとJavaNCSSは読書会の課題図書で登場したツールです。ORBacusはIONAに買収後、30日間評価ライセンスでしか入手できないので、フリーのツールを載せるという趣旨から外れたため削除しました。
JDEEのデバッグ機能には、jdbコマンド/JDEBugがありますが、いずれも完成度がいまいち。ひょっとすると、JSwatと連携する方向に進むかもしれません。
- 2003.7.20
- Mavenのページ作成開始。先月からちょっとずついじっていたmavenですが、片手間にいじっているだけでは進まないのでWebページ化。ページにまとめることで理解を進めていくということで、Webサイトは自分のために作っているんだなぁ。。。
JavaWorld 2000年1月号の記事「JNIによるJavaアプリケーションの機能拡張」を参考に、JNIを使ってWindowsのタスクトレイにアイコンを置くプログラムを作ろうと思っていたら、既に世の中にMobTaskTrayというものがありました。
- 2003.7.18
- 明日は読書会の日。「More Java Pitfall」(洋書)です。まだ担当分の訳が終わっていない。。。
MicrosoftのWindowsCE向け開発環境 eMbedded Visual C++ 4.0のページを作成。Pocket PC 2003になって、開発上の制約が大きく解消されたのがうれしい。しかしもうWindowsCE(Pocket
PC)の仕事は離れるのだが。
子供がヘルパンギーナというこの時期流行するウィルス性の病気になってしまいました。ウィルスは治療できないので経過観察だそうな。ネットで調べるとすぐに概要が分かる。便利な世の中になったものだと変なところで実感。
- 2003.7.13
- OpenLDAPのWindows上でのビルド方法およびコンパイル済みバイナリを配布しているサイトがありました。
- 2003.7.11
- 昨晩はJavaごはんの集まりでした。チュニジア(地中海)料理。
- 2003.7.9
- UNIX USER誌2003.8号にSubversionの記事が載っています。
- 2003.7.8
- 今朝の日経新聞に、経産省がソフトウェア開発工程を標準化する音頭取りをする内容の記事が掲載されていた。数年前に、日本版CMMの導入話があったが、いつのまにか立ち枯れてしまったようだが、今回の話はどうなるのだろうか。設計図や用語の統一も行うらしい。世界標準と乖離しなければよいが。ちなみに来年度に予算要求なので、活動開始は2005年になる模様。しかし、ゼネコン似の産業構造や人月ベース発注、要求から丸投げに近いシステム開発の現状でどこまでよくなることやら・・・。
- 2003.7.7
- J2EEをトータルで扱う日本語のコミュニティが意外と少ないようです。サーブレットについてはいろいろとあるのですが・・・。趣味で扱う内容ではないし、仕事で扱うような人はJ2EEサーバのベンダに聞くか社内の周りに聞くか、というところでクローズするからかな。コンサルタント系の場合はお金をもらわないと教えない、という感じなのかなぁ。
- 2003.7.6
- JDEEの2.3.3betaに伴い、JDEEのページを更新しました。デバッグ機能についての記述を追加しています。
- 2002.6.30
- JDEEの2.3.3betaにて、BeanShell起動時に渡すVMオプションが抜けてしまう不具合がありました。JDEEのMLでエラーレポート。本来はパッチを作りたかったのですが、BeanShell起動個所はEIEIOライブラリを使ったオブジェクト指向チックなLispコードになっていて解析に至らず。BeanShellは日本語コードを通してくれないので、BeanShellを起動するJavaVMに-Duser.language=enオプションを渡して英語メッセージを出すようにしています。投稿後半日でバグフィックス版がJDEEのCVSリポジトリにアップされました。
- 2003.6.29
- 書籍「実録!オブジェクト指向開発プロセス」(技術評論社)を購入。小説風にプロジェクト開発の様子が描かれており、最後に解説編として用語の説明がついています。デ・マルコ氏の「デッド・ライン」のような感じです。なのでオモシロイ!
昨日は読書会の日でした。"More Java Pitfall"2回目。洋書ですが、英語的には難しいところはなく、ソースコードも多いので読み進めるのは楽です。昨日の発見は、
- JDOMというDOMをもっとJavaから使いやすいように設計したAPIがあるそうです。確かにDOMは面倒なので・・・。
- JBossの日本語書籍が出ているけど、中はJMXについての記述が主だそうです。JBoss自身は触ることが今のところないですが、JMXの使い方という点で興味を惹かれました。
- 2003.6.27
- Java 2 Standard Edition, SDK(通称JDK)のVer.1.4.2(開発コード"Mentis")がリリースされました。Java2D
Demoが異様に速いのは、JDKの性能向上によるものなのか自宅マシンを大幅アップグレードしたせいなのか。。。SwingSet2も速い。
- 2003.6.26
- JDEE 2.3.3β4.リリース後数時間でフィードバックがMLに流れています。オープンソース開発の速さの秘訣は素早いフィードバックにあるのだなと感じました。ウォーターフォール型の欠陥はこのフィードバックの遅さに尽きるでしょう。
JDEEのページにelibのインストールが抜けていたので追記しました。
- 2003.6.23
- JDEE 2.3.3β3.JDEEも地道にバージョンアップを続けています。「達人プログラマー」より”ヒント22:一つのエディターを熟知すること”。
JavaWorldのバックナンバー整理中、1998.12の記事「Javaのパフォーマンス・チューニング」があったので、メソッド呼び出し速度をJDK1.4.2βとVC++6.0で試してみた。U.S.A.のJavaWorld.comの記事へのURLは以下です。ベンチマークプログラムのソースコードもこのURLから入手できます。ベンチマークが大量に繰り返し処理をしているので、HotSpotに有利な状況でしょう。まあ参考ということで。。。
http://www.javaworld.com/javaworld/jw-09-1998/jw-09-speed.html
項目 |
VC++6.0 |
JDK1.4.2β |
備考 |
staticな引数なしのメソッド呼び出し |
5.24us |
2.41us |
|
try-catchで囲んだメソッド呼び出し |
12.1us |
6.32us |
|
引数1個のメソッド呼び出し |
11.0us |
3.85us |
引数の型はint。
C++の場合virtualメソッド |
引数2個のメソッド呼び出し |
12.1us |
3.67us |
引数3個のメソッド呼び出し |
12.6us |
4.04us |
引数4個のメソッド呼び出し |
13.8us |
4.65us |
引数5個のメソッド呼び出し |
14.3us |
5.22us |
引数6個のメソッド呼び出し |
15.1us |
10.1us |
引数7個のメソッド呼び出し |
16.0us |
11.6us |
引数8個のメソッド呼び出し |
16.1us |
11.8us |
引数9個のメソッド呼び出し |
17.6us |
12.6us |
引数10個のメソッド呼び出し |
18.1us |
13.5us |
5つのint型メンバを持つオブジェクト生成 |
193us |
77.6us |
C++の場合はヒープに生成 |
24.9us |
- |
C++でスタックに生成 |
VC++のコンパイルオプションは/GXのみ。(所有しているVC++がStandard版につき、最適化オプションは使えない)
Javaはコンパイルオプションなし、実行時のオプションもなし。
バックナンバーの整理だったのに、記事を読みふけって実験までしてしまって、まったくもって整理になっていないのでした。(余計に机の上に本が積みあがっただけ)
- 2003.6.22
- Meadow 2.00βがリリースされていました。あわせてMeadow2.00のインストールと設定ページを作成しました。Netinstall版ならインストールは簡単なのですが、ここでは自力で入れる方法で記述しました。
Java Get It NowボタンをObject-oriented and Java maneuverページの右上に付けました。
- 2003.6.18
- Subversionのページ作成開始。「CVS改」って感じのツールなので、cvsから移行するのは楽です。
- 2003.6.17
- Mavenの実行は、コマンドラインにjarと指定するとコンパイル・JAR生成してくれます。cleanで生成物を削除します。ふーむ。
- 2003.6.16
- Antをもっとシステマティックに発展させたようなビルドツールMaven。Antの上に立脚しています。IBMのdeveloperWorks:Java technologyサイト(日本語版)で「プロジェクト管理:Mavenでもっと簡単に」の記事が登場しています。ちょっと難しい内容なので、一読して挫折。JavaWorld誌2002年12月号、2003年1月号に連載記事Jakarta活用指南でMavenについて取り上げられています。Antの記述が面倒くさいなと思ったときによいかもしれません。しかしMaven1.0Beta9を展開してディレクトリ作ってmavenと実行しただけでは、<dependencies>に書いたJARをダウンロードするだけでコンパイルがされません。何故だろう・・・。
Cygwinのvimって日本語対応していたとは知らなかったです。~/.vimrcに一行追加
set enc=japanese
- 2003.6.13
- 一年がかりの仕事も最後の山を越えたところ。最後の仕上げが来週まであるが、、、
J2EE 1.4のβ2がリリース。構成が大分変わっています。Windows版では、スタートメニューの中にサーバ起動/終了やdeploytoolが出来ます。Apache
httpdみたいですね。コマンドラインからも起動できますが。また、データベースが従来のCloudscapeからPointBaseに変わったみたいです。また、デフォルトのWebサーバポート番号が1024に変更されています。起動時にエラーが出ています。
- org.w3c.dom.DOMException: NAMESPACE_ERR
- javax.management.MBeanException
Quick Startにあるsampleのhello Webコンポーネントのデプロイは、hello.warファイルをautodeployという名のフォルダへコピーするだけというものです。PetStoreをdeploytoolを使ってインストールしようとしたら失敗してしまいました。ログファイルを見ると、XML
Error、JNDI lookup failed.、初期設定が必要なのでしょう。Antを実行してdeployした方が確実でしょうが、こちらもエラーとなってしまいます。sample/blueprints/petstore1.3.1_02/src/build.xmlの中で参照している../../../common.propertiesなるファイルが存在していません。
- 2003.6.7
- OpenORBのTipsにAntを使う設定を追加しました。OpenORBは内部にApacheプロジェクトのAvalonフレームワークを使用しているようです。そのためクラスパスに指定するjarファイルが少々増えています。
- 2003.6.1
- SWEBOK(Software Engineering Body Of Knowledge)についてのメモ。2003年バージョンに対するレビュー要請が各方面に出ているようです。ソフトウェアエンジニアリングが扱う知識体系を整理し共通の見解を普及する目的で策定中のものです。
SWEBOKを調べていたときにおもしろそうな書籍書評ページに行き当たりました。組み込みネット書評「ソフトウェアテスト293の鉄則」。2003年4月出版の本なので新しいですね。
- 2003.5.24
- OpenOffice.org(OOo)日本語版をインストール。今日現在の最新版は、1.0.3.1なのでまず入手。Windows2000で一般ユーザで使うには、「ネットワークインストール」を選択するそうです。ここにインストール方法が解説されています。
- OOoのzipを解答後、Administratorでsetup.exeを-netオプション付きで実行
- OOoを利用するユーザでログインし、上記でインストールした中にある"OpenOffice.org
Setup"を実行する。「ワークステーションインストール」の方を選択し、保存ディレクトリは"C:\Document
Settings\<ユーザ名>\Application Data\OpenOffice.org
を指定。
- このままでは日本語を入力しても表示されないので、フォント設定などを変更する必要があります。OpenOffice.org日本語版をインストール後に手動設定していた日本語設定を行ってくれる日本語版導入プログラムが公開されています。こちらは今日現在Windows版JCP
0.6.2リリースで、OOo1.0.3jaに対応しているそうです。
- jcp_sv.exeを実行し、共有でインストールしたディレクトリを指定する
- start_jcp_ws.exeを実行し、個別にインストールしたディレクトリを指定する。指定がちょっと変なので、マウスで選択するだけでなく手で適切なパスになるよう修正する
Windows2000では、C:\Document Settings\<ユーザ名>\Application
Data ディレクトリが隠し属性となっているので、これをはずしておかないとstart_jcp_ws.exeの中で個別にインストールしたディレクトリを指定することができません。
- 2003.5.23
- Java World誌(2003.7号)が届きました。ロタウィルスと戦いながら(?)書いた記事が載っています。Antの特集記事が50ページ近くあり、アスペクト指向開発(分析・設計より)の記事も目新しいなど今月号は充実しています。
- 2003.5.20
- 書籍購入「管理者のためのJ2EE設計 ベストプラクティス」。なぜ管理者のための、とついているか不思議だったのですが、UMLをベースに要求分析から開発の流れを追っていくのでその名前がついたのかもしれません。原題は"Developing
Enterprise Java Applications with J2EE
and
UML"。
次回Java読書会は洋書「More Java Pitfalls」(強いて訳せば「続・Javaの落とし穴」)です。5/31開催予定。
- 2003.5.18
- 「Software PeopleVol.1」(技術評論社)のコラム記事”コミュニティカルチャーを育てる”において、良いコミュニティカルチャーが持つべき「継続して新しい技術を学ぶ習慣」としてIn-House
Tutorialが紹介されていました。これを職場に導入しようとしています。最初のテーマはWebシステムを選び、今週から開催予定。なぜか納期間際に仕事を増やしてしまった気もするが・・・。それもあって、Java Web Application開発のページを追記。
J2EEのデモ(設計ガイドライン)であるJava
Pet Storeの立ち上げ方(1.3.1版)について解説しているページ「ペット屋さんでJavaのお勉強」がありました。現在ダウンロードできるpetstoreは1.3.1_02版ですが、大抵の解説記事は1.1.1版となっていて初期設定方法が変わっています。ドキュメントちゃんと読めばいいんですが。なお、PetStoreはJ2EE1.4Betaでも動くようです。
J2EE1.4Betaを入れてみましたが、J2EEサーバ起動時にエラーががんがん発生します。最初のエラーはJMSサービス起動時で、jmsra.rarをDeployingする時に、"org.w3c.dom.DOMException:
DOM003 Namespace error"が出ます。解決法は不明。SunのサイトのForumにも同様のエラー報告が上がっていました。ということで当面はJ2EE
1.3.1ですかね。
- 2003.5.17
- SunのJavaサイトにおいてJ2SE1.4.2のJavaLive!があります。J2SE開発メンバーがChatで質問に答えており、いくつかピックアップしてみます。
- Windows XPおよびGTK2.0のLook & Feelが追加(Swing)
- 起動時間が短縮(15%〜30%)
- ネットワークインストールの追加
- Java Update
- JFileChooserの改善
- デバッガの性能向上
- 2003.5.14
- @ITの記事「検証 新世代リッチ・クライアントの可能性を探る(前編)」。MS OfficeをWebサービスと接続するという内容。Webシステムの今後の一方向を示すものかな。
- 2003.5.6
- Linuxファイルシステムメモ
- 2003.5.5
- G/W後半は、記事原稿を仕上げた後、パソコンの大改装を行いました。1999年春に組み立てたPCは、SOYO製6BA+(440BXチップセット)のM/Bですが、HDD32GBの壁とCPUはPentiumIII
550MHzの壁があります。改装後はチップセットはSiS746FXのMSI
746FにCPUはAthlon2500+を載せてみました。ベンチマーク的にはクロックにあわせて4倍ほど上がっていますが、今のところ体感的にはそれほど向上したとは感じません。後ほどTAOをビルドしてみると違いがわかりそうです。
- 2003.4.27
- G/W前半の部出勤組になり、仕事継続中。
JCSC:Java Coding Standard Checkerというツールがあります。JDEEにも組み込まれているCheckstyleと同種のツールですが、いくつかメトリクス計測機能もあってちょっとよさげです。
HDD120GBを増設。マザーボードが古いのでATA100カードに接続。試しにここへWindowsをインストールしてみましたが、起動時にエラーとなってしまいNG。うーむ。
- 2003.4.20
- やはり風邪でダウン。保育園ではお腹にくる風邪が流行っているそうで、子供が先週嘔吐と下痢にやられました。それがそのまま家族中に蔓延したようです。不思議なのは、仕事が佳境のときは風邪にならず、いつも終わってからの休みに風邪や熱でダウンすることが多い。緊張の糸が切れるとやられてしまいます。これで遊びにいけなかったことが幾度かあるので不幸な性分かもしれません。。。
- 2003.4.19
- 3週間ほど更新メモが空いてしまいました。納期間際の仕事が佳境に入り、平均睡眠時間が3時間の日々が続いてげっそりとしていました。先日その大きな山が越えてようやく人並みの生活が戻ってきたところです。(が、家族が風邪で次々ダウン・・・、そろそろ自分の番かも)
さて、JDK1.4.2のβリリースが公開されました。性能面でチューニングが入って「速い」との噂ですが、どうでしょうか?佳境の仕事の合間にこっそり会社のマシンにJDK1.4.2βを入れてJava2Dのデモを動かしてみました。結果、思わず、「は、はやい!」と声を出してしまった程。
先週(4/12)の読書会は仕事の兼ね合いで欠席。非常に残念です。
- 2003.3.30
- Eclipseのリリース版が2.1になった模様。でも日本語化(Language
Pack)が2.1に対応するのは少々先かもしれません。Eclipseで使用しているGUIフレームワークJFaceとSWTに関する記事がIBMのdeveloperWorksに掲載されています。「スタンドアロン・モードでJFaceおよびSWTを使用する」
SWTを持ち上げる記事ではSwingは遅い、難しい、バグが多い、見かけが悪い、と云っているようですが、実際のことろどうなんでしょうか?そのあたりも検証していきたいと思います。
コマンドラインで繰り返し作業の自動化。同じコマンドを10回繰り返し実行させたい場合に
bashでは、
bash$ count=10
bash$ while [ $count -gt 0 ]; do java Accessor2; eval count=`expr $count - 1`; done
- 2003.3.29
- Java読書会の日。リファクタリングも終盤に近づいてきました。そろそろ次の本を選ぶ時期です。J2EEあたりを望む声が時々出てますが、いままでは選定されてなかった分野なのです。とりあえずよさげな本の候補を探さねば。
今日の読書会でピピっと来たよい表現を「リファクタリング」から引用
「オブジェクト指向の業界用語で一番すてきな響きを持っているのは『ポリモーフィズム』です。」
「オブジェクト指向の世界で最も重要なのはインタフェースです。」
「もし悪い名前がついたメソッドを見たら、断固として変更すべきです。」
「安定したインタフェースは良いものですが、貧弱なインタフェースを凍結することは問題です。」
Software People Vol.2(技術評論社)を購入しました。理想のソフトウェア技術者になるには?と悩んだときにお勧めな内容です。技術に取り組む人に焦点を当てたムック本で、新鮮です。
- 2003.3.23
- JavaでWebアプリケーションを作る際の様々なAPI、フレームワーク、サーバ製品が氾濫しているので、僕自身の頭をちょっと整理するためのメモページを作成。
C++はオブジェクト指向プログラミング言語か? YesでありNo。オブジェクト指向プログラミングはC++がサポートする機能の一つでしかない。では、C++の提供する機能は何か?ジェネリック・プログラミング。ではジェネリックプログラミングとは? 今後検討。
- 2003.3.22
- 連休前の日、エラー原因を追って徹夜になってしまった。明け方には作業効率が1/10以下になっていることを自覚。なんか同じことを何度もやってたりと。。。翌日も含めると普通にきっちり仕事したときの30%程度の成果しか得られないと感じた。
Meadow2でテキスト編集するとき、スクロールを論理行単位ではなく物理行(折り返し行のときも画面上の1行単位)でスクロールさせるEmacs
Lispパッケージ"physical-line"というのがありました。(ce-scrollはMeadow2では不都合があるらしいので)。
JavaのインデントツールJacobをちょっと調べる。ついで、インストールしたまま半年ほっぽらかいしているEclipseのインデント機能も簡単に見てみる。メニューに「フォーマット」とあったので、インデントをぐちゃぐちゃにしてから実行してみたら、かなりよく戻った。これはこれは・・・。Eclipseを紹介しているWebページ「Eclipseの便利さを体感する」がありました。ついでながら、@ITサイトに「Eclipseを使おう」という連載記事があります。
- 2003.3.19
- しばらく放っておいてからUSBマウスを操作すると、最初反応しないことがしばしばある。少々いらだちを感じるので、USB-PS/2変換コネクタを買いに寄ったが見つからず。代わりに「C++再考」を購入。
- 2003.3.16
- Emacsのアウトラインモード。M-x outline-modeでセット。見出し行と本体行の2種類からなり、見出し行は*で開始する行。*の数でレベルが深くなっていく。C-c
C-tで本体行を全て不可視、C-c C-aで全て可視、他にもたくさんコマンドがある。
- 2003.3.15
- 今週一週間は少し朝早めに出社。そのため今日は昼間異様に眠かった。
C/C++のコーディング標準をちょっと調べる。
- 2003.3.12
- 少しずつ朝方生活へシフト中。
Meadowで、ftpサーバ上のファイルを直接編集することができるなんて今ごろ知った。必要にせまられて試したが実に簡単であった。
- 2003.3.11
- 昨日はJavaごはんの日でした。早くあがるために早く出社した日。今日も夕方用事のため早く出社し早く上がった日。
- 2003.3.9
- C/C++のアサーションについてC++で開発のページに追加。
- 2003.3.8
- Java高速起動ツールMercury版のバグ修正。および、ACE版のリクエストエントリ部を置きました。ACE版になったことにより、Windowsでビルドした場合に、実行ファイルのサイズが100KBから200KBに増えてしまいました。スタティックリンクなので実行時にACEのDLLは不要です。ACEは巨大なライブラリなので逆に100KB程度増で済んだのはよい方かもしれません。
- 2003.3.2
- Javaツール・ライブラリsリンクのページを月初めの定期更新。
J2SE SDK, v1.4.1_02。バグフィックス・リリースです。
TAOのインストールにMessaging追加。
WEB+DB PRESS Vol.13を買いました。ちょうどサーバサイドJavaをかじろうと思っていた矢先なので。
- 2003.2.24
- ACE+TAOがマイナーバージョンアップ(ACE:5.3→5.3.1/TAO:1.3→1.3.1)。現在ビルド中。(時間がとってもかかるんです)
SoftwareDesign誌にMySQLが特集されている。MySQLは速いが機能が制約されている(トランザクションをはしょっている)けど、それはMyISAM形式のお話しで、最近(といってもそれなりに前)のInnoDB形式ではひととおり機能がサポートされているそうな。しかも速度はInnoDB形式の方がMyISAM形式より速いとあった。記事は立ち読みなので、どんな処理かは記憶になし。
「プログラマのためのJava設計ベストプラクティス」(ピアソン刊)を購入。第1章に、よくあちこちで引用されるLiskov
Substitution Principle、Open Close Principleなどが簡単に紹介されていたので買ってしまった。パッケージレベルの設計についても触れられているのがよい。
- 2003.2.23
- 昨日のJava読書会「リファクタリングを読む会」でうけた書籍中の表現。
「この会社は、管理職からエンジニアへの昇進ができるという、わくわくするような先進的な会社」
Meadow1.99α5をCygwinでビルドした。まずはOK。
- 2003.2.21
- Meadow 1.99がα5リリースされています。
Java高速起動ツールMercury版にバグがありました。クラスのフィールドが初期化されずにnullであったため例外が発生したものです。クラスをインスタンス化した後に、想定した順番と違うコマンドが送られてきたたときにフィールドがnullのままだったので発生しました。
class CommandDispatcher {
private MyURLClassLoader loader;
// ...
// Cコマンドの処理
String processClassLoader(..) {
// ...
if (loader == null) {
loader = new MyURLClassLoader(new URL[]{url});
} else {
// ...
}
// Rコマンドの処理
String processRunClass(..) {
// ...
Class target = loader.loadClass(className); // loader == nullなので例外
本来は'C'コマンドでクラスパスを設定してから'R'コマンドでクラスを実行するのですが、間違ってあるいは意識的に’R'コマンドを先に実行すると発生します。loaderはクラスのコンストラクタ実行時にはまだ決まっていないのでインスタンス化せずに、最初に’C'コマンドがリクエストされたときにインスタンス化しています。
小手先な解決方法:if (loader == null)
{
loaderを適当な(場当たりな)引数で初期化
}
とエラー発生個所だけを処置します。よくありがちな対応ですが、間違いです。他にもloaderを参照している部分では例外が発生し得ます。例えば別なパターンでコマンドを実行した場合がそうです。loaderにアクセスしているところを片っ端から処置しなくてもいいようにするには、本質的な修正をします。命題は「クラスの状態('C'コマンドでURLが設定されている/いない)に応じて適切なloaderを使用する」ということです。同じクラス内でもフィールドloaderを直接呼ばず、かならずアクセッサを使用してloaderを取得します。そのアクセッサの中ではクラスの状態を見てその場で適切なClassLoaderを返却させます。
- 2003.2.20
- デザインパターンメーリングリストでUMLツールがいくつか紹介されていたのでメモ。
- 2003,2.16
- ActivePerlの5.8.0build805をインストール。手に馴染むスクリプト言語としてRubyがいいかなと思っていたけど、Perlのモジュールの豊富さときちっと整備されている環境が使いやすそう。
- 2003.2.11
- 以前Windows2000へのTAOインストールのページを書いていたが、これをTAOインストールのページに書き換え中。また、TAOプログラミング(1)のページを新規に作成開始。これは、洋書"Advanced
CORBA Programming with C++"の最初の例題をTAOでなぞってみたものです。C++用のCORBAのよい本がなかなかないので洋書を買いました。
TAOは最初のビルドが非常に面倒くさいのとバイナリ配布がないのがネックかな。バイナリ配布はTAOの商用サポートをしている会社が有料で販売している。ビルドが面倒なのは特にVisualC++用。Makefileで一発なUNIX系はやはり優れている。
- 2003.2.9
- 風邪気味と仕事が忙しいぞと2つで更新が1週間空いてしまった。
ACEのインストールについてのページを作りました。Visual C++だと結構面倒なインストールが、Borland
C++ Compiler(無償のコマンドライン版)だと楽だった。統合開発環境やGUIというのは使いやすいと思いきや効率が劣化する原因になることもあるんだなぁ。。。
- 2003.2.2
- 金曜日から調子悪いなぁと思っていたら風邪をひいてしまい、週末は寝込んでしまいました。すこし復活したので、Javaツール・ライブラリ・リンクの定期チェックと更新。
JDBCを使ってRDBテーブルの中身をそっくり持ってきて、JTableに表示するプログラムを作成。AbstractTableModelを継承したクラスも作ってみました。このプログラムは、Java How to Programmingの中にJDBCでテーブルの中身を見るページとして追加しました。今後は変更したらRDBへ更新する機能もいれたいかなぁ。このプログラムを動作確認するのにRDBとしてはMySQLとJDBCドライバとしてはgweMysqlDriverを使いました。
Javaクラス高速起動計画(Mercury版)で、コマンド投入部はC++でプログラミングしています。Windows版とLinux版を作成していますが、ちょっとした変更のたびにそれぞれを修正するのは面倒です。そこで、ACEを使ってC++のソースもOSに依存せずに1本化しようと移行中です。近日(?)お目見え予定。ACEを使うと、同じコードでマルチプラットフォーム対応ができるだけではなく、ソケットAPI等がクラスライブラリとして提供されるのでコードが簡単になるという恩恵もあります。
Contact me : torutk@alles.or.jp