最近、何でもかんでも「見える化」するのが流行っていますね。
私も波に乗って「今、ブロックデバイスのどこにアクセスしてるか?」を見える化してみました。見た目としては Windows 9x 時代のデフラグ(うーん、懐かしい)をイメージしています。
アクセス箇所の取得ドライバ、見える化用の GUI、表示設定用の GUI、くらいがあればできそうです。
思いつきレベルの実装に時間かけるのは無駄だよネ!ってことで、ドライバも GUI も超手抜きで実装してみて、ひとまず動きました。とまあ、説明では意味がわからないと思うので、キャプチャしてみました。
アクセスの見える化開始→ext3 でフォーマット→Linux Kernel の tarball 展開→make menuconfig→make(途中で中止しています)です。
動画では全部で 2500 個のブロック表示していて、監視している領域は 8GB なので、1個 3MB くらいです。水色が Read アクセス、ピンク色が Write アクセス、R/W が重なったときは紫になります。
いろいろアクセスパターンを見てみると、mkfs.ext2 とか mkfs.ext3 は流れ星みたいで綺麗だなーとか、ジャーナル FS はあまり動きがなくて面白くないなー、とか。監視していると I/O 速度が遅くなりすぎて欠伸が出ますけどね。
ローレベルプログラムを Java で書くのはしんどいし、GUI を C で書くのはもっとしんどい。ってことで、ローレベル側(C)と GUI(Java)で分離することにしました。
で、ふと疑問が沸いたのですが、C で書いたプログラムから Java で書いた GUI プログラムにバイナリデータを送るときって、どうやって渡すのが一般的なのでしょう?
あと x86 の場合は C と Java でエンディアンが異なる(C はリトル、Java はビッグ)ので、その変換も必要ですが、どっちでやるのが良いのでしょうね??
とりあえず性能無視で C 側でビッグにひっくり返して、通信はソケット(TCP)を使っていますけど、C 側がとても忙しそうで、性能が悪いです。やることが少ない Java 側に押し付けるのも手か。
久しぶりに Java で Swing 使って GUI を書きました。Swing は画面設計用のツールがなくても、GUI をお手軽に記述できて、非常に便利だと思います。
…ですが、私の場合 LayoutManager の理解がヘボいせいか、やたらズレたり、妙にデカくなったり、思い通りに配置できません。実行して画面を見ては「違う…、何かが違う…!」となってばかりでもどかしいです。
どうも訓練が足らんような気がするので、もうしばらく格闘というか、修行してみます。
Sun のサイトにあったコンテンツは、Sun を買収した Oracle のサイトにどんどこ移されているようですが、以前とは違う形になっていることもあるようです。
今一番困っているのが、Sun が公開していた Java の API ドキュメント(日本語版)が見られなくなっていることです。Oracle は Sun と同じように公開してくれていないみたいで、路頭に迷ってしまいました。
API ドキュメントの tar アーカイブ(なぜか非圧縮)が載っているところは見つけましたが、今のところ Oracle のサイトで参照できる場所が見つけられていません。Java 2 SE 1.3 や 1.4 はまだしも、Java 6 は今もアップデートが続いている現役なのに、困ったなあ。
Oracle がこれからサイトのどこかに置いてくれることを祈りつつ、それまでは不便なのでこのサイトにコピーを載せておくことにしました。
Java 2 SE 1.3 API 仕様
Java 2 SE 1.4.0 API 仕様
Java 2 SE 5.0 API 仕様
Java 6.0 API 仕様
これって勝手に載せていいのかなあ?ま、アーカイブ自体は Oracle が配っているわけだし、文句が来たら来たときで考えましょう…。
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2021.
Powered by PHP 5.2.17.
using GD bundled (2.0.34 compatible)(png support.)