Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
この投稿は、C# Advent Calendar 2014 の14日目の記事です。 IEnumerableにまつわるアレやアレ こんにちは! いつもはAsyncとLINQの事をしゃべったり書いたりしています。「列挙可能から完全なるモノまで – IEnumerableの探索」というお題で書いてみようと思います。 .NETでは、LINQにまつわるインターフェイスがかなり多く含まれています。その中でも、IEnumerableインターフェイスの継承グラフに存在する様々なインターフェイスを、どのように使い分けるべきか、と言うのが分かりにくいかも知れません。沢山のインターフェイスが定義されているのは、歴史的な事情もあります。 LINQ to ObjectやLINQ to Entitiesなど、一般的に使用されているLINQの背景には、「列挙可能である」という性質があります。この事は、以前にLINQの勉
Unityで、LINQは活用されているようでされていないようで、基本的にはあまりされていない気配を非常に感じます。もったいない!というわけじゃないんですが、以前に私の勤務先と別の会社さんとで勉強会/交流会したのですが、そこで作ったスライドがあるので(若干手直ししたものを)公開します。LINQについて全くの初心者の人向けにLINQの良さを説明しようー、みたいな感じです、でもちょびっとだけ踏み込んだ内容もね、みたいな。勉強会自体は5月ぐらいにやったので、ずいぶんと公開まで開いてしまった……。 その私の勤務先(まどろっこしい言い方だ……)グラニでは会社間での勉強会は大歓迎なので、もし、やりたい!という人がいらっしゃいましたら是非是非私のほうまでー。オフィスは六本木にあるのでその周囲ほげkmぐらいまでなら出張りますです(他のオフィスを見てみたい野次馬根性)。私の持ちネタとしてはC#, LINQ,
と、いうものを作りました。BigQueryはGoogleのビッグデータサービスで、最近非常に脚光を浴びていて、何度もほってんとりやTwitterに上がってきたりしてますね。詳細はGoogle BigQuery の話とかGoogleの虎の子「BigQuery」をFluentdユーザーが使わない理由がなくなった理由あたりがいいかな、超でかいデータをGoogleパワーで数千台のサーバー並べてフルスキャンするから、超速くて最強ね、という話。で、実際凄い。超凄い。しかも嬉しいのが手間いらずなところで、最初Amazon RedShiftを検討して試していたのですが、列圧縮エンコードとか考えるのすっごく大変だし、容量やパワーもインスタンスタイプと睨めっこする必要がある。それがBigQueryだと容量は格安だから大量に格納できる、チューニング設定もなし、この手軽さ!おまけにウェブインターフェイスが中々優れ
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
よく業務の帳票を作る時は、Excel の隠しシートを使って「印刷画面」と「データ画面」を分けて作ります。 直接帳票をデータベースから書き込んでもいいのですが、 セルの名前付けの不整合などがややこしい。 行列を指定するときなんか、かなり大変。 ということがあって、別にデータ用のシートを用意しておいて、セル参照させるんですよね。ただ、このパターンって、行数が増えるようなレポートの場合はうまくいかなくて、結局のところコードのほう(C#/VB)で、がりがりと行列を作り込んだりします。 さて、本来はデータの書き込みを紹介したいところなのですが、OleDb プロバイダって entity data model に対応していないじゃん、ということでちょっとげんなり…どうしたものかと思っていたところ、結構簡単に linq 実装が出来そうなソースを見つけました。 Using Linq with Excel s
LINQ勉強会で発表してきました。 2時間のハンズオンだったんですが、ただただ疲れた。 ネットワーク環境がなかったので、結構見ながら移してもらう状況が多かったのがちょっと残念でしたが、がんばったよ。 以下資料です。 なお、ソースコードはGitHubにあげてます。 ハンズオンの順序でコミットしてるので過去からログを参照していただければと思います。
さて、C#で関数型っぽいことをやって遊んでみたわけですが、恥ずかしくなって猫の写真に置き換えました。 C#で実際に使うのは、LINQです。 ということで、LINQの使い方をひととおり見てみます。 基本 LINQの中核となるのはIEnumerable<T>インタフェースです。これがJava8のStreamに相当します。 さて、IEnumerable<T>インタフェースにはForEach拡張メソッドが用意されていません。これはFAQで、意図的に入れていないということです。 LINQとはズレますが、List<T>クラスにはForEachメソッドがありますから、こっちを使いましょう。ええ、クラスです。インターフェースではありません。 var names = new[] {"hoge hoge", "foo bar", "naoki", "kishida"}.ToList(); names.ForE
と、題しまして第1回 業開中心会議 .NET技術の断捨離で話してきました。岩永さんが概念的なものを、私がC#とライブラリにフォーカスして具体的なものを、パネルディスカッションでフレームワーク周りの話を。的な分担だったでしょうか。 Modern、といっても、すんごく最先端で尖った感じ!ではなくて、本来は今そこに当たり前のようにあるやり方を、ちゃんと選択していこう。といったような内容です。対象をどの辺に置こうかなあ、といったところで、やっぱ@ITでいうギョーカイだと、ラムダ禁止とか.NET 2.0を強いられているんだ、とかそういう人も少なくないのだろうと思ったので、その辺りを最低ラインに敷いて中身を組みました。 つまりLINQ使えってことですよ!というか、もう登場から5年も経とうとしているのに、未だにLINQ使うべきだよ!と言って回らなければならない事実が悲しくもあり。ちなみに他の言語にもLI
This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.
上記表のとおり実装したところ、NextGenerationメソッド内部ですが、こんな感じになりました。 うん、LINQっぽい。 public static World NextGeneration(this World world) { var lifes = world.SelectMany(life => from x in Enumerable.Range(-1, 3) from y in Enumerable.Range(-1, 3) select new { X = life.X + x, Y = life.Y + y, Score = x == 0 && y == 0 ? 0.5 : 1 }) .GroupBy(s => new { s.X, s.Y }) .Select(g => new { X = g.Key.X, Y = g.Key.Y, Score = g.Sum(a
この記事では、匿名メソッドとラムダ式の意味の違いについて考えてみたい。 ■ 同じように使える匿名メソッドとラムダ式 匿名メソッドとラムダ式は、同じように使うことができる場面が多い。 例えば、以下のようなデリゲートを引数にとるメソッドがあったとして、 using System; using System.Collections.Generic; static class Enumerable { // 述語に基づいて値のシーケンスをフィルター処理 public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { foreach (var item in source) { if (predicate(item)) yield
以前にReactive Extensions + asyncによるC#5.0の非同期処理では、単体の値であったらasync、複数の値であったらIObservable<T>が使い分け、とかかんとかと言ってましたが、本当にそうなの?もしくは、そもそも複数の値のシチュエーションって分かるような分からないようななのだけど?などなどと思ったりする昨今を如何様にお過ごしでしょうか。というわけで、今回はグッとこの部分に深く迫ってみましょう。 同期的なシチュエーション さて、例、なのですけれど、データベースで行きましょう。生DataReaderを転がしてます。 // 接続文字列に Asynchronous Processing=true は非同期でやるなら欠かさずに const string ConnectionString = @"Data Source=.;Initial Catalog=Advent
2012-07-22 これは Scala プログラマのための C# LINQ 機能の覚え書きだが、逆としても使えるはず。 型推論 C# には型推論がある。個人的に、ローカル変数ではできるだけ var を使うようにしている。 var x = 1; Scala にも var があるけど、可能なら不変 (immutable) な val を使うのが好ましいとされている。 新しい List と Array の作成 C# はインラインでコレクションを作ることができる。 using System.Collections.Generic; var list = new List { “Adam”, “Alice”, “Bob”, “Charlie” }; var array = new [] { 0, 1, 2 }; 全ての Scala コレクションにファクトリメソッドがある。 ラムダ式を使ったフィルタ
註:この記事は、「ごはんはおかずLINQはモナド」と聞いたことがあるけど、モナドって何なのかは特に知りたくない、でもLINQがモナドだと何ができるのかはちょっとだけ知りたい、という奇特な人向けに、「簡単なパーサーを実装する」というお題でコードを見てみようという、まったくPVの伸びなさそうな記事です。 なので、以下のテーマは対象外。 モナドを学びたい→Haskellを勉強しよう。 Maybeモナド/Option型をC#/LINQで→こちらでどうぞ。http://d.hatena.ne.jp/liner_lock/20111012/1318428588 実用的なパーサー/パーサジェネレータが欲しい→僕も情報を持ってません。 実装したいのは、ゼロ以上の整数、加算記号(+)、乗算記号(*)、開かっこ、閉かっこから構成される数式を文字列で与えられたときに、パースして結果を計算し、intを返すメソッド
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
Where連打していますか?それともパフォーマンスの悪化を心配して&&連結にしていますか?LINQの仕組み&遅延評価の正しい基礎知識 - @ITではWhere+Selectに対して 「WhereSelectEnumerableIterator」となっていて、名前のとおり、WhereとSelectが統合されていることです。これは、「Where」->「Select」が頻出パターンなので、それらを統合することでパフォーマンスを向上させるためでしょう。 と書きましたが、では連打の場合はどうなっているでしょうか。見てみましょう。 var seq1 = Enumerable.Range(1, 10) .Where(x => x % 2 == 0) .Where(x => x % 3 == 0); // どうでもいいんですが、これはVisual Studio 11 Betaです。VS11最高ですよ! @
この記事は F# Advent Calendar 2011 の13回目です。 ←前回 [twitter:@furuya02] さん「F#によるパケットモニタの作成(WinPcap)」 →次回 [twitter:@jsakamoto] さん 「F# で正規表現デザイナ ASP.NET MVC アプリを作成する」 はじめに 今年の Advent Calendar 向けに、「F# で iPhone 向けゲームを作成する」という記事を書こうと奮闘していましたが、ゲーム(というより 3D)の開発知識を問われたり、残業の理に導かれたりして間に合わなくなってしまいました。最近、仕事の合間に LINQ の復習をしていたので、F# 3.0 からサポートされる予定の「Query expressions」についてゆるふわに書いておこうと思います。 注意 Developer Preview の F# を使用してい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く