雑記帳 2006年 9月第4週

2006/09/17 Sun.

Asking someone how long they believed in Santa Claus is so meaningless that it couldn't serve as worthless gossip...
Regardless, if you're going to ask me how much of my childhood I spent believing in an old man in a red suit,
I can confidently say that, I never believed in him in the first place.
I knew that the Santa at the preschool Christmas event was just a fake...
And I didn't even have to see Mommy kissing Santa Claus, I suppose I was just a precocious child who questioned
the existence of an old man who only worked on Chistmas.

In any rates.

Be it aliens, time travelers, ghosts, demons, espers, or evil organizations and the heroes out of catoon or comic
books who battle them, I didn't realize that they weren't real until some time later.
No, I had probably already realized the truth, I just didn't want to admit it.

全部読んだし、全部見ましたよ。時系列がワケわからんから、普通に読んだり見ただけじゃ理解するのは難しいな。
そんなワケで、今日は丸一日これで時間を潰す。ちなみに、上記の文章は冒頭部を英訳化。わかる人にはわかるでしょう。

2006/09/18 Mon.

熊野古道」といえば世界遺産であり、熊野三山(熊野本宮大社、熊野速玉大社、熊野那智大社)に通じる参詣道である。
gadult」他数名が三重へ旅行に行っているのだが、何だって俺は自宅で無為に時間をつぶすハメになってるんだろうかね。
全ては予定も仕様も決める気配が無い某部署の某氏に起因するのであり、連休の予定も埋めるワケにいかなかったのだ。
基本的に休日ヒッキーな自分が外出するには他人の都合に便乗する必要があるが、それすら許されないとは悲しいことだ。
そして、旅行の参加締切の翌日にこの休日の予定が空いたことが確定するとは、全く以って世界ってのはよくできてる。
そんな経緯があって、結局は指先が乾燥してくるまで本読んで、肩が凝るまでPCと格闘するという無為な一日になるワケだ。

2006/09/19 Tue.

JSPでServletOutputStreamでファイルのダウンロードをしてみようと思ったのだが、これ微妙にややこしいんだな。

<%
    File fDownloadFile = new File("C:\\test.txt");
    response.setContentType("application/octet-stream-x");
    response.setHeader("Content-Disposition","attachment; filename=" + fDownloadFile.getName());
    FileInputStream fis = new FileInputStream(fDownloadFile);
    ServletOutputStream sos = response.getOutputStream();
    int i = 0;
    while ((i = fis.read()) != -1) {
        sos.write(i);
    }
    sos.close();
    fis.close();
%>

例えばこんな記述をするとファイルを落とせることは落とせるんだけど、上記ソース以外に出力を行う部分があると変になる。
上記ソースまんまならば正常に「text.txt」を落とせるんだけど、こんな感じでJSPに出力を行うとファイルがおかしくなる。

ファイルのダウンロードを開始します。<BR>
<%
    File fDownloadFile = new File("C:\\test.txt");
    response.setContentType("application/octet-stream-x");
    response.setHeader("Content-Disposition","attachment; filename=" + fDownloadFile.getName());
    FileInputStream fis = new FileInputStream(fDownloadFile);
    ServletOutputStream sos = response.getOutputStream();
    int i = 0;
    while ((i = fis.read()) != -1) {
        sos.write(i);
    }
    sos.close();
    fis.close();
%>

先頭のコメントはJSP上に表示したいが、これで「test.txt」を落とそうとすると、ファイルの先頭にコメントが追加されてしまう。
しかもファイル名が「CAJED4XJ」みたいにIEのキャッシュみたいな名前になってしまう。何のためのResponse#setHeader()だ?
JSP上への表示を一切行うことなく、ファイルのダウンロードのみを行うのであれば問題無いんだけど、これじゃ何だかなぁ。
もともとやりたいのが、画面表示と同時にファイルのダウンロードダイアログを出したいワケ。一体どうしたモンかな。
手っ取り早いのがサーバー上にファイルを作って、HTMLの<META http-equiv>あたりで遷移させるくらいだろうか。
その次の案が、ページ内に<IFRAME>を仕込んでおいて、その中にダウンロード専用のJSPをロードするという手法。
どっちにしても狡いやり方だよな。手法的には後者の方が楽なのかな。前者は「Vector」あたりで使われている方法だ。

