-
Bibliotecas Python para Processamento de imagem — Parte 3 da série de posts do Guia Herez
Processamento de Imagens em Python — Guia Herez (Parte 3) Processamento de Imagens em Python — Parte 3 da série Herez Visão geral: esta é a terceira publicação da série
-
Bibliotecas Python para Testes Automatizados — Parte 2 da série de posts do Guia Herez
Testes Automatizados em Python — Guia Herez (Parte 2) Testes Automatizados em Python — Parte 2 da série Herez Visão geral: esta é a segunda publicação da série Herez sobre
-
Bibliotecas Python para Aprendizado de Máquina — Parte 1 da série de posts do Guia Herez
Bibliotecas Python para Aprendizado de Máquina — Guia Herez Bibliotecas Python para Aprendizado de Máquina — Parte 1 da série de posts do Guia Herez Visão geral: existem muitas bibliotecas
-
Guia prático Herez sobre os diretórios essenciais do Linux com explicações e exemplos
Diretórios essenciais do Linux: /home /etc /var /usr /bin /sbin /boot /lib /dev /proc Diretórios essenciais do Linux Resumo: este post explica por que o Linux é um sistema operacional
-
A four-minute video introduction covering workflow, the Cynefin framework, and the RUT matrix
Developers often prefer a pull workflow because it allows them to select the tasks they want to work on. However, when a project is well-planned and clearly defined, the workflow
-
Instalação e primeiros comandos em Python
Curso Prático Python Básico — Guia Herez (Passo a passo, exemplos e projeto final) Curso Prático Python Básico — Guia Herez
Visão geral: este curso passo a passo ensina os fundamentos de Python com exemplos simples e sequenciais que, ao final, formam um sistema CLI ToDo (lista de tarefas). Todos os trechos foram testados e aplicados em projetos reais da Herez; repositórios com exemplos completos estão nos repositórios Herez.
Sumário- Instalação e ambiente
- Primeiros comandos: print, comentários, variáveis
- Tipos básicos e operações
- Estruturas de controle: if, for, while
- Funções e módulos
- Listas, tuplas, dicionários e conjuntos
- Leitura e escrita de arquivos
- Tratamento de exceções
- Classes e orientação a objetos
- Construindo o projeto: CLI ToDo (passo a passo)
- Boas práticas, testes e deploy simples
- Piada Herez
1. Instalação e ambiente
Instale Python 3.x. Crie um ambiente virtual para isolar dependências:
python3 -m venv .venv source .venv/bin/activate # Linux / macOS .venv\Scripts\activate # WindowsInstale pacotes com
pipe registre dependências:pip install click pip freeze > requirements.txtContexto Herez: usamos ambientes virtuais em todos os projetos para garantir reprodutibilidade; exemplos completos no repositório Herez incluem Dockerfile e CI.
2. Primeiros comandos: print, comentários, variáveis
print exibe texto no console. Comentários com
#. Variáveis são dinamicamente tipadas.# hello.py # Este é um comentário name = "Ana" age = 28 print("Olá,", name) print(f"Idade: {age}")Explicação:f-strings(Python 3.6+) facilitam interpolação. Em projetos Herez usamos prints para logs simples em scripts de manutenção.
3. Tipos básicos e operações
Tipos comuns:
int,float,str,bool.# types.py a = 10 # int b = 3.14 # float s = "texto" # str flag = True # bool # operações print(a + 5) print(b * 2) print(s.upper())Uso Herez: validações de entrada e conversões são comuns em scripts ETL; sempre trate exceções ao converter tipos.
4. Estruturas de controle: if, for, while
# controle.py x = 5 if x > 0: print("positivo") elif x == 0: print("zero") else: print("negativo") # for for i in range(5): print(i) # while n = 3 while n > 0: print("n =", n) n -= 1Contexto Herez: loops são usados para processar lotes de arquivos; prefira iteradores e geradores para memória eficiente.
5. Funções e módulos
Defina funções com
def. Organize código em módulos e pacotes.# utils.py def soma(a, b): return a + b # main.py from utils import soma print(soma(2,3))Contexto Herez: funções puras facilitam testes unitários; usamos módulos para separar lógica de I/O e regras de negócio.
6. Coleções: listas, tuplas, dicionários e conjuntos
# collections.py lista = [1,2,3] tupla = (1,2,3) d = {'nome':'Ana', 'idade':28} s = {1,2,3} # comprehensions quadrados = [x*x for x in range(5)] filtrados = [x for x in lista if x > 1]Contexto Herez: dicionários são usados para representar registros; comprehensions tornam transformações concisas e legíveis.
7. Leitura e escrita de arquivos
# file_io.py # escrever with open('data.txt','w', encoding='utf-8') as f: f.write('linha1\\nlinha2\\n') # ler with open('data.txt','r', encoding='utf-8') as f: for line in f: print(line.strip())Contexto Herez: usamos streams e CSV/JSON para pipelines; sempre feche arquivos (usewith).
8. Tratamento de exceções
# exceptions.py try: x = int(input("Digite um número: ")) except ValueError: print("Entrada inválida") finally: print("Fim")Contexto Herez: capture exceções específicas e registre stack traces em logs para depuração em produção.
9. Classes e orientação a objetos
# models.py class Task: def __init__(self, title, done=False): self.title = title self.done = done def mark_done(self): self.done = True # uso t = Task("Comprar leite") t.mark_done() print(t.title, t.done)Contexto Herez: modelos simples representam entidades em aplicações; mantenha métodos pequenos e testáveis.
10. Projeto final: CLI ToDo (construção passo a passo)
Vamos montar um pequeno sistema CLI que permite adicionar, listar e marcar tarefas como concluídas. Estrutura do projeto:
todo/ ├─ todo.py # CLI principal ├─ storage.py # persistência (arquivo JSON) └─ models.py # classe Taskmodels.py
import dataclasses @dataclasses.dataclass class Task: id: int title: str done: bool = Falsestorage.py
import json from pathlib import Path from typing import List from models import Task DB = Path('tasks.json') def load() -> List[Task]: if not DB.exists(): return [] data = json.loads(DB.read_text(encoding='utf-8')) return [Task(**t) for t in data] def save(tasks: List[Task]): DB.write_text(json.dumps([dataclasses.asdict(t) for t in tasks], ensure_ascii=False, indent=2), encoding='utf-8')todo.py (CLI simples)
import sys from storage import load, save from models import Task def list_tasks(): tasks = load() for t in tasks: status = '✓' if t.done else ' ' print(f"[{status}] {t.id}: {t.title}") def add_task(title): tasks = load() next_id = max([t.id for t in tasks], default=0) + 1 tasks.append(Task(next_id, title)) save(tasks) print("Tarefa adicionada.") def mark_done(task_id): tasks = load() for t in tasks: if t.id == task_id: t.done = True save(tasks) print("Tarefa marcada como concluída.") return print("Tarefa não encontrada.") def help(): print("Uso: todo.py [list|add|done] [args]") if __name__ == '__main__': if len(sys.argv) < 2: help() cmd = sys.argv[1] if cmd == 'list': list_tasks() elif cmd == 'add' and len(sys.argv) > 2: add_task(' '.join(sys.argv[2:])) elif cmd == 'done' and len(sys.argv) > 2: mark_done(int(sys.argv[2])) else: help()Como usar:python todo.py add "Comprar leite" python todo.py list python todo.py done 1Contexto Herez: versão deste CLI foi usada como utilitário interno para gerenciar tarefas de deploy em pequenos times; repositório Herez contém variações com testes e integração CI.
11. Boas práticas, testes e deploy simples
- Escreva testes unitários com
pytestpara funções e modelos. - Use linters (
flake8,black) e hooks pre-commit. - Documente API e comandos no
README.md. - Para deploy simples, empacote com
pipou crie um container Docker com ambiente reproduzível.
Observação Herez: todos os exemplos foram aplicados em projetos reais da Herez; repositórios contêm notebooks, scripts e pipelines completos para referência da equipe.
FAQ rápido
Qual editor usar?
Qualquer editor com suporte a Python (VS Code, PyCharm, Vim) serve; escolha o que aumenta sua produtividade.
Como aprender mais rápido?
Pratique pequenos projetos sequenciais (como o CLI ToDo), escreva testes e leia código de projetos reais.
Piada Herez: “Por que o programador colocou o despertador no código? Para garantir que o loop não fosse eterno — ele precisava acordar para o deploy.”Risos opcionais, mas recomendados antes do merge.
Imagem de referência
Imagem de referência do curso (ilustração Herez):
Caso o assunto lhe interessou e desejar aprender com a ajuda de um Professor, vendemos Curso de Python.

