Olá Habr! Em abril, publicamos oficialmente os melhores vídeos do DotNext 2017 Moscow em acesso aberto. O resultado foi uma lista de reprodução de 25 relatórios . Apenas um lembrete aqui desta lista de reprodução mágica.
Agora estou assistindo os vídeos mais interessantes e convido a participar! Para facilitar a integração na visualização das gravações da conferência, você encontrará pequenas notas sobre dez relatórios que receberam as classificações mais altas dos visitantes do DotNext anterior. Se, dentre 25 peças, você conseguir ver apenas alguns relatórios, fique à vontade para escolher nessa lista.
Formalmente, quanto menor a lista, maior a classificação. Mas há um esclarecimento importante: todos os relatórios dos dez primeiros têm uma classificação muito, muito alta, e sua posição exata depende muito das nuances da contagem. Por exemplo, se você usar quorum flexível, a palestra de Andrey Akinshin sobre testes de desempenho ultrapassará o relatório de Sasha Goldstein sobre depuração e criação de perfil no Linux. Em outras palavras, veja tudo :-)
Abaixo do corte, haverá um sumário para uma navegação conveniente sobre o conteúdo da postagem.

Sumário
Dino Esposito, JetBrains
Dando uma tarefa a uma pessoa, é necessário verificar se ela não apenas se lembrou de suas palavras, mas também entendeu o que fazer em seguida. O que você aprendeu da nossa conversa? Quais serão os primeiros passos? Perguntas simples e acionáveis.
Esta história de Dino não é um relatório padrão, mas a nota final. Assim como o objetivo da palestra de abertura é definir a direção da conferência, a palestra final define a vida futura do participante. O que você aprendeu da conferência? Como isso afetará sua vida?
Nesta palestra, Dino nos leva 30 anos à frente com uma máquina do tempo e adiciona outro nível de profundidade a essas perguntas padrão. Voltando do futuro, como nos relacionaremos com o presente?

Dino conta uma grande - por quarenta minutos - e uma previsão bastante razoável para os próximos anos. Inclui blockchain, bigdata e até uma alma digital. Os robôs vão nos conquistar? Spoiler: no final todo mundo vai morrer! (Sim, o jogo real está acontecendo lá).
Mas aqui eu gostaria de discutir. Eu realmente gosto da discussão recente no Reddit: "Como você domina o mundo se você se encontra em 1990 com todas as suas memórias atuais, mas no corpo da criança que você era?" Uma tradução curta de uma das respostas foi feita recentemente por Vladimir Guriev (essa é a pessoa que anteriormente nos apresentou um livro de marketing moderno ), mas é melhor ler o original . Nós, como engenheiros e pessoas dedicadas a melhorar o mundo criando alguns milagres técnicos, acreditamos facilmente em um homem do futuro que pode enfiar uma nave nuclear em paus e cordas (o mesmo de hoje, mas um pouco melhor). Mas se você voltar à realidade, as pessoas estúpidas comuns (como eu, por exemplo) fazem coisas muito mais chatas e desagradáveis.
Aconselho que você analise a palestra de Dino e decida sobre esse assunto. Talvez escrever a história nos comentários sobre Habré? Por que somos piores que o Reddit?
Mikhail Shcherbakov
Uma nova parte do relatório de Mikhail sobre os seguintes tipos de defesa:
- Proteção contra redirecionamento aberto;
- Proteção de dados;
- Proteção XSS;
- Configurar CSP;
- Falsificação contra solicitação;
- Configuração do CORS;
- Uso de cookies.
O relatório foi baseado nos resultados da participação de Michael no perpétuo Microsoft Bug Bounty Program. O primeiro bug que ele encontrou foi apenas em defesa contra o Redirecionamento aberto, que é mostrado no início do relatório em apenas um minuto.
Para entender o tópico, outras partes do relatório falam sobre alterações na API de proteção de dados, após as quais mergulhamos no trabalho com segurança e buracos por quarenta minutos. Ele entende como funcionam os mecanismos de proteção internos contra XSS e CSRF, quais recursos de criptografia estão disponíveis imediatamente, como o gerenciamento de sessões é organizado e assim por diante.
Eu próprio estou interessado neste tópico e frequentemente assisto relatórios de segurança no YouTube. A coisa mais terrível que espera por você como espectador: duas horas de tédio, 90% consistindo de banalidades como "se você é estúpido, tudo está muito ruim", no final das quais você se encontra com o nariz adormecido no teclado. O relatório de Misha se compara favoravelmente ao fato de que não há tempo para dormir: pensamentos claramente delineados, exemplos de códigos reais para ilustrá-los, se algum conceito for introduzido - slides com palavras e links para materiais estendidos.
Esses relatórios devem ser observados imediatamente, pois aprendi a escrever meu primeiro controlador, para não reescrever muito código em vão posteriormente.
A propósito, em fevereiro publicamos uma transcrição do relatório de Mikhail sobre Habré. Se você não tiver tempo para assistir, sempre poderá ler .
Federico Lois, Corvalius
A brutal história de como tratar o C # tão cruelmente que ele se torna diferente de si mesmo - mas começa a trabalhar muito rapidamente e bem.
Para ser justo, isso é afirmado por aproximadamente cada segundo tópico sobre desempenho em Habré ou toda primeira discussão sobre uma lata de cerveja.
Afinal, muitas vezes escrevemos críticas de algo sobre Habr e, por um longo tempo, já entendemos a essência do conceito de "hardcore" para um desenvolvedor russo. Hardcore e performance são irmãos gêmeos. Estamos falando de desempenho - queremos dizer hardcore, estamos falando de hardcore - queremos dizer desempenho.
Federico desenvolveu sua própria escala:

