タグ

.NETに関するairj12のブックマーク (134)

  • n回処理を繰り返したい (2):Gushwell's Dev Notes

    前回「n回処理を繰り返したい (1)」の続きです。 こういった繰り返し処理の時には、何回目の処理かを知りたい場合があります。 そんな時のために、もう一つ拡張メソッドを用意しましょう。 public static class IntExtentions { ... public static void Times(this int value, Action<int> action) { for (int i = 0; i < value; i++) action(i); } } こすれば、次のようなコードが可能になります。 var nums = new int[10]; 10.Times(n => nums[n] = n + 1); 参考に、for文使ったコードも示します。 var nums = new int[10]; for (int n = 0; n < 10; n++) nums[

    airj12
    airj12 2012/01/23
    単純だけどラムダ式と拡張メソッドの説明するのに丁度いい
  • TreeListView Sample

  • C1FlexGridとC1DataGridの違い - Yamakiの日記

    ComponentOne Studio 2011JのSilverlightコンポーネントとWPFコンポーネントには、それぞれ同様にC1FlexGridとC1DataGridという2つのデータグリッドコンポーネントが存在しています。 コントロール名 Silverlight WPF C1FlexGrid FlexGrid for Silverlight FlexGrid for WPF C1DataGrid DataGrid for Silverlight DataGrid for WPF なお、FlexGridは、それぞれFlexGrid for Silverlight 1.0J、FlexGrid for WPF 1.0Jとして、単体製品も存在しています。 1つの製品になぜ2つもデータグリッドを収録する必要があるのかと思われるかもしれませんが、これら2つのデータグリッドには明確なコンセプトの

    C1FlexGridとC1DataGridの違い - Yamakiの日記
  • C#たん Advent Calendar 2011 : ATND

    C#たん Advent Calendar 2011 : ATND
    airj12
    airj12 2011/12/25
    素晴らしかったっす
  • ネイティブと.NETと

    DynamicのついでにILの話したついでに、ネイティブと.NETの対比の話もしましょうか。 ここでいうネイティブは、実CPUのネイティブ コード(を直接出力するC++などの言語)のことです。 ネイティブか.NETか、それが問題だ 嘘です。 「AかB、どっちがいい?」って質問の答えは、往々にして「両方」です。残念ながら。毎回毎回、「これ1つですべてを解決!」みたいな銀の弾丸を期待しては、毎回毎回、夢物語に終わるのです。 アプリは.NET(C#とか)で書いた方が楽。それは間違いないです。一方で、インフラ的なところ、データベースやらGUIフレームワークみたいなのの内部はネイティブで書いた方が楽。場合によってはネイティブで書かざるを得ません。極度のパフォーマンスが必要な場面では、.NETで書く方が却って大変になることが多いです。 結局、適材適所としか言いようがないです。じゃあ、それぞれどこが適所

    ネイティブと.NETと
    airj12
    airj12 2011/12/18
    ”ライブラリさえ共通利用できるなら、言語の違いなんて微々たるもの” ←超同意 / いまどきC/C++使うならCPU依存の最適化はやって当然な気はする
  • 動的処理

    今日のテーマは動的(dynamic)です。 最初に注意しておきたいのは、動的と言っても何を動的に行うか、いろんなやり方があって、いろんな用途があります。動的ローディング、動的コード生成、動的型付けなどなど、「動的~」の「~」の部分をちゃんと考えましょう。 動的ローディング 既知の型を、未知のDLLから読み込みます。 例えば以下のような感じ。System.Reflection.AssemblyクラスのLoadメソッドなどを使ってDLLを読み込んで、System.Activator.Createメソッドでインスタンスを作ります。 インスタンスを作る部分だけ面倒ですが、一度インスタンスを作ってしまえば、あとは普通に(特に苦労することなく)使えます。 用途1: プラグイン プラグイン、つまり、アプリ体とは別の第3者がアプリへの拡張機能を提供する場合、まさに、既知の型を未知のDLLから読み込むこと

    動的処理
    airj12
    airj12 2011/12/16
    C# の魅力を的確に教えてくれるなー
  • Future directions for C# and Visual Basic | BUILD2011 | Channel 9

    In this talk, Technical Fellow Anders Hejlsberg will share project plans for the future directions of C# and Visual Basic, including a discussion of what trends are influencing and shaping the direction of programming languages. Anders will talk about asynchronous programming and Windows 8 programming, coming in the next version of Visual Studio. He will also discuss the long-lead project “Roslyn”

    Future directions for C# and Visual Basic | BUILD2011 | Channel 9
    airj12
    airj12 2011/12/16
  • Windows Runtime internals: understanding "Hello World" | BUILD2011 | Channel 9

    The Windows Runtime is a key piece of technology used by all Metro style apps in Windows. How exactly does it work though? You too can become a Windows Runtime Expert by taking a deep dive into the internals of the Windows Runtime using not much more than a new project in Visual Studio and a debugger. After this talk, you will understand how A "Hello World" Metro style app uses the Windows Runtime

    Windows Runtime internals: understanding "Hello World" | BUILD2011 | Channel 9
  • Archived MSDN and TechNet Blogs | Microsoft Docs

    airj12
    airj12 2011/12/16
    めも。
  • 規約、実装、アルゴリズム

    今日は抽象化のお話です。 オブジェクト指向っぽいことしようぜぇ? コレクションと列挙 昨日・一昨日で説明したコレクションですが、そのうちいくつかの概要を、1枚の絵で表してみましょう。 並べてみると、共通する性質が見えてきます。このくくりでいうと、要素の列挙がすべてのコレクションに共通しています。そこを抜き出してみましょう。 「オブジェクト指向入門」的な記事でよく見かける図が出来上がりました。共通部分はインターフェイス化して実装しましょう! 抽象化 こういう、共通部分のくくりだしのことを抽象化(abstraction)と言います。 数学でよく使う手口です。どうしてそんなことをするのかというと、一見全然違うように見えるものに対して、同じ定理・同じアルゴリズムを適用できるから。証明が1回で済むわけです。 まあ、2例ほど出しましょう。 素因数分解 因数分解、高校で嫌というほどやらされたと思います。

    規約、実装、アルゴリズム
    airj12
    airj12 2011/12/15
    なんか拡張メソッドの本質的な価値が初めてわかった気がする
  • コレクションの内部実装

    昨日に引き続きコレクションの話なの、とC#たんはC#たんは前振りしてみる。 今日はコレクションの中身がどうなっているか、実装についてです、とC#たんはC#たんは説明してみたり。 配列リスト 個数不定のデータを持つための一番手っ取り早い方法は、事前に配列を確保しておいて、状況に応じて確保しなおす方法です。 List<T>やStack<T>で内部的にやってることはほぼこれだけです。その他のコレクションでも、この手の仕組みはよく使います。 要は、配列と、実際に何個目まで要素が詰まっているかを表す変数countを持ちます。 要素を追加するたびに、countを増やします。 配列がいっぱいになったら、新しい配列を確保して要素をコピーします。 要素のコピーはそれなりに高負荷なので、要素の最大数がだいたいわかってる場合は、事前に確保する配列の長さをコンストラクターに渡しておきます(capacity引数)。

    コレクションの内部実装
    airj12
    airj12 2011/12/13
    ".NETのDictionary実装では、bucket.Lengthを常に素数(たまたまで倍数になりくい)にしている" こういう話萌える
  • C#で始めるテスト駆動開発 ~TDDBC横浜の課題をやってみよう

    はじめに 各地でTDD Boot Camp(TDDBC)が開催されるようになり、このところTDD(テスト駆動開発)が注目を浴びています。ただ、自分でも試してみようと思った時に目につく書籍や記事などは、JavaRubyPHPといった、いわゆるオープンソース系の言語ばかり。.NET Framework(Windows)で開発の仕事をしているとTDDは関係ないんだろうか、…とさえ思えてくるかもしれません。 しかし、そんなことはありません。.NET FrameworkでのTDDに必須のユニットテストフレームワークとして有名なNUnitの最初のバージョンは、Visual Studio .NET 2002がリリースされる以前の2001年に公開されています。.NET Frameworkは、生まれたときからTDDと共にあると言っても過言ではないでしょう。 この記事では、TDDとTDDBCについて簡単に

    C#で始めるテスト駆動開発 ~TDDBC横浜の課題をやってみよう
  • コレクション

    ちょっといったんTIPS系に話を戻しましょうか、とC#たんは心境を述べてみます。 日のテーマはコレクションについて。どういうコレクションがあって、どういう場面に使うのか、とC#たんは日の説明を開始します。 明日、内部的な実装に踏み込んでみましょうか、とC#たんは考えています。 .NETのコレクション C#というか、.NETには、標準でいろんなコレクションが用意されています。今回はこれらの紹介と、内部的なアルゴリズムについて簡単に説明していきます。 ジェネリック版と非ジェネリック版 歴史的な背景から、.NETのコレクションには2系統のものが存在します。

    コレクション
    airj12
    airj12 2011/12/12
    List,Stack,Queue,Dictionaryしか使った事ない…
  • WPF/Silverlight/Windows Phone共通WeakEvent機構 - the sea of fertility

    この記事はSilverlight Advent Calender 2011の12/11分の記事です。前日は@neueccさんの.NETの標準シリアライザ(XML/JSON)の使い分けまとめでした。 WeakEventとは? WeakEventとはイベントハンドラの解除忘れによるメモリリークが発生しないイベント機構の事です。 .NETでメモリリークが発生する主要要因の一つとして、イベント受信側クラスがイベントハンドラの登録を解除しない事で発生するメモリリークが挙げられます。ステートレスなWebプラットフォーム上ではほとんど発生を考慮しなくて良い問題ですが、ステートフルなリッチクライアントではよく問題になります。WeakEvent機構はそのためのソリューションの一つとしてもともとはWPF用に用意されていた機構です。その証拠に.NET4ではWeakEventManagerなどのWeakEvent

    airj12
    airj12 2011/12/12
    基盤作る側としては、機構で担保+でもできる限り自分でやってね が基本なんすかね
  • 「WPF/Silverlight/WindowsPhoneから WinRT まで見据えたリッチクライアント Model 設計」- RIA アーキテクチャ研究会 第2回セミナーで話してきました! - the sea of fertility

    RIA アーキテクチャ研究会 第2回セミナー話してきました。 RIA アーキテクチャ研究会 第2回セミナー http://atnd.org/events/21774 スライドはデモプロジェクトのソリューションと併せてご覧ください。 今回のテーマはModelオンリー。そして僕にしては珍しくでもデモプロジェクト中心です。スライドはデモプロジェクトと合わせてご覧ください。 個人的な事情で全ソースコード・全スライドは計26時間で作ったものなので、ソースにバグ残っていますし、汚いです。ただ今回限りのソースではなく今後リファクタを重ねて議論の土台にしていこうと思っているものなのでソースはbitbucketに公開しました。 デモプロジェクト デモプロジェクトリポジトリ https://bitbucket.org/ugaya40/twittersample スライド中で説明していますが、WPF4/Sil

    airj12
    airj12 2011/12/12
    UIを同期的にする限りではModel内で非同期処理を完結してしまうのが確かに楽そう / ありがたくソース見ます
  • 非同期I/O待ち

    今日までのブログでもすでに何回かお話していますが、ネットワークなど、待ち時間の多い処理は非同期に書かないといけません。 今日はその非同期の話をしましょう。 サンプル コード: http://code.msdn.microsoft.com/IO-c6443b55 非同期処理の例 昨日に引き続き、Azure Tableを例にとりましょう。 Azure Tableに対して、複数指定したPartition Keyでデータを検索したい場合があります。 昨日は「ユーザーの所持品」というような、ゲームっぽいデータを例にしました。この所持品みたいなものの場合、ユーザーIDをPartition Keyにしたりします。指定したユーザーの所持品を取得するような場合が、上記のようなデータ検索の例となります。 このような場合、たとえば検索したいキーを keys という引数で渡したとして、Containsを使いたいと

    非同期I/O待ち
  • ジェネリック

    (IL/バイト コードの)ポロリもあるよ! 日はジェネリックに関する説明です。 ジェネリックとは ジェネリック(英語だとgenericsです。訳すなら「総称」)は、型をパラメーター化する仕組みです。 操作対象となる引数やメンバーの型だけ差し替えて、全く同じ操作をしたい場合あがります。わかりやすい例は、コレクションでしょう。要素の型だけが違って、同じ操作(要素の追加、更新、参照、削除)を行いたいです。 var list = new List<int>(); list.Add(1); var x = list[0]; Console.WriteLine(x); //↑↓ 要素の型だけが違う var sList = new List<string>(); sList.Add(“abc”); var s = sList[0]; Console.WriteLine(s); この場合、Listクラス

    ジェネリック
    airj12
    airj12 2011/12/08
    ここまで気にしてなかったな / 仮想マシンレベルでジェネリックに対応している事の意義(Javaとの違い)
  • What's New in SQL2016 CTP2 Release - MSDN Blogs

    In Visual Studio 2022 17.10 Preview 2, we’ve introduced some UX updates and usability improvements to the Connection Manager. With these updates we provide a more seamless experience when connecting to remote systems and/or debugging failed connections. Please install the latest Preview to try it out. Read on to learn what the Connection ...

    What's New in SQL2016 CTP2 Release - MSDN Blogs
    airj12
    airj12 2011/11/25
    全部読む。というかエラい人に読ませたい。 / この流れで最後にリクルート的なリンクがあると吸い込まれるw
  • neue cc - Expression Treeのこね方・入門編 - 動的にデリゲートを生成してリフレクションを高速化

    Expression Treeは、IQueryableの中心、Code as Dataなわけですが、それ以外にも用途は色々あります。ただたんに名前を取り出すだけ(考えてみると贅沢な使い方よね)とか、デリゲートを生成したりとか。varはLinqのために導入されたものだからそれ以外に無闇に使うのは良くない(キリッ とか言う人は、式木も同じ考えなんですかね、匿名型へも同じ態度で?導入された、そして発展させたのはLinqだとしても、別にそれ以外に使ってもいいんだよって。縛られた考えイクナイ。 というわけで、今更に、初歩からの式木再入門。特に.NET 4から大幅に拡張されて式だけじゃなく文までいけるようになって、何でも表現出来るようになりました。式木の用途は多岐に渡るわけですが、今回はリフレクションの高速化をお題にしたいと思います。プロパティ名の文字列からPropertyInfoを取ってGetVal

    airj12
    airj12 2011/11/11
    式木には踏み込まない事にしよう…
  • [雑記] 動的コード生成のパフォーマンス(C# によるプログラミング入門)

    概要 .NET Framework のバージョンが上がるたびに色々と追加され、 今や、動的コード生成にもさまざまなやり方が。 ということで、並べて比較してみたいと思います。 「動的 = リフレクション = むちゃくちゃ遅い」というイメージをもたれる方も多いと思いますが、 実際のところ、1度生成したコードをキャッシュしておくなどの工夫をすれば、意外と許容範囲なパフォーマンスが得られます。 (GUI の描画部分やネットワーク通信部分の遅延と比べれば、演算部分の数倍程度の差は取るに足らない場合が多く、 過剰に気にする必要はありません(もちろん、状況次第)。) 比較コード含めたソースコード一式: DynamicPerformance.zip ポイント 毎回リフレクションを呼び出すのはやっぱりかなり(2~3桁)遅い。 キャッシュ機構を使えば、静的なコードの数倍程度までは速くできる。 C# 4.0 の

    [雑記] 動的コード生成のパフォーマンス(C# によるプログラミング入門)