Google Reader
marsさんとこで紹介されていたので、Google Readerを使ってみた。
残念ながら904SHではクッキが認識できないようでログインできないのと、PC側でもOperaでは表示が崩れるようだ。今後の改良に期待かな。
プログラマが減っている
「プログラマが減っている」、Mozilla Japanの代表理事が指摘
育てる以前に、そもそもなりたがる人が減っている気がしますが(少なくとも日本では)。なので「報いる」ことを検討すべきでは。あと一山幾ら制で優秀でもそうでなくても給料変わらない、というか優秀だとむしろ仕事増えるだけで、感謝はされても実は伴わないみたいな環境を変えないとね。
Geneseo
IntelとIBMがPCI Expressの後継仕様「Geneseo」を開発,Dell,HP,Sunなどが支持
また変わるの? やっとAGPからPCI-Expressに乗り換えたばかりなのに。もう少し長持ちする規格を考えて欲しいな。
JPG現像
SILKYPIX 3.0のJPG現像を使って、昔のJPG写真を現像してみた。ノイズリダクションもできるので便利。結構JPGでもレタッチ耐性があるね。色温度調整して、露出補正+1かけているけど、破綻してない。
WebWork in Action
第一部まで読み終わった。Strutsに最新の技術を詰め込んで洗練させた感じかな。Strutsの荒削りな部分が、ていねいに造り込まれているので、これなら楽にできそう。
「これからはJSFでしょ」と思う反面、Webアプリをコンポーネントモデルで実装することに対する疑問も自分の中にはあって、まぁ画面数20枚程度くらいまでなら、GUI開発でお気楽にってのでもいいのだろうけど、それを超える場合、やっぱりStrutsやWebWorkのようなアクションベースの方がStraightforwardで分かり易い気がする。
大抵の場合、Webのフォーム内のフィールドってのはお互いに関連を持っているから、全部揃わないと処理できないわけで、特定のフィールドが変化したからUpdate Eventが飛んで来てみたいなのは、大してありがたくない気がする。結局submitボタンにまとめてイベント処理書くのであれば、アクションベースと比べてメリットが無いし、むしろ分かりにくくなるデメリットさえ感じる。
とりあえずServlet/JSPコンテナが欲しい時
なんとなく、ずっとTomcatを使ってきたけど、Managerアプリ回りって、昔から妙な感じでうまく動かないことが多い。リロードが効かないとか、配備解除しても残ったりとか。最近はJetty使う事の方が多くなってきた気がする。
WebWork in Action
読み始めるも、いきなりHello Worldから最新版では動かないじゃないか。サーブレットで受けるのは古くて、フィルタ使うようになってるし、大根もWebWork組み込みのものから春大根が推奨になって、Springの設定ファイルが必要だし。全然違うじゃん。本に載っていない新機能もかなりあるんだろうな。
Skweeze
最近Bloglinesのmobile版を通して、ケータイでblogを見ることが多いのだけど、RSSリーダの中に表示された記事のリンクをクリックすると、普通の(?)パソコン用ページなわけで、そこで表示できなくなってしまうのが残念な感じだった。
ケータイ用のGoogleは、ケータイ用に細かく区切って、複雑なタグを外してパソコン用のページをケータイでも見られるようにしてくれるので、こういうのがBloglinesにあるか、それかケータイ用GoolgeがRSSリーダ機能を作ってくれればなぁと。
と思っていたら、出来てた。ただ残念ながら日本語が化けるのと、Googleに比べると、ケータイではうまく表示できないケースが多いようだ。改良されていくといいな。
でもケータイのパケット代考えると、b-Mobileとザウルスとかの方がいいのかなぁ。
ちゃんと中まで見てるんだ。
FindBugs 1.1.1用の日本語メッセージファイルを送ったら、"switch"を"seitch"と間違えてない? とコメントが来た。日本語のファイルなんて中まで見ていないかと思ってたよ。
Jeliot
marsさんとこで発見。すごいよこれ。
public class MyClass {
public static void main() {
// Your algorithm goes here.
System.out.println(factorial(5));
}
static int factorial(int v) {
if (v == 1) return 1;
return v * factorial(v - 1);
}
}
とか見せれば、たちどころに再帰が理解できるようになるかも。
二分探索でオーバーフロー
int mid =(low + high) / 2;
中間値計算でオーバーフローする危険がありますよ。というお話。こんなことを気にしなければならない時代になったのだね。まぁC/C++だと、わざと巨大なデータを渡すことで、脆弱性を突くなんてことにもなりかねないんで、やばそうではある。
ce-scroll
Meadow3では、physical-line-modeの代わりにce-scrollを使えばいいみたいだ。でも、なんかC-vでページダウンした時に余計に進んでしまう感じ。とりあえずce-scroll.elの中のce-scroll-upとce-scroll-downへのバインディングを外してみたら、いい感じ。
;;(define-key global-map [next] 'ce-scroll-up) ;;(define-key global-map [prior] 'ce-scroll-down) ;;(define-key global-map "\C-v" 'ce-scroll-up) ;;(define-key global-map "\M-v" 'ce-scroll-down)
休止状態移行に失敗するバグ
「システム リソースが不足するため、API を終了できません」ってなるやつ。
知らないうちにちゃんとしたfixが出てた。前は「何が起きても文句言いません」みたいな文章にサインが必要で、怪しかったのでやめたのだけど、今回は早速導入してみた。後でノートにも入れておこう。いやノートは仕事用だし。デスクトップで様子を見てからだな。
[備忘録] XPでZIPサポートをoff
やじうまWatchから。ファイルを一個消すだけで1分かかったりする病気には効果あるんだろうか。
regsvr32 /u zipfldr.dll regsvr32 /u cabview.dll
[備忘録] FindBugsのメモリ
サマリを作成する処理がメモリを結構使うらしい。findbugs.noSummaryでdisableできる。
findbugs -jvmArgs "-Dfindbugs.noSummary=true" -maxHeap 800
super PI
試しにsuper PIを実行してみた。104万桁で17秒。すごいね。104万桁だよ。昔の8bitマイコンじゃ単に104万回、から回りするだけでも、このくらいかかってたよ。そういえばマーチンの式(だっけ?)で計算に挑戦した覚えが。BASICだったから3桁計算するだけでも、えらく時間がかかったような。
PI=3. 1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 3421170679
今でも、少数点以下30桁までは覚えていた。どーでもいいことは忘れないもんだ。
そしてオーバクロック
そういえば、昔はクロックアップとか言っていた気がするけど、英語のoverclockが定着したね。こういうケースって珍しいかも。定格は2.4GHzのところ、3GHzにオーバクロックしてみた。何事もなく動作する。ただ鎌斬だとCPU温度が70℃を超えるので、Intelのファンに交換。50℃程度に落ち着いた。やっぱり鎌斬ダメだな。ファン騒音もほとんど変わらないし。というかIntelファンだと温度に応じて自動調整できるし。
SILKYPIXの現像が、とてつもなく速くなった。XP 3000+のころより5倍以上速い感じ。2-3秒で終わってしまう。そしてWoWもまったくストレスなし。遠景の描画が省略されなくなったので「あ、こんなところに難破船が」なんて気づくことも。意味もなく。ぐるぐると回ってみたり。そういえば良く、スピンしているプレーヤを見かけるんだけど、こういうわけだったのか。一番うれしいのが休止状態への移行が高速で安定していることかな。なんか2-3秒でHDDへの保管が終了するんですけど…。そんなにメモリを使ってないからか。残念ながらスタンバイ(S3)は、まともに動かなかった。
Core 2 Duo
買って来た。こんな感じ。
E6600 Gigabyte GA965P-DS4 Leadtek Win Fast PX 7600(Dual DVI/Fan レス) Seagate 320GB HDD No Brand DDR2 PC-800 1GB x 2
メモリの値段が上がり始めていたのが想定外だったけど、メモリの価格は先が読めないので、待つのはやめて購入。本当はDS3の予定だったんだけど、展示されているマザーを見ていたら、DS4の銅きらきらに目を奪われて、結局DS4にしてしまった。ツクモさん商売うまいね(ま、2k円程度しか違わないわけだが)。昔Athlonで使い物にならなかったCPUクーラ、鎌斬をつけてみた。なんかBIOS画面で、50℃くらいあるな。もっともBIOS画面ってCPUはビジーウェイトしてフル回転しているから、こんなものか。Athlonだと60℃こえてたし。
Windows2000だと、不具合があるらしいので、XPを導入。認証終わってから、IntelのINFとか、チップセットドライバとかいっぺんに入れたら「システム構成が、あまりに変わったので、もう一回認証してください」とか言われる。で、結局電話認証。む〜。認証しないとパッチもダウンロードさせてくれないから、最後に認証ってわけにはいかないしな。ドライバ、いっぺんに入れずにこまめに再起動しろってことか。めんどいな〜。
c:\Documents and Settingsの場所を変えたくて(何しろ、ここがぶくぶくと太って、いつもC:がいっぱいになってしまう)、いろいろやっていたら、なんかコンパネの管理ツールの中がからっぽになってしまった。というわけで、またインストールし直し。また電話認証になったらやだな〜。さすがに怪しまれるんじゃ ^^;
FindBugsアノテーション
DocBookの勉強がてら、FindbugsのマニュアルにFindBugsアノテーションの解説を追加してみた。本家にも送ってみたけど、取り入れてもらえるかどうか分からないので、ここにも置いておく(すんません、英語版しか用意してないです)。
PL/SQLでassertEquals()
PROCEDURE assertEquals(expected NUMBER, val NUMBER) IS
BEGIN
if expected <> val then
raise_application_error(-20001, TO_CHAR(expected) || 'の期待値に対し、実際は' || TO_CHAR(val) || 'でした。');
end if;
END assertEquals;
みたいなのを無邪気に書いていたのだけど、これってnullが暗黙変換で0に変換されてしまうので、assertEquals(0, null)みたいなのが通ってしまう。ちゃんとnullかどうか判定しないとだめだ。assertEquals(null, null)はどうすべきなのかな。
if (expected is null) <> (val is null) or
(expected <> val) then
3値論理的にはfailさせた方が安全なのだろうか?
PL/SQLで感心したこと。
procedure foo( data char ) is begin if data = '123' then
みたいにcharで受けると、dataに'123 'のようにスペースが入っていても条件成立する。
procedure foo( data varchar2 )
のようにvarcharで受けるとスペースが入っている場合には条件成立しない。なるほどねー。
アノテーションを付ける先の総称は。
アノテーションってクラスに、インターフェース、フィールドやメソッドからローカル変数、パッケージにまで付けられる。これって総称は何だろう。「このアノテーションが付けられたxxxは」のxxxには何と書くべきか。やはり「ターゲット」かな? 「対象」でもいいか。
@NonNull
enum Foo {
A, B
}
public class Test {
public static void main(String[] args) throws Exception {
EnumMap map = new EnumMap(Foo.class);
map.get(null);
}
}
$ findbugs.bat -low -textui Test.class H C NP: Test.main(String[]) でnullをメソッドに渡していますが、この引数は java.util.EnumMap.get(Object) で@NonNull宣言されています。 Test.java:[line 10]行目 Warnings generated: 1
あれ? 何で標準ライブラリのEnumMap.get()にFindBugsの@NonNullアノテーションが付いてるの? と思ったら、FindBugs内部で、こんなことをしていた。
addMethodParameterAnnotation("java.util.EnumMap", "get", "(Ljava/lang/Object;)Ljava/lang/Object;", false, 0, NullnessAnnotation.NONNULL);
しかしEnumMap.get()はAPI仕様書に、引数がnullの場合の挙動が書かれていないので、微妙だ。現在の実装はnullだったらnullが返るようだが、そもそもEnumにnullのメンバなんてあり得ないんだから、null引数ならNPEって仕様にしておけば良かった気がする。Map.get()にもNPE投げてokって書いてあるんだし。
Windows
思いたってJava 5のrt.jarをFindBugsでチェック。CPUを思いっきり使うので「通常以下」にプライオリティを変更。でも、何の拍子にか分からないが数分後にシステムが地を這うような遅さになる。しょうがないので「低」に変えようかと思ったがShift+Ctrl+Escをいくら押してもタスクマネージャが出てこない。こういう時にすぐ出てきてくれないと意味ないよ…。FindBugsを止めてみたらタスクマネージャが10個くらい出てきた。って遅すぎ。
何かを思い出した。あれだ。渋滞の中パスを待ってたらなかなか来なくて、やっと来たと思ったら同じ行先のバスが3台くらい連なってやってくるってやつ。











