.NET

Soma 1.8.0.6 リリース

.NETで使えるO/Rマッパー、Soma 1.8.0.6 をリリースしました(10日ほど前に)。 ODP.NETでメモリリークする可能性があったのを修正しています。 Fix - Dispose DbParameters and those values to prevent memory leak in ODP.NET environment Fix - Consume …

Soma 0.13.0.0 リリース

F#で作ったO/Rマッパー Soma 0.13.0.0をリリースしました(F#はもちろんC#やVB.NETでも使えます)。ぜひお試しください。 http://soma.codeplex.com/releases/view/66786 今回のリリースは、Release Candidateの位置づけです。 7月までにはStableな1.0.0.0と…

Soma 0.12.0.0 リリース

F#で作ったO/Rマッパー Soma 0.12.0.0をリリースしました(F#はもちろんC#やVB.NETでも使えます)。ぜひお試しください。 http://soma.codeplex.com/releases/view/66304 Release Notes Change - IDbConfig.Parse メソッドが IDbConfig.Parser プロパティに…

SomaとF#スクリプトを使ったお手軽DBアクセス

Somaは大きなプロジェクトでも使えますし、小さなツール作成の用途にも使えます。 今回は後者をターゲットとして、Somaを使って手軽にDBアクセスを行うサンプルを紹介します。 環境準備 まず環境を整えます。 DBにはSQL Server 2008を使います。tempdbにアク…

Soma 0.11.0.0 リリース

F#で作ったO/Rマッパー Soma 0.11.0.0をリリースしました(F#はもちろんC#やVB.NETでも使えます)。ぜひお試しください。 http://soma.codeplex.com/releases/view/65812 Release Notes New Feature - SQLの解析結果のオブジェクトをキャッシュするようにし…

オブジェクト式

F#には、いろいろと興味深い機能がありますが、オブジェクト式もそのひとつ。open NUnit.Frameworktype IGreeing = abstract Greet : string -> string[<Test>] let ``test Object Expression``() = let greeting = { new IGreeing with member this.Greet(name) =</test>…

explicit factoring by functions と implicit factoring by hierarchy

Expert F# 2.0 (Expert's Voice in F#)作者: Don Syme,Adam Granicz,Antonio Cisternino出版社/メーカー: Apress発売日: 2010/06/01メディア: ペーパーバック購入: 1人 クリック: 35回この商品を含むブログ (2件) を見るこの本を読んでいます。 その中で関数…

F#のコードをNUnitでテストする

NaturalSpecのScenarioという属性、NUnitのTestAttributeを継承しているだけなことに気づきました。ということは、Resharperはクラスに指定するTestFixtureAttributeがなくてもメソッドに指定するTestAttributeだけがあればテストと認識するんですね。MSTest…

F#のコードをMSTestでテストする

C#にはあるのにF#にはなぜかテストプロジェクトがないんですよね。 でもMicrosoft.VisualStudio.QualityTools.UnitTestFramework.dllに参照通せば、一応使えるみたいです。ただResharper使ってないとうまく認識させられないかも。F# Libraryを作って、Micros…

F#のコードをNaturalSpecでテストする

NaturalSpecでも動きました。これもResharperを使っていると簡単。 NaturalSpec.dllとnunit.framework.dllに参照を通す ソリューションかプロジェクトを選んで「Run Unit Tests」 次のようなテストコードが書けます。かっこいい!んだけどどう動いているのか…

F#のパターンマッチとC#のVisitorパターンの比較

パターンマッチグというものを使うとVisitorパターン相当のことが簡単に書けるということを聞いて、関数型プログラミングに興味を持ち始めました。というわけで最近F#をさわったりしています。 で、パターンマッチというものがどういったものかわかってきた…

BindingFlagsのNonPublicについて

