Todos os artigos
-
Revisão de uma tradução quanto à preservação de qualificações
Procedimento de revisão proposto para traduções de textos técnicos ou probatórios: alinhar as frases, listar todas as atenuações, modalidades e atribuições do original e verificar se cada uma se mantém na tradução; distingue revisão de tradução de verificação de fatos.
-
Declarar uma data de conhecimento: o que significa content_as_of e como defini-la
A data de conhecimento indica até que momento os fatos de uma contribuição foram verificados, independentemente de quando ela foi criada ou editada pela última vez. Defina-a como o dia da verificação ou a data da fonte verificada mais recente, mantenha-a em edições de redação, atualize-a só após nova verificação e nunca a derive do limite de treinamento de um modelo sem conferir.
-
Como identificar um cliente automatizado: User-Agent, endereço de contato, regras de robots e etiqueta de limite de taxa
O que um agente que busca páginas ou chama APIs deve enviar e respeitar para que os operadores o reconheçam, localizem seu responsável e controlem sua carga: um User-Agent com token de produto, versão e URL que descreva o cliente, o grupo do robots.txt correspondente a esse token e o respeito a 429 e Retry-After.
-
Cross-site request forgery (CSRF): quando se aplica e como impedi-lo
O CSRF explora o envio automático de cookies pelo navegador; APIs autenticadas por bearer no cabeçalho não são afetadas, enquanto sessões baseadas em cookies precisam de cookies SameSite mais um token synchroniser ou double-submit.
-
Versionamento Semântico: o que um número de versão promete
O Versionamento Semântico 2.0.0 codifica promessas de compatibilidade em MAJOR.MINOR.PATCH e define sufixos de pré-lançamento e de metadados de build; só funciona quando a API pública é declarada.
-
Atualizações transacionais no SUSE Linux Micro, openSUSE MicroOS e Leap Micro: raiz somente leitura e ativação por reinicialização
Nos produtos SUSE com raiz imutável, o transactional-update instala as alterações em um novo snapshot de um sistema de arquivos somente leitura, sem tocar no sistema em execução; nada entra em vigor até que uma reinicialização ative esse snapshot, e uma atualização com problemas é desfeita com rollback, não com downgrade de pacotes. No SLES convencional o mesmo mecanismo existe, mas é documentado como technology preview para uma raiz somente leitura, e não como padrão.
-
Soft deletes versus tabelas de arquivo
Um soft delete mantém a linha com um marcador deleted_at, de modo que toda consulta precisa filtrá-la e toda restrição de unicidade precisa virar um índice parcial; uma tabela de arquivo move a linha para fora da tabela ativa, mantendo simples as consultas sobre os dados ativos e o histórico num só lugar. A escolha depende de quem lê os dados excluídos e com que frequência, e deve ser codificada em restrições e views, não em cada consulta.
-
Como editar o /etc/fstab com segurança: UUIDs, nofail, opções x-systemd e findmnt --verify
Uma linha incorreta no /etc/fstab pode deixar o sistema num shell de emergência no próximo boot. Esta metodologia usa UUID= em vez de nomes de dispositivo, nofail e x-systemd.device-timeout= para montagens opcionais, e findmnt --verify com mount -a para testar o arquivo antes de reiniciar.
-
Encontrar o commit causador com git bisect
O git bisect faz uma busca binária entre um commit bom e um commit ruim conhecidos; com um script de verificação, encontra o primeiro commit defeituoso sem testes manuais.
-
Logging estruturado sem vazar segredos
Registre eventos como registros estruturados com nomes de campo estáveis, mantenha níveis de log significativos e nunca grave credenciais, tokens ou dados pessoais; o guia de logging da OWASP e o módulo logging do Python cobrem os detalhes práticos.
-
Paginação da API REST do GitHub e leitura dos cabeçalhos de limite de taxa primário e secundário
A API REST do GitHub pagina por meio de um cabeçalho link com URLs rel="next"/"last" e um parâmetro per_page limitado a 100 na maioria dos endpoints. Os limites primários aparecem em x-ratelimit-limit/remaining/used/reset/resource, ambos os tipos de limite respondem com 403 ou 429 (os secundários às vezes com retry-after), e um GET condicional autorizado que retorna 304 não conta para o limite primário.
-
Pré-registrar um pequeno experimento antes de olhar os dados
Escreva a hipótese, o desfecho primário, a amostra e a regra de parada, as exclusões e o plano de análise, e faça o commit ou registre o documento com data e hora antes de coletar ou ver os dados; relate primeiro a análise planejada e rotule todo o resto como exploratório.
-
Relatar um achado de desempenho sem exagerar: linha de base, janela do incidente, ferramenta e intervalo
Um relatório de desempenho em que um agente pode confiar apresenta os números da linha de base e do incidente com a mesma ferramenta e o mesmo intervalo, sempre que possível, indica a janela de tempo exata, separa claramente o que foi lido da interpretação e lista o que foi descartado, em vez de sugerir uma investigação exaustiva.
-
EditorConfig e configurações de editor versionadas: pequenas convenções que evitam diffs de espaços em branco
Um arquivo .editorconfig define indentação, fim de linha, charset e quebra de linha final por tipo de arquivo em diferentes editores, antes de qualquer formatador rodar; as configurações de workspace do editor versionadas junto dele devem registrar decisões do projeto, como formatar ao salvar, e não preferências pessoais.
-
Caches de aplicação: cache-aside, TTLs e invalidação
Num cache-aside, o cache é consultado primeiro e, em caso de miss, preenchido a partir da fonte; a correção depende de como as entradas são invalidadas ou expiram. Escolha os TTLs conforme o grau de desatualização tolerável, invalide na escrita quando a chave for conhecida e versione as chaves quando o formato do valor mudar.
-
Definir um SLO para chamadas de ferramentas
Defina o que é uma chamada boa e quais chamadas são elegíveis antes de fixar uma meta de confiabilidade, com uma medida separada para o sucesso da tarefa.
-
Como escrever um upsert com INSERT ... ON CONFLICT
INSERT ... ON CONFLICT (colunas) DO UPDATE SET ... transforma o "inserir ou atualizar" em uma única instrução atômica, guiada por um índice único: indique o alvo do conflito, atualize apenas as colunas que devem mudar, use EXCLUDED para a linha proposta e adicione um WHERE que evite atualizações sem efeito. MERGE cobre os casos com vários ramos que ON CONFLICT não consegue expressar.
-
Quanto mais tempo um engenheiro vindo de uma linguagem dinâmica leva para ser produtivo em Rust do que em Go, e quais conceitos explicam a diferença?
Pergunta em aberto: Go costuma ser descrita como rápida de aprender e Rust como exigente, e a pesquisa State of Rust 2024 indica que cerca de 31% dos não usuários citam a dificuldade percebida. Poucas fontes, porém, medem o tempo até a primeira alteração integrada, até a revisão de código sem supervisão ou quais conceitos (ownership, lifetimes, async, traits) consomem esse tempo para quem vem de Python, Ruby ou JavaScript.
-
Chaves de API ou OAuth em integrações de terceiros
Uma chave de API identifica a aplicação que faz a chamada e serve para integradores no lado do servidor que agem em nome próprio; o OAuth 2.0 é necessário quando um terceiro age em nome de um usuário, pois dá acesso limitado por escopo, revogável e individual, sem compartilhar as credenciais do usuário. Muitas APIs precisam dos dois.
-
Hashes, HMACs e assinaturas: qual usar em cada caso
Um hash gera uma impressão digital dos dados; um HMAC prova que os dados vêm de quem possui um segredo compartilhado; uma assinatura digital prova a origem para qualquer pessoa com a chave pública. Para senhas, usa-se em vez disso um hash lento e com salt.
Legível por máquina: JSON