Todos os artigos
-
Pipes do subprocess em Python: drene os dois fluxos antes de esperar indefinidamente
Evite esperar por um processo filho que não consegue terminar porque um dos pipes de saída capturados está cheio.
-
Registro de pressão e desgaste de pneus de bicicleta: leituras do manômetro e inspeções visuais
Um registro periódico, só de observação, para pneus de bicicleta: a pressão lida sempre com o mesmo manômetro, na unidade que ele mostra, a faixa impressa na lateral copiada literalmente e anotações visuais datadas com foto de um ponto marcado. As conversões entre bar, psi e kPa seguem os fatores do NIST; o texto não dá conselhos de calibragem, manutenção ou segurança.
-
Collations no PostgreSQL: libc, ICU e o provider builtin, e por que uma atualização de biblioteca pode corromper um índice
Uma collation define como o texto é ordenado e comparado; o PostgreSQL a obtém de um provider (libc, ICU ou as ordenações builtin C e C.UTF-8, por ponto de código), fixa o padrão por banco de dados na criação e permite sobrescrevê-la por coluna ou expressão. As collations de idioma de libc ou ICU mudam quando a biblioteca muda, o que invalida índices B-tree sobre texto; por isso, escolha o provider com critério e execute reindex após atualizações do sistema operacional ou do ICU.
-
Códigos de saída como contrato entre scripts e o agente que os chama
Um agente que executa um script e decide o próximo passo pelo código de saída precisa que esse código tenha o significado das convenções do shell: 0 para sucesso, números positivos pequenos para as falhas definidas pelo próprio script, 126/127 para um comando que não pôde ser executado e 128+n para término por sinal. Além disso, precisa de pipefail ou PIPESTATUS para enxergar o código real através de um pipeline.
-
Que parcela das requisições de um site pequeno vem de crawlers e agentes automatizados, e qual método de classificação se manteve válido ao longo de um ano?
Pergunta em aberto: a RFC 9309 prevê que os crawlers se identifiquem por um product token no grupo do robots.txt que respeitam, mas muitos clientes automatizados não se declaram; em sites pequenos com logs de acesso, que parcela das requisições veio de crawlers declarados, bots não declarados e agentes baseados em modelos de linguagem, como foi medida, e o método ainda funcionava um ano depois?
-
Interpretar a pressão de memória no Linux: free, swap, o OOM killer e OOMScoreAdjust
A coluna «available» do comando free, e não «free», indica a folga real de memória, e um processo morto sob pressão de memória deixa registo no log do kernel ou no journal, em vez de simplesmente desaparecer. Este artigo explica o que ler e como influenciar a escolha do processo pelo OOM killer.
-
Reinicializar NTP, DNS e DHCP após uma queda total da rede: reinício ordenado por dependências
Metodologia proposta: após uma queda que derrubou NTP, DNS e DHCP ao mesmo tempo, restabelecer primeiro o horário, depois o DNS e por fim o DHCP, porque verificações de certificados e de Kerberos exigem hora correta, a maioria dos serviços se localiza por nome e o DHCP pode depender dos dois. Ressalva: um servidor NTP que usa hostnames como upstream também precisa de DNS.
-
Quais hooks de pre-commit duram um ano em um repositório de equipe, e quais são removidos ou rotineiramente ignorados?
Pergunta em aberto: o hook pre-commit do Git pode ser ignorado com --no-verify, então um hook local só ajuda enquanto os contribuidores o mantêm; quais tipos (formatadores, linters, scanners de segredos, subconjuntos de testes) permaneceram em uso por um ano ou mais em repositórios de equipe, quais foram removidos ou movidos para o CI, e com que frequência foram ignorados?
-
Validação de entrada nas fronteiras de confiança
Valide cada entrada no ponto em que ela chega ao sistema: primeiro verificações sintáticas (tipo, tamanho, formato) e depois verificações semânticas segundo as regras de negócio. Prefira listas de permissão, rejeite em vez de higienizar e nunca confie na validação feita no cliente.
-
Protocolo de inventário para destralhar: contar, fotografar e registrar decisões por zona
Proposta de protocolo de documentação para destralhar uma zona definida da casa: fotografá-la a partir de uma posição marcada, contar os itens por classe antes e depois, registrar uma categoria de decisão por item ou grupo com data e tempo gasto, e recontar aos 30 e 90 dias para tornar visível o que voltou ou chegou; não há qualquer conselho sobre o que guardar.
-
Instalação autônoma do RHEL com um arquivo Kickstart
Um arquivo Kickstart conduz a instalação do RHEL, Rocky Linux ou AlmaLinux sem nenhuma interação, combinando comandos de uma linha com scriptlets %pre e %post. Esta metodologia mostra como validar o arquivo antes do uso, passá-lo no boot e manter segredos fora de um arquivo que muitas vezes é servido sem autenticação.
-
Notificação de ciberataques na Suíça e CRA: obrigações distintas para operadores e fabricantes de produtos
A notificação suíça para infraestrutura crítica diz respeito a ciberataques que atendem aos critérios legais contra operadores abrangidos. O CRA diz respeito a fabricantes de produtos que abastecem o mercado da UE, incluindo fabricantes suíços; prazos iniciais semelhantes não tornam os destinatários nem os critérios de notificação intercambiáveis.
-
Como construir culling de frustum e de oclusão de forma conservadora
Como reduzir o trabalho de renderização invisível levando em conta volumes delimitadores, resultados de consultas atrasados, cortes de câmera e o custo dos próprios testes de visibilidade.
-
Noções básicas de manipulação de bits: flags, máscaras e deslocamentos sem surpresas
Flags são potências de dois combinadas com OR, testadas com AND e limpas com AND NOT; máscaras e deslocamentos extraem campos. As armadilhas são a precedência de operadores, o deslocamento à direita com sinal, a conversão fixa para 32 bits no JavaScript e os inteiros ilimitados do Python; dê nome a cada flag e coloque cada teste entre parênteses.
-
Consultar LDAP e Active Directory no Linux com ldapsearch sem senha na linha de comando
O ldapsearch aceita bind simples com DN e senha, ou bind SASL/GSSAPI com um ticket Kerberos existente, além de resultados paginados e StartTLS/LDAPS para conexão criptografada. As opções -y e -W existem justamente para que a senha nunca precise aparecer como argumento na linha de comando.
-
Funções de janela: agregações sem colapsar linhas
Uma função de janela calcula um valor sobre um conjunto de linhas relacionadas à linha atual (OVER com PARTITION BY e ORDER BY) e mantém todas as linhas de entrada, o que permite expressar totais acumulados, rankings, top-N por grupo e comparações com a linha anterior numa só passagem; a cláusula de frame define quais linhas a função enxerga.
-
Kernel panics e dados de falha no Linux: journal do boot anterior, pstore e netconsole
Após um kernel panic e reinício no Linux, `journalctl -b -1 -k` lê as mensagens do kernel do boot anterior, se o journal foi persistente; o pstore (por exemplo ramoops, onde configurado) preserva um registro do panic após o reinício mesmo quando o journal não o fez; o netconsole envia mensagens do kernel a outra máquina pela rede em tempo real. O kdump captura um dump completo da memória e é tratado em outro artigo.
-
Nomear, etiquetar e registrar um novo servidor: metodologia para hostnames e inventário
Um servidor que foi provisionado, mas não recebeu um nome consistente, etiquetas de responsável e finalidade, nem registro em um inventário, passa a ser infraestrutura sem documentação assim que quem o montou segue para outra função. Esta metodologia define o hostname no Linux e no Windows e descreve o que um registro mínimo de inventário deve conter.
-
O "error: externally-managed-environment" do pip e a PEP 668
O pip recusa um 'pip install' global com 'error: externally-managed-environment' quando a distribuição marcou o Python do sistema como gerenciado, conforme a PEP 668. O artigo explica o que significa o marcador EXTERNALLY-MANAGED, as soluções com venv/pipx/apt em ordem e por que --break-system-packages é último recurso, não padrão.
-
Git hooks para verificações locais rápidas
Hooks do lado do cliente, como o pre-commit, executam formatadores e linters rápidos antes de o commit existir; poupam tempo de revisão, mas precisam ser rápidos, não podem ser a única barreira e não são versionados pelo próprio Git.
Legível por máquina: JSON