2013年7月11日木曜日

TortoiseGitを使用中にsys$commandファイルが生成される。


自分の会社ではバージョン管理にSubVersionを使用しています。


リポジトリは社内サーバにあるのですが、

社内のサーバにアクセスできないとバージョン管理できない状態になるため、
出先や外出中は困っていました。

そのため、最近は分散型リポジトリのGitで自分のPCにローカルリポジトリを作成し、

git-svnを使用して社内のリポジトリにコミットするようになりました。
Gitの使い方についてはまだまだ勉強中です。
SubVerisonからGitに移行する為のセミナーとかあると嬉しいんだけどなぁ・・・

さて、社内のリポジトリにコミットする際、TortoiseGitを使用しているのですが、

フェッチやコミットを行う毎に「.git」のあるフォルダに
「sys$command」という0kBのファイルが生成されて困っていました。

そこで調べてみたところ、以下のページを発見!

https://code.google.com/p/tortoisegit/issues/detail?id=1011

どうやらGitの方に問題があったようですね。


C:\Program Files (x86)\Git\lib\perl5\5.8.8\Term\ReadLine.pmの217行目を

} elsif (-e "con" or $^O eq 'MSWin32') {
から
} elsif (-e "con" or $^O eq 'MSWin32' or $^O eq 'msys') {
に変更すると。
そしたらファイルが生成されなくなりました。さらば、sys$command!

<あとがき>

今期のアニメはホモホモしいのが多い気がするんだが、トレンドなのか?

2013年7月10日水曜日

FTDIドライバのアンインストールをC#から行う方法


現在、.NETアプリケーションで、シリアル通信を行うアプリをよく扱っており、

そこで出てきた問題点についてまとめてみようと思います。

USBの機器を使っていくと、デバイスドライバが機器ごとに当たっていきます。

最初の頃はCOM4とかCOM12とか可愛いもので済みますが、
COM120とか増えていくと厄介なものになっていきます。
COMポートの最大数は256(※)までの為、適度にお掃除してあげる必要があります。

※参考 http://support.microsoft.com/kb/100111/en-us


方法として考えたのは以下の3つです。

  1. デバイスマネージャから削除する
  2. ドライバに関係するファイルやレジストリを削除する
  3. 別のアプリを使う
1.は確実でしょうが、いちいちデバイスドライバ→削除を行わなくてはならずめんどくさい。
2.はアプリに組み込むことができますが、ドライバ関連の勉強に時間がかかる。

本当は2.を選びたいところですが、早く対応する必要があったため、今回は3.を使用しました。


今回ドライバの削除に使用したものは

FTDI社の「CDM Uninstaller 1.4」という無償のアプリケーションです。
(ライセンスに関しての記述がどこにもないのが気になる)
http://www.ftdichip.com/Support/Utilities.htm

このアプリケーションはGUI版とCUI版が配布されており、

普通ならGUI版でいいと思いますが、
CUI版を用いることでアプリケーションと連携させることも容易にできます。

例えば、アプリケーションからFTDIのRS232RLドライバを削除させる場合は、

var psInfo = new System.Diagnostics.ProcessStartInfo();
psInfo.FileName = ExePath; // CDM Uninstallerのファイルパス
psInfo.CreateNoWindow = true;
psInfo.UseShellExecute = false;
psInfo.Arguments = "0403 6001 -l"; // FTDIのRS232RLドライバを削除
var p = System.Diagnostics.Process.Start(psInfo);
p.WaitForExit();
p.Close();
となります。
ログ用のテキストも出力されるのでなかなかありがたいアプリです。
ただ、CDM Uninstallerは管理者権限を必要とするため、注意が必要です。

<あとがき>

きんいろモザイクがなかなかにブヒれる。