Listデータ を CSVファイル へ書き込むサンプルコードを作成しました。 読み込みがあるから書き込みもと思って作りましたが、単純に実装しています。
CSVフォーマットの仕様に関してはざっくりと CSVフォーマット の 仕様 に記載しました。
C# と JavaScript を中心にアプリケーション開発に関する技術ネタを記事にします。 C# は Windowsネイティブアプリ開発 と Webアプリケーション開発 を、JavaScript は Webアプリケーション開発 を扱います。
目的ごとに記事を集めた「特集記事」は以下へ!
Listデータ を CSVファイル へ書き込むサンプルコードを作成しました。 読み込みがあるから書き込みもと思って作りましたが、単純に実装しています。
CSVフォーマットの仕様に関してはざっくりと CSVフォーマット の 仕様 に記載しました。
CSVファイル または 文字列 を List
ファイルの読み込みもすべて最初に一括実行するのではなく、逐次実行するよう実装しました。 おそらく大きなファイルでも止まらずに実行できる ハズ …と、信じています(試していないのでわからない…)。 最悪、非同期メソッドを実装してあるので、そちらを利用するとなんとか回避できると思います。
CSVフォーマットの仕様に関してはざっくりと CSVフォーマット の 仕様 に記載しました。 単体テスト含めた全体コードは Github garafu/samplecode_CsvReadWrite へ記載しました。
CSVフォーマットの読み書きが必要になってきたので、まずはその仕様について調べてまとめてみました。 CSVフォーマットの仕様は、ざっくりと書くと以下のようになるようです。
CSVフォーマット
WPF の PasswordBox は セキュリティ上の問題から直接データバインドすることができません。 …が、セキュリティ上の問題を承知したうえで、それでもデータバインドしたい、簡便さを優先したい場合があると思います。 今回は、セキュリティ上の問題を承知したうえで、データバインドを実現する方法をまとめます。
目次
サンプルコード
WPF で ListBox に リストデータ を表示する基本形をまとめます。 ここでは、カスタムデータ の リスト を ListBox の データソース として ItemsSource に与え、カスタムデータ の プロパティ を DisplayMemberPath に表示名として指定して利用する方法を載せます。
目次
WPF で DataContext を設定する方法はコード上でプロパティに設定する方法とXAML上で記載する方法と2種類あります。 ここではそれぞれについて、設定する方法を記載します。
INotifyPropertyChanged インターフェイス を実装したサンプルコードを掲載します。 (…どちらかと言うと、自分の覚書。。)
ここでは ICommand インターフェイス を実装した カスタム コマンド のサンプルコードを掲載します。 汎用的に使える実装を委譲したコマンドになっています。 (…どちらかと言うと、自分の覚書。。)
基本は xaml で CommandParameter属性 を指定することで引数を渡せます。 以下ではいくつかの サンプルコード を記載しました。
目次
WPF で利用される Command(コマンド) に関して簡単なまとめを記載します。 コマンドは操作を分離したもので、関連するオブジェクトに コマンド ソース、コマンド および コマンド と 実装 を結びつける コマンド バインディング があります。 (他にもありますが…ここでは割愛します。。) 以下ではこれらを簡単に紹介します。
目次
ちまたにいくらでもありますが… WPF の 簡単な サンプルアプリケーション を作成します。 最も単純化された アプリケーション なので、実用に耐えられるものではないと思いますが、基本を押さえるには参考になると思います。
目次
サンプルコード
Oracle Data Access の 64bit を使っていると、MSIL と AMD64 の不一致に関する警告が鬱陶しいので、その抑制方法を記載します。 ここでは、ODA に限らず一般的な警告抑制方法を記載します。
XDocument
で XMLファイル を開き、LINQ で解析をする サンプルコード を掲載します。
LINQ と言いながら、結局使うのは XDocument
になります。
XDocument
を利用して、XMLファイルを編集、保存する方法を掲載します。
ASP.NET で認証に関する オブジェクト をクラス図に書き出してみました。 後半では、認証に関するオブジェクトのちょっとした使い方を記載しています。
目次
WCFサービスで、JSONオブジェクト を POST で渡す方法を記載します。
WCFサービスで RESTful なサービスを作成しようとすると、JSON を POST したいケースが出てきます。 ここでは、POST された JSONオブジェクト を受け取れるサービスの実装例を記載します。 POST 以外の PUT、DELETE なども、 Method を変更することで実装ができます。 また、どのようなリクエストを行うかも合わせて記載します。
WCFサービスにおいて、文字列でない int や long を サービス の パラメター(引数) に渡す方法を記載します。
インターフェースでは WebGet や WebInvoke を利用し、その中で UriTemplate を指定します。 この UriTemplate 中にでてくる Uri 変数 は基本的に string として解決されます。 数値(int、long)に変換するためには、クエリパラメターとして渡すと数値に変換できるようです。
以下にクエリパラメターを指定して数値を引き渡すサンプルコードおよびテストリクエストを掲載します。
log4net の ログレベルを 動的に or プログラム上で 出力ファイル名 を 変更 する方法を記載します。
以下では、log4net の 設定例と、その設定のときにどうやってログレベルを変更するかを記載します。
FileAppender または RollingFileAppender でファイル出力する際、動的に or プログラム上で 出力ファイル名 を 取得 または 変更 する方法を記載します。
ここでは、「log4netをXMLで設定していたが、途中でそのファイル名を知りたい or ファイル名を変えたい」といったケースを想定しています。 以下では、log4net の 設定例と、その設定のときにどうやってファイル名を取得、設定するかを記載します。
log4net の Appender をプログラム上から生成、追加する方法をここでは記載します。 XML設定とプログラム実装がどのような関係にあるかわかりやすくするため、XML設定の例とそのプログラム実装する例の両方を記載しました。
目次
log4net で動的に(プログラム上の変更で)log4net.Appender.IAppender を削除する方法を記載します。 ここでは、IAppender を取得する拡張メソッドのサンプルコードを掲載します。
手っ取り早く解決したい場合、末尾の「まとめ」にあるサンプルコードをコピペして拡張メソッドを利用すると取得できます。
目次
log4net で動的に(プログラム上の変更で)出力先や、ログレベルを変更しようとすると、出力先設定である log4net.Appender.IAppender を取得する必要がでてきます。 ここでは、IAppender を取得する拡張メソッドのサンプルコードを掲載します。
手っ取り早く解決したい場合、末尾の「まとめ」にあるサンプルコードをコピペして拡張メソッドを利用すると取得できます。
目次
同じコードを何度も書くことほど無駄なことはない。 …と、思ったので、よく使うものをまとめて残しておきます。 (気が向いたら更新しているかもしれません…)
Windowsのバッチファイルを作成する際、デフォルトで使える環境変数をまとめます。
調査した OS は Windows 8、Windows 7、Windows Vista、Windows XP、Windows Server 2012 R2、Windows Server 2008 R2 の 6種類 です。
ユーザー名は「garafu」とし、コンピューター名は「自動で割り付けられたもの」です。
いずれもドメインには参加しておらず、ローカルユーザーでログインし、set
コマンド を実行した結果となります。
環境変数 PATH
に関しては、長くなるので省略しました。
IIS に ホストされた バッチファイル を クライアント から 実行できるようにする方法を記載します。 今回はあくまで "技術的にできる" の検証です。。
バッチファイルが実行できると…何でもできてしまいかねない(セキュリティーホール)になるので、利用には気をつけてください。 IIS の 実行ユーザー は制限がかかっているので、すぐに何でもできるわけではないですが要注意です。
目次
バッチ で IIS (インターネット インフォメーション サービス) を 起動、終了 および 再起動 する 方法を記載します。 net コマンド を利用してもできますが…ここでは iisreset コマンドで操作すことにします。
目次
※バッチ で IIS の アプリケーションプール を 起動、終了 する方法 こちら。
バッチ で IIS (Internet Information Service) の アプリケーションプール の 名前を指定して 起動、終了 および リサイクル する 方法を記載します。
目次
※バッチ で IIS を 起動、修了 する 方法 は こちら。
バッチ処理 で Windowsサービス を インストール(OSに登録) または アンインストール(登録解除) する方法です。 Visual Studio が入っている場合、"Visual Studio コマンドプロンプト" を用いることでインストール、アンインストールできますが… ここでは、Visual Studio が入っていない環境(デプロイ先)でバッチによるインストール、アンインストールの方法を記載します。
目次
Windowsサービス を C# で作成する手順を記載します。 Windowsサービス プログラム は簡単に作れますが…その手順が一癖あるようなので、ここにチュートリアルとしてまとめておきます。 あまり凝ったことはせず、単に空のサービスを作成する手順になっています。
目次
ここでは、XMLファイル と XSLTファイル を読み込んで、別のフォーマットに変換する方法を記載します。 ただ変換させるだけの処理なのでいきなり サンプルコード を以下に載せます。
source.xml を transform.xslt に従って変換する サンプルコード です。
変換した結果を文字列として再利用したいと考えているので、ここでの出力先は StringBuilder
としています。
今回は、Active Directory 証明書サービス (AD CS) で 電子証明書 を作成し、その証明書を IIS に登録することで SSL/TLS(https) 通信できるように設定します。
今回は Active Directory 証明書サービス (サーバー側)が安全であることをクライアントに登録する手順を記載します。 あらかじめ、証明書サービス の ルート証明書 が出力され、手元に cerファイル がある前提で進めます。
※Active Directory 証明書サービス の ルート証明書 発行手順は こちら 。
スタンドアロン ルート 認証局 を作成した後、その認証局が信頼できるものだと登録するためには、まず 認証局 の 電子証明書 が必要になります。 ここでは、Windows Servier 2012 で 証明書サービス(認証局) の 構築 で構築したサーバーに対して 電子証明書 を出力する手順を示します。
ここでは、Windows Servier 2012 を用いて、Active Directory 証明書サービス を スタンドアロン ルート CA で構成する手順を記載します。 Active Directory とは連動せず、サーバー単独で証明書を発行、破棄するようなサービスを想定しています。
目次
今回は、IIS 8.0 で 自己署名入り証明書 を作成して、SSL/TLS(https) 通信できるように設定します。 自己署名入り証明書(いわゆる オレオレ証明書)はいくつか問題がありますが、とりあえず https 通信を試したい場合、簡単にテストできるので便利です。
ASP.NET + StyleCop で発生する SA1633 の警告をルールを切らずに回避する方法。
原因は、Debug または Release フォルダ配下に自動生成される TemporaryGeneratedFile_<GUID>.cs ファイルです。 このファイルは空ファイルなので、ヘッダーがないと怒られてしまいます。
該当するファイルを静的解析の対象から外すことで回避します。 具体的には、以下に示すように設定ファイルへ追記します。
Settings.StyleCop
<StyleCopSettings Version="105"> <Parsers> <Parser ParserId="StyleCop.CSharp.CsParser"> <ParserSettings> <CollectionProperty Name="GeneratedFileFilters"> <Value>\\TemporaryGeneratedFile_.+\.cs$</Value> </CollectionProperty> </ParserSettings> </Parser> </Parsers> </StyleCopSettings>
今回、以下のサイトを参考にしました。
今回は、Windows パソコン において、カスタム URL スキーム を設定して、任意の アプリケーション を起動する方法を載せます。
ちなみに、"カスタム URL スキーム" は、"外部プロトコルリクエスト" とか "プロトコルハンドラ"、"Pluggable Protocol Handler"、"Asynchronous Pluggable Protocols" などの名前で掲載されいる記事が多いようです。 (…情報を探すのに苦労したので参考になれば。。)
目次
ASP.NET アプリケーション に対して モジュール化 された複雑な機能、処理を提供したい場合、 IHttpModule を利用すると便利です。 例えば、複数に分散してしまったアプリケーションに対して、ある決まった認証処理を実装させたいとき、簡単に機能を提供することが可能になります。 ここでは、認証されていないユーザーがアクセスしてきたとき、別のサイトへ転送させる機能を提供する HttpModule を作成します。
目次
今回は、指定フォルダ配下にある、指定I/Fを実装したアセンブリを、動的に読み込んでインスタンスを生成する実装を行います。
目次
サンプルコード
フォーム認証でも、Windows認証でもなく、完全に独自の認証方法を行う場合、どのような実装を行うかのサンプルを掲載します。 シングルサインオン を実装するような ケース を想定した実装例です。 実装が web.config や Global.asax なので、ASP.NET MVC、WCF等で有効な実装方法になるハズです(試したのは ASP.NET MVC4 のみ)。
目次
ソースコード
ASP.NET MVC において、/Home/Index
へアクセスした場合、発生するイベントの順序を調べてまとめました。
IIS へ アクセス した タイミング によって発生する イベント が異なるので、それぞれ分かるよう プルダウン を準備しました。
調査対象は HttpApplication (Global.asax)
、 IHttpModule
、 IAuthorizeFilter
、 IActionFilter
、 Controller
、 View (*.cshtml)
です。
デバッグをするとき、ちょっと必要になったのでメモ。
ファイル名 , クラス名 , メソッド名 の 取得 サンプル
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 OnAuthorization(AuthorizationContext filterContext) { // アセンブリファイル名 の 取得 var fileName = Path.GetFileName(this.GetType().Assembly.Location); // クラス名 の 取得 var className = this.GetType().FullName; // メソッド名 の 取得 var methodName = MethodBase.GetCurrentMethod().Name; // デバッグ出力 System.Diagnostics.Debug.WriteLine("{0,30} {1,30} : {2}", fileName, className, methodName); } } }
今回、以下のサイトを参考にしました。