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

推荐订阅源

Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
量子位
腾讯CDC
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
The Hacker News
The Hacker News
T
The Exploit Database - CXSecurity.com
B
Blog
S
SegmentFault 最新的问题
P
Privacy & Cybersecurity Law Blog
T
Threatpost
博客园 - 聂微东
T
Tailwind CSS Blog
The Last Watchdog
The Last Watchdog
C
Check Point Blog
N
Netflix TechBlog - Medium
D
DataBreaches.Net
爱范儿
爱范儿
IT之家
IT之家
S
Secure Thoughts
M
MIT News - Artificial intelligence
NISL@THU
NISL@THU
C
Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
有赞技术团队
有赞技术团队
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
Schneier on Security
Schneier on Security
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
雷峰网
雷峰网
Project Zero
Project Zero
博客园 - Franky
H
Heimdal Security Blog
A
About on SuperTechFans
Security Latest
Security Latest
Webroot Blog
Webroot Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 миллионов точек без потерь
Как я сделал на Flutter игру для разработчиков. Часть 2
submaps · 2026-05-13 · via Все публикации подряд на Хабре

Простой

5 мин

9.5K

Всем привет! Меня зовут Амир Утеуов, я ML-инженер из Авито.

В первой части статьи я поделился тем, что пришлось сделать и учесть для создания собственной игры для разработчиков — DevRush. Суть игры заключается в том, что нужно на время находить иконки языков программирования. Я прошёл путь от создания геймплея и векторной анимации до сборки под Android и iOS. Главная неожиданность ждала в App Store — модераторы отклонили игру из-за иконки Android, посчитав это рекламой конкурента. Но по итогу Авито взял мою игру на стенд Code Fest 2025.

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

В этой статье: 

  1. Новый дизайн

  2. Вайбкодинг лидерборда

  3. Конференция CodeFest 2025

  4. Выводы

  5. Благодарности

  6. Что ещё посмотреть по теме

Новый дизайн

Таков был мой новый флоу работы:

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

24f3adb08e8978b57e26389684c725d4.png

Старый и новый дизайн игры (новый - справа)

Во Flutter у каждого компонента/виджета мы можем задавать параметры Style и создавать общую тему приложения Theme. В проекте у меня была общая тема приложения и кастомные классы для компонентов кнопки, input, ячейки для отображения лого и так далее. В приложении использовались стандартные Material3 компоненты. Стили хранились в отдельном классе/файле с переменными, поэтому изменения кода были в основном там. Но, конечно, чем раньше вы будете иметь ваш финальный дизайн, тем меньше придется переделывать в дальнейшем.

В процессе редизайна получилось легко перенести 90% изменений, но некоторые остались в to-do. Например, я не стал полностью заменять иконки, только изменил их стиль, фоновый хэдер для простоты сделал из 2х компонентов, форму виджета для режима день/ночь сохранил круглой.

Тут еще больше контента

Тут еще больше контента

Вайбкодинг лидерборда

Для конференции был придуман такой вариант использования игры: участники подходят и регистрируются у ребят на стойке, получая уникальный ID. По этому ID они играют на планшете (заполняя поле web ID), с которого данные отправляются на Web-приложение, где хранятся все успешные попытки. Каждые 3 часа мы подводили итоги «раунда» и награждали лидера рейтинга. Такая схема позволила не собирать и не хранить персональные данные участников в стороннем приложении, которое в теории можно взломать.

Для разработки лидерборда я попробовал vibecoding: попросил LLM написать backend с тремя ручками (ручка — это endpoint, по которому выполняется определенная бизнес-логика). Далее я отправил скрины приложения и попросил написать frontend в том же стиле. Интересно, что ИИ по скрину попытался реализовать всю логику работы приложения.

После нескольких уточнений из разряда: «Используй только цвета и стили из изображения» — дизайн получился неплохим. Цвета были перенесены 1-в-1, но JS-код вышел не так хорошо, чтобы сразу использовать. В случае endpoint в API из-за нейросетей в блоке появился лишний код.

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

Я остановился на варианте Docker + Flask Python Web-приложение + SQLite для сохранения ответов. Ответами были: 

  • Timestamp; 

  • User ID;

  • Score — время ответа (чем меньше, тем лучше).

Я развернул у себя на сайте это простое веб-приложение для сбора статистики и настроил роутинг запросов в nginx в этот контейнер. Не забыл проверить, что все везде доходит, поскольку могла возникнуть проблема с CORS.