Este é um relatório de desempenho, tudo o que você ama. E é muito cínico e inteligível. Não é muito fácil argumentar com o orador, já que ele é um dos desenvolvedores do RavenDB e ela é apenas sobre velocidade. Haverá coisas desagradáveis sobre o fato de que você não pode usar o try-catch e o LINQ, será sobre inlining, sobre a lei de Pareto (transformada em uma lista de verificação) - qualquer coisa para enganar o sistema e obter uma aceleração significativa.
Tudo isso me lembra um vídeo assim:
Operadora : Espere um segundo, deixe-me tirar a altura. Bem nafig! Você está pulando neste telhado.
Rastreador : Pronto?
Operadora : Sim.
Marcador : foge silenciosamente, salta, perfura silenciosamente o telhado do edifício e entra nas profundezas com um machado
A necessidade de usar esse tipo de trapaça para acelerar o código agora me parece esse "salto de fé". Mas se um dia você precisar pular, é melhor ver este relatório do que não ver (e se você estiver com preguiça de assistir, leia nossa tradução ).
Matthias Koch, JetBrains
O NUKE é um dos projetos nos quais Matthias está trabalhando. Esse é um sistema de automação de construção, no qual você pode descrever tudo em DSL C #.
C # aqui, apesar de permitir descrever a montagem na infraestrutura familiar, no IDE, com conclusão automática decente e não sofrer cliques nos botões no Jenkins ou, por exemplo, condições de empilhamento na forma de linhas no MSBuild. Quase um quinto do relatório é dedicado a uma discussão sobre a aplicabilidade do Jenkins e do MSB.
É muito legal que este vídeo tenha sido publicado em domínio público. O fato é que tenho uma longa história pessoal de aversão a Jenkins, e cada nova pessoa precisa explicar novamente a mesma balalaica sobre os motivos e as conclusões. Agora basta dar um link para este vídeo.
Quanto à parte principal do relatório, este é um monte de material prático sobre o que é a Nuke e como viver com ela. Agora eles têm mais de setecentos commits e mais de uma dúzia de colaboradores no github , então provavelmente isso já pode ser usado. Um relatório do criador da tecnologia é a melhor maneira de ajudar no desenvolvimento.
Dmitry Soshnikov, Microsoft
Um relatório muito interessante que estabelece as bases para a programação de redes neurais C # para aqueles que ainda não o fizeram, mas realmente querem.
Tive situações em que precisava passar rapidamente o reconhecimento de imagem. Participei de cursos populares sobre redes neurais e descobri que eles não responderam ao meu pedido, mas estavam envolvidos no ensino geral. Como resultado, os amigos escreveram o reconhecedor :-) E o relatório de Dmitry é apenas um bálsamo para a alma, porque responde a todos os pedidos urgentes de uma pessoa comum, após o que fica claro o que ler e o que entender.
No começo, há uma pequena introdução sobre o que a Microsoft faz e quais tecnologias de rede neural elas possuem. Dmitry disse claramente que reduziu ao mínimo o número de slides de marketing da Microsoft, embora seja aqui que eu não entenda esse chapéu de "marketing" - usaremos essas tecnologias de qualquer maneira, procuraremos por elas. Como se houvesse alguma escolha.
Além disso, é indicado brevemente como os satanistas de dados vivem em seu Jupyter Notebook e que você não pode instalá-lo, mas obtê-lo na nuvem. O que é característico, o Jupyter Notebook de Dmitry foi desativado no momento da codificação ao vivo - na minha opinião, é impossível apresentar uma melhor demonstração de por que o C # é necessário.
Uma parte significativa do relatório é uma história sobre se é difícil escrever tudo isso sozinho. Os exemplos são mostrados com base no reconhecimento de números nas imagens.

