No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 20 | 21 | 22 |...| 57 | 58 | 59 || Next»

そういえば

boost::lambda で関数の戻り値の型を取るのって,F を関数の型, A を引数の型として

typedef typename F::template sig< boost::tuples::tuple< boost::tuples::null_type, A> >::type R;

とやるので合っているのだろうか? 何となく簡単に型を取る方法がある気がするのだけどうまく見つからない.引数の A 型を,unit を取って A を返す型 unit -> A と解釈して渡しているけど正しいのかな? というか,型を表現するのにタプルを使っているという解釈の時点で間違ってたらアウトだけど… ま,動いてるからいいか.

複数キーボードの入力を複数のウィンドウに割り振って1台のPCで同時プログラミング?

合宿の縛りであるところの「チームでPC1台」への対抗策としてキーボード毎にイベントの送り先ウィンドウを変えるマルチキーボード環境を作ろうと思った.適当な理由により OS は WinXP で使う言語は C# に固定.これができれば1台のPCで複数人が同時にプログラムを書けて力強い.仕組みとしては, Raw Input 使って入力デバイスの識別できるキー入力メッセージを取得し,そのメッセージを指定されたウィンドウにリダイレクすればうまく動きそう,と.

でも,実際に作ってみると調査不足のため二つほど問題が出てきて使い物になんかった.一つ目としては,Raw Input はフォーカスなしでもメッセージ取得できるのだが,このメッセージを潰すことができずにフォーカスを持ったウィンドウにメッセージが飛んでしまう.なので,リダイレクト先がフォーカスを持っているとキーが二重に入ってしまったりする.メッセージを潰す一つの手段として,Low-Level Keyboard をフックしてチェインをぶった切るというのがあるのだが,Low-Level のフックが RawInput の前に起こるのでこれはつかえない.C#だとこのフック以外はグローバルにできないのでこの時点で手詰まり.適当なウィドウを用意してそこにフォーカスを固定しておけば何とかなるけど… 美しくない.二つ目は致命的で, Shift/Alt/Ctrl の押下状態が全キーボードで共用となってしまうみたい.つまり,どれかでShiftを押しとくくと,全ウィンドウで Shift が押された状態になるらしい.キー入力メッセージの送信で修飾キーの情報を入れてないのが原因かもしれないけどなんとなく Windows が押下状態を管理している気がするのでどうにもならん気がする.もう少し試してみやうかな?

VS.NET + Subversion

AnkhSVN という addin で VS.NET でも subversion によるバージョン管理ができるらしい.VSS (Visual SourceSafe) とかいう Microsoft 純正のソフトはひじゃうに高価なのでフリーで使える svn が利用できるこいつはありがたい.svn は cygwin で入れてるので AnkhSVN をダウンロードしてインストールするだけで準備完了.あとは適当にリポジトリ作ってソリューションごとリポジトリに追加するだけ.新しいリポジトリを AnkhSVN から作れるのかは今のところよくわからん.ので,svnadmin 使ってローカルに手動でてきとうなリポジトリを作り… もう少し使ってみないと使えるのかどうかよくわからん.

JTree で一部のノードだけ編集可能ってできるのだろうか?

JTree のメソッドでは全体を編集可能とするかどうかしか設定できない.CellEditor の isCellEditable をオーバロードして判定しようにもこのメソッドに渡させるオブジェクトが JTree とかいってて編集対象ノードがわからない.shouldSelectCell で true を返せば編集対象ノードが選択されるのだが,このタイミングが編集可能性の判定の前にないらしくうまくいかない.最終手段として編集終了時にオブジェクトを返す getCellEditorValue() でキャンセルしてるけど… さて正しいやり方はどうするのだろうか?

TopCoder SRM 357 Div 1

一問目二問目ともに問題を読んですぐにアルゴリズムはわかったのだが… 一問目はDPの最後で最小の答えを求めるための変数の初期化を間違い,二問目は強連結成分分解の一発目のDFSで頂点をpreorderで積んだ.どちらもサンプル通りやがってからに間違いに気付かず零点.あー,だめだこりゃ.

JTree ではまる

root を指定するコンストラクタで生成した後に root の子供を removeAllChildren() で消しても画面上には子供が描画されたままに残ってしまう.さてどうしたものか? 今回は木を丸ごと置き換えればいいので Model ごと切り替えて乗り切ったがいま一つ使い方がわからん.そういや前に使った時はどうしたっけ?

«Prev || 1 | 2 | 3 |...| 20 | 21 | 22 |...| 57 | 58 | 59 || Next»
Search
Feeds

Page Top