Обновить
128K+

JavaScript *

Прототипно-ориентированный язык программирования

159,16
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как мы научили JavaScript анализатор понимать поток управления

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели228

Недавно в статический анализатор PVS-Studio была добавлена поддержка JavaScript/TypeScript, и он на старте умеет искать ошибки, связанные с потоком управления. Причём тут граф потока управления, как мы его добавили и чем это полезно — читайте в этой статье.

Читать далее

Новости

Обновления GigaIDE за сентябрь 2026

Время на прочтение5 мин
Охват и читатели1.1K

Как и в предыдущие месяцы, по итогам сентября мы решили рассказать про то, как изменилась GigaIDE за прошедший месяц. Ниже — краткий обзор обновлений Pro-функциональности GigaIDE, которую можно найти на нашем маркетплейсе.

Читать далее

Я несколько месяцев изучал теорию категорий. Вот зачем она оказалась нужна мне как программисту

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.3K

Несколько месяцев назад я зачем-то полез изучать теорию категорий. Причины были примерно те же, по которым нормальные люди иногда решают разобраться в квантовой механике по роликам на YouTube: звучит умно, выглядит загадочно, а главное – можно потом с важным лицом употреблять слово «эндофунктор» в компании людей, которые не могут проверить, несёшь ты ахинею или нет. В моём случае ситуацию усугубляла любовь к функциональному программированию, поэтому рано или поздно столкновение с теоркатом было неизбежно.

Первые впечатления были соответствующими. Категории, морфизмы, функторы, естественные преобразования, монады, знаменитое «монада – это моноид в категории эндофункторов». Я читал определения, вроде бы даже понимал отдельные слова, закрывал книжку и через пару часов снова не мог ответить на простой вопрос: а зачем мне всё это как программисту? Я пишу обычные приложения, крашу кнопки, перекладываю JSON из одного места в другое. Где в этой картине должны появиться все эти стрелочки?

Читать далее

Почему O(1) не гарантирует высокую скорость: четыре структуры данных для графа signal – effect

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели12K

Сигнал изменился - как найти связанные эффекты и удалить известную связь? Сравниваю четыре структуры графа signal - effect по стоимости операций и памяти, а затем - в локальных замерах на V8. Почему одинаковая O(1) не означает одинаковое время?

Читать далее

Вышел Next.js 16.4

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели7.9K

В релизах ветки 16.x мы постепенно внедряли новую модель разработки, которая решает многие проблемы, с которыми вы сталкивались с самого появления App Router:

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

Делает клиентские переходы в приложениях с серверным рендерингом мгновенными.

Делает кеширование декларативным и компонуемым, при этом включать его нужно явно.

Эта модель называется Cache Components, и в Next.js 17 она будет использоваться по умолчанию.

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

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

Начиная с Next.js 16.4, мы с уверенностью рекомендуем Cache Components как лучший выбор для любого приложения на Next.js.

Читать далее

Как React учился батчингу и как научить его «летать»?

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели5.1K

Чтобы React летал как Vue 3, достаточно забрать у него тяжелые вычисления и переложить их на плоский реактивный граф зависимостей с умным планировщиком транзакций на уровне микрозадач.

Больше реактивности

Как узнать длительность видео по ссылке, скачав 7% файла, и почему в заголовке MP4 бывает ноль

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели10K

Пользователь загрузил ролик на 37 мегабайт и получил ответ: «Не удалось определить длительность видео». Ролик был обычный, открывался в любом плеере, ffprobe показывал 18 секунд. В логах ошибок при этом не было вообще. Под катом разбор того, как устроена длительность в MP4, почему в заголовке файла она бывает нулевой и как достать её тремя HTTP-запросами без ffmpeg.

Читать далее

От RTSP-камеры до истории событий: настраиваем видеоаналитику через JavaScript Viewer

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели5.8K

Привет, Хабр! В первой статье я разбирал внутреннее устройство real-time-конвейера на C++20: почему медленный YOLO не должен останавливать RTSP и зачем между этапами нужны ограниченные слоты последнего значения. Теперь посмотрим на ту же систему с другой стороны — глазами пользователя, который подключает камеру и должен получить не просто видео с рамками, а управляемый и проверяемый результат.

