単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 単体テストの考え方/使い方を読んだ。タイトルが単体テストだが、手動テスト・結合テスト・E2Eテストまで含めたテスト全般に適用できる普遍的な考え方を開発者目線で述べており、何をど…
cactuaroid.hatenablog.com これの続き。チャットサーバとして、OPC UAサーバのサンプル実装をした。その際UA-.NETStandardのサンプルや各所に散らばっている資料を理解する必要があったので、それらのメモを含めて実装ガイドとしてQiitaに記事を公開した。 …
イベント・イベントハンドラであっても、asyncメソッドの実装時と考え方は同じだが、イベントという皮を被ると少しわかりにくくなるのでまとめておく。 【Case 1】イベントソースは、イベントハンドラの完了を待機して抜けたい # awaitしたい? イベントソー…
BOM無しのUTF-8で書かれた複数のソースファイルをVisual StudioからTFSにチェックインしていたが、これをエディタで開いたり別ブランチへマージしたりすると、一部のファイルだけなぜか勝手にShift_JISに変換されてしまい、UTF-8のつもりで扱うと文字化けし…
戻り値の型がTのジェネリックメソッドを実装した時、return (T)(object)valueのようなキャストを書いてしまうと、値型ではボックス化⇒ボックス化解除が行われてしまう。そもそもこういうコードを書くならジェネリクスじゃないだろという話は置いといて、ボッ…
Windows 10のバージョン1909で、Windows Updateで届いた2004へのアップデートをしようとしたところ、再起動が何度かかかった後にブルースクリーン(page fault in nonpaged area)になり、電源再投入すると復旧されて1909のまま、という状態になった。1か月…
Dictionary<TKey, TValue>へ入れたり取り出したりするとき、こんな感じになっている。 参考:https://referencesource.microsoft.com/#mscorlib/system/collections/generic/dictionary.cs,bcd13bb775d408f1 もしkey1.GetHashCode()の返すハッシュが途中で変わってしまった</tkey,>…
文字と背景色のコントラスト比について、ISO/WCAGで推奨値が定められている。解説ページは色々あるが、とりあえずWCAG2.0の日本語訳解説はこちら。ISO-9241-3及びANSI-HFES-100-1988に基づいているとされている。 達成基準 1.4.3 を理解する | WCAG 2.0解説…
SQL Serverで特定のテーブルに変更が発生したことを検出して色々したい。できれば、どの行が追加/編集/削除されたかが欲しい。 まずクエリ通知というのが見つかる。クエリの結果に変更がある場合に通知してくれるが、どの行に変更があったのかは分からない代…
お手軽にDeep Copyを実現するなら、BinaryFormatterが使われることがあるが、かなり処理時間がかかるため、速度を重視するなら明示的にDeep Copyを実装する必要がある。ぶら下がっている型全てで明示的に実装する必要はあるが、大抵は特に問題なく実装できる…
たまにしかやらなくてTFSと勝手が違ってていつも調べるのでメモ。 オリジナルのリポジトリからFork(自分のリポジトリを作成)して、自分のリポジトリからClone(ローカルへ取り込み)する。 自分のリポジトリでPull Request用にブランチを切って作業する。T…
System.Linq.Asyncのバージョン4.0.0で、LINQの各メソッドに非同期ラムダを受けて待機するバリエーションである~Awaitシリーズが追加された。以前までは自分で用意する必要があって微妙でIssueもいくつか立っていたが、パッケージに含まれるようになったの…
2022/12/19追記 試した結果をまとめました。 qiita.com OPC UAサーバを開発するために情報を集めた。C#アプリケーションのRPC的なAPIを公開することが念頭にあるので、C言語向けだったりPLC向けだったり情報を垂れ流すのみ系は無視している。 OPC UAサーバを…
COMポート番号を変更したい場合、通常は以下のようにデバイスマネージャから詳細設定画面を開く必要がある。C#のアプリケーションでRS232C接続をする場合、RS232C-USB変換アダプタを使うのが一般的だと思うが、この時COMポート番号が不定になってしまい、環…
Google Apps Scriptで毎日特定時刻にスクリプトを実行しているが、急に「その操作を実行するには承認が必要です。」のエラー通知が来るようになった。ちょうどGoogleアカウントのパスワードを変更した日だったのでそのせいもあるかもしれない。 Google Apps …
関数の入力値の取りうるパターンが決まっているならあらかじめ計算しておくと速いよネタ。 Method Mean Error StdDev string経由 223.3938 ns 2.5656 ns 0.1450 ns 小数部を計算して加算 53.5654 ns 8.8778 ns 0.5016 ns 小数部を計算して加算2 1.3613 ns 1.…
X DO NOT assign instances of mutable types to readonly fields. A mutable type is a type with instances that can be modified after they are instantiated. For example, arrays, most collections, and streams are mutable types, but System.Int32…
ソースコードをコピペして回るのだるくなったのでdll配布するためNuGetで公開。使ってみてね! www.nuget.org cactuaroid.hatenablog.com さくっとdll作って終わりかと思いきや、思わぬ伏兵がいた。元々Microsoft.VisualStudio.QualityTools.UnitTestFramewo…
dllやexeをReleaseビルドしても、アセンブリ内部にはビルド時のパスの情報が残っているのをご存じだろうか。試しにバイナリエディタで開いて、パスの一部でも検索してみてほしい。ビルド時のpdbファイルのパスが記録されている。 アセンブリを匿名で一般公開…
本記事はFunctional Programming in C#を読んで私が重要と感じた部分を列挙したメモです。読みながらなるほどと思った点だけを列挙するため網羅性はありません。書籍の英語は平易でコードや解説も丁寧で読みやすいので興味ある方は是非書籍をお読みください…
本記事は書籍「誰のためのデザイン?認知科学者のデザイン原論」を読んでメモしておきたかったことを箇条書きにしたものです。400ページほどありますが読みやすく事例も豊富で良い入門書なので、デザインを学ぶならとりあえず読んでおきたい一冊です。 誰の…
データを表現するコントロール2種 ContentControl: 単一の内容(Content)を表現するコントロール。(例)Button Label TabItem etc. ItemsControl:コレクション(Items、ItemsSource)を表現するコントロール。(例)ListBox コントロール自体(表現する…
1つのアドレスが1バイトの値を格納し、リトルエンディアンで4バイトで1つの整数を表しているとする。つまりInt32的な。DWORD的な。 アドレス 値(10進数) 1 17 2 39 3 0 4 0 (0 * 232) + (0 * 216) + (39 * 28) + (17 * 20) = 10001 ここでアドレスの値が-1…
Googleスライドにプログレスバーを入れたくなった。調べてみると一応アドオンとして提供されているものもあるが、自由度が欲しいのでGASで作ってみた。横長のテーブルをページ数分だけ列分割し、ページ数に合わせて塗りつぶすという方法をGASで自動化した。 …
生のバイト配列を文字列に変換したい場面は割とある。ログを残したいときとか。いくつもの方法があるようだが、単純に変換した場合と速度にこだわった実装とでどれくらいの差があるのか実際に確かめてみた。 Method Mean Error StdDev Gen 0/1k Op Gen 1/1k …
多言語対応のアプリケーションを開発している場合に気を配らなければならないのが.ToString()などによる文字列変換時のカルチャ指定。例えば小数点はピリオドで桁区切りはカンマと思いきや、国によっては逆だったりするので要注意だ。パース時のカルチャ指定…
BinaryFormatterによってあるオブジェクトのグラフ全体をバイト配列にシリアライズできることを利用して、深いコピーと深い同値性判定を実装できる。ただし対象の型には[Serializable]属性を付けておく必要がある。 例えばある状態のオブジェクトを生成する…
以下のコードを実行すると、デシリアライズの際にはコンストラクタを通らないことが確認できた。新たなオブジェクトを生成しているのにコンストラクタを通らないなんて! だからこそ、getterのみのプロパティも復元できてしまうのだろう。JsonConvertではこ…
resxファイルで定義された言語リソースをアプリケーションの各所で表示するが、実際に画面に表示されているのがどのキーの言語リソースなのか確認したい時がある。例えば、言語リソースの量が膨大で同じ値のキーが複数あったり、あるいは2つのキーの値が日本…
本記事は書籍「A Philosophy of Software Design」の論点をまとめたメモです。内容の詳細や結論までは含みません。論点について興味ある方は是非書籍をお読みください。英語ですが170ページほどで比較的読みやすい文体で書かれています。 A Philosophy of So…