article

ūüáßūüá∑ PyBR 2017 Talks

Slides from talks given during the PythonBrasil[13] event will be posted here. This post and the slides are written in Brazilian Portuguese.

Prevenindo dores de cabeça com linters e checagens automáticas

√Č 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.

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.

Previsão de séries temporais com PyData e Inteligência Artificial

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.

Salvando Grandes Projetos

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.

A Programação Funcional em Python, de forma simples

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.

Python e Tipagem Est√°tica

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).

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.

(Quase) Tudo que você precisa saber sobre tarefas assíncronas

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.

[DjangoDay] Aplica√ß√Ķes multi-tenacidade com Django

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.

Rob Novelino

Creator of organizational tools, whether they have code lines or not. Likes to read about crazy things like futurism, psychology, education and new economic models. When coding, goes for Python/Django