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

C#

F# Build Tools for Unity(ゲームのやつ) - UniFSharpのご紹介

これは F# Advent Calendar 2014の延長戦、 30 日目の記事です。 書いたきっかけ @zecl ML Advent カレンダーに書いてくださいよーw F#の人達は知ってるけど、MLな人は知らないとかあるかもしれないですし。— h_sakurai (@h_sakurai) 2014, 12月 10 結局、25…

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

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

Retry Monad for Transient Fault Handling (Topaz + FSharpx)

4月14日に札幌で行われた第69回CLR/H勉強会にて、「Retry Monad for Transient Fault Handling - F#とWindows Azure と私 -」と題して、ライトニングトークで発表しました。 Retry monad for transient fault handling View more presentations from zecl123…

knockout.jsを利用したMVVMによるコンポーネント作成。WebGridの基本的な使い方と、Pagerヘルパーの利用。

MSDN - Code Recipeに初投稿しました。WebGridに関するまとまった説明や、ページングに関するTipsもなぜか少なかった気がしたので、書いてみました。 サンプルコードを書いただけで力尽きたので細かい説明はありませんが、詳細については以下をご覧ください…

いまさらASP.NET MVCのモデルバインダ入門あれこれ。MEFのカスタムエクスポートプロバイダーは設計の幅を広げる。自動拡張型カスタムモデルバインダプロバイダーを作ろう。

http://www.asp.net/ ASP.NET MVC4 Betaがリリースされまして、WebAPIいいね!な今日この頃。誰が言ったか、これから求められるIT技術は、Web、クラウド、関数型言語の三本柱らしいです。とは言っても、世の中にはさまざまな技術が溢れています。.NETerなわ…

Windows AzureとMEFで再デプロイを必要としない拡張(または縮小)可能なクラウドアプリケーション。BlobストレージからMEFのパーツを検索できるカスタムカタログ BlobStorageCatalog を作ろう。

しばらくF#ネタしか書いていませんでした。たまにはC#ネタを置いておきます。 C#ネタというよりは、最近仕事で利用しているWindows AzureとMEFのネタですが。 Managed Extensibility Framework (MEF)とはManaged Extensibility Framework (MEF) は、.NET Fra…

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

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

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

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

F#でRxる。よく訓練されたF#erはコンピューテーション式をつくる。

いにしえからの言い伝えによると、よく訓練されたF#erはコンピューテーション式をつくるそうです。 Select Many: Reactive Extensions’ Mother Of All Operators (Chaining). お、SelectManyですね。 なるほどなるほど。計算を繋ぐもの。モナドですか。そこ…

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

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

「Code Contractsで頻繁に使うのに、スニペット用意されてないじゃん!」とお嘆きの声に答えまして、とりあえず的に作ったC#のやつがあるので置いておきます。

以下が、「Code Contractsで頻繁に使うのに、スニペット用意されてないじゃん!」の追加の俺々コードスニペットたちです。 まぁ、なんで標準的に用意されていないのか、なんとなくわかるような気もしますけどね。 ちなみに、やつけ的にテキストエディタで作…

カスタム ビジュアライザって「刺身たんぽぽ」になりがちだよね。楽にカスタム ビジュアライザを量産して「たのしいデバッグ」を。

デバッガ ビジュアライザとはデバッガ ビジュアライザとは、Visual Studioでデバッグをしている時に、 オブジェクトの状態を照会することが出来る画面および、その機能のことです。 そうです。いつもお世話になっているアレです。たとえば、string型について…

実はオブジェクト指向ってしっくりきすぎるんです! 不変オブジェクトのすゝめ。

バグのないソフトウェアを作りたいお仕事では主にVB.NETとC#を。趣味のプログラミングでは関数型言語F#を利用しています。 私自身のF#スキル(関数型的な考え方)は、まだまだ実践レベルとはとても言えないシロモノだけど、 面白い発見と多くの可能性を感じら…

C#とF#で、ちょっと草植えときますね型言語 Grassインタプリタを実装してみました。

第47回 CLR/H 勉強会(4/17)に参加しました。今回で6回目くらいですかね。 楽しく有意義な時間を過ごせました。講師の方、参加者のみなさんどうもありがとうございました! 今回はじめて、わたしもライトニングトークに登壇させて頂きました。 もともと人前…

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

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

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

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

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

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

なんぞこれ。コンストラクタパラメータが異常に大杉る・・・。バカなの?死ぬの?そういう場合はBuilderパターンを検討してみよう。

(追記:2009/11/18) id:Nobuhisaさんにお返事を頂きました。ありがとうございます! Effective JavaのアレをC#で - (hatena (diary ’Nobuhisa)) C#でBuilderを実装するにあたって、とても参考になりますので、こちらもぜひご覧ください。 引数大杉。Builderパ…

