先月から常にテレワークになったので、社内プライベートネットワークにVPN接続できるようにしました。
今までは必要なときだけ社内PCにTeamViewerでつないでいましたが、VPNのほうが何でもできて便利ですね。
今までVPNをよく分かっていなかったのでVPN接続出来るようにしてなかったのですが、もっと早くから使っておけば良かったと思ったのと、自分のよく分かっていない技術について知ろうとしなかったことを技術者として情けなく思いました。
先月から常にテレワークになったので、社内プライベートネットワークにVPN接続できるようにしました。
今までは必要なときだけ社内PCにTeamViewerでつないでいましたが、VPNのほうが何でもできて便利ですね。
今までVPNをよく分かっていなかったのでVPN接続出来るようにしてなかったのですが、もっと早くから使っておけば良かったと思ったのと、自分のよく分かっていない技術について知ろうとしなかったことを技術者として情けなく思いました。
C#のお話です。
以下のようなコレクションitemsの各要素にたいして処理を行なう際に、処理内でインデックスが必要な場合はどのようなコードにするのが良いかについて。
var items = new[] { "a", "b", "c" };
レガシーな書き方だと以下です。
いまどきfor文でループしたくないですよね。
for(int index = 0; index < items.Length; index++) {
var item = items[index];
//indexとitemを使用する処理
}
foreachだと以下です。
forよりはマシですが、itemsからインデクサを使用して要素を取得するところが残念です。
foreach(var index in Enumerable.Range(0, items.Length)) {
var item = items[index];
//indexとitemを使用する処理
}
インフォテックの社内ライブラリを使用する場合、IListの拡張メソッドForEachが実装してあるので、以下のように実装できます。
items.ForEach((index, item) => {
//indexとitemを使用する処理
});
上記の方法でだいたいは問題ないのですが、処理をラムダ式で実装出来なかったり、出来ても複雑になってしまう場合、インフォテックの社内ライブラリにIListの拡張メソッドAndIndexが実装してあるので、以下のように実装できます。
foreach (var (item, index) in items.AndIndex()) {
//indexとitemを使用する処理
}
追加した拡張メソッドはとても単純な実装内容ですが、たったそれだけでコードが非常に分かりやすくなっていると思います。
今、弊社では珍しくWEBアプリを作成しています。
いつもはWindowsデスクトップアプリがほとんどですので、WEBアプリ作成に関するノウハウや社内ライブラリが少なく、悪戦苦闘中です。
ですが、新しいことを学習するのはとても楽しく、時間を忘れて没頭してしまいます。
フレームワークは、ASP.NET Core Blazorを使用したかったのですが、既存のDLLの兼ね合いで.net coreでは困難なため、.net frameworkが使用できるASP.NET Core MVCを使用しました。
WEBデザインを行っている兄に質問しまくって何とか形になってきました。
C#などで作成した既存のプロジェクトを .NET Framework から .NET Core へ移植するのに必要な作業量を調べるツールが有ることを知ったのでメモ。
早速、社内ライブラリで試してみたところ、.NET Coreでさポートされていない機能の一覧が合計25箇所表示されました。DataContextとRemotingに関する内容が大半です。
これくらいなら対応できそうです。
あとは参照している別ライブラリ類ですが、どうも.NET Coreプロジェクトから.NET Framework を使用しているDLLが使用できるようなので大丈夫そうです。
試していないですが、以下のサイトなどで出来ているのでなんとかなるのでしょう。
https://qiita.com/soi/items/e1cf2abf9845164bf439
最近、画像処理案件が続いてあり、社内の画像処理ライブラリに色々と機能追加を行いました。
a) ライブラリの64bit対応
b) 画像処理の並列化
c) 欠陥素子補正
d) 色マッチング処理
まだまだ機能追加したいことがあるのですが、時間が足りないです。
無限に開発をしていたいのですが時間は有限なのでしかたないですね。
インフォテックで作成するソフトではログファイルを必ず出力するようにしています。
稼働している設備でなにか問題が発生した場合などにログファイルを調べれば、エラーメッセージ・例外スタックトレース・通信内容・シーケンス状態などが全てわかるようにしています。
これにより問題発生時の原因究明・問題改善が容易になります。
今回、ログ出力に機能追加を行い、エラーメッセージを表示する直前にスクリーンキャプチャ画像ファイルを保存する機能を追加しました。
これにより問題発生時の状況把握がさらに容易になります。
先日もこの機能のおかげで、装置問題発生時のA/D即値や波形が確認できたことで、問題が装置側にあることがすぐに分かり即解決できました。