そういえば、業務外では全くプログラミングに触っていなかったな、と思ったので、最近コーディングの練習も兼ねて、業務外でも少しでもいいからプログラミングに触ろうと思いました。
最近DiffMatchPatchというライブラリを使用する機会があったので、Winmergeのように2つのテキストファイルの差分を表示するWindowsフォームコントロールを制作してみようと思いました。
現時点ではまだ形になるものはできていませんが、少しずつ機能を完成させていければ、と思います。
作成したアプリの各処理のCPU使用量を知りたい場合、VisualStudioがインストールされている環境ではパフォーマンスプロファイラを使用すれば良いのですが、本番環境の本番運用ではそうはいきません。
というわけで、C#でCPUパフォーマンス解析を行う機能を実装しました。
詳細は記載しませんがざっくり説明すると、ProcessThreadインスタンスのTotalProcessorTimeプロパティでプロセッサを使用した時間の合計値が取得できるので、各処理開始から終了までのTotalProcessorTimeの差を積算していき、
各処理ごとのCPU使用量を集計することで実現できます。
この集計結果を定期的にログファイルに出力しておけば、問題発生時や性能改善時の役立ちそうです。
こんにちはmtjです。
色々な展示会にいきますが本当にデジタル関連の進歩は早いなと感じます。
一昔前ならARMで低発熱、低電力で小さいPCがという話だったのですが
現代はクラウド、無線技術の進歩でリモートで操作、もしくはリモート、クラウドに演算機能を配置し
小さい端末で現場に反映する等を行っています。
intelのRealSensもそうですが人のボーン検知も今では普通のスマホのカメラで可能になったり
一般の人でもそういった物が触りやすくなっています。
こういった技術が展示会等でも溢れているとソフトを扱う側、特に学生はいろんな技術を簡単に扱える時代なんじゃないかと感じます。
なんでも扱える反面 何も作らなくても技術が使える分どう扱うかの発想が大事になってきますね。
ソフトを作る側でも既存の技術をどう上手く使うかというのが課題な気がします。
0から作っていては予算、時間も足りません その時に既存の技術を使用して時間も予算も低く抑えるのがソフト技術者の腕になってきているのだと感じます。
弊社で最も規模の大きなプロジェクトはWindowsFormにて開発が行われています。
先日、そのプロジェクトにてコントロールを別ウィンドウ化する処理を
既存の実装を参考にして実装したのですが、
予想以上に手軽に出来て驚きました。
以下のようにするだけでした。
// 別ウィンドウとなるフォームを作成
var window = new Form {
Owner = this.ParentForm,
Width = this.Width,
Height = this.Height
};
// 別ウィンドウ化したい対象コントロールの親コンテナに新規ウィンドウをセット
// (別ウィンドウに移し替える)
targetControl.Parent = window;
// 別ウィンドウクローズ時に親コンテナを元に戻すように
window.FormClosed += (_, _) => {
targetControl.Parent = this;
};
window.Show();
親コンテナのSetterは参照を移し替えるだけかと思い込んでいたのですが、
配置も移し替えるのですね。
便利に作られていてありがたいです。
最近、先輩や上司から仕事を頼まれたとき、仕事に取り掛かる前に、説明してもらった作業内容・作業手順をエクセルにまとめ、それを依頼者に見せて自分のまとめた内容が合っているかどうか確認して頂く、ということを行っています。
また、そのエクセルは仕事を依頼した人と共有し、必要に応じて、作業中にも作業内容・手順の修正・加筆を行っています。
説明してもらった作業内容を自分が正しく理解しているかを見てもらい、
間違っている部分や足りない部分があれば指摘して頂くことで、
私と仕事を依頼した人との認識をすり合わせることができます。
このことで、作業中に私と仕事の依頼者の認識の違いによるミスや手戻りが発生するのが少なくなっていると感じているので、これからも続けていこうと思います。