Pular para o conteúdo principal

Projeto Mínimo em FastAPI

Este artigo mostra a criação de uma projeto mínimo em FastAPI, basicamente um "Hello World" bem robusto. A ideia é começar mesmo o menor projeto FastAPI da melhor maneira possível, com uma estrutura adequada, usando ambiente virtual, linting de código, integração contínua (GitHub Actions), controle de versão e testes automatizados. A partir daí, você pode expandir o projeto do jeito que achar melhor, usando-o para serverless, ciência de dados, REST API, ensino de programação, outros gabaritos etc.

A principal diferença em relação a outros gabaritos é que este possui apenas o menor conjunto possível de funcionalidades de acordo com boas práticas de engenharia de software.

Leia mais…

Gerenciamento de Versões, Ambientes Virtuais e Dependências com Pyenv e Poetry

Quem é desenvolvedor de software sempre tem vários projetos no computador usando diferentes linguagens, versões dessas linguagens, bibliotecas e ferramentas. Para que um projeto não interfira no outro, é importante que sejam isolados de alguma forma. No caso de projetos Python, vamos precisar de ferramentas que gerenciem versões do Python, ambientes virtuais e dependências de projeto. Existem várias opções, mas vamos nos concentrar em duas:

  1. pyenv gerencia diferentes versões do Python na mesma máquina
  2. poetry gerencia ambientes virtuais e as dependências do projeto dentro desses ambientes virtuais.

Leia mais…

Lançamento do rst2html5 v2.0

Eu acabo de lançar a versão 2.0 do projeto rst2html5!

rst2html5 é um projeto que transforma documentos em restructuredText para HTML5.

restructuredText é um formato bastante utilizado na documentação de projetos em Python e também em geradores de sites estáticos (blog) tais como Nikola e Pelican.

Houve várias alterações nesta nova versão, a maioria relacionada a atualizações nas tecnologias usadas no projeto:

  1. Fim do suporte a versões anteriores ao Python 3.6
  2. Solução definitiva para o conflito com a instalação do docutils. Uma solução bem engenhosa, diga-se de passagem. Com isso, o módulo rst2html5_ foi renomeado de volta para rst2html5 mas, de quebra, a importação de rst2html5_.HTML5Writer ainda funciona. Há uma seção na documentação a respeito dessa implementação (link).
  3. Criação de novo papel rst :abbr:, que transforma uma entrada do tipo :abbr:`SAP (Single-Page Application)` em uma saída <abbr title="Single-Page Application">SPA</abbr>
  4. Nova seção no README explicando como usar o rst2html5 programaticamente
  5. Melhora a geração da subseção <figcaption>
  6. Melhora o processamento dos atributos scale, height, width e alt da diretiva image.
  7. Adiciona Type Annotations ao código do projeto
  8. Adiciona análise estática do código (linting) ao projeto
  9. Substitui o framework de teste de nose para pytest
  10. Mudança do gerenciador de dependências de Pipenv para Poetry
  11. Instalação do pacote no PyPi (Python Package Index) agora é feita pelo Poetry ao invés do setup.py.

Consulte a página do projeto do rst2html5 para ver exemplos de uso e aplicação.

Programe pelo Navegador com Code Lab

O projeto Code Lab permite programar diretamente pelo navegador, sem nenhuma outra dependência externa. É interessante para os casos em que se quer fazer um experimento rápido mas não há um computador com a linguagem instalada e configurada por perto.

Esse projeto foi feito originalmente como uma prova de conceito e também ajudar meus alunos a usarem diferentes linguagens de programação sem a necessidade de instalar nada na máquina deles.

Leia mais…

Cursos Gratuitos de Git, Mercurial e Subversion

Estão disponíveis cursos completos e gratuitos de Git, Mercurial, Subversion e Controle de Mudança no canal da Pronus no Youtube. Eu condensei nestes cursos grande parte dos meus anos de experiência em consultoria e treinamento em Gerência de Configuração de Software. Como eu agora trabalho com desenvolvimento Web, achei melhor disponibilizar gratuitamente esses vídeos para que este conhecimento não fique perdido e possa ser útil a quem precisar.

O diferencial desses cursos é que eles vão muito além do funcionamento das ferramentas e apresentam uma base teórica de controle de versão e de mudança. O conteúdo do curso do Git, por exemplo, contém os seguintes tópicos:

