Profile
About Me
Pythonista (uma filosofia de vida além de programar em Python), Membro da Python Software Foundation, Professor no http://CursoDePython.com.br, Podcaster no http://castalio.info, Autor de 1 livro, Palestrante, Desenvolvedor e contribuidor de alguns projetos de código aberto, aprendiz de Rust e nas horas vagas também é Artista de Software no time de Engenharia de Qualidade da Red Hat
Proposals
[1 hora] Comandos com Python-Manage: Transforme suas funções em comandos e crie um REPL para seu projeto Python.
Todos que conhecem o Django estão acostumados a utilizar os chamados "management comands" que são ferramentas de linha de comando que colocamos na pasta "management/commands" de um app Django e então invocamos a partir do já padronizado "manage.py". Este uso se tornou tão comum que até mesmo em outros frameworks como Flask ou Pyramid o entry point dos comandos costuma ser chamado de "manage.py"
Seguindo esta idéia eu criei o "python-manage" uma ferramenta que automatiza e simplifica o processo de criação de comandos de gerenciamento em qualquer projeto Python independente de framework, basta instalar "pip install manage" e então na raiz do seu projeto chamar diretamente "manage [nome do comando]", como o YAML também se tornou um padrão bastante adotado na industria de software basta criar um arquivo "manage.yml" na raiz de seu projeto e definir nele onde estão localizados seus comandos, que podem ser funções já existentes em seu projeto, classes etc, e neste arquivo também é possivel definir o comportamento do comando especial "manage shell" que se torna um REPL personalizado para seu projeto, além disso o Python-Manage já possui integração com o Ansible!
O Python-Manage já está em uso em alguns projetos como o Quokka CMS e na Red Hat usamos ele nos projetos de Quality Engineering.
Nesta palestra pretendo mostrar quais as features que o manage possui, como incluir o manage como ferramenta em seu projeto e quais as opções de personalização.
Será um Live-Coding!
[30 min] A gestão de configurações no Django com Dynaconf
Sim esta palestra é um "show off" do Dynaconf, mas com foco na extensão para o Django.
Nesta apresentação eu pretendo mostrar os exemplos reais dos projetos Pulp, Ansible entre outros na Red Hat
e um exemplo prático de como o Dynaconf ajuda a deixar a aplicação mais flexivel de acordo com o 12 factor apps.
[30 min] Comandos com Python-Manage: Transforme suas funções em comandos e crie um REPL para seu projeto Python.
Todos que conhecem o Django estão acostumados a utilizar os chamados "management comands" que são ferramentas de linha de comando que colocamos na pasta "management/commands" de um app Django e então invocamos a partir do já padronizado "manage.py". Este uso se tornou tão comum que até mesmo em outros frameworks como Flask ou Pyramid o entry point dos comandos costuma ser chamado de "manage.py"
Seguindo esta idéia eu criei o "python-manage" uma ferramenta que automatiza e simplifica o processo de criação de comandos de gerenciamento em qualquer projeto Python independente de framework, basta instalar "pip install manage" e então na raiz do seu projeto chamar diretamente "manage [nome do comando]", como o YAML também se tornou um padrão bastante adotado na industria de software basta criar um arquivo "manage.yml" na raiz de seu projeto e definir nele onde estão localizados seus comandos, que podem ser funções já existentes em seu projeto, classes etc, e neste arquivo também é possivel definir o comportamento do comando especial "manage shell" que se torna um REPL personalizado para seu projeto, além disso o Python-Manage já possui integração com o Ansible!
O Python-Manage já está em uso em alguns projetos como o Quokka CMS e na Red Hat usamos ele nos projetos de Quality Engineering.
Nesta palestra pretendo mostrar quais as features que o manage possui, como incluir o manage como ferramenta em seu projeto e quais as opções de personalização.
Será um Live-Coding!
[30 min] O que Python pode fazer e você talvez não sabia
Está é a palestra que eu apresentei no Intercon 2016, como neste encontro teremos muitos alunos da FAM que talvez não conheçam Python, eu sugiro que após uma apresentação do Grupy-SP este conteúdo possa ser interessante para as pessoas novas no mundo Python.
Apresento:
- Quando Python foi criado e por quem
- A importancia das comunidades, diversidade e inclusão.
- Como fazer dinheiro com Python? (quanto ganha um programador Python?, Quais empresas usam Python?)
- Python sendo usado na Inovação, Ciência e Tecnologia (principais usos, projetos famosos, empresas famosas e aplicativos de uso diário que usam Python)
A palestra é de 30 minutos, conteúdo especialmente focado em quem não conhece Python e serve como uma motivação pra buscar mais sobre a linguagem.
A arte de roubar (idéias) dos frameworks ricos e entregar para a sociedade (PyPI)
"roubando" idéias legais do Django e do Flask e transformando em libs genéricas para uso em qualquer framework pt1.
A minha idéia é mostrar como eu extrai 3 idéias muito legais do Django e uma do Flask transformando em libs Python independentes para serem usadas em qualquer projeto python sem depender de framework especifico e falar como esse exercicio pode ser interessante do ponto de vista do desenvolvedor e também do ponto de vista da "socialização" do ecossistema.
1. Python Manage (shell interativo e comandos)
O django possui o gerenciador de comandos conhecido como manage.py, eu extrai essa idéia em uma lib chamada manage e com ela é possivel ter o shell interativo com objetos auto-importados e comandos personalizados de forma bem flexivel além de muitas possibilidades a serem implantadas (com sua ajuda). Quero mostrar como funciona no Django, como fiz para transformar em uma lib generica e como voce pode usar em qualquer projeto Python.
2. Dynaconf (configurações dinamicas)
Além do django.conf.settings que é até bastante flexivel (apesar dos seus problemas de acoplamento) a comunidade Django sempre teve boas libs para desacolpar settings, juntando todas essas idéias eu criei o Dynaconf que faz com que seja fácil ter configurações dinamicas e flexiveis em qualquer projeto Python.
3 (bonus) import_string (imports dinamicos)
Seguindo a mesma idéia eu dessa vez fui roubar um modulo utils do werkzeug (flask) e dei uma otimizada e transformei em uma lib chamada import_string, também quero mostrar como funciona.
A idéia é dar uma palestra mostrando como é útil extrair boas idéias de frameworks e transformar em libs que todos possam usar! e também mostrar como fiz e o que as libs podem fazer por você!
Além do "import" - hackeando o sistema de módulos do Python
O sistema de pacotes e módulos do Python permite uma série de customizações e "hacks"
Pretendo mostrar técnicas para ir além do "import" e usar features como:
- Namespace packages (plugins com Python)
- Override de paths com sys modules
- Import dinâmico a partir de strings com importlib
- Customizações do interpretador
- Uso de arquivos .pth
- Lazy modules
Entre outros hacks e uso avançado do sistema de módulos e dicas do que você NÃO DEVE FAZER.
APIs escalaveis, simples e com boa documentação usando Flask e SwaggerUI
O Swagger UI se transformou em uma espécie de padrão para documentação de APIs REST
Eu criei uma extensão para o Flask chamada flasgger http://github.com/rochacbruno/flasgger que automatiza boa parte do trabalho de documentar e apresentar a API em forma de UI navegavel!
Pretendo mostrar boas praticas para criação de APIs simples usando Flask puro! e como usar o flasgger para criar um playground/documentação para sua API
Aprenda a criar mapas dinâmicos e cheios de firulas com Flask GoogleMaps
Em 2014 eu participei como mentor do Google Developer Bus e precisava apresentar uma palestra sobre Python utilizando tecnologias do Google.
Durante a madrugada da vespera eu preparei a palestra mostrando como criar extensoes para o Flask e ai saiu o Flask-GoogleMaps que encapsula a API do GoogleMaps em templates Jinja e helpers do Flask
O projeto ganhou uma boa adoção da comunidade Flask e hoje conta com a colaboração de muita gente da comunidade brasileira e internacional.
O FlaskGooglemaps é uma extensão oficial registrada no MetaFlask e foi usada para criar o PokemonGO Maps!
Pretendo mostrar como é fácil criar apps que dependam de mapas (como Uber, AirBnb etc..) usando o Flask e o Google Maps
https://github.com/rochacbruno/Flask-GoogleMaps
Aprenda Flask criando um CMS e suas extensões. What The Flask?
Este será um tutorial baseado na série de tutoriais "What the Flask?" que publiquei no Python Club bit.ly/whattheflask
A idéia é acompanhar os passos da criação do CMS de notícias e ir explicando os conceitos do Flask e suas extensões.
O conteúdo será baseado no tutorial mas terá muito mais exemplos e explicações além de dúvidas que podem ser sanadas durante o tutorial.
Usaremos Flask, dataset, MongoDB, FlaskAdmin, FlaskSecurity etc..
- Hello Flask: Introdução ao desenvolvimento web com Flask
- Flask patterns: Estruturando aplicações Flask
- Plug & Use: extensões essenciais para iniciar seu projeto.
- Magic(app): Criando Extensões para o Flask
- Run Flask Run: fazendo deploy
Duração: 6 a 8 horas (tenho disponível o sábado dia 09, pois meu voô de retorno é dia 10)
Idioma: Português (posso fazer em inglês se for preciso)
Infra: Levarei meu próprio laptop para ser ligado a uma entrada VGA para apresentar.
Os alunos devem usar computadores preferencialmente com Linux/Mac e Python 3.6
Conexão com internet necessária para instalar as dependencias (mas por garantia levarei um mirror do PyPI em um pen-drive com os pacotes usados no tutorial)
OBS: Só terei disponivel o dia 9 portanto posso ministrar apenas um dos tutoriais propostos
Aprenda Flask - What The Flask - Do Hello World ao Deploy com Flask
Este tutorial será baseado na minha série de artigos http://bit.ly/whattheflask
Flask é um microframework para desenvolvimento de web apps e APIs, já bastante conhecido da comunidade Python o Flask possui uma maneira flexivel de evoluir seu projeto a partir de um único arquivo até uma arquitetura mais elaborada.
Neste tutorial não pretendo cobrir em detalhes cada funcionalidade do Flask, mas pretendo apresentar um overview "end-to-end" mostrando as questões mais importantes no uso do Framework.
1. Overview da WEB (HTTP, POST, GET, REST, RESPONSE, REQUEST etc... um overview e a forma como o Flask trata esses objetos)
2. Base: Como o Flask foi construido e como podemos "hackear" detalhes de sua implementação (tudo dentro das leis..)
3. Os problemas que podemos encontrar com Flask e como resolver
4. Padrões a seguir para um projeto Flask sem dores de cabeça
5. Blueprints e Extensões (como configurar, instalar e criar os seus próprios)
6. Segurança e banco de dados
7. Flask-Admin (show case)
8. Deploy (onde, como e com o quê?)
Público: Pessoas com conhecimentos básicos de Python e do funcionamento da web.
Duração: Ideal seria um tutorial de 8 horas (2 partes de 4 horas), Mas caso seja possivel apenas 4 horas posso cortar alguns itens do conteúdo.
A data teria que ser dia 14 :)
As configurações pertencem ao ambiente: dicas de gerenciamento de configurações com Python [40-60 minutos]
O 12-factorapp guide indica que as configurações devem pertencer ao ambiente onde o programa esteja rodando
Além disso existem variaveis de configuração que são sensiveis e precisam estar seguras
Apresentarei algumas dicas e bilbiotecas para ajudar no gerenciamento de configurações em projetos Python.
Chega de Pytest e Unittest - Vamos escrever nosso próprio test framework em 60 linhas de puro Python
O pytest é legal, mas aqui é Just Python!!!
Então vamos usar apenas Python para criar o "testai" um test framework/runner bem simples
mas com funcionalidade bem parecida com o Pytest :)
Esta palestra não terá slides, é 100% código.
Será apresentado interativamente os passos desde a inicialização do projeto até as funcionalidades básicas rodando.
Usaremos muito o `pdb` módulo nativo para debugging e algumas mágicas do Python para metaprogramação e inspeção de objetos.
Just Python, Just 4 Fun!
Contribuindo com o ecossitema Python criando bibliotecas de qualidade
Este é um tutorial de 2 horas a 4 horas de duração, nele os participantes serão convidados a criar uma biblioteca Python do zero.
Explicarei os seguintes conceitos
- Como funciona o sitema de módulos e namespace do Python (PYTHONPATH)
- Como funciona o setuptools e quais são as opções e "tricks" mais importantes
- Como funciona o PyPI (suas vantagens e desvantagens)
- Criando uma biblioteca Python por onde começar?
- Qualidade do projeto e ferramentas que podem ajudar a garanti-la
- Gestão de versões, compatibilidade reversa e responsabilidades com a comunidade
- Cuidados com o PyPI
Durante o tutorial os partipantes vão poder colocar a mão na massa, criar o projeto, publicar no pypi (test environment)
OBS: Só terei disponivel o dia 9 portanto posso ministrar apenas um dos tutoriais propostos
Dynaconf - Ta Tranquilo! Ta Configurável! - Configurações dinâmicas para seu projeto Python
Cada vez que o IP do servidor de banco de dados muda voce precisa alterar em seu codigo fonte e fazer test, build, deploy?
E se o seu programa pudesse ler as configuracoes de um local dinamico como variaveis de ambiente e servidor de cache?
O Dynaconf automatiza esse processo! "from dynaconf import settings" e fique tranquilo e configuravel!
Embalando para Presente - Dicas de como empacotar e distribuir seus programas em Python
Ok então você criou um script legal ou um framework ou um software bacana e quer distribuir para a comunidade como ferramente Open Source?
Você sabe como fazer isso?
Como criar o setup.py?
Pra que serve o MANIFEST.in?
Como gerenciar as dependencias?
Versionar?
Como funciona o PyPI e como registrar seu software lá?
Como distribuir usando apenas o GitHub?
Algumas dicas e sugestões de como empacotar e distribuir Pacotes Python.
Python & 12 Factor Apps
Na era moderna, software é comumente entregue como um serviço: denominados web apps, ou software-como-serviço. A aplicação doze-fatores é uma metodologia para construir softwares-como-serviço que:
- Usam formatos declarativos para automatizar a configuração inicial, minimizar tempo e custo para novos desenvolvedores participarem do projeto;
- Tem um contrato claro com o sistema operacional que o suporta, oferecendo portabilidade máxima entre ambientes que o executem;
- São adequados para implantação em modernas plataformas em nuvem, evitando a necessidade por servidores e administração do sistema;
- Minimizam a divergência entre desenvolvimento e produção, permitindo a implantação contínua para máxima agilidade;
- E podem escalar sem significativas mudanças em ferramentas, arquiteturas, ou práticas de desenvolvimento.
A metodologia doze-fatores pode ser aplicada a aplicações escritas em qualquer linguagem de programação, e que utilizem qualquer combinação de serviços de suportes (banco de dados, filas, cache de memória, etc).
Nesta palestra pretendo falar superficialmente sobre os 12 fatores e mostrar uma solução para os itens de 1 a 4 utilizando a biblioteca dynaconf
I. Base de Código
Uma base de código com rastreamento utilizando controle de revisão, muitos deploys
II. Dependências
Declare e isole as dependências
III. Configurações
Armazene as configurações no ambiente
IV. Serviços de Apoio
Trate os serviços de apoio, como recursos ligados
Quokka CMS - Gerencie conteudo com MongoDB e Flask
Lightining Talk que foi feita no primeiro dia da PythonBrasil - Quokka CMS - Gerencie conteudo com MongoDb e Flask
Em 5 minutos mostrar o que é, como funciona, como criar modulos para o quokkaCMS
Quokka CMS - O que é, como funciona e como você pode colaborar!
Quokka é um gerenciador de conteúdo p/ criação de sites,portais,blogs,e-commerce entre outros aplicativos web voltados a qualquer tipo de conteúdo. Feito em Python, c/ Flask e MongoDB, é focado na facilidade de uso e desenvolvimento de modulos. Além disso o Quokka tem grande potencial para solução de intranet. É OpenSource e você pode ser um colaborador http://www.quokkaproject.org
Rust + Python
Rust é uma linguagem rápida, concorrente e segura e nessa palestra quero dar uma instrodução a programação com Rust e mostrar como Python pode se beneficiar da linguagem.
Rust ❤️ Python
Rust ❤️ Python
- Apresentar a linguagem Rust e suas vantagens
- Mostrar como é possivel estender Python criando funções em Rust