Todos os artigos
-
Propriedade de recursos em FFI com Rust: associe o construtor externo ao seu destrutor real
Torne explícitos a alocação, a liberação e o tempo de vida dos callbacks em um wrapper Rust enxuto em torno de recursos externos.
-
Operações em lote em vez de loops linha a linha: round trips, transações e COPY
Um loop que envia uma instrução por linha paga um round trip, um parse e, muitas vezes, um commit por linha; uma operação em lote envia o conjunto em uma única instrução, um único stream ou uma única transação. A orientação do próprio PostgreSQL é fazer commit uma só vez, usar COPY nas cargas e criar índices depois de carregar os dados; as bibliotecas cliente oferecem executemany e copy pelo mesmo motivo.
-
Vazão e retransmissões de rede no Linux: ss -ti, nstat e iperf3
O ss -ti mostra a visão de retransmissões e RTT de uma única conexão; o nstat reporta o mesmo tipo de contadores para o host inteiro, a partir das estatísticas SNMP e TCP estendidas do kernel; o iperf3 mede diretamente a vazão alcançável quando há poucas retransmissões, mas a vazão ainda decepciona.
-
Um primeiro game day: um experimento de caos com hipótese, raio de impacto e regra de interrupção
Execute um primeiro exercício de injeção de falhas como experimento agendado e anunciado: defina o estado estável como uma saída mensurável, formule a hipótese de que ele se mantém diante de uma falha específica, limite o raio de impacto, fixe uma condição de interrupção, injete a falha e registre o que o sistema e as pessoas fizeram; os Principles of Chaos Engineering dão os quatro passos e o livro Google SRE descreve o role-play de desastres como ritual semanal.
-
Analisar a complexidade antes de otimizar
A complexidade assintótica indica como o tempo de execução cresce com o tamanho da entrada. Identificar no code review loops quadráticos, buscas lineares repetidas e recursão sem limite evita a maioria dos incidentes de desempenho antes mesmo de ser preciso fazer profiling.
-
Separar iluminação HDR, exposição, tone mapping e saída para o display
Use etapas explícitas para preservar as informações de brilho da cena, definir a exposição de forma previsível e gerar um sinal adequado ao display de destino.
-
Contador de passos de pulso e celular no bolso divergem mais em dias com muitas caminhadas curtas e mãos ocupadas
Hipótese: dois contadores de passos de consumo usados pela mesma pessoa, um no pulso e outro no bolso da calça, divergem em fração maior nos dias que o diário marca como de muitas caminhadas curtas ou mãos ocupadas (carrinho de bebê, sacolas, carrinho de compras) do que nos dias com poucas caminhadas longas, porque os dois aparelhos leem movimentos corporais diferentes; propõe-se como teste um registro diário com ambos os aparelhos identificados, e nenhuma medição é apresentada.
-
A serialização determinística do Protocol Buffers não é uma identidade canônica de mensagem
Evite usar bytes arbitrários de protobuf como impressão digital semântica estável entre runtimes e versões.
-
Separar o serviço executor do usuário representado em testes de delegação
Teste uma ação delegada deixando visíveis no oráculo tanto a identidade do serviço que a executa quanto a do usuário representado. O método proposto evita tratar a autenticação bem-sucedida do serviço como prova suficiente da autoridade do usuário.
-
HTTP keep-alive e reutilização de conexões: pools, timeouts de inatividade e a condição de corrida da conexão obsoleta
O HTTP/1.1 mantém a conexão aberta para novas requisições, a menos que se envie Connection: close, o que elimina um handshake TCP e TLS em cada requisição após a primeira; o cliente deve manter um pool durante todo o processo, ler todo corpo de resposta e definir o timeout de inatividade abaixo do do servidor, para não reutilizar uma conexão que o servidor já fechou.
-
Pinning no APT: manter um pacote numa versão ou origem escolhida com arquivos de preferências
O pinning do APT permite ao operador reter um único pacote, instalá-lo a partir de uma suíte não padrão ou impedir que um futuro apt upgrade o altere. A configuração é feita por arquivo em /etc/apt/preferences.d, sem editar um arquivo compartilhado, e a verificação usa apt-cache policy.
-
AdamW: por que o weight decay desacoplado difere de uma penalidade L2
O AdamW reduz os parâmetros separadamente da atualização adaptativa do gradiente. Assim, o termo de decaimento não entra nas estimativas de momentos do Adam, mas a taxa de aprendizado, o número de atualizações e a escolha dos grupos de parâmetros continuam influenciando a regularização.
-
Ler, conceder e fazer backup de permissões NTFS com icacls e Get-Acl/Set-Acl
O icacls lê e concede permissões NTFS e codifica a herança com os flags (OI)(CI); icacls /save e /restore fazem backup e reaplicam uma árvore de ACLs inteira antes de uma alteração, e Get-Acl/Set-Acl fornecem a mesma informação como objetos do PowerShell.
-
Melhorias medidas após atuar nos piores casos são em parte regressão à média
Hipótese: quando um esforço de engenharia seleciona os endpoints, testes, hosts ou tenants com pior resultado numa métrica ruidosa e relata a melhoria após a intervenção, parte substancial do ganho teria ocorrido mesmo sem ela, porque medições extremas tendem a ser seguidas por outras menos extremas. Descreve-se um teste proposto com grupo de controle não tratado.
-
Derivadas em shaders: preservar gradientes válidos em ramificações e emendas de UV
Diagnostique pegadas de textura instáveis distinguindo coordenadas contínuas, gradientes explícitos e operações de derivada em fluxo de controle divergente no fragment shader.
-
Objetivos de nível de serviço (SLOs) e error budgets
Um SLO é uma meta para um indicador de nível de serviço, como disponibilidade ou latência; a diferença entre a meta e 100% forma o error budget, que define quanto risco os releases podem assumir.
-
Script de configuração do primeiro dia que se verifica sozinho: bootstrap, doctor e smoke test
Um único comando após o clone produz um ambiente funcional ou uma lista precisa do que falta e de como corrigir: um script doctor somente leitura verifica cada requisito, um bootstrap idempotente instala apenas o que as verificações apontam como ausente e um smoke test define o status de saída. O CI executa tudo a partir de uma máquina limpa, para que o script não se deteriore entre um recém-chegado e outro.
-
Verificações de qualidade de dados: atualidade, volume, nulos e unicidade como conjunto mínimo
Quatro verificações baratas detectam a maioria das cargas com problemas: a fonte está suficientemente atualizada, chegou um número plausível de linhas, chaves e métricas estão preenchidas, a granularidade declarada é única? Formule cada verificação como uma consulta que devolve as linhas com erro, execute-a depois da carga e antes da publicação, e separe aviso de bloqueio.
-
Intervalos de confiança em linhas gerais: o que o intervalo diz e o que não diz
Um intervalo de confiança de 95% resulta de um procedimento que captura o valor verdadeiro em 95% das amostras repetidas; um intervalo específico contém esse valor ou não. Sua largura diminui com a raiz quadrada do tamanho da amostra e aumenta com a dispersão. Interprete-o como a faixa de valores compatíveis com os dados, informe-o junto de cada estimativa e, ao comparar, calcule o intervalo da diferença.
-
Extração segura de arquivos: path traversal em zip e tar
Entradas de arquivos compactados podem ter nomes como ../../etc/passwd, caminhos absolutos ou links simbólicos; extraia somente depois de resolver o caminho de destino de cada entrada e verificar que ele permanece dentro do diretório de destino, rejeite links que apontem para fora e limite o tamanho total e o número de entradas.
Legível por máquina: JSON