[C#] 拡張メソッド

既存のクラスやインターフェースに対してインスタンスメソッドを追加する。PHPのtraitのように使えるかも。

参考サイト

C# 3.0 の新機能 – C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/ap_ver3.html

[Ansible] assertモジュール

機能

与えられた式が真であることを、オプションのカスタムメッセージで表示する。thatパラメータにwhenステートメントに渡すのと同様の文字列リストを指定する。

使用例

参考サイト

ansible.builtin.assert module – Asserts given expressions are true — Ansible Documentation
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/assert_module.html

[C#] デバッグ時にのみ実行したいメソッドを定義する

条件属性(Conditional属性)を使う方法

次のようにメソッドにConditional(“DEBUG”)属性を付ければよい。

条件付きコンパイル・ディレクティブ(#ifディレクティブ)を使う方法

#if DEBUG~#endifディレクティブにより、デバッグ時にのみ実行したいコードを囲えばよい。

参考サイト

テスト用コードをデバッグ時にのみ実行するには?:.NET TIPS – @IT
https://atmarkit.itmedia.co.jp/ait/articles/0501/07/news097.html

[Ansible] 変数を評価してタスクを実行する

一連の手順をプレイブックに記述しておいて、条件に応じて一部の手順をスキップするようなことをやりたい場合に変数を使うのが良さそう。

参考サイト

Ansible: Playbookの実行条件制御 when の使い方(1) | tacckの積み重ねるブログ
https://blog.tacck.net/archives/101

[C#] null許容型

null許容型

C# 2.0: 実装
C# 8.0: null許容参照型

宣言と初期化

値を持つかどうかはHasValueプロパティで判断できる

??演算子 (null coalescing operator)

??=演算子

参考サイト

null許容値型(Nullable<T> 型) – C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/sp2_nullable.html

[Ansible] 変数による条件付き実行

登録された変数に基づく条件

プレイブックでは、以前のタスクの結果に基づいてタスクを実行したり、スキップしたりしたいことがある。例えば、以前のタスクによってアップグレードされた後にサービスを設定したい場合など。登録された変数に基づいた条件を適用したい場合には以下のようにする。

  1. 先のタスクの結果を変数として登録する
  2. 登録した変数に基づいて条件テストを行う

変数の登録はregisterキーワードを使って行う。登録された変数には、それを作成したタスクのステータスと、そのタスクが生成した出力が含まれる。登録された変数は、テンプレートとアクションライン、および条件付きwhenステートメントで使うことができる。variable.stdoutを使うと、登録された変数の中身の文字列にアクセスすることができる。以下に例を示す。

変数がリストの場合、タスクのループ内で登録された結果を使うことができる。リストでない場合は、stdout_linesまたはvariable.stdout.split()を使ってリストに変更することができる。また、他のフィールドによりラインを分割することもできる。

登録された変数の中身の文字列が空の場合もある。登録された変数のstdoutが空であるホストでのみ他のタスクを実行したい場合は、登録された変数の中身の文字列が空かどうかを確認する。

タスクが失敗したホストや、条件を満足せずにタスクがスキップされたホストであっても、Ansibleは常に全てのホストの登録変数に何かを登録する。これらのホストでフォローアップタスクを実行するには、スキップされたホストに関して登録された変数を照会する(“undefined”や”default”に対しては行わない)。

以下に、タスクの成功/失敗に基づく条件例を示す。失敗した場合でもAnsibleをホストで実行させ続けたい場合にはエラーを無視する必要がある。

参考サイト

Conditionals — Ansible Documentation
https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#the-when-statement

[C#] 匿名メソッド式

匿名メソッド式 (anonymous method expression)

C# 2.0: 実装
C# 3.0: ラムダ式

匿名メソッド式を使わない場合

匿名メソッド式を使う場合

参考サイト

C# 2.0 の新機能 – C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/ap_ver2.html#anonymous

[Ansible] ディクショナリとリスト

ディクショナリ

リスト

参考サイト

Ansible で扱う変数 – 赤帽エンジニアブログ
https://rheb.hatenablog.com/entry/ansible_variables
2022-04-07

[C#] ジェネリック

  • C# 2.0: 実装
  • C# 4.0: 共変性・反変性
  • C# 7.3: 制約条件追加 (unmanaged, Enum, Delegate)
  • C #8.0: 制約条件追加 (notnull)

ジェネリックメソッド

記法

ジェネリッククラス

記法

参考サイト

ジェネリック – C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/sp2_generics.html

[Ansible] モジュールに変数を渡す

タスクに定義する

プレイに定義する

ファイルで定義する

参考サイト

Ansible で扱う変数 – 赤帽エンジニアブログ
https://rheb.hatenablog.com/entry/ansible_variables
2022-04-07