PythonSul 2019 - Curitiba
A Python Sul é um evento que reúne entusiastas e profissionais da linguagem de programação Python da região sul do Brasil (Rio Grande do Sul, Santa Catarina, e Paraná) favorecendo a troca de experiências, conhecimentos e interação entre as comunidades da região.
Em 2019, Curitiba irá sediar o evento que irá ocorrer entre os dias 12 e 14 de setembro na Unicuritiba. Esperamos receber cerca de 300 pessoas nas nossas atividades que incluem palestras, tutoriais e sprints de programação. Além disso, queremos promover a inclusão através de políticas de apoio a diversidade e ingressos sociais. Esta conferência é um evento sem fins lucrativos, organizada pela comunidade e para a comunidade.
Em caso de dúvidas, não hesite em nos contactar.
Código de conduta
Este evento possui um Código de Conduta e todo participante, palestrante e membro da organização deve concordar com o mesmo. Em caso de dúvidas, não hesite em nos contactar.
Dúvidas?
Caso você possua dúvidas sobre a Python Sul, envie um email para pythonsul@gmail.com.
Mais informações em pythonsul.org.
Propostas
Beleza, Django é massa! Mas como funciona? O que acontece por baixo dos panos?
Django é um framework bastante popular, de código aberto, para desenvolver aplicações web de forma fácil e rápida.
A união da simplicidade da linguagem Python com a velocidade de desenvolvimento que o django proporciona resulta em um desenvolvimento limpo e consistente permitindo ao desenvolvedor focar nos “problemas” da aplicação e não na arquitetura e configurações.
Legal, mas como ele funciona por baixo dos panos? O que acontece?
Nesta talk veremos como o Django é estruturado, sua arquitetura e funcionamento.
Broadcast Cidadão. Perfil de Bolsonaro: Twitter, Legislaturas como Deputado Federal (discursos, gastos, fornecedores)
Usando Raspagem de Dados de Redes Sociais e da nova API da Câmara dos Deputados, iremos enviar automaticamente posts das Análises feitas, para o Instagram, Facebook e Twitter.
Ciência de Dados no Terminal
Apesar de muito poderosa, a interface de linha de comando (terminal) nem sempre é conhecida profundamente por pessoas que desenvolvem software e por isso é bastante subutilizada. Nesse contexto, existem diversos programas que podem auxiliar e agilizar o dia-a-dia de uma cientista de dados: alguns antigos, que mimetizam os criados pelo UNIX no fim da década de 1960 até mais modernos, que interagem com novos formatos de dados e protocolos.
Nessa palestra será apresentada uma introdução ao terminal (para os que não conhecem) e também diversas ferramentas (todas livres) que são úteis no trabalho com dados; serão apresentados os principais problemas relacionados ao trabalho com dados e exemplos práticos de como resolvê-los com essas ferramentas no processo de download, conversão, limpeza e análise de dados (incluindo uma criada pelo próprio palestrante, chamada rows).
Comprehensions: ler, entender e utilizar.
Essa apresentação tem como objetivo introduzir e exemplificar um conceito utilizável em código Python: as comprehensions. A expressividade do recurso em listas, dicionários e conjuntos pode tornar um código conciso, apesar do potencial de tornar a leitura confusa quando utilizado de maneira sobrecarregada. Além do recurso conhecido para o código síncrono, é apresentado também um uso do recurso de comprehension assíncrono.
Ao término desta palestra, as pessoas...
- poderão avaliar vantagens e desvantagens de utilizar as comprehensions.
- entenderão como utilizar ferramentas providas pela própria biblioteca padrão do Python para análise de código quando necessário, como o pacote dis.
#JustPython
Desafios soluções e experiências na revisão de código
O processo de revisão de código está cada vez mais incorporado no ciclo de desenvolvimento de software de empresas. O que antes era uma atividade quase exclusiva em contribuições de projetos de código aberto agora já é padrão também em projetos internos. Entretanto nem todas as pessoas estão acostumadas com o processo de revisar o código alheio ou ter seu próprio código revisado. O despreparo de equipes quanto ao processo de revisão pode inclusive dimiuir a produtividade do time, afetar a qualidade do projeto e o relacionamento das pessoas.
Nessa apresentação serão expostas boas práticas para se adotar enquanto revisa o código de colegas bem como o que se atentar antes, durante e depois da própria submissão de código. Dada a natureza interpessoal da atividade serão abordados aspectos tanto de relacionamento e cuidados na comunicação mas também dicas do que se atentar ao revisar especificamente código escrito em Python.
Descanso: não um luxo, mas uma necessidade
Muitas vezes não sabemos descansar, o que pode levar a uma ruína psíquica. Dicas de como fazer isso. Meu trabalho tem sentido? Ter a coragem de mudar quando estamos num ambiente tóxico. Armadilhas do nosso temperamento. Higiene mental no mundo das redes sociais. Pontos básicos: sono, lidar com o stress, lidar com a diversidade de pessoas. As coisas são o que são e não o que gostaríamos que fossem. Serenidade e bom humor. Lidar com nossas vulnerabilidades psíquicas: minha experiência pessoal.
Em nome das boas práticas de código da Casa Django, Rainha do Backend, eu te sentencio a testar - A Game of Tests
Valar Testhaeris, todos os homens devem testar. Muitos desenvolvedores subestimam o poder dos testes, mas a noite é escura e cheia de erros. Nessa palestra, você irá aprender os truques do Game of Tests. E porque o homem que passa a sentença deve brandir a espada, nessa palestra, meu objetivo é te ajudar a entender testes automatizados em Django como iniciante, boas ferramentas que podem te ajudar no caminho e mostrar alguns exemplos práticos no assunto. Porque o que dizemos para o deus dos bugs? Hoje não.
Essa palestra é adequada para pessoas iniciantes em testes ou que tiveram pouco contato com o assunto. Cobrirei o básico das ferramentas de teste do próprio Django, mostrando o que já vem de fábrica: TestCase, asserts, setUp, Client, Request Factory; e apresentarei algumas bibliotecas bem úteis (como Model Mommy) para ajudar os participantes a começarem no domínio dos testes em Django. Ao final da minha palestra, os participantes terão um entendimento melhor dos poderes dos testes, uma visão geral de como começar e dicas em possíveis problemas que provavelmente não encontrariam logo de cara em suas respectivas jornadas.
Preparem-se, os testes estão chegando.
Outline:
[1 minuto] - Quem sou eu
[5 minutos] - Quando você joga o Game of Tests, você ganha ou chora: Introdução
- Todos os homens devem testar: por que muitos iniciantes não testam
- Como não morrer na primeira temporada: dificuldades que você pode encontrar no início
- A noite é escura e cheia de erros: os reais benefícios dos testes
[19 minutos] - Julgamento por combate: Como testar
- [1 minuto] - O Dragão deve ter três cabeças: Pirâmide dos testes automatizados
- Fim-a-Fim
- Integração
- Unitário
- [2 minutos] - A Muralha (de testes): Estrutura de testes
- test_views
- test_forms
- test_helpers
- [5 minutos] - Os Primeiros Homens: Ferramentas de teste do Django
- TestCase
- setUp
- Asserts
- [5 minutos] - Os Homens Sem Rosto: Fábricas de objetos
- Model Mommy
- Fixtures
- [2 minutos] - A Batalha dos Clientes
- Request Factory
- Client
- [4 minutos] - As coisas que eu faço pelo mock
O que os participantes aprenderão nessa palestra?
- Participantes aprenderão de forma ampla sobre a pirâmide de testes automatizados, Triple A e que tipos de testes existem
- Participantes aprenderão por que testes são importantes e por que deveriam fazer parte da rotina de todo desevolvedor
- Participantes sairão com um melhor entendimento sobre o que já vem de fábrica na suíte de testes do Django
- Participantes entrarão em contato com ferramentas/bibliotecas open-source que poderão ajudá-los nas suas jornadas no mundo dos testes
Estrutura de Dados é <3
Eu amo Estrutura de Dados. Apresentação para iniciantes! Se você acredita que isso é possível, venha curtir uma pequena amostra de códigos e discussões apaixonadas. Recursão. Vetores. Pilhas e Filas. Algoritmos de Ordenação: inserção, seleção, mergesort, quicksort. Algoritmos de Enumeração. Boyer-Moore. Teoria dos Grafos. Deixe seus traumas e venha ser feliz. https://github.com/fmasanori/ED
Fazendo música com Python e FoxDot
FoxDot é uma biblioteca/Live Coding Environment feita em Python para fazer música com código. Ela vem com vários sintetizadores, samples e efeitos pra fazer qualquer tipo de música/baruilho. Você instancia os players, escolhe o sintetizador de cada um e passa uma lista de notas. Além disso, a teoria musical já vem implementada, então, por exemplo, você não precisa necessariamente saber quais notas tocar, basta escolher uma das escalas que aparecem no autocomplete e aperta ctrl+enter pra ouvir o resultado.
O objetivo dessa palestra é apresentar a FoxDot e mostrar que programação não é apenas para resolver os problemas do seu chefe e garantir o seu emprego. É também para explorar a sua criatividade e te dar uma nova forma de se expressar.
Vão ser apresentados conceitos básicos de teoria musical e composição, como acordes e escalas, e como aplicá-los na FoxDot para fazer música. A palestra vai ser toda mão na massa e todos os conceitos vão ser mostrados na ferramenta. Músicas serão compostas e tocadas ao vivo durante a palestra.
Público alvo: qualquer pessoa que goste de música
Jane Doe: como garantir proteção de dados pessoais no seu projeto.
Em dias de vazamentos de dados sigilosos, proteger os dados de clientes se tornou um ponto de falha para várias empresas e a solução está longe de trancar tudo em um lugar seguro. Compartilhar de dados é inevitável. Nesta palestra abordaremos o problema da anonimização de dados, explorando como usar técnicas de anonimização para proteger as informações pessoais dos usuários ao analisar, testar, processar ou compartilhar um banco de dados.
Jane Doe é uma personagem fictícia que perdeu a memória e não tem noção nenhuma da sua identidade, apesar disso ela consegue realizar as mesmas atividades complexas de antes. Essa palestra vai utilizar o exemplo de vida de Jane Doe no desenvolvimento de software, abordando como realizar uma anonimização em uma base de dados com o objetivo de permitir que qualquer um possa testar/analisar/processar sem infringir os direitos de privacidade do usuário garantidos pela Lei Geral de Proteção de Dados Pessoais (LGPD).
A partir de um projeto amostra, todos os campos de identificação pessoal do usuário serão substituídos por pseudônimos, explorando algumas estratégias genéricas de implementação, seus desempenhos e limitações. Por fim, o uso desse conceito excede o teste de features mais complexas, mas também protege a privacidade dos usuários nos sistemas em que trabalhamos.
Kubernetes? Docker? O que são? E onde fica minha aplicação Python?
SPOILER: O Kubernetes é uma plataforma open source que oferece recursos de manutenção, implantação e dimensionamento. Também simplifica o gerenciamento de contêiners com aplicações Python e fornece, ao mesmo tempo, recursos de portabilidade, extensibilidade e autorrecuperação.
Sendo sua aplicação simples ou complexa, com o Kubernetes você conseguirá implantar e dimensionar com eficiência, adicionando novos recursos sem interrupções utilizando apenas os recursos necesários, caso queira limitar.
Nesta talk, desvendaremos estes mistérios e descreveremos o processo de implantação de uma aplicação Python com Kubernetes.
LGPD sim ...
Uma abordagem sobre a Lei Geral de Proteção de Dados, a partir de um cidadão e cientista de dados! Alguém que terá muito em breve direitos, deveres e pontos a se atentar...
Antes de qualquer sensação de qualquer sensação de pânico ou noites em claro por causa do assunto, iremos trazer através de uma linguagem simples e amigável os principais pontos da lei.
Como empresas que atuam/tratam dados (in)diretamente deverão se atentar e também como nós pessoas se portaremos junto a mesma.
Tanto a Ciência de Dados como a Inteligência Artificial serão impactadas pela lei e como de alguma podemos atuar perante ela ....
Lógicas de negócio com Django: como, onde e porque.
Uma dúvida bastante comum ao se desenvolver projetos web com Django é sobre onde se implementar lógicas de negócio. Embora Django encorage um desenvolvimento pragmático, seja pela documentação algumas vezes carente de objetividade ou projetos de maior complexidade, a questão de como e onde implementar as regras de negócio podem levar ao comprometimento do design das soluções.
Essa apresentação tem como objetivo trazer uma revisão bibliográfica sobre o tema, cobrindo desde o que diz a própria documentação do Django e outros frameworks auxiliares sobre mas também outros artigos, soluções, bibliotecas e tópicos relacionados. Longe de buscar exaurir a questão, até porque cada projeto e time possuem suas subjetividades, espera-se trazer ao público pontos de vista que enriqueçam suas futuras discussões de design e estudos seguintes.
Não faça trabalho de robô! Faça um robô que teste funcionalidades com Selenium!
O trabalho de testar seu código é uma das coisas mas massantes e muitas vezes é neglênciadas onde deixamos de notar detalhes importantes, ou até mesmo não testamos todas as funcionalidades. Muitas vezes deixando para o usário final testar nosso código. Com testes automatizado com Selenium você não precisará mais ficar simulando ações do usuários, testando o software como um todo.
NoSQL + SQL = PostgreSQL
Nesta apresentação veremos um pouco das capacidades NoSQL do PostgreSQL por oferecer suporte nativo a JSON/JSONB, HStore (chave/valor), XML, oferecendo excelente indexação e otimização no armazenamento, e atendendo aos requisitos ACID, portanto tendo o melhor dos dois mundos. Sem contar o alto poder de extensibilidade que oferece pela possibilidade de escrever novos tipos de dados, mecanismos de indexação, linguagens procedurais, adaptadores de fontes de dados externas (SQL/MED), entre outras diversas características excelentes.
O que são e como se livrar dos anti-patterns em código Python
Anti-patterns são soluções comumentemente utilizadas para resolver problemas recorrentes mas que geralmente são inadequadas, que podem levar a erros ou que não resolvem o problema efetivamente. De forma geral podemos associar os anti-patterns com maus hábitos que muitas vezes não nos damos conta o quão são prejudiciais.
Nessa apresentação serão apresentados diversos casos de anti-patterns ao se programar em Python e quais são as maneiras corretas de solucioná-los. A palestra é fortemente baseada no livro "The Little Book of Python Anti-Patterns", mas não se limita somente à essa publicação.
Python para Automatizar o Controle Financeiro
Nessa paletra mostrarei como podemos utilizar o Python e suas ferramentas para automatizar a extração dos seus dados bancários e criar um sistema de controle financeiro que é preenchido automaticamente. Assim você poderá dedicar tempo ao mais importante que é analisar suas finanças ao invés de gastar tempo preenchendo planilhas e/ou sistemas. Além disso você poderá assumir o controle sobre os seus dados para utiliza-los como quiser.
Thumbor: Performance e escalabilidade no processamento inteligente de imagens
O Thumbor é um projeto open source que nasceu e é amplamente utilizado na globo.com para processar de forma inteligente e servir mais de 1 bilhão de imagens por mês. Além de ser altamente extensível e escalável, o Thumbor foi desenvolvido em python, possui um conjunto de bibliotecas compatíveis com diversas linguagens e uma comunidade bastante ativa.
[Web][Devops] Docker: melhorando sua vida como desenvolvedor Python
Anos atrás o processo de implantação de uma aplicação era basicamente um serviço como LAMP, que gerenciava interpretador da linguagem, banco de dados e servidor web.
Atualmente, a tecnologia evoluiu a ponto de uma aplicação se comunicar com os serviços mais diversos, desde banco de dados até servidor de logs e engines de buscas.
Com essa evolução, cresce também a complexidade de gerenciar tanto ambiente de desenvolvimento, quanto de produção.
Docker é uma ferramenta que auxilia o provisionamento e execução dos mais variados serviços e linguagens sem muito trabalho, usando um ambiente isolado e controlado chamado de container. Com ele, é possível gerar imagens que se comportam da mesma maneira, independente do ambiente em que estão sendo executadas.
Nesta palestra pretendo apresentar uma aplicação que reproduz um cenário real, com banco de dados, webpack, servidor web, Celery, Redis, RabbitMQ e mostrar como Docker pode ajudar a gerenciar tudo isso sem dor de cabeça.
Ao fim, pretendo fazer o deploy desta aplicação no Heroku, usando o seu serviço de hospedagem de containers.