C#

パターンマッチ

C#

入るらしい。範囲も欲しい! http://www.infoq.com/news/2014/08/Pattern-Matching

C# 5 での互換性のない変更

C#

C#5 では、ループ変数とラムダ式の嫌な問題を一つ直すようです。 var values = new List<int>() { 0, 1, 2 }; var funcs = new List<Func<int>>(); foreach ( var v in values ) funcs.Add( () => v ); foreach ( var f in funcs ) Console.WriteLine( f() );このコードを実</func<int></int>…

iPhone Tracker for Windows をつくりました

C#

http://sites.google.com/site/siokoshou/ Windows 7 x64 でのみ動作確認済みです。.NET3.5 入り XP でも動きます。↓のMac版とだいたい同じモノのつもりです。でも、Mac持ってないし本家のモノを動かしたわけではないので本当に同じかわかりません。 http://…

除算と剰余の整数オーバーフロー

C#

プログラムでは整数の四則演算はよくよく注意しないと足をすくわれることがあります。 整数と呼んでるものが普通と違って範囲があって循環しているためです。最大値と最小値の絶対値が 1 ズレているのもいや〜な問題の元になります。この 1 ズレのため除算で…

.NET4.0 の並列処理を試してみた その3 : サーバー GC

C#

id:siokoshou:20090717、id:siokoshou:20090721、id:siokoshou:20090722 に続く TPL の記事。ベータ2の改良点がパラレルチームの blog に投稿されています。でも、今回はそんなのがどうでもよくなるほど驚いたネタ。 ベータ2で7月に試したコードを実行してみ…

Reactive Framework (Rx) で遊んでみた

Rx とは このごろじわじわと情報が出てきている Rx こと Reactive Framework で遊んでみました。x はどっから出てきたの?ってつっこむのがお約束らしいw pull 型の IEnumerable/IEnumerator をひっくり返して、push 型な IObservable/IObserver を作ったそ…

Atomic

C#

Atomic の実験をしてみました。下のコードの Reader スレッドでは表示されることはなさそうに見えますが、実際には何度も何度もいろいろな値が表示されます。 x86 ではボコボコ表示されます。 x64 では試した限りでは起きませんでした。でも起きないことは保…

スマートタグを開くショートカットキーは Ctrl+.

using を補完したり、インターフェイスの実装を補完するときに使うスマートタグ。 これをキーボードで開くショートカットは「Ctrl+.」。 . じゃ見えないかもしれないので日本語でも書いておくと「コントロール + ピリオド(ドット)」ねw これを知るまでいちい…

DataGrid に新規追加行(NewItemPlaceholder)を表示する方法

WPF の DataGrid に新規追加の行(NewItemPlaceholder)が表示されなくて数日はまったので、解決方法のメモ。新規追加の行と言ってるのは、ユーザがアイテムを新たに追加するためのプレースホルダのこと。表示される場合は、デフォルトでは空の行が表示されま…

完成かも

C#

C#コンパイラチームにいた Sreekar Choudhary さんが Halo チームに移動したそうな。 C#4コンパイラができあがったのかもしれない。http://blogs.msdn.com/sreekarc/archive/2009/09/05/joining-halo-team.aspxそれにしてもなんとまあ極端な…w

Linq to Objects の途中で printf デバッグする方法

C#

よく忘れるのでメモ。ダークサイドの技なのでご利用はほどほどに。 var ms = from type in ... // for debug let a = Console.WriteLine( type.Name ) is object from method in type.GetMethods( ... select method; ネタ元 素数を求める1行プログラム(C#3…

.NET Framework に設計を学ぶ : bool を返すメソッドとプロパティの接頭辞

id:siokoshou:20090817#p1 のつづきです。.NET Framework を調べて、名前付け/設計の参考にしてしまおうというシリーズの2回目です。今回は bool を返すメソッドとプロパティの接頭辞を調べてみました。 Top30 Top は Is で bool を返すメソッドとプロパティ…

.NET Framework に設計を学ぶ : メソッド名の頻出接頭辞

名前大事。間違いなく大事。名前大事を逆手にとって、名前をランダムに改変して読めなくするツールがあることからも、名前がいかに大事かわかります。 名前大事はわかるけど、うまい名前が浮かばないことがよくあって、そういうときはメソッドがうまく設計で…

new int()

C#

こんなの書けるんだ。キモいんですケド。 int n = new int(); // 0

.NET4.0 の並列処理を試してみた その2 : 再帰と並行性

C#

id:siokoshou:20090721 のつづき。前回は並列化したのに微妙に速くなっただけで、Parallel.For 使えばそれでおしまい。じゃないことがわかったところまで。今回はもっと速くします。 ここでちょっとおわびです。前回は気づいてなかったんだけど、ベータのベ…

.NET4.0 の並列処理を試してみた その1 : Parallel.For, ConcurrentQueue

