メモの日々


2009年11月04日(水) [長年日記]

  • C++の仕事は終わった。今月からはJava。
  • 月曜日にJDK6 Update16をインストールしたばかりなのに、JDK6 Update17がでやがった。

[book] 天国までの百マイル (浅田次郎)

天国までの百マイル(浅田 次郎) 読んだ。心臓病の母親を東京から千葉へ転院させる話。優しい人たちがたくさん登場する。うまくすると泣けそうだけどそこまでははまらなかった。3.5点。

母にとっての幸福は、「希望」そのものだった。希望が叶えた幸福は実は母の幸福ではなく、希望にすがって生きていたあのころが、母にとって最も幸福な時代だったのだ。

育ててもらったのだと、安男は思った。


2009年11月05日(木) [長年日記]

[java] Netbeans 6.7にてTomcatを起動できるようにする

「Java Web アプリケーション」というプラグインを追加したら「サービス」ペインに「サーバ」というノードが追加されてTomcatを設定できるようになった。

6.5の頃はすんなりできた気がするけど今回は迷ったのでメモ。


2009年11月06日(金) [長年日記]

  • 半年ぶりくらいにスーツを着た。
  • 相変わらず仕様が曖昧な仕事。それを見込んで進めていかないと。
  • ふーん。なんか寂しいな。

2009年11月09日(月) [長年日記]

[java] NetBeansが使用するJDKのパスを変更する

JDKをバージョンアップして古いJDKをアンインストールすると、NetBeansの起動時に

Cannot locate java installation in specified jdkhome:

C:\Program Files\java\jdk1.6.0_16

Do you want to try to use default version?

というようなダイアログが毎回出てくるようになる。これが出ないようにNetBeansへJDKの正しいパスを教える方法をメモ。

NetBeans 6.7.1をインストールしたフォルダにあるetcフォルダ内に「netbeans.conf」というテキストファイルがある。このファイル内で「netbeans_jdkhome」にJDKのパスを設定しているので、そこを正しいパスに修正すればよい。

netbeans_jdkhome を指定しなくてもNetBeansは起動するので、指定しない方がいいのかも。


2009年11月16日(月) [長年日記]

[life] 図書館へ

返却日をだいぶ過ぎてしまったので、仕事を早めに切り上げて図書館へ行った。閉館1時間前くらいに着いたが、またもガラガラだった。

  • 空の中 (有川浩)
  • 週刊アスキー 2009.8.11 「激薄10万円ノートPC 5機種」
  • 週刊サッカーダイジェスト 2009.9.22 「J2010移籍マーケット大予想」

を借りた。この図書館は引っ越す前の所よりも本が少ないということが分かってきた。


2009年11月17日(火) [長年日記]

[java] ソースにエンコーディングが不正な文字が含まれている際のjavacの挙動

コメント内にエンコーディングが不正な文字が含まれているソースファイルをコンパイルする必要があった。

Antを使うと

警告:この文字は、エンコーディング UTF-8 にマップできません。

という警告はでるがコンパイルできた。が、NetBeans 6.7.1でコンパイルすると

この文字は、エンコーディング UTF-8 にマップできません。

というエラー(警告じゃない)になりコンパイルできなかった。なんでや。

-sourceオプションの有無で動作が変わる

javacに渡されているオプションを比較したところ、「-source」オプションの有無によりjavacの挙動が変わることが分かった。次のようになる。

G:\home\kenichi\work\java>javac -version
javac 1.6.0_17

G:\home\kenichi\work\java>javac -encoding UTF-8 -source 1.6 B.java
B.java:1: この文字は、エンコーディング UTF-8 にマップできません。
//aaaaa?bbbbbb
       ^
エラー 1 個

G:\home\kenichi\work\java>javac -encoding UTF-8 -source 1.5 B.java
B.java:1: 警告:この文字は、エンコーディング UTF-8 にマップできません。
//aaaaa?bbbbbb
       ^
警告 1 個

G:\home\kenichi\work\java>javac -encoding UTF-8 B.java
B.java:1: 警告:この文字は、エンコーディング UTF-8 にマップできません。
//aaaaa?bbbbbb
       ^
警告 1 個

まとめると、

  • 「-source 1.6」を指定:エラー
  • 「-source 1.5」を指定:警告
  • 「-source」の指定なし:警告

