Архитектурная доктрина для NestJS-проектов: разбор типовых сценариев деградации кодовой базы и структурные ограничения, обеспечивающие её отсутствие при росте функционала. Навигация по серии:Часть 1. Эволюция NestJS-приложения в неподдерживаемое состояниеЧасть 2. Декомпозиция на сервисы: анализ ограниченности подходаЧасть 3. Архитектурный риск циклов в NestJS: ROI решений на горизонте пяти летЧасть 4. FBCA: формализация границ ответственности в NestJS-модулеЧасть 5. Масштабирование FBCA и теоре…
ВведениеВ большинстве компаний линтинг со временем превращается в хаос: разные правила ESLint, устаревшие конфиги и копипаста между проектами. Покажу, как навести порядок – собрать линт-инфраструктуру в один пакет и выстроить систему контроля кода для всех репозиториев.Для кого эта статьяСтатья будет полезна:разработчикам, которые хотят навести порядок в линтинге нескольких проектов;тимлидам и техлидам, которые строят единые стандарты кода в команде;тем, кто планирует вынести конфигурации ESLin…
Архитектурная доктрина для NestJS-проектов: разбор типовых сценариев деградации кодовой базы и структурные ограничения, обеспечивающие её отсутствие при росте функционала.Эта статья — разбор того, как типичный бэкенд на NestJS деградирует с ростом функционала и как идеи Clean Architecture позволяют этого избежать. Я пройду по полному циклу: покажу на примере «до и после», как feature-based-структура, которую сегодня продвигают как стандарт, теряет управляемость с масштабом; разберу типичные сце…
Привет! Меня зовут Костя, я разработчик интерфейсов в ЮMoney. В этой статье разбираю, почему вкладка после возврата из фона начинает вести себя странно: интерфейс подвисает, таймеры съезжают, события приходят пачкой.Материал особенно пригодится тем, кто делает сложные SPA с realtime‑обновлениями, WebSocket и насыщенным UI — CRM, дашборды, платёжные сценарии.Тема выросла из доклада, который я буду читать на Frontend Mix — бесплатном митапе ЮMoney для фронтенд‑разработчиков. Но здесь будет именно…
Привет, я Игорь Аникин, Frontend разработчик RUTUBE TECH. Медиадизайнер, специализируюсь на компьютерной графике. Увлекаюсь программированием более 15 лет. Веду Telegram-блог про новые медиа.Это небольшой мастер-класс, как визуализировать звук двумя способами. Текст подойдёт любому читателю, которому интересна выразительная часть цифрового мира.аудиореактивный визуал https://t.me/mediapancake/86— Что такое креативное программирование?Использование компьютера для создания изображений или звука. …
В прошлой статье я рассказывал, каково в одиночку тащить фуллстек-проект, который разросся до кино-соцсети. В комментариях несколько раз спросили про конкретику — «покажи код», «как сделал, что не выглядит как очередной пет-проект». Логично: дизайн — это то, по чему встречают. Поэтому держите вторую часть, уже техническую и с кодом. Без маркетинга, только решения, которые реально сделали интерфейс «дорогим», и пара бэкенд-хитростей в довесок.Сразу дисклеймер: я не дизайнер. Всё нажито методом «…
Kufar.by - это примерно как avito.ru, только в Беларуси. После очередного “улучшения” там стало невозможно выбирать авто и недвижимость: цены показываются только в белорусских рублях, хотя рынок всегда будет в долларах (Боже, храни Америку). Поэтому я сделал небольшой Chrome Extension, который добавляет рядом ориентировочную цену в долларах. Пока только для авто и недвиги. И да, по ощущениям, ЛПРы, которые это выкатывали, никогда не покупали ни то ни другое на своём сайте.ПрологПопытка #1Цена в…
Centrifugo — сильное решение для real-time систем. Особенно когда нужен отдельный WebSocket-слой, приватные каналы, публикация событий из backend-а, масштабирование и независимость от конкретного фреймворка.Но Centrifugo не единственный вариант. И точно не всегда лучший.В Laravel-проектах можно использовать Reverb, Pusher Channels, Ably, Socket.IO, Server-Sent Events, polling, long polling и разные внутренние брокеры сообщений. Иногда Centrifugo будет правильным выбором. Иногда он окажется избы…
Navigation API предоставляет возможность инициировать (программно запускать), перехватывать и управлять навигацией в браузере. Он также позволяет исследовать (traverse) сущности истории (history entries) приложения. Это улучшенный вариант предыдущих возможностей веб-платформы, связанных с навигацией, таких как History API и window.location, который решает их проблемы и специально предназначен для одностраничных приложений (single-page applications, SPA).На сегодняшний день Navigation API поддер…