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

C#3.0

疲れている人のためのコードスニペット in C# できました

いまさらながら、何気にコードスニペットって自作したことなかったなーと思いまして。 「疲れている人のためのコードスニペット in C# (orz.snippet)」作りました。習作です(これはひどい)。われながら素晴らしく実用性のあるコードスニペットであると自負し…

ラムダとY Combinatorと私。Y Combinatorは恐ろしい子。

再帰的な関数を作る場合に、その関数に名前をつけずに定義するにはどうすればよいの?*1 というのがY Combinatorの中心的話題のようだ。 つまり、不動点演算子を用いると、ラムダ式で再帰表現できるというお話。 f(x) = x なる x が不動点となるのであった。…

数値をアルファベット(26進数ぽ)へ変換、それはExcelのカラム名的な何か。

Excelをごにょごにょしていると、Excelの79列目のカラム名が「CA」だとかってのを、 取得したくなることがある。そんなときのためのブツ。こーゆーのは再帰でうまく表現できますね(^ω^) using System; using System.Collections.Generic; using System.Linq;…

世界のナベアツ問題でExpression Tree(式木)と戯れる

LINQの本質とはあんまり関係ないです。Expression Treeを使う練習です。 意味もなく汎用世界のナベアツ再びであります。 難しいことはしていません。生暖かい目で見守ってください(^ω^;) using System; using System.Collections.Generic; using System.Linq…

LINQで順列生成

元ネタ:順列 - 一生酩酊 id:taguoさんが、文字列の順列をC#のLINQで生成していらっしゃいました。 おお、こいつはカッコイイぜ!! とても勉強になりました。 しかし、"abbc"のように同一の文字を含む文字列については順列が生成されませんでした。 あまりL…

C#3.0の拡張メソッドでMix-in的な何か。それは写輪眼でコピー忍者なカカシ先生。

元ネタ 空のインターフェースに拡張メソッド(Extension Methods)を足すと それって Mix-in クラスだ(module とみなせる)よね、ということだったんだな。C# 3.0 で拡張メソッドによる Mix-in 的ななにか - いげ太のブログ 確かにこれは、Mix-in的な何かっ…

拡張メソッドあれこれ

なんか使えそうな感じの拡張メソッドをいろいろ作ってみるテスト。 けど月並みなアイデアばかりで辟易だぞなもしorz using System; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Linq;…

いわゆるひとつの赤間本

いわゆるひとつの赤間本です。 こーゆーのが欲しかったのですよ。執筆感謝。 というわけで、まったりとLINQ勉強していきまーす。 #紀伊國屋書店で買ったのだが、最後の1冊だった。みんなLINQに興味深々なんだねえ。 #というか、その残りの1冊が丁度立ち…

「微妙・五言絶句」をC#に移植してみた件

元ネタ 「微妙・五言絶句」を作成した件 - どんなジレンマ 「微妙・五言絶句」をF#に移植してしまった件 - GrayRecord 微妙なところが微妙に面白かったので、微妙な感じでやってみた。 using System; using System.Text; using System.Text.RegularExpressio…

LINQで虫食い算的なもの

以前書いた、Haskellで虫食い算的なものと同じ問題を、LINQで解いてみる。 using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { // 虫食い算 // 4○○ …

ゆの in C# その2

元ネタのまんがやアニメは存じ上げませんが、「ゆの in language」っちゅーハック遊びが ここ最近流行っていたるらしいので、C#でも…その2。 前回はあまりにもオーソドックスすぎたということで反省。 そして、まったく意味もなく無駄にラムダ式…、 という…

ゆの in C#

元ネタ存じ上げませんが、「ゆの in language」っちゅーハック遊びが ここ最近流行っていたらしいので、C#でも。 ええまあ、なんの捻りもなく演算子のオーバーロードですが…(^ω^;)サーセン using System; namespace ConsoleApplication1 { public partial class …

Project Euler第1問目

Project Eulerはじめました。(冷やし中華的な意味で) 問題 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 100…

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

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

いまさら聞けないアルゴリズム その1「ハノイの塔」

なんの変哲もないC#で書いた「ハノイの塔」です。 それ以上でもそれ以下でもありません。もちろん模範解答というわけでもない。 using System; using System.Collections.Generic; namespace ConsoleApplication1 { public class Program { private static v…

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

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

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

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

MSILコードジェネレータでアスペクト指向的なラップクラスを作る

アスペクト指向とはアスペクト指向とは、いわゆる“オブジェクト指向だけでは解決が困難であった問題”を うまいこと解決しましょうよという試みであり、オブジェクト指向に取って代わるものではなく、 オブジェクト指向を補完するためのものであり、オブジェ…

いまさら聞けない、ジェネリックでダウンキャストによる問題を回避

ジェネリックでダウンキャストによる問題を回避まず、ダウンキャストをしている問題のコード using System; namespace ConsoleApplication1 { public abstract class Hero { public Hero GetMyself() { return this; } } public class Ultramen : Hero { pub…

LINQのWhere条件を動的に変更する方法

@IT:http://www.atmarkit.co.jp/fdotnet/joyofprogram/20080418linqtoxml01/linqtoxml01_01.htmlロブのジョイ・オブ・プログラミングってwww 元ネタが「ジョイ・オブ・ペインティング(ボブの絵画教室)」って マニアックだろ常考。 で、本題 ■LINQのWhe…

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

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

デザインパターン第13回「NullObjectパターン」

デスマプロジェクトに放り込まれて、かなりヤラレていますが、 久しぶりに独りよがりなデザパタ講座です。 今回はGoFデザインパターン以外のパターンを取り扱いたいと思います。 スマートにコードを表現することができ且つ、ケアレスなバグを減らす効能のあ…

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

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

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

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