Submit Search
Upload
Final LINQ Extensions
•
8 likes
•
18,730 views
Kouji Matsui
Follow
Final LINQ Extensions http://www.kekyo.net/2015/02/07/4728
Read less
Read more
Software
Report
Share
Report
Share
1 of 75
Download now
Download to read offline
Recommended
Final LINQ Extensions II http://www.kekyo.net/2015/05/10/4879
Final LINQ Extensions II
Final LINQ Extensions II
Kouji Matsui
マルレク2015 第二回「大規模分散システムの現在 -- Twitter」講演資料
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter
maruyama097
PHPカンファレンス2015の発表内容です。
Hack言語に賭けたチームの話
Hack言語に賭けたチームの話
Yuji Otani
「potatotips #59 (iOS/Android開発Tips共有会)」で発表された資料です。 https://potatotips.connpass.com/event/119277/
Firebase A/B Testingを使ってサーバ側までA/Bテストした話(Android)
Firebase A/B Testingを使ってサーバ側までA/Bテストした話(Android)
gree_tech
コード改善 meetup #3
どこに何を書くのか?
どこに何を書くのか?
pospome
ROS Japan UG #48 ROSCon 2022ふりかえり会の発表スライド 技ラボ:https://wazalabo.com/ 英語字幕の日本語訳: https://docs.google.com/document/d/1fiBPxGpEHTjp6K0a5HNZa-TNMlmMspfMGl8Lo5FSDqE/edit?usp=sharing
ROSCon発表の振り返りとROSConの振り返り(ROS Japan UG #48 ROSCon 2022ふりかえり会)
ROSCon発表の振り返りとROSConの振り返り(ROS Japan UG #48 ROSCon 2022ふりかえり会)
Atsushi Hasegawa
プログラミング言語Rustの社内イベントの発表資料です
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
エンジニアフレンドリーシティ福岡フェスティバルの登壇資料 KLabのエンジニアを支えるカルチャー
KLabのエンジニアを支えるカルチャー
KLabのエンジニアを支えるカルチャー
KLab Inc. / Tech
Recommended
Final LINQ Extensions II http://www.kekyo.net/2015/05/10/4879
Final LINQ Extensions II
Final LINQ Extensions II
Kouji Matsui
マルレク2015 第二回「大規模分散システムの現在 -- Twitter」講演資料
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter
maruyama097
PHPカンファレンス2015の発表内容です。
Hack言語に賭けたチームの話
Hack言語に賭けたチームの話
Yuji Otani
「potatotips #59 (iOS/Android開発Tips共有会)」で発表された資料です。 https://potatotips.connpass.com/event/119277/
Firebase A/B Testingを使ってサーバ側までA/Bテストした話(Android)
Firebase A/B Testingを使ってサーバ側までA/Bテストした話(Android)
gree_tech
コード改善 meetup #3
どこに何を書くのか?
どこに何を書くのか?
pospome
ROS Japan UG #48 ROSCon 2022ふりかえり会の発表スライド 技ラボ:https://wazalabo.com/ 英語字幕の日本語訳: https://docs.google.com/document/d/1fiBPxGpEHTjp6K0a5HNZa-TNMlmMspfMGl8Lo5FSDqE/edit?usp=sharing
ROSCon発表の振り返りとROSConの振り返り(ROS Japan UG #48 ROSCon 2022ふりかえり会)
ROSCon発表の振り返りとROSConの振り返り(ROS Japan UG #48 ROSCon 2022ふりかえり会)
Atsushi Hasegawa
プログラミング言語Rustの社内イベントの発表資料です
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
エンジニアフレンドリーシティ福岡フェスティバルの登壇資料 KLabのエンジニアを支えるカルチャー
KLabのエンジニアを支えるカルチャー
KLabのエンジニアを支えるカルチャー
KLab Inc. / Tech
Hokuriku.NET C# 勉強会「C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~」 https://atnd.org/events/57085 で使用した資料に加筆 1. LINQ to Objects 復習 2. IQueryable<t> 3. 式木 (Expression Tree) 4. 式木メタ プログラミング 5. LINQ プロバイダー
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
OpenAI が、人のしゃべる言葉を認識して文章に書き起こしてくれる 音声認識 AI「Whisper」を 9月21日(水) に一般公開した。 パソコンのローカル環境で走らせる方式で、無料で使い放題。 これをテストしてみたレポート。 下記 YouTube 動画は、この資料の作成者によるプレゼンと、 他 3 名を交えたディスカッションからなる。 ■ セーラー服で機関銃トーク: Whisper ― OpenAI 音声認識エンジン https://www.youtube.com/watch?v=jXKyWPm3kxY 2022/10/05 YouTube 動画 22分21秒 YouTube チャンネル シンギュラリティサロン・オンライン セーラー服で機関銃トーク: Whisper ~ OpenAI のおそらく非常に高性能な音声認識エンジン 2022年10月5日(水) の時点で視聴回数は 203 回。
OpenAI の音声認識 AI「Whisper」をテストしてみた
OpenAI の音声認識 AI「Whisper」をテストしてみた
Hide Koba
Spring Reactiveについて
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Toshiaki Maki
Clojureでgo-routineやErlang軽量プロセスのようなことを実現する非同期ライブラリcore.asyncの使い方などなど
ふつうのcore.async
ふつうのcore.async
Tsutomu Yano
発表日:2018年01月27日 イベント名: AITCオープンラボ TensorFlow勉強会シリーズ2 成果報告会 イベントURL:http://aitc.jp/events/20180127-OpenLab/info.html タイトル:TensorBoardによる学習の可視化 発表者:袴田 隼毅氏 荒井 美千子氏 中山 智哉氏 学習のモデルや結果の可視化は、機械学習のパフォーマンスを評価し、問題 を発見するために必要不可欠です。 本発表では、TensorFlowに付属するTensorboardという可視化ツールを使って 学習を可視化する方法を解説します。 サンプルコード:ipynb http://www.aitc.jp/4b21e766/download.rbx?fileId=446e2c2ecc0ca24a&dirId=5
2018年01月27日 TensorBoardによる学習の可視化
2018年01月27日 TensorBoardによる学習の可視化
aitc_jp
オープンソースカンファレンス2021 Online/Spring https://event.ospn.jp/osc2021-online-spring/session/297765
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Daisuke Morishita
2019/04/12 Deep Learning JP: http://deeplearning.jp/seminar-2/
[DL輪読会]Attention is not Explanation (NAACL2019)
[DL輪読会]Attention is not Explanation (NAACL2019)
Deep Learning JP
第 87 回 PHP 勉強会での発表資料です。PHP の処理系に採用されている参照カウント方式の GC と循環参照を回収するアルゴリズムについて簡単に説明します。また、特定の限られた状況で循環参照の回収が処理速度に悪影響を与えることを、簡単なサンプルプログラムを用いて示します。
PHP の GC の話
PHP の GC の話
y-uti
PyCon JP 2021発表資料(https://2021.pycon.jp/time-table/?id=272565)
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
php conference 2019 で発表された資料です。 https://phpcon.php.gr.jp/2019/
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
君のHashは。
Your hash is.
Your hash is.
abend_cve_9999_0001
13/02/09に #gdgkobe で #golang の発表させて頂きました資料です。
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
Yasutaka Kawamoto
RailsにおけるRESTfulなURL設計勉強会 千駄ヶ谷.rb #12 #sendagayarb
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
Optuna Meetup #1 の発表資料です。
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
Hironobu Isoda
JPOUG in 15 minutes #2の発表資料です。
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Ryota Watabe
2年ぐらい前の社内勉強会で使った資料。
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
2015/10/3 PHPカンファレンスのPHPメンターズトラックにおけるプレゼンテーション
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
啓 杉本
Concepts and tools of logging in Java. Javaにおけるログ出力の考え方と道具について説明. CC Attribution Licenseの元に公開します.
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
intorduction of SSE4.2 string instructions
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
Boost.勉強会 #4 「Boost Fusion Library」の発表資料。
Boost Fusion Library
Boost Fusion Library
Akira Takahashi
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7
Tetsuya Morimoto
More Related Content
What's hot
Hokuriku.NET C# 勉強会「C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~」 https://atnd.org/events/57085 で使用した資料に加筆 1. LINQ to Objects 復習 2. IQueryable<t> 3. 式木 (Expression Tree) 4. 式木メタ プログラミング 5. LINQ プロバイダー
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
OpenAI が、人のしゃべる言葉を認識して文章に書き起こしてくれる 音声認識 AI「Whisper」を 9月21日(水) に一般公開した。 パソコンのローカル環境で走らせる方式で、無料で使い放題。 これをテストしてみたレポート。 下記 YouTube 動画は、この資料の作成者によるプレゼンと、 他 3 名を交えたディスカッションからなる。 ■ セーラー服で機関銃トーク: Whisper ― OpenAI 音声認識エンジン https://www.youtube.com/watch?v=jXKyWPm3kxY 2022/10/05 YouTube 動画 22分21秒 YouTube チャンネル シンギュラリティサロン・オンライン セーラー服で機関銃トーク: Whisper ~ OpenAI のおそらく非常に高性能な音声認識エンジン 2022年10月5日(水) の時点で視聴回数は 203 回。
OpenAI の音声認識 AI「Whisper」をテストしてみた
OpenAI の音声認識 AI「Whisper」をテストしてみた
Hide Koba
Spring Reactiveについて
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Toshiaki Maki
Clojureでgo-routineやErlang軽量プロセスのようなことを実現する非同期ライブラリcore.asyncの使い方などなど
ふつうのcore.async
ふつうのcore.async
Tsutomu Yano
発表日:2018年01月27日 イベント名: AITCオープンラボ TensorFlow勉強会シリーズ2 成果報告会 イベントURL:http://aitc.jp/events/20180127-OpenLab/info.html タイトル:TensorBoardによる学習の可視化 発表者:袴田 隼毅氏 荒井 美千子氏 中山 智哉氏 学習のモデルや結果の可視化は、機械学習のパフォーマンスを評価し、問題 を発見するために必要不可欠です。 本発表では、TensorFlowに付属するTensorboardという可視化ツールを使って 学習を可視化する方法を解説します。 サンプルコード:ipynb http://www.aitc.jp/4b21e766/download.rbx?fileId=446e2c2ecc0ca24a&dirId=5
2018年01月27日 TensorBoardによる学習の可視化
2018年01月27日 TensorBoardによる学習の可視化
aitc_jp
オープンソースカンファレンス2021 Online/Spring https://event.ospn.jp/osc2021-online-spring/session/297765
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Daisuke Morishita
2019/04/12 Deep Learning JP: http://deeplearning.jp/seminar-2/
[DL輪読会]Attention is not Explanation (NAACL2019)
[DL輪読会]Attention is not Explanation (NAACL2019)
Deep Learning JP
第 87 回 PHP 勉強会での発表資料です。PHP の処理系に採用されている参照カウント方式の GC と循環参照を回収するアルゴリズムについて簡単に説明します。また、特定の限られた状況で循環参照の回収が処理速度に悪影響を与えることを、簡単なサンプルプログラムを用いて示します。
PHP の GC の話
PHP の GC の話
y-uti
PyCon JP 2021発表資料(https://2021.pycon.jp/time-table/?id=272565)
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
php conference 2019 で発表された資料です。 https://phpcon.php.gr.jp/2019/
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
君のHashは。
Your hash is.
Your hash is.
abend_cve_9999_0001
13/02/09に #gdgkobe で #golang の発表させて頂きました資料です。
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
Yasutaka Kawamoto
RailsにおけるRESTfulなURL設計勉強会 千駄ヶ谷.rb #12 #sendagayarb
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
Optuna Meetup #1 の発表資料です。
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
Hironobu Isoda
JPOUG in 15 minutes #2の発表資料です。
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Ryota Watabe
2年ぐらい前の社内勉強会で使った資料。
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
2015/10/3 PHPカンファレンスのPHPメンターズトラックにおけるプレゼンテーション
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
啓 杉本
Concepts and tools of logging in Java. Javaにおけるログ出力の考え方と道具について説明. CC Attribution Licenseの元に公開します.
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
intorduction of SSE4.2 string instructions
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
What's hot
(20)
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Pythonによる黒魔術入門
Pythonによる黒魔術入門
OpenAI の音声認識 AI「Whisper」をテストしてみた
OpenAI の音声認識 AI「Whisper」をテストしてみた
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
ふつうのcore.async
ふつうのcore.async
2018年01月27日 TensorBoardによる学習の可視化
2018年01月27日 TensorBoardによる学習の可視化
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
[DL輪読会]Attention is not Explanation (NAACL2019)
[DL輪読会]Attention is not Explanation (NAACL2019)
PHP の GC の話
PHP の GC の話
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
Your hash is.
Your hash is.
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
Similar to Final LINQ Extensions
Boost.勉強会 #4 「Boost Fusion Library」の発表資料。
Boost Fusion Library
Boost Fusion Library
Akira Takahashi
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7
Tetsuya Morimoto
What is template
What is template
Akira Takahashi
7/19に行った無料F#セミナーの資料です。関数プログラミングにご興味があればこちらのセミナーをどうぞ。http://www.mamezou.com/training/f_pro.html
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原
Final LINQ extensions III - Center CLR part 4 session http://www.kekyo.net/2015/08/30/5259
Final LINQ extensions III
Final LINQ extensions III
Kouji Matsui
2016/09/03 にJSUGのイベントでの発表に使用した資料です
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
[Linux同好会 LT]Linq入門。
Linq To Fun
Linq To Fun
deflis
2010/10/5 の読書会でお話した内容です。
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
Tetsuya Morimoto
boost.勉強会#17「LINQ for C++ のご紹介」
Boost17 cpplinq
Boost17 cpplinq
miki_hirofumi
Lisp meets Web : A tutorial of Portable AllegroServe and build a tiny BBS application.
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
Flutterでの単体テスト実施方法と、テスタブルなコードにリファクタリングするためのテクニック. またそれをGitHub Actionsで自動化してカバレッジを可視化する方法
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Shinnosuke Tokuda
20130329 rtm3
20130329 rtm3
openrtm
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
This is a slide we have showed in db analytics showcase in Sapporo.
2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information
Sony Network Communications Inc.
Metro.cs #1 Background of PhotonWire - Typed Asynchronous RPC Layer for Photon Server + Unity
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
Pythonには文字列やリストなど、長さをもつオブジェクトがあります。長さを手に入れるには、文字列なら、name.length ではなく len(name) のようにlen関数を使います。len関数はどうやってnameに入っているオブジェクトの長さを手に入れているのでしょうか。if文にはTrue/Falseとなる条件式を指定しますが、それだけでなく文字や数字、自分で作ったデータ型も渡せます。if文はどうやって与えられたオブジェクトがTrueなのかFalseなのかを手に入れているのでしょうか。 この発表では、Pythonのプログラムがどうやって必要な情報を手に入れているのか、また、自分で実装するときにどう実装すればlen()やif文やfor文に指定できるのかを説明します。
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
OSC 2020 Online /Kyoto セミナー企画 Flutterの話題とコミュニティ紹介 セッションスライドです。 https://event.ospn.jp/osc2020-online-kyoto/session/161439
Flutterを体験してみませんか
Flutterを体験してみませんか
cch-robo
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi
最先端NLP勉強会2017の論文紹介資料.ACL'17-long paper. TITLE : Selective Encoding for Abstractive Sentence Summarization.
最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17
Masayoshi Kondo
研究室のゼミの資料。研究に役立つC++入門。 二回目はC/C++の基礎。
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Similar to Final LINQ Extensions
(20)
Boost Fusion Library
Boost Fusion Library
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7
What is template
What is template
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
Final LINQ extensions III
Final LINQ extensions III
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Linq To Fun
Linq To Fun
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
Boost17 cpplinq
Boost17 cpplinq
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
20130329 rtm3
20130329 rtm3
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Flutterを体験してみませんか
Flutterを体験してみませんか
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17
研究生のためのC++ no.2
研究生のためのC++ no.2
More from Kouji Matsui
セッションビデオ: https://www.youtube.com/watch?v=YF7n8YqEfCg ブログ: https://www.kekyo.net/2019/10/07/6995 2019.10.5 .NET Conf 2019 meetup in AICHI https://centerclr.connpass.com/event/143949/
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
A translator for ECMA-335 CIL/MSIL to C language. How works and aiming for tiny resource requirements by the IL2C? How works AOT (ahead of time compilation) by the IL2C? What’s done, doing and will do the IL2C project?
Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018
Kouji Matsui
At NT NAGOYA 2018
Matrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overview
Kouji Matsui
* What’s the BrainPad? * What’s STEM and STEAM? * Block construction language - Microsoft MakeCode * Evolution programming step - Microsoft Visual Studio * Conclusion
Fun with BrainPad
Fun with BrainPad
Kouji Matsui
It’s very tiny slides about compositions for functional. We can do free discussion in this session about what’s functional and/or what’s problem for functional? These answers are yourself.
What's Functional?
What's Functional?
Kouji Matsui
We can safe connection for LiPo battery on Seeed WioLTE
Pitfall for WioLTE
Pitfall for WioLTE
Kouji Matsui
.NET Fringe Japan 2018 New Year Party https://dotnetfringe-japan.connpass.com/event/74536/
How to make the calculator
How to make the calculator
Kouji Matsui
Making archive IL2C #6-51 at dotNET 600
Write common, run anywhere
Write common, run anywhere
Kouji Matsui
What's "Locality of Reference?" nagoya.bin meetup slide.
Locality of Reference
Locality of Reference
Kouji Matsui
A Lisp-like lightweight functional language on .NET. This slide contains how to generate expressions from Nesp parser. ML勉強会 #2 https://ml-lang.connpass.com/event/58151/ https://github.com/kekyo/Nesp
Nespのコード生成
Nespのコード生成
Kouji Matsui
C#でわかる こわくないMonad 2017.5.27 岐阜Sharp #gifsharp #fsharp
C#でわかる こわくないMonad
C#でわかる こわくないMonad
Kouji Matsui
F#'s active pattern functions library for Roslyn C#/Visual Basic compiler platform. This slide use in NGK2016B ( Japan) conference 12.17.2016. https://ngk2016b.connpass.com/ This is a joke session ;)
You will be assimilated. Resistance is futile.
You will be assimilated. Resistance is futile.
Kouji Matsui
2016.11.09 MS MVP Summit Special: A Night of Lightning Talks Kouji Matsui (@kekyo2)
How to meets Async and Task
How to meets Async and Task
Kouji Matsui
How to implement new custom IL Opcode on .NET Core CLR.
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
Kouji Matsui
Windows asyncronous I/O discovering in .NET through kernel mode. Unconference before Microsoft Japan "de:code" 2016 conference. http://connpass.com/event/29637/
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
How and what thread affinity and continuation passing style using .NET, C# and F#.
Thread affinity and CPS
Thread affinity and CPS
Kouji Matsui
Async DeepDive Basics 2016.5.17 Tune's welcome (@its_out_of_tune)
Async DeepDive basics
Async DeepDive basics
Kouji Matsui
The "Continuation Passing Style" basics and provide seamless interoperability .NET Task and F# Async workflow implicit conversion technics. "NLNagoya 2016" conference session slides.
continuatioN Linking
continuatioN Linking
Kouji Matsui
Intermediate Language Basics - The final. http://www.kekyo.net/2016/03/22/5710
真Intermediate languageのキホン
真Intermediate languageのキホン
Kouji Matsui
Japan ComCamp powered by MVPs 2016/2/20 https://technet.microsoft.com/ja-jp/mt637807 #jccmvp #centerclr
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
More from Kouji Matsui
(20)
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018
Matrix signal controller and BrainPad overview
Matrix signal controller and BrainPad overview
Fun with BrainPad
Fun with BrainPad
What's Functional?
What's Functional?
Pitfall for WioLTE
Pitfall for WioLTE
How to make the calculator
How to make the calculator
Write common, run anywhere
Write common, run anywhere
Locality of Reference
Locality of Reference
Nespのコード生成
Nespのコード生成
C#でわかる こわくないMonad
C#でわかる こわくないMonad
You will be assimilated. Resistance is futile.
You will be assimilated. Resistance is futile.
How to meets Async and Task
How to meets Async and Task
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
Async deepdive before de:code
Async deepdive before de:code
Thread affinity and CPS
Thread affinity and CPS
Async DeepDive basics
Async DeepDive basics
continuatioN Linking
continuatioN Linking
真Intermediate languageのキホン
真Intermediate languageのキホン
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Final LINQ Extensions
1.
Final LINQ ExtensionsCenter
CLR Part.2 – 2015.02.07 Kouji Matsui @kekyo2
2.
自己紹介 けきょ (@kekyo2
Kouji Matsui) LINQ, Async, .NETとか Center CLRオーガナイザーです 会社やってます 認定スクラムマスター アーキとかフレームワーク設計とか
3.
Final LINQ Extensions
そろそろ、LINQも当たり前の空気になってきた今日この頃。 まだLINQが使えていないという方々に、クモの糸を垂らしてみます。 普通の入門的な内容なら、いくらでも資料があるので、同じような 内容にならないように、導入を工夫してみました。 LINQ to Objectが対象です(PLINQは少しだけ触れます)。 ここを抑えておけば、他のLINQもママ行けるでしょう。
4.
LINQ to Objectとは
全てのLINQの基本。 配列やコレクションに対して、統一的な手法で集合演算を実行出来 る「演算子」と構文のセット。
5.
アジェンダ ループと分岐処理からの脱却 構造的な値への適用
初歩的な演算子 実践的なforeachの置き換え 列挙子とは 演算子を作る パフォーマンスの改善 789 456 123
6.
ループと分岐処理からの脱却 指定された個数の乱数を含む配列を生成 Basicなforループ
7.
ループと分岐処理からの脱却 指定された個数の乱数を含む配列を生成 (LINQ) LINQクエリ(メソッド構文) 4つのパートから成っている
8.
ループと分岐処理からの脱却 LINQでは、処理内容を「演算子」と呼ばれるメソッド群を組み合わ せて表現します。 無限数列を生成 乱数を生成 0 0
0 … Rand() Rand() Rand() … [r0] [r1] [r2] 乱数の無限数列それらを配列化 count個だけ 「0」の無限数列 count個だけ … [r(count-1)] 配列
9.
指定された個数の、偶数のみの乱数列 ループと分岐処理からの脱却 乱数の生成数 ≠
結果の個数となるので、 forが使えないのでwhileに変更。 ステート変数としてindexが必要。 偶数の場合のみ、indexがインクリメント されなければならない
10.
ループと分岐処理からの脱却 指定された個数の、偶数のみの乱数列 (LINQ) 絞り込み条件として、 式を記述 他の演算子に変化はない 0
0 0 … Rand() Rand() Rand() … [r0] …[r1] [r2] [r(count-1)] (value % 2) == 0
11.
指定された個数の、 偶数かつ重複のない 乱数列 ループと分岐処理からの脱却 値が存在しない場合だけ追加する 今までの数列に値が存在 したかどうかの確認
12.
ループと分岐処理からの脱却 指定された個数の、偶数かつ重複のない乱数列(LINQ) 重複する値を除去 他の演算子に変化はない 0 0
0 … Rand() Rand() Rand() … [r0] …[r1] [r2] [r(count-1)] Distinct (value % 2) == 0
13.
ループと分岐処理からの脱却 LINQは、「数列」に対して、様々な「演算子」を適用して処理を 実現します。 0 0
0 … Rand() Rand() Rand() … [r0] [r1] [r2] Distinct (value % 2) == 0 分岐条件をプログラマブルに実行 するのではなく、データの加工条 件を「宣言的」に記述します。 無限数列を Infinite() 変換し Select() 絞り込みを行い Where() 重複を除去し Distinct() 指定された個数だけ取り出し Take() 配列に変換する ToArray() … [r(count-1)]
14.
ループと分岐処理からの脱却 言うまでもなく、データ群を操作するならLINQによる集合演算がシ ンプル・低い難易度・バグも生み難いです。 「どうやって実装するか」ではなく、「どのような結果が必要か」 と考える事がカギです(この辺りは、SQLによるクエリの設計と同じ です)
。
15.
アジェンダ ループと分岐処理からの脱却 構造的な値への適用
初歩的な演算子 実践的なforeachの置き換え 列挙子とは 演算子を作る パフォーマンスの改善 Persons Person Address Address Person Address
16.
構造的な値への適用 LINQが適用できるのは、「単純な数列」だけではありません。 以下のようなクラスとその配列を考えます。 配列に変換 名前が一致する Personを抽出 Personクラスの配列から、名前が一致する Personだけを抽出し、配列として返す
17.
構造的な値への適用 絞り込み条件には、任意の式を指定出来ます。 年齢の条件を追加 Personクラスの配列から、名前が一致し、かつ指定年齢以上 となるPersonだけを抽出し、配列として返す AND条件だけでなく、もっと複雑な複合条件を 指定することも出来ます。 C#で記述可能な式なら何でもOK。
18.
構造的な値への適用 ネストした構造に対しても、同じように記述出来ます。 指定された住所文字列を含む Personの抽出 Contains演算子: 配列内に一致する 要素(文字列)があるかどうか Person
Person Person … Address Address Address 住所群に住所文字列が含まれているかどうか (ここが独立したLINQ式。サブクエリ風味)
19.
構造的な値への適用 おっと、ちょっと違いますね。 「AddressElements配列内に、指定された文字列と同一の文字列があるか」ではなく
「AddressElements配列内に、指定された文字列を含むものがあるか」ですね。 配列群に住所文字列が 含まれているかどうか Person Person Person … Address Address Address Any演算子: どれかが満たされるかどうか .Contains(address) .Contains(address) .Contains(address) 一つ一つは、string.Contains()
20.
構造的な値への適用 構造の奥底にある値を、平坦化出来ます 名前が一致する全住所文字列を抽出 そのままでは二重のシーケンス となる所を、一重のシーケンス に変換する Person
Person Person … Address Address Address Address Address Address Address Address Address Address Address Address SelectMany()
21.
構造的な値への適用 質問:ここまでの例をループや分岐条件でサクッと書けますか? 特に最後に挙げたSelectManyと同等の処理を、ルー プと分岐条件で書くと、単純な結果に対して非常に 複雑な処理が必要になります。 List<T>を封じたら、多分面倒この上ないわね。 自分で考えてみて。
22.
アジェンダ ループと分岐処理からの脱却 構造的な値への適用
初歩的な演算子 実践的なforeachの置き換え 列挙子とは 演算子を作る パフォーマンスの改善
23.
初歩的な演算子 とりあえず、以下の使い方を覚えましょう。 機能グループ 演算子 射影(変換)
Select SelectMany フィルター Where Skip Take Distinct ソート OrderBy / OrderByDescending ThenBy / ThenByDescending 単項(即値) Any / All Max / Min Sum Count 固定化 ToList / ToArray
24.
初歩的な演算子(射影) とても多彩な射影(変換) Select演算子は、入力となる要素を、別の何かに変換します。物体に対する影 のように、形を変える様から「射影」と呼びます。
例えば、intの値群を文字列群に変換するには、以下のようにSelectを使いま す。 このラムダ式で、value (intの値)を文字列に変換 する 全ての要素に対して ラムダ式を実行 要素が代入される 引数
25.
初歩的な演算子(射影) Selectには、仮引数を2つ取るオーバーロードがあります。これを「イ ンデックス付き射影」と呼びます。 2つ目の引数が、インデックスを表す。 要素の先頭を0とし、1…nのようにインクリメントされる。 要素の先頭からの位置を把握したい場合に使えます。
26.
初歩的な演算子(射影) 射影(変換) SelectMany演算子は、特殊な射影変換です。射影対象の要素が「アンルー プ」の対象となります。その結果、列挙が二重となる要素を「一重に展開」 します。 int[] int[] アンループされて、ただの配列に 二重の配列
27.
初歩的な演算子(射影) LINQには「メソッド構文」と「クエリ構文」という書き方があります。 メソッド構文は、今まで例に挙げてきたような「Select」や「Where」 などのメソッドを使って直接記述する構文です。
クエリ構文は、LINQ入門で良く扱われる「SQL」に似た単語で書ける 構文です。以下に例を示します。 何となく、SQLっぽい
28.
初歩的な演算子(射影) 構文 特徴 メソッド構文 全ての演算子を使用することが可能。 ブロック化されたラムダ式を使用することで、複雑な処理を射影やフィルターで実装 可能。 完全な記述が可能な反面、煩雑になりやすい。 クエリ構文
SQLに似た、フレンドリーな構文を使用可能。 式は暗黙にラムダ式として取り扱われるので、仮引数の宣言が不要で、式の記述がシ ンプルになります。 ブロック化されたラムダ式を使う事は出来ないので、純粋に式として記述する必要が あります。 サポートされる演算子は一部のみ(Select, SelectMany, Where, OrderBy, ThenBy, Join, GroupBy)。また、コンパイラによって固定的に置き換えられる「構文糖」です。 SelectManyのネストした要素の引き渡しを暗黙裡に行えるため、SelectManyについて 非常に簡潔に記述できます。 let(範囲変数)を使用できる。メソッド構文ではいちいち匿名クラスに再代入が必要 だが、letを使うと簡単に値を持ってまわることが出来ます。 メソッド構文とクエリ構文の比較 個人的には、どちらが優れている とは言えないと思います
29.
初歩的な演算子(射影) クエリ構文によるSelectManyの例を示します。 fromを多重に宣言することで、 SelectManyとして扱われる もちろん、何多重になっても問題ありません。メソッド構文で同じ事を書こうと すると、SelectManyをネストさせる事になり、ちょっとキツイです。 「たっぷり多重」の例: http://www.kekyo.net/2014/12/08/4441
30.
初歩的な演算子(射影) SelectManyの外側にある要素にも、簡単にアクセス可能 メソッド構文でSelectManyを使う場合、この式を解決す るには、事前に別の要素に射影が必要で、かなり面倒 (クエリ構文なら、自然に書けて、あとはコンパイラが 勝手にやってくれる)
31.
初歩的な演算子(射影) 範囲変数(let)を使うと、一時変数のように値の記憶に使えます。スコープ は一反復内に限られ、readonly扱いなので、副作用の心配はありません。 範囲変数も、射影の壁を乗り越える便利な道具です。 この式のコストが高い場合、結果を 保持して使いまわしたい 射影の壁 範囲変数も越えられる
32.
初歩的な演算子(フィルター) Whereはフィルター条件に従って、要素を制限します。 フィルター条件をラムダ式で 与える
33.
初歩的な演算子(フィルター) Skipは指定された要素数だけ、飛ばします。 Takeは指定された要素数だけ、取得します。
この二つを組み合わせると、任意の位置から任意の個数の要素を抜 き出すことも出来ます。 Skip(start) n0 n1 n2 n3 n4 n5 n6 n7 n8 n2 n3 n4 n5 n6 n7 n8 n2 n3 n4 n5 n6Take(count)
34.
初歩的な演算子(フィルター) Distinctは重複する要素値を削減します。 考え方はSQLのDISTINCTと同じですが、「同一の値」の担保はEqualsメ ソッドか、IEquatable<T>.Equalsか、IEqualityComparer<T>で行われます。
Intやstringなどの基本的な型は、Equalsが正しい値を返すので、何も 考えなくてもDistinctだけで重複を除外出来ます。 順序は安定です(LINQ to Object以外は実装依存)。 1 5 2 1 4 7 6 7 3 1 5 2 4 7 6 3 Distinct
35.
初歩的な演算子(ソート) OrderByで要素をソートできます。 ソート対象のキーを指定することも出来ます。
キーはIComparable<T>やIComparer<T>を使用して、大小比較を実行し ます。これらのインターフェイスも、基本的な型はサポートしてい るので、キーとして自然に使用出来ます。 キーの指定 ここでは要素の値(int)そのものをキーとしている
36.
初歩的な演算子(ソート) 任意の構造を持つ配列でも、対象のキーを指定出来ます。 キーの指定 Person内のフィールドをキーとする
37.
初歩的な演算子(ソート) 逆順ソートも出来ます。 OrderByDescending演算子を使うと、 逆順でソートされる
38.
初歩的な演算子(ソート) 複数のキーを使って、複合ソートも出来ます。 ThenBy演算子を使うと、2番目以降のソートキーを追加できる。 OrderByDescendingやThenByDescendingと組み合わせる事も可能。 (ThenByやThenByDescendingはOrderByの後にのみ記述可能)
39.
初歩的な演算子(単項) Anyは、要素が1つ以上存在するかどうかを確認します。 Allは、全ての要素が条件に合致するかどうかを確認します。
Countは、要素数をカウントします。 存在確認にCountを使わない事。Anyで判断します。 Countを使うと総数を数える可能性があるので、 存在確認のためだけにはオーバーヘッドが大きい Anyを使えば、要素が見つかった時点で 処理を終えるので効率が良い
40.
初歩的な演算子(単項・即値) Max/Minは、最大・最小の要素を返します。IComparable<T>か、 IComparer<T>が必要です。 Max/Minには、要素が必要です(要素数0の配列等に適用すると例外 が発生)
Sumは、要素の合計を算出します。
41.
初歩的な演算子(固定化) 通常LINQクエリは、式が実際に実行されるまで処理が保留されます (式の内容だけが記憶されている)。この事を「遅延評価」と呼び ます。 ToArray・ToListは、それぞれ配列とリストに変換します。しかし、配 列やリストに結果を入れるためには、要素群が「確定」しなければ なりません。したがって、これらの演算子はその場で実行されます。 この時点ではまだフィルターは 実行されていない (filteredは式そのものを示す) 配列に変換する過程で、初めて filteredが実行される AnyやCountなども、 その場で実行されます
42.
アジェンダ ループと分岐処理からの脱却 構造的な値への適用
初歩的な演算子 実践的なforeachの置き換え 列挙子とは 演算子を作る パフォーマンスの改善
43.
実践的なforeachの置き換え 一重ループの例 ①for・foreach・whileなどのループ構文に注目し、 何を列挙しているのかを確認する。 「personsを列挙している」 ②最終的に、何をするのかに注目する。 「listにpersonを追加(結果を保存)」 より的確に→「personのリストを生成」 より的確に→「personの配列を生成」 「何となく、一つに出来そうだ」
44.
実践的なforeachの置き換え 一重ループの例 ①に対応するもの(列挙対象) ②に対応するもの(結果の保存)
45.
実践的なforeachの置き換え LINQにおける、Producer-Consumerとは ①Producer(データ群の提供者) ②Consumer(データ群の消費者)
46.
実践的なforeachの置き換え LINQにおける、Producer-Consumerとは ①Producer(データ群の提供者) ②Consumer(データ群の消費者) 最初に、「Consumer」に注目し、ここのコード量を減らしておく。 その後、Consumer以外のコードを、LINQクエリ内に持っていけるようにリファクタする。
47.
実践的なforeachの置き換え 二重ループの例 ①Producer(データ群の提供者) ②Consumer(データ群の消費者)
48.
実践的なforeachの置き換え 二重ループの例 ①Producer(データ群の提供者) ②Consumer(データ群の消費者)
49.
実践的なforeachの置き換え データが流れていく様を想像する ①Producer(データ群の提供者) ②Consumer(データ群の消費者)
50.
実践的なforeachの置き換え ステップバイステップ (1/7) 配列っぽい何かを返すつもり (何を返すかは、今から考えるよ)
51.
実践的なforeachの置き換え ステップバイステップ (2/7) 何から?
persons から!
52.
実践的なforeachの置き換え ステップバイステップ (3/7) そうそう、personsを列挙するんだった
53.
実践的なforeachの置き換え ステップバイステップ (4/7) personの中身のAddressの中身が見たいんだっけ
54.
実践的なforeachの置き換え ステップバイステップ (5/7) 列挙の条件は…
ward文字列を含む、と
55.
実践的なforeachの置き換え ステップバイステップ (6/7) 何が欲しいんだっけ… そうそう、条件を満たした時のaddressだった
56.
実践的なforeachの置き換え ステップバイステップ (7/7) で、これらを配列にしたい、と。 完成!!
57.
アジェンダ ループと分岐処理からの脱却 構造的な値への適用
初歩的な演算子 実践的なforeachの置き換え 列挙子とは 演算子を作る パフォーマンスの改善
58.
列挙子とは ずっと配列で例を示してきました が、LINQの演算子は「列挙子」で あれば、何でも対応できます。 列挙子とは、「IEnumerable<T>イン ターフェイス」の事です。
このインターフェイスを実装して いるクラスに対して、LINQ演算子 を適用することが出来ます。 配列やList<T>クラスも、 IEnumerable<T>インターフェイスを 実装しているので、どちらも同じ 演算子を適用できるのです。
59.
列挙子とは 列挙子を受け取るように変更すれば、配列やList<T>やその他のコレク ションなどを、柔軟に受け取る事が出来るようになります。 引数に配列ではなく、列挙子を 受け取るようにする LINQクエリはそもそも列挙子に対して操作 するので、配列の時と全く変わらない
60.
列挙子とは 列挙子を受け取るように変更すれば、配列やList<T>やその他のコレク ションなどを、柔軟に受け取る事が出来るようになります。 配列とList<T>、どちらも 受け取る事が出来る
61.
列挙子とは 実は、LINQクエリの結果は「列挙子」です。 LINQクエリ式は列挙子 (但し即値演算子を除く) 列挙子のConsumer == IEnumerable<string>
62.
列挙子とは 列挙子同士を演算子で連結しているのです Personを列挙するクエリ stringを列挙するクエリ
63.
列挙子とは 動的LINQ(動的に条件が変わるLINQクエリの構築)は面倒、という話 がありますが、条件を限定すれば簡単に実現出来ます。 LINQクエリの型がどちらも IEnumerable<T>である事を利用し て、フラグで検索条件を変更する 完全に動的にLINQクエリを構築するのは、確かに大変です。ですが、殆どの場合はあらか じめ変化させたいクエリの構造が分かっているはずなので、この手法で十分です。
64.
列挙子とは 列挙子同士は、バケツリレーのように要素を伝達します。 だから、必要のない限りは余計なメモリを消費しません。 IEnumerable<T> IEnumerable<T> IEnumerable<U> Where() Select() OrderBy() OrderByの内部実装は、暗黙にデータをバッ ファリングするため、メモリを消費します。
65.
列挙子とは 間にToListやToArrayを挟めば、デバッグ向けに演算子間のデータ群を 確認できます。 リストや配列も列挙子になるので、 そのまま再代入可能 デバッグ時には固定化したリストを 見る事が出来る
66.
列挙子とは 何故そのような話をするのかというと… LINQクエリは、デバッガで直接結果 群を参照できません 結果ビューを展開すると見える場合もあります。し かし、これはデバッガ上でLINQクエリを実行した (列挙した)事になります。 環境によっては、結果ビューの展開が出来ない場合があります。そのような場合でも固定 化すれば問題なく参照出来るようになります。 注意:巨大な結果が得られる場合は、固定化すると当然メモリを消費します。 従って、デバッグ時にのみ固定化しましょう。
67.
アジェンダ ループと分岐処理からの脱却 構造的な値への適用
初歩的な演算子 実践的なforeachの置き換え 列挙子とは 演算子を作る パフォーマンスの改善 λ
68.
演算子を作る 冒頭で当たり前のように「Infinity」という演算子を使いましたが、実 はこれはLINQ to
Object標準ではありません。 LINQでは、自分で演算子を作る拡張性もあります。 列挙子(IEnumerable<T>)を返す yield returnで要素を一つ送出する 無限回繰り返す
69.
演算子を作る yield returnは、普通のreturnとは違います。
次段の演算が一つ要素を要求する度に、一旦メソッドから抜けるように動 作し、次の要求で再び処理を再開します。 Infinity<int>(0) 0 Select() 一個ずつ要求 ループ一回 だけ実行
70.
演算子を作る リンクリストを辿ってみる 列挙可能ではないものを、列挙出来るようにする方法
列挙可能にすることで、データをLINQの世界に引きずり込む リンクの先頭 次のリンクを指定 させるラムダ式列挙可能 ラムダ式を実行して、 次の要素を得る 拡張メソッド
71.
演算子を作る 例:WPFのビジュアルツリーを親方向に探索するような列挙子 DependencyObjectの親を 取得、なければnull Window [α] [β] [γ] [δ] [ε] [ζ] [η] TextBlockA TextBlockB 今ココ TextBlockA
[ζ] [β] Window GetVisualParents(textBlockA)
72.
アジェンダ ループと分岐処理からの脱却 構造的な値への適用
初歩的な演算子 実践的なforeachの置き換え 列挙子とは 演算子を作る パフォーマンスの改善 その昔、クリスタルの魔力をわが手中に せんとする陰謀が、 「これが最後」というタイトルと共に、 幾度となく繰り返された伝説があった…
73.
LINQマスターヤマト 時 間 た り ね ー ぜ っ て ー た り ね ー ! ! !
74.
次回予告 クエリ構文との連携 演算子の適用回数を減らすこと(クエリ構文のselectは自動的に削減 される)
短縮演算子(WhereしてCountとか、AnyとかAllとか) 複数の連続したWhere条件の合成 Whereの適用方法の見直し(要素数の演算量の少ない絞り込み) 並列化(AsParallelとTPL・Producer-Consumerモデルによる制限) 制御構文への回帰とタイミング LINQ→制御構文は簡単だが、逆は難しい 式木の使われ方 残予定だったけど、 続編にするので、 もっとネタ追加
75.
お疲れ様でした! スライドはブログに掲載します。 http://www.kekyo.net/
Download now