十大:DotNext 2017莫斯科最佳报道

哈Ha! 4月,我们以开放获取的形式正式发布了DotNext 2017 Moscow的最佳视频。 结果是一个包含25个报告播放列表 。 这里只是想起这个神奇的播放列表。


我现在正在观看最有趣的视频并邀请加入! 为了更轻松地集成到查看会议记录中,您可以在剪切下找到有关十份报告的简短注释,这些报告在过去DotNext的访问者中获得最高评分。 如果感觉不到25篇文章中的一些报告,请随时从此列表中进行选择。


正式地,列表越低,评级越高。 但是有一个重要的说明:前十名中的所有报告都具有非常非常高的评级,其确切位置在很大程度上取决于计数的细微差别。 例如,如果您使用软仲裁,则Andrey Akinshin关于性能测试的主题演讲将取代Sasha Goldstein关于Linux上的调试和性能分析的报告。 换句话说,看到一切:-)


剪切下将是目录,以便于导航帖子的内容。




目录




最后主题演讲:释放我的心


Dino Esposito,JetBrains



给一个人一个任务,有必要验证他不仅记住了你的话,而且还知道下一步该做什么。 您从我们的谈话中学到了什么? 第一步是什么? 简单,可行的问题。


Dino的故事不是标准报告,而是最后的主题演讲。 开幕主题演讲的目的不仅是确定会议的方向,最后的主题演讲还决定了与会者的未来生活。 您从会议中学到了什么? 这将如何影响您的生活?


在本次演讲中,Dino将我们的时间机器带入了30年的发展历程,并为这些标准问题增加了另一层次的深度。 从未来回来,我们将如何与现在联系起来?



Dino讲述了一个重要事件-40分钟-并给出了未来几年的非常合理的预测。 它包括区块链,大数据,甚至是数字灵魂。 机器人会征服我们吗? 剧透:最终每个人都会死! (是的,真正的游戏正在进行中)。


