изображение сгенерировано в ChatGPTВ типографике существует понятие “висячих слов” — это короткие слова (предлоги, союзы, местоимения), которые остаются в конце строки при переносе текста. Такие переносы нарушают удобочитаемость и эстетику текста. В русской типографике принято избегать переносов после коротких слов длиной 1-2 символа.Решение проблемы с помощью JavaScriptДля автоматического предотвращения переносов после коротких слов можно использовать JavaScript, который заменяет обычные пробе…
🧩 ВведениеЕсли вы работаете с Vue 3, вы точно сталкивались с ref() и reactive(). Обе функции из Composition API делают значения реактивными — но делают это по-разному. И хотя документация Vue чётко указывает, что использовать в каком случае, она редко объясняет, почему это важно и что может пойти не так, если использовать не тот инструмент.Вот ссылки на официальную документацию — на всякий случай:🔗 ref() — vuejs.org🔗 reactive() — vuejs.orgВкратце:ref() возвращает обёртку со свойством .value, в …
ПрологВсем привет! Сразу хочу сказать, что это не гайд, и я не рассказываю, как нужно кодить — просто хочу поделиться тем, что у меня получилось, и что я использовал в процессе разработки.Я не эксперт, и всё, о чём я пишу — это то, что сам прочитал и попробовал на практике. Моей основной задачей было сгенерировать сеточную карту и заставить персонажа искать кратчайший путь до точки, на которую я нажал, и двигаться к ней.Позже я добавил NPC с простым AI: они могут преследовать игрока, если тот н…
Сегодня я хочу поделиться глубоким исследованием того, как применять золотое сечение в современном дизайне 2025 года. Эта статья основана не только на теории, но и на реальном опыте работы с крупными проектами, A/B тестах и исследованиях пользователей.Что такое золотое сечение и почему оно работает в 2025 годуЗолотое сечение (φ ≈ 1.618) — это математическая константа, которая представляет собой отношение двух величин, при котором отношение суммы этих величин к большей из них равно отношению бол…
API (Application Programming Interface) — это интерфейс, который определяет, как программные компоненты взаимодействуют друг с другом. Он задаёт, какие запросы можно выполнять, как именно они отправляются, в каком формате передаётся данные и какие соглашения при этом соблюдаются. API также могут предоставлять механизмы расширения, позволяя пользователям расширять существующие функциональности различными способами. API может быть разработан для конкретного компонента или создан на основе отрасле…
Всем привет! Меня зовут Михаил Парфенов, я являюсь Application Security-архитектором в DPA Analytics. В мае 2025 мной проводилось исследование безопасности российских frontend-приложений. Были проверены приложения более 3000 крупнейших коммерческих российских компаний.Главные страницы (корпоративных сайтов, порталов, личных кабинетов, социальных сетей, маркетплейсов и т.п.) открывались в frontend-песочнице, фиксирующей составляющие и действия frontend-приложения (в первую очередь поведение Java…
Я много общаюсь о микросервисных архитектурах с «не-Java-людьми» — будь то разработчики на C#, энтузиасты Node.JS/JavaScript или GoLang. Все они сталкиваются с необходимостью оркестрации в микросервисной архитектуре — или просто хотят использовать workflow, упорядочивание действий, обработку таймаутов, Saga и компенсации, а также другие полезные возможности.Open Source BPM-платформа Camunda отлично подходит для этих задач. Ориентированность на разработчиков — один из ключевых принципов продукта…
Сначала я недооценил document.currentScript, но оказалось, что он отлично подходит для передачи параметров конфигурации прямо в теги <script> — и это далеко не все. Порой я натыкаюсь на давно существующие браузерные API в JavaScript, о которых, по идее, я должен был узнать гораздо раньше. Например, window.screen или метод CSS.supports(). К счастью, я понял, что не один такой. Помню, как однажды упомянул window.screen в посте и получил неожиданно много комментариев от людей, которые тоже…
Наш фронтенд начинался как простой SPA на React, собранный с помощью Vite — типичный монолит с несколькими страницами. Со временем проект оброс новыми функциями и интеграциями и начал становиться всё сложнее в поддержке.На горизонте появились новые вызовы: к продукту планировалось подключать всё больше независимых сервисов, а значит — ещё больше интеграций и роста кодовой базы. Мы понимали, что нагрузка на инфраструктуру будет только увеличиваться, поэтому решили заранее заложить архитектуру с …