先日、WEBカメラなどUVC規格のカメラを使用する案件を行いました。
いつもはUVCカメラのアクセスはOpenCVで行っていたのですが、OpenCVで露光やフォーカスなどのサポート有無や値範囲の取得方法が分からず(対応いていない?)、しかたないのでDirectShowを使用しました。
DirectShowのCOMオブジェクトを直にアクセスして操作するのはなかなか大変でしたが、良い経験になりました。
ライブラリ化を行ったので今後の案件では楽に使用できそうです。
TextBoxコントロールのTextプロパティなどはプロパティウィンドウで複数行入力が可能です。
以下の画面のように右端の下矢印ボタンクリックで複数行用の入力ウィンドウがポップアップします。
今回、これと同じ挙動を自作のプロパティで行いたく、調べた結果、以下のように属性指定すると複数行入力が行えることがわかりました。
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(System.Drawing.Design.UITypeEditor))]
public string Text {
get => _Text;
set {
...
}
}
若手育成の目的で、先月からペアプログラミングを始めました。
本来は常にペアプログラミングを行なうのが良いのでしょうか、まずは週に数回行ってみて様子を見ています。
それでも、余裕が無くてなかなか時間が取れていないです。
弊社で開発している、ある案件のVisualStudioソリューションを開くのが異常に遅い問題があり、
てっきりプロジェクト数が100個くらいあるのでしかたがないと諦めていたのですが、
原因がわかり速くなりました。
問題は「Microsoft Visual Studio Installer Projects」で作成したインストーラプロジェクトでした。
インストーラプロジェクトを含んでいるとVisualStudioソリューションを開いていからマウス操作がまともに行えるようになるまで1分くらいかかっていたのですが、
インストーラプロジェクトを省くとマウス操作が数秒で行えるようになりました。
今は、ソリューションに空のダミーインストーラプロジェクトを含むようにし、インストーラを作成するときだけソリューションファイルを置換してダミーインストーラプロジェクトから本番インストーラプロジェクトに切り替えるようにしました。
もっと早くに気づけばよかった。
C#でファイルが開かれてロックされているかを取得したかったので.netを調べたが、どうも無いみたい。
無いものは自作。FileInfoクラスのIsLocked拡張メソッドを社内ライブラリに追加しました。
(どこかのサイトを参考に作成したのですが、どこか忘れてしまいました。)
使用頻度は少ないですが、なにかの役にはたつでしょう。
public static bool IsLocked(this FileInfo file) {
if (file == null) return false;
if (file.Exists.Not()) return false;
try {
using var _ = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
} catch {
return true;
}
return false;
}
iPhoneアプリの開発を今後行っていくため、初めてmacをさわりました。
今までほぼWindowsしか扱ってこなかったので、これまでの常識とは異なることが多く大変ですね。
どうにかこうにかテレワークで開発が行える所まで準備ができ、少しずつ慣れていっているところです。
新しいことを学ぶのは大変ではあるものの楽しくて良いです。
時間が無限にあれば良いのですが、そうは行かないのでまずは既存の開発を前倒しして、早いことiPhone開発を初めたいところです。
社内ライブラリを改造し、.net5などの.net core系で動作するようにしました。
社内ライブラリは.net frameworkで作成されています。
本来であれば.net coreに移行するのが良いのですが、それはなかなか大変です。
とりあえずは.net frameworkのままとして、.net coreプロジェクトで使用しても正しく動作するように改造を行いました。
今までの単体テストも全てパスしましたので、とりあえずはこれで当分なんとかはなるだろうと思います。
いずれは、.net coreへの完全移行も考えないと行けないですが、少なくとも長期サポート版の.net6が出てからですね。
今進めている案件で初めてPostgreSQLを使用しました。
いつもはSQLServerを使用することが多いので、下調べから始めましたがなんとか使用できるようになりました。
管理ソフトはHeidiSQLを使用しています。特に問題なしです。
C#のライブラリはEntityFramework6.Npgsqlを使用しています。EntityFrameworkはシンプルで良いですね。
思っていたより敷居が低くで良かった。