• 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 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
    NumPyArrays N‑dimensionais e operações numéricasBase para cálculos e outras bibliotecas
    PandasManipulação de dados tabularesETL, análise exploratória, feature engineering
    MatplotlibPlotagem 2DGráficos personalizados e publicação
    SeabornVisualização estatística de alto nívelExploração de dados e relatórios
    SciPyRotinas científicas avançadasOtimização, integração, álgebra avançada
    scikit-learnAlgoritmos clássicos de MLModelos de baseline e pipelines
    TensorFlowFramework de deep learning escalávelProdução, treinamento em larga escala
    KerasAPI de alto nível para redes neuraisPrototipagem rápida de modelos
    PyTorchFramework de deep learning com execução dinâmicaPesquisa e modelos customizados
    TheanoCompilador 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 ndarray e 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 numpy
    

    Casos 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 DataFrame e Series.

    # Instalação
    pip install pandas
    

    Casos 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 matplotlib
    

    Seaborn

    O que é: camada de alto nível sobre Matplotlib para visualizações estatísticas com estética pronta.

    # Instalação
    pip install seaborn
    

    SciPy

    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 scipy
    

    scikit-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-learn
    

    TensorFlow

    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 tensorflow
    

    Keras

    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 keras
    

    PyTorch

    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 torchvision
    

    Theano

    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.txt ou environment.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. .

    Excerpt: Primeiro post da série Herez sobre bibliotecas Python para aprendizado de máquina — guia prático para NumPy, Pandas, Matplotlib, Seaborn, SciPy, scikit‑learn, TensorFlow, Keras, PyTorch e Theano.

    Tags: Python; aprendizado de máquina; NumPy; Pandas; TensorFlow

  • 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, /dev e /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 raizEstrutura do sistemaSistema
    /homeDiretórios pessoaisArquivos e configurações do usuárioUsuários
    /etcConfigurações do sistemaArquivos de configuração em textoAdministradores
    /varDados variáveisLogs; spool; cacheServiços
    /usrProgramas e dados de usuário/usr/bin; /usr/lib; /usr/shareUsuários e sistema
    /binBinários essenciaisComandos básicos como ls, cpTodos
    /sbinBinários administrativosFerramentas de manutençãoRoot
    /bootArquivos de inicializaçãoKernel; initramfs; bootloaderSistema/bootloader
    /libBibliotecas essenciaisBibliotecas compartilhadasSistema
    /devArquivos de dispositivoDiscos; terminais; interfacesKernel e processos
    /procInformaçõ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/usuario com documentos, configurações de aplicações e dados pessoais. Manter /home em 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/lib e /usr/share. Em ambientes gerenciados, /usr pode 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, cp e bash. 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, reboot e 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 /boot podem impedir a inicialização do sistema.

    /lib

    Finalidade: contém bibliotecas compartilhadas usadas por binários em /bin e /sbin, como a libc. 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/cpuinfo e /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, /var e /boot em partições distintas melhora recuperação e segurança.
    • Rotação de logs: configure logrotate para evitar que /var encha com logs.
    • Gerenciamento de pacotes: evite editar diretamente arquivos em /bin e /lib; use o gerenciador de pacotes da distribuição para manter consistência.
    • Monitoramento: monitore uso de disco e integridade de /boot e /var para prevenir falhas de inicialização e interrupções de serviço.
    Dica rápida: antes de reinstalar o sistema, faça backup de /home e dos arquivos de configuração em /etc para 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 /bin e /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.

    Excerpt: Guia prático dos diretórios essenciais do Linux com explicações, exemplos e boas práticas para administradores e usuários.

    Tags: Linux, diretórios, FHS, administração, sysadmin

    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.

    Por 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, /etc seria o manual, /home os quartos e /proc a 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 sistemaMontagens e pontos de recuperação
    /homeDados pessoaisPerfis, chaves SSH, dotfiles
    /etcConfigurações do sistemasystemd, rede, serviços
    /varDados variáveislogs, caches, bancos locais
    /usrProgramas e dados não essenciais/usr/bin, /usr/share
    /binBinários essenciaisls, cp, bash
    /sbinBinários administrativosfsck, reboot
    /bootArquivos de inicializaçãokernel, initramfs, grub
    /libBibliotecas essenciaislibc, módulos compartilhados
    /devArquivos de dispositivodiscos, terminais, /dev/null
    /procInformaçõ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, /var e /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 /home em 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 /etc em 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 — configure logrotate.
    • 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/local para evitar conflitos com o gerenciador de pacotes.
    • Montar /usr como 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 /boot antes 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/sys ou sysctl.

    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 boot

    Ver 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=200M

    Consultar informações do kernel via /proc

    cat /proc/cpuinfo
    cat /proc/meminfo
    sudo sysctl -w net.ipv4.ip_forward=1

    Recuperaçã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 bootloader

    Boas práticas Herez

    • Particione conforme carga: /home, /var, /boot em discos separados quando necessário.
    • Automatize backups de /home e /etc e teste restaurações regularmente.
    • Use logrotate e 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 /home e /etc; limpar kernels antigos; configurar logrotate; monitorar /var e /boot.

    Perguntas frequentes

    Onde devo instalar software compilado manualmente

    Coloque em /usr/local para 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 /usr como 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 /.

    Excerpt: Guia Herez dos diretórios essenciais do Linux com explicações, exemplos práticos, comandos e boas práticas para administradores e desenvolvedores.

    Tags: Linux; diretórios; FHS; administração; sysadmin; Herez

  • 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 tends to become push-based, making it difficult for developers to make those choices. This situation highlights a common trade-off between agile methods and structured planning. The Cynefin framework can assist in determining which aspects of a project should be approached with agility and which should follow a more structured plan. Additionally, when prioritizing tasks within a project, a RUT matrix can be used to assess the relevance, urgency, and potential risks of items that are not addressed immediately.

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.