2005年4月アーカイブ

休息

| | コメント(0)

巷ではゴールデンウイークに入りましたが、今日はお仕事です。
週末は久しぶりに休みをいただいて、前からやりたかった、アフィリエイトサイトの構築に手をつけるつもりです。

結局忙しくなりそうですが、作家のダニエル・ジョセリンの言葉に

「休息とは回復であり、何もしないことではない」

というのがあります。

連休明けに備えて、最低限、体調を整えておくことはもちろん、忙しさにかまけて置いてきぼりになっている事柄を「回復」もしたいと思っています。

今日の朝は一瞬パニックでした。
LINUXサーバーの電源を入れて使い始めたのですが、すぐにOutLookのpstファイルを置いてあるフォルダ以外が見えなくなりました。
あわててコンソールを見ると、IO Errorの嵐です。

蒼くなりました。サーバーのバックアップを取ったのは3月・・・。
ディスクはRAID1で2重化しているし、電源もUPSを使っているので安心していたのですが。

1月にディスクの片方が壊れて交換したばかりです。

祈るような気持ちでサーバーをリセット。
今度は正常に立ち上がりました。早速バックアップを取ったのは言うまでもありません。

再起動時にメールでRAIDカードからメッセージが・・・。

localhost.localdomain
04/27/2005 23:39:56GMT [IOM0037] Device [bus=2, ch=0, id=1, lun=0] had a medium error at LBA 0.

何を持ってmedium errorというのか分かりませんが、症状は優にfatalでした。
暫くは毎日バックアップを取ろう、と決めました。

先日買った「スピードノート」に書いてあった1節は、『「時間は買うもの」という意識を持て』というもの。
成功者はタクシーを使うのだそうです。
また最近のメルマガで、「人生を愛する者よ、時間を浪費してはならない。 人生は時間でできているのだから」というフランクリンの言葉が心に残りました。

同感です。一番大事なものは時間であり、時間を節約するためにお金を使うのは、妥当なことです。
というか、お金を使うときの唯一の論拠は時間を節約できるかどうかです。

ということから回りまわって、仕事を依頼し、依頼される人脈のネットワークが重要だということになるのですが・・・。

スピード(時間)一番、ネットワーク(人脈)が2番といったところでしょうか?

VMWare

| | コメント(0)

VMWareはとても面白いソフトです。
マシンの中に仮想マシンを作るのですが、(例えばWindowsの中にLinuxを作ります)、仮想マシンは本当にもう1台のマシンがあるかのようです。

デュアルブートと違って、仮想マシンとネットワークでつなぐことができます。DHCPからアドレスをもらうことさえできます。

今まで、Open系の開発ですと、開発するWindowsマシンとは別に、Linuxマシンを用意して確認作業などをするのですが、それが1台でできてしまう。

しかもかなりのパフォーマンスと安定性です。

その分、ディスクとメモリを食うわけですが、私の場合、ゲストOSはRedHat9でディスクは20G、メモリは256M割り当てています。

LinuxサーバーをWindowsのクライアントから使う場合のデモなど、いろいろな使い方ができそうです。

VMWareに伴う出費、メモリ512M×2=8485円

CVS

| | コメント(0)

遅まきながらCVSの必要性を痛感しています。
何故もっと早く使わなかったのか、後悔しています。

一人で開発する場合でも、修正前のファイルに戻れることや、開発マシンが複数あって、それぞれ最新に維持しなければいけない場合に非常に便利です。

私の場合、デスクトップの開発マシンと、客先に持ち込むノートがあって、どちらでも開発します。
それらを常に最新のファイルに保つには、Home OfficeのCVSサーバーを使うと簡単です。

チーム開発でなくてもCVSは十分に使う価値があります。

異音がするRicohのCX3000。
今日、9時半ころサポートに電話したら、12時前にはサービスマンが到着しました。

この音はマシンが初期化を行っている音で、電源を入れたときや、長い間使っていなかったときに、初期化が行われるそうな。
この場合は、印刷が終わるたびに初期化が走っていたのですが、ドラムがしっかり固定されていなかったらしく、サービスマンがドラムを入れなおしたら、2回目の印刷以降は音がしなくなりました。

省エネモードでは無音なのですが、数時間たって印刷すると、また初期化が走るのはしようがないと諦めました。
不思議と何をしている音なのかが分かると、そんなに気にならなくなりました。

それにしてもサービスマンがHOME OFFICEで膝をついて作業をしていたのですが、絨毯についていたフーちゃんの毛がズボンについてしまって、悪いことをしました。
Ricohのすばやい対応に感謝。
購入後半年間は無償保障期間です。


cover



cover

原書を買おうか迷っていたMcConellのコードコンプリート第2版。今日のお買い物。

今日プリンタが届きました。
あまりの大きさと重さにびっくり。

同じRicohのA3モノクロレーザーよりも、幅は若干狭いが、高さは高く、重い。
丁度明日がプラスチックごみの収集日なので助かりました。
結構大きな発泡スチロールがいくつも出ましたから。(省資源のはずでは?)

