2014年

C# で Listデータ を CSVファイル へ 書き込む 方法

Listデータ を CSVファイル へ書き込むサンプルコードを作成しました。 読み込みがあるから書き込みもと思って作りましたが、単純に実装しています。 CSVフォーマットの仕様に関してはざっくりと CSVフォーマット の 仕様 に記載しました。 目次 サンプルコード 使用例

C# で CSVファイル を List データ に 読み込む 方法

CSVファイル または 文字列 を List 配列 に読み取るコードを作成する必要があったので、サンプルコードを作成しました。 ちまたのサイトでは カンマ(,) でスプリットするものが多く、ダブルクォート(")、改行(\r\n)、エスケープ文字もきちんと判別、読み取るものがみあたらなかったので、細かいとこまでできるものを実装してみました。 ファイルの読み込みもすべて最初に一括実行するのではなく、逐次実行するよう実装しました。 おそらく大きなファイルでも止まらずに実行できる ハズ …と、信じています(試していないのでわからない…)。 最悪、非同期メソッドを実装してあるので、そちらを利用するとなんとか回避できると思います。 CSVフォーマットの仕様に関してはざっくりと CSVフォーマット の 仕様 に記載しました。 単体テスト含めた全体コードは Github garafu/sa ...

CSVフォーマット の 仕様

CSVフォーマットの読み書きが必要になってきたので、まずはその仕様について調べてまとめてみました。 CSVフォーマットの仕様は、ざっくりと書くと以下のようになるようです。 CSVフォーマット それぞれのレコードは改行コード(CRLF)で区切られます。 最終レコードは改行コード(CRLF)があったり、なかったりします。 最初の1行にヘッダー行を記述することができます。ヘッダーはフィールドと一致する名前を定義し、数がフィールドの数と一致しています。 ヘッダーとそれぞれのレコードにおいて、1つ以上のフィールドが存在し、カンマで区切られます。 フィールドはダブルクォートで囲んでもよいし、囲まなくてもよい。 フィールドに改行コード(CRLF)、ダブルクォート、カンマを含む場合、ダブルクォートで囲みます。 ダブルクォートがフィールドに含まれる場合、ダブル ...

WPF で PasswordBox に データバインド する方法

WPF の PasswordBox は セキュリティ上の問題から直接データバインドすることができません。 …が、セキュリティ上の問題を承知したうえで、それでもデータバインドしたい、簡便さを優先したい場合があると思います。 今回は、セキュリティ上の問題を承知したうえで、データバインドを実現する方法をまとめます。 目次 概要 PasswordBoxHelper クラス XAML記述(使い方) サンプルコード ダウンロード

WPF の ListBox に対する リストデータ の バインディング と 表示名 の 制御

WPF で ListBox に リストデータ を表示する基本形をまとめます。 ここでは、カスタムデータ の リスト を ListBox の データソース として ItemsSource に与え、カスタムデータ の プロパティ を DisplayMemberPath に表示名として指定して利用する方法を載せます。 目次 ListBox に表示したい データ ListBox に リストデータ を 表示する サンプルコード

WPF で DataContext を 設定 する 方法

WPF で DataContext を設定する方法はコード上でプロパティに設定する方法とXAML上で記載する方法と2種類あります。 ここではそれぞれについて、設定する方法を記載します。

WPF で INotifyPropertyChanged の実装 サンプル コード

INotifyPropertyChanged インターフェイス を実装したサンプルコードを掲載します。 (…どちらかと言うと、自分の覚書。。)

WPF で ICommand の実装 サンプル コード

ここでは ICommand インターフェイス を実装した カスタム コマンド のサンプルコードを掲載します。 汎用的に使える実装を委譲したコマンドになっています。 (…どちらかと言うと、自分の覚書。。)

WPF の コマンド 引数 を 設定 する 方法

基本は xaml で CommandParameter属性 を指定することで引数を渡せます。 以下ではいくつかの サンプルコード を記載しました。 目次 固定値 を 渡す 例 要素 を 渡す 例 コントロールを渡す例 Windowを渡す例 要素 の プロパティ を 渡す 例

WPF の コマンド 概要

WPF で利用される Command(コマンド) に関して簡単なまとめを記載します。 コマンドは操作を分離したもので、関連するオブジェクトに コマンド ソース、コマンド および コマンド と 実装 を結びつける コマンド バインディング があります。 (他にもありますが…ここでは割愛します。。) 以下ではこれらを簡単に紹介します。 目次 コマンド ソース コマンド コマンド バインディング

簡単な WPF アプリケーション サンプル

.imgfrm { border: none; } .imgfrm th, .imgfrm td { border-collapse: collapse; border: none; text-align: center; vertical-align: center; } ちまたにいくらでもありますが… WPF の 簡単な サンプルアプリケーション を作成します。 最も単純化された アプリケーション なので、実用に耐えられるものではないと思いますが、基本を押さえるには参考になると思います。 目次 概要 プロジェクトの修正 Model の作成 Command の作成 ViewModel の作成 View の修正 最終的にできあがったプロジェクト サンプルコード ダウンロード

Visual Studio で "プロセッサ アーキテクチャ 間 の 不一致" 警告の抑制

Oracle Data Access の 64bit を使っていると、MSIL と AMD64 の不一致に関する警告が鬱陶しいので、その抑制方法を記載します。 ここでは、ODA に限らず一般的な警告抑制方法を記載します。

LINQ to XML で XMLファイル を 読み込み、解析 する 方法

XDocument で XMLファイル を開き、LINQ で解析をする サンプルコード を掲載します。 LINQ と言いながら、結局使うのは XDocument になります。

ASP.NET で 認証 に 関する オブジェクト の関係

ASP.NET で認証に関する オブジェクト をクラス図に書き出してみました。 後半では、認証に関するオブジェクトのちょっとした使い方を記載しています。 目次 認証に関するオブジェクトのクラス図 認証されたかどうかを検出する 認証されたことを登録する

WCF Web サービス に JSON オブジェクト を 渡す 方法

WCFサービスで、JSONオブジェクト を POST で渡す方法を記載します。 WCFサービスで RESTful なサービスを作成しようとすると、JSON を POST したいケースが出てきます。 ここでは、POST された JSONオブジェクト を受け取れるサービスの実装例を記載します。 POST 以外の PUT、DELETE なども、 Method を変更することで実装ができます。 また、どのようなリクエストを行うかも合わせて記載します。

WCF Web サービス に 数値 を 渡す 方法

WCFサービスにおいて、文字列でない int や long を サービス の パラメター(引数) に渡す方法を記載します。 インターフェースでは WebGet や WebInvoke を利用し、その中で UriTemplate を指定します。 この UriTemplate 中にでてくる Uri 変数 は基本的に string として解決されます。 数値(int、long)に変換するためには、クエリパラメターとして渡すと数値に変換できるようです。 以下にクエリパラメターを指定して数値を引き渡すサンプルコードおよびテストリクエストを掲載します。

log4net で ログレベル を 動的に 取得、設定 する 方法

log4net の ログレベルを 動的に or プログラム上で 出力ファイル名 を 変更 する方法を記載します。 以下では、log4net の 設定例と、その設定のときにどうやってログレベルを変更するかを記載します。

log4net で 出力先 ファイル名 を 動的に 取得、設定 する 方法

FileAppender または RollingFileAppender でファイル出力する際、動的に or プログラム上で 出力ファイル名 を 取得 または 変更 する方法を記載します。 ここでは、「log4netをXMLで設定していたが、途中でそのファイル名を知りたい or ファイル名を変えたい」といったケースを想定しています。 以下では、log4net の 設定例と、その設定のときにどうやってファイル名を取得、設定するかを記載します。

log4net の Appender を プログラム上で動的に 生成、追加 する 方法

log4net の Appender をプログラム上から生成、追加する方法をここでは記載します。 XML設定とプログラム実装がどのような関係にあるかわかりやすくするため、XML設定の例とそのプログラム実装する例の両方を記載しました。 目次 log4net の XML設定 log4net の 動的(プログラム上) 設定 [おまけ] ILog インスタンス に IAppender を追加する拡張メソッド

log4net の Appender を プログラム上で動的に 削除 する 方法

log4net で動的に(プログラム上の変更で)log4net.Appender.IAppender を削除する方法を記載します。 ここでは、IAppender を取得する拡張メソッドのサンプルコードを掲載します。 手っ取り早く解決したい場合、末尾の「まとめ」にあるサンプルコードをコピペして拡張メソッドを利用すると取得できます。 目次 現在の Logger から Appender を削除 Root の Logger から Appender を削除 サンプルコード まとめ

log4net の Appender を プログラム上で動的に 取得 する 方法

log4net で動的に(プログラム上の変更で)出力先や、ログレベルを変更しようとすると、出力先設定である log4net.Appender.IAppender を取得する必要がでてきます。 ここでは、IAppender を取得する拡張メソッドのサンプルコードを掲載します。 手っ取り早く解決したい場合、末尾の「まとめ」にあるサンプルコードをコピペして拡張メソッドを利用すると取得できます。 目次 現在の Logger から Appender を取得 Root の Logger から Appender を取得 サンプルコード まとめ

バッチ で よく使う 処理 の コマンド テンプレート 集

同じコードを何度も書くことほど無駄なことはない。 …と、思ったので、よく使うものをまとめて残しておきます。 (気が向いたら更新しているかもしれません…) 目次 起動された場所をカレントディレクトリとして cmd.exe を実行する Java, Python, Ant の環境変数を追加する 日付、時間を取得する テキストファイルから変数を取得する 指定したフォルダの下にあるバッチを再帰的に実行する 指定したフォルダの下にあるフォルダ&ファイルを再帰的に削除する ファイル出力先のフォルダを確認、なければ作成する

バッチ 作成時 に デフォルト で使える 環境変数 まとめ

.outerframe { position: relative; } .itemlist { width: 300px; float: left; } .contents { margin-left: 300px; overflow: auto; } .outerframe table { border-collapse: collapse; border: 1px solid #eeeeee; } .outerframe th { background-color: #f5f5f5; border: 1px solid #eeeeee; padding: 0.3em 0.8em; } .outerframe td { border: 1px solid #eeeeee; padding: 0.1em 0.3em; height ...

IIS で バッチファイル を実行する 方法

.params dt { font-weight: normal; width: 8em; float: left; } .params dd { margin-left: 9em; } IIS に ホストされた バッチファイル を クライアント から 実行できるようにする方法を記載します。 今回はあくまで "技術的にできる" の検証です。。 バッチファイルが実行できると…何でもできてしまいかねない(セキュリティーホール)になるので、利用には気をつけてください。 IIS の 実行ユーザー は制限がかかっているので、すぐに何でもできるわけではないですが要注意です。 目次 IIS の 設定 スクリプト の 実装 と 配置 テスト

バッチ で IIS を 起動、修了 する 方法

.cmdopt dt { font-weight: normal; width: 10em; float: left; } .cmdopt dd { margin-left: 11em; } バッチ で IIS (インターネット インフォメーション サービス) を 起動、終了 および 再起動 する 方法を記載します。 net コマンド を利用してもできますが…ここでは iisreset コマンドで操作すことにします。 目次 IIS 起動 バッチ IIS 終了 バッチ IIS 再起動 バッチ iisreset コマンド 解説 ※バッチ で IIS の アプリケーションプール を 起動、終了 する方法 こちら。

バッチ で IIS の アプリケーションプール を 起動、終了 する方法

.cmdname { display: inline-block; width: 5em; } .cmdref { } バッチ で IIS (Internet Information Service) の アプリケーションプール の 名前を指定して 起動、終了 および リサイクル する 方法を記載します。 目次 アプリケーションプール 起動 アプリケーションプール 終了 アプリケーションプール リサイクル appcmd apppool コマンド 解説 ※バッチ で IIS を 起動、修了 する 方法 は こちら。

バッチ で Windowsサービス を 起動、終了 する 方法

バッチ で Windowsサービス を 開始 または 終了 する 方法を記載します。 目次 Windowsサービス 起動 バッチ Windowsサービス 終了 バッチ net コマンド 解説

バッチ で Windowsサービス を インストール、アンインストール する 方法

.tbl_option { border: 1px solid #dddddd; border-collapse: collapse; } .tbl_option th { border: 1px solid #dddddd; padding: 0.5em 0.8em; width: 16em; text-align: left; } .tbl_option td { border: 1px solid #dddddd; padding: 0.5em 0.8em; } バッチ処理 で Windowsサービス を インストール(OSに登録) または アンインストール(登録解除) する方法です。 Visual Studio が入っている場合、"Visual Studio コマンドプロンプト" を用いることでインストール、アンインストールできますが ...

C# で Windowsサービス の 開発

Windowsサービス を C# で作成する手順を記載します。 Windowsサービス プログラム は簡単に作れますが…その手順が一癖あるようなので、ここにチュートリアルとしてまとめておきます。 あまり凝ったことはせず、単に空のサービスを作成する手順になっています。 目次 概要 プロジェクト の 作成 Windowsサービス の 実装 Windowsサービス の デバッグ Windowsサービス の インストール Windowsサービス の 実行 Windowsサービス に アタッチ まとめ

C# で XML を XSLT で変換する方法

ここでは、XMLファイル と XSLTファイル を読み込んで、別のフォーマットに変換する方法を記載します。 ただ変換させるだけの処理なのでいきなり サンプルコード を以下に載せます。 source.xml を transform.xslt に従って変換する サンプルコード です。 変換した結果を文字列として再利用したいと考えているので、ここでの出力先は StringBuilder としています。

IIS で SSL/TLS を AD CA 発行の証明書 で 設定 する方法

今回は、Active Directory 証明書サービス (AD CS) で 電子証明書 を作成し、その証明書を IIS に登録することで SSL/TLS(https) 通信できるように設定します。 目次 IIS で 証明書の要求の作成 AD CA で 電子証明書の発行 IIS で 証明書の要求の完了 IIS で https 通信 の設定

信頼されたルート証明機関 に 電子証明書 を インポート する方法

今回は Active Directory 証明書サービス (サーバー側)が安全であることをクライアントに登録する手順を記載します。 あらかじめ、証明書サービス の ルート証明書 が出力され、手元に cerファイル がある前提で進めます。 ※Active Directory 証明書サービス の ルート証明書 発行手順は こちら 。 目次 ウィザード を利用した インポート コマンド を利用した インポート プログラム による インポート [おまけ] 正しくインポートされたことの確認

Active Directory 証明書サービス(AD CA) の ルート証明書 を エクスポート する 方法

スタンドアロン ルート 認証局 を作成した後、その認証局が信頼できるものだと登録するためには、まず 認証局 の 電子証明書 が必要になります。 ここでは、Windows Servier 2012 で 証明書サービス(認証局) の 構築 で構築したサーバーに対して 電子証明書 を出力する手順を示します。

Windows Servier 2012 で 証明書サービス(認証局) の 構築

ここでは、Windows Servier 2012 を用いて、Active Directory 証明書サービス を スタンドアロン ルート CA で構成する手順を記載します。 Active Directory とは連動せず、サーバー単独で証明書を発行、破棄するようなサービスを想定しています。 目次 役割 の インストール Active Directory 証明書サービス の 構成

IIS で SSL/TLS を 自己署名入り証明書 で 設定 する方法

.settings { margin-left: 1em; } .settings dt { float: left; width: 6em; } .settings dd { margin-left: 6em; } 今回は、IIS 8.0 で 自己署名入り証明書 を作成して、SSL/TLS(https) 通信できるように設定します。 自己署名入り証明書(いわゆる オレオレ証明書)はいくつか問題がありますが、とりあえず https 通信を試したい場合、簡単にテストできるので便利です。 目次 自己署名入り証明書 の 作成 Webサイト の 設定 https通信 の テスト

ASP.NET + StyleCop で発生する警告の回避方法

ASP.NET + StyleCop で発生する SA1633 の警告をルールを切らずに回避する方法。 原因は、Debug または Release フォルダ配下に自動生成される TemporaryGeneratedFile_<GUID>.cs ファイルです。 このファイルは空ファイルなので、ヘッダーがないと怒られてしまいます。 該当するファイルを静的解析の対象から外すことで回避します。 具体的には、以下に示すように設定ファイルへ追記します。 Settings.StyleCop <StyleCopSettings Version="105"> <Parsers> <Parser ParserId="StyleCop.CSharp.CsParser"> <ParserSettings> <CollectionProperty N ...

カスタム URL スキーム の 設定 と 利用

.regbox { border: 1px solid #808080; padding: 1em 2em; } 今回は、Windows パソコン において、カスタム URL スキーム を設定して、任意の アプリケーション を起動する方法を載せます。 ちなみに、"カスタム URL スキーム" は、"外部プロトコルリクエスト" とか "プロトコルハンドラ"、"Pluggable Protocol Handler"、"Asynchronous Pluggable Protocols" などの名前で掲載されいる記事が多いようです。 (…情報を探すのに苦労したので参考になれば。。) 目次 概要 レジストリ の 登録 カスタム URL スキーム の テスト [おまけ] 警告の抑制 [おまけ] サンプルコード

ASP.NET の IHttpModule の 実装 と 利用

ASP.NET アプリケーション に対して モジュール化 された複雑な機能、処理を提供したい場合、 IHttpModule を利用すると便利です。 例えば、複数に分散してしまったアプリケーションに対して、ある決まった認証処理を実装させたいとき、簡単に機能を提供することが可能になります。 ここでは、認証されていないユーザーがアクセスしてきたとき、別のサイトへ転送させる機能を提供する HttpModule を作成します。 目次 概要 IHttpModule の 実装 IHttpModule の 利用

WPF アプリケーション で Elysium の 使い方

WPF アプリケーション の開発において Elysium を利用すると、ストアアプリ のような画面 (Github for windows のような画面) が簡単に作成できます。 見た目を簡単にフラットデザインぽくできるので、便利なプラグイン? ライブラリ? だと思います。 ここでは、その 実装手順 の 簡単な チュートリアル を記載します。 実行サンプル Elysium を使って実装した WPF アプリケーション の実行画面は次のようなものになります。

IIS に ASP.NET がうまく構成されていない問題 の 対策

環境を再構築したりしていると見かけるエラーです。 最近は環境再構築をよくしているのでよく見かけており、慣れてきましたが… 念のため、エラー例とその原因、対策を記載します。 目次 エラー例 原因 対策

C# で DLL の 動的 呼び出し & 読み込み

今回は、指定フォルダ配下にある、指定I/Fを実装したアセンブリを、動的に読み込んでインスタンスを生成する実装を行います。 目次 ソリューション構成 取り決めごとにする インターフェース の作成 プラグイン実態(dllファイル) の 実装 プラグイン を読み込んで インスタンス の生成 サンプルコード GitHub - garafu / samplecode_DynamicLoad ダウンロード zip

ASP.NET で 独自認証処理 を 実装 する 方法

フォーム認証でも、Windows認証でもなく、完全に独自の認証方法を行う場合、どのような実装を行うかのサンプルを掲載します。 シングルサインオン を実装するような ケース を想定した実装例です。 実装が web.config や Global.asax なので、ASP.NET MVC、WCF等で有効な実装方法になるハズです(試したのは ASP.NET MVC4 のみ)。 目次 概要 web.config の設定 Global.asax の実装 ソースコード GitHub - garafu / samplecode_mockSSO ダウンロード zip

ASP.NET MVC の イベント 発生順序

ASP.NET MVC において、/Home/Index へアクセスした場合、発生するイベントの順序を調べてまとめました。 IIS へ アクセス した タイミング によって発生する イベント が異なるので、それぞれ分かるよう プルダウン を準備しました。 調査対象は HttpApplication (Global.asax) 、 IHttpModule 、 IAuthorizeFilter 、 IActionFilter 、 Controller 、 View (*.cshtml) です。

C# で 実行中の クラス名 、 メソッド名 を取得する 方法

デバッグをするとき、ちょっと必要になったのでメモ。 ファイル名 , クラス名 , メソッド名 の 取得 サンプル namespace MvcApplication.Filters { using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Web; using System.Web.Mvc; public class AuthorizeFilterAttribute : FilterAttribute, IAuthorizationFilter { public void OnAuthorizati ...