Profile

Bruno Rocha @rochacbruno


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



  1. Hello Flask: Introdução ao desenvolvimento web com Flask

  2. Flask patterns: Estruturando aplicações Flask

  3. Plug & Use: extensões essenciais para iniciar seu projeto.

  4. Magic(app)Criando Extensões para o Flask

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

Módulos Python com Rust

Criação de módulos Python Rust


http://bit.ly/modulospythoncomrust

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