最近、何でもかんでも「見える化」するのが流行っていますね。
私も波に乗って「今、ブロックデバイスのどこにアクセスしてるか?」を見える化してみました。見た目としては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の理解がヘボいせいか、やたらズレたり、妙にデカくなったり、思い通りに配置できません。実行して画面を見ては「違う…、何かが違う…!」となってばかりでもどかしいです。
どうも訓練が足らんような気がするので、もうしばらく格闘というか、修行してみます。
この記事にコメントする
目次: Java
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が配っているわけだし、文句が来たら来たときで考えましょう…。
この記事にコメントする
wiki
Linux JM
Java API
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年
2018年
2019年
2020年
2021年
2022年
2023年
2024年
2025年
過去日記について
アクセス統計
サーバ一覧
サイトの情報