syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

C#

Visual StudioのビルドイベントでPowerShellを踏み台にしてC#を使う

Visual Studioでプロジェクトをビルドする際に、複雑な前処理・後処理を記述する場合、通例バッチコマンドによるカスタマイズをします。ただ、Windowsのコマンドは貧弱で、Unix/Linux環境のシェルなどとは比べ物になりません。 従来のバッチコマンドの代わり…

Directory.Existsメソッドのタイムアウト時間

.NETのSystem.IO.Directory.Exists()メソッドは指定ディレクトリの存在有無をチェックするメソッドですが、タイムアウト時間が設けられています。ローカルドライブのディレクトリにアクセスする場合は、よほど低速なシステムか膨大なストレージでないかぎり…

C# 6.0コンパイラーの興味深い挙動

C#言語はnullに関連する演算子が豊富です。 null合体演算子 null合体演算子は左側オペランドがnullでない場合は左側オペランドを返し、nullの場合は右側オペランドを返します。参照型のほか、Null許容型(Nullable)にも適用可能です。C# 2.0で追加されまし…

INIファイルでUnicodeを扱う

今更ですが今日はINIファイルのお話です。初めに断っておきますが、ぶっちゃけWindowsアプリケーションでレガシーなINIファイルを使うのはもうやめましょう。Windowsアプリケーション設定の管理には、今後はレジストリやXMLファイルなどを使うべきです。 そ…

ショートカットファイル(.lnk)をC#で読込・解析・編集・作成

Windows 8.1用にHDDを移行したとき、昔使っていた古いドライブレターをいくつか廃止して統合したので、参考資料画像群*1のしおりとして残しておいたショートカットファイル(*.lnk)のリンク切れが大量に発生しました(リンク先の実体ファイルは別ドライブの…

マネージリソースアセンブリの解析

.NETのマネージリソースアセンブリを解析するC#コンソールプログラムのサンプルです(Visual Studio 2012で動作確認)。 非ASCII文字を含む文字列をValueに持つようなエントリー群をXMLファイルに書き出します。なんでこんなことをしようかと思ったかという…

正規分布する乱数の生成(中心極限定理/Box-Muller)

コンピュートシェーダーでブラウン運動のシミュレーションを実装しようと思ったんですが、そのためにはまず正規乱数(正規分布する乱数)を生成する必要がありそうなので、まず自前のCPU向けコードで正規乱数を作るテストプログラムを書くことにしました。 …

boolとgetter/setterの命名

C++の命名規則に関する話です。普通getter/setter(いわゆるアクセッサ)であるようなメソッド名(メンバー関数名)には接頭辞にGet/Setもしくはget/setを付け、その後に内部フィールド名(メンバー変数名)などを続けるような形で命名すると思いますが、boo…

WPFのAero2/AeroLiteテーマ

以前書いたModern UI for WPFの導入に関する記事にて、WPF 4.5におけるAero2/AeroLiteテーマの外観上の問題点について言及しましたが、具体的にどういうことなのか説明しましょう。 まずはサンプルコードから。WpfAero2ThemeTest1.zip以下はWindows 7でのス…

WPFアプリの外観をストア アプリ風に ―Modern UI for WPF―

(これは2013-05-13に書いた故OCNブログの記事を加筆修正したものです)Windowsストア アプリ(Windowsランタイム アプリ、WinRTアプリ)や、Outlook.com、OneDrive(旧SkyDrive)などで採用されている、Modern UI(旧称Metro UI)は、他のMS製デスクトップ …

IronPython備忘録

(これは2012-04-21に書いた故OCNブログの記事を移植したものです)しばらく使わないと忘れるので、備忘録ついでにC#との比較を少し載せておきます。 Visual C#プロジェクトの参照設定に相当するコード: import clr clr.AddReferenceByPartialName("System.…

メンバー変数命名規則

(これは2010-10-20に書いた故OCNブログの記事を移植したものです)自分はC++の場合、classメンバー変数の命名規則として、ずっと "m_" プレフィックスを付けるようにしています。 ただし、すべてのメンバーを外部公開するstructメンバー変数(ここでいうstr…

printfとString.Format

(これは2013-06-27に書いた故OCNブログの記事を移植したものです).NETのString.Format()やConsole.Write()/WriteLine()の書式を駆使すれば、ほぼCのprintf系をカバーできるんですが、MSDNの書式指定構文の説明にある、 % [flags] [width] [.precision] [{h…