Webrium
Подписаться
Материалы/Разбор

Разбор

Как устроено и почему ломается именно так.

Вложенность: токены преобразуются в векторы, из которых формируется общий вектор текстаВектор текста
AI/ML10 минут

Что такое эмбеддинг: как текст становится вектором

Как эмбеддинги превращают текст в векторы и почему косинусное сходство не решает за вас

Схема стыка: совпадение гарантий TCP и разрыв данных UDPНадёжность TCPПотери UDP
Платформа8 минут

Чем TCP отличается от UDP и что из этого следует

TCP обеспечивает надёжную передачу данных с подтверждениями, а UDP отправляет пакеты без гарантий доставки и порядка

Визуализация точного и неточного сложения дробных чисел в двоичной системеТочное сложениеОшибка округления
Backend8 минут

Почему 0.1 + 0.2 не равно 0.3 и как считать деньги

Как работают дробные числа в программировании и почему точные расчёты требуют особого подхода

Цепочка генерации нейросети: от одного запроса к разным ответам через последовательный выбор токеновИсходный запросУникальный ответ
AI/ML10 минут

Почему нейросеть отвечает по-разному на один вопрос

Почему нейросеть даёт разные ответы на одинаковый вопрос и как сделать их стабильнее

Текст разделяется на токены перед обработкой нейросетьюТекстТокены
AI/ML12 минут

Токены в нейросети: в чём модель считает текст

Токены — это не слова или символы, а элементы словаря модели, от которых зависят пределы контекста и стоимость запроса

Вложенные уровни телеметрии: метрики охватывают логи, внутри которых детализированы трейсыТрейс в логе
Платформа8 минут

Логи, метрики и трейсы: что отвечает на какой вопрос

Чем отличаются логи, метрики и трейсы и какой инструмент когда использовать

Разделение передачи данных: слева открытый HTTP, справа защищённый HTTPSHTTP без шифрованияHTTPS с TLS-защитой
Безопасность8 минут

Чем HTTPS отличается от HTTP и что он защищает

HTTPS шифрует данные между браузером и сайтом, защищая от перехвата и подмены

Фильтр отбрасывает строки с NULL, оставляя только подходящие записиСтроки с даннымиNULL исчез
Данные8 минут

NULL в SQL: почему условие возвращает не все строки

Как избежать потери данных при фильтрации и сравнениях из-за особенностей обработки NULL в SQL

Превышение лимита памяти вызывает убийство процессаЛимит памятиУбит сигналом
Платформа9 минут

Контейнер убили по памяти, а куча чистая

Как найти настоящую причину убийства контейнера по памяти, если куча чистая, а метрики врут

Две части системы доступа: проверка личности и проверка прав, разделённые границейАутентификацияАвторизация
Безопасность9 минут

Аутентификация и авторизация: где проходит граница

Как работают проверка личности и прав доступа и почему системы возвращают разные ошибки

Сравнение подписи вебхука: совпадение подтверждает подлинность, несовпадение — подделкуПодпись совпалаПодпись неверна
Безопасность12 минут

Подпись вебхука: как понять, что вызов настоящий

Как правильно проверять подписи вебхуков и почему секретный URL не защищает от атак

Процесс CI/CD: от коммита до автовыкатки с возможностью ручного шагаРучной шагАвтовыкатка
Инструменты9 минут

CI/CD: что происходит между коммитом и выкаткой

Как работают CI/CD на практике, почему это не инструменты, а процессы, и как строить надёжные конвейеры

Вложенные очереди задач: стек вызовов внутри цикла событий, микроочереди и макроочереди с выделенной текущей задачейЦикл событий
Frontend13 минут

Цикл событий в JavaScript простыми словами

Как избежать ошибок при работе с асинхронным кодом и оптимизировать выполнение задач в JavaScript

Цепочка DNS-запроса от браузера до сервера через резолвер, корневые и TLD-серверыЗапрос браузераСервер сайта
Платформа8 минут

Домен не открывается: как проверить DNS по шагам

Как настроить DNS-записи и избежать ошибок при смене серверов или домена

REST возвращает полный объект, GraphQL — только запрошенные поляREST: весь объектGraphQL: выборочно
Backend7 минут

GraphQL или REST: что выбрать для своего API

Чем отличаются подходы REST и GraphQL и какие компромиссы ждут при выборе каждого из них

Схема разделения таблицы: слева дублирующиеся данные, справа нормализованные с единым источником обновленияДублирование данныхЕдиный источник
Данные10 минут

Нормализация: до какой степени и когда отступать

Как избежать дублирования данных и упростить обновление информации в базе с помощью нормализации

Три показателя нагрузки: два в норме, один зашкаливает из-за N+1 запросовN+1 запрос
Данные8 минут

