惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
F
Full Disclosure
博客园 - 三生石上(FineUI控件)
Recent Announcements
Recent Announcements
Apple Machine Learning Research
Apple Machine Learning Research
NISL@THU
NISL@THU
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
Last Week in AI
Last Week in AI
C
Cisco Blogs
D
DataBreaches.Net
Attack and Defense Labs
Attack and Defense Labs
C
Cybersecurity and Infrastructure Security Agency CISA
MyScale Blog
MyScale Blog
M
MIT News - Artificial intelligence
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
B
Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
AWS News Blog
AWS News Blog
美团技术团队
L
LINUX DO - 热门话题
罗磊的独立博客
Recorded Future
Recorded Future
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
P
Privacy International News Feed
V
Visual Studio Blog
I
InfoQ
The Register - Security
The Register - Security
Hugging Face - Blog
Hugging Face - Blog
Latest news
Latest news
Martin Fowler
Martin Fowler
T
Threat Research - Cisco Blogs
Cyberwarzone
Cyberwarzone
Help Net Security
Help Net Security

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Мы сделали игровую платформу без опыта в разработке. Рассказываем, как она устроена
liho_boy · 2026-06-15 · via Все публикации подряд на Хабре

Мы сделали игровую платформу без опыта в разработке. Рассказываем, как она устроена

Простой

10 мин

217

Привет, я Алина Бриленкова, руковожу онлайн-направлением в ивент-агентстве Найт Стрит. Мы сделали игровую платформу (совсем недавно дали ей название — Playforma), не имея опыта в разработке. Я за это время прошла путь от «давайте построим империю» до «давайте оставим этот костыль как постоянное решение». О процессе создания продукта с нуля и о том, как нас кидало между ожиданиями и реальностью, подробно рассказали в прошлой статье.

Сейчас подробно разберу, что у нас в итоге получилось, без погружения в технические детали: расскажу, как устроена платформа, и подсвечу пару забавных кейсов. В конце — поделюсь, что планируем добавить в ближайшее время (разработка игровой платформы — это как бесконечный сериал с новыми сезонами).

Архитектура и технологии платформы

На уровне архитектуры наш инструмент для онлайн-тимбилдингов состоит из двух подсистем — пользовательской и административной. Пользовательская часть (фронт) — то, что видит участник. Административная (бэк) — это рабочий интерфейс для управления играми.

Отдельно существует dev-ветка — копия основного движка нашей платформы (её технической части) на отдельном поддомене. Любая новая функция сначала выкатывается туда для тестов, только потом переносится в прод. У команды всегда масса гипотез для проверки, и в работе они часто находятся параллельно, тестовая среда нужна постоянно. Приоритеты и статусы по ней фиксируются в таблице.

Как наша архитектура влияет на технологии

Наш формат — командно-ориентированный: с играми, где надо действовать синхронно, чатами, живой статистикой. Это требует, чтобы всё обновлялось мгновенно сразу у всех участников. Поэтому в основе Playforma лежат вебсокеты — технология для постоянного соединения клиента и сервера, через которое данные передаются в реальном времени. Всё обновляется без перезагрузки страницы и нет постоянных запросов к серверу, которые бы создавали излишнюю нагрузку.

Как устроена пользовательская часть

Пользователь всегда начинает игру с авторизации, после входа попадает на главную страницу игры. Здесь отображается афиша, текущий статус (например, «Игра стартует через 5 дней 12 часов» или кнопка «Перейти в игру»), а также блок, где организаторы размещают контент: например, приветственный текст, видео или инструкции.

Страница авторизации легко кастомизируется

Страница авторизации легко кастомизируется

Если к игре прикреплён вступительный брифинг, на главной появляется кнопка «Подключиться к брифингу. При нажатии открывается встроенная ссылка на видео-комнату в Zoom или другом сервисе.

Слева располагаются подсказки и элементы навигации: куда перейти, как найти правила, где посмотреть результаты. Правый блок — коммуникационный: там видны все участники команды, плюс чат для общения.

Главная страница со стороны пользователя

Главная страница со стороны пользователя

Личный кабинет и настройки команды

В личном кабинете участник может редактировать свои данные — ФИО, телефон, город. Поля гибко настраиваются, если заказчику это нужно. Можем добавить, например, «департамент» или другую информацию о сотруднике.