Я покажу практический порядок настройки своей платформы видеоаналитики через браузерный JavaScript Viewer: от стабильного потока и детектора движения до постоянных ID, двух контуров YOLO и истории событий в PostgreSQL. Главный вопрос статьи — не «где находится кнопка», а «какой участок конвейера меняет этот параметр и как проверить эффект».

Читать далее

Рендерим обучающие 3D‑ролики кодом на React и Three.js вместо съёмок и AI‑видео

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.7K

Я делаю мобильное образовательное приложение. В какой‑то момент понадобилось объяснять пользователям сложные сценарии, где объекты двигаются по строгим формальным правилам, и объяснять не текстом, а видео. Любая неточная траектория или неверно анимированное действие на видео закладывает неверный паттерн. Я собрал для этого конвейер на Remotion и React Three Fiber.

Читать далее

Детектив на статике: как я собрал ARG с пятью шифрами без бэкенда, регистрации и бюджета

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.8K

Привет, Хабр. Я соло разработчик: студия из одного человека и ИИ ассистента. У нас есть сайт, и на нём живёт «дело №031»: сезонный детектив в формате ARG (alternate reality game). Игрок находит спрятанную папку с делом, ловит голубя свидетеля, читает чужой дневник 1999 года, разгадывает цепочку шифров и в финале выясняет, что расследование было не совсем расследованием.

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

<cut>

Как это работает без сервера

Меня достала реклама, и я сделал свой торрент-клиент для Windows

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.6K

Меня достала реклама в торрент-клиентах. Хотелось открывать программу, выбирать нужные файлы и оставлять загрузку в фоне. Так появился Tern: бесплатный клиент для Windows с открытым кодом, светлой и тёмной темами и автообновлением.

Хорошие альтернативы вроде qBittorrent уже существуют. Мне хотелось сделать приложение под себя, а заодно разобраться, сколько работы скрывается за обычной полоской прогресса. На больших торрентах мой собственный клиент начал тормозить, и пришлось заняться движком: убрать повторные обходы частей, вынести загрузки в отдельный процесс и ограничить скорость проверки файлов.

Показываю, что получилось, какие компромиссы остались и что удалось измерить в локальных тестах. Исходники и установщик доступны на GitHub.

Посмотреть, что получилось

Как посчитать статистику переписки на 500 тысяч сообщений в браузере и не увидеть ни одного

Время на прочтение10 мин
Охват и читатели6.1K

Переписка с близким человеком — одна из самых личных вещей на телефоне. А мы делаем сервис, которому нужно её прочитать. Из файла экспорта получаются карточки: кто чаще пишет первым, как быстро отвечает, в какие часы вы на связи, какие словечки появились у пары и кто из вас их придумал. Просьба «загрузите переписку к нам на сервер» убила бы такой проект в день запуска, и правильно.

Поэтому у «Чатограммы» (это наш пет-проект) одно жёсткое правило: всё считается в браузере, и по умолчанию сервер не видит ни одного сообщения. Ниже — как это устроено технически, во что это обходится по скорости и где у правила есть исключения. Все цифры я замерил на днях, в том числе на своих настоящих переписках, а не только на синтетике.

Читать далее

Строим стены в SCAD++ в турбо режиме

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели10K

В этой статье мы немного оживим SCAD++ и немного сэкономим времени на чай :-) Конструктора, проектировщики милости просим.

Читать далее

Ближайшие события

Сделал для Twitch Детектор смеха, где ИИ считывает эмоции. Рассказываю, как оно устроено внутри и делюсь цифрами

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.8K

Решил сделать на Twitch шоу, где нельзя смеяться, с ИИ-распознованием эмоций. Рассказываю, как оно устроено внутри и с какими проблемами столкнулся.

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

Первые цифры. Буду рад фидбеку.

Подробности о проекте и первые цифры

Кедр: SACD ISO в FLAC, написанный в Cursor

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели5.8K

