最近、何でもかんでも「見える化」するのが流行っていますね。
私も波に乗って「今、ブロックデバイスのどこにアクセスしてるか?」を見える化してみました。見た目としては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の理解がヘボいせいか、やたらズレたり、妙にデカくなったり、思い通りに配置できません。実行して画面を見ては「違う…、何かが違う…!」となってばかりでもどかしいです。
どうも訓練が足らんような気がするので、もうしばらく格闘というか、修行してみます。
Eclipseのエディタは、変数名をカーソルでポイントすると、変数の型やJavadocが自動的に出現します。とても便利なのですが、誰も定義していない変数(変数名をtypoしてるとか)をポイントしてしまうと、何かを探しに行ったままEclipseがフリーズします。
特にネットワークドライブなどI/Oの遅い場所にプロジェクトを置いていると、現象が顕著に発生します。長いときは十秒くらい反応が返りません。カーソルを動かすたびに誤爆して固まるので、相当イライラします。
今まで我慢して使っていたのですが、いい加減ムカついてきたので原因を探ってみました。
Editorの設定を調べると、どうも固まる原因はHoversにあるようです。設定はメニューから辿ってWindow - Preferences - Java - Editor - Hoversにあります。
初期状態だと、
Combined Hover(右側空欄)
Externalized String(Ctrl+Alt)
Source(Shift)
が選ばれていると思います。下記のような意味です。
Eclipseが固まるときは特にキーを押していませんから、Eclipseが固まる原因はCombined Hoverですが、これは名前の通り複数の機能の複合なのでもう少し絞込みが必要です。
Combined Hoverの説明を見るにリストの上から順に試してうまく行ったやつを表示するだけらしいので、Combined Hoverのチェックをはずして、リストの上から他の機能を一個ずつ試してみます。
上から試した結果、Eclipseを固まらせる真の原因はHoversのProblem Descriptionだったとわかりました。さらに言うとProblem Descriptionの「変数が未定義エラー」の表示だけが非常に低速です。「クラスが未定義エラー」や「スペルチェッカの警告」の表示はかなり高速です。うーん、何が悪いんでしょうね?
Combined HoverをOFFにするとエディタが使いづらくなるので、良く使う機能(たぶんJavadocでしょう)を単発でONにして、Problem Descriptionは暴発しないようにキーを押したときのみ発動させるように、設定を変更すると良いと思います。
個人的にはSourceは要らないので、
Problem Description(Shift)
Externalized String(Ctrl+Alt)
Javadoc(右側空欄)
としています。
Shift, Ctrl, Altで2^3 = 8通り(何も押さない場合を含んで)の組み合わせができますが、意外とHoverと組み合わせられるキーは少ないです。
Shift | Ctrl | Alt | 説明 |
---|---|---|---|
× | × | × | 何も押さずにポイントしたときがこれ。 |
× | × | ○ | 使えるが、キーを離すとメニューにフォーカスが移ってしまって使いづらい。 |
× | ○ | × | 使えません、Eclipseのエディタの機能と衝突していてHoverが発動しません。 |
× | ○ | ○ | 使える、デフォルトではExternalized Stringに割り当て。 |
○ | × | × | 使える、デフォルトではSourceに割り当て。 |
○ | × | ○ | 使えるが、キーを離すとメニューにフォーカスが移ってしまって使いづらい。 |
○ | ○ | × | 使える。 |
○ | ○ | ○ | 使えるが、3つも押すのが面倒くさい。 |
以上から、使いやすいのは、(何も押さない), Shift, Shift + Ctrl, Ctrl + Altの4つくらいですかねえ。
< | 2012 | > | ||||
<< | < | 03 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
合計:
本日: