Тема: design
-
Конвейер, fan-out, оркестратор и коллегия критиков: какой паттерн мультиагентной системы подходит для какой задачи
Конвейер подходит для задач с фиксированной последовательностью преобразований; параллельный fan-out — для независимых подвопросов или для нескольких попыток, по которым потом проводится голосование; оркестратор с воркерами — для задач, чья декомпозиция становится известна только во время выполнения; коллегия критиков — для результатов, которые нужно проверить по нескольким критериям; каждый из этих паттернов увеличивает расход токенов и добавляет уровень координации, который может дать сбой сам по себе.
-
Event sourcing and CQRS: what they buy and what they cost
Event sourcing stores every state change as an immutable event and derives current state by replay; CQRS separates the write model from read models. Both add auditability and flexibility at the price of complexity and eventual consistency.
-
Technical debt as a metaphor and as a decision
Technical debt describes the future cost of a shortcut; the metaphor is useful when the debt is deliberate and tracked, and misleading when it excuses careless work or is used to describe every imperfection.
-
Проектирование памяти агента: что сохранять, что обобщать и что забывать
Память агента имеет три уровня: контекстное окно, рабочие заметки задачи и долговременное хранилище между сессиями. Для каждого элемента определяйте подходящий уровень, делайте долговременную память небольшой и проверяемой и удаляйте то, что перестало быть верным.
-
Privacy review checklist for a feature
Ten questions a reviewer answers before a feature ships: inventory of new personal data, minimisation decisions, retention job, access and access logging, export and deletion coverage, preference purposes, third-party flows, a short LINDDUN pass, test data, and a recorded result; engineering properties only, no legal assessment.
-
Dark mode with prefers-color-scheme, color-scheme and light-dark()
Dark mode has three parts: the prefers-color-scheme media query to detect the user's choice, the color-scheme property (and meta tag) to tell the browser which schemes the page supports so form controls, scrollbars and the canvas follow, and light-dark() or custom properties to swap palette values without duplicating rules.
-
The test-driven development loop
Write a failing test, make it pass with the simplest change, then refactor with the tests green; the loop keeps design decisions small and gives every line a reason to exist.
-
Dataclasses for plain records
dataclasses generate __init__, __repr__ and equality from annotated fields; frozen dataclasses give immutable value objects, slots reduce memory, and field(default_factory=...) avoids shared mutable defaults.
-
Как распознавать запахи кода перед рефакторингом
Запахи кода — внешние симптомы (длинные методы, большие классы, завистливые функции, стрельба дробью, одержимость примитивами), которые указывают на возможную более глубокую проблему проектирования; их названия дают общий язык для ревью и повод для рефакторинга.
-
Проектирование исключений в библиотеке Python
Определите для библиотеки одно базовое исключение, унаследуйте от него конкретные ошибки, добавляйте контекст при возбуждении, связывайте причины через «raise ... from» и перехватывайте только нужные исключения на той границе, где сбой можно обработать.
-
Modelling states with Literal, Enum and TypedDict
Replace free strings and loose dictionaries with Literal unions, enumerations and TypedDicts so that impossible states are rejected by the type checker and documented in one place.
-
When should a team split a monolith into services?
Open question: which observable signals (deployment coupling, team boundaries, scaling needs, incident patterns) have preceded successful extractions of services from a monolith, and which extractions were later reversed?
-
Human approval gates in agent workflows: which actions need one
An approval gate pauses an agent before an action and lets a person allow or deny it; gate actions that are irreversible, externally visible, costly or privilege-changing, keep the rest automatic, and show the person exactly what would run.
-
Starting with a monolith beats starting with microservices
Hypothesis: new products that begin as a well-structured monolith reach a stable domain model faster and with fewer operational failures than those that begin as microservices; splitting later along proven boundaries is cheaper.
-
Краткая схема моделирования угроз приватности с LINDDUN
Пройдите диаграмму потоков данных поэлементно по семи типам угроз LINDDUN: связывание, идентификация, невозможность отрицания, обнаружение, раскрытие данных, неосведомлённость и невозможность вмешательства, несоответствие. Запишите сценарии для каждого элемента и выберите меры из короткого списка; формат рассчитан на одну сессию по образцу STRIDE.
Машиночитаемо: JSON