MAG画像ローダ

唐突にPC98時代によく使われていたMAG画像形式ファイルを読み込むプログラムをC#に移植してみました。2,3個の画像でしか試してないのでバグがあるかも。 // 謝辞 // MITH(T.Saito)氏のWAB−S用マルチグラフィックローダ WMLのソースを参考にさせていた…

MEFでオープンジェネリック型をエクスポート

MefContribにはジェネリック用のGenericCatalogクラスがあります。これを使うとオープンジェネリック型をエクスポートすることができます。ただ、ドキュメント不足な上に、ちょっと癖がありそうです。公開するインタフェースは、こんな感じです。 // このイ…

LinFu.DynamicProxyの使い方が分からない

MefContribにCastle以外にもLinFu.DynamicProxyが含まれていたので弄ってみたのですが、どうにも使い方が分かりません。 using LinFu.DynamicProxy; public class MyInterceptor : IInterceptor { public object Intercept(InvocationInfo info) { return in…

MEFでAOP

過去に似たようなことをやった気がしますが、今回はMefContribを使った一応、正式っぽい方法で。 using System; using System.Linq; using System.Reflection; using System.ComponentModel.Composition; using System.ComponentModel.Composition.Primitive…

JetBrains.Annotations

ReSharperはコード分析してnull参照が発生する可能性があるところを指摘する機能があります。 このように該当箇所に波線が出て便利です。しかし、メソッドの戻り値がnullの場合は、残念ながらチェックされません。 ただ、この機能はカスタム属性が使われてい…

WebActivatorとPreApplicationStartMethodAttribute

MefContrib.MVC3によって生成された、AppStart_MefContribMVC3.csには、MEFを使用するための初期化コードがありますが、このコードは誰が呼び出しているのでしょうか? [assembly: WebActivator.PreApplicationStartMethod(typeof(TestMvcApplication.App_St…

ASP.NET MVC 3でMEFを使う

MefContrib.MVC3を使うと簡単にASP.NET MVCからMEFを使えるのでご紹介。前提:NuGetがインストール済みなこと。まず、ASP.NET MVC3のプロジェクトの用意しましょう。ASP.NET MVC3を選択。 面倒なのでデフォルト実装ありで。 では、MEFを使えるようにしましょ…

MarshalByRefObjectから継承する

小ネタ。通常、MarshalByRefObjectから継承することはあまり無いとは思いますが、RealProxyを使ったAOPモドキなんかで、ひょっとしたら使うことがあるかも知れません。その場合のデメリットを見てみましょう。 using System; using System.Diagnostics; name…

フィールドの初期化とコンストラクタ

C#

小ネタです。 namespace AssemblySize { class Program { // フィールドの初期化が沢山 private int _0 = 0; private int _1 = 1; private int _2 = 2; private int _3 = 3; private int _4 = 4; private int _5 = 5; private int _6 = 6; private int _7 = …

カスタム属性なしのMEF

CodePlexにあるMEF v2ではカスタム属性ではなくコードでImport/Exportが可能になっています。「おいおい、依存関係の解決をコードでやらずに設定ファイルに出して、設定ファイルが複雑になるのでカスタム属性で指定できるようになったのに、また、コードに戻…

小ネタ

C#

ソースレビューをしていてAnyで充分なところでCountを使っているケースを見かけたので。STLのempty/sizeの使い分けと同様ですね。 using System; using System.Diagnostics; using System.Linq; class Program { static void Main() { var q = Enumerable.Ra…

C#の型推論は怠けすぎ

2010-09-29(via やねうらおさんとこ)C#はバランスと取れた良い言語ですが、あえて欠点を挙げると型推論がイマイチですよね。 using System; using System.Collections.Generic; module M { static Main() : void { // C#のvarに近いが初期化は必須ではない /…

カスタム属性が見えるモノ

最近知ったショックなこと。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sample { [AttributeUsage(AttributeTargets.Class)] class MyAttribute : Attribute { public string Name { private set; …

RubyのCycle

ネットを見ていて、true, false, true...と繰り返すコードについての話題があり、そこでRubyにcycleなるものがあることを知りました。Rubyに対するアンテナが低くて・・・(^^;C#のEnumerableクラスには同様のものはありませんが、自分で書くとこんな感じでし…

twitter

以前のようなペースで日記を更新する元気がないので、ちょっとしたことはtwitterでつぶやくことにしました。twitter自体は去年からアカウントをとっていましたが去年はつぶやく気力すらなくて・・・(^^;

Managed Extensibility FrameworkからIronRubyを簡単に使う

MEF記事の連続投下第三弾。あまり一般受けしないネタを連投です。(^^;IronRubyをアプリケーションにホスティングは難しくありませんが、dynamicを使うなど特別扱いが必要だったりするし、何よりもVS上でコードを書いてビルドという流れの中に「rubyでコード…

Managed Extensibility FrameworkでAOPその2

MEFを人に説明するとき、どう言えばよいのでしょうか? 私の場合、DIコンテナを知っている人には「DIコンテナっぽい何か」と茶を濁しています。さて、DIコンテナはxmlで設定ファイルを書くものが多かった印象がありますが、MEFはカスタム属性ベースになって…

Managed Extensibility FrameworkでAOP

個人的に.NET4で一番期待していたMEFですが、何か足りないなぁっと思っていたらAOPがサポートされていなかったんですね。twitterでつぶやいていた案でちょっと組んでみました。ExportProviderでごにょごにょ。ただ、まだ勉強のためのコードなのでこのまま仕…

近況

今年初めての日記・・・(^^;最近、技術的に面白みのないコードしか書いていないので、プログラミングが楽しめない状況だったりします。今年はプログラミング以外の趣味に力を入れることにしたので、日記の更新頻度が低いと思います。ごめんなさい。

ホワイトボードプログラミング

プログラマーの力量を見極める--面接官になったら尋ねるべき質問実例集 - ZDNet Japan なんか話題になっていたので。 ループを使わずに配列の順序を逆にする。 再帰呼び出しはループに含めますか?→再帰呼び出しを知っていることを試したい? ライブラリを使…

ブロブのプロパティ取得

昨日のサンプルでブロブのプロパティが取得できていなかったので、再チャレンジ。 private void Reflesh() { var blobs = blobContainer.ListBlobs().OfType<CloudBlob>().ToList(); // FetchAttributesを呼び出さないと属性が読み込まれない? blobs.ForEach(blob => b</cloudblob>…

ブロブストレージを使う

Windows Azure入門のp119からのサンプルを最新のSDKに置き換えてみます。まずは、Cloud Serviceプロジェクトを新規作成します。次に、 ServiceDefinition.csdefの編集。 <ServiceDefinition name="PhotoList" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> <WebRole name="PhotoList_WebRole"> </webrole></servicedefinition>

ブロブストレージ

先日買った書籍を読みながら、ちまちまコードを書いているのですが、 private void OldCode() { // 書籍のコード blobStorage = blobStorage.Create(StorageAccountInfo.GetDefaultBlobStorageAccountFromConfiguration()); blobContainer = blobStorage.Get…

usingの闇

C#

More Effective C#を読んでいて、ふとusingの知らない使い方を発見。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace UsingSample { class Foo : IDisposable { public void Dispose() { Console.WriteL…

技術書

本屋に出かけて技術書を何冊か物色。バーンアウト中は技術書コーナーに近寄りもしなかったので、良い傾向です。More Effective C#作者: Bill Wagner,長尾高弘出版社/メーカー: 翔泳社発売日: 2009/12/01メディア: 大型本購入: 9人 クリック: 140回この商品を…

IronPythonを使った多重継承

C#の場合、多重継承はインタフェースを使うことになりますが、実装クラスへの委譲を書くのがちょっと面倒です。一方、Pythonは実装の多重継承ができるのでこれを利用して委譲の手書きを手抜きできないか試してみました。まずは、多重継承させるインタフェー…

IronRuby RCでのホスティング

IronRubyはα時代から弄っていましたが、バージョンが上がるたびにホスティング方法が変更されていました。RCになったのでそろそろ最終版だと思いたいのですが、どーなんでしょ。(^^;てきとーなrubyのクラス。 class Foo def bar puts 'baz' end def add(x, y…

Windows Azure

Windows Azureを弄ったことがなかったので、ちょっと試してみました。Silverlightで作ったサンプル。どっかてみたような?・・・ちょっとパクリました。(^^; Google Gadgetsとして貼り付けています。コードはXAMLのみ。こちらもスーパーpre記法を初めて使っ…

はじめてのBing API

私の調べもの(MS系技術情報)の場合、googleよりもbingの方が良い結果を返すことも多く、最近はもっぱらいbingを使っていたりします。Bing API 2.0のリファレンスを見たら何やら面白いことができそうなので、ちょっと弄ってみました。とは言っても英語->日本…

DynamicObjectのTryUnaryOperation

インクリメント、デクリメント演算子でも呼び出されて素敵なのですが、 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Dynamic; namespace DynamicSample { class MyDyna…