Primeiro, as canetas nos ciclos escrevem k-vizinhos mais próximos , o que é preciso (94%), mas extremamente lento - nem uma única demonstração do k-NN trabalhou no relatório até o final. Em seguida, o mesmo k-NN é codificado no Accord.NET e funciona um pouco mais rápido, mas na verdade não, porque o algoritmo é o mesmo. Mas o recurso do Accord.NET é que ele já é um código de aparência decente e você pode substituir rapidamente o classificador por outro. Dmitry substituiu uma máquina de vetores de suporte lá e tudo acelerou acentuadamente (um conjunto de 5 mil fotos começou a ser digitalizado em segundos, a precisão quase não caiu - 92%).
Mas você ainda pode fazer melhor e arrastar redes neurais. Na demonstração do Accord.NET, o SVM foi substituído por uma rede neural, quase sem alteração de código. Mas você não precisa fazer isso, porque existem outras estruturas mais frias e mais rápidas. Dmitry disse algumas palavras sobre o TensorFlow e falou sobre o Microsoft Cognitive Toolkit (anteriormente conhecido como CNTK) pelo restante da conversa. Depois de revisar muitas demos, vimos que o resultado são redes ultra-precisas (98%) com código complexo, mas mesmo assim totalmente compreendido.
Depois de assistir a este relatório, agora não consigo adormecer. Todas essas coisas estão escritas em código compreensível, e parece que eles têm fundamentos matemáticos claros que são compreensíveis para o aluno, mas, como resultado, eles fazem maravilhas. É um milagre distinguir a foto de um gato da foto de um cachorro, você não cria um algoritmo para isso, e a rede neural de alguma forma faz isso diante dos seus olhos.
E se meu cérebro for apenas um aparelho que se aproxima de uma função? E toda a vida é apenas mais uma multiplicação de matrizes com uma pequena parte não linear, que pode ser escrita em um pedaço de código relativamente pequeno ... Como viver com isso agora?
(a descriptografia do relatório está disponível aqui )
Miles Vagif Abilov
Este é um relatório conceitual sobre a vida no mundo dos fluxos. Existem exemplos desse tipo:

