Todos os artigos
-
Como projetar uma escala de plantão (on-call) e a passagem de turno
Uma escala de plantão precisa de um primário e de um backup, de um limite para a fatia do tempo de cada engenheiro, de durações de turno e regras de troca que permitam planejamento, de um orçamento de pager que dispare trabalho corretivo quando excedido e de uma passagem de turno escrita a cada troca; o livro SRE do Google e a documentação pública de resposta a incidentes da PagerDuty descrevem as restrições.
-
Nomear identificadores: pelo papel, no vocabulário do domínio, com comprimento proporcional ao escopo
Um nome diz o que algo é ou faz no domínio, não qual é o seu tipo nem como foi implementado. O comprimento cresce com o escopo, cada conceito tem uma única palavra, booleanos se leem como afirmações e coleções ficam no plural. As convenções da linguagem (PEP 8, Effective Go) têm precedência sobre o gosto pessoal, e renomear é barato quando feito com ferramenta e em um commit próprio.
-
Como testar código que depende de tempo e de aleatoriedade
Injete um relógio e uma fonte de aleatoriedade em vez de chamar time.time() ou random diretamente; assim os testes passam valores fixos e o código permanece determinístico e reproduzível.
-
Desserialização de dados não confiáveis: pickle e serialização Java
Formatos nativos de serialização de objetos instruem o receptor a construir objetos arbitrários, e construir objetos executa código; a documentação do pickle em Python afirma abertamente que o módulo não é seguro. Nunca desserialize esses formatos a partir de entrada não confiável; se uma interface legada o impuser, restrinja as classes que o fluxo pode nomear e assine o payload.
-
Rotação de logs e limites de retenção
Os logs devem ter tamanho e idade limitados em todas as camadas (aplicação, runtime de contêineres, proxy, journal do sistema), com uma retenção definida conforme as necessidades de depuração e as obrigações legais, e não o princípio de «guardar tudo».
-
Atualizando o FreeBSD: freebsd-update para o sistema base, pkg upgrade para pacotes e pkg audit para vulnerabilidades conhecidas
O FreeBSD separa a aplicação de patches em duas ferramentas independentes: freebsd-update fetch/install para o sistema base (com upgrade -r para troca de release maior) e pkg upgrade para os pacotes instalados. O pkgbase, que instala o próprio sistema base como pacotes do pkg(8), está documentado como experimental no FreeBSD 14 e como technology preview no FreeBSD 15.0, ainda sem ser o caminho padrão.
-
A cadeia de boot do Linux para diagnóstico: firmware, bootloader, kernel, initramfs e systemd
O boot do Linux passa pelo firmware, por um bootloader, pelo kernel, por um initramfs e, por fim, pelo gerenciador do sistema, e cada etapa entrega o controle à seguinte. Saber o que cada uma faz e onde registra logs permite restringir uma falha de boot a uma única etapa antes de alterar qualquer coisa.
-
Logs de acesso a dados pessoais: registrar quem leu qual registro
Um log de acesso a dados pessoais registra leituras, e não apenas gravações: ator, titular, objeto, motivo e momento, emitidos no caminho de leitura da aplicação e conciliados com o log de instruções do banco de dados para os caminhos que o contornam. Ele deve responder a perguntas centradas no titular, como quem consultou o registro de determinada pessoa no último ano.
-
Aprender uma base de código desconhecida em um dia: um protocolo de exploração com mapa escrito
Protocolo com tempo limitado para o primeiro dia em uma base de código: compilar e rodar os testes antes de ler, ler o histórico com git shortlog e git log para ver onde há atividade, seguir uma requisição ou comando de ponta a ponta e escrever um mapa de uma página com pontos de entrada, modelo de dados, invariantes e perguntas em aberto; o resultado é o mapa, não a memória.
-
Open redirects: como validar para onde um parâmetro next pode enviar o usuário
Um redirecionamento cujo destino vem da requisição permite que um atacante crie links no seu domínio que terminam no site dele; redirecione apenas para caminhos relativos ou para uma lista de origens permitidas, ou associe identificadores curtos a destinos no servidor. Verificar o host de uma URL é mais difícil do que parece: a documentação do Python avisa que urlsplit não valida a entrada.
-
Pontuação RICE e ICE: o que os números significam e onde deixam de servir
O RICE multiplica alcance, impacto e confiança e divide pelo esforço; o ICE elimina o alcance e mantém impacto, confiança e facilidade. Ambos ajudam a tornar os argumentos de priorização explícitos e comparáveis, mas falham quando os dados são palpites disfarçados de números ou quando se ignoram dependências e estratégia.
-
Suítes de testes de prompt injection preveem o comportamento de um agente diante de injeções escritas depois da suíte?
Agentes costumam ser avaliados com coleções fixas de tentativas de injeção. Não está claro quanto uma boa pontuação se transfere para novas formulações, novos vetores e atacantes adaptativos, nem o que uma suíte de testes precisaria conter para ter poder preditivo.
-
Como distinguir acesso negado de uma fixture de teste negativo quebrada
Evita que um agente trate qualquer erro como prova de que um teste de controle de acesso passou. O método proposto usa controles pareados para identificar se a aplicação realmente chegou à decisão de autorização pretendida.
-
Migrações de esquema com lock_timeout curto e nova tentativa automática causam menos incidentes no deploy do que migrações sem esse mecanismo
Hipótese: como a maioria das formas de ALTER TABLE exige um lock ACCESS EXCLUSIVE que fica na fila atrás de qualquer transação longa e bloqueia todas as consultas seguintes, migrações executadas com lock_timeout de poucos segundos e um laço de nova tentativa limitado geram menos interrupções, e mais curtas, durante o deploy do que as mesmas migrações com a espera ilimitada padrão. O custo é que algumas migrações precisarão ser reexecutadas manualmente.
-
Noções básicas de JCL e batch: instruções JOB/EXEC/DD, códigos de retorno, envio a partir do USS e leitura da saída
Um job JCL é composto por uma instrução JOB e por um ou mais passos EXEC, cada um indicando um programa, além de instruções DD que associam arquivos ou datasets à E/S desse programa. Cada passo termina com um código de retorno, em que 0 indica sucesso e valores maiores indicam avisos ou erros; o job pode ser enviado do shell USS com submit e sua saída lida pelo SDSF ou pela API REST de jobs do z/OSMF.
-
Como publicar um service worker com segurança: escopo, caches versionados, worker em espera e kill switch
Um service worker que guarda HTML em cache pode prender os usuários a código antigo depois de um deploy. Registre-o com escopo explícito, busque o script sempre da rede nas verificações de atualização, versione os caches por build e apague os antigos no activate, escolha estratégias por recurso, defina como o worker em espera assume o controle e entregue um kill switch testado antes da primeira versão.
-
Aprendizado incremental com partial_fit: features estáveis, lista de classes e avaliação honesta
Estimadores incrementais atualizam um modelo a partir de lotes pequenos, sem carregar o conjunto de dados completo na memória. Um fluxo de trabalho confiável também preserva o significado das features, define o conjunto de classes e avalia as previsões antes de aprender com os resultados delas.
-
Triagem do AddressSanitizer: corrija o primeiro acesso inválido antes de confiar no comportamento posterior
Transforme um relatório do AddressSanitizer em um caso de regressão mínimo sobre propriedade (ownership) ou limites, sem tratar uma execução limpa como prova.
-
Como executar comandos externos com segurança em Python
Use subprocess.run com uma lista de argumentos e shell=False, defina timeouts, capture a saída de forma explícita, verifique os códigos de retorno e nunca monte uma linha de comando a partir de strings não confiáveis.
-
Prática de recuperação como protocolo de estudo: feche a fonte, produza a resposta e só depois confira
Protocolo para estudar por evocação em vez de reler: após cada unidade, feche a fonte, escreva o que consegue reproduzir, compare com o original, marque as lacunas e agende-as para uma tentativa posterior de evocação. Pesquisas em sala de aula e em laboratório, resumidas numa revisão sistemática de 2021, relatam benefícios em vários níveis e formatos.
Legível por máquina: JSON