Listデータ を CSVファイル へ書き込むサンプルコードを作成しました。
読み込みがあるから書き込みもと思って作りましたが、単純に実装しています。
CSVフォーマットの仕様に関してはざっくりと CSVフォーマット の 仕様 に記載しました。
目次
サンプルコード
使用例
2014年
C# で CSVファイル を List データ に 読み込む 方法
CSVファイル または 文字列 を List 配列 に読み取るコードを作成する必要があったので、サンプルコードを作成しました。
ちまたのサイトでは カンマ(,) でスプリットするものが多く、ダブルクォート(")、改行(\r\n)、エスケープ文字もきちんと判別、読み取るものがみあたらなかったので、細かいとこまでできるものを実装してみました。
ファイルの読み込みもすべて最初に一括実行するのではなく、逐次実行するよう実装しました。
おそらく大きなファイルでも止まらずに実行できる ハズ …と、信じています(試していないのでわからない…)。
最悪、非同期メソッドを実装してあるので、そちらを利用するとなんとか回避できると思います。
CSVフォーマットの仕様に関してはざっくりと CSVフォーマット の 仕様 に記載しました。
単体テスト含めた全体コードは Github garafu/sa ...
Akinari Tsugo
22:48
C#
CSVフォーマット の 仕様
CSVフォーマットの読み書きが必要になってきたので、まずはその仕様について調べてまとめてみました。
CSVフォーマットの仕様は、ざっくりと書くと以下のようになるようです。
CSVフォーマット
それぞれのレコードは改行コード(CRLF)で区切られます。
最終レコードは改行コード(CRLF)があったり、なかったりします。
最初の1行にヘッダー行を記述することができます。ヘッダーはフィールドと一致する名前を定義し、数がフィールドの数と一致しています。
ヘッダーとそれぞれのレコードにおいて、1つ以上のフィールドが存在し、カンマで区切られます。
フィールドはダブルクォートで囲んでもよいし、囲まなくてもよい。
フィールドに改行コード(CRLF)、ダブルクォート、カンマを含む場合、ダブルクォートで囲みます。
ダブルクォートがフィールドに含まれる場合、ダブル ...
Akinari Tsugo
22:10
マニュアル
WPF で PasswordBox に データバインド する方法
WPF の PasswordBox は セキュリティ上の問題から直接データバインドすることができません。
…が、セキュリティ上の問題を承知したうえで、それでもデータバインドしたい、簡便さを優先したい場合があると思います。
今回は、セキュリティ上の問題を承知したうえで、データバインドを実現する方法をまとめます。
目次
概要
PasswordBoxHelper クラス
XAML記述(使い方)
サンプルコード
ダウンロード
Akinari Tsugo
18:11
C#,
WPF
WPF の ListBox に対する リストデータ の バインディング と 表示名 の 制御
WPF で ListBox に リストデータ を表示する基本形をまとめます。
ここでは、カスタムデータ の リスト を ListBox の データソース として ItemsSource に与え、カスタムデータ の プロパティ を DisplayMemberPath に表示名として指定して利用する方法を載せます。
目次
ListBox に表示したい データ
ListBox に リストデータ を 表示する サンプルコード
Akinari Tsugo
23:51
C#,
WPF
WPF で DataContext を 設定 する 方法
WPF で DataContext を設定する方法はコード上でプロパティに設定する方法とXAML上で記載する方法と2種類あります。
ここではそれぞれについて、設定する方法を記載します。
Akinari Tsugo
22:07
C#,
WPF
WPF で INotifyPropertyChanged の実装 サンプル コード
INotifyPropertyChanged インターフェイス を実装したサンプルコードを掲載します。
(…どちらかと言うと、自分の覚書。。)
Akinari Tsugo
22:01
C#,
WPF
WPF で ICommand の実装 サンプル コード
ここでは ICommand インターフェイス を実装した カスタム コマンド のサンプルコードを掲載します。
汎用的に使える実装を委譲したコマンドになっています。
(…どちらかと言うと、自分の覚書。。)
Akinari Tsugo
21:01
C#,
WPF
WPF の コマンド 引数 を 設定 する 方法
基本は xaml で CommandParameter属性 を指定することで引数を渡せます。
以下ではいくつかの サンプルコード を記載しました。
目次
固定値 を 渡す 例
要素 を 渡す 例
コントロールを渡す例
Windowを渡す例
要素 の プロパティ を 渡す 例
Akinari Tsugo
21:00
C#,
WPF
WPF の コマンド 概要
WPF で利用される Command(コマンド) に関して簡単なまとめを記載します。
コマンドは操作を分離したもので、関連するオブジェクトに コマンド ソース、コマンド および コマンド と 実装 を結びつける コマンド バインディング があります。
(他にもありますが…ここでは割愛します。。)
以下ではこれらを簡単に紹介します。
目次
コマンド ソース
コマンド
コマンド バインディング
Akinari Tsugo
20:59
C#,
WPF
簡単な WPF アプリケーション サンプル
.imgfrm {
border: none;
}
.imgfrm th, .imgfrm td {
border-collapse: collapse;
border: none;
text-align: center;
vertical-align: center;
}
ちまたにいくらでもありますが… WPF の 簡単な サンプルアプリケーション を作成します。
最も単純化された アプリケーション なので、実用に耐えられるものではないと思いますが、基本を押さえるには参考になると思います。
目次
概要
プロジェクトの修正
Model の作成
Command の作成
ViewModel の作成
View の修正
最終的にできあがったプロジェクト
サンプルコード
ダウンロード
Akinari Tsugo
20:57
C#,
WPF
Visual Studio で "プロセッサ アーキテクチャ 間 の 不一致" 警告の抑制
Oracle Data Access の 64bit を使っていると、MSIL と AMD64 の不一致に関する警告が鬱陶しいので、その抑制方法を記載します。
ここでは、ODA に限らず一般的な警告抑制方法を記載します。
Akinari Tsugo
22:04
C#,
Oracle,
Visual Studio
LINQ to XML で XMLファイル を 読み込み、解析 する 方法
XDocument で XMLファイル を開き、LINQ で解析をする サンプルコード を掲載します。
LINQ と言いながら、結局使うのは XDocument になります。
Akinari Tsugo
23:22
C#,
LINQ
LINQ to XML で XMLファイル を 編集、書き込み する 方法
XDocument を利用して、XMLファイルを編集、保存する方法を掲載します。
Akinari Tsugo
23:22
C#,
LINQ
ASP.NET で 認証 に 関する オブジェクト の関係
ASP.NET で認証に関する オブジェクト をクラス図に書き出してみました。
後半では、認証に関するオブジェクトのちょっとした使い方を記載しています。
目次
認証に関するオブジェクトのクラス図
認証されたかどうかを検出する
認証されたことを登録する
Akinari Tsugo
23:33
ASP.NET,
C#,
IIS,
MVC,
WCF,
Web API
WCF Web サービス に JSON オブジェクト を 渡す 方法
WCFサービスで、JSONオブジェクト を POST で渡す方法を記載します。
WCFサービスで RESTful なサービスを作成しようとすると、JSON を POST したいケースが出てきます。
ここでは、POST された JSONオブジェクト を受け取れるサービスの実装例を記載します。
POST 以外の PUT、DELETE なども、 Method を変更することで実装ができます。
また、どのようなリクエストを行うかも合わせて記載します。
Akinari Tsugo
16:07
ASP.NET,
C#,
WCF
WCF Web サービス に 数値 を 渡す 方法
WCFサービスにおいて、文字列でない int や long を サービス の パラメター(引数) に渡す方法を記載します。
インターフェースでは WebGet や WebInvoke を利用し、その中で UriTemplate を指定します。
この UriTemplate 中にでてくる Uri 変数 は基本的に string として解決されます。
数値(int、long)に変換するためには、クエリパラメターとして渡すと数値に変換できるようです。
以下にクエリパラメターを指定して数値を引き渡すサンプルコードおよびテストリクエストを掲載します。
Akinari Tsugo
16:07
ASP.NET,
C#,
WCF
log4net で ログレベル を 動的に 取得、設定 する 方法
log4net の ログレベルを 動的に or プログラム上で 出力ファイル名 を 変更 する方法を記載します。
以下では、log4net の 設定例と、その設定のときにどうやってログレベルを変更するかを記載します。
Akinari Tsugo
23:02
C#,
log4net
log4net で 出力先 ファイル名 を 動的に 取得、設定 する 方法
FileAppender または RollingFileAppender でファイル出力する際、動的に or プログラム上で 出力ファイル名 を 取得 または 変更 する方法を記載します。
ここでは、「log4netをXMLで設定していたが、途中でそのファイル名を知りたい or ファイル名を変えたい」といったケースを想定しています。
以下では、log4net の 設定例と、その設定のときにどうやってファイル名を取得、設定するかを記載します。
Akinari Tsugo
0:07
C#,
log4net
log4net の Appender を プログラム上で動的に 生成、追加 する 方法
log4net の Appender をプログラム上から生成、追加する方法をここでは記載します。
XML設定とプログラム実装がどのような関係にあるかわかりやすくするため、XML設定の例とそのプログラム実装する例の両方を記載しました。
目次
log4net の XML設定
log4net の 動的(プログラム上) 設定
[おまけ] ILog インスタンス に IAppender を追加する拡張メソッド
Akinari Tsugo
23:52
C#,
log4net
log4net の Appender を プログラム上で動的に 削除 する 方法
log4net で動的に(プログラム上の変更で)log4net.Appender.IAppender を削除する方法を記載します。
ここでは、IAppender を取得する拡張メソッドのサンプルコードを掲載します。
手っ取り早く解決したい場合、末尾の「まとめ」にあるサンプルコードをコピペして拡張メソッドを利用すると取得できます。
目次
現在の Logger から Appender を削除
Root の Logger から Appender を削除
サンプルコード まとめ
Akinari Tsugo
21:23
C#,
log4net
log4net の Appender を プログラム上で動的に 取得 する 方法
log4net で動的に(プログラム上の変更で)出力先や、ログレベルを変更しようとすると、出力先設定である log4net.Appender.IAppender を取得する必要がでてきます。
ここでは、IAppender を取得する拡張メソッドのサンプルコードを掲載します。
手っ取り早く解決したい場合、末尾の「まとめ」にあるサンプルコードをコピペして拡張メソッドを利用すると取得できます。
目次
現在の Logger から Appender を取得
Root の Logger から Appender を取得
サンプルコード まとめ
Akinari Tsugo
21:18
C#,
log4net
バッチ で よく使う 処理 の コマンド テンプレート 集
同じコードを何度も書くことほど無駄なことはない。
…と、思ったので、よく使うものをまとめて残しておきます。
(気が向いたら更新しているかもしれません…)
目次
起動された場所をカレントディレクトリとして cmd.exe を実行する
Java, Python, Ant の環境変数を追加する
日付、時間を取得する
テキストファイルから変数を取得する
指定したフォルダの下にあるバッチを再帰的に実行する
指定したフォルダの下にあるフォルダ&ファイルを再帰的に削除する
ファイル出力先のフォルダを確認、なければ作成する
Akinari Tsugo
23:59
バッチ
バッチ 作成時 に デフォルト で使える 環境変数 まとめ
.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 ...
Akinari Tsugo
23:57
バッチ
IIS で バッチファイル を実行する 方法
.params dt {
font-weight: normal;
width: 8em;
float: left;
}
.params dd {
margin-left: 9em;
}
IIS に ホストされた バッチファイル を クライアント から 実行できるようにする方法を記載します。
今回はあくまで "技術的にできる" の検証です。。
バッチファイルが実行できると…何でもできてしまいかねない(セキュリティーホール)になるので、利用には気をつけてください。
IIS の 実行ユーザー は制限がかかっているので、すぐに何でもできるわけではないですが要注意です。
目次
IIS の 設定
スクリプト の 実装 と 配置
テスト
Akinari Tsugo
17:35
IIS,
バッチ
バッチ で IIS を 起動、修了 する 方法
.cmdopt dt {
font-weight: normal;
width: 10em;
float: left;
}
.cmdopt dd {
margin-left: 11em;
}
バッチ で IIS (インターネット インフォメーション サービス) を 起動、終了 および 再起動 する 方法を記載します。
net コマンド を利用してもできますが…ここでは iisreset コマンドで操作すことにします。
目次
IIS 起動 バッチ
IIS 終了 バッチ
IIS 再起動 バッチ
iisreset コマンド 解説
※バッチ で IIS の アプリケーションプール を 起動、終了 する方法 こちら。
Akinari Tsugo
15:52
IIS,
バッチ
バッチ で IIS の アプリケーションプール を 起動、終了 する方法
.cmdname {
display: inline-block;
width: 5em;
}
.cmdref {
}
バッチ で IIS (Internet Information Service) の アプリケーションプール の 名前を指定して 起動、終了 および リサイクル する 方法を記載します。
目次
アプリケーションプール 起動
アプリケーションプール 終了
アプリケーションプール リサイクル
appcmd apppool コマンド 解説
※バッチ で IIS を 起動、修了 する 方法 は こちら。
Akinari Tsugo
14:11
IIS,
バッチ
バッチ で Windowsサービス を 起動、終了 する 方法
バッチ で Windowsサービス を 開始 または 終了 する 方法を記載します。
目次
Windowsサービス 起動 バッチ
Windowsサービス 終了 バッチ
net コマンド 解説
Akinari Tsugo
18:24
バッチ
バッチ で 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 コマンドプロンプト" を用いることでインストール、アンインストールできますが ...
Akinari Tsugo
23:45
C#,
バッチ
C# で Windowsサービス の 開発
Windowsサービス を C# で作成する手順を記載します。
Windowsサービス プログラム は簡単に作れますが…その手順が一癖あるようなので、ここにチュートリアルとしてまとめておきます。
あまり凝ったことはせず、単に空のサービスを作成する手順になっています。
目次
概要
プロジェクト の 作成
Windowsサービス の 実装
Windowsサービス の デバッグ
Windowsサービス の インストール
Windowsサービス の 実行
Windowsサービス に アタッチ
まとめ
Akinari Tsugo
23:44
C#
C# で XML を XSLT で変換する方法
ここでは、XMLファイル と XSLTファイル を読み込んで、別のフォーマットに変換する方法を記載します。
ただ変換させるだけの処理なのでいきなり サンプルコード を以下に載せます。
source.xml を transform.xslt に従って変換する サンプルコード です。
変換した結果を文字列として再利用したいと考えているので、ここでの出力先は StringBuilder としています。
Akinari Tsugo
18:24
C#
IIS で SSL/TLS を AD CA 発行の証明書 で 設定 する方法
今回は、Active Directory 証明書サービス (AD CS) で 電子証明書 を作成し、その証明書を IIS に登録することで SSL/TLS(https) 通信できるように設定します。
目次
IIS で 証明書の要求の作成
AD CA で 電子証明書の発行
IIS で 証明書の要求の完了
IIS で https 通信 の設定
Akinari Tsugo
23:56
IIS,
SSL/TLS,
電子証明書
信頼されたルート証明機関 に 電子証明書 を インポート する方法
今回は Active Directory 証明書サービス (サーバー側)が安全であることをクライアントに登録する手順を記載します。
あらかじめ、証明書サービス の ルート証明書 が出力され、手元に cerファイル がある前提で進めます。
※Active Directory 証明書サービス の ルート証明書 発行手順は こちら 。
目次
ウィザード を利用した インポート
コマンド を利用した インポート
プログラム による インポート
[おまけ] 正しくインポートされたことの確認
Akinari Tsugo
22:26
SSL/TLS,
電子証明書
Active Directory 証明書サービス(AD CA) の ルート証明書 を エクスポート する 方法
スタンドアロン ルート 認証局 を作成した後、その認証局が信頼できるものだと登録するためには、まず 認証局 の 電子証明書 が必要になります。
ここでは、Windows Servier 2012 で 証明書サービス(認証局) の 構築 で構築したサーバーに対して 電子証明書 を出力する手順を示します。
Akinari Tsugo
22:42
SSL/TLS,
電子証明書
Windows Servier 2012 で 証明書サービス(認証局) の 構築
ここでは、Windows Servier 2012 を用いて、Active Directory 証明書サービス を スタンドアロン ルート CA で構成する手順を記載します。
Active Directory とは連動せず、サーバー単独で証明書を発行、破棄するようなサービスを想定しています。
目次
役割 の インストール
Active Directory 証明書サービス の 構成
Akinari Tsugo
0:51
SSL/TLS,
電子証明書
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通信 の テスト
Akinari Tsugo
18:53
IIS,
SSL/TLS,
電子証明書
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 ...
Akinari Tsugo
21:12
ASP.NET,
C#,
MVC
カスタム URL スキーム の 設定 と 利用
.regbox {
border: 1px solid #808080;
padding: 1em 2em;
}
今回は、Windows パソコン において、カスタム URL スキーム を設定して、任意の アプリケーション を起動する方法を載せます。
ちなみに、"カスタム URL スキーム" は、"外部プロトコルリクエスト" とか "プロトコルハンドラ"、"Pluggable Protocol Handler"、"Asynchronous Pluggable Protocols" などの名前で掲載されいる記事が多いようです。
(…情報を探すのに苦労したので参考になれば。。)
目次
概要
レジストリ の 登録
カスタム URL スキーム の テスト
[おまけ] 警告の抑制
[おまけ] サンプルコード
Akinari Tsugo
23:11
HTML,
Internet Explorer,
拡張
ASP.NET の IHttpModule の 実装 と 利用
ASP.NET アプリケーション に対して モジュール化 された複雑な機能、処理を提供したい場合、 IHttpModule を利用すると便利です。
例えば、複数に分散してしまったアプリケーションに対して、ある決まった認証処理を実装させたいとき、簡単に機能を提供することが可能になります。
ここでは、認証されていないユーザーがアクセスしてきたとき、別のサイトへ転送させる機能を提供する HttpModule を作成します。
目次
概要
IHttpModule の 実装
IHttpModule の 利用
Akinari Tsugo
19:04
ASP.NET,
C#,
MVC,
WCF,
Web API
WPF アプリケーション で Elysium の 使い方
WPF アプリケーション の開発において Elysium を利用すると、ストアアプリ のような画面 (Github for windows のような画面) が簡単に作成できます。
見た目を簡単にフラットデザインぽくできるので、便利なプラグイン? ライブラリ? だと思います。
ここでは、その 実装手順 の 簡単な チュートリアル を記載します。
実行サンプル
Elysium を使って実装した WPF アプリケーション の実行画面は次のようなものになります。
Akinari Tsugo
18:18
C#,
WPF
IIS に ASP.NET がうまく構成されていない問題 の 対策
環境を再構築したりしていると見かけるエラーです。
最近は環境再構築をよくしているのでよく見かけており、慣れてきましたが…
念のため、エラー例とその原因、対策を記載します。
目次
エラー例
原因
対策
Akinari Tsugo
23:42
ASP.NET,
C#,
IIS,
MVC
C# で DLL の 動的 呼び出し & 読み込み
今回は、指定フォルダ配下にある、指定I/Fを実装したアセンブリを、動的に読み込んでインスタンスを生成する実装を行います。
目次
ソリューション構成
取り決めごとにする インターフェース の作成
プラグイン実態(dllファイル) の 実装
プラグイン を読み込んで インスタンス の生成
サンプルコード
GitHub - garafu / samplecode_DynamicLoad
ダウンロード zip
Akinari Tsugo
0:16
C#
ASP.NET で 独自認証処理 を 実装 する 方法
フォーム認証でも、Windows認証でもなく、完全に独自の認証方法を行う場合、どのような実装を行うかのサンプルを掲載します。
シングルサインオン を実装するような ケース を想定した実装例です。
実装が web.config や Global.asax なので、ASP.NET MVC、WCF等で有効な実装方法になるハズです(試したのは ASP.NET MVC4 のみ)。
目次
概要
web.config の設定
Global.asax の実装
ソースコード
GitHub - garafu / samplecode_mockSSO
ダウンロード zip
Akinari Tsugo
1:53
ASP.NET,
C#,
MVC,
WCF
ASP.NET MVC の イベント 発生順序
ASP.NET MVC において、/Home/Index へアクセスした場合、発生するイベントの順序を調べてまとめました。
IIS へ アクセス した タイミング によって発生する イベント が異なるので、それぞれ分かるよう プルダウン を準備しました。
調査対象は HttpApplication (Global.asax) 、 IHttpModule 、 IAuthorizeFilter 、 IActionFilter 、 Controller 、 View (*.cshtml) です。
Akinari Tsugo
21:13
ASP.NET,
C#,
MVC
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 ...
Akinari Tsugo
22:04
C#