-
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
-
Guia Herez de comandos Git
Guia Herez de Comandos Git Completo 😂 Piada Minha favorita: “Meu relacionamento com o Git é igual a um namoro: eu faço commit, ele dá push, e quando aparece um
-
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 para Desenvolvimento de jogos — Parte 5 da série de posts do Guia Herez
Desenvolvimento de Jogos em Python — Guia Herez (Parte 5) Desenvolvimento de Jogos em Python — Parte 5 da série Herez Visão geral: esta é a quinta publicação da série
-
Bibliotecas Python para Desenvolvimento Web — Parte 4 da série de posts do Guia Herez
Desenvolvimento Web em Python — Guia Herez Parte 4 Desenvolvimento Web em Python — Parte 4 da série Herez Visão geral: esta é a quarta publicação da série Herez sobre
-
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. Aqui abordamos ferramentas para testes automatizados: Splinter, Robot Framework, Behave, PyUnit (unittest) e PyTest. O objetivo é oferecer descrições práticas, comandos de instalação e cenários de uso para escolher a ferramenta certa para seu projeto.
Publicado por Herez em
Como usar este post
Cada seção descreve a biblioteca, por que usá‑la, comando de instalação e exemplos de casos de uso. Use este guia para comparar ferramentas e montar um fluxo de testes automatizados adequado ao seu time e produto.
Resumo rápido
Biblioteca Tipo Quando usar Splinter Automação de navegador (wrapper) Testes de UI simples; alternativa a Selenium Robot Framework Framework de automação baseado em palavras-chave Testes de aceitação, RPA e automação de alto nível Behave BDD (Behavior Driven Development) Especificações executáveis em Gherkin PyUnit / unittest Framework de testes padrão Testes unitários com estilo xUnit PyTest Framework de testes moderno Testes unitários, integração e parametrizados; extensível Bibliotecas detalhadas
Splinter
O que é: biblioteca que simplifica a automação de navegadores, oferecendo uma API de alto nível que pode usar drivers como Selenium, zope.testbrowser ou outros backends.
Por que usar: ideal para escrever testes de interface web com menos boilerplate que o Selenium puro; facilita ações comuns (clicar, preencher formulários, navegar) em testes de aceitação.
# Instalação pip install splinterCasos de uso: testes de fluxo de usuário em aplicações web, validação de formulários, smoke tests de UI e automação de tarefas simples no navegador.
Robot Framework
O que é: framework de automação baseado em palavras‑chave, orientado a testes de aceitação e automação de processos (RPA). Fornece sintaxe legível por humanos e integrações com bibliotecas externas.
Por que usar: excelente para equipes que preferem escrever casos de teste em formato tabular/keyword-driven; facilita colaboração entre desenvolvedores, QA e stakeholders não técnicos.
# Instalação pip install robotframeworkCasos de uso: testes de aceitação, automação de processos repetitivos, integração com Selenium para testes de UI e cenários de RPA.
Behave
O que é: framework para BDD (Behavior Driven Development) que usa a linguagem Gherkin para descrever comportamentos em cenários legíveis (Given/When/Then).
Por que usar: quando você quer alinhar requisitos e testes com stakeholders, transformando especificações em cenários executáveis que servem como documentação viva.
# Instalação pip install behaveCasos de uso: especificação e validação de requisitos, testes de aceitação automatizados e colaboração entre times de produto e QA.
PyUnit / unittest
O que é: implementação em Python do estilo xUnit, incluída na biblioteca padrão como
unittest(historicamente conhecida como PyUnit).Por que usar: disponível por padrão, com estrutura familiar (TestCase, setUp, tearDown) e compatibilidade com muitas ferramentas e runners.
# Uso básico (não requer instalação) python -m unittest discoverCasos de uso: testes unitários clássicos, integração com CI e projetos que preferem dependências mínimas e API xUnit tradicional.
PyTest
O que é: framework de testes moderno e amplamente adotado, conhecido por sintaxe simples, fixtures poderosas e ecossistema de plugins.
Por que usar: reduz boilerplate, suporta parametrização, fixtures reutilizáveis e integrações com ferramentas de cobertura e mocks; é frequentemente recomendado como primeira escolha para novos projetos Python.
# Instalação pip install pytestCasos de uso: testes unitários, testes de integração, testes parametrizados, TDD e pipelines de CI. PyTest é frequentemente escolhido por sua simplicidade e extensibilidade.
Comparação rápida
Critério Splinter Robot Framework Behave unittest (PyUnit) PyTest Foco Automação de navegador Keyword-driven / RPA BDD Unitário (xUnit) Unitário/Integração Curva de aprendizado Baixa Média Média Baixa Baixa Ideal para QA de UI Times multidisciplinares Alinhamento com produto Projetos padrão Projetos modernos e TDD Extensibilidade Média Alta Média Média Alta (plugins) Boas práticas para testes automatizados
- Separe testes por camadas: unitários, integração e aceitação.
- Use ambientes isolados e dados de teste controlados; evite dependências externas nos testes unitários.
- Automatize execução em CI e gere relatórios de cobertura e falhas.
- Prefira PyTest para novos projetos, mantendo compatibilidade com
unittestquando necessário. - Use Robot ou Behave quando stakeholders não técnicos precisarem ler ou escrever cenários de teste.
Dica Herez: comece com PyTest para criar uma base sólida; adicione Robot ou Behave apenas quando houver necessidade clara de testes de aceitação legíveis por não desenvolvedores.Próximo post da série
No próximo artigo cobriremos bibliotecas Python para Processamento de Imagens (Pillow, OpenCV, scikit-image), com exemplos práticos de pipelines de pré‑processamento e análise.

