Параметри конструктора просто в оголошенні типу: class Service(ILogger log). Для class і struct з'явилися в C# 12; параметри видно в усьому тілі типу, але вони не стають властивостями.
Глосарій
Терміни, що трапляються у відповідях. У тексті вони підкреслені пунктиром і відкриваються натисканням.
- .editorconfig
Файл налаштувань у репозиторії, спільний для IDE і збирання: відступи, стиль коду й важливість правил аналізаторів (
dotnet_diagnostic.CA2016.severity = error). Діє на папку, де лежить, і вкладені.- .NET Core (сучасний .NET)
Кросплатформна реалізація .NET з відкритим кодом, з'явилася у 2016 році. З версії 5 називається просто .NET і виходить щолистопада.
- .NET Framework
Початкова реалізація .NET лише для Windows, входить до складу ОС. Остання версія — 4.8.1; підтримується, доки підтримується Windows, але нових можливостей не отримує.
- .NET Hosting Bundle
Інсталятор для Windows-сервера з IIS: ставить рантайм .NET, ASP.NET Core і ASP.NET Core Module. Без нього IIS не вміє запускати застосунки ASP.NET Core.
- .NET SDK
Набір для розробки: компілятор, MSBuild, шаблони й команда
dotnetзbuild,test,publish. Рантайм потрібен лише для запуску готового застосунку, а версію SDK для репозиторію фіксують уglobal.json.- .NET Standard
Формальна специфікація API, доступних у кількох реалізаціях .NET. Остання версія — 2.1;
netstandard2.0— остання, яку підтримує .NET Framework.- «Банда чотирьох» (Gang of Four, GoF)
Еріх Гамма, Річард Гелм, Ральф Джонсон і Джон Вліссідес — автори книги «Design Patterns» (1994), де описано 23 класичні патерни у трьох групах.
- Абсолютне закінчення терміну (absolute expiration)
Запис видаляється з кешу в заданий момент або через заданий час після додавання, скільки б його не читали.
- Абстрактна фабрика (Abstract Factory)
Породжувальний патерн: інтерфейс із методами створення цілого сімейства узгоджених об'єктів без зазначення їхніх конкретних класів. Приклад у .NET —
DbProviderFactory.- Абстрактний клас (abstract class)
Клас із модифікатором
abstract: створити його екземпляр не можна, лише успадкуватися. Може містити поля, конструктори, готові методи й абстрактні члени без тіла, які нащадок зобов'язаний реалізувати.- Абстракція (abstraction)
Принцип ООП: назовні видно лише суттєвий для клієнта контракт — що об'єкт уміє, а не як він це робить. У C# абстракцію задають інтерфейси та абстрактні класи.
- Автентифікація (authentication)
Перевірка того, хто робить запит: за паролем, сертифікатом, обліковим записом Windows або токеном. В ASP.NET Core її результат —
ClaimsPrincipalуHttpContext.User.- Автокоміт (autocommit)
Режим, у якому кожен оператор — окрема транзакція й фіксується одразу після виконання. Режим за замовчуванням у SQL Server, SqlClient і PostgreSQL.
- Авторизація (authorization)
Рішення, що дозволено вже відомому користувачеві: який endpoint викликати, який документ відкрити. Відмова користувачеві, що увійшов, — 403, тому, що не увійшов, — 401.
- Авторизація за ресурсом (resource-based authorization)
Перевірка доступу до конкретного об'єкта — документа, заявки — після його завантаження. В ASP.NET Core виконується в коді викликом
IAuthorizationService.AuthorizeAsync(user, resource, policy).- Агрегат (aggregate)
Група пов'язаних об'єктів, яку змінюють як єдине ціле через корінь. Агрегат — межа консистентності: його інваріанти виконуються після кожної транзакції.
- Агрегатна функція
Функція, яка згортає набір рядків в одне значення:
COUNT,SUM,AVG,MIN,MAX. Усі вони, крімCOUNT(*), пропускаютьNULL.- Адаптер (Adapter)
Структурний патерн: обгортка реалізує інтерфейс, якого чекає клієнт, і перекладає виклики в API іншого об'єкта з несумісним інтерфейсом.
- Адаптер платформи (platform adapter)
Шар, через який NestJS працює з HTTP-бібліотекою:
@nestjs/platform-express(за замовчуванням) або@nestjs/platform-fastify. Код на декораторах NestJS від вибору адаптера не залежить.- Амортизована складність (amortized complexity)
Середня вартість операції на довгій серії викликів.
List<T>.Addіноді копіює весь масив за O(n), але в середньому коштує O(1), бо місткість зростає подвоєнням.- Аналіз null-стану (null-state analysis)
Статичний аналіз компілятора, який відстежує для кожного виразу стан not-null або maybe-null з урахуванням перевірок, присвоєнь і атрибутів на кшталт
[NotNullWhen].- Аналізатор Roslyn (Roslyn analyzer)
Розширення компілятора C#, яке перевіряє код під час збирання та в IDE й видає діагностики на кшталт
CA2016абоIDE0161. Аналізатори якості коду вбудовані в .NET SDK із .NET 5.- Анемічна модель предметної області (anemic domain model)
Модель, у якій сутності — лише дані з властивостями, а вся логіка й перевірки живуть у сервісах. Фаулер вважає її антипатерном; вона не пов'язана з вибором шаруватої чи чистої архітектури.
- Аномалії зміни (update anomalies)
Помилки, що виникають, коли один факт зберігається в кількох рядках: під час оновлення змінюють не всі копії, під час видалення втрачають зайві дані, а під час вставлення не можуть завести запис без пов'язаного.
- Анонімний метод (anonymous method)
Процедура або функція без імені, яку можна присвоїти змінній типу
reference to procedureабо передати параметром. Це замикання: воно захоплює зовнішні змінні (не значення) і подовжує їм життя. З'явилися в Delphi 2009.- Анотація типу (type hint)
Зазначення типу параметра, змінної або результату функції:
item_id: int,-> dict. Інтерпретатор її не перевіряє, але її читають mypy, IDE та бібліотеки на кшталт FastAPI і Pydantic.- Антиз'єднання (anti semi join)
З'єднання, яке повертає рядки лівої таблиці, що не мають жодної пари праворуч. У SQL його пишуть через
NOT EXISTS;NOT INдає той самий результат, лише якщо в підзапиті немаєNULL.- Антипатерн (anti-pattern)
Часто повторюване розв'язання, яке здається розумним, але завдає більше шкоди, ніж користі, і для якого відома краща заміна.
- Артефакт збирання (build artifact)
Результат конвеєра, який зберігають і розгортають: архів із результатом
dotnet publish, NuGet-пакет або образ контейнера. Його збирають один раз і просувають оточеннями без перезбирання.- Асимптотична складність (O-нотація)
Оцінка того, як зростає час або пам'ять операції зі зростанням кількості елементів n. O(1) — не залежить від n, O(log n) — зростає дуже повільно, O(n) — пропорційно n.
- Асинхронний запит-відповідь (asynchronous request-reply)
Патерн для довгих операцій по HTTP: сервер одразу відповідає 202 Accepted з адресою статусу, а клієнт опитує її або отримує сповіщення, коли результат готовий.
- Асинхронний потік даних (async stream)
Послідовність
IAsyncEnumerable<T>, елементи якої надходять асинхронно. Створюється методомasyncзyield return, читається черезawait foreach; з'явилася в C# 8.- Атомарна операція
Операція, яка виконується повністю: інші потоки бачать або стан до неї, або після, але не проміжний. У .NET атомарні читання й запис вирівняних значень до розміру вказівника та методи Interlocked.
- Атрибут [ApiController]
Атрибут контролера, який вмикає поведінку для API: обов'язкову маршрутизацію атрибутами, автоматичну відповідь 400 у разі помилок валідації, виведення джерел параметрів і ProblemDetails для кодів помилок.
- Багатоетапне збирання (multi-stage build)
Dockerfile з кількома
FROM: на одних етапах збирають, в останній копіюють лише результат черезCOPY --from. Інструменти збирання не потрапляють у підсумковий образ.- Багатоінструкційна таблична функція (multi-statement TVF)
Функція, яка заповнює табличну змінну кількома інструкціями й повертає її. Оптимізатор не бачить її вмісту й оцінює результат у фіксовані 100 рядків, а до SQL Server 2014 — в один.
- Балансувальник навантаження (load balancer)
Компонент, що розподіляє вхідний трафік між екземплярами сервісу й виключає несправні. L4 працює з TCP/UDP-з'єднаннями, L7 — з HTTP-запитами.
- Бар'єр пам'яті (memory barrier)
Інструкція, яка забороняє компілятору й процесору переносити звертання до пам'яті через неї. Повний бар'єр у .NET дають Interlocked і Thread.MemoryBarrier.
- Батьківський контрол (Parent)
Віконний контрол (
TWinControl), усередині якого відображається контрол. Відповідає за положення й малювання дочірніх контролів і теж звільняє їх разом із собою.- Безпечна точка (safe point)
Місце в коді, де рантайм точно знає, де лежать посилання, і може зупинити потік для збирання. Блокувальне збирання чекає, доки потоки дійдуть до таких точок; потік у нативному коді не зупиняють, але повернутися в керований код до кінця збирання він не зможе.
- Безпечний метод HTTP
Метод, який за семантикою не змінює стан сервера: GET, HEAD, OPTIONS, TRACE. Такі запити можна кешувати й повторювати без наслідків.
- Бінарний пошук (binary search)
Пошук у відсортованому масиві поділом діапазону навпіл: порівняти із серединою й відкинути половину, де елемента бути не може. Працює за O(log n); у .NET —
Array.BinarySearchіList<T>.BinarySearch.- Блок @defer (deferrable views)
Блок шаблону, код якого завантажується окремим чанком за тригером: поява в області видимості, простій браузера, взаємодія. Блоки
@placeholderі@loadingпоказують заглушку. З'явився в Angular 17.- Блокова модель (box model)
Подання кожного елемента в CSS як прямокутника з вмісту, внутрішнього відступу (padding), рамки (border) і зовнішнього відступу (margin). Що входить у
width, задаєbox-sizing.- Блокувальний ресурс (render-blocking resource)
Ресурс, без якого браузер не почне відмальовування: стилі в
headі синхронні скрипти. Скрипти зdefer,asyncі модулі не блокують.- Блокування Sch-M (schema modification)
Блокування, яке бере DDL під час зміни об'єкта. Несумісне з жодним іншим блокуванням, тому поки воно чекає або утримується, усі запити до таблиці стоять.
- Божественний об'єкт (God object)
Антипатерн: один клас знає і робить забагато — перевірки, розрахунки, доступ до даних, інтеграції. Його змінюють у кожній задачі, і він тягне за собою десятки залежностей.
- Брокер повідомлень (message broker)
Проміжний сервер, який приймає повідомлення від відправників, зберігає їх і доставляє отримувачам. Відправнику не потрібно, щоб отримувач був доступний у момент надсилання. Приклади — RabbitMQ, Apache Kafka, Azure Service Bus.
- Брудне читання (dirty read)
Аномалія, за якої транзакція читає зміни іншої транзакції, ще не зафіксовані й здатні відкотитися. Можливе лише на READ UNCOMMITTED, зокрема через
NOLOCK.- Будівельник (Builder)
Породжувальний патерн: складний об'єкт збирається покроковими викликами окремого об'єкта-збирача, а підсумковий метод
Buildперевіряє дані й повертає результат.- Вбудований control flow (@if, @for, @switch)
Синтаксис шаблонів Angular 17+ для умов і циклів замість директив
*ngIf,*ngForіngSwitch. В@forобов'язковийtrack, є блок@empty; старі директиви deprecated із v20.- Вбудовувана таблична функція (inline TVF)
Функція вигляду
RETURNS TABLE AS RETURN (SELECT ...). Оптимізатор підставляє її текст у запит, як параметризоване представлення, і будує спільний план.- Велика грудка бруду (Big Ball of Mud)
Система без помітної архітектури, що виросла з миттєвих рішень. Описана Браяном Футом і Джозефом Йодером 1997 року.
- Версіонування рядків (row versioning)
Механізм, за якого зміна рядка зберігає його попередню зафіксовану версію. Читачі беруть відповідну версію замість очікування блокувань; на ньому побудовані RCSI і SNAPSHOT.
- Версіонування API
Підтримка кількох версій контракту одночасно, щоб несумісні зміни не зачіпали старих клієнтів. Версію передають у шляху, query-параметрі, заголовку або media type.
- Взаємоблокування (deadlock)
Ситуація, коли потоки назавжди чекають один на одного: кожен тримає ресурс, потрібний іншому. Типова причина — захоплення тих самих блокувань у різному порядку.
- Вибух ролей (role explosion)
Неконтрольоване зростання кількості ролей, коли під кожне поєднання посади, відділу, регіону чи проєкту заводять окрему роль. Ознака того, що параметр час винести в атрибут (ABAC) або відношення (ReBAC).
- Видимість членів класу в Delphi
Розділи
private,protected,publicіpublished.privateіprotectedу Delphi видно всьому модулю, тому для доступу лише з класу єstrict privateіstrict protected, аpublishedдодатково генерує RTTI.- Виділення пам'яті запиту (memory grant)
Пам'ять, яку запит резервує до старту під сортування й хеш-таблиці, виходячи з оцінки кількості рядків. Завищена оцінка змушує інші запити чекати пам'яті, занижена веде до скидання даних у tempdb (spill).
- Виключення секцій (partition elimination)
Оптимізація, за якої запит з умовою за стовпцем секціонування читає лише потрібні секції. Без такої умови запит обходить усі секції.
- Вимога авторизації (authorization requirement)
Клас із маркерним інтерфейсом
IAuthorizationRequirement: описує правило та його параметри, наприклад потрібне право чи мінімальний вік. Саму перевірку виконують handlers.- Випадкова складність (accidental complexity)
Складність, яку вносить рішення, а не задача: зайві шари, абстракції, інструменти. Протиставлена суттєвій складності в есеї Фреда Брукса «No Silver Bullet» (1986).
- Вираз with (with expression)
Створює копію record або структури зі зміненими властивостями:
p with { X = 1 }. Копія поверхнева: посилальні поля вказують на ті самі об'єкти.- Вирівняний індекс (aligned index)
Індекс, секціонований так само, як його таблиця: та сама функція або функція з тими самими межами й стовпцем. Лише з вирівняними індексами можливе перемикання секцій.
- Виробник — споживач (producer-consumer)
Схема, де одні потоки кладуть роботу в спільну чергу, а інші забирають і обробляють. Черга розв'язує темп виробництва й обробки.
- Витік пам'яті (memory leak)
Ріст споживання пам'яті через об'єкти, які більше не потрібні, але лишаються досяжними, або через незвільнені некеровані ресурси. У .NET це зазвичай забуті підписки на події, статичні колекції й кеші без обмежень.
- Вичерпність (exhaustiveness)
Властивість
switch-виразу: його гілки покривають усі можливі значення входу. Якщо ні, компілятор видає попередження CS8509.- Виявлення змін (change detection)
Механізм, який порівнює значення виразів у шаблонах із минулими й оновлює змінені частини DOM. Запускається за сигналом zone.js або за сповіщеннями сигналів і подій.
- Відвідувач (visitor)
Поведінковий патерн GoF: операції над ієрархією виносять в окремий клас-відвідувач із методом на кожен тип, а елементи викликають потрібний метод через
Accept. Додавати операції легко, нові типи — важко.- Віддалений репозиторій (remote)
Іменоване посилання на іншу копію репозиторію, зазвичай на сервері:
originстворюється під часgit clone. З ним обмінюються комітами командамиfetch,pullіpush.- Відкладене виконання (deferred execution)
Запит LINQ виконується не під час оголошення, а під час перебору результату, і виконується заново під час кожного перебору. Так працюють методи, що повертають
IEnumerable<T>:Where,Select,OrderBy.- Відкликання токена
Визнання токена недійсним до закінчення строку. Самодостатній JWT API перевіряє локально, тому для відкликання потрібен список відкликаних
jtiабо інтроспекція.- Відображений тип (mapped type)
Тип вигляду
{ [K in keyof T]: ... }, який перебирає ключі й будує з них новий об'єктний тип. Уміє додавати й зніматиreadonlyі?та перейменовувати ключі черезas.- Віконна функція
Функція з
OVER (...), яка рахує значення за набором рядків, пов'язаних із поточним, і, на відміну відGROUP BY, не згортає рядки. Приклади —ROW_NUMBER,LAG,SUM() OVER.- Віртуальне оточення (venv)
Каталог із посиланням на інтерпретатор Python і власним набором пакетів. Ізолює залежності одного проєкту від системи та інших проєктів.
- Віртуальне прокручування (virtual scrolling)
Прийом, за якого в DOM є лише видимі рядки довгого списку, а решта підставляються під час прокручування. В Angular —
cdk-virtual-scroll-viewportіз CDK або вбудований режим таблиць бібліотек компонентів.- Віртуальний метод (virtual method)
Метод із модифікатором
virtualабоabstract, який нащадок може перевизначити черезoverride. Яка реалізація викличеться, вирішує реальний тип об'єкта під час виконання.- Вітрина даних (data mart)
Окрема база або схема під звіти одного напряму: продажі, склад, фінанси. Її наповнює ETL, а структура заточена під агрегати, а не під запис.
- Вкладені групи
Групи AD, що входять до інших груп. Член вкладеної групи отримує права зовнішньої; Windows-токен і атрибут
tokenGroupsуже містять таке транзитивне членство, аmemberOf— лише пряме.- Включені стовпці (INCLUDE)
Неключові стовпці некластерного індексу, які зберігаються лише на листковому рівні. Вони не сортуються й не беруть участі в пошуку, зате покривають запит, не розширюючи ключ.
- Власник компонента (Owner)
Компонент, переданий у конструктор
TComponent.Create(AOwner). Власник зберігає список своїх компонентів і звільняє їх у своєму деструкторі, тому кнопки форми звільняються разом із формою.- Власник компонента (Owner)
Компонент, переданий у конструктор
Create(AOwner). Зберігає список своїх компонентів уComponentsі звільняє їх під час власного знищення.- Властивість Delphi (property)
Член класу, який виглядає як поле, але читається й записується через специфікатори
readіwrite: напряму з поля або через метод. Безwriteвластивість доступна лише для читання.- Внутрішнє з'єднання (INNER JOIN)
З'єднання, яке повертає лише пари рядків двох таблиць, для яких виконалася умова в
ON. Рядки без пари в результат не потрапляють.- Внутрішньопроцесний COM-сервер (in-process COM server)
COM-об'єкт у DLL, який завантажується в процес клієнта. Тому його розрядність має збігатися з розрядністю клієнта, на відміну від позапроцесного сервера в EXE.
- Водяний знак завантаження (watermark)
Збережена межа останнього завантаження: максимальна
rowversionабо дата зміни. Наступний запуск читає лише рядки за цією межею — так будується інкрементальне завантаження.- Впровадження залежностей (dependency injection, DI)
Прийом, за якого об'єкт отримує свої залежності ззовні, зазвичай через конструктор, а не створює їх сам. В ASP.NET Core залежності створює й передає вбудований контейнер.
- Впровадження через властивості (property injection)
Спосіб DI, за якого контейнер присвоює залежності публічним властивостям уже створеного об'єкта. Вбудований контейнер .NET його не підтримує, Autofac — підтримує.
- Впровадження через конструктор (constructor injection)
Спосіб DI, за якого залежності приходять параметрами конструктора. Усі залежності класу видно в його сигнатурі, а об'єкт не може існувати без них.
- Втрачене оновлення (lost update)
Аномалія, за якої дві транзакції читають одне значення, змінюють його й записують, і запис останньої затирає зміну першої. Типова для шаблону «прочитав у застосунку — записав нове значення».
- Гарячий шлях (hot path)
Ділянка коду, яка виконується дуже часто й помітно впливає на продуктивність. Лише на ній виправдані мікрооптимізації на кшталт
ValueTask.- Генератор (generator)
Функція з
yield: її виклик повертає ітератор, який виконує тіло частинами, до черговогоyield. Значення обчислюються ліниво, по одному.- Генератор вихідного коду (source generator)
Розширення компілятора Roslyn, яке під час збирання додає в проєкт згенерований код. Замінює рефлексію в рантаймі: так працюють
[LoggerMessage],[OptionsValidator]і[GeneratedRegex].- Генератор колекції (comprehension)
Вираз, який будує список, словник або множину з ітерованого об'єкта з фільтром:
[x * x for x in items if x > 0]. АналогSelectіWhereз LINQ.- Гідратація (hydration)
Відновлення застосунку в браузері поверх HTML, відмальованого на сервері (SSR): Angular перевикористовує готовий DOM, а не будує його заново. Стабільна з v17, інкрементальна — з v20.
- Гідратація (hydration)
Прив'язування React до HTML, що прийшов із сервера: React будує дерево компонентів і підключає обробники подій до готової розмітки. Перший клієнтський рендер має збігтися з HTML сервера.
- Гілка (branch)
Рухомий вказівник на коміт. Під час нового коміту поточна гілка автоматично зсувається на нього, тому створити гілку — означає записати один хеш, а не копіювати файли.
- Гілка віддаленого відстеження (remote-tracking branch)
Локальне посилання на кшталт
origin/main, яке запам'ятовує, де була гілка на сервері під час останньогоfetch. У неї не комітять напряму: її оновлюютьfetchіpull.- Гістограма статистики (histogram)
Частина статистики: до 200 кроків за значеннями першого стовпця. Для кожного кроку відомо, скільки рядків дорівнює його межі й скільки лежить усередині діапазону.
- Головний потік VCL
Потік, у якому створюються вікна й працює цикл повідомлень застосунку. VCL не потокобезпечна, тому контроли змінюють лише з нього.
- Голодування пулу потоків (thread pool starvation)
Стан, коли в пулу немає вільних потоків для нової роботи, бо наявні заблоковані. Проявляється зростанням затримок за низького завантаження CPU.
- Горизонт xmin (xmin horizon)
Номер найстарішої транзакції, чий знімок ще може знадобитися: відкритої транзакції, слота реплікації або репліки. VACUUM не видаляє версії рядків, новіші за горизонт, тому одна довга транзакція спричиняє bloat у всій базі.
- Горизонтальне масштабування (scale out)
Зростання пропускної здатності через додавання екземплярів сервісу, а не посилення одного сервера (вертикальне, scale up). Вимагає, щоб екземпляри не зберігали стан у себе.
- Граф (graph)
Набір вершин і ребер між ними: міста й дороги, задачі й залежності, користувачі та зв'язки. Ребра бувають напрямленими й зваженими; готового типу графа в .NET немає.
- Граф дедлоку (deadlock graph)
XML-звіт про дедлок: учасники, утримувані й очікувані ресурси, режими блокувань, тексти запитів і жертва. У SQL Server його за замовчуванням пише сесія Extended Events
system_health(подіяxml_deadlock_report).- Група доступності Always On (availability group)
Механізм високої доступності SQL Server: первинна репліка надсилає журнал вторинним, і в разі збою одна з них стає первинною. В Enterprise вторинні репліки можна відкрити для читання.
- Група маршрутів (route group)
Набір ендпоінтів Minimal API зі спільним префіксом, створений через
MapGroup(.NET 7+). Фільтри, авторизація й метадані, задані групі, застосовуються до всіх її ендпоінтів.- Група споживачів (consumer group)
Набір споживачів Kafka зі спільним
group.id, які разом читають топік. Партиції діляться між учасниками, а позиція читання в групи спільна.- Група SignalR
Іменований набір з'єднань, яким можна надіслати повідомлення одним викликом
Clients.Group(name). Зберігається в пам'яті й не відновлюється після перепідключення.- Два вказівники (two pointers)
Прийом, за якого два індекси рухаються масивом назустріч один одному або в один бік. Розв'язує задачі на відсортованих масивах за O(n) і O(1) пам'яті: пара із заданою сумою, паліндром, злиття.
- Двійкова купа (binary heap)
Дерево, що зберігається в масиві, де кожен батько не більший за своїх нащадків, тому мінімум лежить у корені. Вставка й вилучення мінімуму — O(log n). У .NET на купі побудовано
PriorityQueue<TElement, TPriority>.- Двійкове дерево пошуку (binary search tree)
Дерево, де в кожного вузла ключі ліворуч менші, а праворуч більші. Пошук, вставка й видалення коштують O(висоти): O(log n) у збалансованого дерева й O(n) у виродженого.
- Двофазний коміт (two-phase commit, 2PC)
Протокол розподіленої транзакції: координатор спершу питає всіх учасників про готовність, потім розсилає commit або rollback. Учасники тримають блокування до рішення координатора.
- Девіртуалізація (devirtualization)
Оптимізація JIT: віртуальний або інтерфейсний виклик замінюється прямим, якщо точний тип відомий, наприклад у
sealed-класу. Після цього метод можна вбудувати (inline).- Дедуплікація повідомлень
Відкидання повторно доставлених повідомлень за їхнім id або бізнес-ключем. Зазвичай це таблиця оброблених id з унікальним ключем, яку поповнюють в одній транзакції зі зміною даних.
- Декоратор (decorator)
Патерн, за якого об'єкт обгортає інший об'єкт з тим самим інтерфейсом і додає поведінку до або після виклику: кеш, логування, повтори. Вбудований контейнер .NET декоратори не підтримує.
- Декоратор (decorator)
Функція, яка приймає функцію або клас і повертає заміну. Запис
@dнадdef fдорівнюєf = d(f); обгортку оформлюють черезfunctools.wraps.- Делегат (delegate)
Тип, екземпляр якого посилається на метод і, якщо метод екземплярний, на об'єкт. Готові делегати —
Func<...>іAction<...>.- Делегування (delegation)
Прийом композиції: об'єкт переадресовує виклик своєму компоненту, іноді додаючи поведінку до або після. Не плутати з делегатами C# — типами-посиланнями на методи.
- Денормалізація
Свідоме дублювання даних заради швидкості читання: підсумок у шапці документа, копія назви, звітна таблиця. Потребує механізму, який тримає копії узгодженими.
- Дерево виразів (expression tree)
Подання коду у вигляді об'єктів
System.Linq.Expressions. Лямбда, присвоєнаExpression<Func<...>>, стає деревом, яке провайдер може розібрати й перекласти, наприклад, на SQL.- Дерево доступності (accessibility tree)
Структура, яку браузер будує з DOM для допоміжних технологій: кожен вузол має роль, доступне ім'я, опис і стан.
- Джерело скасування (CancellationTokenSource)
Об'єкт, який видає токени й скасовує їх викликом
Cancelабо за тайм-аутом черезCancelAfter. РеалізуєIDisposable, після використання його звільняють.- Динамічне програмування (dynamic programming)
Метод розв'язання задач, які складаються з підзадач, що перекриваються: відповідь кожної підзадачі обчислюють один раз і перевикористовують. Перетворює експоненційний перебір на поліноміальний алгоритм.
- Динамічний батчинг (dynamic batching)
Прийом сервера інференсу: запити, що надійшли майже одночасно, збираються в одну пачку й проходять через модель за один виклик. Підвищує завантаження GPU ціною невеликої затримки.
- Динамічний метод (dynamic)
Перевизначуваний метод, який викликається через таблицю DMT: вона зберігає лише методи, оголошені або перевизначені в самому класі. За змістом рівний
virtual, але заощаджує пам'ять ціною повільнішого виклику.- Динамічний проксі (dynamic proxy)
Тип-замісник, згенерований під час виконання, що перехоплює виклики методів. Так працюють Castle DynamicProxy, моки Moq, ліниве завантаження EF Core і
DispatchProxy.- Директива 'use cache'
Директива Next.js (Cache Components), яка кешує результат асинхронної функції, компонента або всіх експортів файлу. Ключ кешу — аргументи й захоплені значення, строк задає
cacheLife, мітки для скидання —cacheTag.- Директива Angular
Клас із декоратором
@Directive, який додає поведінку наявному елементу, наприклад змінює класи чи атрибути. Компонент — окремий випадок директиви з власним шаблоном.- Діапазонне блокування (key-range lock)
Блокування діапазону ключів індексу між наявними рядками. Його ставить SERIALIZABLE або хінт
HOLDLOCK, щоб у прочитаний діапазон не можна було вставити рядок, тобто щоб не було фантомів.- Доменна подія (domain event)
Об'єкт, що описує значущий для бізнесу факт у минулому часі:
OrderSubmitted. Інші частини системи реагують на нього, не пов'язуючись із джерелом напряму.- Допуск розбіжності годинників (clock skew)
Запас часу під час перевірки
expіnbfна випадок, якщо годинники видавця й API розходяться. УTokenValidationParameters.ClockSkewза замовчуванням 5 хвилин.- Драйверний адаптер Prisma (driver adapter)
Пакет, через який Prisma Client виконує запити звичайним драйвером бази, наприклад
@prisma/adapter-pgповерхpg. Із Prisma 7 адаптер обов'язковий, а пул з'єднань налаштовується в драйвері.- Дрібнозернисте блокування (fine-grained locking)
Прийом, за якого структуру захищає не одне блокування, а кілька, кожне на свою частину даних. Потоки, що працюють із різними частинами, не заважають одне одному.
- Експоненційна затримка (exponential backoff)
Пауза між повторами, яка зростає в рази з кожною спробою: 1, 2, 4, 8 секунд. Дає перевантаженому сервісу час відновитися.
- Ескалація блокувань (lock escalation)
Заміна безлічі дрібних блокувань одним блокуванням таблиці або секції. SQL Server намагається її виконати, коли одна інструкція тримає 5000 і більше блокувань на одному об'єкті.
- Ефект (useEffect)
Код, який React виконує після відмальовування, щоб синхронізувати компонент із зовнішньою системою: підпискою, таймером, з'єднанням, стороннім віджетом.
- Європейський акт про доступність (European Accessibility Act, EAA)
Директива ЄС 2019/882, яка з 28 червня 2025 року вимагає доступності низки продуктів і послуг: інтернет-магазинів, банків, транспорту, електронних книг. Технічна опора — EN 301 549.
- Єдина мова (ubiquitous language)
Спільний словник розробників і експертів предметної області всередині одного обмеженого контексту. Ті самі слова звучать у розмовах, вимогах, іменах класів і методів.
- Єдина точка відмови (single point of failure)
Компонент, відмова якого зупиняє всю систему: єдиний екземпляр шлюзу, бази чи балансувальника. Усувається резервуванням у різних зонах відмови.
- Жадібне завантаження (eager loading)
Завантаження пов'язаних даних у тому самому запиті, що й основних: в EF Core —
IncludeіThenInclude, які перетворюються наJOINабо, зі split query, на окремі запити.- Жорсткий ліміт купи (GCHeapHardLimit)
Максимальний обсяг пам'яті, який може зайняти купа GC. У контейнері з лімітом пам'яті за замовчуванням дорівнює більшому з 20 МБ і 75 % ліміту; задається через
GCHeapHardLimitабоGCHeapHardLimitPercent.- Журнал транзакцій (write-ahead log, WAL)
Послідовний журнал змін, який пишеться на диск раніше за сторінки даних. Під час коміту база чекає запису журналу, а після збою відновлює за ним зафіксоване й відкочує незафіксоване.
- Задача (Task)
Об'єкт, який описує асинхронну роботу та її майбутній результат. За замовчуванням делегат задачі виконується на пулі потоків, а задача від асинхронного I/O може взагалі не займати потік.
- Задача asyncio (Task)
Обгортка, яка ставить корутину в чергу циклу подій і виконує її незалежно від коду, що її викликав. Створюється через
asyncio.create_task(); цикл тримає на задачі лише слабкі посилання.- Заздрість до функцій (feature envy)
Запах коду з каталогу Фаулера: метод працює з даними чужого класу більше, ніж зі своїми. Зазвичай його варто перенести в той клас.
- Закон Деметри (Law of Demeter)
Правило «говори лише з найближчими друзями»: метод викликає методи свого об'єкта, параметрів, створених у ньому об'єктів і полів, але не ходить ланцюжком
a.B.C.D().- Закон Конвея (Conway's law)
Спостереження Мелвіна Конвея (1968): організації проєктують системи, структура яких копіює структуру комунікацій у самій організації. Тому межі сервісів зазвичай збігаються з межами команд.
- Закріплення (pinning)
Заборона GC переміщати об'єкт, щоб передати його адресу в нативний код:
fixed,GCHandleз типомPinnedабо алокація в POH. Закріплені об'єкти заважають ущільненню й фрагментують купу.- Закріплення плану (plan forcing)
Прив'язка конкретного плану з Query Store до запиту процедурою
sp_query_store_force_plan. Сервер компілює запит із цим планом, доки закріплення не знімуть або план не стане неможливим.- Замикання (closure)
Лямбда або локальна функція разом із захопленими змінними зовнішньої області. Компілятор переносить захоплені змінні в поля згенерованого класу, і вони живуть, доки живий делегат.
- Замикання (closure)
Вкладена функція разом зі змінними охопної функції, які вона використовує. Змінні зберігаються в комірках (
__closure__) і живуть, поки жива функція; переприв'язати їх можна черезnonlocal.- Замикання в JavaScript (closure)
Функція разом із посиланням на лексичне оточення, у якому її створили. Захоплені змінні живуть, доки жива функція, і видимі їй за посиланням, а не копією значення.
- Замісник (Proxy)
Структурний патерн: об'єкт із тим самим інтерфейсом, що й реальний, керує доступом до нього — створює ліниво, викликає віддалено, перевіряє права або кешує.
- Заморожування фіч (feature freeze)
Період, коли в продукт не додають нової функціональності, а лише виправляють помилки. Під час міграції так уникають перенесення кожної нової фічі у дві версії.
- Застаріле замикання (stale closure)
Функція, яка захопила props або state старого рендера й далі працює з ними. Типово для ефектів і таймерів із неповним масивом залежностей.
- Затримка event loop (event loop delay)
Наскільки пізніше запланованого цикл подій встигає виконати колбек. Зростання затримки означає, що головний потік зайнятий синхронною роботою; її вимірює
perf_hooks.monitorEventLoopDelay().- Захисна копія (defensive copy)
Прихована копія структури, яку компілятор робить під час виклику її методу через
readonly-поле абоin-параметр, щоб метод не змінив вихідне значення. Не виникає вreadonly struct.- Збережена процедура
Іменований набір інструкцій T-SQL на сервері з параметрами. Може змінювати дані, керувати транзакціями й повертати кілька наборів рядків; план кешується під час першого виконання.
- Збирач сміття (garbage collector, GC)
Частина CLR, яка виділяє пам'ять у керованій купі й автоматично звільняє пам'ять об'єктів, недосяжних від коренів. У .NET це трасувальний збирач з поколіннями та ущільненням.
- Збірка (assembly)
Файл
.dllабо.exeз IL-кодом, метаданими й маніфестом. Одиниця розгортання, версіонування й завантаження коду в .NET.- Зв'язаний список (linked list)
Ланцюжок вузлів, де кожен вузол зберігає елемент і посилання на сусідів. Вставка й видалення за відомим вузлом — O(1), але доступу за індексом немає. У .NET це двозв'язний
LinkedList<T>.- Зв'язаність у часі (temporal coupling)
Залежність, за якої системи мають працювати одночасно, щоб взаємодія вдалася. Синхронний виклик зв'язує в часі, обмін через чергу чи файли — ні.
- Зв'язність (cohesion)
Міра того, наскільки члени модуля або класу працюють на одне завдання. Висока зв'язність — дані та методи, які з ними працюють, разом; низька — класи на кшталт
Utils.- Зв'язування імені (name binding)
Присвоєння в Python прив'язує ім'я до об'єкта, а не кладе значення в комірку.
b = aдає друге ім'я тому самому об'єкту, копія не створюється.- Звірка (reconciliation)
Періодичне порівняння даних двох систем: кількість, суми й номери документів за період. Знаходить те, що загубилося або задвоїлося, попри квитанції й повтори.
- Звіт про доставку (delivery receipt, DLR)
Асинхронне сповіщення від SMS-центру про фінальний статус повідомлення: доставлено, сплив термін, не доставлено. У SMPP надходить операцією deliver_sm; формат тексту залежить від SMSC.
- Зворотний проксі (reverse proxy)
Сервер перед застосунком, який приймає запити з мережі й пересилає їх застосунку. Зазвичай розшифровує TLS, балансує навантаження й дає кільком застосункам ділити порти 80 і 443.
- Зворотний тиск (backpressure)
Механізм, за якого переповнений споживач уповільнює виробника, а не накопичує роботу в пам'яті. У каналах його дає обмежений канал із режимом Wait.
- Звуження типу (narrowing)
Уточнення типу змінної компілятором за перевірками в коді: після
typeof x === 'string',instanceof,inабо порівняння з літералом у гілці відомий вужчий тип.- Згладжування навантаження чергою (queue-based load leveling)
Патерн, за якого запити кладуть у чергу, а обробники розбирають її зі сталою швидкістю. Пік перетворюється на зростання черги й затримку, а не на перевантаження сервісу.
- Зіставлення зі зразком (pattern matching)
Перевірка значення за шаблоном — типом, властивостями, діапазоном, списком — з одночасним витяганням даних у змінні. Працює в
is,switchіswitch-виразах.- Змінюваний об'єкт (mutable)
Об'єкт, стан якого можна змінити на місці:
list,dict,set. Незмінні (int,str,tuple,frozenset) за кожної «правки» дають новий об'єкт. Змінюваність задається типом.- Зміщення (offset)
Номер запису всередині партиції Kafka. Група споживачів комітить offset наступного непрочитаного запису у внутрішній топік
__consumer_offsetsі після перезапуску продовжує з нього.- Значущий тип (value type)
Тип, змінна якого містить саме значення; під час присвоєння значення копіюється. У C# це
struct,enumі вбудовані числові типи.- Знімок купи (heap snapshot)
Файл
.heapsnapshotз усіма об'єктами купи V8 і посиланнями між ними. Два знімки порівнюють у Chrome DevTools, щоб знайти об'єкти, що ростуть, і те, що їх утримує.- Знімок моделі (model snapshot)
Файл
<Context>ModelSnapshot.csз описом моделі після останньої міграції. З ним EF порівнює поточну модель, щоб згенерувати наступну міграцію; у командній роботі він джерело конфліктів.- Зовнішнє з'єднання (LEFT, RIGHT, FULL JOIN)
З'єднання, яке зберігає рядки однієї або обох таблиць навіть без пари й підставляє
NULLзамість стовпців іншої сторони. LEFT зберігає ліву таблицю, RIGHT — праву, FULL — обидві.- Зчеплення (coupling)
Міра залежності модулів або класів один від одного: наскільки зміна одного потребує зміни іншого. Прагнуть слабкого зчеплення: залежати від вузького контракту, а не від будови.
- Ідемпотентний producer
Режим producer Kafka (
enable.idempotence=true), у якому брокер за producer id і номером послідовності відкидає повторні надсилання. Прибирає дублі від ретраїв і зберігає порядок; уConfluent.Kafkaза замовчуванням вимкнений.- Ідемпотентність
Властивість операції, за якої повторне виконання дає той самий результат, що й одноразове. Потрібна всюди, де можливі повтори: фонові задачі, повідомлення, ретраї HTTP.
- Ієрархічні інжектори
Устрій DI в Angular: інжектори елементів повторюють дерево компонентів, а над ними стоять інжектори маршрутів, кореневий і платформний. Провайдер шукається знизу вгору, і місце його оголошення визначає, хто ділить екземпляр.
- Ізоляція SNAPSHOT (snapshot isolation)
Рівень ізоляції SQL Server на версіях рядків: уся транзакція бачить дані на момент свого першого звернення до них. За спроби змінити рядок, який уже змінили після цього моменту, транзакція падає з помилкою 3960.
- Іменовані опції (named options)
Кілька екземплярів одного класу налаштувань під різними іменами, наприклад для двох платіжних шлюзів. Читаються через
Get(name)вIOptionsSnapshot<T>абоIOptionsMonitor<T>.- Імперсонація (impersonation)
Виконання коду від імені іншого користувача Windows. В ASP.NET Core —
WindowsIdentity.RunImpersonatedіRunImpersonatedAsync, лише на Windows.- Інвалідація кешу
Видалення або позначення застарілими записів кешу, коли вихідні дані змінилися: за терміном життя, за ключем, за тегом або за подією.
- Інваріантність (invariance)
Generic-тип допускає лише точно той аргумент, з яким оголошений:
List<string>не можна використати якList<object>. Так поводяться всі класи й структури та інтерфейси безin/out.- Інверсія керування (inversion of control, IoC)
Принцип, за яким керування потоком програми або створенням об'єктів передається фреймворку: не ваш код викликає бібліотеку, а фреймворк викликає ваш код. DI — окремий випадок IoC.
- Індекс (staging area)
Проміжна область між робочою копією й репозиторієм: у неї командою
git addкладуть зміни, які увійдуть у наступний коміт. Дає змогу закомітити лише частину правок.- Індекс за виразом (expression index)
Індекс за результатом виразу або функції, наприклад
lower(email). Використовується, лише якщо запит містить той самий вираз; у SQL Server для цього потрібен обчислюваний стовпець.- Індексоване подання (indexed view)
Подання з унікальним кластерним індексом: SQL Server зберігає його результат і оновлює в тій самій транзакції, що й базові таблиці. Пришвидшує агрегати ціною дорожчого запису.
- Інкапсуляція (encapsulation)
Принцип ООП: дані об'єкта і правила їх зміни зібрані в одному класі, а стан змінюється лише через його методи. Так клас сам захищає свої інваріанти.
- Інспектор Node.js (--inspect)
Вбудований протокол налагодження й профілювання, до якого під'єднуються Chrome DevTools і VS Code. Вмикається прапорцем
--inspectі за замовчуванням слухає127.0.0.1:9229.- Інструмент метрики (instrument)
Об'єкт
System.Diagnostics.Metrics, через який код записує вимірювання:Counter<T>,UpDownCounter<T>,Histogram<T>,Gauge<T>та їхні observable-варіанти. Створюється зMeter.- Інтеграційна шина (ESB)
Центральна платформа інтеграції з адаптерами, маршрутизацією й перетворенням повідомлень між системами, наприклад BizTalk Server. Скорочує кількість зв'язків точка-точка, але стає центральною залежністю.
- Інтеграційний тест
Тест, який перевіряє кілька частин системи разом: наприклад, HTTP-конвеєр, DI і справжню базу. Повільніший за модульний, зате ловить помилки на стиках.
- Інтерактивна транзакція Prisma
Виклик
prisma.$transaction(async (tx) => ...): усі запити черезtxідуть в одній транзакції, а між ними можна виконувати свою логіку. Виняток відкочує транзакцію; за замовчуванням тайм-аут 5 секунд.- Інтерактивний rebase (interactive rebase)
git rebase -i: rebase, під час якого ви редагуєте список комітів — змінюєте порядок, об'єднуєте (squash,fixup), правите повідомлення або видаляєте коміти. Слугує для чищення своєї гілки перед pull request.- Інтернування (interning)
Зберігання одного об'єкта на кожне значення: CPython кешує цілі від −5 до 256 та інтернує частину рядків,
sys.internробить це явно. Це деталь реалізації, покладатися наisдля значень не можна.- Інтернування рядків (string interning)
Зберігання одного екземпляра на кожне унікальне значення рядка в пулі рантайму (intern pool).
string.Internдодає рядок у пул; інтерновані рядки живуть до завершення процесу.- Інтроспективне сортування (introsort)
Гібридне сортування в
Array.Sort: quicksort, який на малих ділянках перемикається на вставки, а за надто глибокого розбиття — на heapsort. Дає O(n log n) у найгіршому випадку, нестабільне.- Інтроспекція токена
Запит API до сервера авторизації «чи дійсний цей токен і що в ньому» (RFC 7662). Дає миттєве відкликання ціною мережевого виклику на кожну перевірку.
- Ітератор (iterator)
Метод із
yield return, який повертає елементи послідовності по одному. Компілятор перетворює його на клас, що реалізуєIEnumerable<T>іIEnumerator<T>.- Кадр стека (stack frame)
Ділянка стека, яку займає один виклик методу: адреса повернення, збережені регістри, локальні змінні й частина аргументів. Знімається під час повернення з методу.
- Канали (System.Threading.Channels)
Асинхронні черги виробник — споживач: запис і читання чекають через await і не блокують потоки. Бувають обмежені й необмежені.
- Канарковий реліз (canary release)
Стратегія, за якої нова версія спершу отримує малу частку трафіку або користувачів. Її помилки й затримки порівнюють зі старою і збільшують частку сходинками або відкочують.
- Канонічна модель даних
Спільний формат повідомлень, у який кожна система перекладає свої дані. Замість мапінгу кожної пари систем потрібен один мапінг на систему.
- Кардинальність метрики
Кількість унікальних комбінацій значень міток метрики, тобто кількість часових рядів. Мітка з id користувача або повним URL дає мільйони рядів і перевантажує сховище.
- Каскадна відмова (cascading failure)
Відмова, що поширюється системою: збій одного компонента перевантажує або вимикає інші. Приклад — readiness-проба на спільну БД, яка в разі її збою виводить із балансування всі екземпляри одразу.
- Категорія логу (log category)
Рядок, з яким створено логер; в
ILogger<T>це повне ім'я типуT. За префіксом категорії в конфігурації задають рівні логування.- Качина типізація (duck typing)
Об'єкт підходить, якщо має потрібні методи й атрибути, незалежно від його типу: «якщо крякає як качка — це качка». Основний стиль Python-коду.
- Кворум (quorum)
Мінімальна кількість реплік, яка має підтвердити запис (W) або відповісти на читання (R). Якщо W + R більше за кількість реплік N, читання перетинається хоча б з однією свіжою реплікою.
- Керована ідентичність (managed identity)
Обліковий запис, який хмарна платформа видає самому застосунку. З ним застосунок звертається до сховища секретів та інших сервісів без пароля в конфігурації.
- Керована купа (managed heap)
Область пам'яті, де CLR розміщує об'єкти посилальних типів. Пам'ять у ній виділяє та звільняє збирач сміття.
- Керований тип Delphi (managed type)
Тип, часом життя якого керує компілятор: довгі рядки, динамічні масиви, інтерфейси, варіанти, а також записи з полями таких типів. Компілятор сам ініціалізує їх, рахує посилання й звільняє через неявний
try..finally.- Кеш планів (plan cache)
Область пам'яті, де SQL Server зберігає скомпільовані плани для повторного використання. План знаходиться за текстом запиту з оголошеннями параметрів і за SET-параметрами сесії.
- Кеш у пам'яті (IMemoryCache)
Кеш усередині процесу застосунку: зберігає об'єкти за посиланням, без серіалізації. У кожного екземпляра застосунку він свій і зникає під час перезапуску.
- Кешовані оновлення (cached updates)
Режим, у якому зміни записів накопичуються в журналі на клієнті й надсилаються в базу одним викликом
ApplyUpdates, а не під час кожногоPost.- Клас даних (dataclass)
Клас з декоратором
@dataclass, для якого Python генерує__init__,__repr__і__eq__за анотованими полями. Параметриfrozen=Trueіslots=Trueроблять його незмінним і компактним.- Клас замикання (display class)
Прихований клас, який компілятор генерує для лямбди із захопленням: захоплені змінні стають його полями, лямбда — його методом. Створення його екземпляра — алокація в купі.
- Кластерний індекс (clustered index)
Індекс, у листках якого лежать самі рядки таблиці, впорядковані за ключем. У таблиці він один;
PRIMARY KEYза замовчуванням створює саме його.- Клієнтське обчислення (client evaluation)
Виконання частини запиту EF Core у пам'яті застосунку, а не в базі. З EF Core 3.0 дозволене лише у фінальній проєкції
Select, в інших місцях неперекладний вираз спричиняє виняток.- Клієнтський компонент (Client Component)
Компонент із модуля з директивою
'use client'. Рендериться на сервері в HTML і в браузері, його JS потрапляє в бандл, тому йому доступні state, ефекти й події.- Ключ ідемпотентності (idempotency key)
Унікальний ключ, який клієнт передає із запитом, зазвичай заголовком
Idempotency-Key. Сервер зберігає результат першої обробки й на повтор із тим самим ключем повертає його, не виконуючи операцію знову.- Ключ кластеризації (clustering key)
Стовпці кластерного індексу. Ключ копіюється в кожен некластерний індекс як вказівник на рядок, тому його роблять вузьким, унікальним і незмінним.
- Ключове слово field
Контекстне ключове слово C# 14: звернення до згенерованого компілятором поля властивості просто в аксесорі, без оголошення власного поля.
- Коваріантність (covariance)
Можливість використати generic-тип із похіднішим аргументом там, де чекають загальніший:
IEnumerable<string>замістьIEnumerable<object>. Оголошуєтьсяout Tв інтерфейсів і делегатів.- Ковзне вікно (sliding window)
Прийом для задач про підвідрізки: вікно [left, right] розширюється праворуч і стискається зліва, коли умову порушено. Кожен індекс зсувається не більше одного разу, тому O(n).
- Ковзне закінчення терміну (sliding expiration)
Запис видаляється, якщо до нього не зверталися заданий інтервал; кожне читання подовжує термін. Без абсолютного закінчення терміну запис, який часто читають, не застаріє ніколи.
- Кодова сторінка (code page)
Таблиця, що зіставляє байтам символи однобайтового кодування. Для кирилиці у Windows це зазвичай 1251; символи, яких немає в таблиці, під час перетворення втрачаються.
- Колізія хешів (hash collision)
Ситуація, коли різні ключі дають однаковий хеш-код або потрапляють в один кошик хеш-таблиці. Колізії неминучі; їх розв'язують порівнянням через
Equals, але за їх надлишку пошук деградує до O(n).- Команда (Command)
Поведінковий патерн: запит запаковано в об'єкт із даними, тому його можна передати, поставити в чергу, залогувати або скасувати.
- Командна ін'єкція (command injection)
Дані користувача потрапляють у командний рядок оболонки й додають свою команду, наприклад
& del *. Захист — запуск процесу без оболонки й передача аргументів списком.- Коміт (commit)
Зафіксований знімок усіх файлів проєкту разом з автором, датою, повідомленням і посиланням на батьківський коміт. Ідентифікується хешем і після створення не змінюється.
- Компаратор рівності (IEqualityComparer)
Об'єкт із методами
EqualsіGetHashCode, який задає рівність ключів дляDictionary,HashSetі LINQ. За замовчуванням використовуєтьсяEqualityComparer<T>.Default.- Компенсувальна дія (compensating transaction)
Операція, яка скасовує бізнес-ефект уже зафіксованого кроку, наприклад повернення грошей після списання. Це не відкат, а нова дія, і її результат видно в системі.
- Композитинг (compositing)
Збирання кадру з готових шарів в окремому потоці композитора. Зміни
transformіopacityшару обходяться без layout і paint.- Композиція (composition)
Об'єкт зберігає інший об'єкт у полі й використовує його через публічний контракт — відношення «містить» замість «є». Порада GoF — віддавати перевагу композиції над успадкуванням класів.
- Компонент Angular
Клас TypeScript з декоратором
@Component, HTML-шаблоном і стилями. Основний будівельний блок інтерфейсу: застосунок — дерево компонентів, вкладених один в одного через шаблони.- Конвеєр запитів (request pipeline)
Ланцюжок middleware, через який проходить кожен HTTP-запит: у порядку реєстрації на вході й у зворотному порядку на виході. Будується один раз під час старту застосунку.
- Конвеєр CI/CD (pipeline)
Описана кодом послідовність кроків, яку CI-система виконує на кожну зміну: restore, збирання, тести, аналіз, публікація й розгортання. У GitHub Actions це workflow у YAML, у Jenkins —
Jenkinsfile.- Конкурентні колекції
Потокобезпечні колекції з System.Collections.Concurrent: ConcurrentDictionary, ConcurrentQueue, ConcurrentStack, ConcurrentBag і BlockingCollection.
- Конкурентність (concurrency)
Кілька операцій перебувають у процесі виконання одночасно, але не обов'язково виконуються в один і той самий момент. Паралелізм — окремий випадок, коли вони йдуть одночасно на різних ядрах.
- Контейнерний запит (container query)
Умова
@container, яка перевіряє розмір найближчого предка зcontainer-type, а не вікна. Дає змогу компоненту підлаштовуватися під місце, куди його поставили.- Контекст виконання (ExecutionContext)
«Навколишні» дані потоку, наприклад значення
AsyncLocal<T>, які переносяться черезawait,Task.Runта інші асинхронні переходи. Тече завжди, незалежно відConfigureAwait.- Контекст синхронізації (SynchronizationContext)
Абстракція, яка планує виконання коду в потрібному середовищі, наприклад в UI-потоці.
awaitза замовчуванням повертає продовження методу в захоплений контекст.- Контекстний менеджер (context manager)
Об'єкт з методами
__enter__і__exit__для оператораwith.__exit__викликається за будь-якого виходу з блоку, зокрема через виняток, — аналогusingу C#.- Контраваріантність (contravariance)
Можливість використати generic-тип із загальнішим аргументом там, де чекають похідніший:
Action<object>замістьAction<string>. Оголошуєтьсяin Tв інтерфейсів і делегатів.- Контракт (design by contract)
Опис поведінки методу через передумови (що істинне до виклику), післяумови (що гарантовано після) та інваріанти (що істинне завжди). Підхід Бертрана Меєра; на ньому тримається LSP.
- Контрактний тест (contract test)
Тест, який перевіряє, що постачальник API і його споживач дотримуються спільної домовленості про запити й відповіді. У consumer-driven підході контракт пише споживач; інструмент — Pact (PactNet).
- Контролер (API controller)
Клас-нащадок
ControllerBase, публічні методи якого (action) обробляють HTTP-запити. Маршрути задаються атрибутами, а запит проходить конвеєр MVC: фільтри, прив'язку моделі, валідацію й форматування відповіді.- Контрольні групи (cgroups)
Механізм ядра Linux, який обмежує й обліковує ресурси групи процесів: CPU, пам'ять, введення-виведення. Ліміти контейнера задаються через cgroups, і .NET читає їх під час старту.
- Контрольований компонент (controlled component)
Поле форми, значення якого задає state:
valueбереться зі state, аonChangeйого оновлює. Джерело правди — React, а не DOM.- Конфіденційний клієнт
Клієнт, який зберігає секрет або ключ на сервері й автентифікується на сервері авторизації: серверний вебзастосунок, BFF, сервіс.
- Кооперативне скасування
Модель скасування в .NET: ініціатор лише запитує скасування, а операція сама перевіряє токен і вирішує, як зупинитися. Примусового переривання немає.
- Коректна зупинка (graceful shutdown)
Зупинка, за якої застосунок перестає приймати нову роботу, доробляє розпочату й звільняє ресурси, а не обривається посеред операції. Час на неї обмежено
HostOptions.ShutdownTimeout.- Кореневий провайдер (root service provider)
IServiceProvider, який створюєbuilder.Build(). Живе весь час роботи застосунку, зберігає singleton-сервіси й звільняє їх під час зупинки.- Корінь GC (GC root)
Посилання, з якого GC починає обхід графа об'єктів: локальна змінна чи регістр потоку, статичне поле, GC-хендл, запис черги фіналізації. Усе, що недосяжне від коренів, вважається сміттям.
- Коротке замикання конвеєра (short-circuit)
Ситуація, коли middleware відповідає сам і не викликає
next, і решта конвеєра не виконується. Так, наприклад, працює віддача статичних файлів.- Корутина (coroutine)
Функція, оголошена через
async def, і об'єкт, який повертає її виклик. Код виконується, лише коли корутину чекають черезawaitабо обгортають у задачу; на кожномуawaitвона може призупинитися.- Критична секція (critical section)
Ділянка коду, яка працює зі спільними даними й тому має виконуватися не більше ніж одним потоком одночасно. У C# її зазвичай обмежують оператором lock.
- Критичний шлях відмальовування (critical rendering path)
Кроки браузера від отримання HTML до першого кадру: DOM, CSSOM, дерево відмальовування, layout, paint, composite. Його довжину визначають блокувальні CSS і скрипти.
- Крихкий базовий клас (fragile base class)
Проблема успадкування реалізації: безневинна на вигляд зміна базового класу ламає нащадків, бо вони залежать від його внутрішньої будови, наприклад від того, які методи викликають один одного.
- Купа (heap)
Таблиця без кластерного індексу. Рядки лежать без певного порядку, а некластерні індекси посилаються на них за фізичною адресою RID — файл, сторінка, слот.
- Курсор
Об'єкт T-SQL, який проходить результат запиту по одному рядку (
DECLARE CURSOR,FETCH NEXT). Потрібен для дій, які не можна виразити однією інструкцією; якщо він потрібен, його оголошуютьLOCAL FAST_FORWARD.- Ланцюг постачання ПЗ (software supply chain)
Усе, з чого збирається застосунок: пакети, їхні залежності, образи контейнерів, CI/CD. Вразливий або підмінений пакет дає зловмисникові код усередині вашого процесу.
- Ланцюжок обов'язків (Chain of Responsibility)
Поведінковий патерн: запит проходить ланцюжком обробників, і кожен вирішує, обробити його, передати далі чи зупинити. Приклад у .NET — конвеєр middleware ASP.NET Core.
- Ланцюжок сертифікатів (chain of trust)
Сертифікат сайту підписаний проміжним центром сертифікації, той — кореневим, якому клієнт довіряє заздалегідь. Сервер надсилає свій і проміжні сертифікати, клієнт перевіряє підписи до кореня.
- Лексична область видимості (lexical scope)
Правило, за яким доступність змінної визначається місцем її оголошення в коді, а не місцем виклику. У JavaScript області бувають глобальні, модульні, функціональні та блокові.
- Лише іменований параметр (keyword-only)
Параметр після
*у сигнатурі, який можна передати лише за іменем. Параметри до/(із Python 3.8) — навпаки, лише позиційні.- Лінеаризовність (linearizability)
Найсильніша гарантія узгодженості одного об'єкта: система поводиться як одна копія, і завершений запис бачать усі наступні читання. Саме це C у теоремі CAP.
- Лінива ініціалізація (lazy initialization)
Створення об'єкта під час першого звернення, а не заздалегідь. У .NET для цього є
Lazy<T>: за замовчуванням він потокобезпечний і кешує виняток фабрики.- Ліниве завантаження (lazy loading)
Завантаження навігаційної властивості окремим запитом під час першого звернення до неї. В EF Core вмикається пакетом
Microsoft.EntityFrameworkCore.ProxiesіUseLazyLoadingProxies()та легко призводить до N+1.- Лінивий маршрут (lazy-loaded route)
Маршрут, код якого виноситься в окремий чанк і завантажується під час першого переходу: через
loadComponentабоloadChildrenз динамічнимimport(). Зменшує початковий бандл.- Лог подій (event log, commit log)
Упорядкований журнал, у який записи лише дописуються в кінець і не видаляються під час читання. Кожен читач зберігає свою позицію й може перечитати історію в межах строку зберігання. Так влаштовані топіки Kafka.
- Логічний порядок обробки запиту
Порядок, у якому SQL зв'язує частини
SELECT:FROM,WHERE,GROUP BY,HAVING,SELECT,ORDER BY. Він визначає, які імена видно на кожному кроці, а фізичний порядок виконання обирає оптимізатор.- Макрос FireDAC (substitution variable)
Підстановка в текст SQL до надсилання на сервер:
&Nameабо!Name. Потрібна там, де параметр не працює, наприклад для імені таблиці; введення користувача в макрос не підставляють.- Мапінг вхідних claims (MapInboundClaims)
Перейменування коротких claims із токена на довгі типи WS-Federation:
subстаєClaimTypes.NameIdentifier. УJwtBearerOptionsувімкнено за замовчуванням, вимикаєтьсяMapInboundClaims = false.- Масив залежностей (dependency array)
Другий аргумент
useEffect,useMemoіuseCallback. React порівнює його елементи черезObject.isі перезапускає ефект або переобчислює значення, лише якщо щось змінилося.- Матеріалізація запиту
Виконання лінивого запиту зі збереженням результату в колекцію:
ToList(),ToArray(),ToDictionary(). Після неї повторні звернення не виконують запит знову.- Машина станів (state machine)
Тип, який компілятор генерує з async-методу. Зберігає номер поточного кроку й локальні змінні, а метод
MoveNextпродовжує виконання з місця останньогоawait.- Медіазапит (media query)
Умова
@media, за якої застосовуються стилі: ширина вікна, орієнтація, тип пристрою, темна тема. Основа адаптивної верстки.- Мемоізація (memoization)
Кешування результатів функції за аргументами: повторний виклик з тими самими аргументами бере відповідь зі словника або масиву. Це ДП згори донизу — рекурсія плюс кеш.
- Мертва версія рядка (dead tuple)
Версія рядка, видалена або замінена завершеною транзакцією, яку вже не бачить жодна активна транзакція. Займає місце в таблиці та індексах, доки її не прибере VACUUM.
- Метадані декораторів (emitDecoratorMetadata)
Відомості про типи, які TypeScript зберігає для декорованих класів за прапорця
emitDecoratorMetadata, наприкладdesign:paramtypes— типи параметрів конструктора. NestJS читає їх черезreflect-metadataі за ними розуміє, що впроваджувати.- Метадані endpoint'а (endpoint metadata)
Довільні об'єкти, прикріплені до endpoint'а: атрибути
[Authorize], політики CORS, власні маркери черезWithMetadata. Їх читають middleware післяUseRoutingчерезcontext.GetEndpoint().- Метод ланцюжків (separate chaining)
Спосіб розв'язання колізій, за якого елементи одного кошика хеш-таблиці зв'язані в ланцюжок. У
Dictionaryланцюжок — це індекси всередині масиву записів, а не окремі об'єкти-вузли.- Метод розширення (extension method)
Статичний метод статичного класу з
thisперед першим параметром (C# 3). Викликається як метод екземпляра; компілятор перетворює виклик на звичайний статичний.- Метод RED
Набір метрик для сервісу, що обробляє запити: Rate (запитів за секунду), Errors (помилки), Duration (час відповіді). Запропонований Томом Вілкі як доповнення до USE.
- Метод USE
Набір метрик для кожного ресурсу: Utilization (завантаження), Saturation (насичення, черга роботи, що чекає), Errors (помилки). Запропонований Бренданом Греггом для аналізу продуктивності.
- Міграція EF Core
Клас із методами
UpіDown, який переводить схему бази від однієї версії моделі до наступної. Створюється командоюdotnet ef migrations addза різницею моделі та знімка.- Мікрозадача (microtask)
Короткий колбек, який виконується одразу після поточної задачі, до наступної задачі й відмальовування: реакції промісів, продовження після
await,queueMicrotask. Черга мікрозадач виконується повністю.- Мікросервіси (microservices)
Архітектурний стиль, у якому система складається з невеликих сервісів. Кожен володіє своїми даними, випускається незалежно й спілкується з іншими через мережу.
- Модальна форма
Вікно, яке блокує решту вікон застосунку до свого закриття. У VCL його відкриває
ShowModal, який повертаєModalResult.- Модель пам'яті .NET
Правила того, які перестановки читань і записів дозволені компілятору, JIT і процесору та що бачать інші потоки. Описана в специфікації Memory-model.md у репозиторії dotnet/runtime.
- Модель читання (read model)
Дані, підготовлені під конкретні запити: пласкі таблиці, документи, кеш. У CQRS їх оновлюють за подіями або змінами моделі запису, тому вони можуть відставати.
- Модель EF Core
Метадані про сутності: властивості, ключі, зв'язки, імена таблиць і типи стовпців. EF будує її один раз на тип контексту за угодами, атрибутами й Fluent API та за нею генерує SQL і міграції.
- Модуль Delphi (unit)
Файл
.pas— одиниця компіляції Delphi. Секціяinterfaceоголошує те, що бачать інші модулі,implementationмістить код, а необов'язковіinitializationіfinalizationвиконуються під час запуску й завершення програми.- Модуль NestJS (@Module)
Клас із декоратором
@Module(), що об'єднує контролери й провайдери однієї області, імпортує інші модулі й черезexportsвирішує, чим вони можуть користуватися. Застосунок — дерево модулів від кореневогоAppModule.- Модульний моноліт (modular monolith)
Один застосунок, що розгортається цілком, а його код поділено на модулі за бізнес-можливостями. Модуль відкриває іншим лише публічний контракт і володіє своїми даними.
- Модульний тест (unit test)
Автоматичний тест, який перевіряє одну поведінку невеликої частини коду в ізоляції від бази, мережі й файлової системи. Виконується за мілісекунди.
- Мок (mock object)
Дублер, за яким тест перевіряє взаємодію: чи був виклик, скільки разів і з якими аргументами. У .NET їх створюють NSubstitute і Moq.
- Мутаційне тестування
Спосіб оцінити якість тестів: інструмент вносить у код маленькі зміни (мутанти) і перевіряє, чи падають тести. Мутант, що вижив, — неперевірена поведінка. У .NET — Stryker.NET.
- Навантажувальне тестування
Перевірка сервісу під заданим або зростаючим потоком запитів, щоб знайти межу пропускної здатності, зростання затримок і точку деградації. Інструменти — k6, NBomber, JMeter, bombardier.
- Найгірший випадок (worst case)
Оцінка складності на найневдалішому вході заданого розміру. Дає гарантію для будь-якого вводу: quicksort у середньому O(n log n), але в найгіршому випадку O(n²).
- Накопичення прав (privilege creep)
Поступове зростання прав працівника: під час переведень і нових проєктів права видають, а старі не забирають. Лікується переглядом доступу та відкликанням прав у разі зміни посади.
- Намірне блокування (intent lock)
Блокування на верхньому рівні ієрархії (сторінка, таблиця), яке повідомляє, що нижче вже стоять S або X. Дає змогу швидко зрозуміти, чи можна заблокувати всю таблицю, не перевіряючи кожен рядок.
- Напівз'єднання (semi join)
З'єднання, яке повертає рядки лівої таблиці, що мають хоча б одну пару праворуч, не розмножуючи їх і не додаючи стовпців. У SQL його виражають через
EXISTSабоIN.- Наскрізна функціональність (cross-cutting concern)
Логіка, потрібна багатьом частинам застосунку незалежно від бізнес-задачі: логування, авторизація, кешування, обробка помилок. Її виносять у middleware, фільтри або декоратори.
- Не більше одного разу (at-most-once)
Гарантія доставки, за якої повідомлення не обробляється повторно, але може загубитися. Виходить, якщо підтвердити повідомлення до обробки.
- Небезпечна десеріалізація
Десеріалізатор створює типи, вказані в самих даних, і зловмисник підбирає тип, конструктор або сетер якого виконує потрібний йому код. Класичні приклади —
BinaryFormatterіTypeNameHandlingу Newtonsoft.Json.- Небезпечне посилання [unsafe]
Атрибут посилання, який повністю вимикає для нього підрахунок посилань: ні
_AddRef, ні обнулення під час знищення об'єкта. Безкоштовне, але після знищення об'єкта вказує на звільнену пам'ять.- Незмінна колекція (immutable collection)
Колекція з
System.Collections.Immutable, яку не можна змінити після створення:AddіRemoveповертають новий екземпляр. Її безпечно передавати між потоками без блокувань.- Незмінний тип (immutable type)
Тип, стан екземпляра якого не можна змінити після створення: «змінювальні» методи повертають новий екземпляр. Приклади —
string,DateTime,readonly record struct.- Некерований ресурс (unmanaged resource)
Ресурс поза керованою купою, про який GC нічого не знає: дескриптор файлу чи вікна, сокет, нативна пам'ять. Його треба звільняти явно — через
DisposeабоSafeHandle.- Некластерний індекс (nonclustered index)
Окрема від таблиці структура: ключ індексу й вказівник на рядок — ключ кластеризації або RID. Стовпці, яких немає в індексі, сервер дочитує з таблиці.
- Необмежене делегування
Режим Kerberos, за якого клієнт пересилає серверу свій TGT і сервер може діяти від імені користувача перед будь-якою службою. Небезпечний; Credential Guard його блокує.
- Необроблене відхилення (unhandled rejection)
Відхилений проміс, до якого не під'єднали обробник помилки. Браузер генерує подію
unhandledrejection, а Node.js з версії 15 за замовчуванням завершує процес.- Неперервна доставка (continuous delivery, CD)
Продовження CI: кожна перевірена збірка автоматично пакується й розгортається на тестові оточення, тож у прод її можна випустити будь-коли — за ручним підтвердженням.
- Неперервна інтеграція (continuous integration, CI)
Практика, за якої розробники часто зливають зміни в спільну гілку, а кожна зміна автоматично збирається й перевіряється тестами. Помилку інтеграції видно за хвилини, а не в день релізу.
- Неперервне розгортання (continuous deployment)
Варіант CD без ручного кроку: кожна зміна, що пройшла всі перевірки конвеєра, автоматично йде в прод. Потребує надійних автотестів, моніторингу й швидкого відкату.
- Неповторюване читання (non-repeatable read)
Аномалія, за якої повторне читання того самого рядка в транзакції дає інше значення, бо його змінила й зафіксувала інша транзакція.
- Непрозорий токен (reference token)
Випадковий рядок без даних усередині. API дізнається, що за ним стоїть, через introspection на сервері авторизації: такий токен відкликається миттєво, але потребує мережевого запиту.
- Нестабільний тест (flaky test)
Тест, який на тому самому коді то проходить, то падає. Звичайні причини — час, спільний стан, паралельність, зовнішні сервіси.
- Несумісна зміна (breaking change)
Зміна контракту, після якої наявний клієнт перестає працювати: видалення чи перейменування поля, зміна типу, новий обов'язковий параметр, інший зміст коду відповіді.
- Нефункціональні вимоги
Вимоги не до того, що система робить, а до того, як: навантаження, затримка, доступність, узгодженість, безпека, термін зберігання даних. Саме вони визначають архітектуру.
- Неявне перетворення типів (implicit conversion)
Приведення типів, яке SQL Server робить сам під час порівняння значень різних типів; у плані його видно як
CONVERT_IMPLICIT. Якщо перетворюється стовпець, а не параметр, seek за його індексом зазвичай неможливий.- Нормалізація
Проєктування таблиць так, щоб кожен факт зберігався в одному місці. Сходинки нормалізації називають нормальними формами: 1НФ, 2НФ, 3НФ, BCNF.
- Об'єкт Git (blob, tree, commit, tag)
Одиниця зберігання в базі
.git/objects, що адресується хешем свого вмісту: blob — вміст файлу, tree — каталог, commit — знімок з метаданими, tag — анотований тег. Об'єкти незмінні.- Об'єкт-значення (value object)
Об'єкт без власної ідентичності, який визначається значеннями полів:
Money,Address,DateRange. Незмінний і порівнюється за значенням; у C# його зручно робитиrecord.- Область впровадження (injection scope)
Час життя провайдера в NestJS:
DEFAULT— один екземпляр на застосунок,REQUEST— на кожен запит,TRANSIENT— власний екземпляр кожному споживачеві. ОбластьREQUESTпереходить на всіх, хто залежить від такого провайдера.- Обмежене делегування (KCD)
Kerberos Constrained Delegation: обліковому запису фронтенда дозволено отримувати квитки від імені користувача лише до перелічених SPN (атрибут
msDS-AllowedToDelegateTo). Працює через розширення S4U2Proxy.- Обмежений контекст (bounded context)
Межа, всередині якої модель і її терміни мають одне значення. «Товар» на складі й у каталозі — різні моделі в різних контекстах; контекст — природний кандидат у модуль або сервіс.
- Обмеження маршруту (route constraint)
Умова на параметр маршруту:
{id:int},{name:alpha},{slug:regex(...)}. Якщо значення не підходить, маршрут не збігається. Потрібне, щоб розрізняти маршрути, а не щоб перевіряти введення.- Обмеження параметра типу (generic constraint)
Вимога до параметра типу в реченні
where T : ...: посилальний чи значущий тип, наявність конструктора, базовий клас, інтерфейс. Дає компілятору право викликати відповідні члени вT.- Обмеження частоти запитів (rate limiting)
Захист сервісу, який відхиляє запити понад ліміт, зазвичай з кодом 429. В ASP.NET Core із .NET 7 є middleware з алгоритмами fixed window, sliding window, token bucket і concurrency.
- Обов'язковий член (required member)
Властивість або поле з модифікатором
required(C# 11): його треба задати в ініціалізаторі об'єкта, інакше помилка компіляції. Допомагає з NRT, коли об'єкт створюється без конструктора з параметрами.- Образ контейнера (container image)
Незмінний шаблон, з якого запускають контейнери: файли застосунку, рантайм, системні бібліотеки й команда запуску. Складається із шарів і зберігається в реєстрі під іменем із тегом.
- Обробник авторизації (authorization handler)
Реалізація
IAuthorizationHandler, зазвичай нащадокAuthorizationHandler<TRequirement>: перевіряє requirement і викликаєcontext.Succeedабоcontext.Fail. Реєструється в DI; один requirement може мати кілька handlers.- Обробник інтерпольованих рядків (interpolated string handler)
Механізм C# 10: вираз
$"..."компілюється у викликиAppendLiteralіAppendFormatted<T>спеціального типу, наприкладDefaultInterpolatedStringHandler. Аргументи не упаковуються, буфер береться з пулу.- Обчислюваний стовпець (computed column)
Стовпець, значення якого задане виразом від інших стовпців. Детермінований обчислюваний стовпець можна проіндексувати, і оптимізатор використає індекс для запитів із тим самим виразом.
- Одержимість примітивами (primitive obsession)
Запах коду: поняття предметної області — email, гроші, ідентифікатори — зберігаються в
string,decimalтаint. Перевірки розмазуються кодом; лікується рефакторингом Replace Primitive with Object.- Одинак (Singleton)
Породжувальний патерн: у класу рівно один екземпляр і глобальна точка доступу до нього. У .NET «один екземпляр» зазвичай задають реєстрацією
AddSingletonу DI, а не статичною властивістю.- Одиниця роботи (unit of work)
Набір операцій, які виконуються й зберігаються разом, як одна бізнес-транзакція. В EF Core одиницю роботи представляє екземпляр
DbContext.- Оператор ?? (nullish coalescing)
a ?? bповертаєb, лише якщоaдорівнюєnullабоundefined. На відміну від||не замінює0,''іfalse.- Оператор пригнічення null (null-forgiving operator)
Постфіксний
!, наприкладx!.Length: каже компілятору, що вираз неnull, і пригнічує попередження. У рантаймі нічого не перевіряє.- Оператор APPLY (CROSS APPLY, OUTER APPLY)
Оператор T-SQL, який обчислює табличний вираз праворуч для кожного рядка ліворуч, і цей вираз може посилатися на його стовпці. CROSS APPLY відкидає рядки з порожнім результатом, OUTER APPLY зберігає їх із
NULL; у PostgreSQL аналог —LATERAL.- Оператори вищого порядку (switchMap, mergeMap, concatMap, exhaustMap)
Оператори RxJS, які перетворюють кожне значення на внутрішній потік, наприклад HTTP-запит, і вирішують, що з ним робити, якщо минулий ще не завершено: скасувати, виконати паралельно, поставити в чергу або проігнорувати нове.
- Оптимізатор запитів (query optimizer)
Компонент СУБД, який за текстом запиту, статистикою й індексами обирає план виконання з найменшою оціночною вартістю. Запит описує, що потрібно отримати, а оптимізатор вирішує, як це зробити.
- Оптимістичне блокування (optimistic concurrency)
Підхід до паралельних правок без утримання блокувань: під час збереження перевіряється, що рядок не змінився з моменту читання, а в разі конфлікту операція відхиляється. Протилежність — песимістичне блокування рядка на час роботи.
- Оркестрація (orchestration)
Спосіб координації саги, за якого оркестратор зберігає її стан, розсилає команди учасникам і запускає компенсації під час збою.
- Основна теорема про рекурентні співвідношення (master theorem)
Готова відповідь для рекурентних співвідношень вигляду T(n) = a·T(n/b) + f(n), які описують алгоритми «розділяй і володарюй». Наприклад, сортування злиттям T(n) = 2T(n/2) + O(n) дає O(n log n).
- Основний і фоновий потік (foreground/background thread)
Процес не завершиться, доки працює хоча б один основний (foreground) потік, а фонові потоки зупиняються разом із ним. Потоки пулу фонові, new Thread за замовчуванням основний.
- Отримувач (receiver)
Значення, «на якому» викликається член розширення: параметр
thisу класичного методу або параметр блокуextension(...)у C# 14.- Оцінка кардинальності (cardinality estimation)
Прогноз оптимізатора, скільки рядків поверне кожен оператор плану. Будується за статистикою; від неї залежать вибір з'єднань, порядок операцій і обсяг виділеної пам'яті.
- Оцінка на серветці (back-of-the-envelope)
Швидкий розрахунок порядку величин за припущеннями: запити на секунду, обсяг даних, трафік, пам'ять під кеш. Потрібна точність до порядку, а не до відсотка.
- Очищення ефекту (cleanup)
Функція, яку повертає setup ефекту. React викликає її перед повторним запуском ефекту й під час демонтування, щоб відписатися, зупинити таймер або закрити з'єднання.
- Пакетний режим (batch mode)
Режим виконання, у якому оператор обробляє пачку рядків за раз, а не по одному. Основний режим для columnstore; із SQL Server 2019 на рівні сумісності 150 доступний і для звичайних таблиць.
- Пакетування SaveChanges (batching)
Надсилання кількох команд
INSERT,UPDATE,DELETEза один мережевий round trip. На SQL Server EF Core за замовчуванням кладе в пакет до 42 команд; межу задаєMaxBatchSize.- Паралельна експлуатація (parallel run)
Стара й нова версії системи працюють одночасно на тих самих даних. Результати порівнюють, а стара версія лишається шляхом відкату, доки нова не доведе еквівалентність.
- Параметризований тест
Один тестовий метод, який запускається на кількох наборах вхідних даних. У xUnit це
[Theory]з[InlineData]або[MemberData], у NUnit —[TestCase], у MSTest —[DataRow].- Параметричний поліморфізм
Той самий код працює з будь-яким типом, переданим як параметр. У C# це generics:
List<T>,Max<T>(T a, T b).- Партиціонування таблиці (секціонування)
Зберігання однієї логічної таблиці секціями за діапазонами значень стовпця, наприклад за місяцями. Межі задає функція секціонування, розміщення по файлових групах — схема секціонування.
- Партиція (partition)
Частина топіка Kafka — окремий упорядкований лог на одному з брокерів. Порядок записів гарантований лише всередині партиції, а в групі споживачів одну партицію читає один споживач.
- Патерн проєктування (design pattern)
Іменоване типове розв'язання поширеної задачі проєктування: ролі класів, зв'язки між ними і наслідки. Це не готовий код, а схема, яку реалізують під свою задачу.
- Перевірка scope (ValidateScopes)
Опція
ServiceProviderOptions, за якої контейнер забороняє розв'язувати scoped-сервіси з кореневого провайдера й впроваджувати їх у singleton. За замовчуванням увімкнена в середовищі Development.- Перевіряльник типів (type checker)
Інструмент статичного аналізу, який перевіряє анотації типів без запуску коду: mypy, pyright. Сам інтерпретатор анотації не перевіряє.
- Перегляд доступу (access review)
Регулярна перевірка виданих прав: керівник або власник ресурсу підтверджує, що права ще потрібні, або відкликає їх. Інші назви — recertification, attestation.
- Передача за посиланням на об'єкт (call by sharing)
Спосіб передачі аргументів у Python: параметр функції стає ще одним ім'ям того самого об'єкта. Зміни об'єкта видно тому, хто викликав, а переприв'язку параметра — ні.
- Перелічувач (enumerator)
Об'єкт із методом
MoveNext()і властивістюCurrent, через якийforeachперебирає колекцію. Його повертаєGetEnumerator()вIEnumerable<T>.- Перемикання секцій (partition switching)
ALTER TABLE ... SWITCH: перенесення секції в іншу таблицю або з неї зміною метаданих, без копіювання рядків. Основа архівації «ковзним вікном» і швидкого завантаження.- Переповнення лічильника транзакцій (XID wraparound)
Номери транзакцій у PostgreSQL 32-бітні й порівнюються по колу, тому через ~2 млрд транзакцій старі рядки здавалися б «з майбутнього». VACUUM заздалегідь заморожує їх; якщо не встигає, база перестає приймати транзакції, що пишуть.
- Перехід (transition)
Оновлення, позначене нетерміновим через
startTransitionабоuseTransition. React може перервати його заради введення й поки що показує попередній UI.- Перехресне з'єднання (CROSS JOIN)
Декартів добуток: кожен рядок однієї таблиці з'єднується з кожним рядком іншої, без умови. Використовують для сіток на кшталт «магазин × день».
- Перцентиль (p50, p95, p99)
Значення, нижче за яке лежить задана частка вимірювань: p99 = 200 мс означає, що 99% запитів швидші за 200 мс. У метриках перцентилі рахують наближено за бакетами гістограми.
- Песимістична конкуренція (pessimistic concurrency)
Керування паралельним доступом через блокування: дані блокують до зміни, і конкуренти чекають. Вигідна за частих конфліктів на коротких транзакціях.
- Підказки Query Store (Query Store hints)
Підказки на кшталт
RECOMPILEабоMAXDOP, які прикріплюються до запиту в Query Store черезsys.sp_query_store_set_hints, не змінюючи його текст. Доступні із SQL Server 2022.- Підміна алгоритму (algorithm confusion)
Атака, за якої зловмисник змінює
algу заголовку: наnoneабо з RS256 на HS256, підписуючи токен відкритим ключем як HMAC-секретом. Захист — фіксований набір алгоритмів, прив'язаний до ключа.- Підняття (hoisting)
Оголошення обробляються до виконання коду області. Функції-оголошення доступні повністю,
var— зі значеннямundefined, аlet,constіclassдо рядка оголошення перебувають у тимчасовій мертвій зоні.- Підняття стану (lifting state up)
Перенесення state у найближчого спільного батька компонентів, яким він потрібен. Батько передає дітям значення й функцію зміни через props.
- Підрахунок посилань (reference counting)
Основний механізм керування пам'яттю CPython: кожен об'єкт має лічильник посилань, і об'єкт звільняється одразу, щойно той падає до нуля. Цикли посилань так не звільняються.
- Підрахунок посилань у Delphi (reference counting)
Модель часу життя, у якій значення має лічильник посилань: компілятор збільшує його під час присвоєння й зменшує, коли посилання зникає, а на нулі пам'ять звільняється. У Delphi так живуть рядки, динамічні масиви, інтерфейси й анонімні методи.
- Піраміда тестів (test pyramid)
Модель Майка Кона: багато швидких модульних тестів, менше інтеграційних і зовсім небагато наскрізних. Що вищий рівень, то тест повільніший, дорожчий і крихкіший.
- Пірамідальне сортування (heapsort)
Сортування, яке будує купу з масиву й раз у раз вилучає з неї крайній елемент. O(n log n) у найгіршому випадку й O(1) додаткової пам'яті, але нестабільне.
- План виконання (execution plan)
Дерево операторів, якими SQL Server виконує запит: доступ до таблиць, з'єднання, сортування. Оцінковий план — результат компіляції, фактичний додає реальну кількість рядків і виконань.
- Планувальник задач (TaskScheduler)
Об'єкт, який вирішує, де виконувати задачі. Стандартний планувальник — пул потоків, а нестандартний планувальник
awaitзахоплює так само, як контекст синхронізації.- Пов'язане джерело скасування (linked token source)
CancellationTokenSource, створений черезCreateLinkedTokenSource: він скасовується разом із будь-яким із батьківських токенів. Його обов'язково звільняють, інакше підписка на батьківський токен залишається.- Поведінковий патерн (behavioral pattern)
Патерн, що розподіляє обов'язки між об'єктами й описує їхню взаємодію. У GoF їх одинадцять, серед них Strategy, Observer, Command, Iterator, Template Method.
- Поверхнева копія (shallow copy)
Новий контейнер з тими самими вкладеними об'єктами:
copy.copy,list(a),a[:]. Глибока копія (copy.deepcopy) рекурсивно копіює й вкладені об'єкти.- Повторний вхід (reentrancy)
Ситуація, коли обробник викликається знову, поки попередній виклик ще не завершився. У VCL виникає через
Application.ProcessMessagesвсередині обробника події.- Под (Pod)
Мінімальна одиниця запуску в Kubernetes: один або кілька контейнерів зі спільним IP і томами. Поди ефемерні — їх створюють і видаляють контролери на кшталт Deployment.
- Подвійний запис (dual write)
Запис однієї зміни у дві системи без спільної транзакції, наприклад у базу й у брокер. Під час збою між записами системи розходяться: подія губиться або описує зміну, яку відкотили.
- Поділ коду (code splitting)
Розбиття бандла на частини, які завантажуються на вимогу через динамічний
import(): за маршрутами або за рідко вживаними функціями. Зменшує стартовий обсяг JS.- Подія (event)
Член класу на основі делегата, який ззовні дозволяє лише підписку
+=і відписку-=. Викликати подію може лише тип, що її оголосив.- Поетапне розгортання (rolling deployment)
Стратегія, за якої екземпляри за балансувальником оновлюються по одному або невеликими групами. Зайві сервери не потрібні, але на час розгортання стара й нова версії працюють одночасно.
- Покоління GC (generation)
Логічна частина керованої купи за віком об'єктів: 0 — нові, 1 — ті, що пережили одне збирання, 2 — довгоживучі. Молоді покоління збираються часто й швидко, збирання покоління 2 — повне.
- Покривний індекс (covering index)
Індекс, у якому є всі стовпці, потрібні запиту, — у ключі або серед включених. Запит читає лише його й не звертається до таблиці.
- Покриття коду (code coverage)
Частка рядків або гілок коду, які виконалися під час тестів. Показує неперевірений код, але не доводить, що виконаний код перевірено. У .NET його рахують coverlet і Microsoft Code Coverage.
- Поліморфізм (polymorphism)
Здатність одного коду працювати з об'єктами різних типів. В ООП зазвичай мають на увазі поліморфізм підтипів: виклик віртуального методу обирає реалізацію за реальним типом об'єкта.
- Політика авторизації (authorization policy)
Іменований набір вимог (requirements) в ASP.NET Core. Реєструється через
AddAuthorizationBuilder().AddPolicy, застосовується атрибутом[Authorize(Policy = "...")]абоRequireAuthorizationі виконана, коли виконані всі її вимоги.- Політика за замовчуванням (default policy)
Політика, яку ASP.NET Core застосовує до
[Authorize]іRequireAuthorization()без назви політики. За замовчуванням вимагає лише автентифікованого користувача, змінюється черезSetDefaultPolicy.- Політика одного джерела (same-origin policy)
Правило браузера: скрипт може читати відповіді лише свого джерела — тієї самої схеми, хоста й порту. Надсилати запити на чужі джерела він може, читати відповіді — ні.
- Порівняння за значенням (value equality)
Два екземпляри рівні, якщо в них один тип і рівні значення полів, навіть якщо це різні об'єкти. Так за замовчуванням порівнюються структури й records, а класи — за посиланням.
- Породжувальний патерн (creational pattern)
Патерн, що відокремлює код, який використовує об'єкт, від рішення, який об'єкт створити і як. У GoF їх п'ять: Abstract Factory, Builder, Factory Method, Prototype, Singleton.
- Порти й адаптери (гексагональна архітектура)
Стиль Алістера Кокберна: застосунок спілкується із зовнішнім світом лише через порти — інтерфейси, які він сам оголошує. Адаптер реалізує порт під конкретну технологію: контролер, репозиторій на EF Core, SMTP-клієнт.
- Порушення контролю доступу (broken access control)
Користувач читає або змінює те, що йому не належить: чужі замовлення, адмінські функції. Перша категорія OWASP Top 10 у редакціях 2021 і 2025 років.
- Порядок розв'язання методів (MRO)
Порядок класів, у якому Python шукає атрибут під час успадкування; доступний як
Cls.__mro__. Будується C3-лінеаризацією, за ним же працюєsuper().- Посилальна рівність (reference equality)
Два посилання вказують на той самий об'єкт. Перевіряється
object.ReferenceEquals; так само за замовчуванням працюють==іEqualsу класів.- Посилальний тип (reference type)
Тип, змінна якого містить посилання на об'єкт у керованій купі; під час присвоєння копіюється посилання. У C# це
class,interface,string, масиви й делегати.- Посилання (ref) і HEAD
Посилання — ім'я, що вказує на коміт: гілка, тег або гілка віддаленого відстеження. HEAD — особливе посилання на поточну гілку або, у стані detached HEAD, просто на коміт.
- Послідовність (sequence)
Об'єкт бази, який видає зростаючі числа через
nextval. Працює поза транзакціями: відкат не повертає видані значення, тому в ключах бувають пропуски. На послідовностях побудовано identity іserial.- Постійні поля (persistent fields)
Об'єкти
TField, створені у Fields Editor і збережені в .dfm. Дають типізований доступ і дозволяють додати обчислювані та lookup-поля, але мають збігатися з колонками запиту за іменем і типом.- Потік даних (stream)
Об'єкт Node.js для обробки даних порціями в міру надходження: Readable — джерело, Writable — приймач, Duplex — і те, і те, Transform — перетворення дорогою. З'єднують потоки через
pipeline.- Потокове завантаження компонентів (streaming)
Механізм VCL, який зберігає published-властивості компонентів у .dfm і відновлює їх:
TReaderстворює об'єкти за іменами класів і присвоює властивості через RTTI.- Пошук представлень (view discovery)
Процес, яким MVC знаходить файл представлення за ім'ям. За замовчуванням спочатку
Views/{Controller}/{View}.cshtml, потімViews/Shared/{View}.cshtml.- Пошук у глибину (DFS, depth-first search)
Обхід графа, який іде однією гілкою до кінця й повертається назад, через рекурсію або явний стек. O(V + E); основа для пошуку циклів, компонент зв'язності й топологічного сортування.
- Пошук у ширину (BFS, breadth-first search)
Обхід графа шарами через чергу: спершу всі сусіди, потім сусіди сусідів. Знаходить найкоротший шлях за кількістю ребер у незваженому графі за O(V + E).
- Правила відображення типів (MapRules)
Колекція FormatOptions.MapRules у FireDAC: кожне правило замінює тип даних, який повернув драйвер, на тип, зручний застосунку. Ними підганяють типи полів під стару бібліотеку під час міграції.
- Правила захисту гілки (branch protection)
Налаштування репозиторію, які забороняють злиття в гілку на кшталт
main, доки не пройдено обов'язкові перевірки конвеєра й не отримано схвалення рев'юерів. У GitHub — protected branches і rulesets.- Правила claims (claim rules)
Правила ADFS власною мовою: умова, потім
=>і діяissueабоadd. Визначають, які claims потраплять у токен і звідки взяти їхні значення, наприклад з атрибутів AD.- Правило сортування (collation)
Правила порівняння й сортування рядків для мови. У PostgreSQL звичайні collation детерміновані й розрізняють регістр; пошук без урахування регістру дає недетермінована ICU-collation, тип
citextабоlower().- Правило трьох (rule of three)
Евристика рефакторингу: два схожі фрагменти терплять, на третьому виносять спільне. Приписується Дону Робертсу, популяризована Мартіном Фаулером у книжці «Рефакторинг».
- Префіксні суми (prefix sums)
Масив, де елемент i — сума перших i елементів початкового. Після підготовки за O(n) суму будь-якого відрізка рахують за O(1) як різницю двох префіксів.
- Прив'язка даних (data binding)
Зв'язок шаблону з класом компонента: інтерполяція
{{ }}, прив'язка властивості[prop], події(event)і двостороння[(prop)]. Angular сам оновлює DOM, коли значення змінюється.- Прив'язка до потоку (thread affinity)
Властивість примітива, який має звільнити той самий потік, що його захопив. Вона є в Monitor, Lock, Mutex і ReaderWriterLockSlim, тому їх не можна тримати через await.
- Прив'язка конфігурації (configuration binding)
Заповнення властивостей об'єкта значеннями із секції конфігурації: рядки приводяться до типів властивостей. За замовчуванням працює через рефлексію, з .NET 8 є генератор прив'язки для AOT.
- Прив'язка моделі (model binding)
Заповнення параметрів action або обробника значеннями із запиту: маршруту, рядка запиту, заголовків, форми чи тіла. Джерело задають атрибути
[From...]або правила виведення.- Приведення типів (type coercion)
Автоматичне перетворення значення на інший тип, яке JavaScript робить сам: у
==, арифметиці,ifі шаблонних рядках. Наприклад,'5' * 2дає10.- Примітив (primitive)
Значення JavaScript, яке не є об'єктом і не має методів:
string,number,bigint,boolean,undefined,null,symbol. Примітиви незмінні й порівнюються за значенням.- Принцип відкритості/закритості (OCP)
Літера O у SOLID: модуль відкритий для розширення й закритий для зміни. Сформульований Бертраном Меєром у 1988 році; Мартін досягає його через абстракції та поліморфізм.
- Принцип єдиної відповідальності (SRP)
Літера S у SOLID: модуль має одну причину для зміни. У формулюванні Мартіна з «Clean Architecture» — модуль відповідає перед одним актором, тобто перед однією групою людей, які просять змін.
- Принцип інверсії залежностей (DIP)
Літера D у SOLID: модулі верхнього рівня не залежать від модулів нижнього рівня, обидва залежать від абстракцій. Впровадження залежностей — практичний спосіб його дотримуватися.
- Принцип найменших привілеїв (least privilege)
Користувач або процес отримує лише ті права, які потрібні для його задачі, і лише на потрібний час. У NIST SP 800-53 це контроль AC-6.
- Принцип підстановки Лісков (LSP)
Принцип SOLID: об'єкт підтипу має підходити всюди, де очікується базовий тип, не порушуючи правильності програми. Класичний контрприклад — квадрат, успадкований від прямокутника.
- Принцип розділення інтерфейсів (ISP)
Літера I у SOLID: клієнт не повинен залежати від методів, якими не користується. Широкий інтерфейс ділять на кілька вузьких за потребами клієнтів.
- Природний ключ
Ключ з атрибутів предметної області: код товару, податковий номер, ISO-код валюти. Зрозумілий людині, але може змінюватися й буває довгим.
- Прискорене відновлення бази даних (ADR)
Механізм SQL Server 2019+, який зберігає версії рядків у самій базі. Відкат і відновлення після збою стають майже миттєвими, а журнал усікається навіть за довгих транзакцій.
- Приховування методу (method hiding)
Оголошення в нащадку члена з тим самим ім'ям, що й у базовому класі, без
override; модифікаторnewробить це явним. Який метод викличеться, вирішує статичний тип змінної.- Пріоритет типів даних (data type precedence)
Правило, за яким SQL Server вибирає спільний тип для порівняння: тип із меншим пріоритетом приводиться до більшого.
nvarcharстарший заvarchar,intстарший за рядкові типи.- Пріоритет шаблону маршруту (route precedence)
Правило вибору серед кількох відповідних маршрутів: перемагає конкретніший шаблон. Літерал сильніший за параметр, параметр з обмеженням сильніший за параметр без нього, catch-all найслабший.
- Проблема виразу (expression problem)
Термін Філіпа Вадлера (1998): важко зробити так, щоб без правки старого коду можна було додавати і нові варіанти даних, і нові операції. ООП полегшує перше, функції з pattern matching — друге.
- Проблема N+1
Антипатерн доступу до даних: один запит завантажує список з N елементів, а потім для кожного виконується ще один запит за пов'язаними даними. Типова причина — ліниве завантаження в циклі.
- Провайдер бази даних EF Core
NuGet-пакет, який навчає EF Core працювати з конкретною СУБД: перекладає запити на її діалект SQL, зіставляє типи й генерує міграції. Наприклад,
Microsoft.EntityFrameworkCore.SqlServerіNpgsql.EntityFrameworkCore.PostgreSQL.- Провайдер запитів (query provider)
Реалізація
IQueryProvider, яка будує й виконує запитиIQueryable<T>: перекладає дерево виразів мовою джерела даних. Приклад — провайдер EF Core, що генерує SQL.- Провайдер конфігурації (configuration provider)
Компонент, який завантажує пари «ключ — значення» з одного джерела: JSON-файлу, змінних середовища, командного рядка, сховища секретів. За збігу ключів перемагає провайдер, доданий останнім.
- Провайдер логування (logging provider)
Реалізація
ILoggerProvider, яка доставляє записи в конкретне місце: консоль, Debug, EventSource, файл або зовнішню систему. Один логер пише в усі підключені провайдери.- Провайдер NestJS (provider)
Усе, що DI-контейнер NestJS уміє створити й впровадити: сервіс, репозиторій, фабрика, значення. Зазвичай це клас із
@Injectable(), зареєстрований уprovidersмодуля.- Продовження (continuation)
Код, який виконується після завершення задачі. Для async-методу це решта методу після
await.- Проєкція (projection)
Вибір із джерела лише потрібних полів, наприклад
Selectу DTO в LINQ-запиті. EF Core тоді читає з бази лише ці стовпці й не відстежує сутності.- Проміс (Promise)
Об'єкт із результатом асинхронної операції, який буде виконано (fulfilled) значенням або відхилено (rejected) помилкою. Колбеки
then,catchіfinallyвиконуються як мікрозадачі.- Простори імен Linux (namespaces)
Механізм ядра Linux, який дає процесу власне уявлення про ресурси: список процесів, мережу, точки монтування, hostname. Основа ізоляції контейнерів.
- Протокол (typing.Protocol)
Опис інтерфейсу для структурної типізації (PEP 544, Python 3.8): клас сумісний з протоколом, якщо має потрібні методи, без явного успадкування. Перевіряється mypy і pyright.
- Профілі Compose (profiles)
Мітки сервісів у Compose: сервіс із профілем запускається, лише якщо профіль увімкнено через
--profileабоCOMPOSE_PROFILES. Сервіси без профілю запускаються завжди.- Публікація образу засобами SDK (PublishContainer)
Збирання образу командою
dotnet publish /t:PublishContainerбез Dockerfile і Docker-демона. SDK сам обирає базовий образ, користувача й порт; налаштування — властивостіContainer*у проєкті.- Публічний клієнт
Клієнт, який не може зберігати секрет: SPA, мобільний або десктопний застосунок. Його код доступний користувачу, тому PKCE для нього обов'язковий.
- Пул застосунків IIS (application pool)
Група сайтів IIS, яку обслуговують робочі процеси
w3wp.exeзі спільними налаштуваннями: обліковий запис, розрядність, рециклінг. Для in-process ASP.NET Core потрібен свій пул на кожен застосунок.- Пул контекстів (DbContext pooling)
Перевикористання екземплярів
DbContext: під час звільнення контекст скидається й повертається в пул. ВмикаєтьсяAddDbContextPoolабоPooledDbContextFactory; з пулом з'єднань ADO.NET не пов'язаний.- Пул потоків (thread pool)
Набір фонових потоків, які CLR створює за потреби й перевикористовує для коротких задач. Сюди потрапляють Task.Run, продовження async-методів і колбеки таймерів.
- Пул потоків FastAPI
Пул, у якому FastAPI виконує ендпоінти й залежності, оголошені через звичайний
def. Працює через AnyIO і за замовчуванням обмежений 40 одночасними викликами на процес.- Пул потоків libuv (UV_THREADPOOL_SIZE)
Спільний на процес пул потоків, де libuv виконує операції без неблокувального API ОС: файли,
dns.lookup, частину crypto й асинхронний zlib. За замовчуванням 4 потоки, максимум 1024, розмір задає змінна середовищаUV_THREADPOOL_SIZE.- Пул процесів (ProcessPoolExecutor)
Виконавець із
concurrent.futures, який запускає функції в окремих процесах. У кожного процесу свій інтерпретатор і свій GIL, а аргументи й результати передаються через pickle.- Рамка вікна (ROWS, RANGE)
Частина
OVER, яка задає, які рядки відносно поточного входять у розрахунок.ROWSрахує фізичні рядки,RANGE— значення ключа сортування; заORDER BYбез рамки дієRANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.- Реалізація за замовчуванням в інтерфейсі (default interface method)
Член інтерфейсу з тілом (C# 8). Використовується, якщо тип не дав власної реалізації; викликається лише через посилання типу інтерфейсу. Потребує рантайму .NET Core 3.0+.
- Ребалансування (rebalance)
Перерозподіл партицій між учасниками групи споживачів, коли учасник приходить, іде або перестає відповідати. Записи, оброблені, але не закомічені до ребалансування, надходять повторно.
- Ревізія Alembic
Файл міграції з ідентифікатором
revision, посиланням на батькаdown_revisionі функціямиupgrade()таdowngrade(). Ревізії утворюють граф версій схеми.- Регресійне тестування
Повторна перевірка функціональності, яка вже працювала, після змін. Під час міграції ним переконуються, що нова версія поводиться так само, як стара.
- Реентерабельне блокування (reentrant lock)
Блокування, у яке потік-власник може ввійти повторно, не чекаючи сам на себе; вийти потрібно стільки ж разів. Monitor і Lock реентерабельні, SemaphoreSlim — ні.
- Реєстр образів (container registry)
Сервіс зберігання й роздачі образів: Docker Hub,
mcr.microsoft.com, Azure Container Registry, GitHub Container Registry. Образ адресують за тегом (змінний) або за digest (незмінний).- Режим блокування (lock mode)
Тип блокування, який визначає, з якими іншими блокуваннями воно сумісне. Основні режими SQL Server — S (читання), U (читання перед зміною), X (зміна) і намірні IS, IX, SIX.
- Рекурсивний CTE
CTE, який посилається сам на себе: якірна частина дає початкові рядки, а рекурсивна через
UNION ALLповторюється, поки повертає рядки. Ним обходять ієрархії; у SQL Server глибину обмежуєMAXRECURSION, за замовчуванням 100.- Рекурсія (recursion)
Прийом, за якого функція викликає саму себе для меншої підзадачі. Потрібні базовий випадок без рекурсії й крок, що до нього наближає; кожен виклик займає кадр стека.
- Репліка для читання (readable secondary)
Вторинна репліка групи доступності Always On, до якої дозволені read-only підключення. Дані відстають від первинної на час доставки й застосування журналу, запити йдуть під snapshot isolation.
- Рециклінг пулу (app pool recycling)
Плановий або вимушений перезапуск робочого процесу IIS: за розкладом, за лімітом пам'яті, у разі зміни конфігурації. За замовчуванням новий процес стартує до зупинки старого (overlapped recycle).
- Рівень ізоляції (isolation level)
Налаштування транзакції, яке визначає, які зміни паралельних транзакцій вона бачить і які аномалії допустимі. Стандарт SQL задає чотири рівні: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
- Рівно один раз (exactly-once)
Гарантія, за якої кожне повідомлення обробляється рівно один раз. У Kafka досягається ідемпотентним producer і транзакціями, але лише для записів усередині Kafka; для зовнішніх систем її замінюють at-least-once і дедуплікацією.
- Розбухання таблиці (bloat)
Місце в таблиці чи індексі, зайняте мертвими версіями й порожнечами після них. Запити читають зайві сторінки; звичайний VACUUM місце перевикористовує, але ОС не повертає.
- Розділення обов'язків (separation of duties, SoD)
Правило, за яким критичну операцію не виконує повністю одна людина: хто створює платіж, той його не затверджує. У RBAC — заборона конфліктних ролей в одного користувача (статичне) або в одній сесії (динамічне).
- Розділення сторінки (page split)
Вставлення в заповнену сторінку індексу: SQL Server виділяє нову сторінку й переносить у неї частину рядків. Це зайвий запис у журнал, фрагментація й напівпорожні сторінки.
- Розкид терміну життя (TTL jitter)
Випадкова добавка до терміну життя запису кешу, щоб ключі, завантажені одночасно, не закінчували термін в один момент і не спричиняли лавину промахів.
- Розмічене об'єднання (discriminated union)
Union об'єктних типів зі спільним полем-міткою літерального типу, наприклад
kindабоstatus. Перевірка мітки звужує значення до одного варіанта.- Розмотування стека (stack unwinding)
Друга фаза обробки винятку: рантайм знімає кадри стека від місця викидання до знайденого обробника й дорогою виконує блоки
finally.- Розподілена система контролю версій (DVCS)
Система контролю версій, у якій кожен учасник має повну копію репозиторію з усією історією. Коміти створюються локально, а із сервером та іншими копіями обмінюються окремими командами. Приклади — Git і Mercurial; SVN, навпаки, централізована.
- Розподілена транзакція (distributed transaction)
Транзакція над кількома ресурсами (базами, з'єднаннями), яку координатор фіксує двофазним комітом. У Windows це MSDTC; у .NET 7+ підтримується лише на Windows і вмикається явно.
- Розподілене блокування
Блокування, спільне для кількох процесів або вузлів, зазвичай у Redis чи базі даних. Потребує таймауту, бо власник може впасти, не знявши його.
- Розподілене трасування (distributed tracing)
Запис шляху одного запиту через усі сервіси у вигляді дерева спанів зі спільним trace id. Показує, де витрачається час і де сталася помилка.
- Розподілений кеш (IDistributedCache)
Кеш у зовнішньому сховищі (Redis, SQL Server, Postgres), спільний для всіх екземплярів застосунку. Зберігає масиви байтів, тому серіалізація лежить на застосунку.
- Розподілений моноліт (distributed monolith)
Система з формально окремих сервісів, які не можна випускати незалежно: вони ділять базу, викликають одне одного синхронними ланцюжками й змінюються разом. Поєднує мінуси моноліту й мікросервісів.
- Розширений RTTI та атрибути
Інформація про типи під час виконання з модуля
System.Rtti: поля, методи й властивості класу, а не лишеpublished. Зберігає атрибути на кшталт[Test], за якими працюють серіалізатори, ORM і DUnitX. З'явився в Delphi 2010.- Рольовий інтерфейс (role interface)
Інтерфейс, який описує одну роль об'єкта для конкретного клієнта, а не всі його публічні методи. Протилежність — заголовковий інтерфейс (header interface), що копіює клас повністю.
- Ротація ключів підпису
Планова заміна ключа, яким видавець підписує токени. Новий ключ публікують у JWKS заздалегідь, а старий тримають, доки не спливуть підписані ним токени, — інакше ті, хто перевіряє з кешем, відхилять токени.
- Ротація refresh-токенів
Сервер авторизації видає новий refresh-токен під час кожного оновлення, а старий робить недійсним. Повторне пред'явлення старого — ознака крадіжки, і сервер відкликає весь ланцюжок.
- Сага (saga)
Спосіб виконати бізнес-операцію через кілька сервісів ланцюжком локальних транзакцій. Якщо крок не вдався, виконані кроки скасовуються компенсувальними діями.
- Семантика acquire/release
Порядок для пари операцій: після читання з acquire наступні звертання не виконуються раніше за нього, а до запису з release попередні звертання не затримуються після нього. Так працюють Volatile.Read і Volatile.Write.
- Семантичне версіонування (SemVer)
Схема версій
MAJOR.MINOR.PATCH: major зростає за несумісних змін, minor — за нових зворотно сумісних можливостей, patch — за виправлень. Суфікс через дефіс позначає попередню версію, через плюс — метадані збирання.- Семантичний HTML
Розмітка елементами за змістом:
button,nav,main,label, заголовки — замістьdivіspan. Дає роль, поведінку клавіатури й структуру для скринрідерів без додаткового коду.- Сервер авторизації (authorization server)
Сервіс, який автентифікує користувача й видає токени: Keycloak, Microsoft Entra ID, ADFS, Duende IdentityServer. У термінах OIDC — OpenID Provider.
- Серверний рендеринг (SSR)
Формування HTML сторінки на сервері на кожен запит. Користувач одразу бачить вміст, а JS потім робить сторінку інтерактивною.
- Серверний стан (server state)
Копія даних, власник яких — сервер. Вона застаріває без відома клієнта, тому її кешують, перезапитують та інвалідують, а не зберігають як звичайний state.
- Серверні компоненти (React Server Components, RSC)
Компоненти, які виконуються лише на сервері або під час збирання. Можуть бути
asyncі читати дані напряму, їхній код не потрапляє в браузер, але state й обробників подій у них немає.- Сервісний квиток (service ticket)
Квиток Kerberos до конкретної служби, який KDC видає за TGT. Зашифрований ключем облікового запису, на якому зареєстрований SPN служби, тому служба перевіряє його сама, без звернення до KDC.
- Середовище (hosting environment)
Ім'я середовища виконання —
Development,Staging,Productionабо власне. Задається змінноюASPNETCORE_ENVIRONMENTчиDOTNET_ENVIRONMENT, за замовчуваннямProduction, і визначає файлappsettings.{Environment}.jsonта поведінку застосунку.- Сигнал (signal)
Обгортка над значенням, яка повідомляє споживачів про його зміну:
signal()для записуваного значення,computed()для похідного,effect()для побічних дій. Стабільні з Angular 17.- Сигнальні входи й виходи (input, output, model)
Функції
input(),output()іmodel(), які замінюють декоратори@Input()і@Output(). Вхід — сигнал лише для читання,model()— двостороння прив'язка. Стабільні з Angular 19.- Симптомний алерт
Алерт на те, що бачить користувач: помилки, затримку, недоступність. Протилежність причинному алерту на внутрішній показник на кшталт завантаження CPU.
- Синхронні репліки (in-sync replicas, ISR)
Репліки партиції, які не відстають від лідера. З
acks=allзапис підтверджується, коли його отримали всі ISR, аmin.insync.replicasзадає, скільки їх має бути щонайменше.- Сіль (salt)
Випадкове значення, унікальне для кожного пароля, яке зберігається поруч із хешем. Однакові паролі дають різні хеші, а заздалегідь пораховані таблиці стають марними.
- Скалярна користувацька функція (scalar UDF)
Функція T-SQL, яка повертає одне значення. До SQL Server 2019 викликається на кожен рядок і забороняє паралельний план; із 2019 на рівні сумісності 150 придатні функції вбудовуються в запит.
- Складність за пам'яттю (space complexity)
Оцінка того, скільки додаткової пам'яті потребує алгоритм зі зростанням входу n, без урахування самого входу. Прохід із
HashSet<T>— O(n) пам'яті, подвійний цикл без колекцій — O(1).- Скомпільований запит (compiled query)
LINQ-запит, заздалегідь перетворений на делегат через
EF.CompileQueryабоEF.CompileAsyncQuery. Під час виклику EF не будує й не порівнює дерево виразів, що заощаджує час на гарячих шляхах.- Скринрідер (screen reader)
Програма, яка озвучує інтерфейс або виводить його на брайлівський дисплей: NVDA, JAWS, VoiceOver, TalkBack. Читає дерево доступності, а не пікселі.
- Слабке посилання [weak]
Атрибут інтерфейсного посилання, який не збільшує лічильник посилань. Коли об'єкт знищується, рантайм обнуляє всі такі посилання; за це платять обліком слабких посилань. На Win32 і Win64 доступний із Delphi 10.1 Berlin.
- Снапшот (snapshot) в event sourcing
Збережений стан агрегату на певній версії потоку. Агрегат завантажують зі снапшота й дочитують лише пізніші події, а не весь потік.
- Сортування злиттям (merge sort)
Сортування, яке ділить масив навпіл, сортує половини й зливає їх. Завжди O(n log n) і стабільне, але потребує O(n) додаткової пам'яті.
- Спан (span)
Одна операція всередині трейсу: вхідний запит, SQL-запит або HTTP-виклик. Спан має ім'я, початок, тривалість, атрибути й посилання на батьківський спан. У .NET спан — це
Activity.- Спекулятивна загальність (speculative generality)
Запах коду з каталогу Фаулера: абстракції, параметри й хуки «на майбутнє», якими ніхто не користується. Лікується видаленням зайвого.
- Специфічність селектора (specificity)
Вага селектора в каскаді — трійка «id, класи й атрибути й псевдокласи, теги й псевдоелементи». За однакового походження й шару перемагає правило з більшою специфічністю.
- Списковий шаблон (list pattern)
Шаблон вигляду
[1, .., var last](C# 11), який зіставляє елементи масиву, списку абоSpan<T>за позиціями;..означає будь-яку кількість елементів.- Список суміжності (adjacency list)
Спосіб зберігати граф: для кожної вершини — список її сусідів, у C# зазвичай
Dictionary<T, List<T>>. Займає O(V + E) пам'яті й підходить для розріджених графів.- Спільне використання структури (structural sharing)
Прийом незмінних структур даних: нова версія перевикористовує незмінені частини старої.
ImmutableList<T>.Addстворює O(log n) нових вузлів дерева, а решта вузлів спільні.- Спостережуваність (observability)
Властивість системи, що дає змогу зрозуміти її внутрішній стан за даними, які вона віддає назовні: метриками, трейсами й логами. На відміну від моніторингу, відповідає й на питання, про які не думали заздалегідь.
- Спостерігач (Observer)
Поведінковий патерн: видавець сповіщає всіх підписників про зміну. У .NET це події (
event) та інтерфейсиIObservable<T>іIObserver<T>.- Стаб (stub)
Дублер, який повертає заздалегідь задані відповіді й так керує вхідними даними коду, що тестується. Тест за стабом нічого не перевіряє.
- Стабільне сортування (stable sort)
Сортування, яке зберігає початковий порядок елементів із рівними ключами.
Enumerable.OrderByстабільний, аArray.SortіList<T>.Sort— ні.- Стан гонитви (race condition)
Помилка, за якої результат програми залежить від того, у якому порядку потоки звертаються до спільних даних. Класичний приклад — загублене збільшення під час count++ з двох потоків.
- Стан компонента (state)
Дані, які React зберігає для екземпляра компонента між рендерами. Змінюються лише через функцію з
useState, і кожна зміна запускає новий рендер.- Стан набору даних (State)
Значення властивості
State—dsBrowse,dsEdit,dsInsertта інші, — яке визначає, що можна робити з поточним записом. МетодиEdit,Insert,PostіCancelперемикають стани.- Стан сутності (EntityState)
Мітка, за якою EF Core вирішує, що робити із сутністю під час
SaveChanges:Added— вставити,Modified— оновити,Deleted— видалити,UnchangedіDetached— нічого.- Стандартні claims (iss, sub, aud, exp)
Зареєстровані поля корисного навантаження JWT:
iss— видавець,sub— суб’єкт,aud— для кого токен,expіnbf— межі часу життя,iat— час випуску,jti— ідентифікатор токена. Перевіряти треба підпис разом зiss,audіexp, інакше чужий токен пройде.- Статистика (statistics)
Об'єкт із розподілом значень стовпців: гістограма за першим стовпцем і щільність за префіксами. За нею оптимізатор оцінює, скільки рядків поверне умова.
- Статична лямбда (static lambda)
Лямбда з модифікатором
static(C# 9), якій заборонено захоплювати локальні змінні йthis. Гарантує, що не з'явиться замикання й делегат можна кешувати.- Статичний абстрактний член інтерфейсу (static abstract member)
Статичний метод, властивість або оператор, який інтерфейс вимагає від типу-реалізатора (C# 11). Викликається через параметр типу, наприклад
T.Zero; на цьому побудована generic math.- Стек викликів (call stack)
Пам'ять потоку, куди кожен виклик методу кладе свій кадр із параметрами, локальними змінними й адресою повернення. Звільняється автоматично після виходу з методу; розмір обмежений, а переповнення завершує процес.
- Стек викликів JavaScript (call stack)
Стек кадрів функцій, що виконуються, в єдиному потоці JavaScript. Доки він не порожній, event loop не бере нових задач; переповнення кидає
RangeError.- Стирання типів (type erasure)
Компілятор TypeScript видаляє анотації типів під час виведення JavaScript. У рантаймі типів немає: їх не можна перевірити, отримати рефлексією чи використати як значення.
- Сторонні cookie (third-party cookies)
Cookie іншого сайту, завантаженого всередині сторінки, наприклад в iframe. Safari їх блокує, Firefox ізолює за сайтом верхнього рівня, у Chrome їх може вимкнути користувач.
- Стратегія (Strategy)
Поведінковий патерн: сімейство взаємозамінних алгоритмів за спільним інтерфейсом, потрібний передається ззовні. У C# стратегією часто слугує делегат або
IComparer<T>.- Стрілкова функція (arrow function)
Короткий запис функції
(x) => x * 2. Не має власнихthis,argumentsіsuper— бере їх із зовнішньої області — і не може бути викликана черезnew.- Стрілянина дробом (shotgun surgery)
Запах коду: одна логічна зміна вимагає дрібних правок у багатьох класах. Лікується збиранням пов'язаної логіки в один модуль, наприклад рефакторингами Move Function і Combine Functions into Class.
- Стрімінг HTML (streaming SSR)
Серверний рендеринг, за якого HTML надсилається частинами: спершу оболонка з fallback, потім готові фрагменти в тій самій відповіді. Повільні дані не затримують усю сторінку.
- Строга рівність (===)
Порівняння без приведення типів: значення різних типів не рівні, об'єкти рівні лише за збігу посилання. Єдина дивина —
NaN === NaNдаєfalse.- Строгий режим TypeScript (strict)
Прапорець
tsconfig.json, який вмикає сімейство строгих перевірок:strictNullChecks,noImplicitAny,strictFunctionTypesта інші. Із TypeScript 6.0 увімкнений за замовчуванням.- Строк зберігання (retention)
Політика, за якою брокер видаляє старі дані логу: за часом (
retention.ms, за замовчуванням 7 днів), за розміром або ущільненням за ключем. Читання дані не видаляє.- Структурна типізація (structural typing)
Сумісність типів визначається набором членів, а не іменем чи оголошеним успадкуванням. Так працює TypeScript; C# і Java використовують номінальну типізацію.
- Структурне логування (structured logging)
Запис логів як подій із властивостями, а не як готових рядків. За властивостями можна шукати, фільтрувати й будувати агрегати в Elastic, Seq чи іншому сховищі.
- Структурний патерн (structural pattern)
Патерн, що описує, як збирати класи й об'єкти у більші структури. У GoF їх сім: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.
- Ступінь паралелізму (degree of parallelism)
Максимальна кількість операцій, які виконуються одночасно. У
Parallel.ForEachAsyncїї задають черезParallelOptions.MaxDegreeOfParallelism.- Сурогатний ключ
Штучний ідентифікатор рядка без змісту в предметній області: число з
IDENTITYабоSEQUENCE, GUID. Не змінюється, тому зручний для зовнішніх ключів.- Схема «зірка» (star schema)
Модель сховища: у центрі таблиця фактів з мірами й ключами (продажі), навколо — денормалізовані таблиці вимірів (дата, магазин, товар). Запит — один рівень з'єднань і агрегат.
- Схема автентифікації
Іменована реєстрація обробника автентифікації в ASP.NET Core:
Cookies,OpenIdConnect,Bearer. Схема визначає, як автентифікувати запит, виконати challenge, вхід і вихід.- Схема Prisma (schema.prisma)
Файл мовою схем Prisma з джерелом даних, генераторами й моделями. З нього Prisma Migrate будує SQL-міграції, а генератор — типізований клієнт.
- Сховище версій (version store)
Місце, де SQL Server зберігає попередні версії рядків для RCSI, SNAPSHOT, тригерів і онлайн-перебудови індексів. Без ADR — у tempdb, з ADR — у persistent version store самої бази.
- Сховище подій (event store)
База для event sourcing: лише дописує події в потоки, зберігає номер версії потоку й відхиляє запис, якщо очікувана версія не збіглася. Приклади — KurrentDB (колишня EventStoreDB), Marten поверх PostgreSQL.
- Сховище секретів (secret store)
Зовнішній сервіс для паролів, ключів і сертифікатів із контролем доступу, аудитом і ротацією: Azure Key Vault, AWS Secrets Manager, HashiCorp Vault. Застосунок читає секрети під час старту через провайдер конфігурації.
- Таблиця віртуальних методів (vtable)
Структура типу в рантаймі зі слотами адрес його віртуальних методів. Віртуальний виклик бере адресу зі слота таблиці реального типу об'єкта.
- Таблиця віртуальних методів Delphi (VMT)
Структура класу зі слотами адрес усіх його віртуальних методів, зокрема успадкованих. Кожен об'єкт починається з вказівника на VMT свого класу, і виклик
virtual-методу бере адресу з потрібного слота.- Таблиця історії міграцій
Службова таблиця
__EFMigrationsHistoryу базі зі списком застосованих міграцій і версією EF. За неюdatabase update, bundle та ідемпотентний скрипт визначають, що ще не застосовано.- Таблиця-купа (heap)
Таблиця, рядки якої зберігаються без упорядкування за ключем. У PostgreSQL усі таблиці — купи, а індекси, включно з первинним ключем, посилаються на фізичну адресу версії рядка (
ctid).- Табличний параметр (table-valued parameter, TVP)
Параметр користувацького табличного типу (
CREATE TYPE ... AS TABLE), через який клієнт передає набір рядків одним викликом. У процедурі оголошуєтьсяREADONLY, статистики за його стовпцями немає.- Табуляція (tabulation)
ДП знизу вгору: таблицю відповідей заповнюють циклом від базових випадків до цільового, без рекурсії. Дає змогу зберігати лише останні рядки таблиці й економити пам'ять.
- Тайм-аут запиту (request timeout)
Middleware ASP.NET Core (.NET 8+), яке після заданого часу скасовує токен
HttpContext.RequestAborted. Якщо застосунок не обробив скасування, клієнт отримує 504.- Теги кешу
Мітки, якими позначають записи кешу, щоб скинути всю групу одним викликом:
EvictByTagAsyncв output cache,RemoveByTagAsyncуHybridCache.- Теорема CAP
Твердження Brewer, доведене Gilbert і Lynch 2002 року: під час мережевого розділення розподілена система не може водночас зберегти лінеаризовність (C) і відповідь кожного робочого вузла (A).
- Термінальний middleware
Middleware, який сам формує відповідь і не викликає наступний компонент, наприклад
app.Run. Усе, що зареєстровано після нього в тій самій гілці, не виконується.- Термінація TLS (TLS termination)
Розшифрування HTTPS на проксі або балансувальнику, після якого запит іде до застосунку вже через HTTP. Сертифікат потрібен лише в точці термінації.
- Тест архітектури (architecture test)
Автоматичний тест, який перевіряє правила залежностей у коді: наприклад, що домен не посилається на EF Core, а один модуль не звертається до внутрішніх частин іншого. У .NET їх пишуть на NetArchTest або ArchUnitNET.
- Тестовий модуль NestJS (Test.createTestingModule)
API пакета
@nestjs/testing, що збирає модуль застосунку для тесту й дає змогу підмінити провайдери черезoverrideProvider. З нього створюють і повноцінний застосунок для e2e-тестів.- Тимчасова мертва зона (TDZ)
Ділянка від початку блоку до оголошення
let,constабоclass, де змінна вже існує, але звертання до неї кидаєReferenceError.- Тимчасовий доступ (just-in-time access)
Права, що діють обмежений час: видаються з датою завершення або активуються на запит на кілька годин. Приклад — Microsoft Entra Privileged Identity Management.
- Тимчасовий збій (transient fault)
Помилка, яка минає сама через короткий час: обрив мережі, перезапуск сервісу, відповідь 503 або 429. Такі помилки має сенс повторювати з паузою.
- Тип never
Тип без значень: результат функції, яка не повертається, і залишок після вичерпного звуження. Присвоєння в
neverу гілціdefaultперевіряє, щоswitchобробив усі варіанти.- Типізований хаб (Hub<T>)
Хаб, у якого методи клієнта описано інтерфейсом. Замість
SendAsync("Name", ...)викликається метод інтерфейсу, і помилку в імені ловить компілятор.- Токен впровадження (injection token)
Ключ, за яким контейнер NestJS знаходить провайдер, коли типу класу недостатньо: рядок,
Symbolабо абстрактний клас. Реєструється як{ provide: TOKEN, useClass: Impl }, впроваджується через@Inject(TOKEN).- Токен конкурентності (concurrency token)
Властивість, вихідне значення якої EF Core додає у
WHEREпід часUPDATEіDELETE. Якщо рядок устигли змінити, зачеплено нуль рядків, і EF кидаєDbUpdateConcurrencyException. На SQL Server зазвичайrowversion, у PostgreSQL —xmin.- Токен скасування (CancellationToken)
Структура, через яку операція дізнається про запит скасування. Сам токен скасувати не можна — лише перевірити
IsCancellationRequestedабо підписатися черезRegister.- Токен, прив'язаний до відправника (sender-constrained)
Токен, яким може скористатися лише власник певного ключа: через сертифікат mTLS (RFC 8705) або підпис DPoP (RFC 9449). Викрадений без ключа токен марний.
- Том (volume)
Сховище даних поза шаром контейнера для запису, яким керує Docker. Переживає видалення контейнера; на відміну від bind mount не прив'язане до теки хоста.
- Топологічне сортування (topological sort)
Впорядкування вершин орієнтованого графа без циклів так, щоб кожне ребро йшло від ранішої вершини до пізнішої. Алгоритм Кана робить це за O(V + E) і заразом знаходить цикли.
- Точка неповернення (pivot transaction)
Крок саги, після якого компенсації більше не виконуються: решту кроків лише повторюють до успіху, тому вони мають бути ідемпотентними.
- Точка-точка (point-to-point)
Модель обміну повідомленнями, у якій кожне повідомлення черги отримує рівно один із конкурентних одержувачів. Так розподіляють роботу між екземплярами сервісу.
- Транзакція
Група операцій із базою, яка виконується як одне ціле: або фіксується повністю (
COMMIT), або повністю скасовується (ROLLBACK).- Транзитивна залежність
Пакет, який потрапив у проєкт не напряму, а як залежність іншого пакета. NuGet обирає для нього одну версію на весь проєкт.
- Трансформація claims (IClaimsTransformation)
Інтерфейс ASP.NET Core: його
TransformAsyncвикликається після успішної автентифікації й може доповнити principal даними застосунку. Спрацьовує на кожному запиті, іноді кілька разів, тому має бути ідемпотентним.- Траса стека (stack trace)
Перелік викликів від місця викидання винятку до місця перехоплення, збережений в
Exception.StackTrace.throw;його зберігає,throw ex;починає заново.- Трекер змін (change tracker)
Частина
DbContext, яка зберігає відстежувані сутності, їхні стани й вихідні значення. За різницею між вихідними й поточними значеннямиSaveChangesбудуєINSERT,UPDATEіDELETE.- Тризначна логіка
У SQL умова буває TRUE, FALSE або UNKNOWN. Будь-яке порівняння з
NULLдає UNKNOWN, аWHERE,ONіHAVINGпропускають лише TRUE — звідси пасткиNOT INі<>.- Узгодженість у кінцевому підсумку (eventual consistency)
Модель, у якій дані різних вузлів або сервісів можуть якийсь час розходитися, але сходяться, коли всі зміни доставлено. Ціна відмови від розподілених транзакцій.
- Узгодження (reconciliation) у React
Алгоритм, яким React порівнює нове дерево елементів із попереднім і вирішує, які вузли DOM оновити, створити або видалити. Елементи списку зіставляються за
key.- Умовна компіляція
Директиви {$IFDEF}, {$IF} і {$ENDIF}, які вмикають або вилучають ділянки коду під час збирання. Символ UNICODE дозволяє тримати один вихідний код для старої й нової Delphi.
- Умовний оператор if у виразах
Тернарний оператор Delphi 13:
X := if A > B then A else B;. Працює всередині будь-якого виразу, а його тип — спільний тип обох гілок.- Умовний тип (conditional type)
Тип вигляду
T extends U ? X : Y, який обирає результат за сумісністю типів. Зinferвитягує частину типу; над union за замовчуванням розподіляється за варіантами.- Успадкування (inheritance)
Механізм, за якого новий клас отримує члени базового і може їх розширити або перевизначити. У C# клас має один базовий клас, а інтерфейсів — скільки завгодно.
- Ущільнення купи (compaction)
Фаза збирання, у якій GC зсуває об'єкти, що вижили, впритул один до одного й оновлює всі посилання на них. Прибирає фрагментацію, але дорожча, ніж просто внести мертві ділянки до списку вільних блоків (sweep).
- Ущільнення логу (log compaction)
Політика зберігання топіка Kafka (
cleanup.policy=compact), за якої для кожного ключа лишається останній запис. Запис із ключем і порожнім значенням (tombstone) видаляє ключ.- Фабрика реєстрації (implementation factory)
Делегат
Func<IServiceProvider, T>, який передають вAddSingleton,AddScopedабоAddTransientзамість типу реалізації. Контейнер викликає його, щоб створити сервіс, і звільняє повернутий об'єкт як створений ним самим.- Фабричний метод (Factory Method)
Породжувальний патерн: базовий клас оголошує метод створення об'єкта, а підклас вирішує, який конкретний клас повернути.
- Файл форми (.dfm)
Ресурс з описом компонентів форми та значень їхніх published-властивостей. Підключається до модуля директивою
{$R *.dfm}і читається під час створення форми; буває текстовим і бінарним.- Файловий обмін (file transfer)
Стиль інтеграції, за якого одна система вивантажує дані у файл, а інша забирає й завантажує його — через спільну папку, SFTP або AS2. Простий і підходить для великих пакетів, але дані застарівають до наступного вивантаження.
- Фантомна залежність (phantom dependency)
Пакет, який код імпортує, хоча його немає у власному
package.json: він доступний лише тому, що npm підняв чужу транзитивну залежність у пласкийnode_modules. Ламається під час оновлення пакета, який її притягнув.- Фантомне читання (phantom read)
Аномалія, за якої повторний запит із тією самою умовою повертає нові або зниклі рядки: інша транзакція вставила чи видалила відповідні записи.
- Фасад (Facade)
Структурний патерн: простий єдиний інтерфейс до складної підсистеми з кількох об'єктів. Клієнт викликає фасад і не знає про частини підсистеми.
- Фейк (fake)
Спрощена, але робоча реалізація залежності: репозиторій на словнику, пошта в список,
FakeTimeProvider. Поводиться як справжня, але не годиться для продакшену.- Фікстура pytest (fixture)
Функція з декоратором
@pytest.fixture, яка готує дані або ресурс для тесту. Тест отримує її результат параметром з тим самим ім'ям, а код післяyieldвиконується як teardown.- Фільтр винятків (exception filter)
Умова
when (...)у блокуcatch(C# 6). Виконується до розмотування стека; якщо вона хибна, виняток іде далі, наче цьогоcatchнемає.- Фільтр ендпоінта (endpoint filter)
Аналог фільтра MVC для Minimal API (.NET 7+): код до й після обробника з доступом до його аргументів через
EndpointFilterInvocationContext. Підключається черезAddEndpointFilter.- Фільтр MVC
Код, який MVC викликає навколо action на певному етапі: authorization, resource, action, exception або result. На відміну від middleware, бачить контекст action — аргументи,
ModelStateі результат.- Фільтрований індекс (filtered index)
Некластерний індекс з умовою
WHERE, який зберігає лише відповідні рядки. Він менший і дешевший за повний індекс, але використовується, лише якщо запит гарантовано потрапляє у фільтр.- Фіналізатор (finalizer)
Метод
~ClassName(), який GC викликає перед звільненням пам'яті недосяжного об'єкта. Викликається недетерміновано, слугує страховкою для некерованих ресурсів.- Фонове збирання (background GC)
Збирання покоління 2 на виділеному потоці паралельно з роботою застосунку; ефемерні збирання в цей час ідуть як зазвичай. Увімкнене за замовчуванням.
- Фрагментація індексу (index fragmentation)
Розбіжність логічного порядку сторінок індексу з фізичним через розщеплення сторінок. Заважає великим послідовним читанням; на SSD зазвичай важливіша щільність сторінок.
- Фрейм (TFrame)
Контейнер із компонентами й кодом, який проєктують окремо і вставляють у кілька форм. Зміни фрейму видно в усіх місцях використання, крім властивостей, перевизначених на формі.
- Функції ранжування
ROW_NUMBER,RANK,DENSE_RANKіNTILE— віконні функції, які нумерують рядки всередині секції. Вони відрізняються обробкою рівних значень.- Функціональна залежність
Зв'язок
X → Y: значення набору стовпців X однозначно визначає значення Y. На функціональних залежностях будуються визначення нормальних форм.- Хаб SignalR (hub)
Клас-нащадок
Hub, через який клієнти викликають методи сервера, а сервер — методи клієнтів. Екземпляр створюється на кожен виклик методу.- Характеризаційний тест (characterization test)
Тест, що фіксує фактичну поведінку наявного коду, а не потрібну. Термін Майкла Фезерса; такі тести страхують рефакторинг і перенесення legacy.
- Хвостова затримка (tail latency)
Час відповіді найповільніших запитів, зазвичай перцентилі p95, p99 і p99.9. Під навантаженням першими зростають саме вони, а середнє значення це приховує.
- Хвостовий виклик (tail call)
Виклик, що стоїть останньою дією функції, тому її кадр стека можна перевикористати. Компілятор C# такої оптимізації не гарантує, тому глибоку рекурсію в C# переписують циклом.
- Хеш-код (GetHashCode)
Число, за яким хеш-таблиці (
Dictionary,HashSet) обирають кошик. Рівні заEqualsоб'єкти зобов'язані мати рівні хеш-коди.- Хеш-таблиця (hash table)
Структура даних, яка за хеш-кодом ключа обчислює місце елемента в масиві й знаходить його в середньому за O(1). У .NET на ній побудовані
Dictionary<TKey, TValue>іHashSet<T>.- Хешований об'єкт (hashable)
Об'єкт, хеш якого не змінюється за час життя і який порівнюється через
__eq__. Лише такі об'єкти можуть бути ключамиdictі елементамиset.- Хешування паролів
Зберігання пароля у вигляді результату повільної функції (PBKDF2, bcrypt, scrypt, Argon2) із сіллю. Повільність навмисна: перебір бази, що витекла, стає дорогим.
- Хореографія (choreography)
Спосіб координації саги без центру: кожен сервіс реагує на події інших і публікує свої. Простий для коротких ланцюжків, але процес цілком ніде не видно.
- Хук preStop
Дія, яку kubelet виконує перед надсиланням SIGTERM контейнеру: команда, HTTP-запит або пауза
sleep. Час хука входить уterminationGracePeriodSeconds.- Хуки життєвого циклу NestJS (lifecycle hooks)
Методи провайдерів і модулів, які NestJS викликає під час старту (
onModuleInit,onApplicationBootstrap) і зупинки (onModuleDestroy,beforeApplicationShutdown,onApplicationShutdown). Хуки зупинки за сигналом працюють лише післяenableShutdownHooks().- Хуки React (hooks)
Функції з іменем на
use(useState,useEffect,useContext), які підключають до компонента стан і можливості React. Викликаються лише на верхньому рівні компонента або свого хука.- Цикл подій (event loop)
Механізм середовища виконання JavaScript: коли стек викликів порожній, він виконує всі мікрозадачі, а потім бере наступну задачу з черги. Завдяки йому один потік обслуговує таймери, події та введення-виведення.
- Цикл подій asyncio (event loop)
Диспетчер asyncio в одному потоці: виконує готові задачі до їхнього наступного
await, а потім питає ОС, яке введення-виведення завершилося. Запускається черезasyncio.run().- Циклічний збирач сміття (cyclic GC)
Модуль
gcу CPython: доповнює підрахунок посилань і знаходить групи об'єктів, які посилаються один на одного, але недосяжні. Працює за поколіннями.- Час життя сервісу (service lifetime)
Правило, за яким контейнер вирішує, коли створити новий екземпляр сервісу і коли його звільнити. У .NET три варіанти — Transient, Scoped і Singleton.
- Частковий індекс (partial index)
Індекс лише за рядками, що задовольняють умову
WHEREу його визначенні. Менший за повний і використовується запитами із сумісною умовою; аналог фільтрованого індексу SQL Server.- Червоно-чорне дерево (red-black tree)
Самобалансувальне двійкове дерево пошуку: вставка, видалення й пошук займають O(log n). На ньому побудовані
SortedSet<T>іSortedDictionary<TKey, TValue>.- Черга задач (task queue, macrotask)
Черга, з якої event loop бере по одній задачі: колбеки
setTimeout, події користувача, повідомлення мережі. Між задачами виконуються всі мікрозадачі.- Черга недоставлених повідомлень (dead letter queue, DLQ)
Окрема черга або топік для повідомлень, які не вдалося обробити після всіх спроб. Не дає «отруйному» повідомленню блокувати потік і зберігає його для розбору.
- Черга повідомлень UI-потоку (message loop)
Цикл, у якому UI-потік по черзі обробляє повідомлення: введення, перемальовування, делегати з
SynchronizationContext.Post. Поки UI-потік зайнятий, черга стоїть і інтерфейс не відповідає.- Черга фіналізації (finalization queue)
Внутрішній список CLR з об'єктами, які мають фіналізатор. Недосяжні об'єкти з нього переходять до черги f-reachable, їхні фіналізатори виконує потік фіналізації, а пам'ять звільняється під час наступного збирання.
- Чиста архітектура (clean architecture)
Стиль, у якому доменне ядро розташоване в центрі, а всі залежності у вихідному коді спрямовані до нього. Інфраструктура й UI підключаються ззовні через інтерфейси, оголошені в ядрі. Близькі варіанти — гексагональна та onion-архітектура.
- Чиста функція (pure function)
Функція, результат якої залежить лише від аргументів і яка не має побічних ефектів: не змінює поля, не пише у файли й базу. Її легко тестувати й викликати паралельно.
- Чотири золоті сигнали
Метрики з Google SRE Book для сервісу, який бачать користувачі: затримка, трафік, помилки й насичення. Якщо можна вимірювати лише чотири речі, вимірювати треба їх.
- Шаблон маршруту (route template)
Рядок вигляду
/orders/{id:int}, який описує, які URL підходять endpoint'у. Містить літерали, параметри у фігурних дужках, обмеження, значення за замовчуванням і catch-all.- Шаблон повідомлення (message template)
Текст логу з іменованими плейсхолдерами, наприклад
Order {OrderId} created. Значення зберігаються як окремі властивості, а сам шаблон слугує ключем групування однакових подій.- Шаблонний метод (Template Method)
Поведінковий патерн: базовий клас задає скелет алгоритму в одному методі, а окремі кроки лишає підкласам через віртуальні чи абстрактні методи.
- Шар образу (image layer)
Набір змін файлової системи, який дає одна інструкція Dockerfile (
RUN,COPY,ADD). Шари лише для читання, адресуються хешем і кешуються: незмінені шари не перезбираються.- Шардування (sharding)
Горизонтальний поділ даних між кількома базами на різних серверах за ключем шардування, наприклад за магазином. Масштабує запис, але ускладнює запити й транзакції між шардами.
- Шарувата архітектура (layered, n-tier)
Код поділено на горизонтальні шари: представлення, бізнес-логіка, доступ до даних. Кожен шар звертається лише до нижнього, тому бізнес-логіка залежить від шару даних.
- Швидке сортування (quicksort)
Сортування, яке обирає опорний елемент, розкладає решту на менші й більші та рекурсивно сортує частини. У середньому O(n log n) на місці, у найгіршому O(n²); нестабільне.
- Шов (seam)
Термін Майкла Фезерса: місце, де можна змінити поведінку програми, не редагуючи код у цьому місці, — віртуальний метод, параметр-інтерфейс, конфігурація. Через шви legacy-код покривають тестами.
- Шторм повторів (retry storm)
Лавина запитів, коли повтори на кількох рівнях перемножуються або всі клієнти повторюють одночасно. Добиває й без того перевантажений сервіс.
- Щільність сторінок (page density)
Наскільки заповнені сторінки індексу —
avg_page_space_used_in_percent. Напівпорожні сторінки потребують більше читань і пам'яті буферного пулу для тих самих даних.- Щонайменше один раз (at-least-once)
Гарантія доставки або виконання, за якої робота не губиться, але після збою може виконатися повторно. Обробник має бути ідемпотентним.
- Явна типізація JWT
Зазначення виду токена в заголовку
typ, наприкладat+jwtдля access-токена. Не дає видати id_token чи інший JWT того самого видавця за access-токен (RFC 8725, розділ 3.11).- ABAC (доступ на основі атрибутів)
Attribute-based access control: рішення ухвалює правило над атрибутами суб'єкта, об'єкта, операції та оточення — відділ, гриф, час, мережа. Модель описана в NIST SP 800-162.
- Access-токен (токен доступу)
Токен, з яким клієнт викликає API. Адресований ресурсному серверу й обмежений scopes, аудиторією та коротким часом життя.
- ACID
Чотири властивості транзакції: атомарність (все або нічого), узгодженість (дотримано обмежень), ізоляція (паралельні транзакції не бачать проміжних станів) і довговічність (зафіксоване переживе збій).
- Action (дія) у React 19
Асинхронна функція, запущена всередині переходу, наприклад передана в
<form action>. React відстежує її очікування й помилки та підтримує оптимістичні оновлення.- Action (метод дії)
Публічний метод контролера, який обробляє запит за маршрутом. Повертає
IActionResult, наприклад представлення, редирект або JSON.- ActivatorUtilities
Допоміжний клас, який створює об'єкт незареєстрованого типу, беручи параметри конструктора з
IServiceProvider. Створеним об'єктом володіє код, що викликає, а не контейнер.- Active Directory (AD)
Служба каталогів Microsoft: зберігає облікові записи користувачів і комп'ютерів, групи та політики домену. Контролери домену перевіряють паролі й видають квитки Kerberos.
- Activity
Тип .NET для одного кроку розподіленого трейсу (спану): ім'я, час, теги,
TraceIdіSpanId. Поточний спан доступний черезActivity.Current, створюються спани черезActivitySource.- Ad hoc поліморфізм
Різна поведінка для різних типів через окремі реалізації з одним іменем: перевантаження методів і операторів. Потрібну версію компілятор обирає за статичними типами аргументів.
- ADFS (Active Directory Federation Services)
Роль Windows Server — служба видачі токенів: перевіряє користувача в AD і видає застосункам підписані токени за WS-Federation, SAML 2.0 або OpenID Connect. Microsoft радить переходити з неї на Microsoft Entra ID.
- ADO (dbGo)
Компоненти Delphi
TADOConnection,TADOQuery,TADOStoredProcповерх COM-бібліотеки Microsoft ActiveX Data Objects. До SQL Server звертаються через OLE DB-провайдер.- ADO.NET
Базовий API доступу до даних у .NET:
DbConnection,DbCommand,DbDataReader, параметри й транзакції. На ньому побудовані провайдери на кшталтMicrosoft.Data.SqlClientі Npgsql, а поверх — EF Core і Dapper.- AggregateException
Виняток-контейнер для кількох помилок. У нього обгортають винятки задачі
.Wait()і.Result, аawaitвикидає вихідний виняток без обгортки.- Alembic
Інструмент міграцій схеми для SQLAlchemy від тих самих авторів. Зберігає міграції Python-файлами, а застосовану версію — у таблиці
alembic_version.- Anti-corruption layer (запобіжний шар)
Шар-перекладач між своєю моделлю й зовнішньою або legacy-системою. Він перетворює чужі моделі, коди й помилки, щоб вони не розповзалися вашим кодом.
- Antiforgery-токен
Пара пов'язаних токенів: один у cookie, другий у прихованому полі форми або заголовку. Сервер звіряє їх, і запит із чужого сайту, що не знає значення поля, відхиляється.
- Apache Kafka
Брокер на основі розподіленого журналу: повідомлення пишуться в партиції топіка й зберігаються заданий час, а споживачі читають їх за зміщенням і можуть перечитати знову. Порядок гарантується в межах партиції, а не топіка загалом.
- API (програмний інтерфейс)
Договір, за яким одна програма викликає іншу: набір операцій, їхні параметри, відповіді й помилки. Контракт важливіший за реалізацію — несумісна зміна ламає всіх споживачів одразу, тому його версіонують.
- API Gateway (шлюз API)
Єдина точка входу перед набором сервісів: маршрутизує запити, перевіряє автентифікацію, обмежує частоту й агрегує відповіді. У .NET шлюз часто будують на YARP.
- APM (application performance monitoring)
Моніторинг продуктивності застосунків: збирання трейсів, метрик і помилок із прив'язкою до запитів. Приклади — Elastic APM, Application Insights, Datadog.
- App Router
Маршрутизатор Next.js на основі папки
app/: папки задають сегменти URL,page.tsx— сторінку,layout.tsx— спільний каркас. Побудований на React Server Components.- AppDomain (домен застосунку)
Ізольована область усередині процесу .NET Framework для завантаження й вивантаження коду. У сучасному .NET додаткові домени створювати не можна; для ізоляції використовують процеси, для плагінів —
AssemblyLoadContext.- Application builder
Збирач Angular CLI на esbuild із dev-сервером на Vite, за замовчуванням у нових проєктах із v17. Замінює збирачі на Webpack, які у v22 оголошено deprecated.
- ARC у Delphi (Automatic Reference Counting)
Модель, у якій об'єкти, як і рядки, звільнялися за лічильником посилань. Її використовували мобільні компілятори Delphi та, із 10.2 Tokyo, компілятор Linux; у 10.4 Sydney для об'єктів її прибрали на всіх платформах.
- Arrange-Act-Assert (AAA)
Схема тесту з трьох кроків: підготувати об'єкти й дані, виконати дію, що перевіряється, перевірити результат. Робить тест читабельним і відокремлює дію від перевірок.
- Array DML
Виконання однієї параметризованої команди з масивами значень параметрів: СУБД виконує її для кожного рядка масиву, а клієнт звертається до сервера один раз. У FireDAC —
Params.ArraySizeіExecute.- ArrayPool<T>
Пул масивів для повторного використання:
Rentвидає масив не менший за запитану довжину,Returnповертає його в пул. Зменшує алокації буферів; післяReturnмасив використовувати не можна.- AS2 (Applicability Statement 2)
Протокол передавання EDI-документів по HTTP з підписом і шифруванням S/MIME та підписаною квитанцією про доставку MDN. Описаний у RFC 4130.
- ASGI
Asynchronous Server Gateway Interface — стандарт зв'язку асинхронного вебсервера із застосунком Python. Застосунок — корутина, яку сервер викликає на кожне з'єднання.
- ASP.NET Core Module (ANCM)
Нативний модуль IIS, який запускає застосунок ASP.NET Core всередині робочого процесу
w3wp.exe(in-process) або окремим процесом із Kestrel (out-of-process). Установлюється разом із .NET Hosting Bundle.- Aspire (раніше .NET Aspire)
Платформа Microsoft для локальної оркестрації та спостережуваності розподілених застосунків. Топологію описують кодом в AppHost; Aspire запускає сервіси, прокидає рядки підключення й дає дашборд.
- AssemblyLoadContext
Контекст завантаження збірок у .NET: в одному контексті — одна версія збірки з цим ім'ям. Окремі контексти дають змогу завантажувати різні версії й вивантажувати плагіни.
- Assertion rewriting
Переписування інструкцій
assertпід час імпорту тестових модулів. Завдяки йому pytest у разі падіння показує значення обох сторін порівняння без спеціальних методів перевірки.- async pipe
Пайп шаблону, який підписується на Observable або Promise, віддає останнє значення й відписується під час знищення компонента. Заразом викликає
markForCheck(), тому працює з OnPush.- async void
Асинхронний метод, який повертає
voidзамістьTask. Його не можна дочекатися, а необроблений виняток іде вSynchronizationContextабо в пул потоків і може завершити процес.- async/await
Пара ключових слів C#:
asyncпозначає метод, який компілятор перетворює на машину станів, аawaitпризупиняє його до готовності результату й повертає керування тому, хто викликав. Потік під час очікування не блокується — продовження виконається, коли операція завершиться.- AsyncLocalStorage
Клас Node.js з модуля
node:async_hooks, який зберігає дані, доступні в усьому ланцюжку асинхронних викликів одного запиту. АналогAsyncLocal<T>у .NET; у NestJS через нього передають користувача й id запиту без request scope.- Audience (аудиторія токена)
Claim
aud: для якого отримувача випущено токен. API зобов'язаний відхиляти токени з чужою аудиторією, інакше токен одного сервісу підійде до іншого.- Authorization code flow
Потік OAuth, у якому браузер отримує одноразовий код, а клієнт обмінює його на токени прямим запитом до
/token. Основний потік для входу користувача.- auto_explain
Модуль PostgreSQL, який автоматично пише в журнал плани запитів, довших за заданий поріг (
auto_explain.log_min_duration). Дає змогу побачити план повільного запиту в продакшені без ручного запуску.- Autofac
Популярний сторонній DI-контейнер для .NET. Підключається до ASP.NET Core через
UseServiceProviderFactoryі додає модулі, декоратори, впровадження через властивості та scope з тегами.- AutoFixture
Бібліотека, яка генерує тестові дані: створює об'єкти із заповненими властивостями, щоб тест задавав лише значущі для нього значення. Розширення підставляють дублерів NSubstitute або Moq і передають дані в параметри тесту.
- Autogenerate (Alembic)
Режим
alembic revision --autogenerate, який порівнюєMetaDataмоделей зі схемою бази й пише чернетку міграції. Не бачить перейменувань і обмежень без імені.- Awaiter
Об'єкт, який повертає
GetAwaiter()і через який працюєawait. НадаєIsCompleted,OnCompletedіGetResult.- Azure SignalR Service
Керований сервіс Azure, який приймає клієнтські з'єднання SignalR замість вашого сервера й пересилає повідомлення. Знімає потребу в sticky sessions і backplane.
- B-дерево (B+-tree)
Збалансоване дерево сторінок, у якому SQL Server зберігає звичайні (rowstore) індекси: корінь, проміжні рівні й листки. Шлях від кореня до будь-якого листка однакової довжини, тому пошук за ключем коштує кількох читань сторінок навіть в величезній таблиці.
- Backends for Frontends (BFF)
Патерн Сема Ньюмена: окремий бекенд під кожен тип клієнта — веб, мобільний застосунок, — який агрегує виклики сервісів і форматує відповіді під цього клієнта. Ним володіє команда клієнта.
- Backfill (дозаповнення)
Заповнення нового стовпця або таблиці історичними даними після їх додавання. На великих таблицях виконується пакетами, щоб транзакції лишалися короткими.
- BackgroundService
Базовий клас для довготривалої фонової роботи в хості .NET: логіку пишуть у
ExecuteAsync, а реєструють черезAddHostedService, тобто як singleton.- Backplane (спільна шина) SignalR
Канал, через який сервери SignalR пересилають один одному повідомлення для клієнтів, підключених до інших серверів. Стандартна реалізація — Redis pub/sub.
- base64url
Варіант base64 для URL і заголовків: символи
-і_замість+і/, без=наприкінці. Це кодування, а не шифрування: рядок декодує будь-хто.- Bearer-токен
Токен доступу, зазвичай JWT, який клієнт надсилає в заголовку
Authorization: Bearer .... Браузер не додає його сам, тому CSRF до нього незастосовний.- BenchmarkDotNet
Бібліотека для мікробенчмарків .NET: прогрів, статистика, порівняння рантаймів. Атрибут
[MemoryDiagnoser]показує алокації на операцію,[DisassemblyDiagnoser]— машинний код від JIT.- BFF (Backend for Frontend)
Серверна частина SPA на тому самому сайті: виконує OIDC-вхід як конфіденційний клієнт, зберігає токени в себе й проксує виклики API, а браузеру видає лише HttpOnly-cookie.
- Binding redirect
Налаштування в
app.configзастосунку .NET Framework, яке перенаправляє запити до одних версій збірки на іншу. У сучасному .NET не використовується.- Blameless postmortem
Розбір інциденту без пошуку винних: хронологія, вплив, причини й дії з власниками. Шукають, чому система й процеси дозволили помилці статися.
- Blazor
Модель ASP.NET Core, у якій інтерфейс пишеться на C# компонентами Razor. Blazor Server тримає стан на сервері й ганяє події через SignalR, Blazor WebAssembly виконує код у браузері, а з .NET 8 режим відтворення обирається для кожного компонента.
- BlockingCollection
Синхронна потокобезпечна черга з обмеженням місткості: Add і Take блокують потік, коли черга повна або порожня. Усередині за замовчуванням ConcurrentQueue.
- Blue-green deployment
Стратегія з двома повними копіями середовища: нова версія розгортається поруч зі старою без трафіку, проходить перевірки, і балансувальник перемикається на неї. Стара копія залишається для миттєвого відкату.
- Boxing (упакування)
Копіювання значення значущого типу в новий об'єкт у купі, щоб працювати з ним як з
objectабо інтерфейсом. Зворотна операція — unboxing.- BRIN-індекс
Індекс діапазонів блоків (Block Range Index): зберігає мінімум і максимум для кожної групи сусідніх сторінок таблиці. Дуже маленький, але корисний, лише якщо значення корелюють із фізичним порядком рядків, як час у журналі.
- Bulkhead (перегородка)
Ізоляція ресурсів за залежностями: обмеження кількості одночасних викликів однієї залежності, щоб її зависання не забрало всі потоки й з'єднання. У Polly v8 — обмежувач конкурентності.
- Burn rate (швидкість витрати бюджету)
У скільки разів сервіс витрачає error budget швидше за допустиме: частка помилок, поділена на 1 − SLO. За burn rate 1 бюджет закінчиться рівно до кінця вікна SLO.
- C-розширення (extension module)
Модуль, написаний на C, C++ або Rust з використанням C API Python і завантажуваний як звичайний модуль. Працює без інтерпретатора байт-коду й може відпускати GIL — так влаштовані NumPy і багато ML-бібліотек.
- Cache stampede (лавина промахів)
Ситуація, коли популярний запис зник із кешу і безліч запитів одночасно перераховують його з джерела. Джерело отримує пікове навантаження й може не витримати.
- Cache-aside (ліниве завантаження)
Патерн, за якого застосунок сам читає кеш, на промаху завантажує дані з джерела й кладе їх у кеш, а під час зміни даних видаляє ключ.
- Cache-Control
HTTP-заголовок із директивами кешування:
public,private,max-age,no-cache,no-store. У запиті його задає клієнт, у відповіді — сервер.- CancelledError
Виняток, який
task.cancel()кидає всередину корутини в точціawait. УспадковуєBaseException; після очищення його треба прокинути далі, інакше скасування не спрацює.- Captive dependency (захоплена залежність)
Помилка конфігурації, за якої довгоживучий сервіс тримає залежність з коротшим часом життя, наприклад singleton тримає scoped-сервіс. Залежність починає жити стільки ж, скільки її власник.
- Card table
Бітова карта ділянок пам'яті старших поколінь, у які записували посилання. Її заповнює write barrier під час запису посилання в поле, а GC під час збирання молодих поколінь переглядає лише позначені ділянки.
- Cartesian explosion (декартів вибух)
Зростання кількості рядків результату, коли один запит з'єднує кілька колекцій одного рівня: рядки кожної колекції множаться одне на одне. Замовлення з 10 рядками й 10 платежами дає 100 рядків.
- CDN (content delivery network)
Мережа серверів у точках присутності по всьому світу, яка кешує й віддає статику та кешовані відповіді поруч із користувачем. Знімає навантаження з джерела й скорочує затримку.
- Central Package Management (CPM)
Керування версіями NuGet-пакетів усього репозиторію в одному файлі
Directory.Packages.props. З transitive pinning задає версії й транзитивним залежностям.- Challenge (запит автентифікації)
Дія схеми автентифікації, коли анонімному користувачу потрібен вхід: cookie-схема перенаправляє на сторінку входу, OIDC — до провайдера, JWT bearer відповідає 401.
- Change data capture (CDC)
Захоплення змін із журналу транзакцій бази й передавання їх споживачам як потоку подій «до і після». У SQL Server це вбудований механізм із таблицями змін (потрібен SQL Server Agent), у PostgreSQL — логічне декодування; Debezium перетворює такий потік на події Kafka.
- Change token (IChangeToken)
Об'єкт-сигнал «дані змінилися». Файлові провайдери конфігурації спрацьовують через нього під час перезавантаження файлу, а
IOptionsMonitor<T>за ним скидає кеш налаштувань.- Change tracking (відстеження змін)
Механізм SQL Server, який синхронно з кожною DML-операцією запам'ятовує ключі змінених рядків і номер версії. Відповідає на запитання «що змінилося після версії N», але старих значень не зберігає.
- Cherry-pick
Команда
git cherry-pick, яка застосовує зміни одного коміту поверх поточної гілки й створює новий коміт з тією самою правкою. З ключем-xу повідомлення додається посилання на вихідний коміт.- Chiseled-образ (Ubuntu Chiseled)
Distroless-варіант образів .NET на Ubuntu: лише пакети, потрібні рантайму, без shell і пакетного менеджера, з non-root користувачем за замовчуванням. Без ICU і tzdata, якщо не взяти варіант
-extra.- Circuit breaker (автоматичний вимикач)
Стратегія, яка після частки помилок перестає викликати залежність і одразу відхиляє виклики, а через паузу пропускає пробний. Три стани — closed, open, half-open.
- Claim (твердження про суб'єкт)
Пара «тип — значення» про користувача чи сервіс, видана довіреним видавцем: ім'я, email, відділ, роль. Описує, хто суб'єкт, а не що йому можна; у .NET це клас
Claim.- ClaimsIdentity
Набір claims, отриманих одним способом автентифікації. Зберігає
AuthenticationType(без нього identity не вважається автентифікованою), а такожNameClaimTypeіRoleClaimType.- ClaimsPrincipal
Користувач у .NET: одна або кілька
ClaimsIdentity. В ASP.NET Core цеHttpContext.User; методиIsInRole,HasClaimіFindFirstшукають серед claims усіх його identity.- Client credentials
Потік OAuth 2.0, у якому застосунок отримує токен від свого імені за
client_idі секретом або сертифікатом, без користувача. Застосовується для викликів між сервісами й фонових задач.- CLR (Common Language Runtime)
Середовище виконання .NET: завантажує збірки, компілює IL у машинний код, керує пам'яттю, винятками й потоками. Реалізація в сучасному .NET називається CoreCLR.
- CLS (Cumulative Layout Shift)
Міра неочікуваних зсувів верстки: найбільша серія зсувів за час життя сторінки. Добре — до 0,1.
- cluster
Модуль Node.js, який запускає кілька процесів-копій застосунку на одному порту: головний процес приймає з'єднання й роздає їх робочим. Пам'ять у процесів не спільна.
- Code smell («запах коду»)
Ознака проблеми з підтримуваністю коду, яка не ламає його просто зараз: задовгий метод, дублювання, складна умова. SonarQube відносить такі зауваження до супроводжуваності (maintainability).
- Collation у SQL Server (правила сортування)
Правила порівняння й сортування рядків: кодова сторінка, урахування регістру й діакритики. Windows-collation (
Cyrillic_General_CI_AS) порівнюєvarcharіnvarcharза однаковими правилами, SQL-collation (SQL_Latin1_General_CP1_CI_AS) — за різними.- Collection expression
Синтаксис створення колекцій у квадратних дужках із C# 12:
int[] a = [1, 2, 3];,[..first, ..second]. Працює для масивів,Span<T>, списків та інших колекцій.- Columnstore-індекс
Індекс, який зберігає дані за стовпцями в стиснених сегментах групами до 1 048 576 рядків. Прискорює агрегати по великих таблицях завдяки стисненню, пропуску сегментів і пакетному режиму.
- CommonJS
Початкова система модулів Node.js: імпорт через
require(), експорт черезmodule.exports. Модуль завантажується й виконується синхронно під час першого викликуrequire, результат кешується.- Compare-and-swap (CAS)
Атомарна операція «записати нове значення, лише якщо поточне дорівнює очікуваному». У .NET це Interlocked.CompareExchange; на ній будують lock-free алгоритми.
- Composition root (корінь композиції)
Єдине місце застосунку, де збирається граф об'єктів: реєстрації сервісів і вибір реалізацій. В ASP.NET Core це
Program.csі методи розширенняAdd..., які він викликає.- ConfigureAwait(false)
Налаштування
await, за якого продовження не повертається в захопленийSynchronizationContextабоTaskScheduler. Його використовують у бібліотеках загального призначення.- ConfigureAwaitOptions
Прапорці для
Task.ConfigureAwaitу .NET 8+:ContinueOnCapturedContext,SuppressThrowingіForceYielding.- conftest.py
Файл, фікстури й хуки з якого pytest автоматично робить доступними всім тестам цього каталогу й вкладених, без імпорту.
- Confused deputy («заплутаний заступник»)
Ситуація, коли сервіс із широкими правами виконує запит клієнта своїми правами й не перевіряє прав самого клієнта. Клієнт отримує через сервіс доступ, якого в нього немає.
- Connascence
Міра зв'язку Мейліра Пейдж-Джонса: два елементи пов'язані, якщо зміна одного потребує зміни іншого. Види впорядковані за силою — від імені й типу до порядку, значення, алгоритму та часу.
- Content-Security-Policy (CSP)
Заголовок відповіді зі списком дозволених джерел скриптів, стилів та інших ресурсів. Браузер блокує решту, тому впроваджений скрипт не виконається, навіть якщо кодування десь пропустили.
- Context (контекст React)
Механізм передавання значення всьому піддереву без props. Під час зміни значення перемальовуються всі компоненти, які його читають.
- Cookie автентифікації
Cookie, у якій ASP.NET Core зберігає зашифрований через Data Protection квиток користувача: claims і строк дії. Браузер додає її до кожного запиту, сервер сесію не зберігає.
- Core Web Vitals
Три метрики Google для користувацького досвіду: LCP (швидкість завантаження), INP (відгук) і CLS (стабільність верстки). Оцінюються за 75-м перцентилем реальних візитів.
- CoreWCF
Порт серверної частини WCF на сучасний .NET, проєкт .NET Foundation з підтримкою Microsoft. Потрібен для перенесення наявних SOAP-сервісів; для нових Microsoft радить gRPC.
- CORS (Cross-Origin Resource Sharing)
Механізм, яким сервер заголовками
Access-Control-Allow-*дозволяє браузеру віддати відповідь скрипту з іншого джерела. Послаблює same-origin policy і не захищає сам сервер.- CPU-bound операція
Операція, яка впирається в обчислення процесора. Пришвидшити її можна лише паралелізмом, а з UI-потоку її виносять через
Task.Run.- CQRS (Command Query Responsibility Segregation)
Поділ моделі запису (команди змінюють стан) і моделі читання (запити повертають дані). Моделі можуть жити в одній базі або в різних.
- Cron-вираз
Рядок розкладу з полів «хвилини, години, день місяця, місяць, день тижня»:
0 2 * * *— щодня о 02:00. У Quartz першим полем ідуть секунди.- CSRF (міжсайтова підробка запиту)
Атака, за якої чужий сайт змушує браузер надіслати запит на ваш сайт від імені користувача, який увійшов. Працює, бо браузер сам додає cookie.
- CSS Grid
Модуль розкладки CSS для двох осей: контейнер із
display: gridзадає рядки й колонки, а діти займають клітинки й області сітки.- CSSOM (CSS Object Model)
Дерево правил, яке браузер будує з усіх стилів сторінки. Разом із DOM воно потрібне, щоб побудувати дерево відмальовування, тому CSS блокує перший показ сторінки.
- CTE (узагальнений табличний вираз)
Іменований підзапит, оголошений через
WITHперед інструкцією й видимий лише в ній. У SQL Server результат CTE не зберігається: кожне звернення виконує визначення заново.- CTS (Common Type System)
Спільна система типів .NET: єдині для всіх мов платформи правила оголошення й використання типів. Завдяки їй C#, F# і VB.NET використовують типи одне одного.
- CUPID
Властивості «приємного» коду, запропоновані Деном Нортом як альтернатива SOLID: Composable, Unix philosophy, Predictable, Idiomatic, Domain-based. Це властивості, до яких код наближається, а не правила, яких він дотримується.
- Custom managed record
Запис з операторами
Initialize,Finalizeі, за потреби,Assign, які компілятор викликає автоматично під час створення, знищення й копіювання. Дає змогу писати RAII-обгортки. З'явився в Delphi 10.4 Sydney.- Dapper
Micro-ORM від авторів Stack Overflow: методи розширення над
IDbConnection(Query,Execute), які виконують ваш SQL із параметрами й розкладають стовпці по властивостях об'єктів. Не відстежує зміни й не генерує SQL.- Data Protection (захист даних ASP.NET Core)
Підсистема шифрування й підпису даних, на якій тримаються cookie автентифікації та antiforgery-токени. У фермі серверів їй потрібне спільне сховище ключів.
- Data-aware контрол
Візуальний компонент (
TDBGrid,TDBEdit,TDBLookupComboBox), який черезTDataSourceпоказує й редагує поля поточного запису набору даних.- Data-oriented design
Підхід, у якому структуру даних проєктують під те, як процесор їх читає: щільні масиви значень замість графа об'єктів, послідовний доступ до пам'яті. Застосовують на гарячих ділянках.
- DataAnnotations
Атрибути з
System.ComponentModel.DataAnnotationsдля декларативних правил перевірки:[Required],[Range],[StringLength],[EmailAddress]та інші.- DATAS (dynamic adaptation to application sizes)
Режим Server GC, який змінює кількість куп і бюджет покоління 0 так, щоб розмір купи відповідав обсягу живих даних. З'явився в .NET 8, увімкнений за замовчуванням із .NET 9.
- DbContext
Головний клас EF Core: сесія роботи з базою, яка виконує запити, відстежує зміни сутностей і зберігає їх через
SaveChanges. Розрахований на одну одиницю роботи й не потокобезпечний.- dbExpress
Бібліотека легких драйверів Delphi з однонапрямними наборами без буферизації й редагування. Embarcadero оголосила її застарілою і радить переходити на FireDAC.
- DDD (Domain-Driven Design)
Предметно-орієнтоване проєктування — підхід Еріка Еванса (2003), у якому код будують навколо моделі бізнесу та мови його експертів. Поділяється на стратегічний (межі контекстів) і тактичний (агрегати, value objects, події) рівні.
- Debezium
Open source платформа CDC на основі Kafka Connect: читає журнал транзакцій бази й публікує зміни рядків у Kafka. Outbox Event Router перетворює рядки outbox на події.
- DelegatingHandler
Базовий клас обробника повідомлень
HttpClient, який передає запит наступному обробнику черезbase.SendAsync. З таких обробників збирають ланцюжок: логування, повтори, заголовки.- Delta store
Звичайне B-дерево всередині columnstore-індексу, куди потрапляють дрібні вставки. Коли в групі набирається 1 048 576 рядків, фоновий процес tuple mover стискає її в стовпцевий формат.
- Depends (залежності FastAPI)
Механізм FastAPI, який викликає функцію-залежність перед ендпоінтом і передає її результат параметром. Результат кешується в межах запиту, а залежність із
yieldвиконує код очищення після відповіді.- Developer Exception Page
Сторінка з подробицями необробленого винятку: стек, заголовки, query, cookies. Вмикається автоматично в середовищі Development і не повинна працювати в продакшені.
- Device code flow (device authorization grant)
Потік OAuth для пристроїв без браузера або клавіатури (RFC 8628): пристрій показує код і адресу, користувач входить на іншому пристрої, а початковий опитує
/token.- DI-контейнер (контейнер служб)
Об'єкт, який за зареєстрованими правилами створює сервіси, передає їм залежності й керує їхнім часом життя. У .NET реєстрації збирають в
IServiceCollection, а контейнер — цеIServiceProvider.- Diagnostic port
Канал, через який діагностичні інструменти спілкуються з рантаймом .NET: іменований канал у Windows або Unix-сокет у каталозі тимчасових файлів у Linux. У контейнері до нього потрібен спільний доступ із sidecar.
- diagnostics_channel
Модуль Node.js для публікації діагностичних подій іменованими каналами. Бібліотеки й вбудовані модулі повідомляють про запити, а APM і OpenTelemetry підписуються без підміни коду.
- Dictionary (словник)
Хеш-таблиця .NET: за ключем — значення, у середньому O(1) на пошук і вставку. Ключу потрібні узгоджені
GetHashCodeіEquals, а змінювати ключ після вставки не можна — об’єкт загубиться у своєму кошику. Для паралельного доступу єConcurrentDictionary.- Discovery-документ (метадані провайдера)
JSON за адресою
/.well-known/openid-configurationз адресами endpoints,jwks_uri, підтримуваними потоками й алгоритмами. Клієнт налаштовується за ним автоматично.- Discovery-документ OpenID Connect
JSON за адресою
/.well-known/openid-configurationу сервера авторизації: issuer, адреси ендпоінтів іjwks_uri. За нимAddJwtBearerсам знаходить ключі для перевірки підпису.- Disposable transient
Transient-сервіс, що реалізує
IDisposableабоIAsyncDisposable. Контейнер зберігає посилання на кожен такий екземпляр до кінця scope, тому під час розв'язання з кореня вони накопичуються до зупинки застосунку.- Dispose pattern
Стандартна схема звільнення ресурсів:
Dispose()викликаєDispose(true)іGC.SuppressFinalize, фіналізатор викликаєDispose(false), аprotected virtual void Dispose(bool)звільняє керовані ресурси лише заtrue.- DML-тригер
Процедура, яку SQL Server викликає сам під час
INSERT,UPDATEабоDELETE. Спрацьовує один раз на інструкцію, а змінені рядки доступні в псевдотаблицяхinsertedіdeleted.- Docker
Інструмент, який збирає застосунок в образ і запускає його контейнером — процесом із власною файловою системою, мережею і лімітами ресурсів. Образ однаковий на машині розробника й у продакшені, тому «у мене працює» перестає бути аргументом.
- Docker Compose
Інструмент, який за файлом
compose.yamlстворює й запускає набір пов'язаних контейнерів зі спільною мережею, томами й порядком старту. Працює в межах одного хоста.- DOM (Document Object Model)
Дерево об’єктів, на яке браузер розбирає HTML-сторінку; через нього скрипти читають і змінюють вміст. Кожна зміна може спричинити перерахунок стилів і розкладки, тому правки групують і вимірювання роблять окремо від запису.
- dotnet-counters
CLI-інструмент для спостереження за метриками запущеного .NET-процесу в реальному часі: розмір купи, кількість збирань, паузи GC, пул потоків, винятки.
- dotnet-dump
CLI-інструмент для зняття й аналізу повного дампа пам'яті .NET-процесу. Команда
analyzeвідкриває дамп з командами SOS:dumpheap,gcroot,finalizequeue.- dotnet-gcdump
CLI-інструмент, який знімає граф об'єктів керованої купи живого процесу через EventPipe. Для цього спричиняє повне збирання; файл
.gcdumpвідкривають у Visual Studio або PerfView.- dotnet-monitor
Інструмент для продакшену, зазвичай sidecar-контейнер: через HTTP API знімає дампи, трейси, логи й метрики .NET-процесів, а за правилами-тригерами збирає їх сам і вивантажує у сховище.
- dotnet-trace
CLI-інструмент для запису трейсу подій запущеного .NET-процесу через EventPipe: семпли стеків, події GC, JIT, винятків. Результат відкривають у PerfView, Visual Studio або speedscope.
- Double hop
Проблема другого стрибка: застосунок, який отримав користувача через Kerberos, не може від його імені пройти автентифікацію на наступному сервері, бо має лише квиток до себе. Розв'язується делегуванням Kerberos.
- DPoP (Demonstrating Proof of Possession)
Механізм (RFC 9449), який прив'язує токен до ключа клієнта: кожен запит супроводжується підписаним доказом володіння ключем. Викрадений без ключа токен марний.
- DRY (Don't Repeat Yourself)
Принцип із книжки «The Pragmatic Programmer» (1999): кожне знання повинно мати єдине, однозначне, авторитетне представлення в системі. Стосується знань і правил, а не однакових рядків коду.
- DTO (Data Transfer Object)
Простий об'єкт лише з даними для передачі між шарами або мережею, без бізнес-логіки. В API це моделі запитів і відповідей, відокремлені від сутностей бази даних.
- Dunder-метод (special method)
Метод з іменем у подвійних підкресленнях, який викликає сама мова:
__init__,__eq__,__len__,__iter__. Через них клас підтримує оператори й вбудовані функції.- Dynamic PGO
Оптимізація за профілем під час роботи: JIT збирає статистику гарячих шляхів і типів і використовує її під час перекомпіляції методу. Увімкнена за замовчуванням з .NET 8.
- EAV (entity–attribute–value)
Схема, у якій атрибути зберігаються рядками вигляду «сутність, ім'я атрибута, значення» замість окремих колонок. Гнучка, але незручна для запитів і без типізації; JSONB часто її замінює.
- EDI (electronic data interchange)
Електронний обмін стандартними документами між компаніями — замовленнями, повідомленнями про відвантаження, рахунками — у машиночитному форматі, зазвичай через EDI-провайдера.
- ELK (Elasticsearch, Logstash, Kibana)
Стек для збору, зберігання й пошуку логів: Logstash або Beats доставляють події, Elasticsearch індексує їх, Kibana дає пошук і дашборди. Відкритий форк Elasticsearch — OpenSearch.
- Endpoint
Одиниця обробки запиту в ASP.NET Core: делегат
RequestDelegateплюс колекція метаданих. Endpoint'и — це обробникиMapGet, action контролерів, Razor Pages, хаби SignalR.- Endpoint routing (маршрутизація за endpoint'ами)
Основна система маршрутизації ASP.NET Core з версії 3.0:
UseRoutingобирає endpoint за URL і методом, аUseEndpointsвиконує його. Middleware між ними бачать вибраний endpoint і його метадані.- Engine (SQLAlchemy)
Точка підключення SQLAlchemy до бази: знає діалект і драйвер, тримає пул з'єднань. Створюється один раз на процес через
create_engine.- Enricher у Serilog
Компонент, який додає властивості до кожної події: ім'я машини, id потоку, дані з
LogContext. Підключається черезEnrich.With...абоEnrich.FromLogContext().- EqualityContract
Синтезована властивість
record class, яка повертає runtime-тип запису. ЗгенерованийEqualsпорівнює її першою, тому записи різних типів однієї ієрархії не рівні навіть за однакових даних.- Error budget (бюджет помилок)
Допустима частка невдач за вікно SLO: 100% − SLO. За SLO 99,9% на 30 днів — близько 43 хвилин повного простою. Поки бюджет є, команда витрачає його на зміни.
- ES-модулі (ESM)
Стандартна система модулів JavaScript:
importіexport. Граф імпортів будується до виконання коду, завантаження асинхронне, підтримується top-levelawait. У Node.js вмикається розширенням.mjsабо полем"type": "module"уpackage.json.- Escape analysis (escape-аналіз)
Аналіз JIT, який визначає, чи може об'єкт пережити метод, де його створено. Якщо не може, JIT має право розмістити його на стеку; у .NET 9–10 так розміщуються «коробки», маленькі масиви й делегати.
- ETag
Заголовок відповіді з версією представлення ресурсу. Клієнт передає його в
If-None-Matchдля кешування або вIf-Matchдля оптимістичного блокування й отримує 412, якщо ресурс змінився.- ETL (extract, transform, load)
Процес перенесення даних: витягти з джерел, перетворити до формату цілі й завантажити. В екосистемі SQL Server класичний інструмент — SSIS, хмарний — Azure Data Factory.
- Event sourcing
Зберігання стану як послідовності подій, а не як поточного знімка. Поточний стан отримують, програючи події по черзі.
- EventEmitter
Базовий клас Node.js для об'єктів із подіями:
onпідписує слухача,emitсинхронно викликає всіх слухачів. Подія'error'без слухача викидається як виняток.- EventPipe
Вбудований у рантайм .NET механізм трасування, однаковий на всіх ОС. Через нього працюють dotnet-counters, dotnet-trace і dotnet-monitor без зовнішнього профайлера.
- Exception filter (фільтр винятків) у NestJS
Клас із декоратором
@Catch()і методомcatch, що перетворює виняток на HTTP-відповідь. Вбудований глобальний фільтр обробляєHttpException, а невідомі помилки перетворює на 500.- ExecuteUpdate і ExecuteDelete
Методи EF Core 7+, які виконують
UPDATEабоDELETEза LINQ-фільтром однією командою, без завантаження сутностей і без трекера змін. Повертають кількість зачеплених рядків.- Expand/contract (parallel change)
Прийом зміни схеми без простою: спершу сумісно розширити схему, потім перевести на неї застосунок і дані, і лише після цього видалити старе.
- EXPLAIN ANALYZE
Команда PostgreSQL, яка виконує запит і виводить план із фактичними часом, кількістю рядків і проходів на кожному вузлі. З опцією
BUFFERS(з версії 18 — за замовчуванням) показує й читання сторінок.- Extension members
Розширення C# 14, які оголошуються блоком
extension. Крім методів дають змогу додавати до наявних типів властивості, статичні члени й оператори.- Failover (перемикання на резерв)
Автоматичне перенесення навантаження з компонента чи провайдера, що відмовив, на резервний. Рішення зазвичай ухвалюють за часткою помилок, таймаутами або перевірками здоров'я.
- Fallback policy (резервна політика)
Політика для ендпоінтів без метаданих авторизації. За замовчуванням її немає, і такі ендпоінти відкриті;
SetFallbackPolicyзRequireAuthenticatedUserзакриває все, що не позначено явно.- Fast-forward (перемотування вперед)
Вид злиття, коли цільова гілка не містить нових комітів і Git просто зсуває її вказівник на вершину гілки, що вливається. Коміт злиття не створюється.
- FastAPI
Вебфреймворк Python для HTTP API поверх Starlette і Pydantic. Параметри, тіло й відповідь описуються анотаціями типів, а валідація та документація OpenAPI будуються за ними автоматично.
- FastMM
Менеджер пам'яті Delphi для Win32 і Win64, вбудований за замовчуванням із Delphi 2006. Уміє повідомляти про витоки під час виходу (
ReportMemoryLeaksOnShutdown), а повна версія в налагоджувальному режимі ловить звернення до звільненої пам'яті.- Feature toggle (прапорець функціональності)
Перемикач у конфігурації, який вмикає або вимикає гілку коду без нового розгортання: для частини користувачів, за відсотком або повністю. У .NET є бібліотека
Microsoft.FeatureManagement.- File-based app
Застосунок з одного
.cs-файлу без проєкту, запускається командоюdotnet run app.cs(з .NET 10). Пакети й налаштування підключаються директивами#:packageі#:property.- Fire-and-forget («запустив і забув»)
Запуск асинхронної операції без очікування її результату. Без явної обробки винятки з такої операції губляться або завалюють процес.
- FireDAC
Універсальна бібліотека доступу до даних RAD Studio з компонентами
TFDConnection,TFDQuery,TFDStoredProc. Дає керування вибіркою, Array DML, макроси, пул з'єднань і трасування.- Flexbox
Модуль розкладки CSS для однієї осі: діти контейнера з
display: flexвишиковуються в рядок або колонку й ділять вільне місце заflex-growіflex-shrink.- Fluent API
Конфігурація моделі EF Core кодом в
OnModelCreatingабо в класахIEntityTypeConfiguration<T>:HasKey,HasMaxLength,HasOne().WithMany(). Має пріоритет над атрибутами й угодами.- FluentAssertions
Бібліотека перевірок у стилі
result.Should().Be(5). До версії 7 включно — Apache 2.0, з версії 8 (2025) — ліцензія Xceed, платна для комерційного використання.- Forward secrecy (пряма секретність)
Властивість, за якої сеансові ключі виводяться з одноразового обміну Діффі — Геллмана. Закритий ключ сертифіката, викрадений пізніше, не розшифрує записаний раніше трафік.
- Forwarded headers (X-Forwarded-*)
Заголовки
X-Forwarded-For,X-Forwarded-ProtoіX-Forwarded-Host, у яких проксі передає початкові IP клієнта, схему й хост. В ASP.NET Core їх застосовуєUseForwardedHeaders, довіряючи лише відомим проксі.- Free-threaded збірка (free threading)
Збірка CPython без GIL (PEP 703,
python3.13tі новіші): потоки виконують Python-код паралельно. Експериментальна в 3.13, офіційно підтримується з 3.14, але не типова.- Frozen-колекція
FrozenDictionary<TKey, TValue>іFrozenSet<T>з .NET 8: незмінні колекції, які довго будуються, зате дуже швидко шукають. Підходять для довідників, створених один раз під час старту.- GC.Collect
Ручний запуск збирання сміття. У коді застосунку майже завжди шкідливий: об’єкти, що вижили, просуваються в старші покоління, а самоналаштування порогів збивається. Доречний у тестах, бенчмарках і діагностиці — зазвичай разом із
GC.WaitForPendingFinalizers.- Generic Host (універсальний хост)
Об'єкт
IHost, який володіє конфігурацією, логуванням, DI-контейнером і hosted services та керує запуском і зупинкою застосунку. На ньому побудовані ASP.NET Core і Worker Service.- Generics у Delphi
Узагальнені типи й методи з параметрами типу:
TList<T>,TDictionary<TKey, TValue>. З'явилися в Delphi 2009; компілятор створює код для кожного набору аргументів типу й перевіряє обмеження на кшталтclassабоconstructor.- GIL (Global Interpreter Lock)
Глобальне блокування інтерпретатора CPython: у кожен момент байт-код виконує лише один потік. Відпускається на блокувальному введенні-виведенні та в C-розширеннях.
- GIN-індекс
Обернений індекс (Generalized Inverted Index): для кожного елемента — слова, елемента масиву, ключа JSONB — зберігає список рядків, де він трапляється. Швидко відповідає на «містить», але дорогий на запис.
- GiST-індекс
Узагальнене дерево пошуку (Generalized Search Tree) — каркас для індексів за геометрією, діапазонами й повнотекстовими даними. Підтримує перетин, вкладення й пошук найближчих сусідів.
- git bisect
Команда для двійкового пошуку коміту, що вніс помилку: ви позначаєте добру й погану версії, а Git на кожному кроці ділить діапазон навпіл.
git bisect runперевіряє коміти скриптом або тестом автоматично.- git filter-repo
Інструмент для переписування всієї історії репозиторію: видаляє файли, замінює рядки, змінює шляхи. Документація Git радить його замість
git filter-branchз його численними підводними каменями, зокрема для видалення секретів.- Git Flow
Модель розгалуження Вінсента Дріссена (2010): довгоживучі
mainіdevelop, гілкиfeature/*,release/*іhotfix/*. Розрахована на версійовані продукти; для continuous delivery автор радить простішу модель.- Git LFS (Large File Storage)
Розширення Git для великих бінарних файлів: у репозиторії зберігається маленький текстовий вказівник, а вміст — на окремому LFS-сервері й завантажується лише для потрібних версій.
- git push --force-with-lease
Примусове надсилання, яке перезаписує гілку на сервері, лише якщо вона вказує на той самий коміт, що й ваша гілка віддаленого відстеження. Захищає від затирання чужих комітів після rebase.
- GitHub Flow
Проста модель розгалуження: коротка гілка від
main, pull request з рев'ю й перевірками, злиття вmainі видалення гілки.mainзавжди готовий до викладання.- global.json
Файл у репозиторії, який фіксує версію .NET SDK для збирання й правило її підбору (
rollForward).- gMSA (group Managed Service Account)
Доменний обліковий запис служби, пароль якого AD генерує та змінює сам. Його використовують пули IIS, служби Windows і Windows-контейнери; довгий випадковий пароль захищає від Kerberoasting.
- Google Zanzibar
Глобальна система авторизації Google, описана в статті на USENIX ATC 2019. Зберігає відношення кортежами «об'єкт#відношення@користувач», обслуговує Drive, YouTube, Cloud та інші сервіси й стала зразком для OpenFGA і SpiceDB.
- GROUPING SETS, ROLLUP і CUBE
Розширення
GROUP BY, які в одному запиті рахують агрегати за кількома наборами стовпців: наприклад, за магазином, за регіоном і загальний підсумок. ФункціяGROUPING()відрізняє рядок підсумку від звичайної групи.- Groups overage
Поведінка Microsoft Entra ID, коли в користувача більше груп, ніж уміщується в токен (200 для JWT, 150 для SAML): claim
groupsне видається, натомість приходить посилання на Microsoft Graph.- gRPC
Фреймворк віддаленого виклику процедур поверх HTTP/2. Контракт описують у файлі
.proto, за ним генеруються сервер і клієнт, повідомлення кодуються в Protobuf. Підтримує потокову передачу в обидва боки й дедлайни.- gRPC-Web
Варіант протоколу gRPC, який працює з браузера по HTTP/1.1 і HTTP/2. Підтримує лише unary-виклики й потоки від сервера; в ASP.NET Core вмикається пакетом
Grpc.AspNetCore.Web.- Guard (вартовий) у NestJS
Клас із методом
canActivate, який вирішує, чи пропускати запит до обробника. БачитьExecutionContextі метадані маршруту, тому в ньому роблять автентифікацію й перевірку ролей;falseдає відповідь 403.- GUID інтерфейсу
16-байтний ідентифікатор в оголошенні інтерфейсу:
['{...}']. Потрібен дляQueryInterface, оператораasі функціїSupports; без нього компілятор видає помилку E2232. У редакторі генерується поєднанням Ctrl+Shift+G.- Hangfire
Бібліотека фонових задач для .NET: серіалізує виклики методів у сховище (SQL Server, Redis), виконує їх на серверах Hangfire, повторює в разі помилок і показує у вебдашборді.
- Hash Match
З'єднання або агрегація через хеш-таблицю: менший вхід завантажується в пам'ять, більший перевіряється за нею. Підходить для великих несортованих входів, але потребує виділення пам'яті.
- HATEOAS
Принцип REST, за яким відповідь містить посилання на пов'язані ресурси й доступні дії, і клієнт переходить ними, а не збирає URL сам.
- Health check (перевірка здоров'я)
HTTP-ендпоінт, який повідомляє стан екземпляра застосунку: Healthy, Degraded або Unhealthy. За ним балансувальник і оркестратор вирішують, чи слати трафік і чи перезапускати процес.
- Health check publisher
Реалізація
IHealthCheckPublisher, яку фоновий сервіс ASP.NET Core періодично викликає зі звітом про перевірки. Використовується, щоб надсилати статус у лог, метрики чи систему моніторингу без зовнішнього опитування.- Healthcheck контейнера
Команда, яку Docker періодично виконує всередині контейнера, щоб визначити його стан: starting, healthy або unhealthy. У Compose за ним працює
condition: service_healthy.- Hill climbing (алгоритм інжекції потоків)
Евристика пулу потоків .NET: вона змінює кількість робочих потоків і залишає ту, за якої пропускна здатність вища. Працює поступово, тому різкий брак потоків не компенсує.
- Hosted service (IHostedService)
Служба, життям якої керує хост .NET:
StartAsyncвикликається під час запуску застосунку,StopAsync— під час зупинки. Реєструється черезAddHostedServiceяк singleton; на цьому ж механізмі працює вебсервер.- HOT-оновлення (heap-only tuple)
Оновлення, за якого нова версія рядка лягає на ту саму сторінку й не створює записів в індексах. Можливе, якщо не змінилася жодна індексована колонка й на сторінці є місце.
- HSTS (HTTP Strict Transport Security)
Заголовок
Strict-Transport-Security, після якого браузер звертається до сайту лише через HTTPS протягомmax-age. Зpreloadдомен потрапляє до списку, вбудованого в браузери.- HTTP
Протокол «запит — відповідь» поверх TCP, на якому працює веб: клієнт надсилає метод, шлях і заголовки, сервер відповідає кодом стану й тілом. Стану між запитами протокол не зберігає, тому сесію переносять у куки, токени або заголовки.
- HTTP-інтерцептор
Функція в ланцюжку
HttpClient, яка бачить кожен запит і відповідь: додає заголовки й токен, логує, обробляє помилки. З Angular 15 — функціональні інтерцептори черезwithInterceptors.- HTTP.sys
Драйвер режиму ядра Windows, який приймає HTTP-запити для IIS та інших серверів. В ASP.NET Core є однойменний сервер — альтернатива Kestrel лише для Windows, зі спільним портом і Windows-автентифікацією.
- HttpClient
Клас .NET для вихідних HTTP-запитів. Створювати його на кожен запит не можна — сокети накопичуються в
TIME_WAIT; тримати один статичний екземпляр теж погано — він не помічає зміну DNS. Штатний спосіб —IHttpClientFactory.- HybridCache
API кешування з .NET 9: L1 у пам'яті процесу плюс L2 в
IDistributedCache, захист від stampede, серіалізація та інвалідація за тегами. Реалізація — пакетMicrosoft.Extensions.Caching.Hybrid.- I/O-bound операція
Операція, час якої йде на очікування введення-виведення — мережі, диска, бази даних, — а не на роботу процесора. Її виконують асинхронно через
await, не займаючи потік.- IActionResult (результат дії)
Об'єкт, який action повертає замість готової відповіді. Фреймворк виконує його після action:
ViewResultрендерить представлення,RedirectResultнадсилає редирект.- IAsyncDisposable
Інтерфейс з методом
DisposeAsync, який повертаєValueTask, для асинхронного очищення, наприклад зі скиданням буфера чи закриттям з'єднання. Використовується черезawait using(C# 8, .NET Core 3.0).- IConfiguration
Інтерфейс доступу до конфігурації застосунку: плаский набір рядкових пар «ключ — значення» з ієрархічними ключами через двокрапку, наприклад
Payments:TimeoutSeconds.- ID-токен
JWT, який OpenID Connect видає клієнту після входу: хто користувач (
sub), хто випустив токен (iss), для якого клієнта (aud) і коли. В API його не надсилають.- Identity map
Словник сесії «первинний ключ → об'єкт»: один рядок бази представлений у сесії одним об'єктом, а повторний
session.getза тим самим ключем не йде в базу.- Identity resolution
Гарантія, що один рядок бази представлено в контексті одним об'єктом. Запити з відстеженням EF Core повертають уже завантажений екземпляр;
AsNoTrackingстворює новий об'єкт на кожне входження рядка.- Identity-стовпець (GENERATED AS IDENTITY)
Стовпець, значення якого база генерує сама з прив'язаної до нього послідовності. У PostgreSQL оголошується як
GENERATED ALWAYS AS IDENTITYабоGENERATED BY DEFAULT AS IDENTITY(з версії 10) і замінює застарілийserial; аналогIDENTITY(1,1)у SQL Server.- IDisposable
Інтерфейс з єдиним методом
Disposeдля детермінованого звільнення ресурсів: файлів, сокетів, з'єднань, некерованої пам'яті. Викликається явно або черезusing.- IDOR (небезпечне пряме посилання на об'єкт)
Insecure Direct Object Reference — доступ до чужого об'єкта підміною ідентифікатора в запиті, наприклад
/orders/43замість/orders/42, коли сервер не перевіряє власника.- IExceptionHandler
Інтерфейс (.NET 8+) для обробки відомих винятків в одному місці. Реалізації реєструються через
AddExceptionHandler<T>()і викликаються middlewareUseExceptionHandlerпо черзі, доки одна не повернеtrue.- IHostApplicationLifetime
Сервіс із подіями життєвого циклу застосунку —
ApplicationStarted,ApplicationStopping,ApplicationStopped— і методомStopApplication()для зупинки з коду.- IHostedLifecycleService
Розширення
IHostedServiceз .NET 8 з методамиStartingAsync,StartedAsync,StoppingAsyncіStoppedAsync, які виконуються до й після запуску та зупинки служб.- IHostLifetime
Компонент, який вирішує, коли хост стартує і коли починає зупинку.
ConsoleLifetimeреагує на Ctrl+C і SIGTERM,WindowsServiceLifetime— на команди служби Windows.- IHttpClientFactory
Фабрика
HttpClientу .NET: перевикористовує обробники з'єднань, стежить за їхнім часом життя й дає змогу налаштувати іменованих і типізованих клієнтів з ланцюжком обробників, наприклад resilience.- IHubContext
Сервіс для надсилання повідомлень клієнтам хаба поза хабом: з контролера, endpoint або фонової задачі. Дає
ClientsіGroups, але не знає клієнта, який викликав.- IInterface
Базовий інтерфейс Delphi, від якого успадковуються всі інші; на Windows збігається з COM-інтерфейсом
IUnknown. ОголошуєQueryInterfaceдля запиту інших інтерфейсів і_AddRefта_Releaseдля підрахунку посилань.- IIS (Internet Information Services)
Вебсервер Windows. ASP.NET Core працює за ним через модуль ANCM: IIS приймає запит і передає його Kestrel у тому самому процесі (in-process) або окремому процесу застосунку (out-of-process).
- IL (проміжна мова, CIL)
Платформонезалежний стековий байт-код, у який компілюються C#, F# і VB.NET. Перед виконанням JIT або AOT-компілятор перекладає його в машинний код.
- IMemoryOwner<T>
Інтерфейс власника буфера
Memory<T>: той, хто тримає посилання на нього, викликаєDisposeабо передає володіння далі. Його видає, наприклад,MemoryPool<T>.Shared.Rent().- IMiddleware
Інтерфейс middleware з методом
InvokeAsync(HttpContext, RequestDelegate). Такий middleware реєструється в DI і створюється на кожен запит, тому приймає scoped-залежності в конструкторі.- IMiddlewareFactory
Фабрика, через яку
UseMiddlewareотримує екземпляриIMiddlewareна кожен запит. Стандартна реалізація бере їх із DI-scope запиту; власну підключають для стороннього контейнера.- In-process хостинг
Модель хостингу в IIS, за якої застосунок працює всередині
w3wp.exe, а запити приймаєIISHttpServerзамість Kestrel. Модель за замовчуванням з ASP.NET Core 3.0.- Inbox (ідемпотентний споживач)
Шаблон дедуплікації на боці одержувача: id обробленого повідомлення зберігається в таблицю тією самою транзакцією, що й зміни, і повтор із тим самим id пропускається.
- Index Seek та Index Scan
Два способи прочитати індекс. Seek спускається B-деревом до потрібного діапазону ключів і читає лише його, scan читає індекс або таблицю повністю.
- Inline-змінна (inline variable)
Змінна, оголошена просто серед операторів:
var I := 0;. Видима до кінця свого блокуbegin..end, а тип може виводитися з ініціалізатора. З'явилася в Delphi 10.3 Rio.- INP (Interaction to Next Paint)
Затримка від кліку, дотику чи натискання клавіші до наступного кадру, найгірша за візит. Добре — до 200 мс. У березні 2024 року замінила FID у Core Web Vitals.
- Interceptor (перехоплювач) у NestJS
Клас із методом
intercept, що виконує код до і після обробника та працює з його результатом як із RxJSObservable. Застосовується для логування, заміру часу, кешу й перетворення відповіді.- Interlocked
Статичний клас атомарних операцій над змінними: Increment, Add, Exchange, CompareExchange та інших. Кожна операція — ще й повний бар'єр пам'яті.
- IOptionsMonitor<T>
Singleton-доступ до актуальних налаштувань:
CurrentValueвіддає поточне значення,OnChangeпідписує на зміни конфігурації. Підходить для singleton-сервісів.- IOptionsSnapshot<T>
Scoped-доступ до налаштувань: об'єкт створюється заново в кожному scope, тобто на кожен запит, і бачить перезавантажену конфігурацію. Підтримує іменовані опції.
- IServiceScopeFactory
Singleton-сервіс, який створює нові scopes. Через нього singleton і фонові задачі отримують scoped-сервіси:
CreateScope()або, з .NET 6,CreateAsyncScope().- IUserIdProvider
Інтерфейс, який визначає id користувача з'єднання для
Clients.User. За замовчуванням бере claimClaimTypes.NameIdentifier.- IValueTaskSource
Інтерфейс перевикористовуваного об'єкта асинхронної операції, на якому
ValueTaskпрацює без алокацій. Використовується у високопродуктивних API, наприклад уSocket.- JIT-компілятор (just-in-time)
Частина CLR, яка перекладає IL методу в машинний код під час першого виклику з урахуванням конкретного процесора. У .NET це RyuJIT.
- Jitter (випадковий розкид затримки)
Випадкова добавка до паузи між повторами. Без неї клієнти, що впали одночасно, повторюють теж одночасно й б'ють відновлений сервіс синхронною хвилею.
- JSON
Текстовий формат обміну даними з об’єктів, масивів, рядків, чисел,
true,falseіnull. Власної схеми він не має, тому контракт описують окремо — OpenAPI або JSON Schema, — а в .NET розбирають черезSystem.Text.Json.- jsonb
Тип PostgreSQL для JSON у розібраному двійковому вигляді: без дублів ключів і вихідного порядку, зате з операторами пошуку (
@>,?,@?) і підтримкою GIN-індексів. Типjson, навпаки, зберігає вихідний текст.- jsonpath (SQL/JSON path)
Мова шляхів зі стандарту SQL/JSON для вибору й фільтрації значень усередині JSON, наприклад
$.items[*] ? (@.price > 10). У PostgreSQL її розуміють оператори@?,@@і функціїjsonb_path_query,JSON_VALUE,JSON_EXISTS.- JSX
Розширення синтаксису JavaScript для опису розмітки всередині коду:
<h1>{title}</h1>. Компілятор перетворює його на виклики, що створюють React-елементи.- JWE (JSON Web Encryption)
Формат зашифрованих даних (RFC 7516). У компактній формі — п'ять частин: заголовок, зашифрований ключ, вектор ініціалізації, шифротекст і тег. Приховує payload від усіх, крім власника ключа.
- JWKS (JSON Web Key Set)
Набір відкритих ключів видавця у форматі JSON (RFC 7517). Кожен ключ позначений
kid, за яким той, хто перевіряє, вибирає ключ для підпису конкретного токена.- JWS (JSON Web Signature)
Формат підписаних даних (RFC 7515). У компактній формі — три частини в base64url: заголовок, payload і підпис. Захищає цілісність і автентичність, але не приховує вмісту.
- JWT (JSON Web Token)
Компактний токен із JSON-заголовка, JSON-набору claims і підпису, закодованих у base64url й розділених крапками. Стандарт — RFC 7519; найчастіше використовується як access-токен для API.
- KDC (Key Distribution Center)
Центр видачі квитків Kerberos. В Active Directory працює на кожному контролері домену: перевіряє пароль користувача, видає TGT і сервісні квитки.
- Kerberos
Мережевий протокол автентифікації за квитками (RFC 4120). Пароль перевіряє KDC один раз, далі клієнт пред'являє службам квитки, зашифровані їхніми ключами. Основний протокол входу в домені Active Directory.
- Kestrel
Кросплатформний вебсервер, вбудований в ASP.NET Core. Працює всередині процесу застосунку, приймає HTTP/1.1, HTTP/2 та HTTP/3 і передає запити в конвеєр middleware.
- Key Lookup
Оператор плану, який для кожного рядка, знайденого в некластерному індексі, шукає відсутні стовпці в кластерному індексі. Для купи його аналог — RID Lookup. Дешевий для десятків рядків і дорогий для тисяч.
- Keyed services (сервіси з ключем)
Реєстрації з ключем, що з'явилися в .NET 8:
AddKeyedSingleton,AddKeyedScoped,AddKeyedTransient. Потрібну реалізацію отримують атрибутом[FromKeyedServices(key)]або методомGetRequiredKeyedService.- Keyset-пагінація (cursor pagination)
Посторінкова вибірка за останнім ключем попередньої сторінки:
WHERE id > @after ORDER BY id. Працює за індексом за однаковий час на будь-якій сторінці, але не дозволяє перейти на сторінку за номером.- Keytab
Файл із довготривалими ключами Kerberos облікового запису служби. На Linux за ним GSSAPI розшифровує квитки без пароля; шлях задає змінна
KRB5_KTNAME. Перевипускається після зміни пароля облікового запису.- KISS (Keep It Simple, Stupid)
Принцип інженерної простоти: з робочих рішень обирати найпростіше. Фразу приписують Келлі Джонсону, інженерові Lockheed.
- KRaft
Вбудований у Kafka протокол консенсусу на основі Raft, через який контролери зберігають метадані кластера. Із Kafka 4.0 — єдиний режим, ZooKeeper більше не використовується.
- Kubernetes (K8s)
Оркестратор контейнерів: тримає задану кількість реплік, перезапускає впалі поди, роздає конфігурацію й секрети, балансує трафік через служби. Под він вважає замінним і може зупинити будь-якої миті, тому стан виносять назовні.
- LARGEADDRESSAWARE
Прапорець у заголовку EXE, що дозволяє процесу використовувати адреси вище 2 ГБ. 32-бітний процес із цим прапорцем на 64-бітній Windows отримує до 4 ГБ адресного простору.
- launchSettings.json
Файл профілів запуску для локальної розробки: середовище, адреси, змінні. Використовується Visual Studio і
dotnet run, під час публікації не розгортається.- Layout (макет)
Спільний каркас сторінок: шапка, меню, підвал, підключення стилів і скриптів. Представлення вставляється в нього через
@RenderBody(), а іменовані шматки — через секції.- Layout thrashing
Чергування запису стилів і читання геометрії (
offsetHeight,getBoundingClientRect), за якого браузер синхронно перераховує layout на кожному читанні.- LCP (Largest Contentful Paint)
Час від початку навігації до відмальовування найбільшого зображення або текстового блока в області перегляду. Добре — до 2,5 секунди.
- LDAP
Протокол доступу до каталогів, зокрема до Active Directory: пошук користувачів, груп і атрибутів. У .NET кросплатформний клієнт —
System.DirectoryServices.Protocols.- libuv
Кросплатформна бібліотека асинхронного вводу-виводу на C, на якій побудований Node.js. Дає event loop, неблокувальні сокети через epoll, kqueue та IOCP, таймери й пул потоків для файлів і DNS.
- Lifespan
Асинхронний контекстний менеджер застосунку FastAPI: код до
yieldвиконується під час старту процесу, після — під час зупинки. Замінює застарілі події startup і shutdown.- LINQ (Language Integrated Query)
Набір методів і синтаксис запитів C# для фільтрації, проєкції, сортування й групування даних. LINQ to Objects працює з
IEnumerable<T>у пам'яті, провайдери на кшталт EF Core — зIQueryable<T>.- Liveness-проба (liveness probe)
Періодична перевірка Kubernetes, чи живий процес. Після кількох невдач поспіль kubelet перезапускає контейнер, тому зовнішні залежності в ній не перевіряють.
- Lock-файл залежностей
Файл із точними версіями й хешами всіх пакетів графа, зокрема транзитивних. У Python це
uv.lock,poetry.lock, закріпленийrequirements.txtабо стандартнийpylock.toml(PEP 751).- Lock-файл пакетів (packages.lock.json)
Файл із повним графом залежностей проєкту й точними версіями, зокрема транзитивними. З
dotnet restore --locked-moderestore бере рівно ці версії або падає, якщо граф змінився.- Lock-free (без блокувань)
Алгоритм, який обходиться без блокувань і будується на атомарних операціях на кшталт CompareExchange. Хоча б один потік завжди просувається, навіть якщо інші призупинені.
- LOH (large object heap)
Купа для об'єктів розміром від 85 000 байт, зазвичай великих масивів. Збирається лише разом з поколінням 2 і за замовчуванням не ущільнюється, тому схильна до фрагментації.
- Long Polling (довге опитування)
Приймання повідомлень через HTTP-запит, який сервер тримає відкритим до появи даних. Після відповіді клієнт одразу надсилає наступний запит.
- Lookup-поле
Поле, значення якого береться з іншого набору за ключем: значення
KeyFieldsшукаються вLookupKeyFieldsнаборуLookupDataSet, а показуєтьсяLookupResultField.- LTS (Long Term Support)
Реліз .NET з підтримкою три роки. Це парні версії: .NET 8, .NET 10.
- LTS Node.js
Лінія Node.js із довгою підтримкою: Active LTS, потім Maintenance, загалом близько 30 місяців. До Node 26 LTS ставали парні версії; з Node 27 одна мажорна версія на рік, і кожна стає LTS.
- Memory<T>
Звичайна структура-«вікно» на неперервну пам'ять (масив, рядок або
MemoryManager<T>), яку можна зберігати в полях і передавати черезawait. До даних звертаються через властивість.Span.- MERGE
Інструкція, яка зіставляє джерело з цільовою таблицею й за один прохід виконує
UPDATE,INSERTабоDELETEза гілкамиWHEN. Вимагає унікального джерела йHOLDLOCKза паралельних upsert.- Merge Join (з'єднання злиттям)
З'єднання двох входів, відсортованих за ключем з'єднання, за один прохід по обох. Дуже дешеве, якщо порядок дає індекс; якщо ні, планові потрібен дорогий Sort.
- Merge-ревізія
Ревізія Alembic із двома батьками в
down_revision, яка зводить дві гілки міграцій в одну head. Створюється командоюalembic merge heads.- Microsoft Entra ID
Хмарна служба ідентичності Microsoft, колишній Azure Active Directory. Видає токени за OIDC, OAuth 2.0, SAML і WS-Federation; синхронізується з локальним AD через Entra Connect.
- Middleware (проміжне ПЗ)
Компонент конвеєра запитів ASP.NET Core. Отримує
HttpContext, виконує свою роботу й передає запит наступному компоненту або формує відповідь сам.- Middleware за угодою (convention-based)
Клас без інтерфейсу з конструктором від
RequestDelegateі методомInvokeабоInvokeAsync. Створюється один раз під час побудови конвеєра й живе весь час роботи застосунку.- Middleware у NestJS
Функція або клас із
NestMiddleware, що викликається до guards і обробника з об'єктамиreq,resіnext, як middleware Express. Не знає, який обробник виконається; підключається в методіconfigureмодуля.- Migration bundle
Виконуваний файл із міграціями проєкту, який збирають у CI командою
dotnet ef migrations bundle(EF Core 6+). Застосовує відсутні міграції без SDK і вихідного коду.- Minimal API
Спосіб описати HTTP-ендпоінти делегатами просто в
Program.csчерезMapGet,MapPostта інші методи, без класів-контролерів. З'явився в .NET 6, підтримує Native AOT.- Misfire (пропущений запуск)
Спрацювання тригера Quartz, яке не відбулося вчасно, наприклад поки планувальник був вимкнений. Misfire-політика вирішує, виконати його одразу, один раз чи пропустити.
- ModelState
Словник
ModelStateDictionaryз результатами прив'язки й валідації в MVC.ModelState.IsValidпоказує, чи є помилки, а самі помилки згруповано за полями.- Monitor
Клас .NET для взаємного виключення на будь-якому об'єкті посилального типу. Оператор lock для звичайного об'єкта компілюється в Monitor.Enter і Monitor.Exit у try/finally.
- monkeypatch
Вбудована фікстура pytest для тимчасової підміни атрибутів, елементів словників і змінних оточення. Після тесту все повертається як було.
- mTLS (взаємний TLS)
TLS, у якому сертифікат пред'являють обидві сторони, а не лише сервер. Шифрує трафік між сервісами й доводить, який саме сервіс викликає.
- Multi-targeting
Збирання одного проєкту під кілька TFM через властивість
TargetFrameworks. У NuGet-пакет потрапляє окрема збірка для кожної цілі.- Multicast-делегат (multicast delegate)
Делегат зі списком кількох методів, які викликаються по черзі. Утворюється через
+=абоDelegate.Combine; повертає результат останнього методу.- Mutex
Примітив взаємного виключення на основі об'єкта ядра ОС. Повільніший за lock, але іменований Mutex видно іншим процесам.
- MVC (Model-View-Controller)
Архітектурний шаблон, який ділить UI-застосунок на модель (дані й логіка), представлення (відображення) і контролер (обробка запиту). В ASP.NET Core MVC контролер обирає представлення й передає йому модель.
- MVCC (багатоверсійне керування паралельним доступом)
Спосіб ізоляції транзакцій, за якого база зберігає кілька версій рядка, і кожна транзакція бачить версію, актуальну для її знімка. Читачі не блокують записувачів і навпаки. У PostgreSQL старі версії лежать у самій таблиці, у SQL Server з RCSI — в окремому сховищі версій.
- Naming convention (SQLAlchemy)
Шаблони імен індексів і обмежень у
MetaData(naming_convention=...). З ними кожне обмеження отримує передбачуване ім'я, і Alembic може його змінити або видалити.- Native AOT
Публікація застосунку в один нативний виконуваний файл без JIT і без встановленого .NET. Швидкий старт і менше пам'яті, але немає динамічного завантаження збірок і
Reflection.Emit, обов'язковий trimming.- NativeInt
Цілий тип Delphi, розмір якого дорівнює розміру вказівника: 4 байти у Win32 і 8 байтів у Win64. У ньому зберігають вказівники й посилання на об'єкти, приведені до числа.
- Negotiate (узгодження) у SignalR
Перший запит клієнта
POST {hub}/negotiate. Сервер повертає id і токен з'єднання та список доступних транспортів, а Azure SignalR Service — редирект на свою адресу.- Negotiate (SPNEGO)
Механізм, який обирає протокол автентифікації: спочатку Kerberos, у разі невдачі NTLM. У HTTP — схема
WWW-Authenticate: Negotiate(RFC 4559), в ASP.NET Core — обробникAddNegotiate().- Nested Loops (вкладені цикли)
З'єднання, за якого для кожного рядка зовнішнього входу шукаються збіги у внутрішньому. Ефективне, коли зовнішній вхід малий, а внутрішній має індекс за ключем з'єднання.
- ng update
Команда Angular CLI, яка оновлює пакети до наступної мажорної версії й запускає автоматичні міграції коду. Перестрибувати через версії не можна: оновлюються по одній.
- NgRx SignalStore
Стор із пакета
@ngrx/signals, побудований на сигналах: стан, обчислювані значення й методи збираються функціямиwithState,withComputed,withMethods. Легший за класичний NgRx Store за обсягом коду.- NgRx Store
Реалізація Redux для Angular: глобальний стан змінюється лише через actions і reducers, читається через selectors, побічні ефекти живуть в effects. Дає трасування в Redux DevTools ціною шаблонного коду.
- NOLOCK
Табличний хінт SQL Server, рівнозначний READ UNCOMMITTED: читання без розділюваних блокувань. Дає брудні дані, пропуски й повтори рядків і не знімає блокувань схеми та конфліктів записувачів.
- Non-root контейнер
Контейнер, процес якого працює не від root. Образи .NET з версії 8 містять користувача
app(UID у зміннійAPP_UID); вмикається інструкцієюUSER $APP_UID, у chiseled — за замовчуванням.- NonGC heap (frozen heap)
Область пам'яті в .NET 8+ для об'єктів, які живуть увесь час роботи процесу, наприклад рядкових літералів. GC їх не збирає й не переміщує, а
GC.GetGenerationдля них може повернутиint.MaxValue.- NTLM
Протокол автентифікації Windows за схемою «виклик — відповідь»: клієнт доводить знання хешу пароля, а сервер перевіряє відповідь через контролер домену. Не перевіряє сервер і не підтримує делегування; з 2024 року оголошений deprecated.
- NuGet
Менеджер пакетів .NET. Пакет
.nupkgмістить збірки під різні TFM і список залежностей;dotnet restoreзавантажує пакети й обирає їхні версії.- NuGet Audit
Перевірка пакетів на відомі вразливості під час кожного restore (.NET 8 SDK+). Видає попередження NU1901–NU1904 за рівнем небезпеки; для
net10.0за замовчуванням перевіряє й транзитивні пакети.- NuGet-фід (package source)
Сервер або папка, звідки NuGet завантажує пакети. Приватний фід компанії (Azure Artifacts, GitHub Packages, BaGetter, Nexus) зберігає внутрішні пакети й часто проксує nuget.org.
- Nullable reference types (NRT)
Можливість C# 8+: посилальний тип без
?вважається таким, що не допускаєnull, із?— таким, що допускає. Компілятор попереджає про можливіNullReferenceException, а в рантаймі нічого не перевіряється.- Nullable-контекст (nullable context)
Налаштування, яке вмикає анотації
?і попередження проnull:enable,warnings,annotationsабоdisable. Задається елементом<Nullable>у проєкті й директивами#nullableу коді.- OAuth 2.0
Протокол делегування доступу (RFC 6749): користувач дозволяє застосунку звертатися до API від свого імені, а застосунок отримує access-токен замість пароля.
- Observable (RxJS)
Лінивий потік значень у часі: починає роботу під час підписки, може видати багато значень, помилку або завершення й скасовується відпискою. В Angular його повертають
HttpClient, маршрутизатор і форми.- OLAP (online analytical processing)
Аналітичне навантаження: агрегати за мільйонами рядків і зрізи за часом, магазинами, товарами. Дані зазвичай лежать в окремому сховищі зі схемою «зірка» або в кубах.
- OLTP (online transaction processing)
Навантаження з безлічі коротких транзакцій: продаж, замовлення, оплата. Схема нормалізована, запити читають і пишуть небагато рядків за ключем.
- OnPush
Стратегія виявлення змін, за якої компонент перевіряється лише за нового входу за посиланням, події всередині,
markForCheck()або зміни прочитаного сигналу. З Angular 22 — стратегія за замовчуванням.- OpenAPI
Стандарт машинозчитуваного опису HTTP API в JSON або YAML: шляхи, параметри, тіла, відповіді й схеми. Раніше називався Swagger; за документом будують документацію, клієнтів і тести.
- OpenID Connect (OIDC)
Шар автентифікації поверх OAuth 2.0: scope
openid, ID-токен, endpoint UserInfo і discovery-документ. Дає змогу застосунку дізнатися, хто увійшов.- OpenTelemetry
Відкритий стандарт і набір SDK для збирання трьох сигналів телеметрії — трейсів, метрик і логів — та їх надсилання в будь-який сумісний бекенд. У .NET спирається на
Activity,MeterіILogger.- OperationCanceledException
Виняток, яким операція повідомляє про скасування. Async-метод, що завершився ним, отримує статус
Canceled;TaskCanceledException— його нащадок.- Options pattern
Прив'язка секції конфігурації до типізованого класу налаштувань, який сервіси отримують через DI як
IOptions<T>,IOptionsSnapshot<T>абоIOptionsMonitor<T>. Підтримує валідацію.- ORM (об'єктно-реляційне відображення)
Бібліотека, яка зіставляє класи застосунку з таблицями бази: генерує SQL за операціями з об'єктами й перетворює рядки результату на об'єкти. У .NET це EF Core, NHibernate; Dapper називають micro-ORM.
- OSR (on-stack replacement)
Заміна коду методу просто під час його виконання: довгий цикл у неоптимізованому коді перемикається на оптимізовану версію. Увімкнений за замовчуванням з .NET 7 на x64 і Arm64.
- OTLP (OpenTelemetry Protocol)
Протокол передавання трейсів, метрик і логів OpenTelemetry через gRPC або HTTP. Його приймають колектор OpenTelemetry і більшість систем спостережуваності, зокрема Elastic.
- Out-of-process хостинг
Модель хостингу в IIS, за якої ANCM запускає застосунок окремим процесом із Kestrel і пересилає йому запити через HTTP по loopback.
- Output caching
Middleware ASP.NET Core (.NET 7+), яке зберігає готові відповіді на сервері за політиками сервера, ігноруючи заголовки клієнта. Підтримує теги, блокування на промаху й Redis.
- OWASP Top 10
Рейтинг десяти головних категорій ризиків вебзастосунків від спільноти OWASP. Оновлюється раз на кілька років; поточна редакція — 2025 року.
- PAC (Privilege Attribute Certificate)
Структура всередині квитка Kerberos в Active Directory зі списком SID користувача та всіх його груп. З неї сервер будує Windows-токен без запиту до каталогу.
- PACELC
Розширення CAP від Daniel Abadi (2010–2012): під час розділення (P) система обирає між доступністю (A) та узгодженістю (C), інакше (E) — між затримкою (L) та узгодженістю (C).
- Package Source Mapping
Налаштування
nuget.config, яке для кожного шаблону імені пакета задає, з якого фіду його можна брати. Захищає від підміни внутрішніх пакетів однойменними з nuget.org (dependency confusion).- package-lock.json
Lock-файл npm з точними версіями й контрольними сумами всього дерева залежностей, включно з транзитивними.
npm ciставить суворо за ним і падає, якщо він розходиться зpackage.json.- PAR (Pushed Authorization Requests)
Розширення OAuth (RFC 9126): клієнт надсилає параметри авторизації прямим POST і отримує
request_uri, а браузер переходить на/authorizeлише з ним. Параметри не видно й не підмінити в браузері.- Parallel Programming Library (PPL)
Модуль
System.Threading: задачіTTaskтаITask, задачі з результатомIFuture<T>і паралельні циклиTParallel.For, які виконуються на пулі потоків.- Parameter sniffing («підглядання» параметрів)
Поведінка оптимізатора: план компілюється під значення параметрів першого виклику й повторно використовується для решти. Корисно за рівномірних даних і шкідливо за перекошених.
- Partial Prerendering (PPR)
Режим рендерингу Next.js: статична й закешована частина сторінки збирається заздалегідь у статичну оболонку, а динамічні частини під
Suspenseстрімляться в тій самій відповіді.- Partial view (часткове представлення)
Файл
.cshtmlз повторюваним шматком розмітки, який вставляють в інші представлення через<partial>. Власної логіки не має й отримує дані від батька.- PDP і PEP (точки ухвалення й застосування рішень)
Policy decision point обчислює рішення «дозволити чи заборонити», policy enforcement point перехоплює запит і застосовує це рішення. Поділ описано в NIST SP 800-162; зовнішнім PDP слугують, наприклад, OPA та OpenFGA.
- PerfView
Безкоштовний профайлер Microsoft поверх ETW: збирає траси по CPU, алокаціях, збираннях сміття та винятках і розбирає їх офлайн. Опанувати важко, але він показує те, чого не видно за лічильниками й логами.
- pg_stat_statements
Розширення PostgreSQL, яке накопичує статистику виконання за нормалізованими запитами: виклики, сумарний і середній час, рядки, читання блоків. Найближчий аналог Query Store, але без зберігання планів.
- PgBouncer
Легкий зовнішній пул з'єднань для PostgreSQL. У режимі
transactionвіддає клієнтові серверне з'єднання лише на час транзакції, тому тисячі клієнтських з'єднань обслуговує невелика кількість серверних процесів.- pickle
Вбудований формат серіалізації об'єктів Python у байти. Через нього
multiprocessingпередає дані між процесами, тому лямбди й локальні функції туди не передати.- Pipe у NestJS
Клас із методом
transform, що перевіряє або перетворює аргумент обробника до його виклику. Вбудовані —ValidationPipe,ParseIntPipe; помилка в pipe дає відповідь 400.- PKCE (Proof Key for Code Exchange)
Розширення OAuth (RFC 7636): клієнт надсилає хеш випадкового рядка в запиті авторизації, а сам рядок — під час обміну коду. Перехоплений код без нього марний.
- POH (pinned object heap)
Купа для об'єктів, які не можна переміщати (.NET 5+). Масив створюється в ній через
GC.AllocateArrayзpinned: true; збирається разом з поколінням 2 і ніколи не ущільнюється.- Preflight-запит
Попередній запит
OPTIONS, який браузер надсилає перед «непростим» міжсайтовим запитом: з методом на кшталтPUT, тіломapplication/jsonабо власними заголовками. Без дозволу сервера основний запит не надсилається.- Primary constructor (первинний конструктор)
- Prisma Client
Типізований клієнт бази, який
prisma generateстворює за схемою: методиfindMany,create,updateдля кожної моделі. Змін не відстежує — кожен виклик одразу виконує запит.- Prisma Migrate
Інструмент міграцій Prisma:
prisma migrate devстворює SQL-міграції за змінами схеми,prisma migrate deployзастосовує готові міграції в CI і продакшені. Історія зберігається в таблиці_prisma_migrations.- ProblemDetails
Стандартний JSON-формат помилки HTTP API за RFC 9457 (раніше RFC 7807) з полями
type,title,status,detailтаinstance. В ASP.NET Core вмикається черезAddProblemDetails().- Prometheus
Система моніторингу й база часових рядів. Сама забирає метрики з HTTP-ендпоінтів сервісів (pull), зберігає їх і перевіряє правила алертів; графіки зазвичай будують у Grafana.
- Prop drilling
Передавання props через кілька рівнів компонентів, яким вони не потрібні, лише щоб довести значення до глибокого нащадка. Лікується Context або композицією через
children.- Props (властивості компонента)
Вхідні параметри React-компонента, які передає батько. Компонент їх лише читає; щоб щось змінити вгорі, він викликає колбек із props.
- Protocol Buffers (Protobuf)
Бінарний формат серіалізації від Google: схему описують у
.proto, а кожне поле кодується номером і типом. Повідомлення компактніші за JSON, але без схеми їх не прочитати.- Provisioning (автоматичне надання доступу)
Автоматичне створення облікових записів і видача прав у цільових системах — AD, SaaS, внутрішніх застосунках — і зворотний процес, відкликання. Стандартний протокол для цього — SCIM (RFC 7643, RFC 7644).
- PSP optimization (Parameter Sensitive Plan)
Механізм SQL Server 2022 на рівні сумісності 160: для запиту з перекошеними даними сервер тримає кілька варіантів плану й вибирає їх за діапазоном кардинальності поточного значення параметра. Працює з предикатами-рівностями.
- Pub/sub (публікація й підписка)
Схема обміну повідомленнями: відправник публікує повідомлення в тему чи канал, не знаючи отримувачів, і його отримує кожен підписник. Чи зберігаються повідомлення, залежить від системи: Redis pub/sub доставляє лише тим, хто підписаний зараз, а Kafka й підписки Service Bus зберігають їх до прочитання.
- Pull request (PR, merge request)
Запит на злиття гілки в іншу гілку на платформі на кшталт GitHub, GitLab або Azure DevOps. Навколо нього йдуть рев'ю, обговорення й перевірки CI; у GitLab він називається merge request.
- Pydantic
Бібліотека валідації та серіалізації даних за анотаціями типів. Модель успадковується від
BaseModel; у версії 2 ядро pydantic-core написане на Rust.- pydantic-settings
Пакет із класом
BaseSettings: поля налаштувань заповнюються зі змінних оточення,.envі файлів секретів, а типи перевіряє Pydantic під час створення об'єкта.- pyproject.toml
Стандартний файл опису Python-проєкту: метадані й залежності в таблиці
[project](PEP 621), система збирання й налаштування інструментів у таблицях[tool.*]. Аналог.csproj.- Quality gate
Набір порогів, які результат аналізу має пройти, щоб вважатися придатним: наприклад, немає нових зауважень і покриття нового коду від 80%. У SonarQube статус gate може зупиняти конвеєр і злиття PR.
- Quartz.NET
Планувальник завдань для .NET: завдання (
IJob) запускається за тригерами — інтервалом, cron або календарем. ЗAdoJobStoreзберігає розклад у базі й працює кластером.- Query Store
Вбудоване в базу сховище історії запитів, їхніх планів і статистики виконання. З'явився в SQL Server 2016, для нових баз увімкнений за замовчуванням із SQL Server 2022; допомагає знайти регресію й закріпити план.
- Razor
Синтаксис шаблонів, який вбудовує C# в HTML через символ
@. Файли.cshtmlкомпілюються в C#-класи під час збирання, а значення, що виводяться, автоматично кодуються.- Razor Pages
Модель серверного UI, де сторінка
.cshtmlз директивою@pageсама відповідає на маршрут, а обробникиOnGetіOnPostлежать поруч у класіPageModel. Побудована на інфраструктурі MVC.- RBAC (рольова модель доступу)
Role-based access control: права збирають у ролі, а користувачам призначають ролі. Модель NIST закріплена стандартом ANSI INCITS 359 і, крім базового рівня, описує ієрархії ролей і розділення обов'язків.
- RBAR (row by agonizing row)
Іронічна назва порядкової обробки: курсори, цикли
WHILEі виклики із застосунку на кожен рядок. Термін запровадив Джефф Моден.- RBCD (resource-based constrained delegation)
Обмежене делегування, яке налаштовує власник цільової служби: на її обліковому записі перелічено облікові записи, яким можна делегувати до неї. З'явилося у Windows Server 2012, працює між доменами.
- RCSI (read committed snapshot isolation)
Реалізація READ COMMITTED у SQL Server на версіях рядків: кожен оператор читає дані, зафіксовані до його початку, без розділюваних блокувань. Вмикається опцією бази
READ_COMMITTED_SNAPSHOT, в Azure SQL Database увімкнена за замовчуванням.- React Compiler
Інструмент збирання, який аналізує компоненти й автоматично мемоізує значення, JSX і колбеки. Стабільна версія 1.0 вийшла в жовтні 2025.
- Read-your-writes
Сесійна гарантія: користувач завжди бачить власні записи, навіть якщо інші клієнти поки що читають стару версію з репліки, що відстає.
- ReaderWriterLockSlim
Блокування, яке пускає багатьох читачів одночасно або одного писача. Прив'язане до потоку й за замовчуванням не підтримує рекурсію.
- Readiness-проба (readiness probe)
Періодична перевірка Kubernetes, чи готовий контейнер приймати трафік. У разі провалу под прибирають з EndpointSlice сервісу, але не перезапускають.
- ReadyToRun (R2R)
Форма AOT-компіляції, за якої до збірки, крім IL, додається готовий машинний код. Прискорює старт; JIT залишається й перекомпільовує гарячі методи.
- ReBAC (доступ на основі відношень)
Relationship-based access control: права виводяться з графа відношень між користувачами й об'єктами — «власник», «учасник групи», «тека містить документ». Так влаштовані Google Zanzibar, OpenFGA і SpiceDB.
- Rebase (перебазування)
Перенесення комітів гілки на нову базу: Git заново застосовує кожен коміт поверх іншої гілки й створює його копію з новим хешем. Робить історію лінійною, але переписує її.
- Record (запис)
Модифікатор
recordдля класу (C# 9) або структури (C# 10): компілятор генерує порівняння за значенням,ToString,Deconstructдля позиційних параметрів і підтримкуwith.- Redis
Сховище «ключ — значення» в оперативній пам’яті з необов’язковим збереженням на диск. Типові ролі — розподілений кеш, лічильники, черги й блокування; в ASP.NET Core під’єднується як
IDistributedCacheабо напряму через StackExchange.Redis.- Ref safety (безпека посилань)
Правила компілятора C#, які не дають посиланню (
ref,Span<T>, будь-якомуref struct) пережити дані, на які воно вказує. Наприклад, не можна повернути span наstackalloc-буфер; модифікаторscopedзвужує час життя.- ref struct
Структура, яка може жити лише на стеку: її не можна упакувати, зберегти в полі класу чи захопити в лямбду. Приклад —
Span<T>.- Reference-токен
Непрозорий токен-ідентифікатор: самі дані зберігаються в сервера авторизації, а API отримує їх інтроспекцією. Відкликається одразу й нічого не розкриває, але потребує мережевого виклику.
- Reflog (журнал посилань)
Локальний журнал, у якому Git записує кожне переміщення HEAD і гілок. Через нього знаходять коміти після
reset --hardабо видалення гілки; записи за замовчуванням живуть 90 днів, недосяжні — 30.- Reflow (перерахунок розкладки)
Повторний розрахунок розмірів і положення елементів (layout) після зміни геометрії або DOM. Дорожчий за repaint, який лише перемальовує пікселі.
- Refresh-токен
Довгоживучий токен, який клієнт обмінює на сервері авторизації на новий access-токен без повторного входу користувача. В API його не надсилають.
- reintroduce
Директива методу, яка явно приховує віртуальний метод предка з тим самим ім'ям і придушує попередження W1010. Аналог модифікатора
newу C#.- Relying party trust
Запис в ADFS про застосунок, якому ADFS видає токени: ідентифікатор, адреса повернення, протокол, правила claims і політика доступу.
- RequestDelegate
Делегат
Task RequestDelegate(HttpContext context)— сигнатура ланки конвеєра та endpoint'а. Увесь побудований конвеєр — теж одинRequestDelegate.- Requests і limits
Ресурси контейнера в Kubernetes. Requests — резерв, за яким планувальник обирає вузол; limits — стеля: за перевищення пам'яті процес убивають (OOMKilled), за перевищення CPU — тротлять.
- Respawn
Бібліотека Джиммі Богарда, яка швидко очищає тестову базу між тестами: видаляє дані з таблиць у порядку зовнішніх ключів і не чіпає схему.
- Response caching (кешування відповідей за HTTP)
Кешування HTTP-відповідей за стандартними заголовками: браузер, проксі та CDN зберігають відповідь за
Cache-Control. В ASP.NET Core є атрибут[ResponseCache]і однойменний middleware.- REST
Архітектурний стиль API, де URL позначає ресурс, а дію над ним виражає стандартний HTTP-метод. Результат повідомляє статус-код, а стан клієнта між запитами сервер не зберігає.
- Roll-forward
Правило вибору версії середовища виконання під час запуску застосунку. За замовчуванням береться останній встановлений патч своєї версії, але не нова major-версія; поведінку змінює налаштування
RollForward.- Roslyn
Компілятор C# і Visual Basic з відкритим кодом та API для аналізу коду. Перетворює вихідний код на IL і метадані; на ньому працюють аналізатори й source generators.
- Row-level security (RLS)
Механізм СКБД, який фільтрує рядки таблиці за політикою для поточного користувача або контексту сесії:
CREATE POLICYу PostgreSQL,CREATE SECURITY POLICYу SQL Server.- rowversion
Тип даних SQL Server: 8 байт із лічильника бази, які автоматично змінюються під час кожної зміни рядка. Використовується для оптимістичної перевірки «рядок ніхто не змінював». Синонім
timestampзастарів.- RPS (requests per second)
Кількість запитів на секунду — основна міра навантаження на сервіс. Рахують середнє й пік: пік зазвичай у кілька разів вищий за середнє.
- Ruff
Лінтер і форматер Python від Astral, написаний на Rust.
ruff checkзамінює flake8, isort і pyupgrade,ruff format— Black.- RUM (real user monitoring)
Збирання метрик продуктивності в браузерах реальних користувачів і надсилання їх в аналітику. Дає польові дані на відміну від лабораторних вимірів Lighthouse.
- Runbook
Інструкція для чергового щодо конкретного алерту: що перевірити, які дії безпечні, кого кликати. Посилання на неї кладуть просто в алерт.
- SafeHandle
Абстрактна обгортка над дескриптором ОС з критичним фіналізатором. Гарантує одноразове звільнення дескриптора й не дає закрити його під час P/Invoke-виклику.
- SameSite (атрибут cookie)
Атрибут cookie, який обмежує її надсилання в міжсайтових запитах:
Strict— ніколи,Lax— лише під час навігації верхнього рівня,None— завжди (лише зSecure).- SAML 2.0
XML-стандарт обміну твердженнями про автентифікацію між постачальником ідентичності та застосунком. Поширений у корпоративних продуктах і SaaS; вбудованого обробника в ASP.NET Core немає.
- SARGable-умова
Умова, яку оптимізатор може перетворити на діапазон пошуку за індексом (від search argument). Стовпець стоїть у ній без функцій, обчислень і перетворень типу.
- Scope (область доступу)
Рядок у запиті токена, який обмежує, що клієнт може робити від імені користувача:
openid,orders.read,offline_access. Це права клієнта, а не користувача.- Scope (область DI)
Область, усередині якої scoped-сервіси існують в одному екземплярі й наприкінці якої контейнер звільняє створені в ній об'єкти. В ASP.NET Core scope створюється на кожен HTTP-запит.
- Scope логування (log scope)
Блок, відкритий через
ILogger.BeginScope, властивості якого додаються до всіх записів усередині нього. Зберігається вAsyncLocal, тому переживаєawait.- Scrutor
Бібліотека розширень для вбудованого контейнера .NET: сканування збірок з реєстрацією за домовленостями (
Scan) і декоратори (Decorate).- search_path
Параметр PostgreSQL зі списком схем, у яких шукаються об'єкти, указані без схеми. За замовчуванням це схема з ім'ям користувача та
public; найближчий аналог у SQL Server — схема за замовчуванням у користувача, зазвичайdbo.- Self-contained-публікація
Публікація, за якої середовище виконання .NET кладеться разом із застосунком. Не потребує встановленого .NET, але збирається під конкретну ОС і архітектуру.
- SemaphoreSlim
Легкий семафор усередині одного процесу: пускає одночасно не більше N учасників. Уміє чекати асинхронно через WaitAsync і не має власника.
- Server Action (серверна дія)
Асинхронна функція з директивою
'use server', яку клієнт викликає POST-запитом для зміни даних, наприклад через<form action>. Це публічний ендпоінт, авторизацію перевіряють усередині.- Server GC
Режим GC з окремою купою й виділеним потоком збирання на кожен логічний процесор. Дає більшу пропускну здатність ціною пам'яті; за замовчуванням використовується в ASP.NET Core.
- Server-Sent Events (SSE)
Стандарт браузера для потоку текстових подій від сервера до клієнта звичайним HTTP (
EventSource). У зворотний бік SignalR надсилає дані окремими POST.- Service Locator (локатор служб)
Патерн, за якого клас сам запитує залежності в глобального реєстру, наприклад через
IServiceProvider.GetService. За DI його вважають антипатерном: залежностей не видно в конструкторі, а помилки переїжджають у рантайм.- Service mesh
Інфраструктурний шар для викликів між сервісами: проксі поруч із кожним сервісом (sidecar) додає mTLS, повтори, балансування й телеметрію без зміни коду. Приклади — Istio, Linkerd.
- Session (SQLAlchemy)
Об'єкт ORM SQLAlchemy для роботи з об'єктами в межах однієї одиниці роботи: завантажує їх, відстежує зміни й зберігає через flush і
commit(). АналогDbContext, не потокобезпечна.- SET XACT_ABORT
Налаштування сеансу: за
ONбудь-яка помилка виконання відкочує всю транзакцію. За замовчуваннямOFF, і частина помилок відкочує лише одну інструкцію, а тайм-аут клієнта залишає транзакцію відкритою.- Set-based підхід (робота з множинами)
Стиль, за якого набір рядків обробляють однією інструкцією (
UPDATE ... JOIN,INSERT ... SELECT,MERGE), а не циклом по рядках. Оптимізатор обирає план для всього набору, а накладні витрати сплачуються один раз.- ShutdownTimeout
Час, який Generic Host чекає на зупинку служб і сервера (
HostOptions.ShutdownTimeout). Із .NET 6 за замовчуванням 30 секунд, раніше було 5.- SID (Security Identifier)
Постійний ідентифікатор облікового запису або групи у Windows, наприклад
S-1-5-21-...-1105. Не змінюється після перейменування, тому перевіряти права надійніше за SID, ніж за іменем.- SignalR
Бібліотека ASP.NET Core для обміну повідомленнями в реальному часі. Тримає постійне з'єднання й дає змогу серверу та клієнту викликати методи одне одного.
- SIGTERM
Сигнал Unix із проханням завершити процес. Його надсилають
docker stop, Kubernetes і systemd; якщо процес не завершився за відведений час, надходить SIGKILL.- Silent renew (тихе оновлення)
Отримання нового токена без участі користувача: запит
/authorizeзprompt=noneу прихованому iframe використовує сесію провайдера. Ламається, якщо браузер блокує сторонні cookie.- Sink у Serilog
Приймач подій Serilog — місце, куди вони записуються: консоль, файл, Seq, Elasticsearch, OTLP. Кожен sink — окремий NuGet-пакет.
- SLI (service level indicator)
Вимірюваний показник якості сервісу, зазвичай частка добрих подій серед усіх: успішних запитів, запитів, швидших за поріг.
- SLO (service level objective)
Цільове значення показника якості сервісу, наприклад «99,9% запитів успішні» або «p99 менше 300 мс». SLA — договірне зобов'язання перед клієнтом, зазвичай м'якше за внутрішній SLO.
- SMPP (Short Message Peer-to-Peer)
Протокол поверх TCP для обміну SMS між застосунком (ESME) і SMS-центром оператора чи агрегатора. Повідомлення надсилають операцією submit_sm, статуси отримують через deliver_sm.
- SOAP
Протокол обміну XML-повідомленнями (конвертами) з контрактом у WSDL. Використовується у WCF і корпоративних системах; набір стандартів WS-* додає безпеку, надійну доставку й транзакції.
- SOLID
П'ять принципів об'єктного проєктування, зібраних Робертом Мартіном: єдина відповідальність, відкритість/закритість, підстановка Лісков, розділення інтерфейсів та інверсія залежностей. Абревіатуру запропонував Майкл Фезерс.
- Source Link
Технологія, яка записує в PDB і пакет адресу репозиторію й коміт. Налагоджувач за нею завантажує вихідний код точної версії бібліотеки. Із .NET 8 вбудована в SDK для GitHub, Azure Repos, GitLab і Bitbucket.
- SPA (односторінковий застосунок)
Застосунок, у якому браузер один раз завантажує оболонку, а далі змінює вміст і адресу без повного перезавантаження. Ціна — обсяг JavaScript, власна маршрутизація і стан на клієнті, а також окрема робота над доступністю та індексацією.
- Span<T>
ref structіз посилання на неперервну ділянку пам'яті та довжини. Вказує на масив, рядок,stackalloc-буфер або некеровану пам'ять, зрізи не копіюють дані. Живе лише на стеку.- Split query (розділений запит)
Режим EF Core 5+, у якому
Includeколекцій виконується окремими SQL-запитами замість одного зJOIN. ВмикаєтьсяAsSplitQuery(); прибирає декартів вибух ціною зайвих round trip і без спільної узгодженості.- SPN (Service Principal Name)
Ім'я служби для Kerberos вигляду
HTTP/portal.contoso.com, прив'язане до одного облікового запису AD. За ним KDC обирає ключ, яким шифрує квиток; дублікат або SPN не на тому обліковому записі ламають вхід.- SQL-ін'єкція
Вразливість, за якої дані користувача вклеюються в текст SQL і змінюють сам запит. Захист — передавати значення параметрами, а не склеювати рядки.
- SQLAlchemy Core
Нижній рівень SQLAlchemy: таблиці, вирази SQL (
select,insert), з'єднання й транзакції без об'єктів і відстеження змін. ORM побудований поверх нього.- Squash merge
Спосіб злити pull request, за якого всі коміти гілки об'єднуються в один коміт у цільовій гілці. Історія
mainвиходить короткою, але проміжні коміти в неї не потрапляють.- SSRF (підробка запиту з боку сервера)
Server-Side Request Forgery — зловмисник змушує сервер зробити HTTP-запит на свою адресу, наприклад у внутрішню мережу або до сервісу метаданих хмари. В OWASP Top 10:2025 входить до категорії контролю доступу.
- Staging-таблиця (проміжна таблиця)
Таблиця, куди завантаження спершу кладе сирі дані з джерела. Звідти їх перевіряють і переносять у цільові таблиці set-based запитом, а під час повтору staging просто очищують.
- Standalone-компонент
Компонент, який сам перелічує свої залежності в
importsі не оголошується в NgModule. З'явився в Angular 14, стабільний із v15, за замовчуванням із v19.- Starlette
Легкий ASGI-фреймворк: маршрутизація, middleware, запити й відповіді, WebSocket. FastAPI успадковує від нього клас застосунку й додає залежності, валідацію та OpenAPI.
- Startup-проба (startup probe)
Перевірка Kubernetes, яка чекає завершення запуску контейнера. Доки вона не пройшла, liveness і readiness не виконуються; у разі провалу контейнер перезапускається.
- Stateful reconnect (перепідключення зі станом)
Режим SignalR (.NET 8+), за якого сервер і клієнт буферизують непідтверджені повідомлення й після короткого обриву відновлюють те саме з'єднання без втрат.
- Stateless-сервіс
Сервіс, який не зберігає стан між запитами у своїй пам'яті: сесії, кошики й файли лежать у зовнішньому сховищі. Будь-який екземпляр може обробити будь-який запит.
- Sticky sessions (прив'язка сесії)
Налаштування балансувальника, за якого всі запити клієнта йдуть на той самий сервер, зазвичай за cookie або IP. Також називається session affinity.
- Strangler fig («фікус-душитель»)
Патерн поступової заміни системи: новий код стає поруч зі старим і забирає функції по одній, доки стару систему не стане можливо вимкнути. Назву дав Мартін Фаулер.
- StrictMode
Режим перевірок React у розробці: компоненти рендеряться двічі, а ефекти проходять зайвий цикл setup → cleanup → setup. Так знаходяться нечистий рендер і ефекти без очищення.
- StringBuilder
Змінюваний буфер для побудови рядка частинами. Дописує символи без проміжних рядків і створює підсумковий
stringуToString().- STS (Standard Term Support)
Реліз .NET з підтримкою 24 місяці (починаючи з .NET 9, раніше було 18). Це непарні версії: .NET 9, .NET 11.
- Suspense
Компонент React, який показує fallback, поки дочірні компоненти чекають дані або код. На сервері його межі задають частини, які стрімляться окремо.
- switch-вираз (switch expression)
Вираз
x switch { шаблон => результат, ... }(C# 8), який повертає значення першої гілки, що підійшла. Якщо не підійшла жодна, кидаєSwitchExpressionException.- Sync block
Внутрішня структура CLR, куди переїжджає стан Monitor, коли блокування на об'єкті стає конкурентним. Власників і тих, хто чекає, можна побачити командою syncblk у дампі.
- Sync-over-async
Синхронне очікування асинхронної операції через .Result, .Wait() або GetAwaiter().GetResult(). Блокує потік на весь час операції й найчастіше спричиняє голодування пулу.
- Synchronizer token pattern
Схема захисту від CSRF: сервер видає клієнту непередбачуваний токен, пов'язаний із користувачем, і приймає змінювальний запит, лише якщо токен повернувся разом із ним.
- System.Threading.Lock
Виділений тип блокування, що з'явився в .NET 9. Якщо вираз у lock має цей тип, C# 13 і новіші генерують виклик EnterScope замість Monitor.
- Tag helper
Клас, який на сервері обробляє HTML-елемент у Razor-розмітці, наприклад
<a asp-action="...">або<input asp-for="...">. Підключається директивою@addTagHelper.- takeUntilDestroyed
Оператор з
@angular/core/rxjs-interop, який завершує підписку під час знищення компонента чи сервісу. В injection context береDestroyRefсам, поза ним — приймає параметром. Стабільний із v19.- TanStack Query (React Query)
Бібліотека для серверного стану: завантажує дані, кешує їх за ключем запиту, перезапитує застарілі й інвалідує після мутацій.
- Task.WhenAll
Метод, який повертає задачу, що завершується після всіх переданих задач. Якщо якісь із них упали, вона містить усі їхні винятки.
- TaskGroup
Асинхронний контекстний менеджер Python 3.11+, який чекає всі запущені в ньому задачі. Якщо одна падає, решта скасовуються, а помилки збираються в
ExceptionGroup.- TBytes
Динамічний масив байтів (array of Byte) у Delphi. Після переходу на Unicode двійкові дані зберігають у TBytes, а не в рядку, бо рядок тепер двобайтовий і перекодовується.
- TDataSet
Абстрактний базовий клас наборів даних у Delphi: курсор по рядках, поля, стани, події й навігація. Від нього успадковуються набори ADO, FireDAC, dbExpress і
TClientDataSet.- Tell, Don't Ask
Принцип: не витягати дані об'єкта, щоб ухвалити рішення за нього, а попросити об'єкт виконати дію. Так поведінка залишається поруч із даними.
- TEncoding
Клас RTL Delphi для перетворення тексту на байти й назад у заданому кодуванні: UTF-8, UTF-16, ANSI або конкретна кодова сторінка. Уміє розпізнавати й записувати BOM.
- Test double (дублер)
Загальна назва об'єкта, який у тесті замінює справжню залежність. Види за Джерардом Месарошем — dummy, stub, spy, mock і fake.
- Testcontainers
Бібліотека, яка з коду тесту запускає Docker-контейнери — SQL Server, PostgreSQL, Redis, брокери — і видаляє їх після прогону. Тести працюють зі справжньою інфраструктурою тієї самої версії, що в продакшені.
- TFM (target framework moniker)
Коротке ім'я цільової платформи в проєкті та NuGet-пакеті:
net48,netstandard2.0,net10.0,net10.0-windows.- TGT (Ticket Granting Ticket)
«Квиток на отримання квитків» Kerberos: його видає KDC після перевірки пароля, і за ним клієнт отримує сервісні квитки без повторного введення пароля. Зашифрований ключем облікового запису
krbtgt, за замовчуванням живе 10 годин.- this у JavaScript
Ключове слово, значення якого задає спосіб виклику функції:
new,call/apply/bind, виклик через об'єкт або звичайний виклик. У стрілкових функцій власногоthisнемає.- THTTPClient
HTTP-клієнт із модуля System.Net.HttpClient без візуальних компонентів. Використовує системний стек HTTP платформи й підходить для виклику REST-сервісів із Delphi-клієнта.
- Tiered compilation (багаторівнева компіляція)
Режим JIT, за якого метод спочатку компілюється швидко й без оптимізацій, а після 30 викликів перекомпільовується з оптимізаціями у фоні. Увімкнений за замовчуванням з .NET Core 3.0.
- TimeProvider
Абстракція системного часу в .NET 8+: поточний час, часовий пояс і таймери. У тестах її замінюють на
FakeTimeProviderз пакетаMicrosoft.Extensions.TimeProvider.Testingі зсувають час уручну.- timestamptz (timestamp with time zone)
Тип PostgreSQL для моменту часу. Під час введення значення переводиться в UTC, під час виведення — у часовий пояс сесії; вихідний зсув не зберігається, на відміну від
datetimeoffsetу SQL Server.- TInterfacedObject
Базовий клас RTL з потокобезпечною реалізацією
IInterface: рахує інтерфейсні посилання й знищує об'єкт, коли лічильник доходить до нуля. Нащадків тримають лише через інтерфейсні змінні й не звільняють черезFree.- TLS (Transport Layer Security)
Протокол поверх TCP, який шифрує трафік, захищає його від підміни й підтверджує справжність сервера сертифікатом. HTTPS — це HTTP поверх TLS; актуальні версії — 1.2 і 1.3.
- TOAST
Механізм зберігання великих значень у PostgreSQL: якщо рядок ширший за ~2 КБ, великі поля стискаються й виносяться в окрему службову таблицю. Зміна такого значення переписує його цілком.
- Token bucket (кошик токенів)
Алгоритм обмеження швидкості: кошик поповнюється токенами зі сталою швидкістю, кожна операція забирає токен. Допускає короткі сплески до розміру кошика, а в середньому тримає задану швидкість.
- Token exchange (обмін токенів)
Grant OAuth 2.0 з RFC 8693: сервіс віддає серверу авторизації вхідний токен і отримує новий для іншого
audience. Користувач лишається вsub, сервіс, що викликає, потрапляє вact.- Trace ID (ідентифікатор трасування)
Ідентифікатор W3C Trace Context, спільний для всіх операцій одного запиту в розподіленій системі. ASP.NET Core бере його з
Activity.Currentі додає в ProblemDetails якtraceId.- Transactional outbox
Шаблон, у якому подія зберігається в таблицю outbox тією самою локальною транзакцією, що й бізнес-дані, а окремий процес (relay) потім публікує її в брокер. Дає доставку at-least-once без розподіленої транзакції.
- TransactionScope
Клас System.Transactions, який створює ambient-транзакцію: з'єднання, відкриті всередині блоку, входять у неї самі. За замовчуванням рівень SERIALIZABLE і таймаут 1 хвилина.
- Trimming (обрізання)
Видалення невикористаного коду застосунку й бібліотек під час публікації. Зменшує розмір, але може зламати код, який знаходить типи через рефлексію; небезпечні місця показують trim-аналізатори.
- Trunk-based development (розробка в основній гілці)
Модель, за якої всі розробники часто вливають невеликі зміни в одну гілку (trunk, зазвичай
main) і не тримають інших довгоживучих гілок розробки. Незавершене ховають за feature flags.- Truthy і falsy
Як значення поводиться в логічному контексті (
if,&&,||). Falsy —false,0,-0,0n,'',null,undefinedіNaN; усе інше, зокрема[]і'0', — truthy.- TryAdd і TryAddEnumerable
Методи реєстрації з
Microsoft.Extensions.DependencyInjection.Extensions.TryAdd*додає сервіс, лише якщо він ще не зареєстрований,TryAddEnumerable— якщо немає такої самої пари «сервіс і реалізація».- TThread
Клас Delphi для фонового потоку: код пишеться в
Execute, зупинку запитуєTerminate, а код у головний потік передаютьSynchronizeіQueue.- Type guard (захисник типу)
Функція з типом результату
value is T: якщо вона повернулаtrue, компілятор звужує тип аргументу доT. За коректність перевірки всередині відповідає автор.- Type stripping (стирання типів)
Вбудований у Node.js запуск файлів
.ts: анотації типів замінюються пробілами, код не транспілюється й типи не перевіряються. Увімкнений за замовчуванням з Node 22.18 і 23.6, стабільний з 24.12 і 25.2;enumіnamespaceз кодом не підтримуються.- TypedResults
Фабрика результатів Minimal API (.NET 7+), яка повертає конкретні типи на кшталт
Ok<T>іNotFound. Тип відповіді видно в сигнатурі, і він автоматично потрапляє в метадані ендпоінта та OpenAPI.- Unboxing (розпакування)
Видобування значення значущого типу з упакованого об'єкта: перевірка типу й копіювання. Розпакувати можна лише у вихідний тип або в
Nullableвід нього, інакше —InvalidCastException.- uncaughtException
Подія процесу Node.js для винятку, який дійшов до event loop необробленим. За замовчуванням Node друкує стек і завершується з кодом 1; продовжувати роботу після нього небезпечно.
- UnicodeString
Рядковий тип Delphi з підрахунком посилань, у якому текст зберігається в UTF-16. З Delphi 2009 тип string — це UnicodeString, а Char — двобайтовий WideChar.
- Upsert (INSERT ... ON CONFLICT)
Операція «вставити, а якщо такий рядок уже є — оновити». У PostgreSQL це
INSERT ... ON CONFLICT DO UPDATE, атомарний за паралельних вставок завдяки унікальному індексу; у SQL Server зазвичайMERGEз підказкоюHOLDLOCK.- URL (адреса ресурсу)
Рядок вигляду
https://host:port/path?query#fragment: схема, хост, шлях, рядок запиту й фрагмент. Сервер маршрутизує запит за шляхом і рядком запиту, а фрагмент після#у запит не потрапляє й лишається тільки в браузері.- useEffectEvent
Хук React 19.2 для логіки, яка читає свіжі props і state, але не має перезапускати ефект. Функцію з нього викликають лише всередині ефектів і не вказують у залежностях.
- User Secrets (Secret Manager)
Сховище секретів для розробки: незашифрований
secrets.jsonу профілі користувача, поза каталогом проєкту.WebApplication.CreateBuilderпідключає його лише в середовищіDevelopment.- using-оголошення (using declaration)
Форма
using var x = ...;без фігурних дужок (C# 8):Disposeвикликається наприкінці області видимості, де оголошено змінну. Кілька оголошень звільняються у зворотному порядку.- UTF-16
Кодування Unicode, у якому символ займає 2 байти, а символи поза базовою площиною (наприклад емодзі) — 4 байти, сурогатну пару. Його використовують Windows API, рядки Delphi і .NET.
- Utility types
Вбудовані generic-типи TypeScript, які будують новий тип з наявного:
Partial,Required,Readonly,Pick,Omit,Record,ReturnType,Awaitedта інші.- UUIDv7
Версія UUID з RFC 9562: перші 48 бітів — час у мілісекундах від Unix-епохи, решта — версія та випадкові біти, тому значення зростають з часом. У .NET 9+ створюється через
Guid.CreateVersion7().- uv
Менеджер пакетів і проєктів Python від Astral, написаний на Rust. Створює оточення, розв'язує й закріплює залежності, встановлює версії Python і запускає утиліти — замінює pip, venv, pip-tools і pipx.
- Uvicorn
ASGI-сервер для Python: приймає HTTP-з'єднання й викликає застосунок у своєму циклі подій. Прапорець
--workersзапускає кілька процесів.- V8
JavaScript-рушій від Google, спільний для Chrome і Node.js. Компілює й виконує JavaScript, керує купою та збиранням сміття; вводу-виводу в ньому немає, його дає libuv.
- VACUUM
Команда обслуговування PostgreSQL: прибирає мертві версії рядків, оновлює карту видимості й заморожує старі рядки, захищаючи від переповнення лічильника транзакцій. Зазвичай її запускає фоновий процес autovacuum.
- ValidateOnBuild
Опція
ServiceProviderOptions, за якої контейнер ще під часBuild()перевіряє, що кожен зареєстрований сервіс можна створити. Відкритих generic-реєстрацій не перевіряє; за замовчуванням увімкнена в Development.- ValidateOnStart
Метод
OptionsBuilder<T>(.NET 6+), який запускає валідацію налаштувань під час старту хоста. Без нього помилка виявиться лише під час першого звернення до налаштувань.- ValueTask
Структура, яка представляє результат асинхронної операції без обов'язкової алокації
Task. Її можна чекати лише один раз.- View component (компонент представлення)
Клас-нащадок
ViewComponentіз власним представленням, який сам завантажує дані й рендерить блок сторінки: кошик, меню. Викликається з представлення, а не через HTTP.- ViewModel (модель представлення)
Клас, створений під конкретну сторінку: лише поля, які вона показує або приймає. Відокремлює представлення від сутностей бази й захищає від overposting.
- volatile
Модифікатор поля C#: усі звертання до поля стають volatile-читаннями й volatile-записами з порядком acquire/release. Атомарності складених операцій він не дає.
- W3C Trace Context
Стандарт заголовків
traceparentіtracestateдля передавання контексту трейсу між сервісами. У .NET це формат ідентифікаторівActivityза замовчуванням.- WAI-ARIA
Специфікація W3C з атрибутами
roleіaria-*, які доповнюють дерево доступності там, де HTML бракує семантики. Змінює лише те, що чує скринрідер, але не поведінку елемента.- WCAG (Web Content Accessibility Guidelines)
Стандарт W3C з перевірюваними критеріями доступності рівнів A, AA і AAA. Актуальна версія — WCAG 2.2 (жовтень 2023); закони зазвичай вимагають рівня AA.
- WebApplicationFactory
Клас із пакета
Microsoft.AspNetCore.Mvc.Testing, який запускає застосунок ASP.NET Core у пам'яті наTestServerі видаєHttpClientдля запитів до нього. Дає змогу підмінити сервіси й налаштування.- WebSocket
Протокол постійного двостороннього з'єднання поверх одного TCP-з'єднання. Починається з HTTP-запиту на Upgrade і відповіді
101 Switching Protocols.- Window Spool
Оператор плану SQL Server у row mode, який зберігає рядки рамки вікна. Для
ROWSз рамкою менше 10 000 рядків він працює в пам'яті, дляRANGE— з робочою таблицею в tempdb, що помітно повільніше.- Windows-автентифікація
Вхід у вебзастосунок під доменним обліковим записом Windows без введення пароля: браузер і сервер обмінюються токенами Kerberos або NTLM в HTTP-заголовках. В IIS і ASP.NET Core її також називають Negotiate-автентифікацією.
- WireMock.Net
Емулятор HTTP-сервісів для .NET: піднімає справжній HTTP-сервер із заготовленими відповідями, затримками й помилками. Застосовується в інтеграційних тестах зовнішніх API.
- Work stealing (крадіжка роботи)
Прийом планувальника: вільний потік забирає роботу з локальної черги іншого потоку. Так пул потоків балансує навантаження без спільної точки конкуренції.
- work_mem
Параметр PostgreSQL: скільки пам'яті може зайняти одна операція сортування чи хешування, перш ніж піти на диск. Виділяється на кожну таку операцію в кожному з'єднанні, тому великі значення задають точково.
- Worker Service
Шаблон .NET (
dotnet new worker) для довгоживучого фонового процесу без HTTP: Generic Host і клас-нащадокBackgroundService. Запускається як консоль, контейнер, служба Windows або systemd.- worker_threads
Модуль Node.js для потоків усередині процесу. У кожного воркера свій ізолят V8, купа й event loop; дані передають через
postMessageабоSharedArrayBuffer. Потрібен для CPU-роботи, а не для вводу-виводу.- Workstation GC
Режим GC з однією купою, у якому збирання йде на потоці, що його викликав. За замовчуванням використовується в консольних і десктопних застосунках.
- WOW64
Підсистема 64-бітної Windows, яка запускає 32-бітні програми. Вона перенаправляє їхні системні виклики, теки й реєстр, але 32-бітний і 64-бітний код в одному процесі не змішуються.
- Write skew (асиметрія запису)
Аномалія знімків: дві транзакції читають ті самі дані, перевіряють умову й змінюють різні рядки, і разом порушують цю умову. SNAPSHOT її не ловить, ловить SERIALIZABLE.
- Write-through (наскрізний запис)
Патерн, за якого запис іде одночасно в кеш і в джерело, і кеш завжди містить останню записану версію. Ціна — повільніший запис.
- WS-Federation
Протокол федеративного входу через браузер: застосунок перенаправляє користувача на STS, той повертає формою POST підписаний токен, зазвичай SAML-assertion. В ASP.NET Core — пакет
Microsoft.AspNetCore.Authentication.WsFederation.- XSS (міжсайтовий скриптинг)
Атака, за якої в сторінку потрапляє чужий JavaScript, наприклад із даних користувача. Скрипт виконується в браузері жертви з правами вашого сайту.
- xUnit.net
Популярний тестовий фреймворк .NET:
[Fact]і[Theory], новий екземпляр класу на кожен тест, спільні ресурси через fixture. Поточна лінійка — v3, пакетxunit.v3.- YAGNI (You Aren't Gonna Need It)
Правило екстремального програмування: не реалізовувати функціональність, доки вона не потрібна. Не забороняє рефакторинг і тести, які спрощують майбутні зміни.
- YARP (Yet Another Reverse Proxy)
Бібліотека Microsoft для побудови зворотного проксі на ASP.NET Core (пакет
Yarp.ReverseProxy). Використовується для шлюзів API і для поетапного перенесення ASP.NET-застосунків на ASP.NET Core.- Zod
Бібліотека схем для TypeScript: перевіряє дані в рантаймі й виводить зі схеми статичний тип через
z.infer. Застосовується на межах — відповіді API, форми, конфігурація.- zone.js
Бібліотека, яка підміняє асинхронні API браузера (
setTimeout,Promise, події, XHR) і повідомляє Angular про завершення задач. Так фреймворк дізнавався, коли запускати перевірку змін; із v21 нові застосунки обходяться без неї.- Zoneless
Режим Angular без zone.js: перевірка змін запускається лише за явними сповіщеннями — сигналами, подіями в шаблоні,
markForCheck(). Стабільний із v20.2, за замовчуванням у нових застосунках із v21.- Zustand
Невелика бібліотека глобального стану для React: стор створюється функцією
createі використовується як хук без провайдера. Компонент підписується селектором і перемальовується лише під час зміни вибраної частини.