ようこそ。睡眠不足なプログラマのチラ裏です。

VB.NET

VB、C#、F# それぞれのインデクサ。F# コンパイラのソースを読んで。

F# コンパイラのソースを読んで はぇ〜さん(@haxe) とtwitterにて、以下のようなやり取りがありました。 ところで #fsharp の for m in Regex.Matches(input, pattern) do () はGetEnumerator()をしてくるわりに、m : Match に解決してくれるのはなんでだろ…

独習ASP.NET第3版を頂きました。

3月26日に参加した第56回CLR/H勉強会にて、WINGSプロジェクトさんより「独習ASP.NET第3版(翔泳社)」を頂きました。 WINGSプロジェクトさん、翔泳社さん、id:naoki0311さん*1、CLR/Hスタッフの皆さん、どうもありがとうございます。 独習ASP.NET 第3版作者: …

オブジェクト指向は、シンプルできれいだが脆い。関数型プログラミングは、強く美しいが複雑。F#はいろいろな書き方が混ぜこぜになるよ。楽しいよ。

オブジェクト指向プログラミングが好きだ。関数型プログラミングが好きだ。 オブジェクト指向プログラミングオブジェクト指向プログラミングは、コンテナの一般性を確保している点で優れている。 データと振る舞いをコンテナとしてまとめることで、プログラ…

C#からF#のクロージャを利用するには、こんな風にしたらいんじゃないの的サンプル

実践 F# 関数型プログラミング入門作者: 荒井省三:いげ太出版社/メーカー: 技術評論社発売日: 2011/01/07メディア: 大型本購入: 6人 クリック: 264回この商品を含むブログ (26件) を見る まず、書籍のご紹介をさせていただきます。 荒井さん、いげ太さん共著…

「ハッカーのたのしみ」はかなりの良書。いまさらFlagsAttributeのレシピ、リターンズ。.NET FrameworkにBitCountくらい標準であってもいいのにね

以前、FlagsAttributeとビット演算のちょっとしたレシピという記事を書きました。 ご覧頂くとわかるように、とてもダサい実装になっています。記事を掲載してすぐに知人からツッコミがありました。 ツッコミがあったときにすぐに続編記事を書いて訂正しよう…

とある契約の備忘目録。契約による設計(Design by Contract)で信頼性の高いソフトウェアを構築しよう。

「より堅牢で正確性の高いソフトウェアを作りたいぜ!」と願う.NETデベロッパーお待ちかねの、 契約による設計(DbC)をサポートするCode Contractsが.NET Framework4より利用できるようになります。 C#をベースとして契約による設計をサポートする「Spec#」を…

いまさらですが、VB.NETで「関数名に代入的な記法」で戻り値を決定するのが“やっぱりキモい”件。