Eles mostram um código bastante específico gradualmente mais complicado, os detalhes são discutidos. Mas, ainda assim, o principal é uma ideia geral do problema.
Para pessoas que não estão imersas no tópico, pode parecer que, para entender o Akka Streams, é preciso ser versado em Akka e versado em reativismo. Vagif afirma que não é bem assim, o que remove o fardo da alma e diminui o limiar para entrar no tópico.
Para mim, pessoalmente, todo o tópico de fluxos parecia (e ainda parece impossível confiar em relatórios sem tentar) bastante assustador, precisamente porque está diretamente relacionado ao tópico de transformações funcionais e gerenciamento de dados fora do modelo usual de bloqueios de encadeamento. Sim, gerenciar threads e construir estruturas a partir de estruturas da velha escola para eles é uma coisa vil, mas compreensível e hackeada por anos.
Wagif explica para a transição para os atores, revela que os atores não compõem (ou melhor, compõem no sentido em que a sociedade humana compõe) e passa disso para os Reativos reativos, como um meio de aumentar ainda mais o nível de abstração e expressão.
Há algum conjunto de interfaces na pilha de Fluxos reativos (Publicador, Assinante, Assinatura, Processador), mas ninguém espera que resolvamos manualmente essas interfaces. Existem desenvolvedores de bibliotecas que farão isso por nós - por exemplo, isso é feito no Akka Streams.
Foi uma descoberta para mim que o push / pull dinâmico do Reactive Streams está fora da caixa e não dói nada - mais precisamente, não dói quando você tenta codificar a contrapressão.
Além disso, o autor não entra em algum tipo de fanatismo por stream e não esquece as alternativas (RX, TPL DataFlow, Orleans Streams), fala sobre os prós e contras. A falta de fanatismo é um bônus enorme em comparação com uma história típica de um amante de reativismo que se apegou a uma biblioteca em particular.
Em geral, entendi a ideia da seguinte maneira: quando usamos microsserviços e outras arquiteturas multicomponentes - não é possível ver florestas atrás de árvores, e os fluxos são uma maneira de subir de nível e ter uma ideia do processo geral. Para seguir esses trilhos, você precisa tomar o Akka Streams, e tudo estará em chocolate.
Deseja motivar-se para mudar para fluxos? Deve assistir.
Anatoly Kulakov, Paladyne Systems
Muitos desenvolvedores não gostam de pensar nessas coisas terríveis que os usuários fazem com seus aplicativos. Freqüentemente, quando perguntados sobre "como analisar as métricas", os colegas começaram a falar sobre jogos ferozes sobre "registros de consumo", "veja o MySQL" e assim por diante, e convencê-los a pensar sobre o problema não era fácil.
Este relatório de Anatoly é apenas um momento de iluminação. Começa explicando as diferenças entre monitoramento e registro, com uma declaração detalhada de motivação. Mais longe do nosso suposto amante, o morcego está imerso em exemplos concretos do que terá que ser feito.
Você terá que fazer a série temporal (sobre a qual o mínimo teórico é descrito - por que você precisa, quais são as vantagens, qual é a essência das otimizações) usando o conhecido banco de dados InfluxDB (sobre o qual são discutidas as especificidades, capacidades e desvantagens). E assim por diante e assim por diante. Um bom conteúdo, incluindo demonstrações ao vivo com experimentos no Grafana local e um aplicativo de arquivador cujos dados de desempenho são coletados através do BenchmarkDotNet.
Se você não se importa com o tempo de leitura e gravação, se não descansa na taxa de transferência, se não sabe o que é a redução da amostragem, se não precisa de estatísticas especializadas e funções de agregação, se deseja excluir todos os dados, uma linha de cada vez, se não descansar no tamanho do seu dados e você tem certeza de que nunca terá grandes cargas - você pode continuar a salvar dados métricos no RDBMS, obter logs e viver feliz para sempre. Todo mundo precisa usar ferramentas modernas e assistir a este relatório (ou ler a transcrição).
Dylan Beattie, Destaque
Dylan Beattie é uma pessoa com tantas realizações de trabalho e projetos interessantes que a lista completa é mais fácil de ler em nosso site . No contexto do relatório, é interessante que Dylan seja um arquiteto de sistemas que atualmente esteja trabalhando nas questões de construção de aplicativos distribuídos modernos e complexos e, consequentemente, no desenvolvimento das APIs certas para eles. E, é claro, absolutamente todo mundo que participou das festas do DotNext o conhece.
Quer percebamos ou não, toda vez que criamos novos programas, criamos uma experiência do usuário. As pessoas irão interagir com o nosso código - como usuários finais ou, talvez, como membros da equipe de desenvolvimento. Ou talvez eles sejam desenvolvedores de um aplicativo móvel usando sua API ou alguém que precise sair à noite para corrigir problemas que surgiram. Do lado de fora, isso pode parecer casos completamente diferentes, mas na verdade eles têm algo em comum. Dylan chama isso de palavra descoberta .
Daí veio esse relatório muito filosófico e, ao mesmo tempo, puramente prático. A princípio, Dylan fornece uma introdução detalhada à psicologia da aprendizagem e a vários modelos de aprendizagem. Qual você acha que é a melhor curva de aprendizado?

