SQL da Semana #02 — FILTER: agregações condicionais mais claras

Em relatórios SQL, é comum precisarmos calcular diferentes totais a partir do mesmo conjunto de dados. Imagine uma tabela de pedidos com a seguinte estrutura: CREATE TABLE pedidos ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, cliente_id bigint NOT NULL, status text NOT NULL, valor numeric(12, 2) NOT NULL, criado_em timestamp NOT NULL DEFAULT current_timestamp ); Queremos apresentar, em uma única consulta: quantidade total de pedidos; pedidos pagos; pedidos pendentes; pedidos cancelados; valor total dos pedidos pagos. A solução tradicional com CASE Uma forma comum de resolver o problema é colocar expressões CASE dentro das funções de agregação: ...

23/07/2026 · 4 min · 704 words · Dirlei Friedrich

Como organizo laboratórios técnicos para aprender, praticar e publicar

Durante muito tempo, estudar uma tecnologia significava assistir a aulas, realizar alguns exercícios e, eventualmente, guardar pequenos exemplos em uma pasta que dificilmente seria consultada novamente. Esse formato ainda pode ser útil, mas comecei a perceber que ele não era suficiente para os meus objetivos atuais. Eu não queria apenas concluir cursos ou acumular anotações. Precisava construir evidências concretas da minha evolução técnica, principalmente nas áreas que passaram a fazer parte do meu posicionamento profissional: PostgreSQL, Database Reliability, automação, DevOps, Engenharia de Software e modernização do desenvolvimento no ERP Protheus. ...

22/07/2026 · 6 min · 1199 words · Dirlei Friedrich

De uma ideia abandonada a um laboratório de Engenharia de Software com Python

Alguns projetos começam com um planejamento detalhado. Outros surgem de uma necessidade simples, recebem algumas linhas de código e acabam esquecidos em algum repositório. O Media Transcriber se encaixa melhor no segundo caso. Há algum tempo, criei um pequeno projeto chamado mp4-audio-transcriber. A ideia era relativamente simples: receber um arquivo MP4, extrair seu áudio e gerar uma transcrição utilizando Python e Whisper. O projeto chegou a ganhar um repositório no GitHub e uma estrutura inicial, mas nunca evoluiu de fato. Ficou basicamente como uma prova de conceito de uma ideia que poderia ser desenvolvida algum dia. ...

20/07/2026 · 7 min · 1371 words · Dirlei Friedrich

SQL da Semana #01 — RETURNING: obtendo dados sem fazer uma nova consulta

Ao inserir um registro no PostgreSQL, é comum precisar do identificador gerado pelo banco para continuar o processamento. Uma solução possível é executar o INSERT e, em seguida, fazer outra consulta. O PostgreSQL oferece uma alternativa mais direta: a cláusula RETURNING. O problema Considere uma tabela que armazena tarefas de processamento: CREATE TABLE jobs ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, file_path text NOT NULL, status text NOT NULL DEFAULT 'pending', created_at timestamptz NOT NULL DEFAULT now() ); Depois de criar um job, a aplicação precisa conhecer o id, o estado inicial e a data atribuída pelo banco. ...

15/07/2026 · 2 min · 375 words · Dirlei Friedrich

PostgreSQL Reliability Lab - Lab 02: Inicialização de banco de dados

No Lab 01, construímos a fundação: uma instância PostgreSQL reproduzível, persistente e validada com Docker. Mas subir um banco saudável é apenas o primeiro passo. Para testar backup, replicação, observabilidade ou performance, precisamos de uma base que se aproxime de um cenário real: usuários com responsabilidades diferentes, schemas bem definidos, extensões operacionais, relacionamentos, índices e dados suficientes para exercitar o ambiente. Esse é o objetivo do Lab 02 do PostgreSQL Reliability Lab. ...

12/07/2026 · 6 min · 1174 words · Dirlei Friedrich

Construindo um laboratório Protheus com Docker

Durante muitos anos, desenvolver para o ERP Protheus significava preparar manualmente todo o ambiente de desenvolvimento. Instalar banco de dados, configurar DBAccess, ajustar License Server, preparar AppServer, copiar arquivos de configuração e validar dependências costumava fazer parte do processo. Cada máquina acabava se tornando um ambiente único, com pequenas diferenças difíceis de rastrear. Embora esse modelo ainda seja comum em muitos projetos, ele fica distante de práticas que hoje considero essenciais em Engenharia de Software: ambientes descritos como código, configuração versionada, automação operacional e capacidade de recriar o laboratório de forma previsível. ...

08/07/2026 · 8 min · 1497 words · Dirlei Friedrich

DevOps além das ferramentas: lições de um estudo de caso sobre CALMS e as Três Maneiras

Recentemente, participei de um desafio do curso de DevOps da Rocketseat. O objetivo era analisar o cenário de uma empresa fictícia e propor melhorias com base no modelo CALMS e nas Três Maneiras do DevOps. À primeira vista, o exercício parecia ser sobre automação, CI/CD e deploys. Porém, ao analisar o caso, ficou claro que os principais problemas não estavam relacionados à falta de ferramentas, mas à forma como as equipes trabalhavam. ...

06/06/2026 · 6 min · 1262 words · Dirlei Friedrich

Como comecei a aplicar DevOps no meu dia a dia com PostgreSQL e Protheus

Durante muito tempo, enxerguei DevOps como algo distante da minha realidade. Parecia um assunto sempre associado a Kubernetes, pipelines complexos e uma infinidade de ferramentas que, sinceramente, não faziam muito sentido no meu dia a dia com ERP Protheus e banco de dados. Mas essa percepção começou a mudar quando retomei meus estudos e passei a olhar para DevOps de uma forma mais prática. DevOps não é apenas sobre ferramentas. É, principalmente, sobre criar ambientes mais previsíveis, automatizados e confiáveis. ...

02/05/2026 · 6 min · 1093 words · Dirlei Friedrich

PostgreSQL Reliability Lab - Lab 01: Ambiente confiável com Docker

Um dos problemas mais comuns ao trabalhar com banco de dados é a falta de consistência entre ambientes. Quantas vezes já vimos situações como: “Na minha máquina funciona” Diferenças entre desenvolvimento, homologação e produção Dados que não persistem após reiniciar o ambiente Dificuldade em reproduzir bugs Esses problemas geralmente não estão relacionados ao código da aplicação, mas sim à forma como o ambiente de banco de dados é configurado. Neste post, vou mostrar como construir um ambiente PostgreSQL utilizando Docker com foco em reprodutibilidade, persistência e confiabilidade, servindo como base para cenários mais avançados. ...

26/04/2026 · 3 min · 596 words · Dirlei Friedrich

Configurando PostgreSQL no Windows para Ambiente de Desenvolvimento com Protheus

Instalar PostgreSQL no Windows para um ambiente de desenvolvimento com Protheus não é apenas questão de executar um instalador. É necessário configurar o banco corretamente para que a integração com DBAccess funcione de forma estável e previsível. Este guia apresenta o passo a passo completo, desde o download até a integração total com o Protheus. ⚠️ Importante: Recomendação da TOTVS A instalação do PostgreSQL em Windows é recomendada APENAS para ambientes de desenvolvimento ou testes. ...

12/04/2026 · 8 min · 1563 words · Dirlei Friedrich