設定やドライバのインストールは割りとすんなりと行きました。
最初からネットワークに対応しているのは便利です。

まだテスト印刷くらいしかしていないのですが、問題がひとつ。
印刷後、省エネモードに入るまで、”コツーン”という異音が続きます。
多分、両面印刷ユニットの取り付けがうまくいっていないのだと思いますが、今日は時間がないので明日、サポートに問い合わせます。

話は違いますが、前に紹介した、ワインバーグの「プログラミングの心理学」が再版されて買えるようになりました。
全てのソフト関係者に強く勧めます。

CX3000

| | コメント(0)

カラーのレーザープリンターを注文しました。

機種はRicohのIPSIO CX3000。A4です。
既にモノクロのレーザープリンターは、A3のRicoh NX650Sを、まあ不満なく使っています。

今回もXEROXやCanonやNECやEpsonと比較したのですが、価格とスピードと、省スペース、ネットワーク内臓、今まで使っていたRicohの実績からRicohにしました。
Ricohはカタログを見てもプリンタに力を入れているのがよくわかります。

今回の費用は、

本体 64,000円
両面印刷ユニット 16,000円
128Mメモリ 6,467円
送料 1,500円
消費税 4,398円
合計 92,365円

もともとはお客様に提出する資料でもカラーが多くなっているな、と感じたのが動機なのですが、結構な出費となりました。

それ以外の最近の出費、

Oracle OTN Standard for Windows(Oracle 10g) 31,290円
ノートPCのHDを30Gから80Gに交換 12,000円
VMware 26,754円

也。

前回に引き続き、スケジュールのお話です。

マイクロソフトのブラッド・シルバーバーグが予備期間で言いたかったのは、スケジュールには2種類あって、対外的に見せる、努力目標としてのスケジュールと、実際にプロジェクトが終結する確率が最も高いスケジュールだと思います。
その差分が予備期間というわけです。

最初から、短期間ごとに予備期間を挿入した線表は間延びしたように見え、やる気がないのではないかと思われる恐れがあるので、やはり対外的な努力目標は必要ですが、プロジェクトが努力目標までに終結する確率は低いでしょう。

また最初から2ヶ月の線表を引くよりも、1ヶ月の線表プラス1ヶ月の予備期間としたほうが、開発するほうも緊迫感があってよいかもしれません。
1日単位の詳細なスケジュールを立てない限り、2ヶ月先なんて遠い将来のことのように思いがちです。

ですが、どちらが品質のよいソフトができるのかは、難しいところです。

多分、両方が必要で、最初は予備期間を入れた、大まかなスケジュールを立て、早期にプロジェクトをスタートさせる。
プロジェクトが終わりに近づいたら、詳細なスケジュールを立て、それを死守する。

というのが理想ではないでしょうか。(私も実践できていませんが・・・)

マイクロソフトのブラッド・シルバーバーグは「マイクロソフト・シークレット」の中で、こう語っています。

「開発者が深く考えずに「1週間かかる」といっただけで、1週間のスケジュールを組んでしまうことが多すぎる。そこで、作用の規模をつかみ、スケジュールに予備期間を組み込むには、どのような質問をすればいいのかを考えてきた。以前は、スケジュールに予備期間を組み込まない人が多かった。ソフトの開発を始めてまもなく、予備期間を組み込んだスケジュールを社長に提出すると、「なんだ、釣りにでも行く気か。この予備期間に何をするつもりだ」といわれたことがある。「経験から行って、多分バグを処理するために必要です」と答えると、「そんなあいまいな話ではなく、具体的に何をするのか話してみろ」といわれた。そこで「具体的に何をするのか、分かっていないから予備期間としています。
とにかく必要なので信用してください」と答えた。古いタイプの管理者にとってスケジュールに予備期間をいれるのは常識はずれなので、開発責任者が出したスケジュールから、予備期間が消されることも多い。「これではだめだ、もっと短縮しよう。出荷する必要がある。予備期間を減らせばいい」。
そうなると、スケジュールは非現実的になる。何に必要になるのかはわからないが、何度も何度も、必要性を思い知らされてきた。バグを処理するためかもしれないし、途中で何か思い付いて「この機能は是非追加するべきだ」ということになるかもしれない。・・・だから2ヶ月あるなら、1ヶ月は予備期間にすべきだ。予備期間を50パーセントにすると、ちょうどよい。その理由はうまく説明できないが・・・。」

50%の予備期間はとても認められませんが、15%の予備期間を取って、なるべく前倒しに作業するようにしています。
なにも起こらなければ、15%はボーナスですが、今までなにも起こらなかったためしはありません。

難しいバグが現れたり、機能追加が起こったりします。ですからスケジュールよりも進んでいるからといって安心してはいけません。
ゴールまでは何が起こるかわかりません。

ただスケジュールより進んでいると、精神衛生上、非常に良いです。いろんなアイディアも出てきます。
一方でバグの何割かは、スケジュールのプレッシャーのせいで作りこまれるという話もあります。

