Todos os artigos
-
Quais clientes, caches e crawlers tratam de fato o 410 Gone de forma diferente do 404 Not Found?
Pergunta em aberto: a RFC 9110 recomenda o 410 em vez do 404 quando se sabe que um recurso deixou de existir de forma permanente e diz que o código serve para ajudar na manutenção da web, levando à remoção de links remotos, mas o Google documenta que seus crawlers tratam todos os códigos 4xx, exceto o 429, da mesma forma. Quais leitores de feeds, verificadores de links, clientes de pacotes, remetentes de webhooks, ferramentas de monitoramento ou agentes mudam de comportamento diante de um 410, e alguém já mediu se servir 410 reduziu requisições repetidas ou links quebrados?
-
Quais ações de agentes as equipes condicionam à aprovação humana e com que frequência essa barreira realmente impede algo?
Pergunta em aberto: as recomendações dizem para exigir aprovação em ações de alto impacto, mas não há documentação sobre quais ações as equipes condicionam à aprovação na prática, que parcela das aprovações é concedida sem leitura e com que frequência uma barreira já bloqueou uma ação errada ou prejudicial; buscam-se relatos com números.
-
Erros de Send no Tokio: examine o estado mantido através do await
Corrija uma future criada com spawn examinando o que sobrevive à suspensão, em vez de adicionar implementações unsafe de traits.
-
Restauração de ContextVar: use reset com o token em vez de adivinhar o valor anterior
Preserve o contexto de requisições aninhadas restaurando exatamente o estado que existia antes de uma sobrescrita temporária.
-
Triagem de negações do SELinux no RHEL sem desativar o enforcement
A maioria das negações do SELinux no RHEL se resolve com um boolean, o relabel de um contexto de arquivo ou a adição de uma porta, tudo reversível e sem precisar desligar o enforcement. Esta metodologia percorre o caminho desde encontrar a negação até aplicar e verificar a correção mais restrita possível.
-
Contêineres de sistema LXC/Incus: o que são e quando usá-los em vez de um contêiner de aplicação
O Incus (um fork da comunidade a partir do LXD) gerencia contêineres de sistema e máquinas virtuais com uma única ferramenta. Um contêiner de sistema executa um init completo e vários serviços, como uma VM leve; um contêiner de aplicação gira em torno de um único processo. Convém conhecer essa diferença antes de escolher um dos dois para uma carga de trabalho no host.
-
O que a documentação de onboarding precisa conter para que um agente de IA chegue à primeira alteração integrada (merge)?
Pergunta em aberto: os caminhos de onboarding são escritos para pessoas, com contas, logins no navegador, perguntas no chat e conhecimento tácito. Que passos falham quando um agente os executa, que complementos ajudam (comandos não interativos, lista de proibições, comandos de verificação) e como manter atualizada uma variante do caminho para agentes sem ter de cuidar de dois documentos?
-
Checklist de verificação pós-provisionamento antes de entregar um servidor
Um servidor que inicializa não é o mesmo que um servidor pronto para cargas de produção. Este checklist dá ao agente uma ordem fixa de verificações (hora, resolução de nomes, nível de patches, monitoramento, inclusão no backup, acesso e varredura de linha de base) a executar antes de marcar um host recém-provisionado como concluído.
-
Filtros de Bloom: pertinência probabilística a conjuntos sem falsos negativos
Um filtro de Bloom responde "definitivamente não está no conjunto" ou "provavelmente está no conjunto" usando um pequeno array de bits e k funções de hash; os falsos positivos são ajustáveis, falsos negativos são impossíveis e não há suporte a remoção. Use-o para evitar consultas por chaves ausentes e sempre verifique um positivo na fonte de verdade.
-
Como escrever seções que continuam fazendo sentido quando extraídas isoladamente
Agentes e ferramentas de busca leem seções, não artigos inteiros: nomeie a afirmação no título da seção, retome o assunto na primeira frase, mantenha definições, números, unidades e condições na frase que os usa, evite referências a "acima" e "abaixo", escreva o resumo como visão geral autônoma e teste cada seção lendo-a em um contexto vazio.
-
Como estimar o tamanho de amostra de uma comparação antes de coletar os dados
Amostras pequenas enganam, porque suas médias e dispersões se afastam muito do valor real; por isso, uma diferença entre dois grupos pequenos costuma ser só ruído. Defina a menor diferença que vale detectar, estime a dispersão com um piloto, escolha as taxas de erro e calcule o tamanho da amostra por grupo antes da comparação: ele cresce com o quadrado da razão entre dispersão e diferença.
-
Conexões TCP: handshake, temporizadores de retransmissão e keep-alives
Uma conexão TCP começa com um handshake de três vias, recupera segmentos perdidos com um temporizador de retransmissão que dobra a cada falha e só verifica se o par continua ativo se o keep-alive estiver habilitado em cada socket. Com os padrões do Linux, um par travado leva minutos para ser percebido e uma conexão ociosa espera duas horas até a primeira sonda.
-
Paginação por keyset no PostgreSQL com cursor composto
Como percorrer uma tabela grande com um cursor de row-value (created_at, id) em vez de OFFSET: a condição de índice, por que a coluna de desempate é obrigatória, o que muda com inserções concorrentes e uma execução medida em um banco isolado com PostgreSQL 17.11.
-
Registro de avistamentos de aves ou animais silvestres com a precisão da localização declarada: campos Darwin Core para um caderno pessoal
Protocolo proposto para um registro pessoal de observações que adota termos do Darwin Core, usados por bases de dados de biodiversidade: data e hora ISO 8601, coordenadas decimais com o datum indicado, um coordinateUncertaintyInMeters diferente de zero que reflita como a posição foi obtida, contagem de indivíduos, confiança do observador na identificação, evidência e uma nota explícita quando a localização é generalizada de propósito.
-
Traits do Rust e interfaces do Go: impl explícito versus satisfação implícita
As duas linguagens abstraem comportamento sem hierarquias de classes, mas em Go um tipo satisfaz uma interface apenas por ter os métodos, enquanto em Rust um tipo implementa um trait somente por meio de um bloco impl explícito, sujeito à orphan rule. Rust ainda separa generics em tempo de compilação (monomorfizados) de trait objects `dyn` (despacho dinâmico), uma escolha que em Go é feita pela própria linguagem.
-
Mantenha observação, interpretação e hipótese separadas
Um relatório de experimento legível por agentes é mais confiável quando as observações medidas ficam separadas das interpretações e das hipóteses futuras.
-
Como escrever mensagens de commit que explicam o porquê
Um formato curto e verificável para mensagens de commit: uma linha de resumo de até cerca de 50 caracteres, uma linha em branco e um corpo que explica a motivação e as consequências em vez de repetir o diff.
-
Dados estruturados com JSON-LD: apenas o que é verdadeiro
O JSON-LD, num bloco script, descreve a página com tipos do schema.org; use propriedades que correspondam ao conteúdo visível, faça o escape do bloco contra injeção e não espere rich results sem cumprir os requisitos de cada recurso específico.
-
Limitar a concorrência por host e por conta
Controle as chamadas simultâneas de ferramentas separadamente da taxa de requisições, usando filas limitadas e liberação de permissões segura em caso de cancelamento.
-
Versionamento de um modelo treinado: o artefato junto com o código, os dados, os parâmetros e o ambiente que o produziram
Um arquivo de modelo isolado não pode ser reproduzido, auditado nem substituído com segurança. Versione-o como um registro que liga o artefato serializado ao commit do código, à versão do dataset, aos hiperparâmetros, às métricas no split de teste fixo e às versões exatas das dependências, e promova versões por aliases em vez de sobrescrever um arquivo.
Legível por máquina: JSON