タグ

LINQに関するraimon49のブックマーク (25)

  • neue cc - .NET 6とAngleSharpによるC#でのスクレイピング技法

    C# Advent Calendar 2021の参加記事となっています。去年は2個エントリーしたあげく、1個すっぽかした(!)という有様だったので、今年は反省してちゃんと書きます。 スクレイピングに関しては10年前にC#でスクレイピング:HTMLパース(Linq to Html)のためのSGMLReader利用法という記事でSGMLReaderを使ったやり方を紹介していたのですが、10年前ですよ、10年前!さすがにもう古臭くて、現在ではもっとずっと効率的に簡単にできるようになってます。 今回メインで使うのはAngleSharpというライブラリです。AngleSharp自体は2015年ぐらいからもう既に定番ライブラリとして、日でも紹介記事が幾つかあります。が、いまいち踏み込んで書かれているものがない気がするので、今回はもう少しがっつりと紹介していきたいと思っています。それと直近Visual

  • Visual Studio で一番費用対効果の高いショートカット「Ctrl + .」 - かずきのBlog@hatena

    今日は、Visual Studio 2019 Launch Event in Tokyo で登壇してきました。 資料はこちらです。 Visual Studio 2019 の個人的なお勧め機能(発表時点) from 一希 大田 www.slideshare.net とりあえず個人的に便利だと思ってる機能とかを中心に色々話したのですが、その中で一つだけ覚えてもらいたい機能として Ctrl + . のショートカットを紹介しました。 何が起きるの? クイックフィックスを起動するショートカットになります。マウス操作でいうところの電球マークをクリックする操作になります。 出来ること 色んなことが出来ます。 名前変更 前にも書きましたが編集名やクラス名の変更が出来ます。 blog.okazuki.jp 変えたい変数やクラス名を普通に変更して Ctrl + . を押して Enter。 個人的には Ctrl

    Visual Studio で一番費用対効果の高いショートカット「Ctrl + .」 - かずきのBlog@hatena
  • Java 8とScala ‐アプローチの違いと相互イノベーション | POSTD

    ScalaJava 8に関する プレゼンテーション が、他の似た内容のものよりも多くリツイートされ、大変うれしく思います。だから、こうして皆さんにブログでも書いてお伝えすることにしました。ScalaJavaとの違いと、それぞれの重要性についてお話しします。両者は相互にイノベーションしています。言語間でお互いに取り入れています。では、Javaが使える場合であっても、Scalaを学ぶ必要があるのでしょうか? もちろんです。より多くの言語を知れば知るほど、あなたはさらにプロフェッショナルになっていきます。 もし、ScalaエンジニアScalaJavaとの基的な違いについて尋ねたとしても、おそらくその人はラムダ関数とトレイトに関する違いを全て言うことはないでしょう。代わりに次のような例を出すはずです。 public class Person { private String firstN

    Java 8とScala ‐アプローチの違いと相互イノベーション | POSTD
  • The History of Reactive Extensions

    1. The History of Reactive ExtensionsHow extended Rx across languages 2014/10/28 RxJava Night #rxjnight Yoshifumi Kawai -@neuecc 2. SelfIntroduction @仕事 株式会社グラニ取締役CTO 神獄のヴァルハラゲート, モンスターハンターロアオブカード 最先端C#によるハイパフォーマンスWebアプリケーション @個人活動 Microsoft MVP for Visual C# / 野良C#エヴァンジェリスト Web http://neue.cc/ Twitter @neuecc

    The History of Reactive Extensions
  • O/Rマッパーによるトラブルを未然に防ぐ

    2. copyright © 2014 kuwata-lab.com all rights reserved まえがき 現在、アプリケーション開発の現場では O/R Mapper (ORM) が普及しています。今後 も ORM を使った開発は、増えることはあっても減ることはないでしょう。 しかし ORM は、アプリケーション開発者にとっては便利でも、DB 管理者 (DBA) か らみたらトラブルの種でもあります。それが特にパフォーマンスに関する問題であるこ とが多いため、開発者と DBA が対立することも珍しくありません。 とはいえ、ORM による問題はすでに解決策が用意されている場合があります。当の 問題は、すでに存在する解決策があまり知られていないことではないでしょうか。 そこで発表では、ORM によってどのような問題が起こりやすいか、どう解決・予防 すればいいか、そして ORM

    O/Rマッパーによるトラブルを未然に防ぐ
    raimon49
    raimon49 2014/12/22
    クエリオブジェクト方式ORMで起きるトラブルと対策。クエリID付与してロギングや遅延フェッチなど。
  • neue cc - 非同期時代のLINQ

    この記事はC# Advent Calendar 2013の4日目となります。2012年はMemcachedTranscoder - C#のMemcached用シリアライザライブラリというクソニッチな記事で誰得でした(しかもその後、私自身もMemcached使ってないし)。その前、2011年はModern C# Programming Style Guide、うーん、もう2年前ですかぁ、Modernじゃないですねえ。2011年の時点ではC# 5.0はCTPでしたが、もう2013年、当然のようにC# 5.0 async/awaitを使いまくる時代です。変化は非常に大きくプログラミングスタイルも大きく変わりますが、特にコレクションの、LINQの取り扱いに癖があります。今回は、非同期時代においてLINQをどう使いこなしていくかを見ていきましょう。 Selectは非同期時代のForEach これ超大

  • PHPで動くLINQもどきの開発に関するディスカッション

    Masao Maeda @brtriver Doctrine の ArrayCollection が便利。$items->filter(function($item){…}); みたいにmapやfilterを書けるようになってる 2013-01-31 10:20:32

    PHPで動くLINQもどきの開発に関するディスカッション
  • Modern C# Programming 現代的なC#の書き方、ライブラリの選び方

    Event : Visual Studio Users Community Japan #1 Date : 2019/09/14 ソフトウェア/サービス開発において最も後回しにされるものの代表が「パフォーマンスの向上」です。C#/.NET の最大の武器は開発生産性ですが、C# 7.0 以降はパフォーマンス向上のための機能追加が多数行われています。いくつかのポイントを押さえることで実装時からより高速なコードを書くことができるようになります。 このドキュメントでは、そんなポイントとなる箇所をふんだんにお届けします。

    Modern C# Programming 現代的なC#の書き方、ライブラリの選び方
    raimon49
    raimon49 2013/01/29
    モダンC# 確かに今でもdelegate構文を使っている解説文に出会うことある。スレッドはTaskで。
  • C#に関するアンダース ヘルスバーグへのインタビュー (2005年) | matarillo.com

    2012-07-17 19:45:12 翻訳許可を与えてくださったJohn Osborn氏とO’Reilly社に感謝します。 原文は下のリンクを参照してください。 C#: Yesterday, Today, and Tomorrow: An Interview with Anders Hejlsberg, Part 1 C#: Yesterday, Today, and Tomorrow: An Interview with Anders Hejlsberg, Part 2 C#: 昨日、今日、明日 アンダース・ヘルスバーグは1996年にマイクロソフトに転職し、初期はVisual J++とWindows Foundation Class (WFC) のアーキテクトとして仕事をした。 ヘルスバーグは現在Microsoft Distinguished EngineerかつC#のチーフアーキテク

    raimon49
    raimon49 2012/10/22
    C# 2.0から3.0当時のインタビュー。LINK、ラムダ式、Nullable
  • neue cc - linq.jsのTypeScript対応とTypeScript雑感

    MicrosoftからTypeScriptという新言語が発表されました。驚くべきは、あのC#のAnders Hejlsbergが関わっている!これはもう触るしかない。そしてこれはコンパイル後にJavaScriptになる言語(CoffeeとかJSXとかみたいな)なわけで、じゃあlinq.jsを対応させるしかない!というわけで、させました。 // TypeScript Enumerable.range(1, 10) .where(x => x % 2 == 0) .select(x => x * x) .writeLine(); // コンパイル後 Enumerable.range(1, 10).where(function (x) { return x % 2 == 0; }).select(function (x) { return x * x; }).writeLine(); ひゃっはー

    raimon49
    raimon49 2012/10/12
    正式リリース版ではジェネリクスに対応予定なのか。これはすごい。
  • neue cc - linq.js ver.3.0.0-beta, メソッドlowerCamelCase化、など

    ずっとやるやる詐欺だったlinq.js ver.3ですが、ようやく始まりました! linq.js - LINQ for JavaScript トップページのボタンはstableのものになるので、DOWNLOADSタブからver.3.0.0-betaを選んでください。また、NuGetを使っている人はInstall-Package linq.js -Preで入ります。他にlinq.js-jQuery -Pre, linq.js-RxJS -Pre, linq.js-QUnit -Preなどり。 はい。ようやくJavaScriptらしくなりました。UpperCamelCaseにはC#っぽいとか、キーワードで衝突しなくなるとか、ちょっとした利点はなくもないのですが、そもそも.NETっぽくないほうがいい、というかJavaScriptの世界にちゃんと馴染ませたいという思いのほうが強い。そして、.NET

  • Ruby 2.0 メモ: Lazy と LINQ とループ融合

    2012-06-15 (鈴) 1. はじめに 2. Ruby 2.0 開発版のインストール 3. Enumerator::Lazy 4. ループ融合としての解釈 5. C# の LINQ との比較 6. おわりに 1. はじめに 稿では Ruby 2.0 に予定されている Enumerator::Lazy について,先行する概念と対照して考察する。 それが計算量の観点からループ融合の最適化に等しいことを非形式的に論ずる。 また,C# の LINQ と実質的に同じものであることを示す。 以上の議論から Enumerator::Lazy が来るべき Ruby 2.0 の最も重要な機能の一つであることを示す。 2. Ruby 2.0 開発版のインストール 執筆時現在,Ruby 2.0 の処理系は https://github.com/ruby/ruby から $ git clone https

    raimon49
    raimon49 2012/07/21
    Enumerator::Lazy 遅延評価されるEnumerable型
  • 使わなくなった機能・新しい機能

    概要 C# も .NET Framework (のライブラリ)も、ずいぶんと進歩してきました。 その結果、一部の構文やライブラリは、別のもので置き換えられる/置き換えた方がいいものも出てきています。 過去の遺物 いくつかの構文は、もう完全に過去のものです (互換性のためだけに残されています)。 非ジェネリック コレクション ポイント: 非ジェネリック版のコレクションは使ってはいけない。 C# 2.0 で 「ジェネリック」 が導入されると同時に、ジェネリック版のコレクションが導入されました。 それ以前の、非ジェネリック版のコレクションを使うメリットは一切ないので、使わないようにしましょう。 非ジェネリック版からジェネリック版で、名称が変わっているものもあるので気を付けましょう。 「ジェネリック版に、ArrayList 相当のものがない」という誤解もあったりしますが、List<T> がこれに相

    使わなくなった機能・新しい機能
    raimon49
    raimon49 2012/01/30
    レガシーな書き方からモダンな書き方へ
  • C# の社内勉強会でした

    10年ほどオンラインゲームの縁の下にいます。 2007年2月まで: コミュニティーエンジン中国CEO 2007年2月~2010年4月:CE日社 2010年5月~2011年5月:ONE-UP 株式会社 東京開発グループ グループマネージャ 2011年6月~:株式会社Aiming 東京開発グループ ゼネラルマネージャ http://about.me/toshi_k

    C# の社内勉強会でした
  • neue cc - Modern C# Programming Style Guide

    C# Advent Calendar 2011、ということで、C# 4.0時代のプログラミングスタイルについて説明してみます。モダン、というけれど、某書のように変態的なことじゃなくて、むしろ基的な話のほうです。こういったものはナマモノなので、5.0になればまた変わる、6.0になればまた変わる。変わります。古い話を間に受けすぎないこと(歴史を知るのは大事だけど、そのまま信じるのは別の話)、常に知識をリフレッシュするようにすること。そういうのが大事よね。でも、だからってモダンに書けなきゃダメ!なんてことはありません。ただ、知ること、少しずつ変えていくこと、そういうのは大事よね、って。 ところでしかし、私の主観がかなり入っているので、その辺は差っ引いてください。 varを使う C# 3.0から搭載された型推論での宣言。出た当初には散々議論があって、今もたまに否の意見が出てきたりもしますが、va

    raimon49
    raimon49 2012/01/01
    IntelliSense重要 C#は移り変わりが早くて追い掛けるのが大変…。
  • .NET開発者のための非同期入門 フリーズしないアプリケーションの作り方 - @IT

    連載目次 「エンド・ユーザーは、0.5秒のフリーズでストレスを感じ、3秒のフリーズはバグだと思う」。昔、冗談半分に言ってみた言葉だが、回りの反応を見るに、割とみな思っていることらしい。 特にモバイル端末向けのOSでは、応答性の悪いアプリケーションはOSによって強制終了されたり、マーケットプレイスでの審査に落ちたりする。フリーズしないアプリケーション作りがますます重要になっている。 そこで、稿では、フリーズしないアプリケーション作りに必要となる「非同期処理」*1について説明していく。 *1 時間のかかるAPIに対して、そもそも非同期版しか提供しないケースが増えてきている。Windows 8の新しいWindows API(WinRT)では、50ミリ秒以上かかるAPIを、すべて非同期なメソッドとして提供するそうだ。 ■非同期処理の今までとこれから ネットワークI/Oのように待ち時間の発生する処

    .NET開発者のための非同期入門 フリーズしないアプリケーションの作り方 - @IT
    raimon49
    raimon49 2011/11/05
    C# 5.0から追加されるasync修飾子, awaitキーワードの紹介。yield returnで処理を返していたテクニカルな書き方が不要になり、誰でも非同期化の恩恵に与れる。
  • jQueryと「linq.js」を連携させてDOMをLINQにより処理するには? - @IT

    「TIPS:JavaScriptで配列をLINQにより処理できるライブラリ「linq.js」を利用するには?」ではlinq.js単独での基的な使い方を紹介したが、今回はjQueryと連携した使い方を紹介する。 jQueryは優れたライブラリであるが、コレクション処理に関しては貧弱だ。linq.jsはコレクション処理に特化し、DOMなどへの依存もないため、jQueryと干渉することなく、欠けた部分を補完できる。 ●linq.js(jQueryプラグイン版)の使い方 linq.jsをダウンロードし、通常のjQueryプラグインと同じく、まずjQueryを参照し、その下にlinq.jsのjQueryプラグイン版であるjquery.linq.jsファイルへのパスを記述すればよい。例えば下記のようなコードを記述する。 <script src="Scripts/jquery-1.4.1.js" ty

  • 美しいプログラムを書く(リスト処理ライブラリ編) | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 美しいプログラムを書く(脱添字職人編) では添字が多用され読み難くなっているソースコードのリファクタリングを通して 美しいプログラムを書くためのポイントをいくつか紹介しました。 そこでは 「何をするか」を基準にプログラムを書きましょう。 「どうやるか」が前面に出たプログラムは意図を把握し難くなります。添字や明示的なループの使用は避けましょう。「どうやるか」が前面に出てきてしまいます。 今時のプログラミング言語ならば便利な構文やライブラリ関数があるので、 添字やループを使わずとも「何をするか」を基準にプログラムが書き易くなっています。 ということを述べました。 確かにごもっともな主張ではありますが、経験値の少ない人からすれば 「そんなことを言われてもどんなライブラリ関数があってどういう場面で使えるのかリファレンスを読んでもよく分からないし……」 ということはよくあります。 という訳で、

    美しいプログラムを書く(リスト処理ライブラリ編) | Webシステム開発/教育ソリューションのタイムインターメディア
  • 美しいプログラムを書く(脱添字職人編) | Webシステム開発/教育ソリューションのタイムインターメディア

    あらすじ あなたはとある業務用アプリケーションの開発・保守を任されています。 このアプリケーションはC#で記述されており、 とある企業におけるプロジェクト(Project)の管理を主目的としています。 プロジェクトには何名かの社員がアサインされており(AssignedStaffs)、 プロジェクト内には必ずマネージャーが1名存在します(ManagerStaffId)。 大まかなイメージとしては以下のようなコードになっています: public class Staff { public String Id {get; set;} public String Name {get; set;} ... } public class Project { public ArrayList AssignedStaffs {get; set;} public String ManagerStaffId {

    美しいプログラムを書く(脱添字職人編) | Webシステム開発/教育ソリューションのタイムインターメディア
    raimon49
    raimon49 2011/08/10
    恐るべきC#の表現力。(3)くらいまでは何とか辿り付けても、パッとここまで綺麗なコードが出て来ない…。
  • よくあるコーディングパターンと LINQ to Objects の対応付け - 予定は未定Blog版

    あると便利ですよね、ということで書いてみた。 よくあるコーディングパターンには yield とか使ってないです。 こっちの方がよくありそうでしょ? Select 全ての要素に何らかの処理を行いたいときに使用します。 // よくあるコーディングパターンその1 // 全ての要素を2倍するメソッド public IEnumerable<int> DoubleAll(int[] target) { var result = new int[target.Length]; for (int i = 0; i < target.Length; i++) { result[i] = target[i] * 2; } return result; } // Selectで書き直し public IEnumerable<int> DoubleAll(IEnumerable<int> target) { re

    よくあるコーディングパターンと LINQ to Objects の対応付け - 予定は未定Blog版
    raimon49
    raimon49 2011/02/11
    配列やIEnumerableな要素を加工するケース。リスト内包っぽい。