11月12〜13日 (つまり、数週間後)にDotNext 2017モスクワが開催されます。これは、.NETプラットフォームでの開発に特化したロシア最大の会議です。 私たちの講演者の中には、ロシア、ヨーロッパ、アメリカからの業界をリードする専門家がいます。 会議の主なトピックは、プラットフォーム内部(CLR、GC、JIT)、ツールの使用に関するベストプラクティス、プロファイリングとパフォーマンスの最適化、マルチスレッドプログラミング、プラットフォームの革新、複雑なケースソリューションです。
カットの下で-プログラムの詳細な分析、今年のイノベーションに関するいくつかの言葉、および割引価格での秘密のプロモーションコード 。
ハードコアリターン
まず 、変更はレポートの構成に影響しました。
サンクトペテルブルクでの最後のDotNextは素晴らしい時期に開催されました-多くの新しい技術が出てきたか、リリースの準備ができていました。 ほとんどすべてのレポートはこれに関するものであり、それは自動的に素材の複雑さを軽減することを意味しました。 調査が示したように、人々はGCの内部を掘り下げ、クラッシュするプロファイラー(Javistsのお気に入りの時間)を修正するなどのアイデアに特に興味はありませんでしたが、非常に重要なDokerとKubernetesを既製の.NETインフラストラクチャに統合する方法に非常に興味がありました。 まさにその時でした。
DotNext 2017モスクワでは、 ハードコアが復活します。 まだGCを掘り下げることはしませんが、メモリモデル、パフォーマンステストと最適化、デバッグのより細かいポイント、さらにはLinuxでのデバッグについても説明します。 特別な愛好家のために、関数型プログラミングの使用に関する2つのレポートがあります。 筋金入りのレポート-合計のちょうど3分の1。
ただし、「通常の」問題とツールの議論は消えていません。 クラスターとクラウドインフラストラクチャに関するレポートの大きなブロックがあり、それらを使用するためのツールと方法(コード生成のプラクティスなど)の議論があり、devoopsとセキュリティに関する何かがあります。 誰もが自分の好みに合ったテーマを見つけるでしょう。
そのような量の情報が1日に収まらないことは明らかであるため、DotNextには2日と3つの並行したトラックが必要です。 オープニングは午前10時に行われ(初日は午前9時に登録が開始されます)、午後7時に終了します。 トラックあたり9時間。 そのようなボリュームから脳が溶けないように、最も複雑なレポートだけでなく、より軽いレポートでそれらを希釈する訪問を計画できます。 しかし、私が計画したすべてに到達する方法-これは以下に書かれます。
人間ではなくロボットが注入する
次に 、重火器を接続し、特別な自作ソフトウェアを使用してトラック上のレポートの分布を分析しました。 次の問題を解決します。ある人が3つの既知のレポートにアクセスしたいとします。 それらを選択する必要がないように、それらを異なる時間に発生させる方法は?
OptaPlannerに基づいて-ビジネスの制約の普遍的なソルバー。 車のルーティング、タスクごとの従業員の分散、クラウドコンピューティングの最適化、製品の梱包などの問題を解決するために特別に設計されています。 これらのタスクはすべて、限られたリソースを関連する消費者に再分配する必要があるパズルを解くことに似ているという事実によって統合されています。 レポートの配布を計画するときに、ほぼ同じ問題が発生します。
OptaPlannerの上に、ConfPlannerと呼ばれる独自のエンジンが書かれています。 特に、 ウラジミール・シトニコフはこのことに感謝すべきです。 ウラジミールは、NetCrackerのパフォーマンスアーキテクトであり、JUG.ruグループプログラム委員会のメンバーです。 その結果、オープンソースプロジェクトが作成され、そのソースコードはgithubで表示できます。
一番下の行は、YAMLファイルの形式で制限を設定し、出力で既製のソリューションを取得することです。
capacity: 400 languages: - name: ru - name: en rooms: - name: 1 capacity: 300 - name: 2 capacity: 200 days: - name: 1 date: 2017-10-04 timeslots: - name: 1 day: 1 start: 11:00 duration: 50 - name: 2 day: 1 start: 14:00 duration: 50 - name: 3 day: 1 start: 18:00 duration: 50 topics: - name: Case study - name: Tricks speakers: - name: Speaker A arriveTime: 2017-10-04T12:00:00+03:00 - name: Speaker B leaveTime: 2017-10-04T16:00:00+03:00 talks: - name: 'How to arrive late' language: en speakers: Speaker A topics: Tricks - name: 'How to depart early' language: ru speakers: Speaker B topics: Tricks - name: 'Coffee time' language: en speakers: - Speaker A - Speaker B topics: - Case study - Tricks
今最もクールなこと:時間などの基本的な制限だけでなく、 調査データも考慮することができます 。 どのレポートを送信するかを指定するポーリング。
たとえば、ある人が3つのレポートにアクセスしたい場合、「一列に」並んでいます(時間的に一致しています)。 このような組み合わせは許容されますが、ペナルティポイントが付与されます。 レポートの最適なスケジュールを作成するという問題を解決する本質は、罰金を請求する機能を最小限にすることです。
もちろん、ConfPlannerがコメントを作成した後、スケジュールは生きている人々によってよく考えられます。 ご覧のように、 アンケートに記入すると便利です 。 最も文字通りの意味で、あなたの意見は本当に考慮されます。
約束の秘密推進コード
最初は、記事の最後の部分、またはレポートのリストの途中にプロモーションコードを挿入したかったので、少し調べなければなりませんでした。 レポートの数は、誰も見つけられないほど十分に大きいことがすぐに明らかになりました。 そのため、ここではコードを保持します。
ラストコールプロモ
登録ページでこのコードを使用すると、週末まで割引を利用できます。
プログラム内容
では、レポートを見て、この会議の内容を見てみましょう。 従来、すべてのレポートは次のグループに分類できます。
- パフォーマンスと低レベルの詳細
- ネットワークコード
- デバッグ
- クラスターとクラウド
- 輸送システム
- プログラミング言語、ツール、およびメソッド
- 関数型プログラミング
- 雑多
- 機械学習と教材
- 安全性
- 監視、運用、DevOps
- 哲学(!)
この分割は条件付きであることに注意することが重要です。 レポート自体は、厳密な分類に関連付けられていません。 たとえば、使用するフレームワークに応じて、何らかの方法でそれらをグループ化することが可能です。 ただし、上記の構造には優れた特性があり、どのレポートに移動するかを選択するのに役立ちます。
パフォーマンスと低レベルの詳細
基調講演: パフォーマンステストについて話しましょう
アンドレイ・アキンシン、JetBrains
基調講演には、次のようないくつかの目標があります。次の数日間に起こることの精神と本質を伝えること。 このレポートは、パフォーマンステストの典型的な問題とそのソリューションへの可能なアプローチに当てられます。 Andrei AkinshinはRiderプロジェクトに取り組んでおり、 BenchmarkDotNetメンテナーであり、一般に、マイクロ最適化について多くのことを知っています。
高性能C#のパターン:アルゴリズムの最適化から低レベルのテクニックまで
フェデリコロイス、コーバリウス
このレポートでは、分析から最適化の具体的な実施まで、高性能コードを書くために使用される技術とパターンを見ていきます。 どの最適化を使用する必要があるか、およびデータベースコードを最適化するときに通常どのような問題が発生するかを理解する方法を考えましょう。 これらのトリックの多くは、 RavenDB 4.0( .NETプラットフォーム用のNoSQLエンジンの最新バージョン)を開発するときに考案され、鏡のように磨かれます。 RavenDBはかなり複雑なものであり、ナノ秒の最適化が長い間行われており、時間、IO、およびプロセッサを同時に最適化する必要があります。 このレポートで説明した手法のほとんどは、言語やフレームワークに関係なく、どこにでも適用できます。
フェデリコは彼の発見について話すことができるようになりました。 彼はCorvaliusとCodealikeの共同設立者であるだけでなく、CPUとGPUなどのあらゆるunningなハードウェアの両方をハードウェアとして使用して、過去10年間アルゴリズムのパフォーマンスに実際に取り組んでいます。 これは、バイナリデータ、レジスタ、低レベルの最適化を恐れず、同時に同時実行技術と最新のコンピューターグラフィックスに情熱を傾ける人です。 一般的に、C#での低レベルの最適化に関するレポートを誰かが伝えることができれば、これで終わりです。
.NETメモリモデル
ヴァデリー・ペトロフ、シデニス
フェデリコの報告後、他に誰か質問がありますか? 誰かが並行性を恐れているのかもしれません(そして正当な理由のために)? ヴァレリー・ペトロフは、記憶モデルについての詳細な物語で私たちの運命を促進します。
Valeryが主に職場で「血なまぐさい企業」に従事しているのは興味深いことです。「エンタープライズ」プログラマーはそのようなことに興味がなく、理解していないという神話があり、一般的にこれは職場では必要ありません。 まあ、神話は破壊されます!
それで、問題は何であり、なぜこれが私たちにまったく興味を持たなければならないのですか? プログラムは通常、人々によって作成され、コンピューターによって実行されます。 コンピューターが存在する間、プログラミングに入るためのしきい値を下げるために多くの作業が行われました。コンピューターを動作させるために、コンピューターがどのように動作するかを知る必要はありません。 しかし、無駄なものは何も与えられておらず、多くの楽しいものが高級言語の背後に隠されています。 場合によっては、「下」で起こっていることを知らないと悲しい結果につながる可能性があります。 そして、並行性とクロスプラットフォームに関しては、水中に熊手がいるドラゴンがいます。
このレポートでは、Valeryはメモリモデルとは何か、.NETの内容、仕様が保証するもの、プラットフォームが提供するもの、快適ゾーンを離れるときに期待できる問題:ロックフリーへの移行、他のアーキテクチャでの実行(たとえば、 ARM)。 また、いくつかの問題は単純な静的分析で検出できることも示されます(レポートは静的分析に関するものではないため、詳細は別です)。 とりわけ、.NETにもバグがあることが示されます。
決闘:.NET CoreとJava
Vitaliy Jezepchuk、Fast Reports
パフォーマンスセクションでも、快適で軽いレポートがあります。 このレポートでは、VitaliyはLinuxおよびWindowsオペレーティングシステムでの.NET CoreおよびJavaランタイムのパフォーマンスを比較します。 対象読者:高性能でリソースを大量に消費するアプリケーションの開発者...まあ、または.NETがJavaを英国の旗に引き裂く方法を知りたいと思っている人。 (うまくいかない場合はどうなりますか?)
.NET Coreの高性能ネットワーキング
カレル・ジクムンド、マイクロソフト
トップパフォーマンスブログには、ネットワークパフォーマンスに関する2つのレポートがあります。
最初のリーダーは、.NET Frameworkチームおよび.NET Coreチームのソフトウェアエンジニアリングマネージャーであることが知られている英語スピーカーKarel Zikmundが率いており、ネットワーキング、暗号、コレクション、プロセスなどのCoreFXマネージャーです。
Karelが.NET Coreネットワークスタックのアーキテクチャと特定の実装、特にパフォーマンスと移植性について語っています。 次のトピックについて説明します。
- ネットワークサブシステムのアーキテクチャと実装の背後にある主なアイデアと目標
- 進捗状況、現在の開発状況
- 最大のパフォーマンスを達成する方法
- 現在のパフォーマンス改善作業+さまざまなテクノロジーとオペレーティングシステムの比較
アプリケーション要求の調整のアプローチ
Maarten Balliauw、JetBrains
ネットワークのランダム性に関する2番目のレポート。 おそらく、以下に説明する「クラウド」に起因するはずです。
Maartenは、ユーザーが非常に奇妙な国であることに長い間気付いていました。 少なくとも彼のプロジェクトMyGet.orgで、野生の出来事が起こっています。 運がよければ、ユーザーは実際にサービスを使用しますが、ほとんどの場合、あらゆる方法で信頼を悪用します。 彼らは奇妙で異常な方法でそれを使用し、そこから負荷が増大したり、週末の直後にリクエストをあふれさせたりします。 これはすべてWebアプリケーションにとって本当の危険であり、1人のユーザーの作業を妨害したり、サービス全体を投入したりする可能性があります。 そのため、理想的には、入り口でユーザーを待機し、単位時間あたりのリクエスト数、トラフィック量などを制御する何らかのスマートフィルタリングシステムが必要です。
この講演では、Maartenがクエリリミッターのシンプルかつ複雑な世界について語っています。 アプリケーション、サーバー、nginxリバースプロキシ、AzureやCloudFlareなどの外部サービスなど、厳密に何をどこで制限するかを決定する必要があります。 結果として、両方のオオカミに餌が与えられ、羊は安全です-そしてサービスはうまく機能し、ユーザーは満足しています。
Linuxでの.NET Coreアプリのデバッグとプロファイリング
Sasha Goldshtein、Sela Group
筋金入りの「低レベル」セクションには、2つのデバッグレポートがあります。 そして、どちらもクロスプラットフォームアプリケーションに関するものです。
最初のレポートは、彼が話すすべての会議で常にトップの地位を保持する優れたパフォーマンスエンジニアであるSasha Goldshteinが率いています。 彼に何度かインタビューしました。 2015年の ビデオを2、3年 、 2016年のビデオ 、パフォーマンスの操作 に関するインタビュー 、パフォーマンスエンジニアの.NETツールの概要を読むことをお勧めします。
このレポートでは、サーシャは次のことについて話します。 お気に入りのASP.NETアプリケーションをLinuxまたはコンソールインターフェイスを備えたものでさえ実行できたと想像してください。 次は? ハッピーエンド? あーいや 実際、メモリリーク、奇妙なクラッシュ、パフォーマンスの問題、その他多くのトラブルに直面する必要があります。そして、これらすべてが本番環境で発生した場合はどうすればよいでしょうか? Windowsにはたくさんの興味深いツールがありますが、Linuxでは動作せず、単純な代替手段はまだありません。 このレポートでは、Linux上の.NET Coreアプリケーションのデバッグとプロファイリングがどのように見えるかについてSashaが説明します。 perf
で調査する方法、 ETW
イベントの代替としてLTTNG
使用する方法、LTTNG LTTNG
を収集して理解する方法など。 Sashaは、 コアダンプの収集、およびlldb
とSOS
を使用して.NET開発者にとって興味深い情報を取得する方法について説明します。 このレポートは、未完成のユーティリティと特別なコマンドラインマジックのジャングルを通る非常に難しい旅ですが、最終的にはハッピーエンドになります! (しかし、これは正確ではありません)。
モノアプリケーションのデバッグの微妙さ
エリザベス・ゴレノク、ゴテック
2番目のデバッグレポート、およびクロスプラットフォーム。 ただし、Sashaのレポートの後、Linuxでは単純な生活を見ることができないことはすでに明らかです:-)
このレポートは純粋に実用的です。 エリザベスの今年の実際の作業の1つは、既存のレガシープロジェクト(WCF、Web API、MVC、Webフォーム)をクロスプラットフォームにすることです。 このタスクは非常に古典的ですが、転送のプロセスには多くの問題があり、そのうちの1つはモノアプリケーションのデバッグです。
エリザベスは、モノアプリケーションのデバッグプロセスをより便利/快適にする方法を説明し、デバッグプロセスが実際にどのように行われるかを示します。 途中で、次のテクノロジーについても理解します。
デバッガー:
- ソフトデバッガー
- 低レベルの問題を解決するためのGNUデバッガー。
- LLDB;
プロファイラー:
- モノログプロファイラー;
- Valgrind;
- HeapShot;
さらに、これらのツールと、従来の.NETアプリケーションおよび.NET Coreのデバッグに使用される類似物との比較が行われます。
クラスターとクラウド
近年の最も誇大な話題の1つは、この会議のほぼ最大のブロックである反撃です。 膨大な量の新しいテクノロジー、フレームワーク、秘密のノウハウなどがここで紡がれています。 しかし、彼らのノウハウを伝えることができる専門家ははるかに少ないです-そして私たちはそれらをすべて集めました!
バックトゥザフューチャー:Orleansによる効果的なクラウドサービスの構築
セルゲイ・ビコフ、マイクロソフト
この講演は、Microsoft Researchが開発したフレームワークであるMicrosoft Orleansについてです。
オルレアンの開発マネージャーがそれについて教えてくれます。 Sergey Bykovは、Microsoft ResearchでOrleansプロジェクトを開始し、Xbox部門のオープンソースでの開発を主導し続けています。
Orleansは、システムを構築するための根本的に新しいアプローチを提供します。これにより、開発者は、シンプルで直感的なプログラミングモデルを通じて、ステートフルアーキテクチャやその他の多くの重要な利点を活用できます。 Orleansは、大ヒットゲームHalo、Gears of War、Age of Empires、Skype、Azure、その他のMicrosoftシステム、IoT、財務分析、その他の多くの分野で使用されています。 JVM、Go、およびErlang用に作成されたOrleansクローンは、Orleansの成功のさらなる証拠です。
私はマイクロサービスのアーキテクチャを持っていますが、知りませんでした
Dino Esposito、JetBrains
既にご存知のように、マイクロサービスは、テクノロジー、パラダイム、さらにはデータに関しても互いに独立した機能の垂直層です。 他の分離されたモジュールと同様に、マイクロサービスは、リグレッションのリスクなしで簡単に交換または書き換えでき、水平方向にスケールアウトすることもできます。 マイクロサービスは、分散アーキテクチャの疎結合された部分になる可能性がありますが、個別に単独で使用できます。 このようなアーキテクチャには多くの利点があり、多くの欠点はありません。 さらに重要なことは、それが話すのが慣習的であるよりもはるかに頻繁に起こることです。 マイクロサービスは、適切に設計された包括的なシステムではないものに対する特別な名前です。
このレポートでは、Dinoはマイクロサービスアーキテクチャの開発における苦痛な経験を共有します。その間、彼の会社は多くの段階でインフラストラクチャを構築し、手元に非常に限られたリソースを持ち、レンガで結果を収集し、新しい暗号を追加するときに古いものが落ちないようにします。
Dinoは有名なトレーナー、コンサルタント、エバンジェリストであり、急成長するIT企業のCTOです。 彼はMicrosoft Pressのために多くの有名な本を書いています。 この報告書は、ディノが私たち自身がひねったこのすべての混乱を適切に克服する方法を伝えるという輝かしい伝統を続けています。
Dinoには別のレポートがあることを思い出してください-最後の基調講演は、間違いなくそれに行く価値があります。
.NETベースのAzure Functionsを使用したサーバーレスコンピューティング
アレックス・ティッセン、Xpirit
すでにクラウドとマイクロサービスについて話している場合、Microsoft製品の世界で最初の関連はAzureです。
Azure Functionsを使用してサーバーレスクラウドサービスを作成できます。実際、これは分散コンピューティングとホスティングの進化における新しい段階です。 このテクノロジーの使用の詳細を説明するために、最新の分散アプリケーション開発のコンサルタントであり、MVPの10倍の所有者であり、もちろんAzure FunctionsのエキスパートであるAlex Thissenが来ます。
この講演では、AlexがAzure FunctionsとC#を使用して開発する方法と、それをすべてAzureでビルド、テスト、デプロイする方法を後ほど説明します。 .NETプログラミングの詳細、アーキテクチャの詳細、内部実装について説明します。 さらに、Alexは、これらすべてをローカルマシンで開始およびホストする方法を示します。そのため、講演の直後に、Azure Functionsを使用してクールなアプリケーションを独自に開発および作成できます。
.NET Coreの12要素アプリ
イアン・クーパー、ハドル
クラウドネイティブについては、おそらく既に聞いたことがあるでしょう。サーバーコードの継続的な展開と簡単なスケーリングです。 Dockerとマイクロサービスについて聞いたことがあります。 しかし、タイトルに記載されている12要素アプリケーションは何ですか? もともとHerokuのデプロイメントエンジニアによって開発されたこの方法論は、クラウドプラットフォーム用のコードを記述する際の「成功のレシピ」です。 このレポートでは、メソッドの本質について説明し、このメソッドのすべての要件を満たす.NET用のアプリケーションの作成方法を示します。 もちろん、ASP.NET Coreを使用した実例があります。この方法で構築されたアプリケーションの明るい面と暗い面の概要を説明します。 サーバーなしで、またはAzure Service Fabricを使用してこれを展開する方法を示します。
講演の終わりまでに、Cloud Nativeの理解が深まります。20年以上の経験を持つロンドンを拠点とするアーキテクトであり、#ldnugの創設者であり、適切なアーキテクチャ、パターン、優れたデザインプラクティスを専門とする有名なスピーカーであるIan Cooperがこれを支援します。
Apache Kafkaと.NET Coreのリアクティブマイクロサービス
デニス・イワノフ、2GIS
「クラウド」レポートの中で、輸送システムに特化した3つのストーリーのグループが際立っています。 このレポートのレビューでは、カフカを第一位にしないことは困難でした-.NETコミュニティで人気があり、愛されています。
念のため、 Apache Kafkaはメッセージフローを処理するためのオープンソースプラットフォームであることを思い出してください。 Kafkaの基礎となる分散ログの抽象化により、キューシステムとして使用できるようになりますが、同時に、ESBレベルのソリューションでは利用できない非常に有用な利点がいくつかあります。
このレポートでは、Denis Ivanovの厳格なガイダンスの下で、Apache Kafkaの基礎となる基本原則を分析し、Apache Kafkaを使用して問題を簡単かつ効果的に解決できる方法とケースを見つけます。
しかし、最も重要なことは、マイクロサービスアーキテクチャを持ち、バックエンドが.NET CoreとScalaに実装されているシステムでのApache Kafkaの実際の使用を検討することです。 すばらしいReactive Extensionsライブラリについて説明し、リアクティブアプローチを使用すると、コードをシンプルで信頼性が高く、生産性を維持できることを示します。
このレポートは、マイクロサービスアプリケーションを作成するとき、そしてそのような一連のテクノロジーを使用するときでも、常に非常に重要な機能とニュアンスを忘れませんでした。 大規模プロジェクトで得られた実際の経験について説明します。 Denisは販売システムと広告サービスの2GISで働き、WindowsとmacOSのC#でコードを記述し、Linuxにコンパイルしてアプリケーションを展開します。したがって、彼は自分が何について話しているかを知っています。 レポートのリスナーである私たちにとって、これにより、同様の問題を解決する必要がある場合は、すぐに自分自身を方向付けることができます。
NServiceBusまたはMassTransit? .NET ServiceBusフレームワークの比較
ローランド・ガイト、RMG Holding BV
メッセージングを使用してマイクロサービスを実装するアーキテクチャのテーマを継続するには、サービスバスについて覚えておく必要があります。 いくつかのオプションがありますが、どのように選択するのですか? .NET用のMassTransitとNServiceBusがあり、どちらも素晴らしい動作をします。 しかし、外部の類似点にもかかわらず、それらには大きな違いがあります。
この講演では、RonaldがMassTransitとNServiceBusの主な機能とAPIについて説明し、類似点と相違点に注目します。 このコンペの最後に、あなたの申請に最も適した勝者を選択することができます。 (今すぐ賭けることができます!)
単なる人間のためのAkka Streams
Vagif Abilov、マイル
著者の住んでいる場所に天気データを追加して、数行のコードでTwitterからの連続したメッセージのストリームを印刷するにはどうすればよいですか?また、気象プロバイダーへのリクエストの速度を制限して、ブラックリストに登録されないようにするにはどうすればよいですか?これはすべて、レポートの最後の部分のデモで見ることができます。
その前に、Akka Streamsテクノロジーについて学びます。これにより、個々のアクターやリアクティブストリームインターフェイスを手動で実装する必要なく、LINQ式を使用するプログラマーと同じくらい簡単にリアルタイムデータストリームを操作できます。
— - 30- . Github — @object . F# C#. , - Simple.OData.Client .
,
Runtime code generation techniques in real life scenarios
Raffaele Rialdi, Vevy Europe
— , . Expression Trees - () . Expression Trees .NET . , — API Roslyn/CodeAnalisys, , , , .
, , . , — , ? , .
— , , MVP Developer Security 2003 , enterprise-, C# C++. , , , .NET, .
Mono + .NET Core = ❤
, Microsoft
, , - … , , , .
.NET Core . Mono ? , , Mono .NET. , .NET Core Mono , , Embeddinator .
— Xamarin (Microsoft) Mono BCL. Mono .NET Core. , — . - , .
TDD
, Zerocracy
— «» -. , ( — «», — «», — «»), «» . .
, DotNext, , , , . — « Elegant Objects », CEO Zerocracy Java open source ( Rultor , Takes , JCabi ).
(aka TDD) 2002. 2014 ( Ruby on Rails) , TDD . ( SOLID-) , TDD . - TDD , « , TDD ». , — , , , . . , , .
Life, liberty and the pursuit of APIness: the secret to happy code
Dylan Beattie, Spotlight
, — . Dylan Beattie — , . , — , , — API . , , , DotNext .
. , , . UI , — . — . , , .
, user experience. — , — . , — , API, - , . , - . « discoverability ». ( , , , «»).
, user experience, API, , discoverability . , , discoverability . , , hypermedia API — , - — — , ?
, EPAM
Newtonsoft.Json
— NuGet. , , — Entity Framework. , , .NET . — , -, . .
F# — . , , , , F#.
, , , , — !
F# . Machine Learning , .
. , , — .
From dependency injection to dependency rejection
Mark Seemann, blog.ploeh.dk
— . - « » .
— Dependency Injection in .NET , - , , . . , .
?
- dependency injection — , , . .
dependency injection - , ( ) . , , .
C#
, Deutsche Bank Technology Centre
. , , . , , . C# . Linq . C# , , Reactive Extensions ( ).
, C#? . , , Null Reference Exception, Linq .
セキュリティの問題
, ! , , . .
ASP.NET Core:攻撃防止メカニズム2.0
, JUG.ru Group . , — .
2.0 ASP.NET, .NET Core 2.0 . - Microsoft .
security features ASP.NET , XSS CSRF, , .
, ASP.NET-, , security review .NET-, . , , .
, Positive Technologies
.NET- (HTML, JavaScript, URL, SQL, Path .).
, , .
LibProtection, API .
Machine Learning &
Machine Learning — . , — SmartData , . DotNext !
.NET-
, Microsoft
. Microsoft , .. .
— , , Windows .
, .NET- : , , .NET- Raspberry Pi.
Self-aware applications: automatic production monitoring
Dina Goldshtein, Google
— , . , , , , . ETW CLRMD , . : GC, CPU, , . Riverbed , — , , .
, DevOps
, , . «Self-aware applications», - , .
Metrixには...
, Paladyne Systems
. — . , , . , .
, , . , Time Series . , InfluxDB Grafana .
NUKE: Build automation for C# developers
Matthias Koch, JetBrains
— JetBrains, , 5 open source , TestFx, TestLinker NUKE .
NUKE — , C# DSL. , . NUKE , C#, IDE , , . NUKE . — !
.NET Core Linux
, TYME
Linux? — TYME, , .NET Core Linux.
.NET Core Linux, . , : GitLab, TeamCity, Ansible, Octopus Deploy, Docker. . , TYME Linux.
少しの哲学
: Unchain my heart
Dino Esposito, JetBrains
2048 . ? , ?
— — . . 2008 Bitcoin. Bitcoin, — Blockhain. — — , . , - , . , . , , — , — .
, 2048 , , . , , RFID, . (, 2017 !). , . , , - — , , , — .
, , — , . (, , , 2048!). -? , . , , . ( , — , 70, ). , .