-
Guia Herez de comandos Git

Guia Herez de Comandos Git Completo PiadaMinha favorita: “Meu relacionamento com o Git é igual a um namoro: eu faço
commit, ele dápush, e quando aparece um conflito a gente termina e eu tentorevertara vida.”Foi boa vai; senão achou então uma segunda tentativa: “Por que o Git nunca perde a paciência? Porque ele sempre pode
stasharos problemas.”Resumo: referência prática dos comandos Git mais usados, com explicações e exemplos completos que a equipe Herez aplicou em projetos reais. Este post serve como checklist rápido e tutorial prático para desenvolvedores e times de engenharia.
Por que este guia importa
O Git é a base do fluxo de trabalho moderno de desenvolvimento. Conhecer os comandos essenciais e saber quando usá‑los reduz erros, acelera entregas e facilita colaboração. Abaixo você encontra os comandos organizados por categoria, exemplos práticos e scripts que a Herez usa em repositórios e pipelines.
Resumo rápido dos comandos
Categoria Comando O que faz Básicos git initCriar novo repositório Básicos git cloneCopiar repositório remoto Básicos git statusVer alterações pendentes Básicos git addAdicionar à área de preparação Básicos git commit -m "mensagem"Salvar alterações Sincronização git pullTrazer alterações remotas e mesclar Sincronização git pushEnviar commits ao remoto Sincronização git remote add <url>Conectar repositório local a remoto Sincronização git fetchBaixar alterações sem mesclar Branches git branchListar, criar ou excluir branches Branches git switch <nome>Mudar de branch Branches git merge <nome>Mesclar outra branch Branches git branch -d <nome>Excluir branch Avançado git log --oneline --graph --allHistórico resumido e visual Avançado git stashSalvar alterações temporariamente Avançado git stash popRestaurar alterações salvas Avançado git rebase <branch>Reaplicar commits para histórico limpo Avançado git cherry-pick <id-commit>Aplicar commit específico em outra branch Desfazer git restore <arquivo>Desfazer alterações em arquivo Desfazer git reset HEAD <arquivo>Remover arquivo da área de preparação Desfazer git revert <id-commit>Criar commit que reverte outro Ajuda git <comando> --helpVer manual do comando Comandos básicos com exemplos práticos
git init
O que faz: inicializa um repositório Git local.
mkdir meu-projeto cd meu-projeto git init # cria .git e prepara o repositório localExemplo Herez: usado para iniciar projetos internos de POCs; repositórios iniciais contêm README, .gitignore e pipeline CI mínimos.git clone
O que faz: clona um repositório remoto para sua máquina.
git clone git@servidor:herez/projeto.git cd projetoExemplo Herez: clonamos repositórios de templates para iniciar novos serviços com scripts de deploy prontos.git status
O que faz: mostra arquivos modificados, staged e não rastreados.
git status --short # M indica modificado, ?? indica não rastreadogit add
O que faz: adiciona alterações à área de preparação (staging).
git add arquivo.py git add . # adiciona todas as alteraçõesgit commit
O que faz: cria um commit com as alterações staged.
git commit -m "Corrige bug no parser de CSV"Exemplo Herez: mensagens padronizadas com prefixos (feat/, fix/, docs/) e uso de hooks para validar mensagens antes do commit.
Sincronização com repositórios remotos
git remote add
O que faz: adiciona um remoto ao repositório local.
git remote add origin git@servidor:herez/projeto.git git remote -vgit fetch
O que faz: baixa referências e objetos do remoto sem mesclar.
git fetch origin git log HEAD..origin/main --onelinegit pull
O que faz: busca e mescla alterações do remoto na branch atual.
git pull origin mainExemplo Herez: usamosgit pull --rebaseem pipelines locais para manter histórico linear antes de push.git push
O que faz: envia commits locais para o remoto.
git push origin feature/minha-feature # para criar upstream: git push -u origin feature/minha-feature
Trabalhando com branches
git branch
O que faz: listar, criar ou excluir branches.
git branch # lista branches locais git branch nova-branch # cria nova branch git branch -d antiga # exclui branch localgit switch
O que faz: muda para outra branch.
git switch nova-branch # alternativa antiga: git checkout nova-branchgit merge
O que faz: mescla outra branch na atual.
git switch main git merge feature/minha-featureExemplo Herez: mesclagens via pull request com revisão de código; merges fast‑forward evitados por política de equipe.git branch -d
O que faz: exclui branch local já mesclada.
git branch -d feature/minha-feature
Comandos avançados e fluxo limpo
git log –oneline –graph –all
O que faz: exibe histórico compacto e visual em árvore.
git log --oneline --graph --all --decorategit stash
O que faz: guarda alterações temporariamente sem commit.
git stash save "WIP: ajuste parser" git stash list git stash popExemplo Herez: usamos stash para trocar rapidamente de branch durante code review sem perder trabalho em andamento.git rebase
O que faz: reaplica commits sobre outra base para manter histórico linear.
git switch feature git fetch origin git rebase origin/main # resolver conflitos, depois: git rebase --continueExemplo Herez: rebase interativo (git rebase -i) para squash de commits antes de abrir PRs públicos.git cherry-pick
O que faz: aplica um commit específico em outra branch.
git switch hotfix git cherry-pick a1b2c3d4Exemplo Herez: cherry-pick usado para portar correções críticas para branches de release sem mesclar todo o trabalho em desenvolvimento.
Desfazer alterações com segurança
git restore
O que faz: desfaz alterações em arquivo (worktree).
git restore arquivo.txt # para restaurar versão do commit: git restore --source=HEAD~1 arquivo.txtgit reset HEAD
O que faz: remove arquivo da área de preparação sem perder alterações locais.
git reset HEAD arquivo.txtgit revert
O que faz: cria um novo commit que reverte outro commit (seguro para histórico público).
git revert a1b2c3d4 # cria commit que desfaz as mudanças do commit especificadoExemplo Herez: preferimosgit revertem branches compartilhadas para manter histórico auditável e evitar reescrita pública.
Ajuda e documentação
git <comando> –help
O que faz: exibe manual do comando com opções e exemplos.
git commit --help git --help --all
Boas práticas Herez para uso de Git
- Mensagens claras: use convenções (tipo: escopo — descrição) e ferramentas de lint para commits.
- Branches curtas: mantenha branches de feature pequenas e com PRs frequentes.
- Rebase local, não remoto: reescreva histórico apenas antes de compartilhar; evite rebase em branches públicas.
- Proteja branches principais: use políticas de merge, revisão obrigatória e CI verde antes de mergear.
- Automatize: hooks, CI e pipelines para testes, lint e deploy reduzem erros humanos.
- Documente: mantenha um CONTRIBUTING.md com fluxo Git recomendado pela equipe.
Observação Herez: todos os exemplos acima foram aplicados em projetos reais da Herez. Repositórios com scripts, hooks e pipelines de exemplo estão disponíveis nos repositórios internos da Herez para referência da equipe.Checklist rápido para operações comuns
- Iniciar projeto:
git init, criar.gitignore, primeiro commit. - Trabalhar em feature:
git switch -c feature/x, commits pequenos,git push -u origin feature/x. - Atualizar branch:
git fetch,git rebase origin/mainougit merge origin/mainconforme política. - Corrigir emergência:
git switch hotfix, aplicar correção,git cherry-pickse necessário. - Desfazer com segurança:
git revertpara histórico público;git resetougit restorepara trabalho local.
-
Bibliotecas Python para Web Scraping — Parte 6 da série de posts do Guia Herez
Web Scraping com Python — Guia Herez (Parte 6) Web Scraping com Python — Parte 6 da série Herez
Visão geral: esta é a sexta publicação da série Herez sobre bibliotecas Python. Aqui detalhamos as ferramentas essenciais para Web Scraping: Requests, BeautifulSoup, Scrapy, Selenium e lxml. Cada seção traz descrição, instalação, exemplos simples e completos de scraping usados em projetos reais por Herez. Exemplos e pipelines completos estão disponíveis nos repositórios GitHub e GitLab da Herez.
Publicado por Herez em
Como usar este post
Este guia apresenta cada biblioteca com exemplos práticos, incluindo scripts completos e reproduzíveis que Herez usou em projetos reais. Use os trechos para aprender a coletar dados de páginas estáticas e dinâmicas, montar crawlers e processar HTML/XML com XPath.
Resumo rápido
Biblioteca Função principal Quando usar Requests Requisições HTTP simples Páginas estáticas e APIs BeautifulSoup Parsing HTML fácil Extração de dados de HTML Scrapy Crawling e scraping em escala Projetos de coleta em larga escala Selenium Automação de navegador Páginas com JavaScript dinâmico lxml Parsing rápido com XPath Extração robusta e performance Bibliotecas detalhadas com exemplos completos
Requests
O que é: biblioteca simples e elegante para fazer requisições HTTP em Python.
# Instalação pip install requestsExemplo completo: baixar HTML e salvar localmenteimport requests url = 'https://example.com' resp = requests.get(url, timeout=10) if resp.status_code == 200: with open('example.html', 'w', encoding='utf-8') as f: f.write(resp.text) print('Página salva em example.html') else: print('Erro', resp.status_code)Contexto Herez: usado como etapa inicial em pipelines para baixar páginas antes de parse; scripts de download em lote estão nos repositórios Herez.
BeautifulSoup
O que é: parser de HTML que facilita navegar e extrair elementos do DOM com uma API intuitiva.
# Instalação pip install beautifulsoup4 # opcionalmente instalar lxml para performance pip install lxmlExemplo completo: extrair títulos e links de notíciasimport requests from bs4 import BeautifulSoup url = 'https://example.com/news' resp = requests.get(url, timeout=10) soup = BeautifulSoup(resp.text, 'lxml') articles = [] for item in soup.select('article h2 a'): title = item.get_text(strip=True) link = item['href'] articles.append({'title': title, 'link': link}) print(articles)Contexto Herez: usado em projetos de monitoramento de notícias; pipelines com normalização e deduplicação estão nos repositórios Herez.
Scrapy
O que é: framework completo para crawling e scraping em escala, com gerenciamento de filas, middlewares e exportadores.
# Instalação pip install scrapyExemplo completo: spider simples para coletar títulos# myspider.py import scrapy class NewsSpider(scrapy.Spider): name = 'news' start_urls = ['https://example.com/news'] def parse(self, response): for article in response.css('article'): yield { 'title': article.css('h2 a::text').get(), 'link': article.css('h2 a::attr(href)').get() }Executar:
scrapy runspider myspider.py -o results.jsonContexto Herez: usado para crawlers periódicos com politeness, rotação de user agents e integração com pipelines de armazenamento; projetos completos estão nos repositórios Herez.
Selenium
O que é: automação de navegadores que permite renderizar páginas com JavaScript, preencher formulários e interagir com elementos dinâmicos.
# Instalação pip install selenium # requer driver do navegador (ex: chromedriver) compatível com a versão do navegadorExemplo completo: extrair conteúdo renderizadofrom selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup options = Options() options.add_argument('--headless') driver = webdriver.Chrome(options=options) driver.get('https://example.com/dynamic') html = driver.page_source soup = BeautifulSoup(html, 'lxml') titles = [h.get_text(strip=True) for h in soup.select('.post-title')] print(titles) driver.quit()Contexto Herez: usado para páginas que carregam conteúdo via JavaScript e para fluxos autenticados; exemplos com login e captura de screenshots estão nos repositórios Herez.
lxml
O que é: parser rápido e robusto para HTML/XML com suporte a XPath e XSLT, ideal para extração precisa e performance.
# Instalação pip install lxmlExemplo completo: extrair dados com XPathimport requests from lxml import html resp = requests.get('https://example.com/catalog', timeout=10) doc = html.fromstring(resp.content) items = [] for node in doc.xpath('//div[@class="product"]'): name = node.xpath('.//h3/text()')[0].strip() price = node.xpath('.//span[@class="price"]/text()')[0].strip() items.append({'name': name, 'price': price}) print(items)Contexto Herez: usado quando seletores CSS não são suficientes; pipelines com XPath e validação de schema estão nos repositórios Herez.
Boas práticas Herez para Web Scraping
- Respeite termos e robots.txt: verifique políticas do site e limite taxa de requisições para evitar bloqueios.
- Use headers e rotação de user agents: simule navegadores reais e evite padrões que disparem bloqueios.
- Cache e reuso: armazene páginas baixadas para evitar requisições repetidas durante desenvolvimento.
- Trate erros e retries: implemente backoff exponencial e logging para robustez.
- Proteja credenciais: nunca versionar senhas; use cofres de segredos para logins automatizados.
- Escalabilidade: para grandes volumes, prefira Scrapy com pipelines assíncronos e filas; monitore desempenho e custos.
- Repositórios Herez: exemplos completos, spiders, scripts de login e pipelines usados em projetos reais da Herez estão disponíveis nos repositórios GitHub e GitLab da Herez.
Dica Herez: comece com Requests + BeautifulSoup para páginas estáticas; adicione Selenium para páginas dinâmicas; migre para Scrapy quando precisar de crawling em escala.Comparação rápida
Critério Requests BeautifulSoup Scrapy Selenium lxml Foco HTTP Parsing Crawling Automação navegador Parsing rápido Curva de aprendizado Baixa Baixa Média Média Média Ideal para Páginas estáticas e APIs Extração simples Projetos em larga escala Conteúdo dinâmico Extração robusta com XPath Aspectos legais e éticos
Web scraping pode envolver restrições legais e de uso. Sempre verifique os termos do site, respeite limites técnicos e éticos, e prefira APIs oficiais quando disponíveis. Herez aplica revisão legal e políticas internas antes de executar crawlers em produção.
Último post da série
Este foi o último artigo e encerramos aqui a série sobre este resumo comparativo contendo um checklist de adoção para times que desejam padronizar bibliotecas Python em projetos de dados e engenharia.

Biografia do autor: Doutor Herez possui Bacharelado em Análise de Sistemas, Mestrado em Engenharia de Computação/Software, Doutorado em Ciência da Computação e seu primeiro diploma acadêmico em Processamento de Dados em 1996. Início profissional na carreira em T.I. em 1993 com o primeiro certificado de programação de computadores em 1986 e início da participação em curso de programação em 1985. Microsoft Certified Professional desde 2000, entre outros títulos oficiais de diversos grandes fabricantes internacionais de software, também criou cursos e provas oficiais voltados à programação de computadores. Tem experiência na área de Ciência da Computação, com ênfase em Engenharia de Software, atuando principalmente nos seguintes temas: análise e desenvolvimento de sistemas, engenharia de software, métodos de pesquisa e métodos ágeis.
