Python Sudeste 2018 [TUTORIAIS]
Este é o canal oficial para submissões de TUTORIAIS da Python Sudeste 2018
Submissões
Os tutoriais podem ter a duração máxima de 8h (mas você pode definir a duração que achar mais conveniente) e podem abordar qualquer área de conhecimento dentro do universo da linguagem Python.
Ao descrever a sua proposta de tutorial informe obrigatoriamente:
- Duração do tutorial (mínimo de 1h até 8h), ou durações possíveis (caso o tutorial possa se adaptar ao tempo disponível);
- Nível de conhecimento prévio do assunto que os participantes precisam ter (iniciante, intermediário, avançado);
- Configurações de ambiente;
- Pré-requisitos.
Quando Ocorrerá
A Python Sudeste 2018 ocorrerá nos dias 30/03, 31/03 e 01/04 na cidade de São Paulo/SP. Teremos tutoriais em todos os dias do evento.
Datas
A data final de submissão de tutoriais será até 19/03/2018, porém o processo de seleção iniciará dia 06/03/2018, até o preenchimento da agenda do evento.
Critérios de escolha dos tutoriais
- Número de tutoriais sobre o mesmo assunto (maior diversidade de assuntos);
- Número de tutoriais por palestrante (maior diversidade de palestrantes);
- Palestrantes novos (incentivar mais pessoas a submeter tutoriais);
- Número de votos (não será o único critério para ser escolhido);
- Palestrantes locais (incentivar Python na região Sudeste).
Dicas
- Coloque uma descrição bem detalhada sobre o conteúdo do seu tutorial para que todos possam compreendê-la;
- Você pode buscar inspiração para o tema de seu tutorial nas propostas submetidas em edições anteriores deste e de outros eventos. Dê uma olhada em https://speakerfight.com/events/
- Seja criativo! Solte a imaginação!
- Os tutoriais não precisam ser apenas para iniciantes, mas deixe claro os pré-requisitos necessários para participar dele.
Observações
- Para participar do evento o palestrante precisa aceitar e agir de acordo com o Código de Conduta. Você pode acessá-lo em https://github.com/pythonsudeste/codigo-de-conduta.
- Seguindo a tradição da edição anterior do evento, as votações serão totalmente anônimas, porque assim fica muito mais divertido e inclusivo para novatos :)
- Ao final do processo de seleção entraremos em contato com os proponentes informando o status das submissões;
- Para participar do evento, mesmo como palestrante, é necessário adquirir um ingresso. Para mais informações sobre compra de ingressos acesse o site http://pythonsudeste.org/.
Caso tenha interesse em apresentar um tutorial mas ainda está com dúvidas sobre como enviar a proposta, se o tema é adequado ou qualquer outro questionamento, nos mande um e-mail em eventos@pythonsudeste.org que estamos disponíveis para te ajudar.
Propostas
![author photo](https://lh4.googleusercontent.com/-s4GIGanEmvE/AAAAAAAAAAI/AAAAAAAAZDY/IRYsp8OEoDk/photo.jpg)
Apache Mesos: Distribuindo e escalando códigos em Python
É muito comum hoje em dia se falar em microserviços, escalabilidade e map reduce. Todos esses termos são na verdade faces de um mesmo hipercubo, a programação esclável e distribuída.
No mundo de hoje onde temos algumas características que mudam completamente a visão de software eficiente que tínhamos há alguns anos:
- a demanda por desempenho e o volume de dados a serem manipuladosé enorme
- em lugar de supercomputadores esse processamento pesado precisa ser feito em vários computadores com menor capacidade
- Deve-se levar em conta a resiliência e escalabilidade do software, pois falhas acontecem, e elas devem custar o mínimo para serem recuperadas
A forma de resolver todos estes problemas é com o processamento distribuído, mas nem sempre Map Reduce ou microserviços atendem a essa demanda. Algumas vezes precisamos apenas delegar tarefas mais complicadas para outra unidade de processamento e com isso manter um serviço suficientemente resiliente, ou apenas queremos economizar ativando certos recursos apenas quando necessário. O Mesos, sistema operacional de datacenter da Apache, atende a esses pré-requisitos, e aqui vamos dicustor como utilizá-lo para distribuir recursos usando Python.
Duração: 1h a 3h
Nível: Iniciante
Ambiente: Linux com Docker
Pré-requisitos: Não há
![author photo](/media/my_photo.jpg)
Case Recommender: Utilizando Python para desenvolver sistemas de recomendação
Que tal falar sobre recomendação?
Os sistemas de recomendação são uma subárea de recuperação de informação (do inglês, Information Retrival) que tem por objetivo fazer novas sugestões personalizadas que possam vir a ser de interesse do usuário, com base nos seus feedback (sejam implícitos ou explícitos) ou nas escolhas feitas por outros usuários com gostos similares. Bons sistemas de recomendação podem aumentar as vendas/acessos em vários pontos percentuais. É por isso que eles se tornaram um recurso essencial para lojas e serviços online e têm sido uma área bastante procurada no mercado. Devido a esta necessidade de conquista, a personalização tem se apresentado como um fator facilitador no momento de "cativar" o usuário.
Ao navegar por sites como Amazon, Facebook e Americanas você já se deparou com frases como “Quem viu este produto, viu também…”, “Clientes que compraram este item também compraram…” e “Porque você comprou este produto…” ? Ou quem sabe, ao assistir um filme ou ouvir uma música no Netflix/Spotify, encontrou, dentre as sugestões, alguma outra produção que se encaixava direitinho com seu gosto? Este tutorial dará uma visão geral sobre os sistemas de recomendação utilizados nas tarefas de personalização, assim como ferramentas e bibliotecas que podem auxiliar os desenvolvedores a implementar esses sistemas em Python. Serão apresentadas diversas bases de dados públicas reais, scripts e algoritmos em Python, para gerar e avaliar a recomendação, além dos principais problemas que surgem durante a implementação de um recomendador. A fim de facilitar a aprendizagem e a compreensão do conceito, este tutorial irá se utilizar do framework Case Recommender: uma ferramenta implementada em Python, que possui uma série de populares algoritmos de recomendação, tanto para feedback implícito quanto explícito, em diferentes abordagens baseadas nos principais tipos de recomendação, sendo eles previsão de notas e ranking.
Serão abordados, ainda, conceitos de Aprendizado de Máquina e Inteligência Artificial, como Cross Validation, KNN, SVD, métricas de similaridade, entre outros, utilizando as bibliotecas numpy, scipy e sklearn do Python. Assim, serão apresentados os principais conceitos e estratégias que os sistemas de recomendação utilizam para transformar dados em informação personalizada altamente poderosa.
Duração: 4 ~6 horas
Nível de conhecimento: Intermediário
Configuração de ambiente e OS:
[Linux, Windows e MAC]
[Python 3]
Bibliotecas: [numpy, scipy, sklearn, pandas e caserecommender] (Todos em pip)
CODENAMES API: Implementando um jogo de tabuleiro com Django Rest Framework
CODENAMES é um jogo de tabuleiro criado por Vlaada Chvátil em que os jogadores se dividem em dois times para identificar os próprios agentes espiões escondidos. Neste tutorial, vamos implementar a mecânica do jogo numa API utilizando o Django Rest Framework e o respectivo cliente utilizando requests.
Com a atual separação da camada de visualização e da camada de processamento, APIs REST estão cada vez mais presentes nos sistemas que temos que desenvolver e usar. Porém, apesar de existir uma definição muito clara sobre o que deve ser uma API REST, não existe um modelo pronto a seguir. O objetivo deste tutorial é capacitar os participantes a escreverem APIs REST usando Django Rest Framework, mantendo em mente as boas práticas.
Vamos passar desde o setup inicial de um projeto Django até finalmente jogarmos uma rodada de CODENAMES usando a API e cliente que implementamos.
O tutorial será apresentado por Gerardo Soares e Eduardo Carvalho.
Duração: 6 horas.
Nível de Conhecimento: Iniciante
Configuração de Ambiente de OS: Linux e Mac. Python3.
Bibliotecas: Django, Django-rest-framework, requests
![author photo](/media/foto-hb3.jpg)
Contas de Padeiro e Outros Hacks Mais
Você achou que só ia ter tutorial de programação nesse evento? Veja o meme!
A gente fala de programação, de tecnologia, da última ferramenta do momento, do bilionésimo framework de javascript que vai te ajudar a fazer um sistema show sem precisar escrever javascript, mas a gente não fala do básico que movimenta o mundo: Aritmética!
Nesse tutorial, você vai aprender usar a arte milenar da aritmética no papel de pão reciclado com caneta bic de tampa mordida para investigar a realidade do seu trabalho focando no reconhecimento de terreno.
Com estas ferramentas vamos interagir para investigar perguntas que muita gente tem receio de perguntar:
- Você tá ganhando pouco? Ou vc tá ganhando muito?
- Seu chefe tá embolsando a grana sem te dar um pedaço?
- Você merece um aumento de salário? Tem certeza?
- Quanto custa o software que você desenvolve?
- Quanta grana rende o software que você desenvolve?
- Sua ideia genial para uma nova startup é boa mesmo?
- Seu projeto gera valor para os clientes?
- Sua empresa tem dinheiro pra pagar seu salário do próximo mês?
- É melhor clt ou pj?
- Quanto cobrar no freela?
- Vale a pena fazer freela?
- Insira aqui a pergunta cabulosa que você quer investigar.
Mais do que um tutorial, essa atividade é um espaço de interação para quem tem interesse nestes assuntos que vão além da programação.
Alerta: Essa é uma iniciativa experimental. Eu estou acostumado a fazer palestras sobre esses temas, mas quero experimentar um modelo mais interativo, distribuído e com conversas paralelas. ;)
Informações práticas:
- Duração de até 4 horas;
- Não leve seu computador;
- Leve papel e caneta;
- Configurações de ambiente: um flipchart, ou quadro branco para escrever e cadeiras pra galera sentar em roda.
- Pré-requisitos: Ter dúvidas, perguntas e curiosidade.
![author photo](/media/1490875_Nx8STXS.png)
Contribuindo com o Speakerfight
Descrição:
O Speakerfight é uma plataforma de votação em palestras para eventos criado em 2014, ele é inteiramente feito em Python e Django. Temos várias features e bugs para serem resolvidos. Este sprint se propôe em abranger pessoas desenvolvedoras de todos os níveis, desde as pessoas que nunca trabalharam diretamente com Python, até quem já tem anos de experiência em desenvolvimento. Para cada perfil de participantes iremos escolher alguma tarefa para ser desenvolvida ou iniciada dentro do período do tutorial.
A duração mais interessante seria de 4 ou 6 horas, por causa do tempo necessário para instalação, explicação do básico da plataforma e tempo de implementação. Este mesmo tutorial foi oferecido na Python Brasil de 2017 e tivemos alguns resultados muito interessantes como pessoas que nunca tinham programado nada de verdade conseguiram entregar issues, alguns bugs recorrentes também foram resolvidos.
Resumo:
Duração: 4 ou 6 horas
Nível: Iniciante até Avançados.
Infra-estrutura: Levarei meu próprio computador, os membros preferêncialmente poderão utilizar seus computadores ou qualquer computador com Linux, permissão de instalação de pacotes python e de banco de dados.
-
Para mais informações acesse: https://github.com/luanfonceca/speakerfight
Introdução ao Python
Duração: 6 a 8 horas
Nível de conhecimento prévio: Iniciante
Configurações de ambiente: Python 3 já instalado (3.0 ao 3.7)
Pré-requisitos (pelo menos 1 dos 3 abaixo):
- tipos básicos: int, float, string (desejável)
- lógica de programação básica: if, else, while (desejável)
- contato prévio com outra linguagem de programação (desejável)
![author photo](https://lh4.googleusercontent.com/-s4GIGanEmvE/AAAAAAAAAAI/AAAAAAAAZDY/IRYsp8OEoDk/photo.jpg)
Levando IA pra produção com Python
Inteligência Artificial está na moda, vemos formas eficientes de resovler e atacar problemas que antes só poderiam ser feitos por humanos ou com um nível de precisão razoável. Porém, quando falamos em IA estamos quase sempre falando de metodologia de treinamento, e raramente nos preocupamos com o nosso problema em produção.
Aqui vou discutir formas de fazer o deploy de produtos de Inteligência Artificial usando ferramentas como Tensorflow e Sickit Learn, além de discutir o aprendizado online, onde focaremos em sistemas que precisam ser treinados enquando estão em produção.
Duração: 1h a 2h
Nível: Intermediário
Ambiente: Linux
Pré-requisitos: Noção de inteligência artificial e treinamento.
Libertando bases de dados públicas
Diversas bases de dados estão disponíveis publicamente na Web, principalmente as que são de interesse público - e desde a criação da Lei de Acesso à Informação[1] esse número só cresce (por conta, também, de pressão popular).
Infelizmente, muitos desses dados não estão em formatos acessíveis a leigos e em boa parte das vezes é necessária a criação de softwares personalizados para conversão e limpeza.
Nesse tutorial serão demonstrados exemplos de código que Álvaro Justen desenvolveu para libertar várias dessas bases de dados, como os salários dos magistrados brasileiros e os sócios das empresas brasileiras.
[1]: http://www.planalto.gov.br/ccivil_03/_ato2011-2014/2011/lei/l12527.htm
Machine Learning com scikit-learn
Tutorial prático de machine learning visando apresentar conceitos básicos da área, convenções do scikit-learn e casos de uso.
Duração do tutorial: de 6 a 8 horas
Conhecimento prévio necessário: Familiaridade com o Python.
Conhecer o stack científico do Python, principalmente numpy e matplotlib, facilitará a compreensão.
Pré-requisitos:
Trazer o computador (o tutorial é hands-on!) com o Python (preferencialmente o 3.6) e os seguintes pacotes instalados: numpy, scipy, matplotlib, seaborn, pandas, scikit-learn.
O tutorial estará na forma de um Jupyter Notebook. O ideal é acompanhar o próprio notebook, mas tudo poderá ser feito por meio do editor de textos e do REPL que cada um preferir.
Muito mais que map, filter e reduce
A ideia desse tutorial é transformar a mentalidade de que python é uma linguagem ruim para usar programação funcional. Vamos entender como funcionam as features e o que python pode nos proporcionar de melhor. Vale resaltar que o objetivo de tudo não é vender programação funcional como o centro do universo, mas mostrar como mesclar conceitos declarativos para que você escreva um código mais simples e clean.
Pré-requisitos:
- Python básico
- Saber o que é uma função
- Se souber usar lambda será ótimo, se não a gente explica
- Um computador com Python3 (de preferencia 3.6)
Roteiro:
- Uma introdução não axiomática a teoria dos conjuntos.
- Um pouco sobre iteradores
- Funções, funções e funções
- - Funções totais
- - Funções parciais
- - Funções anônimas
- Closures, o centro do universo
- Composição/Pipelines
- lambdas para vencer
- Bibliotecas não builtins que pode te ajudar
Segurança da Informação e de Software
Workshop sobre as falhas de segurança mais recorrentes
em softwares com uma análise das suas causas e de meios
para detectá-las e prevení-las. Serão abordados também
princípios de criptografia e de segurança da informação.
Adicionalmente, teremos uma discussão sobre a relevância que os
aspectos de segurança de um software tem na nossa
sociedade e o papel que temos nesse cenário
Duração: 2h a 4h
Nível: Iniciante
Pré-requisitos: Não há