SlideShare a Scribd company logo
1 of 40
.NET Core がLinuxで
どのように動いているか、
またわれわれは
どのようにデバッグするのか
たなか (@TANAKA_733)
Y8 2017 SPRING IN SHIBUYA
1
@tanaka_733
Red Hat K. K.
◦ .NET Core on RHEL, Red Hat on Azure, OpenShift
◦ SQL Server on RHEL も調べたり
Microsoft MVP for VSDT*
◦ .NET, C#, Azure系の勉強会によく出現します
◦ Build Insider でよく執筆しています (C# 文法, C# 7.0 や .NET Core)
◦ (需要があれば) ほかの勉強会にもお邪魔したいです
Contact
◦ contact@tanaka733.net or twitterで
2
* VSDT: Visual Studio and Development Technologies
AGENDA
.NET Core とは
◦ (この後出てくる) coreclr とか corefxが何かを知ってもらう
CoreFX on Linux
◦ ネットワーク通信とかファイルIOとかどう実装してるのか
Debugging .NET Core on Linux
◦ Visual Studioが使えないLinux上でどうやってデバッグするのか
3
…は話しません
Getting Started with .NET Core
◦ .NET Coreでのアプリ開発について
◦ 近々Build Insiderで連載が始まるので読んでね! ダイレクトマーケティング
Xamarin
◦ Xamarinの出自のmonoは関連が深いけれど、.NET Coreではないです
.NET Core 2.0/.NET Standard 2.0
◦ 2.0はpreview、現在の正式最新版が1.x
◦ 今日の話は.NET Core 1.xベース
◦ 概念としては2.0でも変わらない(予定)
◦ 利用可能なツールのバージョンとかオプションとかは変わるかも
4
.NET Core とは?
.NET Frameworkとの違いや、
coreFX, coreCLRの意味するもの
5
.NET Application Model
6
.NET Core Inside
7
.NET Core App (C#/VB)
IL Assembly (exe, dll)
Roslyn
CoreFX
(.NET Core
Class Library)
ManagedUnmanaged
OS
Native ABI etc
(F#)
compiler
CoreCLR
(.NET Core Runtime)
.NET
Core
SDK
Tools
coreFXに見る
OS固有処理の実装
8
coreFX とは
.NET Core の基本クラスライブラリ群
◦コレクションとかIOとか
開発時、実行時ともライブラリとしてロードされる
◦開発時と実行時では参照するものが異なる 後で
NuGetとよばれるパッケージマネージャを通して提供
9
NuGet
nodejsのnpm、Javaのmaven的なパッケージ管理エコシステム
◦ mavenとは違ってビルドシステムは別(MSBuild)
デフォルトでnuget.orgでホストされるパッケージを参照する
◦ 公式ライブラリも正式版はここから提供される
◦ アカウントを作成すればだれでもここにホストできる
◦ 専用ホスティングを立てることもできる(社内限定など)
NuGetパッケージの.nupkgは単なるzip圧縮
◦ フォルダ階層やフォルダ名に意味がある
◦ 中身はWindowsでおなじみのdllとか
◦ LinuxやmacOSでもクラスライブラリの拡張子はdll
10
NuGetにおける複数環境への対応
.NET Core以前にも、異なる環境ごとに実装を入れ替えたい要望があった
◦ SilverlightとかWindows Phoneとかありましたしね… (遠い目
◦ .NET Frameworkのバージョンごとにわけたというのもある
(歴史的な経緯で)名称は複雑だが、
環境ごとにフォルダを分けて同梱できる
◦ Portable Class Library (PCL)とかその辺
NuGetクライアントがいい感じに対応するバイナリを拾ってくれる
11
OS固有の処理をいかに記述するか
NetworkやFile IOといった処理
プログラミング的なアプローチとしては…
◦ 通常のif文
◦ コンパイラスイッチ
◦ プラットフォームごとにコンパイラにスイッチを渡して
コンパイル対象のコードを切り替えることができる
パフォーマンス上の問題になったり、
コードの見通しが悪くなったり…
13
OSごとに参照するdllを差し替える
14
System.Net.Http/4.1.0
┗ref
┗ netstandard1.3
┗System.Net.Http.dll
┗lib
┗ win/lib/ netstandard1.3
┗System.Net.Http.dll
┗ unix/lib/ netstandard1.6
┗System.Net.Http.dll
開発時に参照するライブラリ
Windows上で実行するときに参照
Unix (Linux+Mac)上で実行するときに参照
対応している.NETの環境を示す
15
せっかくHttp通信ライブラリを例に出したので
Unix(Linux+Mac)でHttp通信がどのように実装されているか見てみよう
HttpClient.XXX.cs
16
https://github.com/dotnet/corefx/blob/release/1.1.0/src/Syste
m.Net.Http/src/System/Net/Http/HttpClient.cs
17
HttpClientの実装はcurlだった…?
.NET Frameworkにはネイティブライブラリを実行する
P/Invokeという技術がありました
◦ COM だったり
◦ C styleの関数だったり
.NET Coreの世界に来てもP/Invokeは健在です
◦ P/Invoke on Linuxはmonoで実現できていたことです
◦ 機能追加に関してもmonoの機能が提案されています
18
P/Invokeのしていること
関数を格納している共有ライブラリを検索
そのライブラリをメモリに読み込み
関数のアドレスを指定+引数をスタックにプッシュ
• .NET とC++のデータ型が一致しないのでマーシャリングも
19
P/Invokeを使えばLinuxでもGUIが!?
.NET CoreはGUIはサポートしていない (monoはサポートしている)
が、ネイティブのGUIライブラリをP/Invoke経由で実行することは可能
20
public static void Main(string[] args)
{
var argc = 0;
var argv = IntPtr.Zero;
gtk_init(ref argc, ref argv);
var diag = gtk_message_dialog_new(IntPtr.Zero,
DialogFlags.Modal, MessageType.Error,
ButtonsType.Ok,
“Hello from .NET Core on Red Hat!”,
IntPtr.Zero);
var res = gtk_dialog_run(diag);
gtk_widget_destroy(diag);
Console.WriteLine(res);
}
P/Invokeが故におきる事案
https://github.com/dotnet/coreclr/issues/5612
ロケールがen-usでない環境だと、次のシンプルなコードが、
LinuxだとWindowsの10倍以上遅くなる問題
 libicu のロード時間の問題 (未解決)
21
"abcfeg".EndsWith("123");
async on Linux
C# (5.0以降)では非同期処理の記述にasync/await構文が使えます
.NET ではasync/await構文の実装は単純なスレッドプールではないです
WindowsではIO完了ポートが使われています。では、Linuxは?
24
public async Task<string> GetExample()
{
var client = new HttpClient();
var res = await client.GetAsync("http://example.com");
return await res.Content.ReadAsStringAsync();
}
epoll for async in Linux
25
https://github.com/dotnet/corefx/blob/release/1.1.0/src/Nativ
e/Unix/System.Native/pal_networking.cpp
Linux では epoll が、 macOSではkqueueが使われています
Debugging .NET Core
on Linux
Linuxの上でも.NET Coreをデバッグしたい
26
WindowsとLinuxでの違い
27
windbg
sos
procmon
perfview
LLDB/GDB
libsosplugin.so
strace
perfcollect
LLDBを使ったデバッグ
起動中のプロセスにアタッチする場合
1. sosplugin のパスを探しておく 例:
/opt/dotnet/shared/Microsoft.NETCore.App/1.1.1/libsosplugin.so
2. アタッチ対象のPIDを取得
3. lldb起動
4. lldbコンソールでアタッチ
(lldb) process attach -p <PID>
5. プラグインロード
(lldb) plugin
load/opt/dotnet/shared/Microsoft.NETCore.App/1.1.1/libsosplugin.so
(lldb) setclrpath /opt/dotnet/shared/Microsoft.NETCore.App/1.1.1
(lldb) clrstack
LLDBを使ったデバッグ
出力されたcoreファイルにattachする場合
1. sosplugin のパスを探しておく 例:
/opt/dotnet/shared/Microsoft.NETCore.App/1.1.1/libsosplugin.so
2. gcore <PID> でcoreをはかせる
3. lldb起動
$ sudo lldb /opt/dotnet/dotnet --core <corefile>
4. プラグインロード
(lldb) plugin
load/opt/dotnet/shared/Microsoft.NETCore.App/1.1.1/libsosplugin.so
(lldb) setclrpath /opt/dotnet/shared/Microsoft.NETCore.App/1.1.1
(lldb) clrstack
30
31
perf ツール
1. 対象のPIDを取得
2. PERFを出力して表示する
$ sudo perf record -F 99 -p <PID> -a -g -- sleep 10
$ sudo perf report --stdio
32
33
Tracing Runtime Event
インストール
https://lttng.org/docs/v2.8/#doc-fedora
CentOS向け
http://frederic-wou.net/lttng/
https://raw.githubusercontent.com/dotnet/corefx-
tools/master/src/performance/perfcollect/perfcollect
$ wget https://raw.githubusercontent.com/dotnet/corefx-
tools/master/src/performance/perfcollect/perfcollect
$ sudo ./perfcollect collect samplePerfTrace
$ sudo ./perfcollect view samplePerfTrace.trace.zip
34
35
High Level Debugging .NET Core
36
GDB/LLDB
MICore
MIDE/Engine.Impl
MIDE(*)/AD7.Impl
VSCode Debugger
AD7 Interface
*MIDE: MIDebugEngine
*vsdbgはVS製品以外での利用禁止かつ再頒布禁止なライセンス
MIText
VS Debugger
VS Debugger
Engine
vsdbg
(クローズド
ライセンス*)
windbg
統合可能
リモートデバッキング
リモートデバッキングはデバッガーのクライアントと対象のプロセス間で
信頼できる通信ができさえすればよい
◦ 多くの場合SSHを利用
◦ Windows同士だったら、昔から対象のマシンにデバッガーツールを入れて通信できていた
◦ クライアントはデバッガーのライセンス上、Visual Studio Family限定になるのが現状
◦ 技術的にはクライアントも任意。ライセンス的にはソースからビルドすればよさそう?
37
Visual Studio Codeからの
リモートデバッグ接続
.vscode/launch.json を編集する
◦ 通信コマンドを記述するので、sshコマンドのほかにdocker rshなども指定可能
38
{
"name": ".NET Core Docker Remote Attach",
"type": "coreclr",
"request": "attach",
“processId”: “86”, //アタッチするPIDを指定
"pipeTransport": {
"pipeProgram": “ssh",
“pipeArgs”: [ “-T”, “tanaka733@centos.example.com”], //接続先の指定
“quoteArgs”:false, //接続プログラムによりfalseがいいときとtrueがいいときがある
“debuggerPath”: “/opt/app-root/src/vsdbg/vsdbg”, //接続先のvsdbgパス
"pipeCwd": "${workspaceRoot}"
},
"sourceFileMap": {
"/opt/app-root/src": "${workspaceRoot}“
}
}
Visual Studio on Windowsからの
リモートデバッグ接続
リモート接続画面でSSHを選択する
◦ 設定が隠れているので、docker rshなどは現状指定できない
◦ docker for WindowsやAzure上のdockerコンテナへはVSの機能により接続可能
◦ つまり、Visual Studio拡張とかを書けば技術的にはいけるはず  調査中です…
あと今日見たら、プロトコルにWebSocketが追加されてたので夢は広がる?
39
まとめ
.NET CoreのクラスライブラリでOS固有の処理ではP/Invokeが大活躍
◦ P/Invokeを利用するが故の問題も起きている
Linux上の.NET Coreプロセスは通常のプロセス
◦ lldbやperfといったデバッグ・プロファイルコマンドが利用可能
GUIからのデバッグにはVisual Studio Codeが便利
◦ 原理的には別のエディタでもできるが、ライセンス的にVS Familyのみ
デバッグインターフェースに互換性があるので、
WindowsとLinux間で相互にリモートデバッグできる
◦ 明示的に記述がないけど、VS on WindowsからLinuxへ、VS Code on LinuxからWindowsへ
40
参考資料
GitHub repo
「NuGetでプラットフォーム毎にアセンブリを展開する方法」と「良い感じにコードを共有してプラット
フォーム別のアセンブリを作る方法」
P/Invokeを使って.NET Core on LinuxでGUIを作る記事 (英語)
◦ https://developers.redhat.com/blog/2016/09/14/pinvoke-in-net-core-rhel/
HttpClient
◦ https://github.com/dotnet/corefx/blob/release/1.1.0/src/System.Net.Http/src/System/Net/Http/HttpClient.cs
Staring.StartsWith の呼び出し階層 (StringクラスなどRuntime側でも必要なクラスはcorefxではなくcoreclrで定義
されている)
◦ https://github.com/dotnet/coreclr/issues/5612 (Issue本体)
◦ https://github.com/dotnet/coreclr/blob/release/1.1.0/src/mscorlib/src/System/String.Comparison.cs#L1104-L1114
◦ https://github.com/dotnet/coreclr/blob/release/1.1.0/src/mscorlib/src/System/Globalization/CompareInfo.cs#L582-L591
◦ https://github.com/dotnet/coreclr/blob/release/1.1.0/src/mscorlib/src/System/Globalization/CompareInfo.cs#L1346-L1351
◦ ※.NET Core 2.0で割と大掛かりに内部実装変わってます
41
参考資料(2)
Async/Await
◦ http://forums.dotnetfoundation.org/t/socket-async-on-linux-vs-windows/2498
◦ https://github.com/dotnet/corefx/blob/release/1.1.0/src/Native/Unix/System.Native/pal_networking.c
pp#L2501
◦ https://news.ycombinator.com/item?id=12341909
◦ Async訪ねて3000里 (6) : I/O完了ポートによるワーカースレッドの運用
◦ .NET Frameworkでの話。ぜひ(1)から…
◦ https://msdn.microsoft.com/ja-jp/library/cc429203.aspx
◦ http://southworks.com/blog/2013/10/29/asynchronous-io-in-c-io-completion-ports/
Performance Tracing
◦ https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/linux-performance-
tracing.md
42
参考資料(3)
LLDB
◦ http://blogs.microsoft.co.il/sasha/2017/02/26/analyzing-a-net-core-core-dump-on-linux/
Tracing Runtime Event
◦ https://lttng.org/docs/v2.8/#doc-fedora
◦ CentOS向け
◦ http://frederic-wou.net/lttng/
◦ スクリプト
◦ https://raw.githubusercontent.com/dotnet/corefx-tools/master/src/performance/perfcollect/perfcollect
vsdbg
◦ https://github.com/OmniSharp/omnisharp-vscode/wiki/Attaching-to-remote-processes
◦ clrdbg は vsdbg にリプレースされました
◦ OpenShift上のプロセスで説明していますが、docker rshでも同様に実行可能
◦ Remote Debugging s2i dotnetcore from Visual Studio Code
43

More Related Content

What's hot

SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】DeNA
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみるTakahiro Moteki
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAmazon Web Services Japan
 
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築Junji Nishihara
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発Amazon Web Services Japan
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~Yuki Hirano
 
UTアンチパターン
UTアンチパターンUTアンチパターン
UTアンチパターンryoheiseki1
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則bonjin6770 Kurosawa
 
M3の医療webサービス群を支える基盤技術
M3の医療webサービス群を支える基盤技術M3の医療webサービス群を支える基盤技術
M3の医療webサービス群を支える基盤技術IKEDA Kiyoshi
 
MySQLデータ暗号化と暗号鍵のローテーション
MySQLデータ暗号化と暗号鍵のローテーションMySQLデータ暗号化と暗号鍵のローテーション
MySQLデータ暗号化と暗号鍵のローテーションShinya Sugiyama
 
Spring Data JPAによるデータアクセス徹底入門 #jsug
Spring Data JPAによるデータアクセス徹底入門 #jsugSpring Data JPAによるデータアクセス徹底入門 #jsug
Spring Data JPAによるデータアクセス徹底入門 #jsugMasatoshi Tada
 
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!オラクルエンジニア通信
 
Glue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようGlue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようtakeshi suto
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 

What's hot (20)

SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグ
 
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
 
UTアンチパターン
UTアンチパターンUTアンチパターン
UTアンチパターン
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則
 
M3の医療webサービス群を支える基盤技術
M3の医療webサービス群を支える基盤技術M3の医療webサービス群を支える基盤技術
M3の医療webサービス群を支える基盤技術
 
KubeConRecap_nakamura.pdf
KubeConRecap_nakamura.pdfKubeConRecap_nakamura.pdf
KubeConRecap_nakamura.pdf
 
MySQLデータ暗号化と暗号鍵のローテーション
MySQLデータ暗号化と暗号鍵のローテーションMySQLデータ暗号化と暗号鍵のローテーション
MySQLデータ暗号化と暗号鍵のローテーション
 
OCI GoldenGate Overview 2021年4月版
OCI GoldenGate Overview 2021年4月版OCI GoldenGate Overview 2021年4月版
OCI GoldenGate Overview 2021年4月版
 
Spring Data JPAによるデータアクセス徹底入門 #jsug
Spring Data JPAによるデータアクセス徹底入門 #jsugSpring Data JPAによるデータアクセス徹底入門 #jsug
Spring Data JPAによるデータアクセス徹底入門 #jsug
 
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
 
Glue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようGlue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみよう
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 

Similar to 20170527 inside .NET Core on Linux

20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on LinuxTakayoshi Tanaka
 
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来decode2016
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu Hidaka
 
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
20161028 OpenSHift on Azure でASP.NET Coreと戯れようTakayoshi Tanaka
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーションYuta Matsumura
 
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」aitc_jp
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)NTT DATA Technology & Innovation
 
20160709 .NET Core on RHEL
20160709  .NET Core on RHEL20160709  .NET Core on RHEL
20160709 .NET Core on RHELTakayoshi Tanaka
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Akira Inoue
 
ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)Takayoshi Tanaka
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今Yuki Igarashi
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
2015 1025 OSC-Fall Tokyo NETMF
2015 1025 OSC-Fall Tokyo NETMF2015 1025 OSC-Fall Tokyo NETMF
2015 1025 OSC-Fall Tokyo NETMFAtomu Hidaka
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiNaruto TAKAHASHI
 

Similar to 20170527 inside .NET Core on Linux (20)

20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux
 
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
20161028 OpenSHift on Azure でASP.NET Coreと戯れよう
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
20160709 .NET Core on RHEL
20160709  .NET Core on RHEL20160709  .NET Core on RHEL
20160709 .NET Core on RHEL
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
2015 1025 OSC-Fall Tokyo NETMF
2015 1025 OSC-Fall Tokyo NETMF2015 1025 OSC-Fall Tokyo NETMF
2015 1025 OSC-Fall Tokyo NETMF
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
 

More from Takayoshi Tanaka

deep dive distributed tracing
deep dive distributed tracingdeep dive distributed tracing
deep dive distributed tracingTakayoshi Tanaka
 
202202 open telemetry .net handson
202202 open telemetry .net handson202202 open telemetry .net handson
202202 open telemetry .net handsonTakayoshi Tanaka
 
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineersTakayoshi Tanaka
 
20210129 azure webapplogging
20210129 azure webapplogging20210129 azure webapplogging
20210129 azure webapploggingTakayoshi Tanaka
 
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法Takayoshi Tanaka
 
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NETTakayoshi Tanaka
 
New Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservabilityNew Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservabilityTakayoshi Tanaka
 
C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)Takayoshi Tanaka
 
C#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオンC#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオンTakayoshi Tanaka
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...Takayoshi Tanaka
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能Takayoshi Tanaka
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能Takayoshi Tanaka
 
Try! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTry! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTakayoshi Tanaka
 
(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0Takayoshi Tanaka
 
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
New features of Azure Cloud Provider in OpenShift Container Platform 3.10New features of Azure Cloud Provider in OpenShift Container Platform 3.10
New features of Azure Cloud Provider in OpenShift Container Platform 3.10Takayoshi Tanaka
 

More from Takayoshi Tanaka (20)

deep dive distributed tracing
deep dive distributed tracingdeep dive distributed tracing
deep dive distributed tracing
 
202202 open telemetry .net handson
202202 open telemetry .net handson202202 open telemetry .net handson
202202 open telemetry .net handson
 
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers
 
20210129 azure webapplogging
20210129 azure webapplogging20210129 azure webapplogging
20210129 azure webapplogging
 
Unity(再)入門
Unity(再)入門Unity(再)入門
Unity(再)入門
 
最近のQ#について
最近のQ#について最近のQ#について
最近のQ#について
 
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
 
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET
 
New Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservabilityNew Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservability
 
C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)
 
20190806 Q# Measurements
20190806 Q# Measurements20190806 Q# Measurements
20190806 Q# Measurements
 
C#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオンC#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオン
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
 
Try! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTry! Visual Studio 209 git feature
Try! Visual Studio 209 git feature
 
Q#基礎 ver1.1
Q#基礎 ver1.1Q#基礎 ver1.1
Q#基礎 ver1.1
 
(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0
 
ゼロから始めるQ#
ゼロから始めるQ#ゼロから始めるQ#
ゼロから始めるQ#
 
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
New features of Azure Cloud Provider in OpenShift Container Platform 3.10New features of Azure Cloud Provider in OpenShift Container Platform 3.10
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
 

20170527 inside .NET Core on Linux