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

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

.NET Framework

ログ用に時刻を取得して文字列化する (C#, Java, POSIX/Win32)

アプリケーションのデバッグや、デプロイ後の問題解析に最も重要な役割を果たすのはログです。ログの機能や精度・粒度によって、問題解決のしやすさがほぼすべて決まります。また、ログは単なるトラブルシューティングだけでなく、場合によってはユーザー操…

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

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

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

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

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

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

F#でファイル・フォルダーをごみ箱へ移動

Visual Studioのバージョン2010以降をインストールすると、拡張子.fsxにVisual Studioが関連付けられ*1、さらにコンテキストメニューに「Run with F# interactive...」というコマンドが追加されます。.fsxはF#スクリプトと呼ばれるファイルなのですが、Visua…

MFC-CLI 相互運用時の注意点‏

(これは2011-05-09に書いた故OCNブログの記事を移植したものです)それなりに規模の大きい MFC プロジェクトなどで、共通言語ランタイムのサポート /clr を追加して .NET ハイブリッド アプリケーションを作るときに、起動時に EETypeLoadException 例外が…

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

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

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

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

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

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

MSDNライブラリの記載ミス

以前、「MSDN DirectX SDKヘルプの記載ミス」というタイトルで不平不満をぶちまけた記事を書いたんですが、そのほかのヘルプドキュメント(.NET, MFCなど)にもいくつかの誤記があります。 個人的に特に許せないものに関してはこの場でさらしておきましょう…

WPFのxbapファイルのキャッシュ場所

(これは2010-06-08に書いた故OCNブログの記事を移植したものです)WPFを使用したWebアプリケーション(ブラウザ アプリケーション)を作成・デバッグ・頒布する際に、注意事項があります。WPFを使用したWebアプリケーションの実行ファイル(.xbap)を、Visu…

WPFアプリのローカライズ(OS言語自動一致版)

WPF ローカライズの方法はいくつかあるんですが、今回は英語版をベース(ニュートラル言語)として、日本語にローカライズされた文字列テーブルを追加する手順を説明します。OS の UI 言語設定に合わせてアプリ起動時に自動的に文言をローカライズすることを…

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製デスクトップ …

Win32/MFCとWinForms/WPF相互運用

(これは2012-06-14に書いた故OCNブログの記事を移植したものです)以前からWin32/MFCとWPFの相互運用性(主にWPF 3.5 *1)に関して独自調査を続けているんですが、メッセージまわりでやはり問題がいくつか発生することが判明してきています。基本的にはWin3…

IronPython備忘録

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

Visual Studio 2010 SP1とF#

(これは2011-06-10に書いた故OCNブログの記事を移植したものです)VS 2010 に SP1 を適用すると、適用前までは OK だった Microsoft.FSharp.Math.Matrix.init メソッドの呼び出し時に MissingMethodException 例外が発生するようになってしまった。ここで、…

XAMLルート要素のプロパティのローカライズ

(これは2012-06-19に書いた故OCNブログの記事を移植したものです)コレ、結構悩んだんですが、WPFにおいてWindowとかUserControlとかPageとかのルート要素のフォントなどをローカライズするためにリソース文字列を指定するには、(Attribute Syntaxは使わず…

printfとString.Format

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