ORM или запросы руками: где проходит граница

Как избежать типичных ошибок ORM и когда лучше отказаться от неё в пользу SQL

Разделённое поле: ваш сайт и чужой сайт, запросы пересекают границу между нимиВаш сайтЧужой сайт
Безопасность11 минут

CSRF: как чужой сайт действует от вашего имени

Как распознать уязвимость и защитить свой сайт от атак через браузер пользователя

Граница между данными и кодом, которую пересекает вредоносный скриптДанныеКод
Безопасность9 минут

XSS: как чужой скрипт оказывается на вашей странице

Как правильно защищать приложения от XSS-уязвимостей в разных контекстах и почему фильтрация не решает проблему

Три индикатора: два в норме, один зашкаливает без оповещенияЗадача молчит
Платформа8 минут

Задачи по расписанию тихо перестают выполняться

Как обеспечить надёжность задач по расписанию и избежать тихих сбоев в работе

Три показателя: скорость и кеш в норме, актуальность данных зашкаливаетАктуальность
Данные11 минут

Инвалидация кеша: почему это трудно и что делать

Как выбрать стратегию инвалидации кеша и избежать типичных ошибок при балансе скорости и актуальности данных

Поле выбора между скоростью и корректностью транзакций, разделённое границейСкоростьКорректность
Данные11 минут

Уровни изоляции: что выбрать и чем за это платят

Как уровни изоляции транзакций защищают данные и почему выбор между скоростью и корректностью критичен для приложений

Поле разделено на факты и выдумки, элементы пересекают границу между нимиФактыВыдумки
AI/ML9 минут

Почему модель выдумывает и что с этим делать

Как распознать и снизить риск выдуманных ответов нейросети при работе с фактами

Стык данных и кода в SQL-запросеВвод как данныеВвод как код
Безопасность17 минут

SQL-инъекция: как она работает и чем закрывается

Как защитить приложения от SQL-инъекций и почему классические методы не работают

Разделение ответственности за структуру данных между кодом приложения и базой данныхСхема в кодеСхема в базе
Данные10 минут

Postgres или документная база: как выбрать и не переехать дважды

Как выбрать между гибкостью схемы в коде и надёжностью реляционной модели для ваших данных

Вложенные блоки: внешний — бизнес-процессы, средний — поддомены, внутренний — код, отражающий логикуБизнес-логика в коде
Backend9 минут

Domain-driven design: что он даёт инженеру и что — руководителю

Как писать код, который проще поддерживать и адаптировать под изменения бизнеса

Метрика превышает допустимый порог и запускает оповещение о проблемеПорог тревогиЗадержка/ошибки
Платформа7 минут

С каких метрик начинать: четыре сигнала и их пределы

Как использовать четыре ключевые метрики для быстрого обнаружения проблем в работе сервисов до жалоб пользователей

Из шести проектов с dev-ветками только один использует stageПроекты с dev/stageИспользуют stage
AI/ML9 минут

dev и stage в большой команде: что показывает замер

Как крупные команды выбирают схемы ветвления и почему классические подходы часто не справляются

Схема стыка JWT: проверенная подпись и проблема отзыва токенаПодпись проверенаОтзыв невозможен
Безопасность7 минут

JWT: что это на самом деле и где он не подходит

Как реализовать мгновенный отзыв JWT без потери производительности и безопасности в распределённых системах

Схема стыка веток: совпадение и расхождение dev, stage и masterСовпадаютРасходятся
Инструменты8 минут

Когда dev, stage и master разошлись: как выкатывать фичи

Как выбрать между ветками и фичами, чтобы избежать конфликтов и упростить релизы

Схема совпадения заголовков CORS: разрешённый и заблокированный запросЗапрос разрешёнЗапрос заблокирован
Frontend9 минут

CORS: почему браузер блокирует запрос и что менять на сервере

Как браузер проверяет безопасность запросов и почему сервер должен правильно настраивать CORS

Фильтрация логов: из множества событий выделяется критичный сигнал для анализа сбоевВсе событияКритичный сигнал
Платформа7 минут

Уровни логирования: что писать, а что выключить

Как правильно выбирать уровни логирования и что писать в логах, чтобы быстро находить причины сбоев

Описание инструментов как контракт: стык сходится или расходитсясходитсяразошлось
AI/ML7 минут

Протокол вместо фреймворка: что изменилось в сборке агентов

Где проходит граница между вашим кодом и чужими системами и что протокол не решает

Контракт существует, только если записан отдельно от кода обеих сторонполе вне схемы
Данные6 минут

JSON как контракт: где он подводит

Формат, который читается без описания, обычно и передают без описания. Что записать отдельно от кода, чтобы обмен пережил расхождение версий.

Одна строка слева даёт столько строк результата, сколько нашлось пар справастрок на входе
Данные6 минут