A seguir, vem a história de como a descoberta se manifesta para os usuários finais do sistema e, mais importante, como tudo se relaciona com código, dados, APIs e outras coisas que compõem a vida de um programador. Passo a passo, em todos os níveis do aplicativo.
Não acredita que o preenchimento automático, a hipermídia ou a API fluente tornem a vida melhor? E os belos painéis, métricas compreensíveis ou, por exemplo, níveis de log, nomeados não por nível de ameaça, mas por significado? Talvez você entenda tudo isso, mas não sabe como informar adequadamente seus colegas sobre isso para que eles finalmente comecem a usar tudo isso? Então você precisa urgentemente assistir a este relatório (a propósito, na primavera já publicamos uma tradução em Habré).
Andrey Akinshin, JetBrains
Andrei teve uma tarefa muito difícil: falar sobre desempenho, mas ao mesmo tempo no formato de uma palestra de abertura. Como você provavelmente sabe, a palestra principal tem vários objetivos, dos quais o principal é transmitir o espírito e a essência do que estará acontecendo na conferência. Segue-se que esse relatório deve ser entendido mais ou menos por todos. Por outro lado, desempenho é o nome do meio do hardcore, ou seja, o tópico é complexo e específico.
Não é de admirar que Andrei constantemente obtenha suas classificações mais altas, ele saiu. É claro que a maioria das empresas não está testando o desempenho de nenhuma maneira ou está testando pessoas vivas no produto. Não existe uma teoria harmoniosa para resolver esses problemas; portanto, não é necessário informar o equipamento de quebra de marcha. Você precisa de algum entendimento básico do tópico.
O relatório é dedicado a 13 notas de desempenho. Não vou contar aos treze, por que produzir spoilers. Por exemplo, a primeira observação é sobre fontes de dados de desempenho. Ou, por exemplo, se você tiver uma lista de anomalias de desempenho, a remoção dos pequenos problemas mencionados por Andrey simplificará a análise dos problemas de desempenho (problemas que você ainda não escreveu, mas que escreverá em breve). Uma dessas opções, discutida na Nota 6, está em cluster usando sistemas operacionais como exemplo.

O teste de desempenho é interessante, mas difícil. Além disso, é possível e necessário testar o desempenho. IMHO, o relatório é único, pois revela várias coisas que as pessoas gostariam de fazer, mas não mentem ou mentem. Portanto, consulte o relatório de Andrey, obtenha pureza e cultura de desempenho e, em seguida, seus produtos serão super rápidos, responsivos, suaves e sedosos.
Sasha Goldshtein, Sela Group
Sasha é um engenheiro de desempenho excepcional, e não é de surpreender que ele tenha chegado ao topo da classificação. Outro motivo para ganhar: agora ficou muito na moda adicionar ".NET Core" ao título do relatório apenas por uma questão de hype. Não há muitas histórias sobre algo em que o .NET Core desempenhe um papel significativo, e este relatório é um deles. : , , — .
Imagine que você conseguiu executar seu aplicativo ASP.NET favorito no Linux ou mesmo algo com uma interface de console. O que vem a seguir? Final feliz? Oh não Na verdade, você terá que enfrentar vazamentos de memória, falhas estranhas, problemas de desempenho e muitos outros problemas - e o que fazer quando tudo isso acontece na produção? No Windows, temos várias ferramentas interessantes, mas elas não funcionam no Linux e ainda não existem alternativas simples. Nesta palestra, Sasha fala sobre a aparência da depuração e criação de perfil dos aplicativos .NET Core no Linux agora. Como investigar com perf
, como o LTTNG
usado como um substituto para eventos ETW
, como coletar e entender os LTTNG
LTTNG e muito mais. Sasha falará sobre a coleta de dumps principais e sobre como obter informações interessantes para um desenvolvedor .NET usando lldb
e SOS
.
Em resumo, todos que decidirem assistir ao vídeo farão uma difícil jornada de detetive pela selva de utilidades inacabadas e magia especial de linha de comando. Com um final feliz (mas isso não é certo).
Se os relatórios da lista lhe interessam, chamamos sua atenção: já anunciamos o próximo DotNext e você pode ser menos interessante. Ao mesmo tempo, os tickets ficam mais caros ao longo do tempo, portanto, você não deve adiar a compra de ingressos para o novo DotNext antes de revisar todos os relatórios do anterior!