jFD開発したりしなかったり日誌
2006-07-27 [長年日記]
_ 午前0時
泣きそうになりながらバグ取り。
どうしても一箇所動作がおかしい。
大体、こういう変に苦労をさせられるときほどものすごいくだらないことが
原因で気がついた瞬間死にたくなるものだが、2時間以上コードを追っかけて
やっと見つけた原因は、一箇所小文字のbとdを打ち間違えてたことだった。
これは死にたいわ。
_ きつい
今月3回目の泊まりこみ。
客は「帰って休んでから続きやったら?」と言うが、そうすると間に合わないんだってば。
お社長K君に試しに言ってみた、
「プチプチシートを丸めたのは、汗吸わなくていまいちなんだよ。
枕買って」
が通ってしまったので、午前3時、バイクで秋葉原のドンキホーテへ。
いっそのことテンピュールのを買ってやろうかとも思ったが、小心者なので
安物を買い、ついでにタオルケットを1枚買った。
で、その足で銭湯へ。
3時間800円ちょっとでサウナ付。
疲れを抜くべくたっぷり浸かり、コンビニでビールを買って会社に戻った。
かっとビールを煽り、買ってきた枕とタオルケットでさっさと就寝した。
疲れた。
2006-07-25 [長年日記]
_ 落ちた
日曜の晩、気持ちがストンと落ちた。
一息ついて周りを見回す余裕ができた瞬間、凝視しちゃいけない現実を
見てしまったような。
僕の周りには、見ればハッピーになれるものもあるし、死にたくなるものもある。
死にたくなるほうは普段は意識して見ないようにしているが、
間違えて凝視すると目を逸らせなくなる。
月曜は微妙に忙しくて夕方から調べごとを始めたら、終わったのは9時半で、
家に帰り着くころには完全におかしくなっていた。
俺何のために生きてるんだろう、とか考え始めたら人間終わりだよ。
それ考えるのが健全なのは10代までだし。
1ヶ月くらい仕事から離れたい。
つーか当分東京離れたい。
2006-07-23 [長年日記]
_ OS入れ替え
最近PCが微妙に愉快な挙動をするようになってきたので、
OSを入れなおすことにした。
前からやろうと思ってたんだけど、忙しくてできなかったし。
とりあえず空いてるハードディスクに全部のバックアップを取って、
パーティションの切り直しからやってみる。
ThinkPadは各OS向けドライバの提供が充実しているので、
本当だったらXPをクリーンインストールしたいのだが、残念ながら
持っていないのでリカバリすることにした。
数時間係でバックアップとリカバリが終わった。
今のはどうか知らないけれど、ThinkPadのリカバリはハードディスクを
丸ごと全部Cドライブにしないとうまくいかない。
後でパーティションいじればいいやと思っていたが、NTFSでインストール
してくれるのでけっこう大変だったりする。
以前やったときは、デスクトップにハードディスクをつないで、
KNOPIXで起動してQTPartedでパーティションをいじった。
今回もその手で行こうかと思ったが、よく考えてみたらこのデスクトップ
処分しちゃうつもりで、ビデオカードを人にあげちゃったんで無理だった。
最近はPartition Magicの作者が作った、Partition Logicというソフトが
あるそうで、それを試してみることにした。
フロッピー版とCD版の二つのバイナリが提供されているが、
僕のThinkPadはCDドライブがないので、フロッピー版を試す。
動かない・・・
なぜだ。
仕方ないので今度はCDを焼いて、iMacで起動してみた。
起動しない・・・
なぜだー!
じゃあ、ということで今度はKNOPIXをiMacで起動してみた。
起動はしたけど、ハードディスクがUSB接続なのがいけないのか、エラーが出てしまう。
お手上げ。
少々考える。
なぜドライブを分けたいのか。
昔はしょっちゅうOSを入れなおしていた。
その際、OS領域とその他の領域が分かれてると、OS領域を入れなおしても
バックアップが取れてるので短時間ですんだのだが、考えてみれば
このPCを買ったのが去年の3月で、それから一度も入れなおしてない。
むしろ、最近Cドライブが手狭で、Cドライブにしか入れられないアプリが入れられなくて
困っていた。
OK。
全部Cドライブにしちゃっていいや。
開き直ってバックアップからデータを戻し始めたが、また問題が。
遅延書き込みデータの紛失というエラーが出る。
なんだこれは。
調べてみたが、どうもハードディスクが壊れてるっぽい。
ただし、ThinkPad本体が壊れてる可能性もある。
ここで新しいハードディスクを買うのは賭けだ。
悩んでいたら、I氏が
「これで本体の故障ならハードディスク引き取ってgraftabl.comのサーバーに入れるよ」
というのでバイクをかっ飛ばして246沿いのPC DEPOTへ。
今度は容量で悩む。
80、100、120GBがある。
悩んだ末に100GBのを購入。
これで余裕ができるが、すぐにまたろくでもないもので埋まっちゃいそうな気もする。
家に帰って作業再開。
リカバリ領域をコピーして(2時間くらいかかった)、新しいドライブでリカバリ、
祈るような気持ちでバックアップデータを戻したら、今度はエラーも出ずに
ちゃんとコピーできた。
やれやれ。
久しぶりのまともな週末をこんなことでつぶすとは・・・
2006-07-22 [長年日記]
_ 今日の聖新田学園ボクシング部物語
(あらすじ)
Shunjiは聖新田学園に通う元気でちょっぴりおっちょこちょいな高校一年生。
学園のアイドル、プリンス先輩に憧れてボクシング部に入部し、
毎日爽やかな汗を流してます!
プリンス先輩はボクシング部のキャプテンで、学園中の男の子の
憧れの的なの!
そんな先輩のそばで練習できるなんて、Shunjiの小さな胸は
いつもドキドキして張り裂けちゃいそう!
_ 第13話「転校生はカナダ人」
今日も放課後は部室へ。
ああ、今日もプリンス先輩に会えるなんて私の心臓が液漏れしそう。
私って多摩区一番の幸せな男の子じゃないかしら。
さあ今日もこのドアを開けて私の心臓が壊れるほどの幸福に浸るのよ。
がちゃ。
「こんにちわー」
どすんっ
イタタタ、こんなところに壁なんてあったかしら?
あら?
壁じゃなくて人間だわ。
まあ、私ってドジ!
それにしても大きな人ね。
ぽっ(顔が赤くなる)。
彫りの深い顔、たくましい両腕、そして丸太のような両足。
「オウ、ソーリー、ボーイ。
アーユーオーライ?」
きゃっ、私のことを心配してくれてるの?
さすが外人は紳士的ね。
でもダメ、私にはプリンス先輩がいるんだから。
・・でもなんて素敵な人なのかしら。
あんな足で蹴られたらと思うと、私どうにかなっちゃいそう。
続く
_ 20年前の少女漫画をイメージして読んでください。
つーか少女漫画なんて読まないからわからないよ!
これだけ書くのに3時間悩みました。
あと、すげー強そうなカナダ人がいたことと、
「あんな足で蹴られたらと思うと、私どうにかなっちゃいそう。」
以外は全部嘘です。
どうにかなっちゃうというか、あれ死ぬよ、絶対。
どんなドーピングしたらあんな体になるんだ、一体。
ショッカーに改造でもされたんじゃないだろうか。
なんでもキックボクシングとかもやってる人なんだそうだ。
どう見ても素人には見えなかったけど、やっぱりそうなのね。
_ 貴方の身近なLinux
ゲーセンに寄り道。
バーチャファイター5の順番待ちをしていたら、通りがかったお兄さんが
気がつかずにコンセントを蹴飛ばして、目の前のバーチャがぷつんと落ちた。
蹴った当人は全く気がつかず、スタスタと歩いていっちゃったが
やってる方はパニック。
店員が来て電源を入れ直したが、そのときに気がついた。
バーチャ5ってLinuxで動いてるのか!
ブートローダーはGRUBだった。
カーネルのバージョンまでは確認できなかったが、CUIのブート画面に続いて
表示された画面の模様は、ウインドウマネージャがデフォルトのXの背景と
同じだったような。
びっくりだ。
ちと調べてみた。
http://www.sega.co.jp/arcade/lindbergh/home.html
Pentium4 3GHz, 1GB, NVIDIAチップ(256MB)だそうだ
汎用的なパーツを使うことでコストを下げてるんだろうな。
Linuxということは、3D表示はOpen GLなのだろうか。
バーチャは4からネットワーク機能を備えたけど、そこら辺を最初からOSが
サポートしているから開発コスト的にも有利なのだろう。
これ、そのままOS込みでPC版出してくれんだろうか。
数万なら買ってもいいくらいなんだが。
2006-07-21 [長年日記]
_ 仕事
客先出張二日目。
昨日の反省を活かし、フル装備のスーツで行った。
外では少々暑いが、サーバールームでは全然OKなのが切ない。
出た不具合はその場でサクサク直す。
大人数プロジェクトでこれをやったら死刑ものだが、少人数プロジェクトなので
全く問題ない。
2時に入って終わったのは8時だった。
厚着してたとはいえ、やはり体が冷えている。
いかんなあ。
昨日と同じく餓王のラーメンを食べて帰った。
2006-07-20 [長年日記]
_ 仕事
客先出張。
サーバーに今回の成果物をインストールしてテストした。
細かい不具合はジャカスカ出てくるが、致命的なのはない。
まあ、このくらいなら許容範囲だろ。
しかし寒い。
空調ききまくりで、体に冷えがしみこんでくるようだ。
うかつにも夏用の半袖ワイシャツで来てしまったので、かなり冷える。
これは家に帰ったら温かい風呂に入らないと体壊れるな、と思いつつ
延々と作業。
14時に現地入りして、終わったのは21時だった。
首と肩周りが寒さにやられて、バキバキになっている。
晩飯は、本格的な手延べ麺のラーメン屋、餓王で食べた。
僕は今まで、ラーメン屋は麺に無頓着すぎる、と思っていた。
例えば、そば屋が買ってきた麺を出したら普通潰れる。
少なくともうちの実家の長野でそんな店は間違いない。
ところが、ラーメン屋は製麺業者の作った麺を出すのが当たり前だ。
手打ち麺の店はかなり少ない。
なんでだろう?
その点、餓王のラーメンは職人が大きな小麦粉の玉を延ばしては折るのを繰り返した
本格的な麺だ。
こういう店が増えて欲しい。
_ イヤホンがいかれた
愛用のちょっと高級イヤホン、ShureのE2cが断線した。
張力がかかると右の音がでない。
買ってから1年経過したし、保証も切れてしまったので買い換えることにした。
E2cは使ってて幸せだった。
僕は大して良い耳を持ってないので、「クリアーなサウンド」だの「強烈な重低音」
だの言われてもいまいちピンとこないが、初めて電車の中で使ったとき、
あまりに遮音性が良くて感動し、ついでに車内アナウンスを聞き逃してちょっと
大変な目にあったりしていた。
で、同じのを買うのはちょっとつまらないので、別のを買うことにした。
E2cはこの手の高級イヤホンの中ではエントリークラスと言われてて、
上にははるかに高いイヤホンもあるが(5万とか)、さすがにそこまでは出したくない。
いろいろ調べてみた。
現在E2cは一番安いところで7500円。
同じShureの上位機種でE3cは15000円。
なんでもE2cより高音の伸びがよいんだとか。
E3cの対抗機種といわれているのがETYMOTIC RESEARCHのER-6iで約13000円。
Shureのイヤホンは多少音に色付けがしてあって、「聞いてて楽しい音」
になっているが、ETYMOTIC RESEARCHのイヤホンは「正確な音」なんだそうだ。
それはそれで気になる。
そういやアキコ嬢も使ってたなあ。
で、知らないうちにM-AUDIOもここら辺の製品を出していた。
Super.fi 3 Sutudioだそうだ。
ケーブルが交換可能だそうで、断線しても交換するだけですむらしい。
それいいなあ。
ただし、遮音性では劣るとか。
さてどうするかね。
こうやって悩むのが楽しい。
2006-07-19 [長年日記]
_ 人のコードを読む
やっぱり悩む。
多分、僕はソースに関しては少し偏執的なところがある。
おそらく、少しくどい。
他の人が見たら「何もそこまで」と思うようなことをやるところがあるし、
ソースを短くすることに未練がない代わりに、拡張性に無闇にこだわる。
分岐を書くのが嫌いで、特にelse ifがかなり嫌い。
多分、else ifが二つ以上続いたらコンパイルエラーではじかれるようになっても
そんなに困らない。
こういう人間だから、あんまり人のコードは見ない方が楽なんだよな。
2006-07-18 [長年日記]
_ 新ソフトアイディア
日曜の真夜中、やっと終わった作業結果をメールで送信した。
既に終電も行っちゃって帰れないし、ゲームで遊んだりして時間を潰してたが、
ふとひらめいた。
メールの送信のタイマー予約が出来るソフト欲しいかも。
大変さをアピールするために、午前2時半とかにメールを送信するように
設定して18時半に家帰るとか。
ただし、その18時半から2時半の間に状況が変化して、つじつまが合わなくなったら
困るので、メール経由で送信中止が指示できるようになってるとなお良し。
ソフト名はアリバイメール。
誰か作ってそうだなあ。
_ 遠方に想いを馳せる
言い換えると現実逃避中。
このプロジェクトが終わったら、夏休み+代休でどこか遠くに行く。
今年は北海道に行きたかったが、休みが取れる頃には夏が終わって寒くなってしまう。
九州か四国か。
東北も悪くないか。
Chokujin師匠に会いにいく旅とか。
_ 1,catchの中が空
これをやったら今すぐ自分の首を絞めて死んでください。
さあ遠慮無く。
catchの中が空ということは、例外が発生してもすべての情報を
握りつぶして何事もなかったように動作を継続する、ということです。
一見ちゃんと動いているようで、実は内部的には洒落にならない
不整合を起こしていて、さらにどこで問題が起こってるか不明、
という最悪な状況になります。
問題が発生してるのに動いてるのは、問題が発生して落ちるよりも
悪い状況というのを理解してください。
ただし、本当に例外が起きても起こらなくてもよいシチュエーション
(後処理とか)ではこの限りではありません。
_ 3,後処理をtryやcatchの中に書く
例えばストリームを開いて何らかの処理を行う場合、後処理でストリームを閉じる
必要があります。
ストリームの処理はIOExceptionが投げられる可能性がありますが、
そうなると処理が分岐するので、すべての分岐の最後に後処理を書いてくれる人が
未だにたまにいます。
また、途中でreturnが呼ばれる場合も、そこに後処理を書いてくれたりします。
こんな感じ。
InputStream is = null;
try {
is = new FileInputStream("text.txt");
while((int i = is.read()) != -1) {
// 適当な処理
if(xxx) {
try {
is.close();
} catch (IOException e) {}
return;
}
}
try {
is.close();
} catch (IOException e) {}
} catch (IOException e) {
try {
is.close();
} catch (IOException e) {}
}
_ 投げられる例外の種類が多かったり、returnの数が多かったりすると
もっと悲惨なことになります。
信じられないことに未だに理解してない人が多いですが、
finallyはtryの中で例外が投げられようが、
returnが呼ばれようが、スレッドが生きてる限り必ず実行されます。
こういうのは最後にまとめてfinallyの中に書きましょう。
InputStream is = null;
try {
is = new FileInputStream("text.txt");
while((int i = is.read()) != -1) {
// 適当な処理
if(xxx) {
return;
}
}
} catch (IOException e) {
// 例外処理
} finally {
try {
is.close();
} catch (IOException e) {}
}
_ 次、やるべき事
1,例外は大きく囲う
やっちゃいけないことの2と繋がりますが、メソッドの頭にtryがあって、
最後にcatchがあるくらいでいいです。
finallyを使って後処理をきちんとやれば、大体はそれで済みます。
_ 2,積極的にメソッドの外に例外を投げる。
例えばDBを操作するプログラムで、処理に失敗したらfalseを返す、
なんてメソッドを見かけます。
こんなシグネチャで。
public boolean doXXX();
こういうのは、
public void doXXX() throws SQLException;
とした方がよいです。
戻り値で成功か失敗かを判定する場合、呼び出し元は
if(!doXXX()) {
// エラー処理
}
_ 3,例外クラスを賢くする
例外も一つのクラスなので、いくらでも拡張が出来ます。
Exceptionを継承して、コンストラクタを上書きしただけの例外クラスを
書く人がいますが、例外クラスに機能を持たせることでコードを大きく
簡略化できることがあります。
たとえばよくあるパターンで、エラーコードを例外クラスに持たせて、
catchした側がそのエラーコードからエラーメッセージを調べて表示する、
なんてコードを見かけます。
そういうのは、エラーメッセージを調べる機能を例外クラスに持たせれば
コードを簡略化できます。
public class SampleException extends Exception {
public SampleException(int errorCode) {
// 初期化処理
}
public String getErrorMessage() {
// リソースからエラーコードを元にエラーメッセージを取得する
}
}
_ エラーメッセージを例外が知っていることは自然ですよね?
綺麗なプログラムを書くコツの一つは、使う側より使われる側に機能を持たせる
ということです。
良いコードは使い回しが効くので、使われる側が1に対して、使う側が複数あります。
なら数の少ない使われる側に機能を持たせた方がコードがすっきりするのは
自然なことです。
try {
// 適当な処理
} catch (Exception e) {
if(e instanceof IOException) {
// IOException用処理
} else if(e instanceof NullPointerException) {
// NullPointerException用処理
} else if(e instanceof InterruptedException) {
// InterruptedException用処理
}
}
2006-07-17 [長年日記]
_ 酷く疲れた
始発で会社から帰宅。
家に着いたら朝6時。
まず、ゆっくり風呂に浸かった。
疲労を抜いてやらないと死ぬ。
それから泥のように寝た。
起きたら午後2時。
今のところ客から電話はない。
ありがたい、これで今日一日はゆっくり出来るか。
どうするか考え、とりあえず洗濯。
あいにくの雨なので室内干しにした。
N氏に電話してみた。
N氏は確か月曜休みのはずなので、後で飲みにでも誘おうかと思ったが、
出たと思ったら
「今セゾンカードの申し込み中なんですー」
「じゃ、また後でかけますー」
ということに。
と思ってたら客から電話。
詳しく書けないが、嵐の予感。
俺もう疲れた。
K君と電話で相談した。
正直言って、K君は凄いと思う。
僕はもめ事が本当に苦手だ。
人に責められるとストレスが大きすぎてどうしていいのかわからなくなる。
やはり僕はコードを書いてるべき人間なのだろうか。
今まで派遣だったので、客と直接やりとりをすることが少なかった。
降りてきた仕様書に悪態をつく位だったが、今の会社では正社員だし
なんせ人数が少ないので、直接客とやり合わないといけない。
僕に出来るのだろうかと不安になる。
いい機会なので、K君のやり方を覚えておこう。
N氏とはまたその内飲むことになり、さてどうしようか、と考える。
ジムはお休み。
バイクでぱーっと飛ばして気分を変えるのもいいが、あいにくの雨。
バーチャファイター5をやりに行きたいが、確実にある渋谷まで行く元気はなし。
とりあえず、体のメンテを行う。
もうガタガタだし。
まず、風呂場に行って足湯をする。
台所の水切りがちょうどいいサイズなのでお湯を張って、足をつっこんで
ぼんやりする。
ぬるくなったらシャワーヘッドをつっこんでお湯を足す。
しばらくやってたら汗が出てきた。
次に蒸しタオル。
タオルを濡らして軽く絞り、電子レンジでチンして、ビニール袋に入れて
体に載せる。
首筋、胸なんかを重点的にやる。
効いてきた。
でもゆるんだせいで抑えてた痛みが出てきたような気がする。
しばらくやってから家を出る支度をする。
忙しくて後回しにしていた髪を切ることにした。
駅前のよく行っていた美容室は終わっていた。
あかん。
二子玉川で切ることにして、電車に乗った。
二子玉川では散髪の前に腹ごしらえで、五右衛門のパスタ。
最近こういうのって食べてなかったな。
昔行ったことのある美容室に行く。
とりあえず短くしたかったので、美容師さんと話してちょっと
中田っぽくしてもらった。
切り終わって、以前よくお世話になった女社長のIさんに電話した。
先日電話があって飲みに誘われてたので声を掛けてみたが、繋がらない。
無印良品のカフェでぼんやり時間をつぶす。
ハチミツだけで作ったワインというのが売っていたので頼んでみた。
甘い。
ハチミツのコクが出ている。
無印では前々から低反発枕が気になってるんだが、会社泊まり込みのために
買うようでちょっと気が乗らない。
それから溝の口へ移動。
ゲーセンを覗いたらバーチャ5が出てた。
数回やって、勝率は5割よりちょっと上くらい。
時代屋というバーでギネスを飲んで行こうかと思ったが、体がアルコールを
欲しがってないのがわかるんでやめておいた。
大雨の中、とぼとぼと帰宅。
2006-07-16 [長年日記]
_ 休日出勤再び
3連休、それは見果てぬ伝説の大地に実るという黄金の果実。
それを一口食せば100日若返るという。
我々はその伝説の秘宝を求め、当てのない旅を続けるのだった。
というわけで会社へ。
問題が発生していたのは僕ではない人の書いていた部分だった。
まあ、このくらいだったら何とかなるだろうと僕が出たのだが、
よくわかんない。
環境作りで少々手こずり、さらにその後も色々試していたが
いまいちうまくいかない。
ソースに手を入れながら色々試してた。
おかげで構造がわかったのは収穫だったが、成果は出ない。
埒が明かないと思ってたら、客から電話。
なんか優先度の高い他のことをやって欲しいらしい。
今やってることは優先度が低いので連休明けでもいいとか。
結局僕がやった作業、全部無駄。
ふざけんなー!
その他、データの都合でテーブルのプライマリキーが変わるかもしれないとか。
逃亡しようかね。
俺もう嫌だよ。
で、そのやって欲しい作業ってのを始める。
手こずる。
DBを更新するバッチを呼び出すのだが、コマンドプロンプトからは呼び出せるのに、
Javaから呼び出せない。
色々試す。
当初、トランザクションのせいかと思ったのだが、どうも違うようだ。
既に接続がタイムアウトしてプールから切断してる状態でも動かないし。
ふと思い立ち、起動したプロセスの標準出力とエラー出力を読み出すコードを追加してみた。
とたんに動き出した。
あー、これか。
Javaから外部プロセスを呼び出すときは、その出力を読み出してやらなければならない。
でないと、出力バッファがいっぱいになって、外部プロセスがそれ以上進まなくなることがある。
これはjFDを作ってたときに覚えたことなのだが、作って良かったjFD。
じゃなきゃあと何時間ここで悩んだか。
まあ、jFD作ってなかったらここで働いてることもなかったんだろうな。
そして一段落付けば時計は午前1時。
今夜は区ト間で梅酒で酔いつぶれるつもりで電車で来たのだが、
また会社泊まりかよ。
バイクで来れば帰れたのに。
銭湯行くか。
風呂上がりにフルーツ牛乳を飲もう。
それで、ビールを2、3本買ってきて会社で飲もう。
なんだよこの生活。
死ぬ。

_ NT [新ノートは容量に余裕があるからCとDに分けたけど、旧ノートの時はC一本でした。 でもデスクトップと環境を合わせるため..]
_ Shunji [あー、そうか、僕もDドライブフォルダ切ってやればよかったんですね。 考え付きませんでした。 しかしそう考えるとUNI..]