Двести миллионов лет динозавры удерживали вершину пищевой цепи. Они были совершенны для своего времени, пока резкая смена среды обитания и последовавший за ней пищевой дефицит не поставили точку в их истории. В схожей ситуации оказались и популярные таск-трекеры. Превратившись за два десятилетия из стройных и шустрых помощников в прожорливых Jiraзавров, они стали потреблять неприлично большие объёмы рабочего времени. В новой среде асинхронной и многопоточной разработки сам факт их выживания зависит от того, смогут ли они оставаться востребованными утилитами, или их место займут более совершенные системы, построенные на иной архитектуре.
Читать далееНа старте любого проекта я первым делом собираю один файл. Ещё до лендинга, до первого поста и первой презентации. В нём записано, какими цветами мы говорим, какими шрифтами и чего нельзя ни при каких условиях, — пять-шесть экранов текста в markdown.
Дальше файл работает молча. Нужен лендинг — он в основе, нужна презентация для партнёров — оттуда же, нужно поправить экран в продукте и отдать разработчику — я ссылаюсь на файл вместо «сделай посимпатичнее». Карусель в соцсети? Тот же файл.
Сразу скажу, откуда я на это смотрю. Я маркетолог, не дизайнер и не разработчик. Айдентику мне помогал собирать живой человек, код по этим правилам пишет Claude Code, а моя часть — записать правила и принять результат. Так что теории дизайна дальше не будет. Будет формат документа, который переживает исполнителей и читается нейросетью без напоминаний.
Читать далееКогда ИТ-директор в 2019 году выбирал промышленную систему, у него был короткий путь: открыть отчёт Gartner, Forrester или IDC, посмотреть, кто в правом верхнем углу, и вести переговоры с тремя вендорами, а не с тридцатью. Квадрант не заменял пробное внедрение, но экономил месяцы на составлении длинного списка. В 2022 году западные агентства ушли, а российские продукты в их отчётах и раньше встречались единично.
Потребность никуда не делась. За четыре года её начали закрывать десятки локальных рейтингов: отраслевые, редакционные, вендорские, от СМИ и от ассоциаций. У каждого своя методика, свой набор категорий, свой способ попасть в список. Сравнить два рейтинга между собой нельзя, а понять, почему продукт в одном списке первый, а в другом отсутствует, нельзя тем более. Рынку нужна не ещё одна таблица, а понятный способ считать.
Мы в АНО «Цифровые платформы» в сентябре в тестовом режиме запустили Призму: квадрант российского ПО по каждой из 441 категории каталога, 9842 позиции, пересчёт раз в квартал. Эта статья не отчёт о продукте. Это попытка разобрать задачу «как построить квадрант в условиях, когда ни вендоры, ни заказчики пока не умеют описывать внедрения» и предложить рынку подход, который можно критиковать, дополнять и забирать себе.
Читать далееTLDR; Нельзя просто так взять и запихнуть реальную систему сборки в браузер. Но если обойти некоторые тонкие технические и юридические моменты - вполне можно, что мы показываем наглядно. Статья о том, как это сделано, и немного о том, где можно применить.
Идея запихнуть clang в браузер и собирать приложения не нова: это уже делали в Emscripten как минимум, и ещё пара исследовательских проектов. Проблема в том, как это использовать в практических сценариях: программирование это не про работающий компилятор, это про целую кучу прикладных библиотек, про инфраструктуру
Проблема встаёт в момент, когда человек узнаёт, сколько в реальности нужно собрать, чтобы получить готовый sysroot для, например, QT: объём работы для подготовки сборочной площадки убивает всю выгоду от идеи. Но что если этой работы делать просто… не нужно.
P.S. Да, это Doom в браузере. Опять. А ещё там есть HoMM2. Ссылка на playground в конце статьи, там, в браузере, можно его запустить, и собрать на свой десктоп. И посмотреть другие примеры.
Как мы докатились до этогоВ прошлой статье я рассказывала, как с помощью GPT-6 Astra и Blender сделала 3D-анимацию вращающейся настольной лампы. Многие назвали это стрельбой из пушки по воробьям: для такой задачи мощная модель показалась им избыточной.
На этот раз хочу поговорить о другом способе создавать видео: поручить Opus написание кода, который управляет сценами и анимацией. Сначала покажу три работы других авторов, а затем на примере Remotion объясню, как устроен весь процесс. В конце оставлю подборку готовых промптов для тех, кто захочет попробовать.
Читать далее
Российский рынок справочно-правовых систем (СПС) и LegalTech-сервисов переживает активную трансформацию. Рассмотрим основных игроков рынка СПС и LegalTech-сервисов для анализа судебной и арбитражной практики.
Читать далее
Стив Кауфман - известный канадский популяризатор изучения языков. В различной степени он владеет двадцатью языками. Изучение языков изначально было прикладной целью - они требовались ему для работы и проживания в различных странах, а позже он трансформировал изучение языков в полномасштабный бизнес-проект.
Как он учит языки сейчас?
Читать далееСледуй за белым кроликом.
В «Матрице» герои возвращались в реальный мир через телефон. Мне эта идея понравилась настолько, что собственный VPN я назвал PAYPHONE, а в консольном клиенте сделал зелёный дождь из символов. Правда, прежде чем через него удалось выйти в интернет, пришлось разобраться, почему туннель отправляет пакеты самому себе, таймер не срабатывает, а нажатие Ctrl+C не возвращает сеть. Об этом и будет статья — с устройством протокола, фрагментами кода и ошибками, которые обнаружились уже после первого успешного подключения.
Читать далееКазалось бы, что там может быть интересного — A-запись прописал и забыл. Ан нет: стоило захотеть один сертификат сразу на все тестовые поддомены и переключать тестовую среду между двумя кластерами Kubernetes, да ещё автоматически поднять сертификаты Let’s Encrypt с помощью cert-manager… Выяснилось, что всё просто, да не так просто, как хотелось бы.
Бесплатный DynDNS, скажем, DuckDNS.org, отдаёт записи с TTL в сутки (переключился — а люди ещё долго ходят на старый кластер), а wildcard сертификат Let’s Encrypt выдаёт только через проверку DNS-записи.
Ищем альтернативу и учим cert-manager с ней работать без костылей. В итоге родился маленький открытый проект: cert-manager-webhook-freens — плагин для cert-manager, который умеет получать такие сертификаты через бесплатный DNS-хостинг FreeNS.
Сразу о том, для кого это. Если вы не используете Kubernetes и cert-manager, статья вам будет малополезна, разве что раздел про сравнение бесплатных DNS-хостингов (и он не претендует на полный обзор рынка).
Расскажу, зачем проект понадобился, почему не подошли очевидные варианты, как им пользоваться и что у него внутри.
Читать далееRiver Sortie это шутер в духе River Raid, в который можно сыграть прямо в браузере. Самолёт летит вверх по бесконечной реке, сбивает танкеры, вертолёты и мосты, заправляется над складами. Всё, что в нём движется, это обычные компоненты Flame с хитбоксами Flame, а рисует всё это в 3D flutter3d. Расскажу, как два движка поделили работу, что для этого пришлось добавить в мост flame_flutter3d, и про короткий способ, когда в 2D-игре нужна всего одна трёхмерная модель.
Читать далее«Просто напишите правильный промпт», говорили они
У меня появился проект, которому нужно перекладывать миллионы пакетов со скоростью канала. Для такой задачи я рассматривал C, C++ и Rust. На C я последний раз писал в 2009 году, и обратно не тянет. Слабак, согласен.
Выбрал Rust: современный язык, удобная сборка, большая библиотечная экосистема и обещание безопасности памяти. Когда в описании технологии встречается слово «безопасный», у меня по профессиональной привычке начинает чесаться в кончиках пальцев.
Язык для меня новый, поэтому я хотел разобраться, какие ошибки остаются в программах на Rust и чем их искать. В результате появились учебное приложение, сигнатуры для SAST, собственный исследовательский конвейер rust-in-peace, находки в библиотеках и приложениях, а затем и патч для ядра Linux и выступление на конференции. По дороге выяснилось, сколько убедительных ошибок способны произвести модели, агенты, проверяющие модели и я сам.
На ZeroNights я рассказывал об этом в докладе Rust in Peace: How to Raise Your Own Pet Mythos. Здесь можно позволить себе больше подробностей: откуда взялся каждый механизм, какую проблему он решал и что получилось при проверке в бою.
Читать далееВ прошлой статье я показал cronsense, библиотеку, которая переводит расписание на русском или английском в cron: «по будням в 9:30» → 30 9 * * 1-5. Комментаторы устроили ей хабратестирование и нашли, чего она не умеет: «полвторого», «без пяти шестнадцать», «каждые полчаса», а ещё задачи, для которых cron не подходит вообще.
За несколько дней вышло семь версий. Теперь одна фраза превращается в cron, RRULE для календарей или таймер systemd, а праздники можно называть по имени. Для «последнего рабочего дня месяца» появилась вторая библиотека, prodcalendar: производственный календарь РФ, который сам обновляется в npm. Попутно сверка с rrule.js и systemd-analyze нашла баги, о которых я не знал.
Прочитать до Нового годаИсследователи из NVIDIA, MIT и NTU поручили одному ИИ-агенту улучшать harness другого, кодинг-ассистента на базе открытого Pi. Агент перебрал 152 идеи, и 4 из них сократили расход токенов почти вдвое при той же модели. Счёт за API упал на треть, средний балл на EdgeBench снизился на 6 %. Разбираем, что такое harness, какие приёмы сработали и где у результатов слабые места.
Какие 4 приёма сработалиПосле технического интервью на позицию Go-разработчика я попросил более подробную обратную связь.
Часть выводов в ней плохо стыковалась и с тем, что реально проверяли на собеседовании, и с моим фактическим опытом. Особенно по конкурентности в Go, эксплуатации инфраструктуры и Python/frontend.
Мне стало интересно, как из конкретных эпизодов интервью появляются настолько широкие выводы о кандидате и в какой момент «мы не получили подтверждения» превращается в «у кандидата этого нет».
Разобрать фидбекКогда денег в компании начинает не хватать (такое особенно часто бывает в кризисные времена, когда денег не хватает у всех , рынок падает и палки в песке перестают цвести) обычно бывает два пути. Путь первый (он же путь финансиста): режем все, что не приносит выручку прямо сейчас. Путь второй (он же продуктовый): кризис - время возможностей, надо вкладываться в инновации и быстрее всех выходить в рост, поджимать рынок под себя, пока все сокращают расходы (такой путь встречается гораздо реже, поскольку адептам такого пути обычно нечего ответить на вопрос "Чем вкладываться?) Денег то нет))0)").
Я думаю, что оба неправы. Точнее, каждый прав ровно наполовину, и именно эта половина решает, выйдет ли компания из кризиса сильнее или просто выйдет.
В эпоху ИИ агентов и ботов мне, как человеку, занимащемуся автоматизацией бизнесов, выгодно сказать «автоматизируйте все и вся на последние деньги». Не скажу. В этой статье я попробую рассказать о фильтре, по которому я сам для себя решаю, браться ли за проект в плохие времена.
Читать далееРеклама всегда существует в контексте. Баннер, видео или нативный пост пользователь видит рядом с новостями, роликами, комментариями и другими публикациями. Иногда это почти не влияет на восприятие, но бывает и так, что именно окружение определяет отношение к бренду.
Например, туристическая компания рекламирует отдых на морском курорте, а ее объявление появляется рядом с новостью о разрушительном наводнении в том же регионе. Сама реклама может быть качественной, но выглядит неуместно. У аудитории возникают тревога, раздражение или ощущение, что бренд не замечает происходящее.
В digital-рекламе такие риски принято описывать термином Brand Safety. Он означает контроль над тем, в каком информационном окружении появляется бренд.
В инфлюенс-маркетинге среда меняется. Рекламное сообщение выходит не просто на странице или в рекламном блоке, а в аккаунте конкретного человека. Контекст формируют сам блогер, его контент, подписчики, другие рекламодатели и все, что происходит вокруг его публичного образа.
Читать далееПолгода назад я решил измерить, сколько языковые модели на самом деле знают про вино. Вышел бенчмарк OenoBench: 38 104 факта из открытых источников, 3 266 вопросов с вариантами ответа и прогон шестнадцати моделей. Почти всю работу сделали агенты: код писал Claude Code, вопросы генерировали пять моделей, проверяли их десять агентов аудита. Я был единственным человеком в схеме и отвечал за вино. Счёт за API — около $800.
Внутри: как 17 скраперов из 35 оказались «гарантированным fallback» из памяти модели и как выглядит инвариант, который этого больше не допускает; как факт превращается в вопрос через ячейки «стратегия × домен × генератор»; почему три LLM-судьи из трёх компаний согласились друг с другом и все ошиблись; какой агент так и не прошёл свой порог и почему я перестал верить ему, а не корпусу; как 16 моделей ведут себя на одном лидерборде, разрезанном пополам; и почему самые сложные вопросы любого сгенерированного бенчмарка — в первую очередь самые сломанные. Все числа — из базы, запросы в тексте.
Читать далееАвтомойка для собак за 390 000 ₽: разбираю устройство как систему — что автоматизируется, где остаётся человек, какие нужны аварийные сценарии и какие метрики смотреть на пилоте.
Читать далееДисклеймер сразу: я не собирался писать «ещё один стартап». Мне просто было лень руками пересматривать видео, чтобы выписать из него тезисы. Дальше — история о том, как решение личной проблемы обросло LLM-цепочками, защитой от SSRF и вопросами вроде «а что если сертификат не выпустится».
Сервис называется postvid.ru: ссылка на видео или файл на входе, расшифровка, тезисы, таблица, презентация и карточки для карусели на выходе.
Стек, если коротко
- FastAPI — веб-приложение и API, ничего экзотического.
- faster-whisper, модель small — расшифровка речи. Брал именно small, потому что сервер без GPU, а medium на CPU превращает ожидание в пытку.
- YandexGPT / любой OpenAI-совместимый API — выделение тезисов, с фолбэком на локальную модель через Ollama и на офлайн-алгоритм без нейросети вообще.
- Pillow — генерация карточек карусели.
- openpyxl, python-pptx — таблица и презентация из тех же тезисов.
- SQLite — аккаунты, сессии, подписки, платежи. Да, SQLite, не Postgres — для текущей нагрузки хватает с запасом, а лишнюю инфраструктуру я себе усложнять не стал.
- Docker Compose + Caddy — деплой и автовыпуск TLS-сертификатов сразу для нескольких доменов.
- ЮKassa — оплата и автопродление.
Пайплайн
```
ссылка/файл → проверка SSRF → faster-whisper (текст + таймкоды)
→ LLM (тезисы + цитаты + время) → {xlsx, pptx, PNG-карусель, srt}
```
Задача обрабатывается в пуле потоков, статус лежит в памяти процесса и отдаётся polling'ом через /api/jobs/{id}. На бумаге — просто. На практике каждый пункт этой схемы принёс свой сюрприз, и вот четыре самых запоминающихся.
Грабли №1: облако решило отдохнуть, а сервис — вместе с ним
Первая версия дёргала облачную LLM напрямую, без всякой защиты. Всё было отлично, пока однажды ночью модель не легла на пару минут. Для меня это была строчка в логе. Для пользователей в этот момент — «сервис сломан, ничего не работает». Неприятное ощущение, когда узнаёшь об этом постфактум.
Сделал цепочку:
1. Облачная модель.
2. Если недоступна — локальная модель через Ollama на том же сервере.
3. Если и её нет — офлайн-алгоритм: рубит текст на предложения и выбирает самые «весомые» по простым эвристикам.
Плюс кулдаун: если облако упало, следующая минута задач сразу идёт в запасной вариант, не тратя время на повторный обречённый запрос. На странице результата честно пишется, какой движок сработал — cloud, local или offline. Мне кажется, это важнее любой красивой анимации загрузки: пользователь должен понимать, почему результат вдруг стал немного хуже.
Грабли №2: «просто вставь ссылку» — ха
Казалось бы, что сложного в том, чтобы скачать видео по ссылке. Сложного оказалось много: нужно отсечь запросы во внутреннюю сеть сервера (привет, SSRF), проверить, что схема — именно http(s), и не пускать всё подряд.
```python
def validate_public_url(url: str, allowed_hosts: set[str] | None = None) -> None:
parsed = urlparse(url.strip())
if parsed.scheme not in ("http", "https"):
raise SourceRejected("Разрешены только http(s) ссылки")
# резолвинг хоста, отказ на приватные/
Читать далееЭта типология родилась не в кабинете, а в ходе работы над DTaaS и более чем 50 разговоров с лидерами цифровой трансформации. Одни уверены, что справятся без «цифры», другие создают витрину из пары дежурных кейсов, третьи превращают трансформацию в продолжение автоматизации. Четвёртые действительно меняют бизнес-модель. А пятый лидер, возможно, уже не человек. Пять узнаваемых управленческих образов — и один неприятный вопрос, который стоит задать себе.
Узнать свой тип