Перейти до вмісту

Глосарій

Терміни, що трапляються у відповідях. У тексті вони підкреслені пунктиром і відкриваються натисканням.

.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. Такі запити можна кешувати й повторювати без наслідків.

Блок @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)

Архітектурний стиль, у якому система складається з невеликих сервісів. Кожен володіє своїми даними, випускається незалежно й спілкується з іншими через мережу.

Модель пам'яті .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) пам'яті й підходить для розріджених графів.

Спільна база даних (shared database)

Стиль інтеграції, за якого кілька систем читають і пишуть ті самі таблиці. Дані завжди свіжі, але схема стає спільним контрактом, який не можна змінити без усіх учасників.

Спільне використання структури (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. Під час зміни значення перемальовуються всі компоненти, які його читають.

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-level await. У 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>() і викликаються middleware UseExceptionHandler по черзі, доки одна не поверне 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, що виконує код до і після обробника та працює з його результатом як із RxJS Observable. Застосовується для логування, заміру часу, кешу й перетворення відповіді.

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. За замовчуванням бере claim ClaimTypes.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-mode restore бере рівно ці версії або падає, якщо граф змінився.

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 (первинний конструктор)

Параметри конструктора просто в оголошенні типу: class Service(ILogger log). Для class і struct з'явилися в C# 12; параметри видно в усьому тілі типу, але вони не стають властивостями.

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-виклику.

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

П'ять принципів об'єктного проєктування, зібраних Робертом Мартіном: єдина відповідальність, відкритість/закритість, підстановка Лісков, розділення інтерфейсів та інверсія залежностей. Абревіатуру запропонував Майкл Фезерс.

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 і використовується як хук без провайдера. Компонент підписується селектором і перемальовується лише під час зміни вибраної частини.