Как математики спасли гномов от дракона: история одной задачи с шапками

Как математики (почти) спасли гномов от дракона
История одной задачи с шапками, в которой я решил пойти по максимуму.

Как математики (почти) спасли гномов от дракона
История одной задачи с шапками, в которой я решил пойти по максимуму.

Хотите FastAPI-микросервисы, но нужна внутренняя админка? Выход есть, и он дешевый! Разбираю архитектуру на примере LMS-системы с PostgreSQL-схемами, Alembic-миграциями и аккуратным разделением зон ответственности по данным между сервисами.

Цветочный ритейл сильно отличается от большинства других видов торговли. Основной товар здесь — скоропортящийся, поставки происходят часто, а спрос может резко меняться буквально за несколько дней до праздников. Магазин может спокойно работать неделю, а затем за два дня перед 8 Марта через склад проходит объем, сравнимый с обычным месячным оборотом.
Из‑за этого владельцы цветочных магазинов регулярно сталкиваются с одними и теми же операционными проблемами:
Когда мы говорим файловая система, обычно представляем что-то очень сложное: ext4, btrfs, десятки тысяч строк кода в ядре, журналирование, кеши, оптимизации. Но если убрать все оптимизации, минимальная файловая система оказывается удивительно простой. В этой статье я попробовал сделать эксперимент: написать минимальную файловую систему для Linux, которую можно смонтировать и использовать как обычную. Без написания кода ядра, без драйверов.Только пользовательский код и FUSE. В итоге получилась работающая файловая система примерно на 200 строках Python, которая умеет:

Расскажу как написать типобезопасный и масштабируемый сетевой слой на Swift с использованием async/await.
В этой части про GET запросы, модели, обработку ответа и базовую архитектуру. В следующей углубимся и создадим полноценную систему со всеми нужными плюшками по типу различных окружений и обработки ошибок

Представьте ситуацию: вам прислали контракт или учебный материал в PDF. Нужно быстро поставить подпись, обвести важный абзац или добавить пару комментариев. Идти в Adobe Acrobat долго, а загружать документ на сомнительные онлайн-сервисы небезопасно.
Я столкнулся с этой проблемой и решил сделать свой инструмент. Так появился проект Annotate PDF.
Это простая «рисовалка» поверх документов, которая работает полностью в браузере.

На первом курсе университета я столкнулся с классической проблемой студента — необходимостью зубрить. В моем случае это были история и английский язык. Нужно было выучить около сотни исторических дат и 250 английских слов.
Обычно для таких вещей все советуют Anki. Но чтобы им пользоваться, нужно скачать приложение, потом как-то вытащить данные, отформатировать их в нужный формат таблицы (CSV и т.д.) или использовать сторонние чат-боты. Более того, у меня почему-то не работала синхронизация с мобильным приложением.
В итоге терпение лопнуло, и так появилась идея Mnemocards. Мой подход: не нужно нигде регистрироваться, не нужно ничего скачивать. Открыл бота — и учишь.

Пишем E2E-тесты на Playwright для формы логина — без живого бэкенда. Вместо встроенного page.route() используем внешний мок-сервер: настраиваем один эндпоинт с пятью сценариями (успех, неверный пароль, таймаут, 500, 429), матчинг по телу запроса и заголовкам. В итоге — тесты не зависят от состояния бэкенда, граничные кейсы воспроизводятся стабильно, а история запросов доступна в логах.
В Python большинство курсов годами фокусируются на синтаксисе: типах данных, циклах и бесконечных манипуляциях со списками. В итоге человек выходит из обучения с багажом знаний о том, «как написать цикл», но без малейшего понимания, «как построить проект».
Когда же дело доходит до ООП, новичок часто пишет код вот так:

В данной статье представлена краткая шпаргалка по массивам. Рассматривается устройство массивов в памяти, принципы адресации элементов и алгоритмическая сложность основных операций. Материал может использоваться для подготовки к техническим собеседованиям.
Массив — это структура данных, представляющая собой упорядоченный набор элементов одного типа, расположенных в непрерывной области памяти.
Каждый элемент массива имеет индекс — порядковый номер. В большинстве языков программирования индексация начинается с 0.
Массив в информатике — это тип данных, в котором хранится упорядоченный набор однотипных элементов.
Можно выделить одномерные и многомерные массивы.
Одномерные — это просто ряд пронумерованных значений.
Многомерные — матрица: каждое из значений массива само является массивом. Соответственно, доступ к элементу возможен по двум индексам — строки и столбца
Ассоциативные массивы — особый подвид структуры данных, в котором индексы не обязательно являются упорядоченными целыми числами. Это набор данных в формате «ключ — значение», где ключ — аналог индекса, а значение — аналог элемента.

