Blog

Ideas and insights from our team

[pt-BR] PythonBrasil[13] Talks


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

Alt text

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.

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

Comments