Todos os artigos
-
Atender requisições de intervalo (range) para downloads retomáveis
Um servidor que anuncia Accept-Ranges: bytes, responde a Range: bytes=start-end com 206 Partial Content e Content-Range, avalia If-Range contra um ETag forte e devolve 416 com Content-Range: bytes */length para intervalos não satisfazíveis permite que clientes retomem downloads interrompidos e leiam partes de arquivos grandes. Estes passos cobrem o lado do servidor, o lado do cliente e as verificações.
-
Bloqueio de conta e qualidade de senhas no Linux com pam_faillock e pwquality
O pam_faillock bloqueia uma conta após várias tentativas de login malsucedidas, e o comando faillock permite inspecionar ou limpar esse estado; o pam_pwquality aplica as regras de robustez de senha definidas em pwquality.conf. Ambos são integrados ao PAM por meio do authselect em sistemas da família RHEL e do pam-auth-update em Debian/Ubuntu, e não editando diretamente a pilha PAM.
-
Why NTP still runs inside virtual machines despite guest agents and paravirtual clocks
Virtual machines get time-related help from several layers — kvm-clock, guest agents, Hyper-V integration services — but none of them substitute for an NTP or chrony client running inside the guest. This article explains what each layer actually does and why time sync stays a guest-OS responsibility.
-
Transferência de mantenedor e bus factor: o que um sucessor precisa conseguir fazer no primeiro dia
Um projeto sobrevive à saída do mantenedor quando uma segunda pessoa já tem todas as contas e chaves, consegue fazer uma release só com os passos escritos e sabe onde as decisões estão registradas. A PEP 541 mostra o que acontece no PyPI sem isso: um projeto só é considerado abandonado se o dono estiver inacessível, não houver release há doze meses e a página inicial não mostrar atividade; só então pode passar a um novo dono pela regra de abandono. A transferência de repositório do GitHub leva issues, pull requests, estrelas e watchers junto com o código.
-
Ambientes de preview por branch: uma cópia implantada por pull request, removida no merge
Dê a cada pull request uma cópia em execução da aplicação, em URL própria, construída uma vez por commit, nomeada pelo número do pull request, populada com o seed local e ligada a terceiros em sandbox; publique a URL no pull request, limite a concorrência e apague a cópia e os dados no merge, no fechamento ou por inatividade.
-
Um diário pessoal de decisões: registrar a entrada antes de conhecer o resultado
Proposta de formato para um diário pessoal de decisões: uma entrada por escolha relevante, escrita antes de agir, com as opções consideradas, o resultado esperado, a confiança expressa em número e uma data de revisão; a revisão posterior compara expectativa e resultado e separa a qualidade da decisão da sorte do resultado.
-
Uma base de conhecimento pessoal em pastas de texto simples: inbox, notes, sources, projects, archive
Estrutura de pastas para uma base de conhecimento pessoal que uma pessoa ou um agente consegue manter por anos: cinco pastas de nível superior com tempos de vida distintos, uma nota por arquivo com identificador estável e cabeçalho enxuto, um arquivo de índice mantido à mão e uma regra de arquivamento no lugar da exclusão. A estrutura é plana, de modo que busca e links não dependem do local onde o arquivo está.
-
Trabalhando em um repositório grande com sparse checkout e partial clone
O sparse checkout limita quais diretórios aparecem na árvore de trabalho (o modo cone lista diretórios), o partial clone com --filter=blob:none adia o download do conteúdo dos arquivos até que seja necessário, e o shallow clone trunca o histórico; os três resolvem problemas diferentes e podem ser combinados, mas o partial clone exige que o promisor remote esteja online.
-
Endpoints GET que alteram estado são a principal fonte de ações não intencionais disparadas por clientes automatizados
Hipótese: em aplicações web que alteram estado via GET (links de ação em e-mails, page?do=delete, aprovações com um clique), a maioria das alterações sem sessão de usuário correspondente vem de clientes automatizados, como prefetchers de links, scanners de segurança de e-mail, crawlers e bibliotecas HTTP com retentativas. A RFC 9110 prevê explicitamente que esses clientes busquem livremente URIs de métodos seguros e repitam requisições idempotentes após falhas; mover essas ações para POST elimina quase por completo essa classe de problema.
-
Um pacote malicioso foi instalado: contenha a execução antes de substituir credenciais
Uma sequência proposta de resposta a pacotes npm ou Python maliciosos: interromper a execução e a publicação, preservar evidências, revogar credenciais expostas a partir de um sistema limpo, examinar a persistência nos repositórios, recriar os ambientes e verificar a recuperação.
-
JSON Lines: um valor por linha para logs, datasets e respostas em streaming
JSON Lines (também chamado de NDJSON) coloca um valor JSON completo por linha, em UTF-8 sem BOM e com terminador de linha; os arquivos podem receber novos registros, ser divididos, filtrados com grep e comprimidos, e um stream truncado perde apenas a última linha. As sequências de texto JSON da RFC 7464 adicionam um byte separador de registro para recuperação. Use um dos dois no lugar de um único array JSON grande sempre que os registros forem produzidos ou consumidos um a um.
-
Parallax occlusion mapping: rastrear um campo de altura com limites previsíveis
Use interseções dependentes do ponto de vista com um campo de altura para posicionar detalhes de superfície, com limitações explícitas de escala, amostragem e silhueta.
-
Registro de viagens de carro ou bicicleta: distância, duração e condições, com o instrumento de medição indicado
Protocolo proposto para registrar cada viagem: indicar o instrumento (odômetro, sensor de roda com a circunferência configurada ou app de GPS) no cabeçalho e nunca misturar instrumentos na mesma coluna de distância, marcar início e fim em formato RFC 3339, anotar rota, paradas e condições, e tratar a variação entre percursos repetidos como esperada, já que o gps.gov afirma que a precisão de smartphones piora perto de edifícios, pontes e árvores.
-
Passo a passo de um serviço de feature flags: rulesets, avaliação local e rollouts percentuais estáveis
Um passo a passo de design para um serviço de flags: definições servidas como um ruleset versionado por ambiente, SDKs que fazem cache e avaliam localmente, um contexto de avaliação para segmentação, bucketing por hash estável para que os usuários nunca alternem de variante durante um rollout, valores pré-avaliados para clientes não confiáveis e relatórios que identificam flags mortas.
-
Instalação e hardening do servidor OpenSSH nativo no Windows Server
O Add-WindowsCapability instala o recurso OpenSSH Server; o sshd_config fica em %ProgramData%\ssh, as chaves autorizadas de um administrador devem ir para administrators_authorized_keys com uma ACL restrita, senão o servidor as ignora, e o DefaultShell define o que uma sessão SSH realmente executa.
-
Interpolação de snapshots: armazenar em buffer uma linha do tempo remota estável
Renderize o estado remoto entre snapshots com timestamp, escolha um atraso que tolere o jitter da rede e trate amostras ausentes sem confundir interpolação com predição.
-
Fixar dependências NuGet: PackageReference, gerenciamento central de pacotes e packages.lock.json
O NuGet resolve, no momento do restore, a menor versão aplicável de cada pacote, o que pode causar deriva quando surgem novas versões ou intervalos flutuantes; um build repetível declara as versões uma única vez em Directory.Packages.props, ativa RestorePackagesWithLockFile para que o packages.lock.json registre o fecho completo, versiona o arquivo de lock nas aplicações e restaura com --locked-mode no CI.
-
Registrar suposições como dados de primeira classe
Associe cada suposição às decisões que dependem dela, com uma verificação de validação e um gatilho para reconsiderá-la.
-
__slots__ e dataclasses com slots=True: instâncias menores com atributos fixos
Declarar __slots__ substitui o __dict__ de cada instância por um armazenamento fixo, economizando memória e rejeitando atributos digitados errado; @dataclass(slots=True) gera isso a partir dos campos, mas devolve uma nova classe, o que quebra super() sem argumentos e exige weakref_slot=True para referências fracas. Todas as classes base também precisam declarar slots.
-
Cache de build em CI: chaves, fallbacks de restauração e envenenamento de cache
Um cache de CI usa como chave o hash do lockfile, com chaves de fallback ordenadas, é restrito por branch (com a branch padrão como origem compartilhada) e é removido por tamanho ou idade; caches de camadas Docker precisam ser exportados e importados explicitamente na CI. Os caches não são assinados, de modo que qualquer um que consiga gravar em um escopo confiável pode injetar código em builds posteriores.
Legível por máquina: JSON