C#

.NET4.0 から従来よりも抽象的で簡単に使える並列ライブラリがどさっと追加されます。おもしろそうなので VisualStudio2010 のベータ1で試してみました。 結論から書くと Parallel.For すばらしい! Concurrent なコレクションはロックなしで複数タスクから…

.NET4.0 の Parallel メモ

C#

ずいぶんと気合入れて追加してきてるみたい。気になるものをメモ。あとでしっかり読……みたい。 http://blogs.msdn.com/pfxteam/archive/2009/03/04/9457880.aspx ConcurrentBag : スレッドセーフってどういうこと?ロックしないで複数のスレッドから同時に A…

De Bruijn sequence を列挙するコード

C#

いろいろとコメントをいただいているうちに De Bruijn sequence がわかってきました。初めは数学的な背景には興味がなかったんだけど、De Bruijn sequence をすべて列挙する問題が最近遊んでいるデータマイニングの頻出集合を求める問題とそっくりなことに気…

一番右端の立っているビット位置を求める「ものすごい」コードのていねいな説明

C#

id:siokoshou:20090704 のはてブのコメント見てるとわからないってコメントが結構あるので、もう一度がんばって説明してみます。まあわかったところで得はないかもしれませんw public static int GetNumberOfTrailingZeros( long x ) { if ( x == 0 ) retur…

一番右端の立っているビット位置を求める「ものすごい」コード

C#

一番右端の立っているビット位置(RightMostBit)を求めるコードで速いのないかなーと探していたら、ものっっっすごいコードに出会ってしまったのでご紹介。2ch のビット演算スレで 32bit 値のコードに出会って衝撃を受けて、その後 64bit 値版のヒントを見つ…

LINQで頻度を求める

C#

昨日の関連の話題。コード成分が足りなかったので補給に。 Dictionary を使って頻度を求めるのは定番中の定番の使い方だと思います。たとえば、"the quick brown fox jumps over the lazy dog" の文字列の中で、a が何回使われてて、b が何回使われているか…

データマイニングしてみた

C#

数日前、オレンジニュースで「2008年度人工知能学会の発表資料「頻出パターン発見アルゴリズム入門 −アイテム集合からグラフまで−」(PDF)が紹介されてました。データマイニングに興味があったので読んでみると、タイトルどおりのわかりやすい入門記事だった…

Debug.WriteLine コードスニペット再び

昔書いた System.Diagnostics.Debug.WriteLine を dw[Tab] で呼び出すコードスニペットを更新しました。SimpleTypeName 関数を使ってちょっと賢くなりました。using の有無に応じて System.Diagnostics.Debug.WriteLine と展開するか、Debug.WriteLine と展…

PropertyChanged

C#

日々、せっせとバグを作っている siokoshou です(^^; 注意喚起になればいいかなと思って、今日は自分のバグの恥さらしでも。 WPF の Binding で値の変更が反映されない問題が起きて、あーでもないこーでもないと長い時間かけて見つけた原因は、PropertyChang…

Silverlight Toolkit の NumericUpDown, 0.1 + 0.1 + 0.1 + ...

C#

昨日触れた NumericUpDown で気になるところが。Value (現在の値) と Increment (増分または減分する値) が double なんです。double って0.1を10回足しても 1 にならなかったり、n + 1 == n が真になったりするから怖い。何を言ってるのかわからねーと思う…

2進そろばんを作ってみた

こんばんは、siokoshou です。気になる色は Midori と Red です。あと .NET4.0。って色じゃないか。こないだの本に3進法のそろばんが載ってました。写真が載ってるので本当に作ってしまったようですw それがおもしろかったので、2進そろばんを作ってみまし…

Singleton スニペット

C#

スニペット使ってますか? cw 大好きです。 シングルトンのスニペットがあればいいなぁと思いつつ、そうそうシングルトンを使うわけでもないので今日まで放置でしたが、大量のシングルトンが必要になって(つっこまないで(^^;)ついに書きました。 書いたとい…

リフトとは?

C#

C# の仕様に「リフト」って言葉が出てくるのを知ってますか? null 許容型にリフト変換やリフト演算子という名前が出てきます。今日はその「リフト」のトリビア。ここまでだけでも十分トリビアの気もするけどw この名前、まず聞くことないし(^^; VisualStud…

.NET3.5 SP1 & VS2008 SP1 のベータ

C#

間に合わなかった物全部入り詰め合わせパック。http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspxhttp://blogs.msdn.com/tims/archive/2008/05/12/introducing-the-third-major-releas…

モナドとかLINQとか

一つ前の記事のコメントがすばらしすぎるのですが、長すぎて扱いづらいので無理やり記事を書いてみたり(^^;NyaRuRu さんが挙げた >・IEnumerable は [a] というより IO [a] ? >・実は LINQ to Object は IO と List の合成モナド? の部分について、ちょっと…