ハイクの方で書いたネタですが、結構おもしろいネタだったので、 加筆修正などしてこちらにも投下しておきます。 なんぞこの記法。VBがマゾ言語と言われる由縁のひとつがこれだ。VBおよびVB.NETでは下記のような感じで関数を記述することができる。 (VB.NET…

シリアル化可能なStateパターン的に使えるタイプセーフEnum。たぶん最終形態(フリーザ様的な意味で)

id:atsukanrockさん、トラックバックありがとうございます。 「 熱燗ロックのブログ - .NET Frameworkで、シリアル化可能なタイプセーフenumを実装する - その2」を受けまして、 さっそく、まねまねさせて頂まして、再びTypeSafeEnumを書き直しました。 そう…

「スマートタグの表示」のショートカットキーの既定値がShift+Alt+F10というのは使いづらい件。Shift+Alt+Zでよくね?

Visual Studio2005以降では、Eclipseなんかに比べるとまだまだ貧弱とはいえ、 便利なリファクタリング機能がいくつかある。たとえば、フィールドやメソッド名を変更するとき、 スマートタグを表示することで、参照されているものすべての名称を一括して変更…

.NET Frameworkの代表的なコレクションとかいいつつ非ジェネリックって…?なんぞこれ。

CodeZineにて .NET Frameworkの代表的なコレクションと使い方 http://codezine.jp/article/detail/3640 という記事がありまして、結構な数のはてブをゲットしている人気記事のようでした。 でもなんで?というのが正直な感想です。「なんで?」の意味すると…

常識的に考えてErrorProviderを使いたいよね

VB.NETでもC#でもいいんだけど、.NET Framework2.0以降でWindows.Formsなアプリを作る場合、 入力検証を行うようなときは、ErrorProviderを使いたいよね!*1というお話は、 .NETで飯を食っている人にとっては割と常識ではないかと思っていたのだが、実際のと…

C#でFLVファイルをお手軽再生

ニコニコ動画などから得られるFLVファイルですが、 C#でお手軽に再生するには、ActiveX Control(AxShockwaveFlash)に頼るといいっぽい。 アスペクト比が指定できなかったり、再生できないFLVも結構あるようですが、まぁお手軽ということで。 ※FLVファイルを…

特定のインターフェイスを持つプラグインを取得

以下のような感じで、特定のインターフェイスを持つプラグインを取得するメソッドを作ってみた。 複数の種類のプラグインを利用するアプリなんてそうそうない気がしないでもないが、 こんな感じでひとつ作っておくと便利。やっぱLINQとyield使うと、かなりす…

依存性をクラスごとに構成ファイルに定義。はい、DIです。

マイクロソフトから提供されてるEntLib*1に含まれている DIコンテナを弄ってみた。 思っていたよりもいい感じにDIできますね。うんこれは便利。 Microsoft Enterprise Library 4.1 – October 2008 構成ファイル(*.config)から手軽に依存性の注入をしようDIコ…

【皆やってるちょっとした仕事術】左辺と右辺を入れ替え

例えば、 hoge1.Value = pugera1.Value; // ほげぷげら1 hoge2.Value = pugera2.Value; // ほげぷげら2 hoge3.Value = pugera3.Value; // ほげぷげら3 hoge4.Value = pugera4.Value; // ほげぷげら4 hoge5.Value = pugera5.Value; // ほげぷげら5 (以下省略)…

続・ラムダとY Combinatorと私。VBだって、やれば出来る子!

というわけで、前回のC#3.0で書いたラムダとY Combinatorと私。Y Combinatorは恐ろしい子。について、 VB2008のラムダ式でも書いてみました。VBだってやれば出来る子なんです(´・ω・`) Imports System Imports System.Linq Imports System.Collections.Gene…

デザインパターン第15回「Iteratorパターン」その2

以前書いた、デザインパターン第10回「Iteratorパターン」その1はこちらです。 以前書いたときは、ただ単にIEnumerableインターフェイスおよび、IEnumeratorインターフェイスを そのまま利用しただけの例について、イテレータパターンを学習しました。 今…

いまさら聞けないカスタム属性

enumのフィールドに対応する日本語リテラルを付加するためのカスタム属性を書く /// <summary> /// 元号 /// </summary> private enum Gengo { 明治, 大正, 昭和, 平成 } enumのフィールドは、上記のように日本語で指定することも、もちろん可能なんだけど、 コードの中に日本語…

ジェネリックとシリアライズを利用したオブジェクトのディープコピー

C#やVB.NETではオブジェクトのCloneを行うと参照のみがコピー(シャローコピー)される。 シャローコピーは、値を変更するとコピー元のデータも変更されてしまうので、なにかと都合がよくないことが多い。 オブジェクトのバックアップを取りたいような場合は…

デザインパターン第14回「Singletonパターン」その2

以前書いた、デザインパターン第7回「Singletonパターン」その1はこちらです。 結城先生のホームページに、Singletonのサブクラス化という記事がある。 Singletonの考え方にもいろいろあるけれど、その中の考え方のひとつ、 「(2) クラスごとに管理 ―― ク…

いまさら聞けない、IDisposableインターフェイス

マネジーリソースとアンマネージリソース.NET Frameworkで扱うリソースの種類は、大きく2つに分けることができる。 CLRが管理するマネージリソース(GCヒープ)と、CLRが管理しないアンマネージリソース。 ガベコレによってオートマチックに解放されるのが…

.ActiveSyncの同期接続状態を検知するには

PDA側でActiveSyncの同期接続状態を検知するには、Microsoft.WindowsMobile以下の名前空間のクラス群を利用する。 SystemStateクラスを用い、クレードルのステータスの変更イベントを検知するようにする。 そのイベントが発生したら、そのタイミングでActive…

別プロセスのスレッドに対するアタッチについて

実行中のアプリケーションが何かしらのタイミングで非アクティブとなり、 別のプロセスウィンドウの裏へ隠れてしまうようなことがある。 対応方法としては、単にFormをアクティブにすればよいのだが、 this.Activate() だけでは、うまく Form が前面に移動し…

IComparableインターフェイスを利用したソート

独自クラスについてソートをしたいような場合、対象クラスにIComparableインターフェイスを実装し、 それをCollectionにぶち込んでSort()メソッドを呼び出すことで、簡単にソートすることができる。 たぶん、staticなジェネリックメソッドを作成してICompara…

.NET Compact Framework version 2.0にSystem.Data.SqlClient.SqlBulkCopyクラスがない件

.NET Framework2.0 で新しく追加された、 System.Data.SqlClient.SqlBulkCopyクラス*1もサポートされていないわけだが・・・。 これって、.NET Compact Frameworkだからこそ必要なクラスだと思うのだが。 (;゚Д゚)ポカーン そもそもSQL Server 2005 Compact Editi…

.NET Compact Framework2.0にSystem.Diagnostics.Stopwatchクラスがない件

なにかしらの負荷によって時間がかかっている処理があって、 その中でも最も負荷がかかっている箇所がどこなのかを特定するために、 各処理フェーズごとに時間を計測してログに吐き出すことにした。 おもむろに.NET Framework2.0から追加されたSystem.Diagno…

.NET Compact Framework2.0についてのだいたいのメモ

諸事情により、.NET Compact Frameworkを使うことになったので、 ちょっと適当にまとめてみる。 .NET Compact Frameworkとは.NET Compact Frameworkとは、Microsoftから提供されている 携帯電話やPDAなどの携帯情報端末向けのクラスライブラリで、 Windows向…

いまさら聞けない.NET テクノロジの例外管理の設計および実装のガイドライン その2

例外の検出.NET Framework では、他の一般的な水準のオブジェクト指向プログラミング言語と同じように、 構造化例外処理を利用して例外を適切に処理することができる。 構造化例外処理とは、例外と保護されたコードブロック、およびフィルタを含む制御構造に…

いまさら聞けない.NET テクノロジの例外管理の設計および実装のガイドライン その1

例外管理ポリシーアプリケーションの内部で発生した例外を管理する際には、いくつか考慮すべきことがある。 まず、「発生した例外をどのタイミングで捕捉するのか」、「捕捉した例外をどのように処理するのか」、 そして、「捕捉した例外をどのように伝播さ…

デザインパターン第12回「Proxyパターン」

公私共にモチベーション低いですが、久しぶりに独りよがりなデザパタ講座です。 今回はGoFデザインパターンより、「Proxyパターン」をぬるーく解説します。 ■Proxyパターンの概要■ Proxyとは「代理人」という意味です。 現実の世界での「代理人」のイメージ…

データバインディング その1

単純にSystem.Windows.Forms.Formを継承したFormに配置したTextBoxのTextプロパティに対して、 特定のクラスのプロパティをバインドする方法の1つを示します。 方法その1、.NET Framework 1.1の場合。「プロパティ名 + Changed」 イベントの提供これだけで…

遅ればせながら、Visual Studio 2008 Beta 2 日本語版をインストールしてやったわブワハハハア!!(壊 (ダウンロードに2時間、DVD-R焼くのに20分、VSインストールに1時間、MSDNインストールに1時間・・・。) Visual Studio 2008 Beta 2 日本語版 http://www.…

入れ子になったユーザーコントロールの DesignMode プロパティについて

マイクロソフトのサポートオンラインによると 入れ子になったユーザーコントロールの DesignMode プロパティは、 False に Visual Studio .NET または Visual Studio 2005 に常に設定されます。 現象 Microsoft Visual Studio .NET または Microsoft Visual …

アパートメントモデルと、.NETのSTAThreadAttribute

アーパートメントモデルの種類COMコンポーネント*1は、大きくシングルスレッドアパートメントモデル(STA)と マルチスレッドアパートメントモデル(MTA)に分けることができる。 レンタルスレッドアパートメントモデル(RTA)というのもあるようですが、詳細…

ビットタイプの列挙型(FlagsAttribute属性)について

※後に書いた、「FlagsAttributeとビット演算のちょっとしたレシピ」はこちら →http://d.hatena.ne.jp/zecl/20081223/p1 基本的ではありますが、.NETにおける、ビットタイプの列挙型のお話。 Enum型にFlagsAttribute属性を与えると、ビットフィールドとして扱…

IClonableインターフェイスとMemberwiseCloneメソッド

今日は、.NETにおけるクローンオブジェクトなお勉強です。 インスタンスの中身をコピーする方法は、大きく分けて3つあります。 1つは、何も考えずにインスタンス内のメンバを手動でコピーする方法。 2つ目は、System.Reflectionを利用して、メンバをコピ…

デザインパターン第10回「Iteratorパターン」その1

後に書いた、デザインパターン第15回「Iteratorパターン」その2はこちらです。 なんだかんだで10回目を迎えましたデザパタ講座です。 さて今回は、GoFデザインパターンより「Iteratorパターン」をぬるーく解説します。 Iteratorパターンは、集約オブジ…

System.Windows.Forms.Formの派生クラスをシリアライズしてみる

画面オブジェクト(System.Windows.Forms.Formの派生クラス)の、 特定のプロパティをシリアル化してXMLに保存したり読み込んだりする機能について、必要に迫られました。 特定のプロパティを抽出してSerializableなクラスをつくり、それを画面オブジェクトの…

Webサービスでクラス渡しを実現するためのメモSystem.Xml.Serialization.XMLSerializer や、 System.Runtime.Serialization.Formatters.Soap.SoapFormatter というクラスがある。XMLSerializerはPublicなフィールドのみがシリアライズ対象となって、 SoapFor…

第1回「C#とVB.NET比較 」

■中間コードによる、大文字、小文字の識別 2つの言語の違いを比較する際に、まず思い浮かぶのは、両者の構文の相違である。 まず、構文を語る上で避けて通れない大きな違いのひとつは、 C#では大文字と小文字の違いが区別されるのに対し、VB.NETでは区別さ…

boxingとunboxing

ボックス化(boxing)とは、基本型(primitive type)からオブジェクト型(object type)へ変換することです。 その逆ををボックス化解除(unboxing)と呼びます。 これはつまり、値型と参照型を必要に応じて相互変換する機能です。 boxingは値型を参照型に変換する…