Соединения таблиц: почему строк больше, чем ожидали

Число строк результата определяется кратностью связи, а не таблицами. Одна проверка до запроса ловит почти все завышенные суммы в отчётах.

Вычисление переезжает внутрь процессав процессе
Данные6 минут

Слой трансформаций: движок в процессе против конвейера

Почему вычисление переезжает внутрь процесса и где эта схема ломается

Прокси как граница: часть данных пересекает её и теряетсяснаруживнутри
Платформа6 минут

Обратный прокси: что он решает и что ломает

Что он действительно снимает с приложения и что ломает молча

Независимые ожидания, запущенные вместе, занимают время самого медленногоожидания вместе
Backend6 минут

Асинхронность: что она ускоряет, а что нет

Асинхронность не ускоряет вычисления — она позволяет не простаивать в ожидании. Как понять, поможет ли она, до того как переписывать код.

Реестры пакетов: одно растёт, соседнее в той же нише сдуваетсярастётсдувается
Инструменты7 минут

Что растёт и что сдувается в экосистемах

Наш замер реестров: что команды сейчас кладут в сборки, а что перестали

Часть заданных вопросов остаётся без единого ответабез ответа
Инструменты6 минут

Где чаще всего остаются без ответа

Наш замер: без ответа остаётся то, что нельзя воспроизвести у себя

Две угрозы по разные стороны: одна закрывается хранилищем, другая — серверомчужой скриптчужой сайт
Безопасность6 минут

Токен в браузере: где его хранить

Вопрос о месте хранения решается моделью угрозы, а не удобством. Две популярные ответа защищают от разных вещей, и одно хранилище не даёт обоих свойств.

Конфликт — это пересечение двух намерений, а не поломка кодаслилось самоконфликт
Инструменты6 минут

Конфликт слияния: почему он ваш и что с ним делать

Конфликт означает не «код сломан», а «два намерения пересеклись». Почему выбор стороны — это потеря, и как разрешать, ничего не теряя.

Состояние бывает четырёх видов, и библиотека нужна только одному из нихвиды состояниянужна библиотека
Frontend6 минут

Состояние в React: когда нужна библиотека, а когда нет

Состояние бывает четырёх видов, и библиотека нужна только для одного. Как понять, для какого именно, и когда решение вообще пора принимать.

За порогом срока жизни системы цена содержания перевешивает скорость первой версиисрок жизницена содержания
Backend6 минут

Java никуда не делась: где она осталась и почему

Решение о языке принимает не мода, а тот, кто платит за содержание системы десять лет. Что стоит считать, прежде чем спорить о синтаксисе.

Из трёх причин медленной работы за шкалу выходит ожидание, а не вычислениеожидание
Backend6 минут

Python тормозит: что действительно ускоряет

Под «медленно» прячутся три разные ситуации, и лечатся они по-разному. Как понять, в какой вы, прежде чем переписывать код на другом языке.

Между массовыми темами и новыми инструментами разрыв по числу публичных ответов в четыре порядкамассовые темыдлинный хвост
Инструменты6 минут

Новые инструменты живут без вопросов

У инструмента, о котором все говорят, может не быть ни одного публичного ответа о себе. Разрыв между массовыми и новыми темами — в четыре порядка.

Поток публичных вопросов держался ровно, а затем пробил порог вниз и не восстановилсяпоток вопросовпо годам
Инструменты6 минут

Куда делись вопросы разработчиков

Публичный архив ответов по программированию перестал пополняться: по пяти крупнейшим темам поток вопросов упал в двадцать раз. Что это меняет в оценке задач.

Два стыка: CSS встроен в конвейер рендеринга и совпадает с кадром, JS-наблюдатель стоит снаружи и разошёлся — опаздывает на кадрCSS в конвейереJS опаздывает
Frontend9 минут

Что современный CSS убрал из вашего JS

Почему JavaScript-наблюдатели за внешним видом опаздывают на кадр, какие механизмы CSS решают эти задачи внутри конвейера рендеринга и где скрипты остаются обязательными

Вложенные слои: снаружи отказ модели выглядит как один — «отвечает неверно», — но в глубине скрыты два разных отказа: у модели нет знания или она не воспользоваДва разных отказа
AI/ML8 минут

Дообучение или поиск по документам: как выбрать

Почему дообучение и поиск по документам лечат разные отказы, и как понять, какой именно мешает вашей модели

Цепочка из пяти шагов агентного цикла; последний шаг, внутри которого тянется ожидание, пересекает пунктирную границу бюджета времени — лимит шагов времени не обюджет временишаг с ожиданием
AI/ML9 минут

Бюджет времени в многошаговом агенте