Здесь же можно: загрузить аватар, изменить пароль, выйти из профиля.

Личный кабинет пользователя

Личный кабинет пользователя

Настройки команды работают по тому же принципу. Можно изменитьназвание команды, загрузить логотип, добавить ссылку на чат в Телеграм или Zoom, если все решили общаться вне платформы.

Раздел командных настроек

Раздел командных настроек

Раздел «Правила» оформлен как отдельная вкладка с картинкой и кратким описанием всех базовых пунктов, которые нужно знать перед стартом. Рядом обычно размещаются ответы на FAQ, чтобы игроки могли решить типовые проблемы без поддержки. Если всё же нужна помощь, чат с техподдержкой встроен прямо в интерфейс. Сообщения операторов приходят туда же, где участники общаются между собой — не нужно открывать почту или сторонние мессенджеры.

Раздел FAQ и правил

Раздел FAQ и правил

Игровые режимы

Главный раздел платформы — «Игра», что логично для агентства Найт Стрит, которое изначально занимается играми. Внутри этого раздела мы делим все форматы для геймификации мероприятий по нескольким параметрам: как устроено взаимодействие участников, как выстроен прогресс и сколько по времени длится игровой интерактивный сценарий.

1. По типу взаимодействия:

  • командные игры — участники проходят задания вместе и общаются в общем чате; 

  • индивидуальные игры — участник проходит задания самостоятельно, без командного чата. Видит только свой прогресс и не зависит от других игроков.

2. По логике прохождения:

  • линейный режим — каждое следующее задание открывается только после прохождения предыдущего;

  • гибкий режим — можно свободно переключаться между заданиями и проходить их в любом порядке.

Чтобы начать задание, нужно нажать на кнопку

Чтобы начать задание, нужно нажать на кнопку

3. По длительности:

  • короткая игра — до 10 заданий, как правило, в рамках одной сессии;

  • марафон — игра длится двое суток и дольше. Задания могут открываться сразу или по расписанию.

Начали выполнять задание

Начали выполнять задание

Дополнительная настройка внутри марафонов:

  • адвент-формат — задания отображаются не списком, а в виде набора карточек, которые участник открывает по мере прохождения (по логике календаря).

Формат адвент-календаря

Формат адвент-календаря

Параметры можно комбинировать между собой — например, собрать командный марафон с линейной логикой или индивидуальную короткую игру с гибким режимом.

Почти всё в интерактивных сценариях онлайн можно настраивать. В одной показывать статистику и рейтинги, в другой — полностью их скрыть. Менять оформление финальной страницы, конфигурацию подсказок и видимость отдельных блоков.

Как устроена административная часть

По сути это центр управления игрой: всё, что видит пользователь на фронте, сначала настраивается здесь. Это место, где создаются проекты, собираются задания, настраиваются правила и загружается весь контент — от описаний этапов до медиафайлов.

Вид на админку

Вид на админку

Через админку можно полностью контролировать процесс: запускать и останавливать игру, редактировать задания, управлять регистрацией и составом участников, менять визуал и подключать дополнительные механики. Например, превратить игру в марафон с этапами или добавить формат адвент-календаря.

Отдельный блок — мониторинг. Мы в реальном времени видим, как команды проходят задания: где застряли, сколько попыток сделали и сколько времени потратили. Если что-то идёт не так, администратор может вмешаться — перезапустить задание, начислить баллы или скорректировать результат.

Все данные игры в режиме онлайн

Все данные игры в режиме онлайн

По сути, это центр управления игрой: всё, что видит пользователь на фронте, сначала настраивается и проверяется здесь.

Безопасность и борьба с читерами

Как и в любой сложной системе, к вопросам безопасности мы пришли довольно рано. При тысячах одновременных пользователей любое лишнее поле в коде или открытая переменная могут стать источником уязвимости.

После первых тестов мы пересмотрели архитектуру хранения данных: внедрили передачу ответов и ключевых идентификаторов в нечитабельном виде, ввели дополнительные проверки на уровне сервера, чтобы доступ к заданиям зависел от прав пользователя и состояния игры, а не только от наличия данных в браузере. Сейчас даже если открыть консоль или скачать элементы страницы, пользователь увидит наборы данных, которые сами по себе не дают прямого понимания ответа без контекста игровой логики.