В мобильном приложении обернул в try/catch отправку запросов на случай, если нет интернета или сервис недоступен.

Чтобы не хардкодить ссылку на веб API в мобильном приложении, я добавил возможность ввести её из "секретного" меню. Таким образом можно было настроить актуальную ссылку на лидерборд или даже лидерборды без правки кода и перезаливки в debug версии и тем более релиз версии в сторах.

f0ec04f4e0c3490c827e074d5171bd1d.png

Web-лидерборд игры

Жми сюда!

Жми сюда!

Конференция CodeFest 2025

На CodeFest 2025 меня позвали коллеги, предложив поиграть в DevRush на стенде Авито. Конференция проходила в Новосибирске, на ней было около 2000 человек, много лекций и стендов разных компаний. На нашем стенде за 2 дня в игру поиграли около 200 человек.

photo_2025-12-12 09.34.21.jpeg

Участники CodeFest 2025 играют в DevRush

У нас было 2 iPad с установленной игрой в режиме «Debug», все желающие подходили и проходили сначала режим обучения — первый уровень «Junior». Затем режим контест, где нужно было пройти игру на полном поле. В конце мы дарили носочки и брелоки-ремувки.

Среди участников были действительно быстрые геймеры, которые буквально с первых попыток проходили поле за 8 секунд. В первый день таких была пара человек, во второй день участники уже адаптировались и стало гораздо больше топ-перформеров.

За два дня лучшим результатом стал 6,42 секунды в режиме контеста! Нужно было найти 8 языков программирования на поле из 16 клеток. Это сильно.

В целом топ лидерборда выглядел всегда достаточно плотным. Игроки, конечно, удивляли.

Таблица рекордов

Таблица рекордов

Было 3 человека из 200, которые сами выбрали режимы «Big Data Frameworks» и отвечали на них. Только один участникпрошел все режимы игры с первой попытки и получил мерч за ProgLang, OS, Big Data.

Диалог у стойки:

О, у вас хорошо получается, вы, видимо, интересуетесь языками программирования! 

Участник указывает на бейджик: “Тимлид из большой компании”

–  А, тогда понятно.

Кто-то хотел соревноваться с другом в режиме контеста на одном поле. Кто-то подглядывал за ответами друзей, но даже совместными усилиями не удавалось легко пройти поле. Были, конечно, и участники, которым игра не заходила: кто-то пытался, но не мог распознать все нужные иконки, кому-то просто не понравилась сама игра. Но таких было немного — примерно 1%.

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

8e0720d660a5b7abfee20b7deaf00e8e.png

В конце первого дня конференции было пройдено 4448 игровых уровней на первом планшете и 3955 на втором!

Выводы

  1. Изменения игры для использования на конференции, адаптация под iPad и добавление Web-лидерборда оказались существенными. Эти оптимизации заняли меньше времени, чем я думал, но тоже заняло некоторое время.

  2. Здорово, когда ты можешь видеть, как люди играют в твою игру и радуются прогрессу. Это очень мотивирует!

  3. Только после реальной раскатки на пользователей можно заметить баги в игре. Например, первый же пользователей просрочил таймер и игра зависла из-за бага. В то время как я всегда тестировал накликивая все иконки.

  4. Вайбкодинг изолированных частей приложения помогает в разработке. Так я разработал отдельную часть Web-приложения с лидербордом.

  5. Поддержка коллег бесценна, среди них вы можете найти единомышленников.

  6. Лучше с самого начала подумать о дизайне, чтобы потом не пришлось переделывать. В идеале найти дизайнера в команду.

  7. Людям всех возрастов и грейдов нравится играть в профильные игры на IT-конференциях. Я видел много благодарных участников — ради этого стоит разрабатывать свои пет-проекты.

Благодарности

Хочу выразить благодарность своим коллегам Виктории Максимчук и Максиму Хоровинкину за идею поехать на конфу с игрой и проработку организации на стенде. Также отдельное большое спасибо коллегам дизайнерам за помощь с редизайном игры. Спасибо коллегам-редакторам за помощь с редактированием и публикацией статьи. Спасибо сообществу Coffee & Code, на их завтраках всегда можно посоветоваться по своим пет-проектам, и ребята всегда дают годные советы.

Что ещё посмотреть по теме

Кликни здесь и узнаешь

Кликни здесь и узнаешь