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

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 (以下省略)…