このところ貧乏ひまなし状態です。
去年の今頃は、仕事がなくて、焦っていました。
仕事がないのもつらいものですが、忙しい今から考えると、やりたいことがやれた、とっても貴重な時間だったと思います。

忙しいことは、それはそれで、いいことなのですが、やりたいこともいろいろと出てきます。
今回のお仕事がひと段落着いたら、2週間ほど、休みを取ろうと思っています。

それまであと一月、体調を崩さないように頑張ります。

CVSNT

| | コメント(0)

当然やるべきことを、今までやってこなかった。
版数管理。
正確には、やってこなかったわけではなくて、毎日ソースを丸ごとセーブしていたのですけれど。

お客様に指摘されて、重い腰を上げました。

お客様のところで作業することも考えると、開発しているNotePCにCVSサーバーが載っていたほうが便利かと思ったのですが、CVSNTのインストールで2,3日試行錯誤した挙句、断念。

コミットしてもEclipseのCVSパースペクティブに、HEAD、ブランチ、バージョンの内容がなにも表示されないのです。
サーバーのCompatibilityの設定を変えたり、Eclipseのパッチを入れたり、CVSNTのバージョンを変えたりしましたがダメ。

結局、Home OfficeのLinuxサーバーにCVSをインストールしました。こちらは割りとスムーズに行きました。

Properties

| | コメント(0)

javaのpropertiesについて。

カレントにpropertyファイルがある例は、よく目にしますが、任意のクラスパスの上に置く事ができます。

//Propertiesオブジェクトの生成
Properties prop = new Properties();
//ファイルを読み込む
InputStream ips =
this.getClass().getClassLoader().getResourceAsStream("p.properties");
prop.load(ips);

String a = prop.getProperty("a");

これだけ。実にシンプル。
実はこれを教えてもらう前に、classpathを取得してStringTokenizerで分解して、existsでpropertyファイルの存在を確認して、prop.loadする30行くらいのコードを書いたのですが当然没。

static mainなどでthisが使えない場合は、(クラス名).class.getClassLoader().getResourceAsStream("p.properties");

で、うまくいきました。

April Come She Will
When streams are ripe and swelled with rain:

はS&Gの名曲ですが、今回はフーちゃんのお話。

暖かくなり、暖房に使っていたガスファンヒーターもONにすることがなくなりましたが、時を同じくして、フーちゃんが夜ベッドの上に乗ってくることがなくなりました。
夜、フーちゃんの重みを感じて眠るのも楽しみだったのですが、暖かくなるときっぱりと乗らなくなりました。

乗ってくるのは親愛の情と思いたいのですが、単に寒かっただけのようです。

寝返りを打てるだけ楽なのですが、去年、迷子になって返ってき夜に、私のベッドにもぐりこんできたことが、懐かしいです。

今欲しいものがあります。

お仕事用の電話機と、これもお仕事用のカラーレーザープリンター。

電話機のほうは、時々着信しない問題を解決するためです。親機と子機のPHSのどちらに問題があるか分からないし、修理に出したりして使えなくなるのも問題で、新規購入しようとしました。
でも、なかなかいい機種が見つかりません。ホームユースの電話機はたくさんあるのですが、ある程度ビジネスユースに耐えるものはありませんでした。
やはりPHSの機能は、子機としては最高水準です。電話帳300件、漢字表示、メッセージ録音、マナーモード、携帯やPHSとしては普通の機能ですが電話機の子機となるとこれらをクリアするものはありません。

それにも増して問題なのは、使ってみないと分からない信頼性。

新しい電話機に変えても着信しない問題が再現すれば、意味がありません。

というわけで今回は電話機の買い替えは断念。留守録の機能で、留守録が応答するまでの時間を長くして、メッセージを残してもらうことで、着信しない問題を回避しようと思います。

プリンターについてはまた次回。

最近、時々幕張のお客様のところで仕事をさせてもらっています。

そこで担当の方からいろいろなことを教えていただきました。

JNDIのことCVSのこと、VMWareのこと・・・。よく勉強されていて、しかも実践されています。

フロアもゆったりしていて作業環境も非常によく、あえてSOHOの道を選んだ私もちょっぴりうらやましくなります。

また半日棒に振りました。

ファイルのダウンロード処理です。

ローカルなWindows環境と、SSLを使わないターゲットではうまくいきます。

SSLでは、「Internet Explorer では、Web サイト名またはアドレス - ファイル名 をダウンロードできません。

このインターネットのサイトを開くことができませんでした。要求されたサイトが使用できないか、見つけることができません。後でやり直してください。」

のエラーが出ます。

ヘッダをいろいろいじった挙句、一緒に開発している人がネットで見つけたのは、

// キャッシュを無効化します。
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Pragma", "no-cache");
response.addHeader("Expires", "0");

とやるとダメだということ。

MSの情報にもありました。
323308
869219

結局、

response.setHeader("Cache-Control", "");
response.setHeader("Pragma", "");

とすることで解決。疲れました。