-
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 Python úteis para diferentes etapas do fluxo de trabalho de Machine Learning. Por isso esta publicação faz parte de uma série que agrupa bibliotecas por área: Aprendizado de Máquina, Desenvolvimento Web, Testes Automatizados, Processamento de Imagens, Web Scraping e Desenvolvimento de Jogos. Este é o primeiro post da série e foca nas bibliotecas essenciais para aprendizado de máquina.
Publicado por Herez em
Como usar este post
Este artigo apresenta cada biblioteca com uma breve descrição, motivos para usar, comandos de instalação e exemplos de casos de uso. Use-o como referência rápida ao montar ambientes, escolher ferramentas para prototipagem ou planejar pipelines de ML.
Resumo rápido
Biblioteca Função principal Quando usar NumPy Arrays N‑dimensionais e operações numéricas Base para cálculos e outras bibliotecas Pandas Manipulação de dados tabulares ETL, análise exploratória, feature engineering Matplotlib Plotagem 2D Gráficos personalizados e publicação Seaborn Visualização estatística de alto nível Exploração de dados e relatórios SciPy Rotinas científicas avançadas Otimização, integração, álgebra avançada scikit-learn Algoritmos clássicos de ML Modelos de baseline e pipelines TensorFlow Framework de deep learning escalável Produção, treinamento em larga escala Keras API de alto nível para redes neurais Prototipagem rápida de modelos PyTorch Framework de deep learning com execução dinâmica Pesquisa e modelos customizados Theano Compilador de expressões matemáticas (histórico) Legado e compreensão histórica Bibliotecas detalhadas
NumPy
O que é: biblioteca fundamental para computação numérica em Python. Fornece o tipo
ndarraye operações vetorizadas de alto desempenho.Por que usar: base para Pandas, SciPy e muitos frameworks de ML; substitui loops Python por operações vetorizadas, acelerando cálculos.
# Instalação pip install numpyCasos de uso: álgebra linear, manipulação de tensores simples, geração de dados sintéticos e operações matriciais em pipelines de pré‑processamento.
Pandas
O que é: biblioteca para manipulação e análise de dados tabulares com estruturas
DataFrameeSeries.# Instalação pip install pandasCasos de uso: ETL, análise exploratória (EDA), tratamento de valores ausentes, criação de features e integração com scikit‑learn.
Matplotlib
O que é: biblioteca clássica de plotagem 2D; altamente configurável e a base para muitas outras bibliotecas de visualização.
# Instalação pip install matplotlibSeaborn
O que é: camada de alto nível sobre Matplotlib para visualizações estatísticas com estética pronta.
# Instalação pip install seabornSciPy
O que é: conjunto de algoritmos científicos construído sobre NumPy, incluindo otimização, integração, interpolação, álgebra linear avançada e estatística.
# Instalação pip install scipyscikit-learn
O que é: biblioteca padrão para algoritmos clássicos de machine learning: regressão, classificação, clustering, redução de dimensionalidade e pipelines.
# Instalação pip install scikit-learnTensorFlow
O que é: framework de deep learning escalável, com suporte a CPU, GPU e TPU, e um ecossistema para produção.
# Instalação pip install tensorflowKeras
O que é: API de alto nível para construção e treino de redes neurais; atualmente integrada ao TensorFlow como
tf.keras.# Instalação (opcional se usar tf.keras) pip install kerasPyTorch
O que é: framework de deep learning com execução dinâmica (eager execution), muito usado em pesquisa e com forte comunidade.
# Instalação pip install torch torchvisionTheano
O que é: biblioteca histórica para definição e otimização de expressões matemáticas que geram código eficiente para CPU/GPU.
# Instalação pip install Theano
Como escolher a combinação certa
- Preparação de dados: NumPy + Pandas + SciPy.
- Visualização: Matplotlib para controle fino; Seaborn para análises estatísticas rápidas.
- Modelos clássicos: scikit‑learn para protótipos e pipelines.
- Deep learning: TensorFlow/Keras para produção; PyTorch para pesquisa e experimentação.
Boas práticas
- Use ambientes virtuais (
venv,conda) para isolar dependências. - Documente versões das bibliotecas (arquivo
requirements.txtouenvironment.yml) para reprodutibilidade. - Ao usar GPU, verifique compatibilidade entre versões de CUDA/cuDNN e as bibliotecas (TensorFlow/PyTorch).
- Combine bibliotecas: Pandas para ETL, scikit‑learn para baseline, e TensorFlow/PyTorch para modelos complexos.
Dica Herez: comece com um pipeline simples (Pandas → scikit‑learn) para validar hipóteses antes de migrar para deep learning.Próximo post da série
No próximo artigo cobriremos bibliotecas Python para Testes Automatizados (Splinter, Robot, Behave, PyUnit e PyTest), com comparações práticas e cenários de uso. Veja o próximo post.

