Всем привет!В прошлой статье я описал модуль "авторизация", который использую в своем проекте и рассказал, как проходит аутентификация и авторизация пользователей, какие библиотеки и методы используются в системе, а сегодня, согласно опросу проведенному во второй части, я расскажу о модуле "игра". Именно в нем происходит вся "магия" игры.Сам модуль ничем не отличается от остальных. Архитектурно, это набор методов позволяющих реализовать механику игры, при чем не так важн…
Эта статья — перевод оригинальной статьи «Announcing Vue 3.5».Также я веду телеграм канал «Frontend по‑флотски», где рассказываю про интересные вещи из мира разработки интерфейсов.ВступлениеСегодня мы рады сообщить о выходе Vue 3.5 "Tengen Toppa Gurren Lagann"!Этот минорный релиз не содержит кардинальных изменений и включает в себя как внутренние улучшения, так и новые полезные функции. Мы расскажем о некоторых основных моментах в этом блоге - полный список изменений и новых возможносте…
В рамках работы над одним из проектов понадобилось использовать API Wildberries. Т.к. пишу на TypeScript, лучшим способом создания типов была генерация из Swagger. В итоге всё вылилось в библиотеку wildberries-api. Сгенерированы все методы API с типами запросов/ответов. Автоматический скрипт генерации позволит без усилий поддерживать актуальную версию API.NPM | GithubУстановкаnpm install wildberries-apiПример использования:import { Api } from 'wildberries-api'; const api = new Api(proc…
Привет, Хабр! Меня зовут Денис Басковский. Я фронтенд-разработчик в билетном сервисе Ticketland.ru (принадлежит МТС Live). В одном из пет-проектов мне понадобилось управлять календарными событиями: ставить время начала и окончания, добавлять комментарии и посылать оповещения. Обычно такая информация хранится и передается в .ics-файлах, описанных в спецификации iCalendar. Благодаря этому формату многие современные календарные приложения могут синхронизировать данные между собой.В этой статье я р…
Как известно, внутри файлов PDF можно размещать скрипты JavaScript, которые будут запускаться на исполнение в браузере. Например, если загрузить этот PDF, то вы увидите результат выполнения скрипта: Это стандартная функция формата. Все разработчики браузеров знают, что PDF подобно HTML является активным контентом и может содержать исполняемые скрипты. Несмотря на это, периодически некоторые специалисты по безопасности объявляют исполнение скриптов в PDF на сайте вариантом атаки Stored XSS. …
Уже полгода хожу в фитнес клуб World Class или как пишут в самом клубе - являюсь его резидентом. Выбрал этот клуб в основном из-за наличия в нём бассейна. Потом заинтересовался групповыми программами и частенько хожу на сайкл тренировки - это тренировки на специальном велотренажере.И единственное меня раздражает, что для просмотра расписания занятий на следующую неделю каждый раз приходилось идти на сайт сети Ворд Класс, переходить в мой клуб, отбиваться от нескольких назойливых баннеров которы…
Битва с алиасами!TL;DR — используйте custom conditions.ВведениеSubpath imports — это нативная опция в Node.js для задания внутренних алиасов путей в коде.Например, длинный относительный путь:import { foo } from '../../../utils.js'; можно упростить до:import { foo } from '#utils.js'; Это дает два преимущества:Такой код проще читатьНет лишних изменений после перемещения файловВ TypeScript существует старый способ настройки алиасов через опцию paths. Это хорошо работает для TypeScr…
Меня зовут Андрес, я руководитель команды разработки внутреннего UI-кита ВКонтакте. А это ещё одна статья про инструменты управления состоянием. Сегодня мы не будем изобретать ничего нового, а поговорим про библиотеку Effector. (Внимание, под катом много картинок.)TL;DRПочти год мы ВКонтакте пытались внедрить Effector, но пришли к выводу, что это достаточно сырая библиотека. Её недостатки зачастую проявляются сильно позже, чем хотелось бы, и, по нашему мнению, перевешивают достоинства… А послед…
Каждый раз, когда начинаешь новый проект, никогда не знаешь, какие сюрпризы он может принести. На первый взгляд, простая задача по настройке Google Формы может превратиться в увлекательное путешествие с неожиданными поворотами. Сегодня я хочу рассказать вам историю одного такого заказа, в котором мы не только справились с вызовами, но и нашли оригинальное решение.Начало проекта: задание и первая трудностьВсе началось с обычного запроса от клиента: необходимо было создать серию опросов на базе G…