ところで、「JSP から ASP.NET への移行ガイド : ファイルのダウンロードとアップロード」ってのが「MSDN」にある。
コーディングスタイルの問題なんだろうけど、このページ内だとJSPタグとtry句が同じ行に書かれていたりするんだよな。

<% try {
    (略
    } catch (Exception e)
    {
    e.printStackTrace();
}
%>

インデントが一つ下がった状態で書けるから、この書き方に倣ってもいいのかな。今さら自分のスタイルを変えたくないけど。
自分はいつも以下のような書き方。別に行数稼ぎとか考えているワケじゃなく、自分が見やすいと思ってるだけなんです。

<%
    try {
        (略
    } catch (Exception e) {
        e.printStackTrace();
    }
%>

Eclipse」には「左中括弧の前に改行を挿入」ってオプションがあるけど、自分の周りじゃこの書き方してる人はいないな。
「'else if'の間に改行を挿入」とかのは自分には全く合わない。どれが標準か知らんけど、スタイルを頻繁には変えたくないね。

で、とりあえずJSPによるファイルのダウンロードは問題無いのだが、そもそもファイルのアップロードってどうやるんだ。
今の開発ではあらかじめ提供されているライブラリを使っているんだけど、J2EEだかの標準のライブラリとか無いのか?
JSP ファイルのアップロードで検索」すると、「@IT:Java Solution」に「ファイルアップロード処理を簡単にする」ってのがある。

従来、JSP/サーブレットにおいて、アップロード処理を実現するのは困難でした。
というのも、JSP&サーブレットAPI、あるいはJavaコアAPIが標準で備えるライブラリには、
アップロード処理に特化したライブラリが存在しなかったためです。

マジかよ。結局サードパーティのライブラリに頼る以外に無いのか。PerlによるCGIでも「cgi-lib.pl」に頼るしかないしな。
JSPだと「org.apache.commons.fileupload」ってのがあるみたいだ。どうでもいいけど、このJavadocのCSSは格好良いな。
使い方は「Javaの道」の「Servlet - 12.ファイルアップロード」でも参照。その内にでも作ってみることにしよう。

さて、今日は自社にて将軍様主催のパーティがあった。まずは、有り難味の欠片も無い言葉を10分ほどご拝聴させて頂く。
そんな言葉を覚えておくのも限られた脳の容量にとっては惜しいことなので、右から左に聞き流しておくに留めておく。
先週くらいに本社にて行われたフォローアップミーティングとかでもそうだけど、会社の業績とか方針とかどうでもいいし。
肝心なのは自分がどれだけ楽しんで仕事をできるかということであり、マクロよりかはミクロな視点が重要なのです。
ウチの会社は業績は上がっているらしいが、給料に反映された試しが無いので、必然的に業績への興味は無くなるのです。
業績が上がれば給料は上がらず、業績が下がれば給料は減る。いや、一応給料は上がってるけど、この表現は正しいのか?
そもそも、基本給の増加分が1年目と4年目にして新渡戸稲造の一人分にも達しないっていうんだからお話にならない。
非常に使える後輩のI崎君は今月末で退社予定らしいが、彼の判断は至極正しいものと評価していいと思われる。
んで、肝心の内容についてなんだけど、気の利いたメタファーが思い浮かばなかったので、詳細の記述は割愛しておこう。

2006/09/20 Wed.

まだ仕様が来ねえ。もうね、ケンカ売ってんのかと。これで本番リリース日に変更が無いとか言ったらキレるぞ俺は。
しかも今朝は青梅線で終点まで寝過ごすし、何だかもう色々と究極的にダメになってきたな。腐った状況を打開したい。
激しく暇を持て余す時があったので、何か短時間で可能なことはないかと訊いてみると、とあるアプリを作ってと言われた。
そのアプリも20分程度で完成してしまい、試験も終了。開発時に使うちょっとしたアプリだから、別に仕様書とか要らないし。
金曜は客先休暇日につき有休を取ることになるんだけど、明日も休んでいいっすか?どうせ仕様はまだ来ないっしょ?

帰りに多摩センで「ザ・丼」を食って帰ろうと思い、去年の8月2日に食った以来の月見さけとろ丼を食ってみようと思い立った。
何故そんなに期間を空けたかってのは、去年の8月2日の雑記を参照。とにかく、久々に頼んでみようと思ってしまった。
見た目は以前よりまともになったが、第一に異臭がする。ぶっちゃけ、出てきた月見さけとろ丼は臭かった。
第二に、月見というからには卵が乗っているワケだが、白身の部分が妙に青白い。これ食って平気なんだろうか。
670円という大金を払った以上は食わざるを得ないけど、味はともかく臭いだけは酷かった。痛んでんじゃないか?
食ってしまった以上はしょうがないが、最悪体調を崩すという事だけはしたくないので、家に帰って胃腸薬を即飲む。
頼むから腹を壊したり、最悪のケースで食中毒だけは勘弁してくれよな。もうあそこの月見さけとろ丼は食わねえ。

2006/09/21 Thu.

SQLを投げてデータを引っ張り出して、それをCSVに加工してメールで添付して送るという機能を作ってたんですよ。
実際に動かしてみると、1回目に約70KBほどのCSVが添付されてきた。これをもう一回実行すると、今度は140KBになった。
中身を見てみると、同じデータが2回重複していただけなんだけど、何でこんな現象が起こるのかが原因がわからない。
3回、4回と試行回数を増やすたびに210KB、280KBと増大していく。中身のデータは同じモノが延々と重複するだけ。
Servletで動かしているならば、セッションだかアプリケーションスコープあたりにデータを持ってしまっていそうだ。
だが、これは単体実行アプリにつきそんな事はありえない。クラスファイルを全部消して再コンパイルしても結果は同じ。
700KBに近づいたところで、あまり重いのを連続してメールサーバーに送ると文句が来そうなので、とりあえず一旦中断。
ソースを見てもどうにも原因がわからず、喫煙室で時間を潰していると突如天啓が。そこでもう一度ソースを確認。
……1回目に作ったCSVを消さずに、延々とデータを追記してたのが原因だったのねー、あまりのアホさ加減に萎えまくり。
ってか、そもそもFileWriterのコンストラクタの第二引数にtrueを設定するのがクセになってるのもよろしくないな。

2006/09/22 Fri.

X JAPAN」というバンドを知らない人は極少数だろうけど、「X JAPAN」が解散してから今日で9年経ちました、早いものです。
ってなワケで、朝から晩まで「X JAPAN」聞いてました。隣の家に迷惑だった気がしないでもないけど、そこはスルーで。
ちなみに本日は伝家の宝刀の有給休暇というヤツです。客先が休みで、ウチらは強制的に休まされる。どう考えても理不尽。

2006/09/23 Sat.

下らんネタの改変に時間を費やしたせいで、やろうと思っていた動画編集ができなかった。家じゃ見る時間無いし。
画面をずっと見てなきゃならんのがメンドいので、不要な部分だけ取り除いて全部MP3化しようと思ってたのよね。
ってか、このMP3プレイヤーのバグは何とかならんかな。「順番に再生」ってやってもシャッフル再生がデフォルトになる。
そもそも、「この曲を再生する」って選んでも、全然関係無い曲が流れるし。イコライザーが壊れるのに次いで嫌なバグ。
ファームを入れ替えても、一回完全に初期化してから入れ替えても直らん。誰か最近のおすすめMP3プレイヤー教えてくれ。