Home > Archives > August 2007

August 2007

なにがわるいのやら?

GCC の 4.X 系列を使いたいのでコンパイルしたら 5回連続でブルースクリーン… 悪名名高いウイルスバスターを疑いやつを止めてみてもブルースクリーン.cygwin が古めなのが悪いのかと最新のにアップデートしてもブルースクリーン.GCC のバージョンがいけないのかと 4.1.1 と 4.2.1 を試すもブルースクリーン.結局何が悪いのかさっぱりわからんけどオプション変えてまたコンパイルしよう.

ひさびさにあなごる

print fileLook and say とをやってみた.print file の方は exec 禁止って書いてないから外部コマンドを e オプションで呼ぶ.チートといえばチートな気もするけど… 無駄がないので気にしない.Look and say は入力に 1~3 の3つ以下の連続しかないので以降も性質が保たれる.それを使って楽をすれば sed でも簡単なプログラムが書ける.任意の連続に対応したものなんて書くのが面倒なので無視しとこう.

やっぱ SAX でやった方が…

xml を読んで DOM に似てるけど DOM ではない内部構造を構築するのに一度 DOM に変換してから内部構造に変換するのも馬鹿らしいよなぁと思ってきた.SAX で内部構造作るようなビルダ書いた方が速いよなぁ.でも面倒かも.ついでに DOM でないとエンジンとのデータの受け渡しできないから結局 DOM からの変換も… さて,労力から考えると SAX は無視した方が良い気もするけどどうなんだろ.というより,DOM の変換プログラム書いたら DOM の SAX ビルダと融合して内部構造の SAX ビルダが出てこないかなぁ?

そういえば

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 使ってローカルに手動でてきとうなリポジトリを作り… もう少し使ってみないと使えるのかどうかよくわからん.

Home > Archives > August 2007

Search
Feeds

Page Top