そこにシビれる!あこがれるゥ!
いや,なんのことはない。ウィンドウ分割の「Split Vertically」「Split Horizontally」がキーバインド可能だってことに,ついさっき気がついただけだ。
Split Vertically | Alt+W,V |
Split Horizontally | Alt+W,S |
Unsplit | Alt+W,C |
Goto Next Splitter | Alt+W,Alt+W |
できることなら,Ctrl+Wに充てたいところなのだが,IDEAではCtrl+W(Select Word at Caret)は大事なキーなので,やむなくAlt+Wにした。
これのなにがシビれるのかって言うと,キーバインドがよりいっそうvimに近づいたからに他ならない。
ああ,ホントウにvi指(vim指?)でよかったと思う希な瞬間であるな。:-)
ちなみに,IDEA+IdeaVIMの組み合わせによるvimの再現度合いは,素晴らしいの一言に尽きる。あんまりスゴイんで,この際だから更にvim風にしようと,こんなキーバインドにしている。
Declaration | Ctrl+] | タグジャンプと言えば,Ctrl+]でしょ。 |
Back | Ctrl+T | Ctrl+]で移動したらCtrl+Tで戻るのが当然だ。 |
Down | Alt+J | どうでもいいようで,この2つはすごく大事。 |
UP | Alt+K |
特にカーソルのUP, DownをAlt+J, Alt+Kにバインドできるのがイカす。これのお陰で,viモードが無効になるコードアシスト中は,Alt+J, Alt+Kで候補を選ぶことが出来るのだ。
vi指でJavaやる人にとって,IDEA+IdeaVIMは神様からの贈り物以外の何ものでもないな。こんなIDE他に知らない。:-D
#最近だと,HTMLやCSS,JavaScript,ふつーのXML文書も編集できるから,別にJava限定ってことはないけどね。
JavaでThreadを強制終了する方法はないものだろうか...
多分無い。:-D
Winstone調べてたときに,わざと無限ループするサーブレットを動かして,監視ポート経由でシャットダウンできるかどうか試してみたら,ちゃんとシャットダウンできたんで,もしかして出来るかな?と思った次第。
でもそれは単なる勘違い。Winstoneの実行スレッド(RequestHandlerThread)は,Thread#setDaemon(true)となっているので,たとえそのスレッドが無限ループ状態に陥っていたとしてもシャットダウン・プロセスの邪魔をしないというだけだった。orz
やってみたかったのは,非同期処理とかってワケじゃなく,ユーザプログラムを監視可能なスレッドで実行したかった。コードで書くと,こんな感じか。
public class Executor implements Runnable { private Command command; public Executor(Command cmd) { command = cmd; } public void run() { cmd.execute(); } } public interface Command { void execute(); } ---- 起動方法 ---- Thread thread = new Thread(new Executor(new SomeCommand())); thread.setDaemon(true); thread.start();
そこで監視だけでなく,管理もしてみたいなぁと,たとえば「タイムアウト越えたら強制終了させる」とかだ。でもね,Thread.interrupt()を送ったとして,だれがInterruptExceptionを受け取るのか?
この実装では誰もいない。orz
グレースフルにスレッドを終わらせようと思えば,「Two-Phase Termination」あたりを利用するんだろうけど,実行される側(Command)は,そんな都合知らんだろうし。そもそも,タイムアウトだとか無限ループで暴走状態にあるスレッドをグレースフルに終わらす必要もないだろとか思いつつも,決定打にいたらずだった。
なお,禁断の秘術であるThread.stop()を使うと,無限ループ状態だろうと見事に止めてくれる。一瞬,これでもいいんじゃないかと思ったけど,あたし自信,スレッドに対する理解が甘いので,もうしばらく調べてみようと思う。
#それに,どうしても実現したいワケでもないし。
ps.
Java5から登場したExecutorServiceも使ってみたんだけど,これのshutdownNow()も運が良かったら止まる程度でしかなかった。でも,Thread使うよりお手軽なのは確か。
Java並行処理プログラミング
Java並行処理プログラミング ―その「基盤」と「最新API」を究める―
- 作者: Brian Goetz,Joshua Bloch,Doug Lea
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/11/22
- メディア: 単行本
- 購入: 30人 クリック: 442回
- この商品を含むブログ (174件) を見る
上記のことを試している時に,手元に置いてた本。
これはこれで良い本なんだけど,理解力が足りなくて本屋で結城さん本を立ち読みしたから,最初にコッチを買うべきだったなぁと,ちと後悔。
#両方買えば良いんだけどね。
増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/03/21
- メディア: 大型本
- 購入: 15人 クリック: 287回
- この商品を含むブログ (206件) を見る
疑似Expose
WindowListerはフリーなんだけど,Exposeがいまいちピンとこない。
ExposeだけだとTopDeskのほうが好みなんだけど,999円ってビミョーだな。
しばらく試用してみて,気に入ったらポチっとしよう。