Нотатки
-
UGEN, junior-вакансії та поради для першої роботи
Авторська реакція на розбір UGEN: вимоги до початківців, конкуренція та різниця між питаннями на співбесіді й шляхом до неї.
-
Чому Docker запустився, а контейнери gateway — ні
Перезавантаження виявило пропущене встановлення служби systemd. Чому restart: no був навмисним і що виправив у запуску.
-
Навіщо зберігати пароль окремо від списку проксі
Як credential_ref дозволяє передавати запис про проксі між сервісами, не розносячи пароль усім конвеєром.
-
Частка мільйонерів — не особиста ймовірність розбагатіти
Чому кількість заможних людей у країні не визначає шанс конкретної людини накопичити мільйон за життя.
-
Дерево Фенвіка: що робить i & -i
Побітовий розбір i & -i, пошук розміру блоку та приклади функцій суми префікса й оновлення елемента.
-
Дерево Фенвіка: як зберігати й оновлювати суми
Розбір блоків на масиві з восьми чисел: які комірки складають суму префікса та які змінюються під час оновлення.
-
Чому правильний алгоритм не проходить за часом
40 мільярдів операцій проти кількох мільйонів: як обмеження часу й пам’яті змінюють вибір алгоритму.
-
HTTPS CONNECT: чому потрібно явно вказувати порт
Справний зовнішній проксі не проходив validator через відсутній :443. Причина, виправлення та результат перевірки.
-
Код Геммінга: як відновити чотири біти після помилки
Код 7,4 на числовому прикладі: перевірочні біти знаходять пошкоджену позицію, а XOR виправляє її. З поясненням асемблера.
-
Код Хаффмана: як 160 біт перетворилися на 28
Приклад побудови кодів для чотирьох символів, пояснення префіксного правила та підрахунок економії з урахуванням словника.
-
Навіщо потрібна формула Шеннона
Ентропія, стиснення без втрат та колізії контрольних сум: як абстрактна формула почала пояснювати практичні речі.
-
Чому HAProxy замало для змішаного пулу проксі
HTTP, HTTPS і SOCKS потребують різних способів підключення. Навіщо між redsocks і проксі з’явився окремий relay.
-
Як передавати пул проксі через Redis без часткового JSON
Окремі знімки етапів конвеєра та атомарний RENAME: читач отримує повний старий або повний новий список.
-
Навіщо пулу проксі різні ASN і підмережі
Швидкі проксі можуть залежати від одного провайдера. Синтетичний приклад ранжування з урахуванням ASN та підмереж.
-
Як перевіряв, чи проксі не передає мою IP-адресу
Порівняння прямої адреси та запиту через проксі: які заголовки перевіряє validator і навіщо потрібен echo-сервіс.
-
Відкритий порт ще не означає робочий проксі
Навіщо після TCP-з’єднання перевіряти HTTP CONNECT або SOCKS, відповідь echo-сервісу та авторизацію.
-
Різні JSON-джерела проксі та одна внутрішня модель
Чому універсальний збирач JSON обріс би винятками та як окремі адаптери допомогли нормалізувати записи про проксі.
-
Навіщо HAProxy stick-table для прив’язки клієнта
Як зберегти один проксі для послідовних запитів клієнта та чим таблиця стану відрізняється від алгоритму балансування.
-
Що робить redsocks у прозорому проксі
Як redsocks приймає перехоплене TCP-з’єднання та відкриває його через проксі. Приклад ранньої схеми Transparent Gateway.
-
DoH та UDP-to-TCP: два маршрути для DNS
Коли достатньо DNS-over-HTTPS, а коли потрібна відповідь конкретного DNS-сервера. Дві гілки маршруту в Transparent Gateway.
-
Чому proxychains не гарантує проксіювання DNS
Обгортка навколо програми не завжди контролює її DNS. Як це проявилося у WhatWeb і чому переніс контроль на gateway.
-
Як перевірити DNS-витік через tcpdump
HTTP-запит і DNS можуть піти різними маршрутами. Коротка перевірка через tcpdump, яка допомогла помітити витік у WhatWeb.