Мне нужна была утилита под macOS, которая берёт образ Super Audio CD и делает из него FLAC. Обычный путь «открыть ISO в ffmpeg» здесь не работает: внутри не PCM, а однобитный DSD, часто ещё сжатый в DST. В итоге получился Кедр. Окно на Electron, само преобразование делает локальный Python, альбом с машины никуда не уходит.

И сразу честно, как это писалось. Я не набирал проект руками файл за файлом. Это вайбкодинг в Cursor: я говорил, что должно получиться, смотрел результат и возвращал в чат то, что сломалось уже на настоящем диске. Модель хорошо собирает каркас и плохо угадывает, как себя ведёт Homebrew ffmpeg 9 на конкретном DSF. Ниже как раз про это. Без тех прогонов на своём Mac утилита бы так и осталась «ну вроде открывается».

Читать далее

Парсер расписаний после хабратестирования: полвторого, RRULE, systemd и производственный календарь

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели9.6K

В прошлой статье я показал cronsense, библиотеку, которая переводит расписание на русском или английском в cron: «по будням в 9:30» → 30 9 * * 1-5. Комментаторы устроили ей хабратестирование и нашли, чего она не умеет: «полвторого», «без пяти шестнадцать», «каждые полчаса», а ещё задачи, для которых cron не подходит вообще.

За несколько дней вышло семь версий. Теперь одна фраза превращается в cron, RRULE для календарей или таймер systemd, а праздники можно называть по имени. Для «последнего рабочего дня месяца» появилась вторая библиотека, prodcalendar: производственный календарь РФ, который сам обновляется в npm. Попутно сверка с rrule.js и systemd-analyze нашла баги, о которых я не знал.

Песочница

Прочитать до Нового года

Почему архитектура важнее выбора стейт-менеджера в React

Время на прочтение16 мин
Охват и читатели6.6K

Почему архитектура важнее выбора стейт-менеджера в React

Когда я только начинал свой путь разработчика мне было интересно изучать новые технологии. Учил все подряд. Все знал. Но что лучше или хуже и уже тем более почему — сказать не мог. Именно об этом — как писать код правильно — я собираюсь сейчас рассказать. И буду это делать через призму выбора стейт-менеджера в React.

Читать далее

Как писать стили в 2026: CSS Modules, CSS‑in‑JS, Tailwind и zero‑runtime

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.7K

Всем привет! Меня зовут Даниил Николаев и я frontend-разработчик в компании "Исходный Код"

На каждом kickoff нового проекта всплывает один и тот же сценарий: один разработчик топит за утилиты Tailwind, второй отстаивает чистоту и надежность CSS Modules, третий по привычке тянет проверенный CSS-in-JS, а кто-то просто молча открывает .scss и выходит из созвона.

В этой статье мы опустим споры о «красивом синтаксисе» и разберем инженерную сторону вопроса: кто на самом деле платит за динамику — сборка или браузер клиента.

Заглянем под капот ключевым подходам в мире React (для уровня middle и middle+): разберем классические CSS Modules, ушедший в maintenance mode styled-components, Emotion, современный Tailwind v4 на движке Oxide и перспективный zero-runtime (Linaria, Vanilla Extract). Посмотрим, что реально происходит с CSSOM, reflow и рендером в браузере, а в конце — соберем практическую матрицу выбора без фанатизма и хайпа месяца.

Читать далее

Capacitor: от веба к мобильным приложениям. Часть 5. Микрофронтенды в Capacitor

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели5.3K

Ого, да это же следующая статья цикла про Capacitor. В ней мы рассмотрим нюансы реализации микрофронтендов в Capacitor приложении,а также разбирем схему, в которой команды могут выпускать MFE независимо и не ломать нативную часть приложения.

Читать далее

Продвинутый статический анализ в TypeScript-проектах: выходим за рамки tsc и ESLint

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели4.9K

👋 Привет! Меня зовут Александр, я работаю фронтенд-разработчиком в компании «МегаФон». Сегодня хочу поговорить о статическом анализе TypeScript-проектов за пределами привычной связки tsc и ESLint.

Читать далее
1
23 ...