但是在这里我想争论。 我真的很喜欢最近关于Reddit的讨论:“如果您在1990年拥有自己目前的所有记忆,但是在孩子的身体中曾经是一个人,那么您如何接管世界呢?” 弗拉基米尔·古里耶夫(Vladimir Guriev)(这是以前向我们提供现代营销教科书的人最近对答案之一进行了简短的翻译,但最好阅读原文 。 我们作为工程师和致力于通过创造一些技术奇迹来改善世界的人们,很容易相信一个未来的人,他可以用棍棒和绳索将核动力飞船伸出来(与今天一样,但稍好一点)。 但是,如果您回到现实,那么普通的愚蠢的人(例如我自己)会做更多无聊而令人讨厌的事情。


我建议您看看Dino的主题演讲,然后自己决定。 也许要在有关哈布雷的评论中写这个故事? 为什么我们比Reddit更糟糕?



ASP.NET Core:攻击防范机制2.0


米哈伊尔·谢尔巴科夫(Mikhail Shcherbakov)



米哈伊尔(Mikhail)关于以下类型防御的报告的新部分:


  • 防止公开重定向;
  • 数据保护;
  • XSS保护;
  • 配置CSP;
  • 反请求伪造;
  • CORS设置;
  • 使用cookie。

该报告基于迈克尔参与永久性Microsoft Bug Bounty计划的结果。 他发现的第一个错误只是为了防御Open Redirect,此错误在一分钟之内显示在报告的开头。


为了理解该主题,报告的其他部分讨论了Data Protection API的更改,此后我们花了40分钟时间深入研究安全性和漏洞。 他了解针对XSS和CSRF的内置保护机制如何工作,开箱即用的加密功能,会话管理的安排方式等等。


我本人对此主题很感兴趣,并且经常在YouTube上观看安全报告。 作为旁观者,最可怕的事情是:两个小时的乏味,其中90%包括陈词滥调,例如“如果您很愚蠢,那么一切都非常糟糕”,最后,您发现自己的鼻子在键盘上睡觉。 Misha的报告与没有时间睡觉的事实相比是有利的:清晰概述的思想,可用来说明这些思想的真实代码示例(如果有引入任何概念的话)-带有措辞的幻灯片和指向扩展材料的链接。


当我学会编写第一个控制器时,应该立即查看此类报告,以免以后再写很多代码。


顺便说一下,我们在2月发表了米哈伊尔(Mikhail)关于哈布雷(Habré)的报告的笔录。 如果您没有时间观看,可以随时阅读



高性能C#模式:从算法优化到低级技术


费迪里科·路易斯·科瓦留斯



关于如何残酷地对待C#的残酷故事,他变得与自己不一样-但开始工作得很快且很好。


公平地讲,关于哈布雷啤酒性能的每隔第二个话题,或关于一罐啤酒的第一次讨论,都声称这一点。


毕竟,我们经常会在Habr上写一些评论,并且很长一段时间以来,对于俄罗斯开发人员来说,他们已经理解了“硬核”概念的实质。 铁杆和表演是双胞胎兄弟。 我们所说的是性能-我们是指核心,我们所说的是核心-我们指的是性能。


费德里科(Federico)建立了自己的规模:



这是一份性能报告,包含您所喜欢的一切。 而且很愤世嫉俗和易于理解。 与发言人争辩并不是一件容易的事,因为他是RavenDB的开发人员之一,而且她的速度差不多。 关于您无法使用try-catch和LINQ的事实,将会有一些令人不愉快的事情,这将涉及内联,有关帕累托定律(已变成清单)的任何内容-欺骗系统并实现显着加速的任何事情。


所有这些使我想起了这样一个视频:



操作员 :请稍等,让我脱下身高。 好吧,nafig! 您正在跳上这个屋顶。
示踪剂 :准备好了吗?
接线员 :是的。
示踪剂无声地逃跑,跳跃,无声地刺穿建筑物的屋顶并用斧头进入深处


在我看来,现在需要使用这种作弊来加速代码,这就像“信仰的飞跃”。 但是,如果您有一天必须跳楼,那么最好不要看这份报告(如果您懒得看书,请阅读我们的翻译 )。



NUKE:为C#开发人员构建自动化


马提亚斯·科赫(Jetsrains)



NUKE是Matthias正在进行的项目之一。 这是一个这样的构建自动化系统,您可以在其中描述C#DSL中的所有内容。


尽管这里的C#允许您以良好的自动完成功能在IDE中用熟悉的基础结构描述程序集,但不必担心单击Jenkins中的按钮,或例如在MSBuild中以行的形式填充cram条件。 该报告几乎有五分之一专门讨论了詹金斯和MSB的适用性。


这段视频已经出现在公共领域了,真是太酷了。 事实是,我对詹金斯(Jenkins)的厌恶已有很长的历史,每个新人都需要重新解释同样的理由,以得出结论和结论。 现在,只需提供此视频的链接即可。


至于报告的主要部分,这是有关Nuke是什么以及如何使用它的大量实用材料。 现在他们在github上有 700多个commit和超过12个贡献者,因此可能已经可以使用了。 技术创造者的报告是帮助开发的最佳方法。



NET开发人员的人工智能和神经网络


微软的德米特里·索什尼科夫(Dmitry Soshnikov)



一份非常酷的报告,为那些还没有但确实想要的人奠定了为C#神经网络编程的基础。


我遇到需要快速滑动图片识别的情况。 我上了有关神经网络的热门课程,发现它们没有响应我的要求,而是参加了普通教育。 结果,朋友们写下了识别器:-)而德米特里(Dmitry)的这份报告只是灵魂的慰藉,因为它回答了一个普通人的所有紧急要求,在此之后,您可以清楚地阅读和理解。


在一开始,仅介绍了Microsoft的工作以及他们拥有的神经网络技术。 德米特里(Dmitry)明确表示,他已将Microsoft营销幻灯片的数量减至最少,尽管在这里我不理解这顶“营销”帽子-无论如何我们都会使用这些技术,我们会寻找它们。 好像有一些选择。


此外,它还简要说明了数据讽刺者如何在他们的Jupyter Notebook中生活,您无法安装它,但可以将其存储在云中。 有什么特点,德米特里(Dmitry)的Jupyter Notebook在实时编码时就关闭了-在我看来,不可能更好地说明为什么需要C#。


该报告的重要部分是有关您自己编写所有这些内容是否困难的故事。 根据图片中数字的识别显示示例。



首先,周期上的笔会写出k个最近的邻居 ,这是准确的(94%),但是速度非常慢-直到最后,还没有一个k-NN演示对该报告起作用。 然后在Accord.NET中对相同的k-NN进行编码,它的工作速度要快一点,但实际上并不能,因为算法是相同的。 但是Accord.NET的功能是它已经是一个看起来不错的代码,您可以快速将分类器替换为其他分类器。 德米特里在那里取代了支持向量机 ,一切都急剧加速(几秒钟内开始扫描5千张图片,准确性几乎没有下降-92%)。