Думаю все, кто начинал использовать claude code, рано или поздно ощущали на себе его недостатки. Не удобно навигироваться по чекпоинтам, не удобно смотреть, какие были внесены изменения, не удобно использовать через CLI. А что если решение есть? Я начал об этом задумываться после того, как настроил свой openclaw, он же используем мою обычную подписку на Claude, почему я не могу использовать ее сам. Тут у многих возникнет вопрос касательно безопасности, кто-то слышал что антропики против подобного использования подписки, но я исхожу из фактов. Я не слышу, чтобы всех повсеместно начали банить за это. Да и в целом если так задуматься, когда мы подключаем наш аккаунт Claude через OAuth к Claude Code, наша цель - написание кода. Так в чем проблема, если мы немного обхитрим систему и внедрим все прямо в Cursor IDE.
Я долго искал нормальное решение и уже думал сам вайбкодить что-то, но в итоге наткнулся на прекрасный инструмент 9Router. Разработчик не я, так что сразу скажу, что ответственности за его использование и в целом всю описанную схему, я на себя не беру. Я просто обозреваю возможность.
Так вот, что такое в целом 9Router. Это некий хаб, куда можно подключить десятками провайдеров нейросетей и использовать все через нужный тебе endpoint.

Transactional Outbox паттерн используется для надежной публикации событий, когда нужно одновременно сохранить изменения в БД и отправить сообщение в брокер.
В распределенных системах нельзя объединить в транзацию сохранение данных в БД и отправку события в брокер сообщений, т.к. это 2 разных системы не объединенные общей системой транзакционности. И правило атомарности для двух операций вместе не действует.
Для решения этой проблемы нам приходит на помощь Transactional Outbox паттерн.

Ты открыл ИП, уехал за границу и честно хочешь заплатить налоги. У тебя есть Госуслуги, доступ в ЛК ФНС и даже «Госключ». Казалось бы, нажми кнопку и спи спокойно. Но система говорит: «Нет». В этой статье я расскажу, почему удаленная сдача декларации из‑за рубежа превратилась в квест с просроченными подписями, неработающими плагинами и борьбой с IP‑фильтрами. Сэкономил вам десятки часов гугления и нервных клеток — рассказываю, что точно НЕ сработает и какие реальные варианты остались.

В этой статье я поделюсь опытом проектирования идентификаторов для крупной медицинской системы. Мы пройдем путь от простых автоинкрементов до UUID, ULID и в итоге создадим гибридное решение, которое оказалось лучше всех существующих подходов. Спойлер: идеальный ID — это не технология, а архитектура.
Такой загадкой многие донимали своих одноклассников. И если кто-то отвечал «железо», над ним ржал весь класс.
Но никто не ставил такой эксперимент. Все только ржут. А мы в ТОПЛЕС решили провести его! Видео есть на нашем канале, а тут расскажем еще больше нюансов о том, как проходил этот эксперимент и как мы несколько раз облажались с ним.
Для этого эксперимента мы построили большие плечевые весы. Две крупные чаши висят на цепочках на общей балке, а посередине — подшипник, чтобы весы свободно качались.

Многие разработчики, переходящие с Linux на Windows, сталкиваются с одной и той же болью: отсутствием адекватного нативного мультиплексора терминалов. Да, есть WSL, есть вкладки в Windows Terminal, но это не заменяет классический опыт. Настоящий tmux — это когда ты можешь отцепиться (detach) от сессии, закрыть терминал, а потом вернуться и продолжить работу ровно с того же места.
Я решил, что хватит это терпеть, и реализовал tmux-win — нативный порт tmux для Windows, написанный на C с использованием Win32 API без тяжелых слоев совместимости вроде Cygwin или MSYS2.

Заявки с форм на сайте удобно сразу получать в CRM. Если у вас WordPress и Битрикс24, интеграцию можно сделать без своего сервера: Битрикс24 даёт входящий вебхук — URL, по которому можно вызывать методы REST API (создание лида, сделки, контакта). В статье разберём, как это устроено и как подключить формы WordPress к такому вебхуку: сначала в общих чертах, потом — пошагово через готовое решение.
Что понадобится
Я думаю, что многие использовали движок ReplacingMergeTree в ClickHouse, но при этом сталкивались с проблемой наличия нескольких версий документов, т.к. старые версии ClickHouse не удаляет моментально.
В этой статье я хочу поделиться практическими механизмами, которые я использовал в работе для «борьбы со старыми версиями документов».

Я устал вручную пересчитывать СО, СОР и СОЧ в обычном калькуляторе и сделал небольшой PWA-калькулятор оценок. В процессе проект превратился в эксперимент с офлайн-режимом, Service Worker и простым ML-анализом прямо в браузере.

Краткая суть: Мгновенный перевод в наушниках представляет собой последовательность технологий распознавания речи, машинного перевода и синтеза голоса. Система работает в условиях строгих ограничений по скорости обработки и потреблению энергии.
Ситуация: аэропорт Токио, требуется найти выход на посадку. Наушник включен, вопрос задан по-русски, ответ получен на японском языке. Либо собеседник говорит на неизвестном языке, а в наушнике звучит перевод.
На Хабре много материалов про нейросети и обработку естественного языка. Однако архитектура системы перевода в носимых устройствах рассматривается редко. Статья посвящена техническим аспектам работы таких систем, причинам задержек и инженерным решениям.