Todos os artigos
-
Publicar um web feed: RSS 2.0, Atom ou JSON Feed e os detalhes dos quais os leitores dependem
O Atom exige id, title e updated no feed e em cada entrada, com datas RFC 3339; o RSS 2.0 exige title, link e description no canal, usa datas RFC 822 e um guid cujo isPermaLink é true por padrão; o JSON Feed 1.1 exige version, title e itens com id e conteúdo, servido como application/feed+json. IDs estáveis, conteúdo completo, GET condicional e autodiscovery pesam mais do que a escolha do formato.
-
Unreal Enhanced Input: como compor contextos, modificadores e o comportamento dos triggers
Estruture o input em torno de ações semânticas, da propriedade explícita dos contextos e de ciclos de vida de triggers bem definidos, em vez de depender apenas da prioridade.
-
Que tamanho de pool de conexões em relação aos núcleos de CPU as equipes adotaram num servidor PostgreSQL, e qual medição as fez mudá-lo?
Pergunta em aberto: a wiki do PostgreSQL propõe uma fórmula para conexões ativas baseada no número de núcleos e no número efetivo de discos, e o padrão de max_connections costuma ser 100; que tamanhos de pool as equipes realmente adotaram após o ajuste, quão longe ficaram da fórmula e que evidências (esperas por locks, filas no pooler, saturação de CPU, latência) motivaram cada mudança?
-
Refatoração em passos pequenos e verificados
Refatorar muda a estrutura interna, não o comportamento observável. Aplique um refactoring nomeado do catálogo de cada vez, mantenha os testes verdes após cada passo, reverta em vez de depurar quando ficarem vermelhos e separe mudanças de estrutura e de comportamento em commits distintos: assim o trabalho fica seguro e revisável em minutos.
-
XML hoje: bem formado versus válido, namespaces e quando ainda é a escolha certa
Um documento XML bem formado respeita a sintaxe; um documento válido também satisfaz um DTD ou schema. Os namespaces dão a cada elemento e atributo um nome expandido, formado pela URI do namespace mais o nome local, associado por declarações xmlns cujos prefixos são arbitrários e cuja forma padrão não se aplica a atributos. O XML continua a ser a escolha certa para documentos de conteúdo misto e para ecossistemas cujos vocabulários e ferramentas já são XML.
-
Como tratar texto Unicode corretamente
Decodifique bytes para texto na fronteira do sistema, codifique de volta apenas na saída, normalize ao comparar e lembre que um caractere percebido pelo usuário pode ser composto por vários code points; o Unicode HOWTO do Python e o Unicode TR15 explicam a mecânica.
-
Mensagens confiáveis e não confiáveis em jogos: escolha as garantias pelo significado
Separe os requisitos de atualidade, ordenação e conclusão e use números de sequência e resultados da aplicação sem confundir a entrega do pacote com o sucesso no gameplay.
-
Overfitting e regularização em resumo: viés, variância e o parâmetro de penalização
Um modelo sofre overfitting quando aprende o ruído das linhas de treino e a pontuação de validação fica atrás da de treino; a regularização troca um pouco de ajuste por estabilidade, penalizando coeficientes grandes ou limitando a capacidade do modelo, e as curvas de aprendizado e de validação mostram de que lado do trade-off o modelo está.
-
Verificar se rotas aninhadas de recursos vinculam os filhos ao pai indicado
Valida uma relação que agentes de programação podem omitir ao criar endpoints aninhados: o filho solicitado deve pertencer ao pai solicitado, segundo o contrato da aplicação. Trata-se de um desenho de fixture original.
-
Diagnosticar esperas de lock e deadlocks no PostgreSQL com pg_locks, pg_blocking_pids e lock_timeout
Uma instrução travada costuma estar esperando por um lock mantido por outra transação: localize quem espera em pg_stat_activity (wait_event_type Lock), o bloqueador com pg_blocking_pids() e o estado e a última instrução dele, e então cancele, encerre ou aguarde. O log_lock_waits registra esperas maiores que deadlock_timeout, deadlocks são detectados e resolvidos abortando uma transação, e lock_timeout limita quanto tempo um DDL pode esperar.
-
Origens flutuantes: preservar a precisão local em mundos de jogo grandes
Separe a localização global das coordenadas locais de simulação, quantifique o espaçamento do ponto flutuante e reposicione de forma consistente todo o estado espacial dependente.
-
Como equipes com pouca margem de downtime escolhem entre pg_upgrade em modo link e um switchover por replicação lógica em upgrades major do PostgreSQL?
Pergunta em aberto: a documentação oferece o pg_upgrade (minutos de downtime, rollback a partir de backup nos modos link ou swap) e a replicação lógica (switchover em segundos, mas sem replicação de DDL e de sequences e com uma segunda cópia completa dos dados). Quais métodos as equipes escolheram, em que tamanhos de banco e taxas de escrita, e o que deu errado?
-
Nanite no Unreal: avalie a geometria virtualizada sem presumir detalhe ilimitado
Entenda o que o Nanite muda no detalhe e no streaming de geometria e, depois, verifique em conteúdo representativo os requisitos de material, de caminho de renderização e de fallback.
-
Como um cliente automatizado se identifica: User-Agent, contato, robots.txt e limites de taxa
O que um agente que obtém páginas ou chama APIs deve enviar e respeitar para que os operadores o reconheçam, contatem os responsáveis e controlem a carga: um User-Agent com token de produto, versão e página de descrição, o grupo correto do robots.txt e o tratamento de 429 e Retry-After.
-
Como ler uma RFC ou norma de forma eficiente
Comece pelo resumo e pela terminologia, depois leia as seções normativas, tratando MUST, SHOULD e MAY (RFC 2119) como obrigações distintas; verifique atualizações e errata antes de confiar nos detalhes.
-
Goroutines, channels e o pacote sync: visão geral da concorrência em Go
Uma instrução go executa uma chamada de função de forma concorrente, em uma pilha barata e expansível; os channels transportam valores entre goroutines e bloqueiam até que os dois lados estejam prontos; sync.WaitGroup, Mutex e Once cobrem os casos em que compartilhar memória é mais simples. Uma data race é um bug cujo resultado o modelo de memória restringe apenas em parte, e o detector -race é a ferramenta para encontrá-la.
-
Truncar e resumir resultados de ferramentas para caber no orçamento de contexto
Defina um limite de tamanho por ferramenta para cada resultado, filtre na origem antes de devolver, mantenha o início e o fim com um marcador explícito de omissão e a saída completa em disco, nunca corte erros ou dados estruturados no meio de um registro, e limpe ou resuma os resultados depois de usados.
-
CAP e PACELC como apoio à decisão, não como slogans
O CAP proíbe apenas um canto do espaço de projeto: disponibilidade perfeita e consistência linearizável enquanto dura uma partição de rede. O PACELC acrescenta o compromisso cotidiano entre latência e consistência quando não há partição. Usados como perguntas e não como rótulos, ambos ajudam a decidir, operação a operação, onde um sistema pode devolver dados desatualizados e onde precisa coordenar.
-
O firewall PF no FreeBSD: testar o pf.conf com pfctl -n antes de carregá-lo e reversão agendada contra bloqueio do SSH
As regras do pf.conf giram em torno de uma política padrão de pass/block e de âncoras opcionais para anexar sub-conjuntos de regras, e só devem ser carregadas com pfctl -f depois de o pfctl -nf as analisar sem carregá-las. Como um conjunto de regras errado pode derrubar a própria sessão SSH usada para aplicá-lo, agendar uma reversão automática com at(1) antes de carregar as novas regras é um padrão de segurança comum (não é um recurso do PF) para testar mudanças em um host FreeBSD remoto.
-
make, ping e nc: códigos de saída que, silenciosamente, não verificam o que você imagina
No GNU make, o código de saída 1 de -q significa "um alvo precisa ser reconstruído", não falha. No ping, o código 1 indica que nenhuma resposta foi recebida (host fora do ar, não uma chamada quebrada do ping) e o 2 indica um erro real, de uso ou de outro tipo. A documentação do openssl s_client diz que, por padrão, a conexão termina com sucesso (código 0) mesmo quando a verificação do certificado falhou, a menos que -verify_return_error seja usado.
Legível por máquina: JSON