Пользователь загрузил ролик на 37 мегабайт и получил ответ: «Не удалось определить длительность видео». Ролик был обычный, открывался в любом плеере, ffprobe показывал 18 секунд. В логах ошибок при этом не было вообще. Под катом разбор того, как устроена длительность в MP4, почему в заголовке файла она бывает нулевой и как достать её тремя HTTP‑запросами без ffmpeg.Зачем мерить длительность на сервереЯ делаю Aigena, сервис, где нейросети генерируют и правят видео. Обработка там стоит денег за к…
Каждый лишний рендер — удар по перформансу. В React с его культом иммутабельности (который тянется с 2013 года) эта проблема знакома каждому, кто пристально наблюдал за тем как ведут себя перф и метрики.ТеорияПуть от костылей к микрозадачамПод капотом React при каждом изменении стейта строит свежий Virtual DOM для компонента и всех его “детей”, а потом запускает диффинг со старым деревом. Процесс не бесплатный — готовьтесь греть CPU и забивать Main Thread пользователя.До 18-й версии батчинг нат…
Привет, Хабр! В первой статье я разбирал внутреннее устройство real-time-конвейера на C++20: почему медленный YOLO не должен останавливать RTSP и зачем между этапами нужны ограниченные слоты последнего значения. Теперь посмотрим на ту же систему с другой стороны — глазами пользователя, который подключает камеру и должен получить не просто видео с рамками, а управляемый и проверяемый результат.Я покажу практический порядок настройки своей платформы видеоаналитики через браузерный JavaScript View…
Многим конструкторам приходится ковыряться с сеткой конечных элементов в SCAD++ именно внутри программы. Очень много удобных функций там есть, но очень бы хотелось иметь кнопочку, нажав на которую программа бы построила стену (КЭ оболочки) по аналогу. То есть уже по нарисованной стене рядом.Обычно без кнопочки это происходит следующим образом:Измеряются высоты конечных элементов с аналога (выписываются)Выделяются узлы плиты, где должна быть новая стена.Узлы копируются на выписанные расстояния.С…
Переписка с близким человеком — одна из самых личных вещей на телефоне. А я делаю сервис, которому нужно её прочитать. Из файла экспорта получаются карточки: кто чаще пишет первым, как быстро отвечает, в какие часы вы на связи, какие словечки появились у пары и кто из вас их придумал. Просьба «загрузите переписку к нам на сервер» убила бы такой проект в день запуска, и правильно.Поэтому у «Чатограммы» одно жёсткое правило: всё считается в браузере, и по умолчанию сервер не видит ни одного сообщ…
Меня достала реклама в торрент-клиентах. Я открываю такую программу с довольно скромным намерением: скачать файл, посмотреть скорость и свернуть окно. Предложение купить что-нибудь ещё в этот сценарий у меня не помещается.В какой-то момент захотелось сделать клиент под себя. С приятным интерфейсом, выбором файлов перед загрузкой и нормальным поведением в фоне. Так появился Tern, бесплатный торрент-клиент для Windows с открытым кодом под MIT.На момент написания статьи опубликована версия 1.2.0. …
Привет, Хабр. Я соло разработчик: студия из одного человека и ИИ ассистента. У нас есть сайт tempapp.ru, и на нём живёт «дело № 031»: сезонный детектив в формате ARG (alternate reality game). Игрок находит спрятанную папку с делом, ловит голубя свидетеля, читает чужой дневник 1999 года, разгадывает цепочку шифров и в финале выясняет, что расследование было не совсем расследованием.Вся игра работает на статическом хостинге. Ни одной серверной строчки, ни регистрации, ни базы. Расходы на инфрастр…
Я делаю мобильное образовательное приложение. В какой‑то момент понадобилось объяснять пользователям сложные сценарии, где объекты двигаются по строгим формальным правилам, и объяснять не текстом, а видео. Любая неточная траектория или неверно анимированное действие на видео закладывает неверный паттерн. Я собрал для этого конвейер на Remotion и React Three Fiber.Три варианта, которые не подошлиСъёмка на реальных объектах. Нужны десятки роликов на разные сценарии, и каждый требует отдельной пос…
Решил сделать для друзей игру, где нельзя смеяться, чтобы ИИ распознавал эмоции и определял, кто засмеялся первым.Пример того, как работает «Детектор смеха»Я не программист, по профессии маркетолог. Всё это написано с ИИ‑агентами примерно за шесть недель: сейчас в проекте больше пятисот коммитов. Как выглядит такая работа изнутри и что агент ломал по дороге, расскажу отдельно и честно. А в этой статье — карта: из каких частей состоит шоу и какие задачи в каждой из них оказались неожиданно сложн…