Normal view

MRP — отличный инструмент. Просто он не для этого

Вы нажимаете в ERP кнопку «Рассчитать план», получаете плановые заказы с датами и резонно предполагаете, что система только что построила производственный план. Она его не строила. Она рассчитала, что нужно закупить и изготовить под план, который кто‑то дал ей на вход. Разбираю двенадцать характеристик производства, при которых MRP перестаёт справляться, и объясняю, откуда на самом деле должен браться производственный план.

Читать далее

Мой сайт грузился две секунды, потому что каждый CSS-файл писал в базу данных

Сайт не сломан. Он открывается. В логах чисто, ошибок нет — просто ты кликаешь по вкладке и успеваешь заметить, что кликнул.

Я померил: страница кабинета грузилась 2,1 секунды. При этом сервер отдавал HTML за 30 миллисекунд. Первый час я искал не там — потому что померил не ту страницу.

Всё решил один замер. Я дёрнул один и тот же CSS-файл десять раз с кукой сессии и десять раз без неё: 55 мс против 14 мс. За файл с диска. Оказалось, аутентификация делала SELECT, UPDATE и COMMIT в SQLite на каждую картинку и каждый скрипт — сорок раз за страницу, чтобы сорок раз переписать один и тот же таймстамп.

Вторым тормозом был Tailwind, который компилировал стили в браузере у каждого посетителя. Стало 0,9 секунды.

А потом я сел делать скриншоты для этой статьи и за двадцать минут нашёл ещё два бага, которые спокойно жили в проде. И чуть не уронил чат, исправляя найденное.

Код открыт

Смотреть, как я это нашёл

Как найти настоящую (его) гуся или задачу в уже работающем продукте: разбор EVRTCK после возвращения в EvertyDesk

Меня зовут Артур Валиев (Поможет в трудоустройстве). Я Rust-разработчик. Который пишет про врачей, любовь, смерть и кодеки.

Некоторое время назад я отошёл от EvertyDesk, но недавно команда снова позвала меня помочь с несколькими техническими проблемами. (Я обожаю когда меня зовут) разумеется не за просто так.

И вот здесь начинается вещь, которая мне кажется куда "интереснее" самого факта возвращения.

Когда продукт уже большой и давно живёт своей жизнью, задача редко приходит к тебе в чистом виде.

Никто не говорит:

Читать далее

Как фундаментальная математика помогает переосмыслить градиентный спуск

Градиентный спуск — стандартный инструмент обучения нейросетей. Но с точки зрения линейной алгебры операция обновления весов выглядит некорректно: мы складываем вектор и ковектор. Авторы статьи из MIT CSAIL предлагают формальное решение этой проблемы через теорию двойственности и модулей. Разбираем их подход.

Читать далее
❌