但是您仍然可以做得更好,并拖累神经网络。 在Accord.NET演示中,SVM被神经网络取代,几乎没有代码更改。 但是您不需要这样做,因为还有其他更凉快的框架。 德米特里(Dmitry)对TensorFlow说了几句话,并在其余的讨论中谈到了Microsoft认知工具包(以前称为CNTK)。 在回顾了许多演示之后,我们看到结果是具有复杂但仍然完全理解代码的超高精度网络(98%)。


看完这份报告后,我现在不能入睡。 所有这些东西都是用易于理解的代码编写的,似乎它们具有学生可以理解的明确的数学基础,但结果却产生了奇迹。 区分猫的照片和狗的照片是一个奇迹,您不会为此提出一种算法,而神经网络则以某种方式在您的眼前做出了贡献。


如果我的大脑只是一个近似功能的设备怎么办? 而所有生命只是矩阵的再乘以一个小的非线性部分,可以用相对较小的代码段来编写……现在该如何生活呢?


(可在此处获得报告的解密)



仅有凡人的Akka流


Vagif Abilov,迈尔斯



这是有关河流世界中生活的概念报告。 有这样的例子:



它们显示了一个逐渐复杂的相当具体的代码,详细内容进行了讨论。 但是,最主要的是问题的总体思路。


对于那些不熟悉该主题的人来说,似乎对于理解Akka Streams来说,需要精通Akka并精通反应性。 Vagif声称事实并非如此,这减轻了灵魂负担,降低了进入主题的门槛。


就我个人而言,流的整个主题似乎非常令人毛骨悚然(而且,如果不尝试,似乎仍然无法信任报告),恰恰是因为它直接与通常的线程锁模型之外的功能转换和数据管理这一主题相关。 是的,从旧式框架中管理线程和构建结构是一件坏事,但多年以来都是可以理解和破解的。


Wagif解释了向演员的过渡, 揭示了演员没有组成 (或者更确切地说,是人类社会组成的意义上的组成),并从此转向反应性流,以更强烈地提高抽象和表达的水平。


Reactive Streams堆栈上有一组接口(发布者,订阅者,订阅,处理器),但是没人期望我们手动解决这些接口。 有一些图书馆开发人员会为我们做到这一点-例如,这是在Akka Streams中完成的。


对我来说,这是一个发现,即动态推入/拉入反应式流是开箱即用的,它一点也没有伤害-更准确地说,当您尝试自己编写反压力时,它也不会受到伤害。


此外,作者并没有遇到某种流狂热主义,也没有忘记其他选择(RX,TPL DataFlow,Orleans Streams),并讨论了其优缺点。 与狂热主义者的典型故事相比,缺乏狂热主义是一个巨大的好处,而典型的故事是一个已经迷恋于一个特定图书馆的激进主义爱好者。


总的来说,我是这样理解这个想法的:当我们使用微服务和其他多组件体系结构时,您看不到树后的森林,而流是一种提升层次并了解一般过程的方法。 要走上这样的轨道,您需要乘坐Akka Streams,一切都将变成巧克力。


是否想激励自己切换到视频流? 必须注意。



Metrix有您...


Anatoly Kulakov,Paladyne系统



许多开发人员不喜欢考虑用户对其应用程序所做的那些可怕的事情。 通常,当被问及“如何看待指标”时,同事们开始谈论“吃日志”,“看MySQL”等等激烈的游戏,说服他们思考这个问题并不容易。


《 Anatoly》的这份报告正是这样的启迪时刻。 首先以详细的动机说明来解释监视和日志记录之间的区别。 远离我们所谓的情人,蝙蝠沉浸在必须完成的具体示例中。


您将必须使用著名的InfluxDB数据库进行时间序列(描述理论上的最小值-为什么需要它,为什么有优点,最优化的本质是什么)(有关其细节,功能和缺点的讨论)。 依此类推。 一堆不错的内容,包括在本地Grafana上进行实验的现场演示和一个通过BenchmarkDotNet收集性能数据的存档器应用程序。


如果您不关心读写时间,或者不依赖吞吐量,或者您不知道什么是降采样,或者您不需要专门的统计信息和汇总功能,或者一次要删除所有数据,或者您不担心数据量不足,数据,并且您肯定不会再有高负载-您可以继续将指标数据保存在RDBMS中,获取日志并从此过上幸福的生活。 其他所有人都需要使用现代工具并观看此报告(或阅读成绩单)。



生活,自由和对API的追求:幸福代码的秘诀


迪伦·比蒂(Dylan Beattie),聚光灯



迪伦•贝蒂(Dylan Beattie)是一个有许多工作成就和有趣的项目的人,完整的清单更容易在我们的网站上阅读。 在该报告的上下文中,有趣的是Dylan是一位系统架构师,他目前正在致力于构建复杂的现代分布式应用程序的问题,并因此致力于为其开发正确的API。 而且,当然,参加DotNext聚会的每个人都认识他。


