Сетевой чат в Unity: Часть 1 — Основы и простой интерфейс

Просто о сложном: первая часть из серии статей на тему создания сетевого чата в Unity с использованием Netcode for GameObjects. Для тех, кто начинает разбираться в сетевой логике.
Искусство создания компьютерных программ
Просто о сложном: первая часть из серии статей на тему создания сетевого чата в Unity с использованием Netcode for GameObjects. Для тех, кто начинает разбираться в сетевой логике.
Привет, Хабр! Меня зовут Аня Крюкова, я занимаюсь спецпроектами для молодежи и лидирую работу с вузами. В прошлый раз мы разбирали задачи алгоритмического трека на True Tech Champ 2024, а сегодня поговорим о еще одном крупном мероприятии от нашей компании — МТС True Tech Hack.
Расскажу, почему в этом году мы поменяли формат хакатона, сколько ребят в нем участвовало и какие были результаты. Отзывы участников тоже будут. Спойлер: некоторые получили оффер в МТС прямо в день финала. Устраивайтесь поудобнее, задавайте вопросы и присоединяйтесь к нашим следующим хакатонам!
Еще пару лет назад я считал себя «классическим» продуктом. Знал пользователей, гонял дизайнеров, выкапывал инсайты, пинал разработку — все как учили. Но в последнее время начал замечать странную штуку: лента вакансий как будто перекроили. Вместо привычного Product Manager всё чаще вижу TPM. Technical Product Manager. Technical Program Manager. Technical ещё что‑то. Причём зарплаты те же или выше. А требования — местами совсем другие.
Сначала я это игнорировал. Ну подумаешь, слово «technical» прицепили. Потом — напрягся. Потому что под капотом оказалось: от тебя ждут не просто roadmap на квартал и пару фичей в прод, а полного погружения в архитектуру, понимания API, базы данных, CI/CD, пайплайнов, очередей, да ещё и умения всё это дело засинкать между 3 командами параллельно.
В какой‑то момент я начал задаваться вопросом: а я вообще кто?
Привет, Хабр!
Сегодня рассмотрим, как тестировать React‑хуки с помощью @testing-library/react-hooks
.
Сравнивая различный code-style в проектах, я упоминал про методы проверки коллекций на наличие элементов. Самые очевидные способы – это использование LINQ-метода Any() или сравнение свойства Count с нулем. И если вы выбрали первый вариант, то у вас могут быть проблемы. Поэтому предлагаю подробнее рассмотреть этот вопрос. Кстати, если вы выбрали второй вариант, то у вас тоже могут быть проблемы.
Многие используют Cursor, не зная, на что он на самом деле способен. Будем идти от простого к сложному.
1. Самое простое, что позволит улучшить работы с Cursor — это использовать Cursor Rules
Что это даёт?
- Cursor лучше кодит, делает это по вашим правилам.
- Можно настраивать разные правила для разных файлов/директорий.
По сути это дополнение к системному промпту, где вы делаете тонкую настройку один раз.
Документация здесь.
А тут отличные заготовки для правил
2. Включайте сразу несколько ИИ-агентов
В Cursor можно открыть 3 вкладки, где параллельно будут работать 3 ИИ-агента (это максимум). Единственное что - контролируйте, чтобы они они не использовали дни и те же файлы — могут перезаписать или удалить результаты работы другого агента, так что им нужно давать изолированные задачи.
Дополнительно можно ещё использовать фонового агента, который работает на серверах Cursor, и будет выполнять задание на основании вашего кода в репозитории. А потом все его результаты можно отправить в репозиторий или локально, однако он работает за дополнительную плату (Price-based)
Можно даже открыть второй Cursor, и запустить работу ещё там (особенно если работа ведётся с кардинально разными репозиториями), но это не очень удобно с точки зрения переключения между ними.
3. Кладите связанные репозитории в 1 папку и открывайте её в Cursor
Допустим, у вас есть бэкенд, фронтенд и ещё микросервис для управления подписками. Если вы поместите их в 1 папку и откроете её в Cursor, то он сможет ходить между ними и делать согласованный код. Допустим, он может сразу сделать контроллеры на бэкенде и api для них на фронтенде.
Привет, Хабр!
В этой статье рассмотрим, что такое композиционные хуки во Vue 3, зачем они нужны и как их использовать.
Или почему shiny tech stack ≠ рабочий продукт. Каждую неделю выходят новые «киллеры» фреймворков, базы данных, фреймворки на фреймворки, UI-библиотеки, подходы к state management, архитектурные паттерны и всё прочее.
Команда Spring АйО перевела и адаптировала доклад Мацея Валковяка “Performance oriented Spring Data JPA & Hibernate”, в котором на наглядных примерах рассказывается, как существенно нарастить производительность приложения, оптимизировав его взаимодействие с БД.
Доклад будет опубликован тремя частями. В первой части было рассказано об оптимизации управления соединениями с базой данных. Во второй части мы посмотрели на то, как оптимизировать код и настройки Spring Data и Hibernate, чтобы минимизировать количество отправляемых в базу данных SQL запросов. Третья часть посвящена обзору инструментов, которые могут помочь разработчику правильно организовать работу по регулярной оптимизации производительности приложений, в том числе при работе командой.
Разработка в области искусственного интеллекта развивается стремительно. Каждый месяц появляются новые модели и фреймворки, и часто возникает вопрос: какую версию Python использовать для локальной разработки и экспериментов, чтобы обеспечить максимальную совместимость и избежать «ада зависимостей»? Но, можете не тратить время на чтение. СРАЗУ ВЫВОД: Рекомендуемая версия: Python 3.10.x.
Неправильный выбор версии Python может привести к часам отладки, проблемам с компиляцией пакетов и несовместимости с ключевыми библиотеками, такими как PyTorch или TensorFlow. В этой статье мы проведем глубокий анализ совместимости более 30 популярных AI-моделей и 30+ библиотек, чтобы дать однозначный и обоснованный ответ.
Пользователь Reddit опубликовал в r/rustjerk сгенерированный ИИ пост под названием «Почему наш CTO запретил использовать Rust после одного переписывания кода». Очевидно, что этот рассказ выдуман, но у меня есть история похожая на него в том смысле, что успех проекта на Rust привёл к прекращению использования этого языка в компании.
Несколько лет назад я работал в стартапе-«единороге», во время пандемии развивавшемся невероятно быстро. Его основное приложение было написано на Ruby on Rails, а часть инструментария для работы с видео — на Node.js, но мы никак не применяли быстрые компилируемые языки наподобие Rust и Go. Через пару месяцев после моего прихода в компанию нам нужно было реализовать работающий в реальном времени сервис, который бы позволял нам получать информацию о том, кто из пользователей находится онлайн (то есть в профиле есть зелёная точка) и чем они занимаются (например: N пользователей смотрят презентацию X, M пользователей находятся в разделе маркетинга и так далее). Ничего особо сложного, но мы рассчитывали на изначальный рост до ста тысяч пользователей. Эта цель тоже не особо сложна, но большинство разработчиков согласилось, что Ruby — не лучший выбор для этого.
Привет! Меня зовут Азамат, я backend-разработчик в Циане. В работе мне часто приходится пересматривать архитектуру компонентов или проектировать её с нуля. Со временем у меня накопились подходы и наблюдения, которыми хочу поделиться.
В этой статье расскажу, с чего я обычно начинаю проектирование, какие вопросы задаю себе перед тем, как описывать архитектуру, и какие принципы помогают принимать решения.
Материал будет полезен тем, кто хочет влиять на архитектуру в своей команде и ищет, с чего начать.
Model Context Protocol (MCP) — это унифицированный протокол взаимодействия между большими языковыми моделями (LLM) и внешними источниками данных и инструментами. Spring AI предоставляет очень простой декларативный подход для добавления любых инструментов в контекст LLM с помощью MCP. Мы рассмотрим несколько простых примеров по созданию MCP-клиента и MCP-сервера.
Привет, хабровчане. В этом дайджесте делимся подборкой открытых уроков, которые проведут преподаватели OTUS в рамках набора на онлайн-курсы в июле. В программе — от глубоких погружений в архитектуру DWH и сетевые протоколы до навыков работы с ML-моделями и DevOps. Каждый урок — возможность разобраться в ключевых аспектах IT-сферы, задать вопросы экспертам и закрыть пробелы в знаниях.
Все уроки бесплатны и проводятся онлайн — участие доступно каждому. Выбирайте интересную вам тему и записывайтесь по ссылкам ниже.
Привет, друзья!
В этой серии статей я делюсь с вами своим опытом решения различных задач из области веб-разработки и не только.
В этой статье мы изучим библиотеку react-force-graph-2d для рисования двумерных графов.
Демо приложения:
Локальный запуск приложения:
git clone https://github.com/harryheman/react-graph.git
cd react-graph
npm i
npm run dev
Интересно? Тогда прошу под кат.
Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса, и сейчас я расскажу о софийской встрече Международного комитета по стандартизации языка программирования C++, в которой принимал активное участие. Это была последняя встреча, на которой новые фичи языка, с предодобренным на прошлых встречах дизайном, ещё могли попасть в C++26.
И результат превзошёл все ожидания:
Привет, Хабр!
Сегодня мы рассмотрим самый — казалось бы — скромный модификатор, который способен сэкономить кучу времени в горячих участках кода. Речь, конечно, про in
-аргументы. Рассмотрим, чем они отличаются от ref
и out
, где ими действительно стоит пользоваться, а где лучше пройти мимо.
Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями.
Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Моя любимая рубрика — «статьи со дна Хабра». Это когда человек вроде бы хотел поделиться болью, но случайно выставил на обозрение своё эго. Недавняя статья «В айти нет денег и повышений» — как раз из таких. Автор переборщил с надрывом и слегка обижен на мир. Поэтому и отхватил. Но посыл был хороший — и меня статья зацепила.
Если коротко:
Автор работает в IT с 18 лет. Сейчас ему 24. И он пишет, как несправедлив этот мир, потому что его потолок — 400k. Видимо, за умение слепить форму или написать CRUD’ы должны платить миллионы.
Он жалуется, что ему ни разу в жизни не давали повышения. Утверждает, что это бывает только в фантастических рассказах. При этом он сменил 7 компаний — то есть в каждой работает в среднем меньше года. Удивительно, почему его не хотят закидывать деньгами.
Итог статьи и её автора — печален. Мы наблюдали нелепый акт самовыпила с Хабра. Сначала автор улетел в минуса, потом в read-only. После чего создал второй аккаунт, чтобы в последний путь бряцнуть своим дипломом бакалавра.
Недавно вышла отличная книга PostgreSQL Mistakes and How to Avoid Them от Jimmy Angelakos — системного архитектора, практика и давнего участника сообщества PostgreSQL. Книга подробно разбирает распространённые ошибки, с которыми сталкиваются разработчики и администраторы при работе с PostgreSQL, и предлагает практичные решения: от тонкостей конфигурации и миграции до антипаттернов в SQL и выбора типов данных.
Я перевёл одну из ключевых глав этой книги — про неправильное использование типов данных. В ней подробно объясняется, почему, например:
timestamp without time zone
может ломать логику расчёта интервалов;
money
— это не то, чем кажется (и почему он опасен);
char(n)
и varchar(n)
не дают ожидаемой экономии и даже вредны;
serial
— это прошлый век, а identity
— настоящее.
Глава будет полезна всем, кто работает с PostgreSQL в проде — особенно backend-разработчикам, независимо от языка и фреймворка. Если вы проектируете схемы БД, пишете SQL-запросы или просто хотите избежать неприятных грабель — стоит прочитать.