NonPublicって親クラスのメンバは対象にならないんですね。ドキュメントを読んでも、そうとはわからないですが。 [TestMethod] public void TestBindigFlags() { var type = typeof(Derived); var flags = BindingFlags.Instance | BindingFlags.Public | Bi…

SqlDbTypeへの変換や推論がそれほど賢くない? その3

前回のつづき。 http://d.hatena.ne.jp/taedium/20101130 SqlParameterのDbTypeプロパティにDbType.Timeを設定したときの挙動がいまいちわかりづらいです。下のテストコードを見てください。Timeとして扱いたいのにDateTimeとして扱われてしまうのです。 [Te…

SqlDbTypeへの変換や推論がそれほど賢くない

ADO.NETでSQL Serverのデータプロバイダに依存しないAPIでDBアクセスしたいのですが、そうもいかないようです。 パラメーターおよびパラメーターのデータ型の構成 (ADO.NET)いくつかの型で「暗黙の変換はエラーになります」とか「推論はサポートされていませ…

SqlDbTypeへの変換や推論がそれほど賢くない? その2

下のエントリの件、8000バイトを超えるバイト配列と4000文字を超える文字列の場合について実際に検証してみましたが、ドキュメントの記載に反して変換されました。ドキュメントがまちがっているんですかねぇ、それとも理解がまちがっているんでしょうか。ど…

設定ファイルの読み込みでクラスのインスタンス化にカスタムのTypeConverterを使う

TypeConverterAttributeにConfigurationConverterBaseを継承したクラスを指定すると任意のクラスをインスタンス化できます。 TypeConverterを使わなくても、プロパティをstringで取得してからインスタンス化すれば同じようなことは実現できますが、TypeConve…

HttpUtilityのエンコードいろいろ

Update: How and When to Encode for the Web次のメソッドのちがいを解説。 HtmlEncode HtmlAttributeEncode UrlEncode JavaScriptStringEncode MSDNのAPIドキュメントよりもわかりやすいです。

App_Dataディレクトリ以下に配置されたファイルへのNLogを使ったログ出力

IIS7.5のアプリケーションプールのデフォルトのユーザーIDであるApplicationPoolIdentityでそのまま出力できました。最初、FileのtargetにfileName="~/App_Data/app.log"と指定していてうまくいかないなぁと思っていたのですが、fileName="${basedir}/App_Da…

ApplicationPoolIdentityについてメモ

リモートのSQL ServerへのWindows認証を稼動確認したい。 Thread: ApplicationPoolIdentity + SQL http://forums.iis.net/p/1162459/1924222.aspx Application Pool Identities http://learn.iis.net/page.aspx/624/application-pool-identities/ Ensure Sec…

ASP.NETでTeedaのリダイレクトスコープのようなものを実装する

ASP.NETでTeedaのリダイレクトスコープのようなものがあると便利かと思って考えてみました。要するに、リダイレクトする直前でセッションに情報を置いて、リダイレクト後のGETでその情報をセッションから取得するという機能です。そんなかんじの機能をつくっ…

ASP.NETでTeedaのリダイレクトスコープのようなもの その2

下のエントリですが、よく考えると属性を指定したPageのプロパティに自動で値をセットしたりプロパティから値を取得したりというのは、ASP.NETのプログラミングモデルにそぐわないですね。自分で明示的にGET/SETしたほうが一貫性があってわかりやすいかも。 …

いくつかのスコープ(状態)を検索対象にして値を得る

一番小さいスコープから一番大きいスコープまでを自動でたどっていくのって、誤って間違ったデータを取得してしまう可能性が高いと思うのです。だから、探すスコープ(状態)とその順番を指定できるといいのかもしれない。 たとえば次のようなクラスを用意し…

Server.TransferしたあとはASP.NETのトレース出力がされない

ASP.NETトレースの機能、便利なんですがServer.Transferしたあとは出力されないことに気づきました。 どういうことかというと、 Web.config <system.web> <trace enabled="true"/> ... </system.web> 最初にアクセスするページ public partial class Default : System.Web.UI.Page { protected void Page_Load…

ASP.NETの実行時のバージョン

ASP.NETのバージョンの取得方法、どれを参照するのがただしいんですかねぇ。 .NET 4.0がインストールされたWindows7の環境でIIS7.5のアプリケーションプールに「.NET Framework v2.0.50727」を指定して次のコードを動かしてみました。 protected void Page_L…

system.transactions/defaultSettingsのtimeout属性とTransactionManager.DefaultTimeout

http://stackoverflow.com/questions/1348191/default-transaction-timeout TransactionOptions.Timeout に0を設定してしまうと設定ファイルに記述したデフォルト値が使われないらしい。 設定ファイルを生かしたいならTransactionManager.DefaultTimeoutを使…

トランザクションの開始と終了をログ出力

トランザクションの開始と終了は基本的にフレームワーク側で自動化するのがいいと思います。フレームワークで処理する場合はログは好きに出せますが、アプリでどうしても制御したいという場合に直接TransactionScopeを実行されるとログに出力されないのが不…

ASP.NET Runtime Cheat Sheet: HttpRequest, HttpRuntime, AppDomain and friendsへのリンク

http://duartes.org/gustavo/articles/Asp.net-Runtime-Cheat-Sheet-HttpRequest-HttpRuntime.aspx どのAPIでどんな値がとれるかがわかりやすく記されています。リンク先のページ自体がそれらのAPIを使って生成されソースコードも公開しているので参考になり…

HttpModuleにパラメータを渡す方法

HttpModule好きなんですが、JavaのServlet Filterのように設定でパラメータを渡せないのが残念なところです。そこで、Web.configにパラメータを設定をすればHttpModuleのプロパティに自動で設定される仕組みを考えてみました。 例えば、Web.configに以下の感…

ジェネリックなEnum

Enums – Better syntax, improved performance and TryParse in NET 3.5 便利そうです。

サイトマップのセキュリティトリミング

ASP.NETのサイトマップのセキュリティトリミングという機能をはじめて知りました。 認可されないユーザーに対して特定のメニューを表示させないというもののようです。 ASP.NET のサイト マップ セキュリティ トリミング SiteMapProviderもRoleProviderも拡…