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

プログラミング

ジャグ配列ジェネレータ(ちょっとしたスニペット)

ジャグ配列を作るのって、じみ〜に面倒だったりしませんか。 そんなあなたに、ちょっとしたC#スニペット。こんなんどうでしょう。 using System; using System.Drawing; using System.Runtime.CompilerServices; namespace ConsoleApplication1 { public cla…

globalコンテキスト キーワードと名前空間エイリアス修飾子(::演算子)

確かC#2.0から地味に(こっそり)追加されたキーワードだったと思いますが、 globalコンテキスト キーワードって、マイナーっぽいですね。 これを使って書いてるコードを仕事では見たことがないし。完全に存在が忘れられている感すらあります。 オライリー本の…

ExpandableObjectConverterっていちいち実直に実装するのは面倒だよね。Reflectionを活用してネストしたプロパティを楽に量産してみよう。

ExpandableObjectConverterのサブクラスで実装する内容TypeConverterAttribute属性を用いて、ExpandableObjectConverterおよび、その派生クラスを指定することで プロパティグリッドにネスト表示されるプロパティを作成することができます。 通常、Expandabl…

拡張ユークリッド互除法も再帰で書いた方が自然に見える

最適化のために最大公約数を求める必要があって、 ユークリッド互除法と拡張ユークリッド互除法を書いたので、チラ裏に残しておく*1。 ユークリッド互除法まずはよく見る実装をC#で public static int Gcd(int a, int b) { while (b != 0) { int r = a % b; …

コントロールのTabIndex順で処理したいことってあるよね。階層のTabIndexを表現してみよう。

またまたWindowsApplicationにおける標準コントロールが、空気読めなさすぎなのではないかというお話。 C#でTabIndexの階層構造順にControlを並べ替える方法の1つの例を示します。 TabIndexプロパティだけじゃ、TabIndexの階層構造わかんねーじゃん各標準コ…

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

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

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

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

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

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

C#でもタプル使いたいよね。で、GetHashCodeのオーバーライドはどう実装すればよいの?

遅ればせながら、C#でもタプルが欲しくなった今日この頃。 C#4.0では標準でタプルを用意してくれるっぽいけど、今すぐ欲しいよ。 HaskellやPythonなどにあるタプル。C#でも使いたいよね!タプルとは、いくつかの値(数値型、文字列型など)をひとつにまとめて…

Excelのカラム名(26進数ぽ)を数値(10進数)へ変換。頑張れ日本のC#er。

以前、数値をアルファベット(26進数ぽ)へ変換、それはExcelのカラム名的な何か。という記事を書きました。 これは、10進数から26進数へ変換を行うだけの、ごくごく簡単なアルゴリズムです。 しかし、うちに来た人は「26進数から10進数 Excel 変換 C#」という…

任意のジェネリック型を動的に生成

ちょっとしたスニペットを置いておきます。任意のジェネリック型を動的に生成するためのメソッドです。 例えば、アセンブリ外に非公開の型についてジェネリック型を利用したいような場合等に有用です。 System.ReflectionやらSystem.Reflection.Emitを使って…

TextBoxってReadOnly = trueでもフォーカスあたる。空気読めなさすぎだよね。

WindowsApplicationの標準コントロールってKYだよねというお話C#でもVB.NETでも当然同じなんだけど、TextBoxコントロールのReadOnlyプロパティをtrueに設定したら、 入力を受け付けなくなるので、背景色をグレーに設定したりする。でもフォーカスは普通に受…

そういや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#でプログラム言語「てってってー」のインタプリタを書いたよ

何かを受信(^o^)ノ プログラム言語「てってってー」 javascript - てってってー言語を移植してみた - 404 Blog Not Found Wikipedia - Brainf*ck というわけで、C#erな自分はC#で「てってってー言語」のインタプリタを書いてみました。 基本「Brainf*ck」の…

型なしDataSetと型付DataSet、そして片想いORマッピング的な何か。

ネタ元 山本大@クロノスの日記 - アンチ型付DataSet派の自作ORマッピングよりなぜ型付DataSetを使うのか、型なしDataSetは使わないのか型付DataSetについては、嫌な思い出も少なくないので不満がないわけでもないのだけど、 常識的に考えて「型付DataSetを…