Почему лимит шагов и таймаут страхуют агентный цикл от разных отказов и как выбирать бюджеты, которые ограничивают именно то, что вы думаете

Шесть растущих столбцов: при том же коде контекст запроса агента увеличивается с каждым шагом истории, в продакшене уходя далеко за уровень показаКонтекст растёт
AI/ML8 минут

Агенты в продакшене: что отказывает на второй неделе

Сбои многошаговых агентов почти никогда не начинаются с модели. Они выводятся из арифметики шагов — и поэтому предсказуемы до запуска.

Вложенные слои лейкхауса: дешёвое объектное хранилище, внутри него открытые файлы, а в глубине выделена таблица с транзакциями — складские гарантии без второй кТаблица из файлов
Данные8 минут

Lakehouse без хайпа: что реально поменялось

Разбираем, чем плоха связка озера и склада, почему внешние таблицы не спасают, как лейкхаус даёт транзакции поверх открытых файлов и во что это обходится

Поле, разделённое швом: слева данные как есть, справа — как их ожидают; элементы пересекают границу, показывая расхождение между реальной схемой и ожиданиямиданные как естькак их ожидают
Данные9 минут

Схема поехала: пять способов узнать об этом первым

Почему дрейф схемы первым замечает потребитель, почему процессные договорённости и красные джобы его пропускают и как устроены пять автоматических проверок на пути данных

Поле разделено швом «use client»: элементы-пропсы пересекают границу между сервером и клиентом и становятся сетевым контрактомсерверклиент
Frontend8 минут

Серверные компоненты: год в продакшене

Вы узнаете, как серверные компоненты пересылают дерево по проводам, почему проп через границу становится частью сетевого контракта и какие поломки модели предсказуемы заранее

Шесть ровных по высоте столбцов — скорость WebAssembly — идут выше пунктирной линии плана с самого первого столбца: коду не нужен разогревСкорость со старта
Frontend10 минут

WebAssembly: где он уже окупается

Откуда у WebAssembly берётся скорость, какой ценой она достаётся и почему переписать самую тяжёлую функцию — не решение, а тупик

Стык инструкции с реальностью: у golden path шаги и система совпадают, у документации текст разошёлся с жизньюшаги зашиты в кодтекст разошёлся
Платформа8 минут

Golden path вместо документации

Почему документация гниёт, почему её нельзя спасти процессами и ревью, и как golden path делает стандартные операции исполняемыми

Фильтр выбора: из нескольких языков для микросервисов проходит один — Go, ставший дефолтом платформыЯзыки для сервисовGo — дефолт
Backend9 минут

Почему Go стал платформенным дефолтом

Почему горутины, планировщик и статическая линковка делают Go дефолтом для микросервисных платформ — и где те же свойства начинают вредить

Сетка сервисов: закрашены лишь три ячейки — случаи, где Rust окупается; рядом счётчик сэкономленных машинЭкономия машин
Backend6 минут

Rust в сервисах: где окупается, а где нет

Спор давно идёт не о скорости. Решающими оказываются два фактора, и ни один из них не технический.

Шесть столбцов растут ступеньками от первой попытки к шестой: каждая повторная попытка оплачивается полностью, и счёт за один и тот же вызов вырастает кратноПлатим за попытки
AI/ML9 минут

Повторы, которые удваивают счёт

Разбираемся, почему счёт за API языковых моделей растёт при неизменном продукте, как повторные попытки превращаются в умножение затрат и что чинить на самом деле

Поле, разделённое швом: элементы OpenTelemetry пересекают границу между тем, что уже стало стандартом, и тем, что остаётся удобным клеемСтало стандартомУдобный клей
Платформа9 минут

OpenTelemetry: что стало стандартом, а что ещё нет

Разберёмся, какие слои OpenTelemetry действительно стали стандартами, а какие остаются удобным клеем, и почему граница проходит именно между ними

Сетка из пятнадцати ячеек изображает ленту лога: девять заняты событиями, а рядом отдельный счётчик показывает лишь четыре причины решений — лента отвечает «гдепричины решений
Платформа9 минут

Трассировка шагов вместо логов

Как заменить ленту логов на дерево шагов, чтобы видеть не только где упало, но и почему агент решил именно так

Цепочка шагов конвейера CI: чужой код входит, исполняется с ключами, и последний шаг — публикация — штатно выводит секрет за границу доверияграница довериясекрет наружу
Безопасность9 минут

Секреты в CI: пять типовых утечек

Разберём, почему хранение секретов в хранилище и маскирование логов не спасают от утечки, и покажем пять мест, где конвейер CI теряет ключи

Письмо по вторникам

Один разбор недели и короткий список того, что изменилось. Без дайджестов на сорок ссылок.

Начните вводить — материалы появятся здесь.

↑↓ выбрать · Enter открыть · Esc закрыть