Даже если ваш продукт напрямую не связан с хранением денег и личными данными, минимальные меры для безопасности необходимы. Чем интереснее продукт, тем выше шанс, что кто-то попробует обойти систему.

Защита от самых умных

Читерство для нас — не про хакеров в чёрных худи, а про обычных участников, которые просто хотят пройти игру любым способом. Кто-то открывает DevTools, кто-то ищет файлы заданий в кэше или Storage, кто-то делится правильными ответами в чатах. Наша цель — сделать игру максмально честной, а значит постараться, чтобы все эти манипуляции не давали ощутимого преимущества.

На уровне фронтенда и бэкенда реализовано несколько защитных решений:

  • непрозрачные названия медиа и ресурсов, чтобы по имени файла нельзя было напрямую понять его содержимое или номер задания;

  • доступ к заданиям проверяется на стороне сервера: учитываются права пользователя, команда, текущий этап игры и условия открытия задания;

  • шифрование текстовых ответов и промежуточных данных, чтобы даже загруженный элемент не раскрывал смысла без связанного контента.

Дополнительно мы внедрили вариативные задания: внешне они выглядят одинаково, но содержат разные данные для разных пользователей. Например, у одного участника правильный ответ — «байт», у другого — «мобс». Даже если они обменяются ответами, ничего не получится, каждый вариант проверяется по своей логике. Решение существенно снижает возможность массового слива ответов.

Мониторинг и контроль

Даже при наличии всех технических ограничений важно видеть, что происходит в игре прямо сейчас, чтобы не пропустить косяк. Плюс надо анализировать вовлечённость. Поэтому в админке платформы можно в реальном времени отслеживать прохождение заданий: кто прошёл, во сколько, сколько времени потратил.

Если кто-то, например, открыл задание раньше, чем это было запланировано игрой, событие сразу видно в логах. Дальше мы разбираемся: это ошибка в настройках или попытка обойти систему. При необходимости можно выгрузить подробную статистику участников: время входа, IP-адреса, тип устройства.

Эти данные не дают прямого доступа к пользователю, но позволяют заметить странности: например, если две команды постоянно играют с одного IP. В таких случаях мы уточняем у клиента: «А участники случайно не муж и жена, которые играют из одной квартиры?». Это, кстати, реальный случай с одной из первых игр: думали, что нашли мошенников, а оказалось — просто семью.

Полный контроль прохождения — не для тотальной слежки, а ради честной игры. Если кто-то действительно пытается обмануть систему, его можно заблокировать.

Совместная работа с безопасниками клиентов

Некоторые компании относятся к информационной безопасности особенно строго, особенно если сотрудники играют со своих корпоративных адресов. В таких случаях мы подключаем их IT- и ИБ-отделы, заполняем опросники и проводим отдельные встречи, чтобы пройти внутреннюю проверку.

Обычно клиенты всего лишь хотят понять, где физически расположены наши серверы, какие методы защиты и шифрования мы используем, какие данные собираются и кто имеет к ним доступ. После этого согласовываем решение.

Иногда достаточно добавить наш домен в корпоративный «белый список», чтобы участники могли заходить в игру с рабочих компьютеров. Если требования сложнее, мы подстраиваемся: можем изменить схему авторизации, отдельные параметры безопасности или даже поднять изолированную ветку продукта под конкретный проект.

Кейсы и нагрузочные тесты

Как мы отреагировали на тролля Однажды участник решил повеселиться и протестировать нашу систему на прочность: начал массово создавать аккаунты. Не десятки, а тысячи. С той компанией, которая заказала игру для сотрудников, было согласовано, что регистрация — открытая: без капчи и без подтверждения e-mail, так что зайти можно было хоть с адресом qwerty@gmail.com

Мы вычислили источник и заблокировали IP, с которого шла активность. к счастью, атакующий не использовал VPN, поэтому разобраться удалось быстро. Вообще мы рады этому случаю: он научил нас, что любая платформа для управления участниками онлайн и работающая с большим количеством пользователей, должна быть готова к несанкционированной активности.

После этого случая капча и подтверждение почты стали стандартом для крупных проектов, плюс на них всегда дежурит команда — фронтенд, бэкенд и менеджер. Они следят за системой в реальном времени и быстро реагируют на любые аномалии — от всплесков трафика до подозрительных входов.

Иногда защита срабатывает слишком усердно. На одной игре бэкендер в панике прибежал:

— Нас DDoS-ят, с одного IP идёт сотня запросов!
— Друг, спокойно, это просто все играют из корпоративной сети

Как платформа выдержала 7000 участников

Один из самых показательных кейсов — крупная игра, когда мы заранее загрузили в систему около 40 000 логинов и паролей. Регистрация была по списку, то есть попасть в игру могли только участники из базы клиента.

В утро запуска в одно время, 9:00, в игру зашло примерно 7000 человек — и хороший боевой тест: тысячи одновременных входов, запуск заданий, постоянные обновления данных. Платформа выдержала запуск, но проект показал зону, которую нужно усиливать — подключения вебсокетов. При большом количестве одновременных подключений они начинают упираться в свои пределы, из-за чего система местами реагирует медленнее, чем хотелось бы.

Сейчас мы дорабатываем эту часть: оптимизируем схему обмена данными через вебсокеты, чтобы равномерно распределять трафик и снижать зависимость от числа одновременных подключений.

Планы по развитию платформы

Что у нас в планах:

  1. Выкатить визуальные обновления (завершаем проверку на dev-ветке). Результат нашего UX-аудита, обновили интерфейсы, сократили время отклика, улучшили навигацию и логику игровых сценариев.

  2. Выкатить обновления по вебсокетам. Мы оптимизировали работу с ними, полностью переработали систему обмена данными, чтобы увеличить количество одновременных подключений без падения производительности.

  3. Продолжать выпуск малых функций. Это небольшие улучшения, которые у нас постоянно в работе: от настройки логов до мелких визуальных апдейтов, заметных пользователю.

Новые игровые механики и функции

Помимо технических задач и масштабирования продукта, мы постепенно внедряем новые возможности для игроков и организаторов:

  • Автоматизация заданий с метриками: участники вводят данные (например, количество шагов или выполненных действий), а система автоматически подсчитывает результат и отображает прогресс на шкале.

  • Дополнительные необязательные задания. Маленькие квесты, за которые можно заработать бонусные баллы и подняться в общем рейтинге.

  • Одноразовые ответы и промокоды. Участник вводит уникальный код (с офлайн-мероприятия или который он получил в другой игре) и получает очки или открывает новый этап.

  • Мини-игры. Простые вставки, например, головоломка аля «пятнашки», которые можно добавить в сценарии как разогрев или тайм-киллер, пока участники ждут результаты.

  • Вторая награда. Помимо стандартных баллов — внутренняя «валюта» (монетки, жетоны), которую можно обменять на сувениры или бонусы компании.

  • Система ачивок и бейджей. Например, если игрок прошёл пять заданий быстрее двух минут, он получает титул «Молния» и бейдж в личный кабинет.

  • Разграничение ролей внутри команды. Каждый участник видит только свою часть интерфейса: таймер, ответы или подсказки — в зависимости от роли. Это делает взаимодействие ближе к офлайн-игре.

Очень важное в планах — добавить механику «блендера». Это автоматическое перемешивание составов команд после каждого этапа. После завершения задания система собирает участников заново, случайно распределяя их в новые группы. Такой формат делает игру динамичнее: участники постоянно взаимодействуют с новыми людьми, быстрее знакомятся и учатся договариваться.

С технической стороны всё сложнее. Если обычное рандомное распределение команд уже реализовано, то «блендер» требует дополнительной логики. Как учитывать тех, кто не дошёл до этапа? Нужно ли подтверждение участия? И главное — как при перестроении не сбросить прогресс игроков?

Сейчас этот функционал на этапе ТЗ. Мы прорабатываем сценарии, тестируем гипотезы и обсуждаем, для каких форматов (коротких или длинных игр) «блендер» вообще будет уместен.

Спасибо, что дочитали до конца! Уже пишем для вас новую статью

Ну вот, разобрали, как устроена платформа для квестов и игр сейчас. Со всеми рабочими решениями, костылями и тем, что со временем стало системой. Дальше хотим пойти глубже: рассказать, как адаптировали Playforma под офлайн-ивенты и разобрать реальные кейсы и факапы. Там всё самое интересное. И отдельно спасибо аудитории Хабра за обратную связь на прошлые статьи. Мы в агентстве Найт Стрит всё читаем, обсуждаем внутри команды и многое берём в работу. Правда — приятно видеть, что это откликается. Остаёмся на связи.