Эта статья — перевод оригинальной статьи «Svelte 5 is alive».Также я веду телеграм канал «Frontend по‑флотски», где рассказываю про интересные вещи из мира разработки интерфейсов.ВступлениеПосле почти 18 месяцев разработки, включающей тысячи коммитов от десятков участников, Svelte 5 наконец-то стабилен. Это самый значительный релиз в истории проекта. Svelte 5 - это полная переработка: ваши приложения станут быстрее, меньше и надежнее. Вы сможете писать более последовательный и идиоматичный код.…
ВведениеНедавно я работал над разработкой браузерной 3D-игры в качестве очередного pet-проекта с помощью движка BabylonJS. И в какой-то момент встал вопрос о необходимости процедурной генерации террейна — уверен, у каждого, кому приходилось сталкиваться с созданием естественных локаций в играх, возникала такая проблема. Вопрос состоит в подборе подходящего алгоритма генерации шума, который затем можно будет использовать в качестве карты глубины, нормалей и/или чего-нибудь еще. Да даже генерация…
Всем привет и добро пожаловать в мой хабр про интересные задачи и их решения в моей ежедневной работе. Уверен, что каждый QA (и не только) сможет найти здесь что-то интересное и полезное. Начнем! Пару недель назад я взял задачу по написанию и настройке автотестов видеоплеера для разных платформ (Windows, MacOS, iOS и Android). Решил, что использовать Selenium в связке с NodeJS будет хорошим вариантом, так как именно этот фреймворк позволяет работать не только с десктопными, но и с мобильными бр…
Преобразование растрового изображения в векторное изображение Tree.js и HTML (ознакомиться с полным кордом можно по ссылке на мой репозиторий )СодержаниеВведениеРабота с Node.jsСоздание HTML файлаСоздание package.json и webpack файловСоздание JS файлаВведениеПроект, который мы будем сегодня реализовывать имеет несколько практических составляющих:Научиться базовым принципам работы с библиотекой three.js;Возможность преобразовывать картинки разных форматов в векторное изображение.Создание HTML ф…
Консоль браузера — это инструмент, о котором многие знают, но лишь немногие используют его возможности в полной мере. Для большинства QA-инженеров она остаётся чем-то вроде диагностической панели: открыть, увидеть ошибку, закрыть. Однако её потенциал значительно шире. Я убедился в этом на собственном опыте. Привет, Хабр, меня зовут Алексей Иванов, я занимаюсь тестированием в компании «Самолет», и, помимо ежедневной работы с продуктом, организую митапы по тестированию в Москве. Участвуя в таких …
ВведениеРаньше использовал Vuetify в качестве UI библиотеки. В связи с его сомнительной репутации, отказался от него, но пока что не нашел ни одной свободной библиотеки, что реализовала бы все его достоинства, одним из которых, является глобальная конфигурация.Сейчас использую Element Plus, так как используется на основной работе и она на равных с другими схожими библиотеками. У него тоже есть глобальная конфигурация, но он очень кастрирован - я не могу глобально настроить конкретный компонент.…
Задумывались ли вы, где можно применить навык решения задачек а-ля литкод изи? Я встречаюсь с ними частенько, главное просто присмотреться.Например, на Linked.in недавно ввели "игры". Я как-то глянул на них на послеобеденном кофе."Ферзи" (queens)Задача проста: расставить ферзей на доске так, чтоб в каждой строке, столбце и связной цветовой области было ровно по одному ферзю, и ферзи не должны касаться друг друга.Например, ферзи за 28 октября:Я решил её раз. Решил другой день. На…
Не ходите в npmjs.com напрямуюЧтобы избежать уязвимостей нулевого дня, MITM, и всевозможных «подарочков» от активистов и хакеров, можно проксировать и кэшировать реестр npm на уровне собственной инфраструктуры.Готовые решения вроде Verdaccio и Nexus добавят слой безопасности, ускорят установку пакетов и позволят хостить свои приватные пакеты бесплатно в неограниченном количестве. При желании, можно реализовать свой npm‑прокси так, чтобы в него попадали только версии пакетов старше, скажем, двух…
Одним из источников путаницы вокруг моков, является то, что моки могут быть с отслеживанием состояния.Например, эта функция:const fn = vi.fn() fn('one') fn('two') fn.mock.calls // [ ["one"], ["two"] ]В приведенном выше примере функция-заглушка fn имеет состояние, которое отслеживает все вызовы, сделанные к ней. Само состояние не является проблемой. На самом деле, вам это состояние нужно! Оно необходимо для проверки правильного количества вызовов и их аргументов…