Todos os artigos
-
Manter visíveis os limites das transações
Documente quais alterações de estado são confirmadas juntas e o que pode acontecer entre transações de banco de dados e chamadas externas.
-
Morph targets: combine deltas de vértices sem perder a forma base
Como obter deformações faciais e corretivas previsíveis: preservar a correspondência entre vértices, usar pesos com semântica aditiva e respeitar a ordem entre morphing e skinning.
-
Como escolher pontos de verificação de permissão para jobs em fila após a revogação do acesso
Torne explícito o momento da autorização quando uma requisição agenda um trabalho que será executado depois. O exercício proposto separa a permissão para enfileirar o trabalho da permissão para executá-lo e obter o seu resultado.
-
Verificar contratos de placeholders quando um agente adiciona texto de interface traduzido
Preserve o significado em tempo de execução dos placeholders e das variantes de mensagem ao traduzir texto de interface, para que uma prosa fluente não introduza substituições quebradas nem casos ausentes.
-
Python 3.10 após o fim de vida: localizar interpretadores e recriar ambientes
A tabela de ciclo de vida do projeto Python registra 1 de outubro de 2026 como o fim de vida do Python 3.10. Inventarie os interpretadores realmente usados por serviços, ambientes virtuais e imagens, depois recrie e teste cada aplicação em uma linha de versões com suporte.
-
Pipeline, fan-out, orquestrador e painel de críticos: qual padrão multiagente serve para qual tarefa
Um pipeline serve para tarefas com sequência fixa de transformações; o fan-out paralelo, para subquestões independentes ou tentativas repetidas sobre as quais votar; o orquestrador com workers, para tarefas cuja decomposição só se conhece em tempo de execução; o painel de críticos, para saídas que exigem revisão segundo vários critérios. Todos multiplicam o custo em tokens e acrescentam uma camada de coordenação que pode falhar por conta própria.
-
Alterar um registro DNS com caminho de rollback: redução do TTL, cutover e verificação
Uma alteração de DNS só chega aos usuários na velocidade em que o TTL antigo expira nos caches. Por isso, reduza o TTL um período completo do TTL antigo antes da mudança, mantenha o destino antigo ativo até confirmar o novo em toda parte e considere os resolvedores que servem dados expirados quando os servidores autoritativos estão inacessíveis, conforme permite a RFC 8767.
-
Variantes de base64: alfabetos padrão e URL-safe, regras de padding e rigor dos decodificadores
A RFC 4648 define os alfabetos base64 padrão e URL-safe e exige padding por padrão, mas os JWTs o omitem explicitamente; o MIME quebra linhas em 76 caracteres, e o base64 do GNU precisa de -w0 para não fazer o mesmo. Já os decodificadores, do Python ao navegador, divergem sobre tratar como erro caracteres estranhos e padding ausente.
-
Tratamento de erros em PowerShell para scripts de administração: erros terminantes, $ErrorActionPreference e $LASTEXITCODE
O PowerShell tem duas classes de erro com comportamentos distintos num script: erros terminantes, que o try/catch consegue interromper, e erros não terminantes, que só $ErrorActionPreference ou -ErrorAction podem transformar em interrupção. Uma terceira classe, as falhas de executáveis nativos, não segue nenhum desses caminhos, a menos que $PSNativeCommandUseErrorActionPreference esteja definido (PowerShell 7.4+, experimental na 7.3).
-
Como usar corretamente os códigos de status HTTP: a primeira bifurcação do cliente
Clientes, caches e agentes decidem só pelo código de status se repetem, recarregam ou desistem: 201/204 para sucesso com e sem corpo, 401 versus 403 para falta de autenticação versus falta de permissão, 409/412/428 para conflitos e pré-condições, 429 e 503 com Retry-After para «mais tarde». Um 200 com objeto de erro engana todos eles.
-
Monitorar a expiração de certificados TLS em todos os endpoints, não só no site principal
Um certificado expirado é uma indisponibilidade com hora exatamente previsível: sonde de fora a data notAfter de cada certificado realmente servido (web, API, e-mail, painéis internos, balanceadores de carga), alerte com antecedência suficiente para renovar manualmente e verifique também os intermediários, não só o certificado final.
-
Gerenciando boot environments ZFS com beadm e revertendo uma atualização que falhou
beadm list/create/activate/destroy gerenciam os boot environments ZFS que o pkg update cria automaticamente quando uma atualização exige reinicialização. Ativar o boot environment anterior e reiniciar é a forma suportada de reverter uma atualização que falhou, sem precisar reinstalar pacotes manualmente.
-
Folhas de estilo de impressão: tornar uma página web utilizável em papel e em PDF
Uma folha de estilo de impressão oculta navegação e controles, expande o conteúdo recolhido, imprime o destino dos links depois do texto, define tamanho de página e margens com @page, evita a quebra de tabelas e figuras com break-inside: avoid e pede ao navegador que mantenha as cores de fundo essenciais. Teste na pré-visualização de impressão do navegador, não apenas na tela.
-
Profiling contínuo em produção: perfis de amostragem sempre ativos e o que eles respondem
O profiling contínuo coleta perfis de CPU e memória de forma sistemática ao longo do tempo e os armazena como séries com labels, permitindo perguntar qual função consumiu mais CPU na frota ontem ou o que mudou entre duas versões; profilers de amostragem tornam o custo baixo o bastante para mantê-lo ligado, e endpoints de runtime, como /debug/pprof/ do Go, ou agentes eBPF fornecem os perfis.
-
A filtragem padrão do ripgrep encurta as buscas de código de agentes em comparação com grep -r
Hipótese: agentes de programação que pesquisam repositórios com as regras de exclusão padrão do ripgrep (que pulam arquivos ignorados pelo git, ocultos e binários) precisam de menos chamadas de busca e leem menos saída irrelevante por tarefa do que agentes com grep -r sem exclusões, pois não há resultados em saídas de build e dependências; nenhuma medição é relatada.
-
Resumir o tempo gasto em chamadas de sistema com strace -c, seu overhead e o perf trace como alternativa
O strace -c contabiliza tempo, chamadas e erros por chamada de sistema em vez de imprimir cada uma, mas o próprio manual do strace avisa que um processo rastreado roda mais devagar que um não rastreado; o perf trace, descrito como uma ferramenta inspirada no strace e baseada em perf_events em vez de ptrace, é a alternativa mais simples quando esse overhead importa.
-
Um dia agendado para documentação atrai mais contribuidores de primeira viagem do que um convite permanente para ajudar na documentação
Hipótese: um projeto que anuncia um dia único, com uma lista selecionada de pequenas issues de documentação, mantenedores disponíveis para revisão no mesmo dia e o rótulo good first issue em cada tarefa recebe mais alterações de documentação integradas (merged) de pessoas que nunca tinham contribuído do que a mesma lista deixada aberta o ano inteiro; propõe-se comparar com o histórico do próprio projeto.
-
Como projetar uma ferramenta de linha de comando em Python: argparse, main() e códigos de saída
Coloque a interface em uma função main(argv) -> int registrada como console script, valide com type e choices do argparse, siga a convenção de códigos de saída (0 sucesso, 2 erro de uso, 1 demais falhas, códigos sysexits só se documentados), mantenha resultados em stdout e diagnósticos em stderr, e trate SIGINT e broken pipes.
-
Como escrever um script POSIX sh portável entre Linux, BSD, macOS e AIX
Um script que deve rodar sem alterações no dash do Debian, no bash-como-sh de uma máquina Linux, no FreeBSD, no macOS e no AIX precisa ficar dentro da Shell Command Language do POSIX e evitar flags exclusivas do GNU; o checkbashisms e uma lista curta de diferenças entre comandos GNU e BSD pegam a maior parte do que quebra.
-
Atualizar Debian e Ubuntu para a próxima versão principal sem perder o caminho de rollback
O do-release-upgrade do Ubuntu e o procedimento manual do Debian (alterar o sources.list e depois atualizar) pressupõem um backup completo e um console alternativo, caso a sessão SSH caia durante a atualização; as próprias notas de versão do Debian recomendam uma passagem mínima antes da atualização completa.
Legível por máquina: JSON