ニコ動APIとLINQ to XMLでごにょごにょしよう

ニコニコ動画APIで動画情報とかサムネイルとかコメントとかFLVファイルとかいろいろ取得したりする 手抜きで作りかけの雑なC#のコードを今更ながらあげておきます。 いろいろダメなところ(手抜き)があるので、もし参考にするのであれば、そこん所ご注意くだ…

移動とリサイズ可能なコントロール

ネタ元:VB.NETで作る!移動、リサイズの出来るコントロールを作る http://shinshu.fm/MHz/88.44/archives/0000043418.html 単純におもろいなぁと思いまして、C#でMix-inっぽくシンプルにコントロールに実装できるように それ用のインターフェイスおよび、そ…

FlagsAttributeとビット演算のちょっとしたレシピ

「ハッカーのたのしみ」はかなりの良書。いまさらFlagsAttributeのレシピ、リターンズ。.NET FrameworkにBitCountくらい標準であってもいいのにね http://d.hatena.ne.jp/zecl/20100228/p1 ※この記事の内容は古いです。上記の記事をあわせて読むことをオスス…

カレー好きのための、ラムダ式でカリー化な拡張メソッド。

以前、C#2.0の匿名メソッドによるカリー化 という記事を書きました。 では、C#3.0ではどうなるのでしょう。 もちろんC#3.0でも匿名デリゲートを使うことはできますが、C#3.0であればやはりラムダ式です。 記述が簡潔になって、より直感的で分かりやすくなり…

C#でmap(写像)、foldlとfoldr(畳み込み)、unfold(解きほぐし)とか

※追記しました。2008/12/16 オブ脳寄りの人間なので、どうしても関数型脳に染まりきれないところはあるんですが、 今年Haskellを学んでみて、foldとかunfoldってのは、すっげー便利だなと思いました。 そんなわけで、C#でちょっくらfoldとかunfoldしてみよう…

IEnumerableをシャッフル!

ネタ元:id:kawatanさんのエントリより http://d.hatena.ne.jp/kawatan/20081210 IEnumerableを実装していれば何でもシャッフルって、素敵ですね〜。 カードゲームなんか作るときにサクッと利用できちゃいますね。 よいものは盗んじゃおう!ということで、さ…

C#でTypeSafeEnumを書いてみた

タイプセーフenumパターンというのがあったのですね。知りませんでした。 ジョシュア ・ブロック氏が「Effective Java」という本の中で提案していたものらしいです*1。 いやはや、もっと幅広く勉強せんとなぁ・・。ということで、 id:bleis-tiftさんのエント…

プログラマが主人公の漫画

プログラミングの話題を中心としたプログラマが主人公の漫画って、意外とない。 意外でもなんでもないんだけど、本当にない。俺は知らない。誰か書け。 そして出来れば週刊少年ジャンプで連載というカタチでお願いしたい。 絵は小畑健みたいな現実感のある落…

いまさらC#でライフゲームを書いてみた

どう書く?orgにて、C#で既に書いてらっしゃる方が多数おられますが、 どうもコードを短くすることに重点を置いて書いているような感じで、正直なんだか読みにくいなーと思い・・・。 冗長だけどわかりやすく、オブジェクト指向っぽくライフゲームを書いてみ…

PowerShellで世界のナベアツ問題

「ブラッディ・マンデイ」の高校生ハッカー藤丸君も使っている程に流行というPowerShell。 そんなわけで、とりあえず肩慣らしに当ブログ恒例の「世界のナベアツ問題」を書いてみた*1。 function nabeatsu { 1..40|%{ $n=@("Aho")[$_%3]; if (!($_.ToString()…

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

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

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

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

彼氏が他人のコードをコピペしていた。別れたい…

他人のコードをコピペして、コードレビューの時に説明できなかったら恥ずかしいww 下向いちゃうしww 男ならなんでもかんでもコピペしないで欲しい・・・ コードレビューのとき真顔で「それはおまじないです。」とか・・・・もう最悪ww せめて普通に理…

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

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

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

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