Todos os artigos
-
Logs, métricas e traces: como escolher o sinal certo
Logs registram eventos individuais, métricas agregam medições numéricas ao longo do tempo e traces acompanham uma requisição por vários serviços; o OpenTelemetry padroniza os três para que possam ser correlacionados.
-
Usuários, papéis e RBAC no Solaris: por que o root é um papel por padrão e como o pfexec substitui o sudo
O Oracle Solaris implementa a administração privilegiada com perfis de direitos RBAC atribuídos a usuários ou papéis, e configura o root por padrão como papel, não como usuário com login direto. O comando nativo para executar um único comando privilegiado sob um perfil atribuído é o pfexec, não o sudo.
-
O event loop do JavaScript: tasks, microtasks e renderização
O JavaScript executa um job de cada vez; o event loop do HTML pega uma task e depois esvazia por completo a fila de microtasks (reações de promises, queueMicrotask) antes da próxima task ou de uma oportunidade de renderização. Trabalho síncrono longo e cadeias infinitas de microtasks bloqueiam a entrada do usuário e a pintura da tela.
-
Verificar backups de verdade: o teste de restauração
Um backup só é um backup depois que uma restauração para um ambiente vazio foi concluída e verificada. O procedimento: definir a expectativa, restaurar usando apenas o backup, medir completude e funcionamento, registrar a duração, documentar o resultado e marcar o próximo teste.
-
Consoles seriais e out-of-band para manter o acesso ao servidor quando a rede está fora do ar
Um console serial (console=ttyS0,115200 mais um getty na linha), o recurso de console serial de um provedor de nuvem ou o Serial-over-LAN via IPMI/BMC dão ao administrador um caminho de entrada em servidores sem pilha de rede funcional, situação à qual um plano de acesso baseado só em SSH não resiste.
-
CIS Benchmarks e DISA STIGs como base de hardening: o que são e como aplicá-los de forma seletiva
CIS Benchmarks e DISA STIGs são dois conjuntos de recomendações de configuração mantidos de forma independente, ambos com níveis de perfil selecionáveis em vez de uma meta única. Aplicar um perfil inteiro sem registrar exceções é uma forma comum de o trabalho de hardening derrubar um serviço em produção.
-
Direcionar todas as interrupções a uma única pessoa em rodízio aumenta o tempo ininterrupto do restante da equipe
Hipótese: uma equipe que atribui tickets, perguntas e solicitações operacionais a um único responsável rotativo por interrupções, em vez de distribuí-los entre todos, aumenta a mediana dos blocos de trabalho ininterrupto dos demais membros sem que o tempo de resposta às interrupções ultrapasse a meta combinada; inclui uma proposta de medição.
-
Server-side request forgery: busca de URLs fornecidas pelo usuário
Quando um servidor busca uma URL fornecida pelo usuário, ela pode apontar para serviços internos e endpoints de metadados; use allow-list de esquemas e hosts, resolva e verifique os endereços, bloqueie redirecionamentos para faixas privadas e, de preferência, não faça a busca.
-
Faça o profiling antes de otimizar
Meça com um profiler onde o tempo é realmente gasto antes de alterar o código para ganhar velocidade; a maioria dos palpites sobre pontos críticos está errada, e otimizar sem medir acrescenta complexidade sem benefício.
-
Overflow aritmético com sinal: documente o contrato do compilador antes de alterar a otimização
Separe os requisitos aritméticos das flags de overflow do GCC quando um build de release se comporta de forma diferente de um build de debug.
-
Token bucket, leaky bucket e janela deslizante: como os algoritmos de rate limiting se diferenciam
A janela fixa é barata, mas deixa passar o dobro do limite na fronteira entre janelas; o log deslizante é exato, mas guarda todos os timestamps; o contador de janela deslizante aproxima o resultado com memória constante; o token bucket permite rajadas até o tamanho do balde a uma taxa fixa de reposição; o leaky bucket suaviza a saída atrasando requisições. O nginx e o Envoy documentam os dois últimos.
-
O que um agente precisa da descrição de uma API
Agentes leem descrições legíveis por máquina, não texto corrido: links estáveis a partir de um único documento de descoberta, respostas tipadas, erros e sinais de nova tentativa documentados, idempotência e declarações explícitas do que não está disponível.
-
Propagar um ID de requisição de ponta a ponta: borda, logs, chamadas downstream e resposta
Gere um identificador de requisição na borda (o nginx oferece `$request_id`, 16 bytes aleatórios em hexadecimal), repasse-o à aplicação em um header, mantenha-o em contexto por requisição para que cada linha de log e cada chamada de saída o carregue, e devolva-o na resposta, de modo que o relato de um usuário possa ser associado aos logs de todos os serviços envolvidos; onde há tracing, o trace ID do W3C é esse identificador.
-
Test data builders com valores padrão reduzem a quebra de testes quando um objeto de domínio muda
Hipótese: suítes que criam objetos por meio de builders, em que cada campo tem um valor padrão válido e o teste define apenas os campos sobre os quais faz asserções, exigem menos edições a cada mudança de esquema ou de construtor do que suítes baseadas em fixtures compartilhadas ou object mothers com instâncias prontas.
-
Validação de endereços de e-mail: o que uma verificação de sintaxe pode e não pode revelar
A RFC 5321 limita a local-part a 64 octetos e um caminho a 256; o padrão HTML usa de propósito uma gramática mais simples que a da RFC 5322 em input type=email; endereços internacionalizados exigem SMTPUTF8 de ponta a ponta. Verifique sintaxe e tamanhos, consulte o MX no cadastro, confirme a posse com uma mensagem e nunca "corrija" um endereço automaticamente.
-
Decompor um julgamento composto em perguntas atômicas para um modelo de decisão aumenta a concordância com rótulos humanos, em comparação com uma única pergunta multifatorial
A orientação dos fornecedores de modelos de decisão é perguntar uma única coisa específica em cada pergunta e combinar as respostas em código; esta hipótese formula essa previsão como afirmação mensurável: em julgamentos que ponderam vários fatores independentes, a forma decomposta concorda mais vezes com rótulos humanos do que uma única pergunta cujos critérios descrevem a combinação.
-
Registrar o alvo de execução antes de interpretar o resultado de um diagnóstico
Estabeleça qual processo, checkout, instância de serviço ou banco de dados um comando de diagnóstico realmente atingiu antes de aplicar o resultado ao problema relatado pelo usuário.
-
Combinar lightmaps pré-calculados com light probes para objetos em movimento
Planeje juntos os UVs das superfícies e as amostras espaciais de iluminação, para que o cenário estático e os objetos dinâmicos compartilhem uma configuração coerente de iluminação pré-calculada.
-
Acessibilidade: os quatro princípios das WCAG aplicados na prática
As WCAG 2.2 organizam todos os critérios de sucesso em quatro princípios: perceptível, operável, compreensível e robusto. Conhecendo as violações mais comuns de cada princípio (falta de alternativas em texto, armadilhas de teclado, contraste insuficiente, campos sem rótulo, alvos pequenos demais), é possível encontrar muitas barreiras sem ferramentas especiais; o nível AA é o objetivo habitual.
-
Ramificações de diálogo no Ren'Py: ligue escolhas, variáveis de história e caminhos de retorno
Use menus para escolher blocos locais da história, labels para organizar os destinos e semântica explícita de call ou jump, de modo que as ramificações mantenham suas consequências e voltem a se conectar de forma intencional.
Legível por máquina: JSON