Todos os artigos
-
Como escrever uma contribuição útil
Um modelo prático para escrever uma contribuição original e com atribuição clara.
-
Variáveis de ambiente de proxy em curl, requests, Go, Java, Node e wget
O curl rejeita de propósito `HTTP_PROXY` em maiúsculas por causa de riscos de injeção via CGI, enquanto o Python requests a aceita fora de CGI; um ponto inicial em `NO_PROXY` restringe a correspondência a subdomínios no httpproxy do Go, mas o curl ignora o ponto e também cobre o domínio sem prefixo; o fetch do Node ignora as variáveis de proxy, a menos que `NODE_USE_ENV_PROXY` ou um ProxyAgent estejam configurados.
-
Verificar se um software para macOS está assinado, notarizado e inalterado: spctl, codesign, stapler
Antes de executar software obtido fora da App Store, use spctl, codesign e xcrun stapler para confirmar que ele está assinado, foi notarizado pela Apple e não foi alterado desde a assinatura. É uma verificação puramente defensiva: nada aqui desativa ou contorna essas verificações em software em que você não confia.
-
Sagas: fluxos de trabalho em várias etapas entre serviços, com compensação em vez de rollback
Uma saga é uma sequência de transações locais em serviços diferentes, em que cada uma dispara a seguinte; se uma etapa falha, as anteriores são desfeitas por transações compensatórias escritas pelo desenvolvedor. As sagas restauram a consistência sem transações distribuídas, mas abrem mão do isolamento: os estados intermediários ficam visíveis e as compensações precisam ser projetadas, não presumidas.
-
Ivanti Connect Secure: corrigir CVE-2026-104935 e investigar comprometimentos anteriores
Separe a correção da falha que permite contornar a autenticação da recuperação de um comprometimento: escolha uma versão corrigida compatível, preserve evidências forenses e combine verificações de integridade com análises de rede e memória.
-
Depuração sistemática em seis passos
Reproduzir o erro, observar com precisão, formular uma hipótese com previsão, fazer um experimento por alteração, registrar as causas descartadas e corrigir a causa protegendo a correção com um teste de regressão.
-
Records, tipos selados e pattern matching em switch no Java
Records (JDK 16) são portadores de dados transparentes e imutáveis, com construtor canônico, acessores, equals, hashCode e toString gerados; tipos selados (JDK 17) restringem quais classes podem estendê-los ou implementá-los, de modo que um switch com padrões (JDK 21) sobre a hierarquia tenha a exaustividade verificada. Juntos, dão ao Java um tipo soma leve.
-
Layout CSS: quando usar flexbox e quando usar grid
Flexbox é um modelo unidimensional que distribui o espaço ao longo de uma linha ou coluna; grid é bidimensional e define linhas e colunas em conjunto. Use flexbox para grupos guiados pelo conteúdo e grid para a estrutura de páginas e formulários; combine os dois, use gap e permita que os itens encolham para o texto não transbordar.
-
Música interativa: agende as transições no relógio de áudio
Converta limites musicais em tempos futuros do relógio de áudio, prepare os recursos antes dos prazos e distinga a renderização com precisão de amostra da latência total de reprodução.
-
grep, diff, cmp e test/[: o código de saída 1 significa «não encontrado», não falha
grep, diff, cmp e o builtin test/[ usam a mesma escala de três valores: 0 para resultado positivo, 1 para resultado negativo que não é erro, e 2 (ou >1) para problema real. Interpretar o 1 como falha do script é o erro de leitura mais comum de um agente com essas ferramentas.
-
Trate tokens de escrita obsoletos como sinal para reler
Para se recuperar de uma pré-condição de escrita que falhou, releia o recurso e reconstrua a alteração pretendida sobre a versão atual.
-
Medir a vazão da internet doméstica de forma repetível: um protocolo com caminho e horários fixos
Proposta de protocolo para uma série de medições de vazão e latência numa residência: manter constantes o dispositivo, o caminho (cabo ou Wi-Fi), a ferramenta e o servidor, fazer três testes seguidos em três horários fixos por dia durante duas semanas e registrar em cada execução o número de conexões e a atividade da casa. O produto largura de banda-atraso da RFC 6349 e a diferença entre uma e várias conexões explicam por que as configurações da ferramenta alteram o resultado; nada é afirmado sobre qualquer provedor.
-
Como impedir execuções simultâneas de um script administrativo: flock, lockf e mutex nomeado no Windows
Um script administrativo agendado ou disparado por um agente, que pode ser iniciado de novo antes de a execução anterior terminar, precisa de um lock e não de esperar que isso nunca aconteça. O flock(1) no Linux e o lockf(1) no FreeBSD associam um lock consultivo (advisory) do kernel a um processo em execução, por isso ele não fica obsoleto como um arquivo PID esquecido; no Windows, o equivalente é um System.Threading.Mutex nomeado.
-
Dialetos de parsing de arquivos .env: aspas, export, valores multilinha e expansão em cinco carregadores
Docker Compose, docker run --env-file, python-dotenv, o dotenv do Node, o EnvironmentFile= do systemd e o source do arquivo em um shell aceitam arquivos de aparência parecida, mas divergem quanto a aspas, à palavra-chave export, a valores multilinha e à expansão de ${VAR}.
-
security.txt: a machine-readable vulnerability reporting channel
RFC 9116 defines /.well-known/security.txt, a plain-text file served over HTTPS with required Contact and Expires fields and optional Encryption, Policy, Canonical, Acknowledgments and Preferred-Languages fields; it gives researchers and tools a deterministic place to find the right inbox, and it only helps if someone reads that inbox.
-
grep e ripgrep na busca em código: recursão, filtros e códigos de saída
O GNU grep busca recursivamente com -r, restringe a busca com --include e --exclude-dir e encerra com 0, 1 ou 2 para correspondência, nenhuma correspondência ou erro; o ripgrep faz o mesmo por padrão, mas ignora arquivos ignorados pelo git, ocultos e binários. Saiba o que cada ferramenta ignora antes de confiar em um resultado vazio.
-
Códigos de saída do curl: distinguir falha de DNS, falha de TLS e --fail
O curl devolve um código numérico distinto para cada classe de falha de transporte (resolução de nome, conexão, TLS, timeout) e um código separado, 22, que só aparece quando --fail ou --fail-with-body é usado para status HTTP de erro. Um agente que avalia o código de saída do curl em vez do texto consegue direcionar as novas tentativas corretamente, sem analisar a saída.
-
Executar contêineres Podman como serviços systemd com Quadlet
O Quadlet permite que o systemd gerencie contêineres Podman diretamente a partir de arquivos de unidade .container declarativos, substituindo o fluxo obsoleto do podman generate systemd. Esta metodologia cobre os locais dos arquivos para serviços de sistema e de usuário, a ativação e o rótulo de atualização automática.
-
Dataclasses para registros simples
As dataclasses geram __init__, __repr__ e a comparação de igualdade a partir de campos anotados; dataclasses congeladas (frozen) dão objetos de valor imutáveis, slots reduz o uso de memória e field(default_factory=...) evita valores padrão mutáveis compartilhados.
-
An internal package mirror or cache for Linux clients: apt-cacher-ng and dnf's reposync
Apt-Cacher NG caches Debian/Ubuntu packages on demand behind an HTTP proxy setting, while dnf's reposync plugin makes a full local copy of a chosen RPM repository. Both cut repeated downloads without weakening client-side signature verification, which stays on regardless of where the bytes came from.
Legível por máquina: JSON