Programa do Curso de Git
Início Tópico
00:00:00​ O que é gerência de configuração de software?
00:07:55​ Repositório e Diretório de Trabalho
00:15:39​ Fluxo de Trabalho Individual
00:17:21​ Instalação do Windows Subsystem for Linux (WSL)
00:20:31​ Instalação do Git
00:22:47​ Configuração do Git
00:26:28​ Operações Básicas do Git - Parte 1
00:30:40​ Operações Básicas do Git - Parte 2
00:35:42​ Operações Básicas do Git - Parte 3
00:37:56​ Ignorando Arquivos no Diretório de Trabalho
00:44:08​ Ignorando Arquivos no Git
00:48:01​ Revertendo Alterações pela Linha de Comando
00:59:37​ Revertendo Alterações pela Interface Gráfica
01:06:22​ Controle de Versão Centralizado x Distribuído - Parte 1
01:12:32​ Controle de Versão Centralizado x Distribuído - Parte 2
01:18:17​ Topologias de Controle de Versão Distribuído no Git - Configuração do Servidor
01:26:52​ Topologia Peer-to-Peer no Git
01:30:01​ Topologia Cliente-Servidor no Git
01:32:52​ Topologia Fork-Pull no Git
01:36:06​ Controle de Concorrência - Parte 1 - Travamento
01:41:57​ Controle de Concorrência - Parte 2 - Mesclagem
01:52:03​ Controle de Concorrência - Parte 3 - Ramos Individuais
02:02:25​ Revisão dos Mecanismos de Controle de Concorrência
02:04:34​ Demonstração da Mesclagem
02:13:15​ Demonstração do Rebase
02:20:57​ Fluxo de Trabalho em Equipe
02:22:45​ Variações de Projeto - Parte 1 - Ramos
02:27:15​ Variações de Projeto - Parte 2 - Ramo Principal e Dedicado
02:31:08​ Variações de Projeto - Parte 3 - Etiquetas, Ramo de Manutenção e Ramo Estável
02:42:27​ Variações de Projeto - Parte 4 - Ramos Individuais
02:44:09​ Revisão dos Conceitos de Variação de Projeto
02:48:22​ Como Funcionam Ramos no Git?

O curso de Mercurial, que é a ferramenta de controle de versão que eu mais gosto e uso em todos os meus projetos pessoais, segue a mesma linha.

E pra quem é da velha guarda, há o curso de Subversion. Ministrei esse curso muitas vezes na época que o Subversion era o mais popular.

12 Fatores na Construção de um Aplicativo Web

The Twelve-Factor App é um conjunto de recomendações muito popular para desenvolvimento de aplicações web, que é resultado de anos de experiência do pessoal da Heroku na administração de centenas de milhares de aplicações na forma de software-como-serviço.

Os 12 fatores é um conjunto de soluções conceituais que visa tornar as aplicações mais portáveis, escaláveis e fáceis de serem desenvolvidas e implantadas. Pode ser aplicado a projetos escritos em qualquer linguagem de programação.

Leia mais…

Qual a melhor ferramenta de controle de versão: Subversion, Git ou Mercurial?

As ferramentas mais interessantes atualmente de controle de versão são o Subversion, Git e Mercurial. Se você ainda não escolheu uma, ficará feliz em saber que existe sim uma solução simples e eficaz dependendo do perfil da equipe e das necessidades do projeto. A surpresa está em saber que a melhor opção certamente será o Subversion ou o Mercurial, mas dificilmente o Git. Vamos analisar os porquês neste artigo.

Leia mais…

Por que o Facebook escolheu o Mercurial e não o Git?

Nem todo mundo sabe, mas o Facebook usa o Mercurial como controle de versão desde 2013. Antes, usou o Subversion e depois tentou o Git. Mas como o Git não deu conta do volume de código do seu repositório monolítico, resolveram investir no Mercurial e deu muito certo! Desde então, o Facebook é um grande colaborador do Mercurial, contribuindo com inúmeras melhorias ao projeto. Também são grandes colaboradores o Google e o Mozilla (Firefox).

Essa é a versão resumida da história. Mas o que aconteceu exatamente? Quais foram as limitações do Git que fizeram que fosse preterido em relação ao Mercurial? Vamos analisar esses pontos no artigo.

Leia mais…

Tipos de Ramos do Controle de Versão

Um ramo é uma linha diferente na evolução que forma uma variação isolada e controlada do projeto.

Ramos resolvem vários problemas:

  • Permitem a execução simultânea de atividades diferentes e incompatíveis (ex.: codificação, teste, manutenção)
  • Organizam o esforço de implementação por finalidade, equipe, risco, restrição etc.
  • Isolam implementações arriscadas das que são certas e rápidas.

Se usada corretamente, a ramificação produz uma estrutura que consegue absorver todas as mudanças no projeto de maneira ordenada. Desde as emergenciais, que precisam ser atendidas com urgências e postas em produção, até alterações incertas, que podem se mostrar viáveis ou não com o tempo.

Leia mais…