Subversion svnsync

http://sourceforge.net/projects/win32svn/
リポジトリをまるまるバックアップしたいなーと思い。

svnsyncという便利なコマンドがあった。

全リビジョンをまるまるコピーしてくれる。



コピー(ミラー)先作成
C:\>svnadmin create PROJ


初期設定
C:\>echo exit 0 > PROJ\hooks\pre-revprop-change.bat


コピー元とコピー先の設定
C:\>svnsync init file:///PROJ http://対象サーバー/リポジトリ
認証領域: Subversion
'USER' のパスワード: ******
認証領域: Subversion
ユーザ名: リポジトリユーザー
'リポジトリユーザー' のパスワード: ******
リビジョン 0 の属性をコピーしました。


ミラー処理
C:\>svnsync sync file:///PROJ
リビジョン 1 をコミットしました。
リビジョン 1 の属性をコピーしました。
リビジョン 2 をコミットしました。
リビジョン 2 の属性をコピーしました。
リビジョン 3 をコミットしました。
リビジョン 3 の属性をコピーしました。
リビジョン 4 をコミットしました。
リビジョン 4 の属性をコピーしました。
リビジョン 5 をコミットしました。
。。。。。。。。。。。。。



参考:
http://hnakamur.blogspot.jp/2010/10/windowssvnsyncsubversion.html
http://www.asahi-net.or.jp/~iu9m-tcym/svndoc/svn_svnsync.html

Power Tab Editor 音がずれる?

音符にタブ譜な並びをmidiで鳴らしてくれるPower Tab Editor

作ったり拾ったりなタブファイルを演奏させると、
演奏しつつ譜面のタブが流れテクノで、ギター練習にはいいアイテム。


しかしーうちのXP環境だと
チックタクタクタクチック
な感じなメトロノームで、音が鳴った。


テンポがずれずれずれ


タスクマネージャ開いて、プロセスの優先度上げると多少よくなった。



↓互換モードにしとくと、優先度関係なく動いたのでメモ。


こいつ自体 for Win9x/NT/2000とあるので、あれがあれであれなのだろう。(知らない

仮想マシンの日付、時間を同期させない

仮想マシンの時刻同期機能を無効にする(Virtual PC編)


.VMCファイルをテキストエディタで開いて、
ファイル中央くらいにある

	
		

の次に


        
                false
        
  

を挿入、保存。

こんな設定ができたとは !



期限付きアプリ使い放題じゃないか



デバッグで使いたかったわけだけども。


ファイル名 setdate.bat な空ファイルを作って

date 2008-1-1

だけを記載して適当な場所に保存。

そのファイルへのショートカットをスタートアップにでも入れておけば、
仮想マシンログオン時に、その日付になる。


いいかも。

    • -

イメージ終了時の時間がそのまま保持されるから、どっちでもだった(・・

アタッチでデバッグ

VC2005。
起動しているプロセスであれば、
メニューの[デバッグ]→[プロセスにアタッチ]から選択できるけど


起動していない実行ファイルを、起動時にアタッチ
な方法もあった。


MSDN:方法 : デバッガを自動的に起動する


レジストリ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options


ここに、
アタッチしたいモジュール名のキーを作り、


新規文字列値:debugger
値:vsjitdebugger.exe


として作っておくと

実行されたときに、Just-In-Timeなダイアログが出てデバッガを選択できる。


1. 実行モジュール:AAAからDLL:BBBが呼ばれてて、BBBをデバッグしたい場合
2. AAAをレジストリに追加。
3. デバッグビルドのBBBを置いといて、
4. BBBのプロジェクトを開いておく。
5. AAAを起動後のダイアログで、BBBのプロジェクトを選択する。
な感じ。


AAAを起動元としてデバッグ時、
AAAからBBBが呼ばれるのは追えるんだけど、
AAAから別EXE:CCCが呼ばれ、CCCからBBBが呼ばれた場合にデバッガで追えない場合が。


そんなときに使えた。

利用可能ポートを増やす

http://support.microsoft.com/kb/319502/ja

XPでなんとなく動作確認できた。


デフォルトでは1024-5000を利用可能。


利用可能なポートを増やすには
レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
MaxUserPort (REG_DWORD)を変更。
有効な範囲: 5000-65534 (10 進)


ポートのTIME_WAITの時間を変更するには
レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
TcpTimedWaitDelay (REG_DWORD)を追加。
有効な範囲 :30 〜 300 秒(10 進)


TIME_WAITデフォルトは240秒

可変な個数な引数

void myfunc(int i, char *pc, ...);
ドットを3つ。


可変引数を取得するには〜!
va_arg、va_end、va_startのマクロを利用する。
MSDNva_arg、va_end、va_start


試しにこんな関数で、

void myfunc(int i, char *pc, ...){
	int ikkome,nikome,sankome;
	va_list list;

	//値取り出し開始
	va_start(list,pc);

	ikkome = va_arg(list,int);
	nikome = va_arg(list,int);
	sankome = va_arg(list,int);

	//値取り出終了
	va_end(list);
}

値取り出しを見てみると

myfunc(999,"aaa",1,2,3);
結果↓

myfunc(999,"aaa",1,2);
結果↓

va_argは、
ポインタ移動させて、そこにある値を取って来てるだけだ。


全部intで最後の0までみたいな使い方
myfunc(999,"aaa",1,2,3,4,5,6,7,8,9,0);

	while(1){
		atai = va_arg(list,int);
		if(atai == 0){
			break;
		}
		goukei += atai;
	}

可変個の引数であっても、
引数の個数はマクロではわからないので、指定する必要があるのと
取り出す際の型指定がいるので、何を受け渡されるかを知らないといけない。


printfみたいな書式指定を利用すれば、次のように使えるけども

	char cBuf[1024];
	va_list list;

	//値取り出し開始
	va_start(list,pc);

	vsprintf(cBuf,pc,list);

	//値取り出終了
	va_end(list);
	myfunc(999,"char:%s int:%d","文字列",1234);


vsprintfよりは

	_vsnprintf_s(cBuf, sizeof(cBuf), _TRUNCATE, pc, list);

等を、使うべき。
MSDNvsnprintf_s、_vsnprintf_s、_vsnprintf_s_l、_vsnwprintf_s、_vsnwprintf_s_l


整形後にバッファサイズを超えてしまった場合、_s関数なのでエラーは返ってくる。
(上記のだと、_TRUNCATE指定でバッファサイズ-1まで格納はされる)


が、


sprintf同様
"char:%s int:%d","文字列",1234
を、
"char:%s int:%s","文字列",1234
とすると落ちる。
><