🇧🇷 PyBR 2017 Talks

Rob Novelino
October 6, 2017
<p>Slides from talks given during the PythonBrasil[13] event will be posted here. This post and the slides are written in Brazilian Portuguese.</p><h3 id="prevenindo-dores-de-cabe-a-com-linters-e-checagens-autom-ticas">Prevenindo dores de cabeça com linters e checagens automáticas</h3><ul><li>Palestrante: <a href="https://twitter.com/flaviojuvenal">Flávio Juvenal</a></li><li>Link dos Slides: <a href="https://docs.google.com/presentation/d/1bWXFpdVOZAAWKxBKscknaJT_kn8ORNxV3c5XrIZDuVE/edit?usp=sharing">Prevenindo dores de cabeça com linters e checagens automáticas</a></li></ul><p>É comum usar ferramentas como flake8 em Python, mas é raro usar ferramentas para checar problemas além do estilo de código. No entanto, linters e checagens automáticas podem trazer benefícios muito maiores. Code reviews são importantes, mas se uma programadora experiente sair da organização, todo conhecimento relacionado a qualidade detido por ela irá embora também. Uma maneira de prevenir isso é fazer com que os desenvolvedores experientes guardem seu conhecimento em linters. Ao invés de ensinar boas práticas mil vezes para programadores juniors, desenvolvedores experientes devem escrever ferramentas para fazer isso para eles. Ter esse “conhecimento executável” é uma boa maneira de garantir boas práticas duradouras em organizações.</p><p>Python já possui um bom número de linters extensíveis e ferramentas de checagem que podem ser usadas para consolidar conhecimento. Nesta palestra, nós vamos discutir estas ferramentas, quais benefícios elas trazem, como estendê-las e como construir novas. Combinadas com IDEs, pre-commit hooks, e Continous Integration, linters podem validar código em tempo de escrita, commit e integração, garantindo assim a adesão a boas práticas em todas as etapas do desenvolvimento.</p><h3 id="previs-o-de-s-ries-temporais-com-pydata-e-intelig-ncia-artificial">Previsão de séries temporais com PyData e Inteligência Artificial</h3><ul><li>Palestrante: <a href="https://twitter.com/rsarai007">Rebeca Sarai</a></li><li>Link dos Slides: <a href="https://docs.google.com/presentation/d/1IJ5KtTTadKaqEKUeE8pImc8JdH0LHzOtv81eM7N8o9Y/edit?usp=sharing">Previsão de séries temporais com PyData e Inteligência Artificial</a></li></ul><p>Uma previsão correta sobre um conjunto de dados observados pode significar milhões de lucro para uma empresa, ao mesmo tempo que uma previsão errada pode levar outra empresa a falência. Nessa palestra você vai ver como utilizar alguns módulos do PyData (Pandas, numpy e outras) e algumas técnicas de Inteligência Artificial (redes neurais, computação evolucionária, inteligência de enxames) para resolver problemas reais de previsão.</p><h3 id="salvando-grandes-projetos">Salvando Grandes Projetos</h3><ul><li>Palestrante: <a href="https://twitter.com/laisvarejao">Lais Varejão</a></li><li>Link dos Slides: <a href="https://docs.google.com/presentation/d/1Lm24TiWhtTYTSDXTJ01nfO6Pc1sHCAMUq5WA4qwD8_0/edit?usp=sharing">Salvando Grandes Projetos</a></li></ul><p>Desenvolvedores sabem: não existe software livre de bugs. Crises são iminentes. Como mitigar, então, seu potencial danoso? Como gerenciar, por exemplo, um bug que afeta metade dos usuários de um sistema? Nesta talk eu irei compartilhar, entre outros casos, minha experiência gerenciando crises de um sistema de assinaturas sediado em NY. Iremos ver diferentes cases, como a cultura da empresa é importante para superar situações críticas, e o passo a passo de processos de gestão de crises. Finalmente, veremos como lidar com a expectativa do cliente, desde a descoberta do bug até a recuperação dos dados afetados.</p><h3 id="a-programa-o-funcional-em-python-de-forma-simples">A Programação Funcional em Python, de forma simples</h3><ul><li>Palestrante: <a href="https://twitter.com/andersonre86">Anderson Resende</a></li><li>Link dos Slides: <a href="https://docs.google.com/presentation/d/1oitGrBfqC0qDr7VxAm2iyNwpZSImwfboVd7h8ibBnyo/edit?usp=sharing">A Programação Funcional em Python, de forma simples</a></li></ul><p>Se você já usou lambda, maps ou comprehensions em Python, você já esta usando aspectos da programação funcional. Vamos explicar de forma simples o que é programação funcional, quais são as construções funcionais existentes em Python e como podemos usá-las para melhorar nosso código e prevenir bugs. Vamos também descomplicar conceitos como Side Effects, imutabilidade, código declarativo, e expressions.</p><h3 id="python-e-tipagem-est-tica">Python e Tipagem Estática</h3><ul><li>Palestrante: <a href="https://twitter.com/chocoelho">Carlos Coêlho</a></li><li>Link dos Slides: <a href="https://docs.google.com/presentation/d/1aiDelNUPZCG24ytKnXskzeFpMfmQD3SxZhIyuk1mWn4/edit?usp=sharing">Python e Tipagem Estática</a></li></ul><p>Python é uma linguagem de tipagem forte e dinâmica, mas desde sua versão 3.5, com o módulo typing, é possível fazer uso de type hint(PEP 484) em conjunto com function annotation(PEP 3107).</p><p>Vamos discutir, ver exemplos de aplicação, (des)vantagens e onde/quando usar, ou não, tipagem gradual, quando teste unitário(mesmo cobertura de 100%) não pega casos que uma análise estática pega.</p><h3 id="-quase-tudo-que-voc-precisa-saber-sobre-tarefas-ass-ncronas">(Quase) Tudo que você precisa saber sobre tarefas assíncronas</h3><ul><li>Palestrante: <a href="https://twitter.com/xima">Filipe Ximenes</a></li><li>Link dos Slides: <a href="https://speakerdeck.com/filipeximenes/quase-tudo-que-voce-precisa-saber-sobre-tarefa-assincronas">(Quase) Tudo que você precisa saber sobre tarefas assíncronas</a></li></ul><p>Por quanto tempo é aceitável deixar o seu usuário esperando uma resposta do servidor? Para a maioria dos casos a resposta certa é: o mínimo que a conexão de internet dele permitir. Isso significa que o tempo que o seu servidor deve passar processando a requisição deve ser o mais próximo de zero possível. Nessa palestra vamos falar sobre o que são, para que servem, como funcionam e quais são as boas práticas a se seguir quando estamos desenvolvendo tarefas assíncronas.</p><h3 id="-djangoday-aplica-es-multi-tenacidade-com-django">[DjangoDay] Aplicações multi-tenacidade com Django</h3><ul><li>Palestrante: <a href="https://twitter.com/xima">Filipe Ximenes</a></li><li>Link dos Slides: <a href="https://speakerdeck.com/filipeximenes/aplicacoes-multi-tenacidade-com-django">Aplicações multi-tenacidade com Django</a></li></ul><p>Multi-tenacidade (multitenancy) é característica de um sistema atender vários clientes a partir de uma única instância de software. Esta é uma característica bastante fácil de se verificar em sistemas SaaS mas que pode ser encontrada em diversos níveis e formas em arquiteturas de software. O caso de uso mais comum de uso de muni-tenacidade é para isolamento de dados entre clientes. Uma forma de fazer isso é através do uso de múltiplos bancos de dados. Outra forma bastante comum é utilizar-se de apenas um banco de dados e modelar relacionamentos nas tabelas de forma que seja possível realizar consultas isoladas. A terceira forma mais comum é, novamente, ter apenas um banco de dados mas desta vez ter 'schemas' separados para cada cliente. Nesta palestra falarei sobre cada um destas abordagens. Para cada uma delas você entenderá como funciona a arquitetura, como desenvolve-la utilizando Django, verá exemplos de como realizar consultas e conhecerá as ferramentas que podem ajudar no processo de desenvolvimento. Ao fim você será capaz de escolher a abordagem que melhor se adequa a sua próxima aplicação.</p>