Tema: design
-
Pipeline, fan-out, orquestrador e painel de críticos: qual padrão multiagente serve para qual tarefa
Um pipeline serve para tarefas com sequência fixa de transformações; o fan-out paralelo, para subquestões independentes ou tentativas repetidas sobre as quais votar; o orquestrador com workers, para tarefas cuja decomposição só se conhece em tempo de execução; o painel de críticos, para saídas que exigem revisão segundo vários critérios. Todos multiplicam o custo em tokens e acrescentam uma camada de coordenação que pode falhar por conta própria.
-
Event sourcing e CQRS: o que oferecem e quanto custam
O event sourcing guarda cada mudança de estado como um evento imutável e obtém o estado atual por reprodução (replay); o CQRS separa o modelo de escrita dos modelos de leitura. Ambos trazem auditabilidade e flexibilidade, ao preço de mais complexidade e de consistência eventual.
-
Dívida técnica como metáfora e como decisão
A dívida técnica descreve o custo futuro de um atalho. A metáfora é útil quando a dívida é deliberada e registrada, e enganosa quando serve de desculpa para trabalho descuidado ou é usada para descrever qualquer imperfeição.
-
Design de memória para agentes: o que persistir, o que resumir e o que esquecer
A memória de um agente tem três camadas: a janela de contexto, um scratchpad da tarefa e um armazenamento durável entre sessões. Decida para cada item a camada a que ele pertence, mantenha a memória durável pequena e revisável e apague o que deixou de ser verdade.
-
Checklist de revisão de privacidade para uma funcionalidade
Dez perguntas que o revisor responde antes de uma funcionalidade ir para produção: inventário de novos dados pessoais, decisões de minimização, job de retenção, acesso e registro de acessos, cobertura de exportação e exclusão, finalidades de preferência, fluxos para terceiros, uma análise LINDDUN rápida, dados de teste e registro do resultado; apenas propriedades de engenharia, sem avaliação jurídica.
-
Modo escuro com prefers-color-scheme, color-scheme e light-dark()
O modo escuro tem três partes: a media query prefers-color-scheme detecta a escolha do usuário; a propriedade color-scheme (e a meta tag) informa ao navegador quais esquemas a página suporta, para que controles de formulário, barras de rolagem e o canvas os acompanhem; e light-dark() ou custom properties trocam os valores da paleta sem duplicar regras.
-
O ciclo do desenvolvimento orientado a testes (TDD)
Escreva um teste que falha, faça-o passar com a mudança mais simples possível e depois refatore com os testes verdes; o ciclo mantém as decisões de design pequenas e dá a cada linha de código uma razão de existir.
-
Dataclasses para registros simples
As dataclasses geram __init__, __repr__ e a comparação de igualdade a partir de campos anotados; dataclasses congeladas (frozen) dão objetos de valor imutáveis, slots reduz o uso de memória e field(default_factory=...) evita valores padrão mutáveis compartilhados.
-
Como reconhecer code smells antes de refatorar
Code smells são sintomas superficiais (métodos longos, classes grandes, feature envy, shotgun surgery, primitive obsession) que sugerem um problema de design mais profundo; nomeá-los fornece um vocabulário para revisões e um gatilho para refatorar.
-
Como projetar exceções em uma biblioteca Python
Defina uma exceção base por biblioteca, derive dela os erros específicos, lance-os com contexto, encadeie as causas com 'raise ... from' e capture de forma restrita na fronteira em que a falha pode ser tratada.
-
Modelagem de estados com Literal, Enum e TypedDict
Substitua strings livres e dicionários soltos por uniões Literal, enumerações e TypedDicts, para que o verificador de tipos rejeite estados impossíveis e eles fiquem documentados em um só lugar.
-
Quando uma equipe deve dividir um monolito em serviços?
Pergunta em aberto: quais sinais observáveis (acoplamento de deploy, fronteiras entre equipes, necessidades de escala, padrões de incidentes) antecederam extrações bem-sucedidas de serviços a partir de um monolito, e quais extrações foram depois revertidas?
-
Portões de aprovação humana em fluxos de agentes: quais ações precisam de um
Um portão de aprovação pausa o agente antes de uma ação e permite que uma pessoa a autorize ou negue; coloque portões em ações irreversíveis, visíveis externamente, custosas ou que alterem privilégios, mantenha o restante automático e mostre à pessoa exatamente o que seria executado.
-
Começar com um monolito é melhor do que começar com microsserviços
Hipótese: produtos novos que começam como um monolito bem estruturado chegam mais depressa a um modelo de domínio estável e com menos falhas operacionais do que os que começam com microsserviços; dividir mais tarde, ao longo de fronteiras já comprovadas, sai mais barato.
-
Modelagem de ameaças à privacidade com LINDDUN: visão geral
Percorra um diagrama de fluxo de dados elemento a elemento com os sete tipos de ameaça do LINDDUN (linking, identifying, non-repudiation, detecting, data disclosure, unawareness and unintervenability, non-compliance), registre cenários por elemento e escolha mitigações de um menu curto; um formato de uma sessão, inspirado numa sessão STRIDE.
Legível por máquina: JSON