无论我们是否意识到,每次创建新程序时,我们都会创建用户体验。 人们将以最终用户或开发团队的成员身份与我们的代码进行交互。 也许他们是使用您的API的移动应用程序的开发人员,或者是需要夜间修复已出现问题的人员。 从外部看,这似乎是完全不同的情况,但实际上它们有一些共同点。 迪伦称其为可发现性


从这里传来的这份非常具有哲学意义的报告,同时又是纯实际的报告。 首先,迪伦(Dylan)详细介绍了学习心理学和各种学习模型。 您认为最佳的学习曲线是什么?



接下来是关于可发现性如何向系统的最终用户表现出来的故事,然后-最重要的是-它如何与代码,数据,API以及构成程序员生命的其他事物相关联。 在应用程序的所有级别中逐步进行操作。


不相信自动补全,超媒体或流畅的API会使生活变得更好吗? 那么漂亮的仪表板,可理解的指标或日志记录级别(不是通过威胁级别而是通过含义来命名)呢? 也许您了解所有这些内容,但不知道如何正确地告诉您的同事,以便他们最终开始使用所有这些内容? 然后,您急需观看此报告(顺便说一句,在春天,我们已经在哈布雷(Habré)上发表了译文 )。



主题演讲: 让我们谈谈性能测试


JetBrains的Andrey Akinshin



Andrei的任务很艰巨:谈论性能,但同时要以开幕主题演讲的形式。 您可能知道,主题演讲有几个目标,主要目的是传达会议将要发生的精神和实质。 因此,每个人都应或多或少地理解这种报告。 另一方面,性能是硬核的中间名称,也就是说,主题是复杂而具体的。


难怪安德烈(Andrei)不断得到他最高的评价,他退出了。 显然,大多数公司目前都没有以任何方式测试性能,或者他们正在对产品中的现场人员进行测试。 没有协调的理论来解决此类问题,因此,无需告知齿轮断开设备。 您需要对该主题有一些基本的了解。


该报告专门针对13个性能说明。 我不会告诉所有十三个人,为什么会产生剧透。 例如,第一个注释是关于性能数据源的。 或者,例如,如果您有性能异常的列表,则消除Andrey谈到的小问题将简化对性能问题的分析(您尚未编写但很快就会编写的问题)。 在注释6中讨论的这些选项之一是使用操作系统进行群集的示例。



性能测试很有趣,但是很困难。 而且,测试性能是可能且必要的。 恕我直言,该报告的独特之处在于它揭示了人们想做的一堆事情,但要么不做,要么说他们做错了。 因此,请参阅Andrey的报告,获得性能纯净和性能文化,然后您的产品将变得超快,反应灵敏,光滑而柔滑。



在Linux上调试和分析.NET Core应用


Sela集团Sasha Goldshtein



Sasha是一位出色的性能工程师,因此获得最高评级也就不足为奇了。 赢得胜利的另一个原因:现在只是为了大肆宣传,在报告标题中添加“ .NET Core”已经非常流行。 关于.NET Core在其中发挥重要作用的故事还不多,本报告就是其中之一。 : , , — .


想象一下,您设法在Linux或什至带有控制台界面的东西上运行自己喜欢的ASP.NET应用程序。 接下来是什么? 大结局? 哦不 实际上,您将不得不面对内存泄漏,奇怪的崩溃,性能问题和许多其他问题-当所有这些在生产中发生时该怎么办? 在Windows上,我们有很多有趣的工具,但它们在Linux上无法使用,目前还没有简单的替代方法。 在本次演讲中,Sasha讨论了Linux上的.NET Core应用程序的调试和概要分析。 如何使用perf进行调查,如何使用LTTNG替代ETW事件,如何收集和理解LTTNG LTTNG等等。 Sasha将讨论如何收集核心转储以及如何使用lldbSOS获得有关.NET开发人员感兴趣的信息。


简而言之,每个决定观看视频的人都将在未完成的实用程序和特殊的命令行魔术师的丛林中进行艰难的侦探之旅。 以一个幸福的结局(但这是不确定的)。


如果您对列表中的报告感兴趣,我们会引起您的注意:我们已经宣布了 下一个DotNext ,那么您的兴趣同样如此。 同时,随着时间的推移,机票价格会变得越来越昂贵,因此在查看上一份报告的所有报告之前,您不应推迟购买新DotNext的机票

Source: https://habr.com/ru/post/zh-CN417265/


All Articles