F#でもオブジェクト指向したい。手始めにC#で書いたUndo,Redoの実装を移植してみました。あれ?F#にはprotectedアクセシビリティないの?ぐはぁ

F#は.NETの第一級言語だからオブジェクト指向だって余裕でできるよ関数型の考え方に基づいて、汎用的に使えるUndo,Redo機能の実装しようと考えたとき、 関数型言語のノウハウがない自分には、シックリくる良い案が全く思い浮かびませんでした。 F#は関数型パ…

なんぞこれ。NaNってなんなんすか?あのね、非数のことだよ。なんだかナンのカレーが食べたくなるね。ヒ素じゃなくてよかった。

ネタ元 びっくりした事 - えムナウBlog (わんくま同盟Blog's) http://blogs.wankuma.com/mnow/archive/2009/10/14/182100.aspx 以下のコンソールアプリケーションで"NG"と表示するケースがあった。 class Program { static void Main(string[] args) { doubl…

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

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

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

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

動的にDLL(ライブラリ)をロードしてアセンブリを作って、P/Invokeなdelegateを生成してみよう。

C#で動的にDLL(ライブラリ)をロードしてアセンブリを作って、P/Invokeなdelegateを生成動的にDLL(ライブラリ)をロードするというシナリオは、意外と要求されることが多いのではないかと思います。 利用する関数があらかじめ明確になっているのであれば、その…

C#で和暦について本気出して考えてみた【初級〜中級編】IFormattable、ICustomFormatter、IFormatProviderインターフェイスを実装してみよう。てゆうか、プロのプログラマなら当然正規表現を使いたいよね!

思いつきで「C#で和暦について本気出して考えてみた」の不定期連載を開始します。 タイトルが長すぎというツッコミは、心の中にそっとしまっておいてください。 予定している連載内容【初級〜中級編】 和暦構造体を作ろう。 IFormattable、ICustomFormatter…

てってってー言語でメッセージを伝えてみるよ。それなんて暗号化?

大台 - 一生酩酊 そういうことなのか、わからないけど、きっとそういうことだよね。 てってってー言語で、メッセージを伝えてみるよ。 ててーててーててーててーててーててーててーててーてってっててーてってーててーてて ーててーててーててーててーててー…

そういやLittle Lazy Lisp 8.2 in C#ってありましたね

そういや、過去にC#によるLispインタプリタの話題があったなぁ〜、と思い出した。 これだ↓ OKIソフトウェアによる、「C# による小さな Lisp インタープリタ」 C#2.0でMac OS X 10.4.11 上の Mono 1.9.1 で作成し、 同環境および Windows 2000/XP上の .NET Fr…

モテようとして、C#でXOR使ってリバースしている奴がいたんですよ

いろいろなリバースのアルゴリズムを見てみましよう。 まずは表題のリバースのアルゴリズムについて、どうぞ。なんとなくモテようとしている感のあるリバースモテようとして、C#でXOR使ってリバースしている奴がいたんですよ・・(以下略)。 こんな感じで pub…

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

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

IronPythonの世界

遅ればせながら、ようやく興味が沸いてきたので買ってみた。 「アイアンパイソン」、とりあえずなんか強そうである。 誤読の「アイロンパイソン」でもある意味強そう。(エクストリームアイロニング的な意味で) #IronPythonのバージョンが新しくなったので、…

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

例えば、 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 (以下省略)…

ボタン連打しないでね☆ それはPeekMessageでメッセージループ

Buttonのクリック処理が動作している最中に他のButtonやコントロール等をクリックした場合でも、 そのクリック操作をすべてシカトしたいなんてことはよくあるお話。 なぜクリック処理中のクリック操作がシカトされずに処理されてしまうのかと言えば、 クリッ…

コンストラクタのインターセプトとアドバイス、それはアクセプト指向的な何か。

まずは、アスペクト指向プログラミング(AOP)的な用語の簡単な説明とか。アドバイスとはアスペクト指向で言うところのアドバイスとは、「どのような処理を行うか」のことを指す。 コード(ある処理)に対してインターセプトを行い、そこで「何」を行うのか、そ…

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

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

(続)リフレクションを利用したレイトバインディングでExcelファイルを開く

Excel関連でググってみると、「Excelのプロセスが残ってしまう・・・。」といった現象に陥ってる人が多いように思う。 Excelのプロセスが残らないようにするには、利用したCOMオブジェクトの参照を適切に解放してあげる必要がある。 例えば、レイトバインデ…

リフレクションを利用したレイトバインディングでExcelファイルを開く

VB.NETだとCreatObject関数を使って、暗黙の遅延バインディングを利用することによって、 お手軽に実現できる出来るExcelの操作も、C#で実現するとなると、ちょっと面倒くさいことになります。 事前バインディングでも実装することもできるが、事前バインデ…

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

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

.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 テクノロジの例外管理の設計および実装のガイドライン その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では区別さ…