ということ。NetBeansではプロジェクトのプロパティで「ソース/バイナリ形式」を「JDK 5」にすることで「-source 1.5」が付くようになるので、これで一応問題を回避できる。

Java 6でエンコーディングエラー時の仕様が変わっていた

javacの標準オプションの説明の -source の所に、

-source release
   受け付けるソースコードのバージョンを指定します。release には次の値
   を指定できます。

   1.3
       このコンパイラでは、JDK 1.3 以降に導入されたアサーション、総称、
       または他の言語機能をサポートしません。
   1.4
       JDK 1.4 で導入された、アサーションを含むコードを受け付けます。
   1.5
       JDK 5 で導入された総称および他の言語機能を含んだコードを受け付
       けます。
   5
       1.5 と同義です。
   1.6
       これがデフォルト値です。Java SE 6 では言語に対する変更は導入さ
       れませんでしたが、ソースファイル内のエンコーディングエラーが、
       以前のような「警告」ではなく、「エラー」として報告されるように
       なりました。
   6
       1.6 と同義です。

とあった。「1.6」の所の説明に注目。1.6でjavacの動作が変わっているのだ。

「これがデフォルト値です。」という言葉を信じれば、-sourceを指定しなかった場合と-source 1.6を指定した場合の動作は同じになるのが正しいはずだが、先に示した通りこのときの動作は違っている。javacのバグかなあ。

[vim] Vimでファイルを16進数ダンプ表示する

:%!xxd

を実行することで、開いているファイルを16進数ダンプ表示することができるのでメモ。ファイル全体をVimに付属の xxd コマンドで変換している。

この状態で編集もできるみたいだけれど試してないのでメモしない。

あと、文字の上で

ga

を実行することでその文字の文字コードが表示されることもメモ。

ヘルプのバイナリファイルの項(リンク切れ→http://vim-jp.org/vimdoc-ja/usr_23.html#23.4)に説明がある。Vim上で見るには「:help xxd」したときに表示されるユーザマニュアルへのリンクを辿ればよい。


2009年11月19日(木) [長年日記]

[life] 健康診断を受けた

前回受けたのはもう3年も前なのか。いかんいかん。

受付に行くと健診待ちの人が他にもいて一安心。初めての病院なのでまず書類に名前など書いてカードを作ってもらった。

最初の検査は身長と体重。続けて血圧。この後しばらく待つ。

追加料金を払えば胸部X線と便の検査も受けられるがどうするかと聞かれたので、必要ないと言ったら意外そうな顔をされた。普通皆受けるみたい。それならと胸部X線は受けることにした。300円。

というわけで胸部X線の検査。Tシャツは着たままでよい。次は尿を取る。前回は苦労したが今日は大丈夫だった。

次は採血。右腕から血を抜いた後、左手で傷口にガーゼを当て押さえるように言われ、その後手を離してと言われたので離したら、ガーゼを持ったまま離してしまい、血がダラダラ流れてしまった。ガーゼは右腕に残したままにするのが正しい。

次は心電図。この後またしばらく待つ。最後に医師による問診。目を診られ、聴診器を当てられ、胴回りを測られておしまい。問診短っ。胴回りは79cmだって。太った。

これでおしまい。300円払って病院を出る。結果の受け取り方を確認し忘れた。郵送されてくるのかなあ。


2009年11月25日(水) [長年日記]

[java] NetBeans 6.7.1でファイルの関連付けを変更する

UTF-8で書かれたpropertiesファイルをNetBeans 6.7.1で開くと文字化けしてしまう。propertiesファイル用のエディタはUTF-8を認識してくれないみたい。

なので、拡張子.propertiesに関連付けるエディタを変更しようとしたが、どうすれば変更できるのかがなかなか分からなかったのでメモ。

[ツール] --> [オプション] --> [その他] --> [ファイル]

と辿って表示される画面で設定できる。ひとまず.propertiesは「text/plane」に関連付けた。これでUTF-8のファイルが文字化けしなくなった。

[java] Unicodeエスケープはやめよう

未だにpropertiesファイルに日本語を書く際にUnicodeエスケープを使う人が多いみたいだけど、Java 6からはjava.util.Properties#load(Reader reader)を使えば文字エンコーディングを指定してpropertiesファイルを読み込めるので、みんなUTF-8とかで書けばいいと思う。