Десять дней разработки — и язык, на котором держится веб. В этой статье — история JavaScript и инструментов, которые привели его к этому.1995. Рождение легендыИдея создания JavaScript появилась в компании Netscape. В то время веб-страницы почти полностью состояли из HTML, а Netscape хотели добавить больше интерактивности.Первым шагом в эту сторону стало лицензирование языка Java для использования в браузере Netscape. Но Java оказался слишком сложным для веб-дизайнеров.Тогда Брендану Айку постав…
Полгода я жил в одном и том же цикле. Собираешь скрапер, вечером он проходит все страницы, а к обеду следующего дня отдаёт сплошные капчи и 403. Добавляешь puppeteer‑stealth, сверху ещё десяток заплаток, гонишь трафик через резидентные прокси, и всё равно на третьи сутки прилетает бан. Я устал чинить симптомы и сел разбираться, что именно нас выдаёт.Вывод, к которому я пришёл, оказался неприятным. Антидетект, который живёт в JavaScript, спалится по определению. Дело не в том, что конкретные пат…
С самого начала TypeScript обещал обеспечить масштабируемость JavaScript. Строгая типизация и богатый инструментарий позволили разрабатывать нетривиальные, высококачественные приложения под любые платформы.В прошлом году наша команда анонсировала следующий шаг в масштабировании TypeScript: нативный порт на Go, который использует все возможности современного железа. Порт сделан максимально точно: новый код воспроизводит структуру и логику оригинальной кодовой базы, чтобы результаты двух компилят…
Конвертируем цвета в JS со скоростью 6 миллиардов операций в секундуВ начале этого года я создал @colordx/core, самую быструю JS‑библиотеку для работы с цветом: парсинг различных форматов, конвертация в OKLAB/OKLCH, проверка попадания в P3-гамут и многое другое. Библиотека весит всего 7 КБ и не имеет внешних зависимостей. Высокую скорость обеспечили оптимизации под V8: мономорфизм, скрытые классы, ноль лишних аллокаций.Для повседневных задач (один цвет по клику, по ховеру, при парсинге CSS‑знач…
Хочу поделиться опытом создания веб-приложения для планирования питания на неделю. Задача казалась простой: календарь, блюда, ингредиенты. Но в процессе всплыло столько нюансов — от UX на холодильнике до управления сессиями на shared-хостинге, — что решил оформить это в статью.Что получилосьPWA для планирования питания с фичами:Drag-and-drop перемещение блюд между днямиАвтоматический расчет КБЖУ и списка покупокРабота на холодильнике (крупный UI, офлайн-режим)Remember Me на 30 дней даже на shar…
Это продолжение моей статьи о том, как я сделал движок совместимый с GTA San Andreas для запуска в браузере, рекомендую сначала прочитать:https://habr.com/ru/articles/1051828/А здесь речь пойдёт о том, как я готовил идеальную карту и фиксил легаси-баги игры.Что это такое — и чем это не является. OpenSA — это эксперимент и учебный проект. Цель — сам движок: браузерный рантайм, созданный совместимым с форматами RenderWare, которые использует GTA San Andreas, — а не клонировать игру или распростра…
Прошло полгода со времени публикции первого сравнения. Мир ИИ стремительно развивается, поэтому эксперимент пора повторить.Напомню вводные: используются только бесплатные общедоступные ИИ модели в режиме по умолчанию (никаких дополнительных настроек, только режим "Авто", зашли на сайт и сразу вставили запрос), один промпт, если модель предлагает кнопку "Продолжить", то она нажимается до завершения задачи. Некоторые модели переходят в "глупый" режим, если израсходован дне…
⚡ РеактивностьВ современной фронтенд-разработке реактивность стала стандартом дефакто. Мы привыкли к ней в Vue, React (если через хуки/стейт - здесь появляется спорный момент), Angular (Signals) и RxJS. Однако тяжелые фреймворки не всегда уместны, если вам нужно построить чистую, легковесную бизнес-логику, абстрагированную от DOM-дерева.Вот что я хочу Вам показать: https://www.npmjs.com/package/@pravosleva/reactive-engineNPM-пакет @pravosleva/reactive-engine решает именно эту задачу, предоставл…
Когда может пригодиться экзотика.Я много раз обращался к использованию множественного наследования в языках программирования и платформах. Но как правило это обращение было больше теоретическим. Я не видел в его применении значительных преимуществ, способных превзойти альтернативные подходы, с учётом рисков его применения. Но в это раз случай представился. И я покажу этот пример.Итак, множественное наследование не ново. Есть сырое жёсткое применение в лоб в плюсах. Когда появилась Scala, я при…