-
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 baseado em arquivos e detalha a função, o conteúdo típico e as melhores práticas para os diretórios
/home,/etc,/var,/usr,/bin,/sbin,/boot,/lib,/deve/proc.Importância da hierarquia de arquivos no Linux
Linux é um sistema operacional baseado em arquivos: tudo — desde dispositivos e processos até configurações e dados — é representado por arquivos organizados em uma hierarquia que começa na raiz
/. Essa padronização facilita administração, segurança, backup e interoperabilidade entre distribuições, seguindo convenções como o Filesystem Hierarchy Standard.
Visão geral rápida
Diretório Finalidade Conteúdo típico Quem usa / Ponto de montagem raiz Estrutura do sistema Sistema /home Diretórios pessoais Arquivos e configurações do usuário Usuários /etc Configurações do sistema Arquivos de configuração em texto Administradores /var Dados variáveis Logs; spool; cache Serviços /usr Programas e dados de usuário /usr/bin; /usr/lib; /usr/share Usuários e sistema /bin Binários essenciais Comandos básicos como ls, cp Todos /sbin Binários administrativos Ferramentas de manutenção Root /boot Arquivos de inicialização Kernel; initramfs; bootloader Sistema/bootloader /lib Bibliotecas essenciais Bibliotecas compartilhadas Sistema /dev Arquivos de dispositivo Discos; terminais; interfaces Kernel e processos /proc Informações do kernel /proc/cpuinfo; /proc/<pid> Ferramentas e administradores Descrição detalhada dos diretórios
/
Descrição: raiz do sistema; ponto de montagem principal onde todos os outros diretórios residem. Montagens adicionais (discos, partições) são anexadas sob a hierarquia a partir daqui.
/home
Finalidade: armazenar os diretórios pessoais dos usuários. Cada usuário normalmente tem um diretório como
/home/usuariocom documentos, configurações de aplicações e dados pessoais. Manter/homeem partição separada facilita reinstalações sem perda de dados./etc
Finalidade: contém arquivos de configuração do sistema e dos serviços instalados. São arquivos de texto que definem comportamento de rede, contas, serviços e scripts de inicialização; alterações aqui afetam o sistema globalmente.
/var
Finalidade: destinado a dados que mudam com o tempo, como logs, filas de impressão, caches e spools de e-mail. Serviços escrevem continuamente em
/var, por isso é comum monitorar e rotacionar logs para evitar esgotamento de disco./usr
Finalidade: abriga programas, bibliotecas e documentação que não são essenciais para a inicialização mínima do sistema. Subdiretórios comuns incluem
/usr/bin,/usr/libe/usr/share. Em ambientes gerenciados,/usrpode ser montado como somente leitura para segurança e consistência./bin
Finalidade: contém binários essenciais necessários para todos os usuários e para recuperação do sistema, como
ls,cpebash. Esses comandos devem estar disponíveis mesmo em modo de manutenção./sbin
Finalidade: contém binários administrativos usados para manutenção e administração do sistema, como
fsck,reboote utilitários de rede. Normalmente requer privilégios de root./boot
Finalidade: armazena arquivos necessários para a inicialização do sistema, incluindo imagens do kernel, initramfs e arquivos do bootloader (por exemplo, GRUB). Problemas em
/bootpodem impedir a inicialização do sistema./lib
Finalidade: contém bibliotecas compartilhadas usadas por binários em
/bine/sbin, como alibc. Em sistemas 64 bits existe também/lib64. Sem essas bibliotecas, executáveis essenciais não funcionam./dev
Finalidade: diretório de dispositivos que expõe hardware e interfaces do kernel como arquivos especiais de bloco e caractere. Exemplos incluem discos (
/dev/sda) e terminais (/dev/tty). A maioria dos arquivos em/devé gerada dinamicamente pelo kernel ou por udev./proc
Finalidade: sistema de arquivos virtual que fornece informações em tempo real sobre o kernel e processos, como
/proc/cpuinfoe/proc/<pid>. Não contém dados persistentes em disco; é uma interface para consultar e, em alguns casos, ajustar parâmetros do kernel.
Boas práticas e recomendações
- Particionamento: separar
/home,/vare/bootem partições distintas melhora recuperação e segurança. - Rotação de logs: configure
logrotatepara evitar que/varencha com logs. - Gerenciamento de pacotes: evite editar diretamente arquivos em
/bine/lib; use o gerenciador de pacotes da distribuição para manter consistência. - Monitoramento: monitore uso de disco e integridade de
/boote/varpara prevenir falhas de inicialização e interrupções de serviço.
Dica rápida: antes de reinstalar o sistema, faça backup de/homee dos arquivos de configuração em/etcpara preservar dados e personalizações.Dicas
Conhecer a função de cada diretório torna a administração do Linux mais eficiente: procure configurações em
/etc, dados variáveis em/var, binários essenciais em/bine/sbin, e informações do kernel em/proc. A hierarquia baseada em arquivos torna o sistema previsível, modular e mais fácil de manter.
Diretórios essenciais do Linux — Guia Herez completo e prático Aprofundando o conhecimento sobre a hierarquia de Diretórios do Linux
Resumo: Guia Herez com explicações, exemplos práticos, comandos úteis e boas práticas para os diretórios essenciais do Linux. Ideal para administradores, desenvolvedores e profissionais de infraestrutura.
SumárioPor que a hierarquia importa
Organizar arquivos em diretórios padronizados torna sistemas previsíveis, facilita automação, backups e segurança. Seguir convenções internas da equipe e padrões de mercado reduz tempo de investigação quando algo falha.
Piada curta: se o Linux fosse uma casa,
/etcseria o manual,/homeos quartos e/proca câmera que conta quantas vezes você abriu a geladeira.Visão geral rápida
Diretório Finalidade Exemplo de uso prático / Raiz do sistema Montagens e pontos de recuperação /home Dados pessoais Perfis, chaves SSH, dotfiles /etc Configurações do sistema systemd, rede, serviços /var Dados variáveis logs, caches, bancos locais /usr Programas e dados não essenciais /usr/bin, /usr/share /bin Binários essenciais ls, cp, bash /sbin Binários administrativos fsck, reboot /boot Arquivos de inicialização kernel, initramfs, grub /lib Bibliotecas essenciais libc, módulos compartilhados /dev Arquivos de dispositivo discos, terminais, /dev/null /proc Informações do kernel /proc/cpuinfo, /proc/<pid> Descrição detalhada e exemplos de finalidade
/
Finalidade: raiz do sistema; ponto de montagem principal. Mantenha a raiz enxuta para facilitar snapshots e restaurações.
- Usar partições separadas para
/home,/vare/boot. - Evitar armazenar grandes dados temporários diretamente em
/.
/home
Finalidade: diretórios pessoais dos usuários.
- Armazenar dotfiles e chaves:
~/.ssh,~/.config. - Aplicar quotas para controlar uso de disco em ambientes multiusuário.
- Montar
/homeem partição separada para preservar dados em reinstalações.
/etc
Finalidade: arquivos de configuração do sistema e serviços.
- Versionar arquivos críticos do
/etcem repositório interno para auditoria e rollback. - Exemplos:
/etc/ssh/sshd_config,/etc/fstab,/etc/systemd/system.
/var
Finalidade: dados que mudam com o tempo.
- Logs:
/var/log— configurelogrotate. - Dados de serviços:
/var/lib/mysql,/var/lib/docker. - Cache:
/var/cache— limpar periodicamente para liberar espaço.
/usr
Finalidade: programas, bibliotecas e documentação que não são essenciais para a inicialização mínima.
- Instalar software compilado em
/usr/localpara evitar conflitos com o gerenciador de pacotes. - Montar
/usrcomo somente leitura em ambientes imutáveis para segurança.
/bin e /sbin
Finalidade: binários essenciais e administrativos.
/bin: comandos usados por todos os usuários e scripts de inicialização./sbin: ferramentas de administração que normalmente requerem root.
/boot
Finalidade: arquivos necessários para inicialização do sistema.
- Gerenciar kernels e initramfs; remover kernels antigos com cuidado.
- Verificar espaço em
/bootantes de atualizações de kernel.
/lib e /lib64
Finalidade: bibliotecas compartilhadas essenciais.
- Não remova arquivos manualmente; use o gerenciador de pacotes.
/dev
Finalidade: arquivos de dispositivo que representam hardware e interfaces do kernel.
- Discos:
/dev/sda,/dev/nvme0n1. - Dispositivos especiais:
/dev/null,/dev/loop0.
/proc
Finalidade: sistema de arquivos virtual que expõe informações do kernel e processos em tempo real.
- Consultar status do sistema:
/proc/cpuinfo,/proc/meminfo. - Ajustar parâmetros do kernel temporariamente via
/proc/sysousysctl.
Exemplos práticos com comandos
Trechos de comandos que ilustram operações comuns relacionadas aos diretórios.
Montar /home em partição separada
sudo mkfs.ext4 /dev/sdb1 sudo mkdir -p /mnt/newhome sudo mount /dev/sdb1 /mnt/newhome sudo rsync -a /home/ /mnt/newhome/ # editar /etc/fstab com UUID para montar em /home no bootVer uso de disco e localizar arquivos grandes
df -h / du -sh /var/log/* sudo find / -type f -size +100M -exec ls -lh {} \;Rotacionar logs manualmente
sudo logrotate -f /etc/logrotate.conf journalctl --vacuum-size=200MConsultar informações do kernel via /proc
cat /proc/cpuinfo cat /proc/meminfo sudo sysctl -w net.ipv4.ip_forward=1Recuperação com chroot
sudo mount /dev/sda1 /mnt for d in dev proc sys; do sudo mount --bind /$d /mnt/$d; done sudo chroot /mnt /bin/bash # executar fsck, atualizar initramfs, reinstalar bootloaderBoas práticas Herez
- Particione conforme carga:
/home,/var,/bootem discos separados quando necessário. - Automatize backups de
/homee/etce teste restaurações regularmente. - Use
logrotatee monitore métricas de disco com alertas. - Evite editar binários e bibliotecas manualmente; prefira pacotes e repositórios internos.
- Documente políticas de montagem e permissões no repositório de operações da equipe.
Checklist Herez: backup de/homee/etc; limpar kernels antigos; configurarlogrotate; monitorar/vare/boot.Perguntas frequentes
Onde devo instalar software compilado manualmente
Coloque em
/usr/localpara evitar conflitos com o gerenciador de pacotes da distribuição.Devo montar /usr como somente leitura
Em ambientes imutáveis e de produção, montar
/usrcomo somente leitura aumenta segurança e previsibilidade, desde que atualizações sejam gerenciadas por processos controlados.Como evitar que /var encha
Configure rotação de logs, limpe caches antigos e monitore uso com alertas. Para serviços que geram muitos dados, use partições dedicadas ou armazenamento em rede.
Conclusão
Conhecer a finalidade de cada diretório torna a administração do Linux mais eficiente e segura. Siga as práticas recomendadas, documente decisões de particionamento e automatize backups e monitoramento. Quando algo misterioso aparecer no sistema, antes de culpar o kernel, verifique se alguém não deixou as meias no
/. - Particionamento: separar
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.
