Всем доброго времени суток. В предыдущей статье я затронул тему клиентской разработки браузерной игры. В этой же публикации попробую пролить свет на детали разработки мультиплеера, а именно - разработки игрового websocket-tcp сервера на Netty.
Разберем технические особенности реализации такого сервера, способы улучшения производительности, игровую логику и т.д.
Продакт Sber Giga IDE, продюсер в Failover Bar
Зачем писать на Хабр, если каждый раз потеют ладони?
Сегодня стартует VI конкурс технических статей на Хабре «Технотекст». Команда комьюнити проводит его во второй раз, участвует в четвёртый. Так получилось, что трое из нас — активные авторы Хабра, которые писали для компаний, писали для себя и пишут для блога Хабра. И каждый раз, нажимая «Опубликовать», мы вздрагиваем, а ледяные ладони покрываются мелкими капельками пота. Поэтому мы стараемся делать конкурс с двойным дном: уютным для авторов-участников и познавательным для тех, кто только собирается присоединиться к VII или VIII конкурсу. Сам по себе «Технотекст» — это скорее ярмарка тщеславия точка сбора крутых авторов, способ получить немного признания и лучиков славы. Эти авторы все — победители, потому что написать статью (любую, не только на Хабр), опубликовать её и отвечать за свой текст — это уже подвиг. Потому что не так-то всё просто.
Генерация контрактов OpenApi или прикладной API first: гайд по генерации в Spring Boot приложении
Стек: OpenAPI, Spring Boot, Gradle
Небольшой гайд по генерации серверной и клиентской части в Spring Boot приложении.
Краткое содержание:
• Подготовьте репозиторий, в котором будут располагаться спецификации. Выделите отдельные директории для каждого сервиса и каждой версии спецификации внутри сервиса. Разделите спецификацию на удобные для работы части. Подготовьте техническую учётную запись с помощью который можно получить доступ к репозиторию.
• В сервисе-сервере сгенерируйте сервер по спецификации. Настройте созданные контроллеры/имплементируйте интерфейсы.
• В сервисе-клиенте сгенерируйте клиентскую часть по спецификации. Подключите сгенерированного feign клиента.
Эта неделя в мире Java (13 ноября)
Если вам лень читать три тысячи тредов в рассылке OpenJDK и ленты с новостями сотен обновлений фреймворков, то этот дайджест - для вас.
Java-дайджест за последнюю неделю (3 ноября):
• Обзор статей на Хабре
• Новости OpenJDK
• Spring, Jakarta, Web
• IDE, Gradle, тулинг
• Странные фреймворки
Helidon 4 вышел, а никто и не заметил
Те, кто использует Helidon в проде, наверняка точно знают, зачем им это нужно. Что делать остальным? Основная задача хомячка — объяснить детям концепцию смерти. Кажется, точно так же основная задача Helidon для широких народных масс — посмотреть на самые новые фишки Java и понять, нужно вам это или нет. Посмотрим, что же произошло в версии 4.0.0...
Разработка браузерных игр с использованием Phaser3, React, Typescript
Думаю, ни для кого не секрет, что каждый уважающий себя разработчик программного обеспечения должен иметь в своем портфолио хотя бы один пет-проект, а лучше полноценный продукт, дающий дополнительный постоянный заработок. Предметных областей и тематик приложений великое множество, но среди них есть одна, которая заслуживает отдельного внимания — разработка своей собственной игры.
Разработка игр это круто и весело! В данной статье разберем пошагово разработку демо небольшой браузерной игры.
Эта неделя в мире Java (3 ноября)
Java-дайджест за последнюю неделю (3 ноября):
• Spring, Jakarta, Web
• IDE и редакторы
• Тестирование
• Статьи и подкасты
• Обзор статей на Хабре
Они поклялись любить друг друга в горе и радости, а также мыть полы по очереди
Работа занимает огромную часть жизни. Кроме стандартных восьми рабочих часов, увлеченный работой человек тратит свободное время на дополнительное обучение, разбирается в сложных задачах. В IT-отрасли трата личного времени считается само собой разумеющимся и одобряется. Жизнь в профессии становится интереснее и разнообразнее, когда приходят новые задачи, проекты. Хочется уделять время всему: читать про новинки отрасли, разбираться в новых проектах, хорошо делать задачи, На это уходит время. И часто, не замечая того, человек все больше и больше тратит на рабочие интересы, и все меньше – на дела семейные и бытовые.
Однажды может прийти момент, когда близкие перестают снисходительно относиться к этому и требуют внимания.
Особенно часто женщины сталкиваются с тем, что близкие не принимают их профессиональные амбиции и стремления, «ревнуют» к работе. Зачастую считается, что предназначение женщины все-таки в семье и детях. Конечно, есть и другие случаи и их становится все больше. Но в этой статье мы рассмотрим - а как же все-таки не отказываться от профессиональных амбиций, но и не разрушать близкие отношения с родными.
Какого специалиста искать для озвучания игры? Звуковая команда: структура и обязанности
Приветствую всех, кто интересуется разработкой игр!
Начиная с момента, когда я впервые попал в мир геймдева в 2008 году, я увидел, как игровой саунд-дизайн совершенствуется и становится важной частью игр.
Мой путь в области игрового аудио начинался с работы техническим саунд-дизайнером в компании, которая специализировалась на разработке игр и CG видеороликов. Позже я много времени провел, работая в качестве саунд- дизайнера, создавая звуковые ресурсы. Затем, профессиональная карьера привела меня в компанию Playrix, где я занимал должность саунд-продюсера, а позже, исполнительного саунд-продюсера, руководя разработкой аудио для лучших продуктов компании. После этого я работал в компании G5 Entertainment, где занимал должность директора звукового отдела. В настоящее время я руковожу студией по разработке звукового дизайна для игр.
За годы работы в индустрии игр, я накопил богатый опыт и знания, которыми хочу поделиться в этом блоге. В серии публикаций вы погрузитесь в тонкости процессов создания звукового сопровождения для игр, узнаете, как эффективно взаимодействовать с аудио-специалистами и познакомитесь с современными практиками в области разработки игрового аудио. Наша цель - улучшить взаимопонимание между разработчиками и аудио-специалистами, повысив тем самым качество игр.
Игровое аудио — это магия, которая делает игры живыми и захватывающими. Я приглашаю вас погрузиться в этот мир и научиться использовать его во благо ваших игр!
Как я использую WordPress для создания Телеграм-ботов
Не мало людей удивятся «А что так можно было?». Да – хорошие боты можно писать на PHP. Да – WordPress хорошо подходит в качестве фреймворка. Далее поделюсь своим опытом. Речь пойдет о веб-хуках из Телеграм.
Погодите хейтить за нагрузку и тяжесть.
Реестр российского ПО: базовая информация и требования для попадания
Реестр российского программного обеспечения, появившийся более 5 лет назад, в 2022 году приобрел небывалую популярность: за год на включение в него было подано около 20 тыс. заявлений, что превышает суммарное число заявок за предыдущие 4 года, однако в настоящее время в него включено чуть более 17 тыс. программ, а значит статистика успешности подачи заявлений проста: в реестр проходит около 40% заявителей.
В этой статье я попробую объяснить простыми словами (перевод с юридического на русский), как попасть в реестре российского ПО, а самое главное: зачем?
В свою очередь в следующих статьях я постараюсь детально разобрать все этапы подачи заявления для оказания государственной услуги по включению в реестр российского ПО. Напомню: всего их 13.
Прим.: в статье не будут использованы четкие формулировки из документов Правительства и Минцифры, а будет представлен авторский пересказ базовой информации, которую необходимо знать перед планированием включения в реестр. Подробный регламент подачи заявки доступен здесь.
Puppeteer в Node.js: Антипаттерны, которые следует избегать
Puppeteer — это мощная библиотека автоматизации работы с браузером для веб-скрейпинга и интеграционного тестирования. Однако ее асинхронный реалтайм API оставляет вам достаточно много пространства для неумышленного создания проблем и антипаттернов.
Хоть эти антипаттерны и не являются полноценными ошибками, исключение их из скриптов (или хотя бы разумное использование) значительно повысит надежность вашего Puppeteer-кода.
Давайте начнем.
Шина между Веб-воркерами и основным потоком. Ускоряем работу JavaScript
Хотите узнать, как ускорить выполнение JavaScript в веб-приложениях? В этой статье я подробно расскажу о веб-воркерах, шине данных между основным потоком и веб-воркерами, и как это можно применить в Angular, React и Vue, используя мой npm пакет web-worker-bus. Вы узнаете, как вынести тяжелые вычисления в отдельные потоки, организовать обмен данными, и как это все собрать в единую архитектуру. Примеры кода, инструкции и советы внутри помогут вам сделать ваши проекты быстрее и эффективнее с помощью этого инструмента. Освоение этого подхода и использование web-worker-bus может стать значимым улучшением в ваших проектах. Загляните, если интересуетесь оптимизацией JavaScript и хотите узнать, как мой пакет может вам в этом помочь!
ChatGPT помогает разгрузить Middle разработчика: как за 5 минут сделать 1-2 часовую задачу
Привет, меня зовут Артем Рыбин, и я team lead backend developer в KOTELOV. Сегодня я покажу, как решить практическую задачку с помощью нейросети и сэкономить больше часа. Будем покрывать unit тестами DTO класс в приложении на Laravel.
Потерянное искусство: художники золотого века игровых обложек
30 лет назад к покупке игры мотивировала информация в прессе, реклама в телевизоре или коробка на прилавке с красивой обложкой. Цепляющий рисунок заставлял посетителя магазина взять коробку в руки, прочесть аннотацию и посмотреть на скриншоты. В наши дни это кажется чем-то очень далеким, так как все привыкли читать отзывы, играть в демоверсии, смотреть трейлеры или стримы.
Над оформлением обложек часто работали известные художники, талантливые иллюстраторы и комиксисты. Свои картины они рисовали на основе внутриигровой графики и геймплея. Цель была проста: изобразить дух игры на её обложке.
Подробно рассказываем о феномене и вспоминаем значимых художников, которые подарили свои рисунки хорошим играм.
IntelliJ IDEA 2023.2. Language Server Protocol, AI Assistant, IntelliJ Profiler в редакторе, GitLab merge requests, ftw
Только что вышла IntelliJ IDEA 2023.2. В этом релизе в IDE появилась куча интересных фичей и важных улучшений.
Вы можете скачать последнюю сборку с официального сайта, или из бесплатного приложения Toolbox, или из snap-пакетов для Ubuntu.
Этот релиз IntelliJ IDEA 2023.2 представляет вам AI-ассистента, вооруженного набором инструментов машинного обучения. IntelliJ Profiler показывает подсказки в редакторе, делая профилирование более интуитивным и иформативным. Еще, в этом релизе появилась интеграция с GitLab.
В том посте мы пробежимся по всем основным фичам IntelliJ IDEA 2023.2. В отличие от официального анонса, вся европейская политкорректность выкинута на свалку, автор перевода не видит никакой ценности в соблюдении повесточки.
Кроме того, в этот четверг в Питере будет встреча Javawatch, посвященная Java 21. Я прочитаю мини-доклад минут на 30 о новых фичах, и потом мы сможем все вместе собраться и за кружкой пива это обсудить. Анонс события в телеге, обсуждение в чате. Я бывший PMM в JetBrains Big Data и тимлид в Remote Development/Projector, а сейчас работаю над российским дистрибутивом Java - Axiom JDK.
Прожарка java.lang.String
Давайте абьюзить баг в java.lang.String
, который позволит делать очень странные строки. Мы сделаем "Hello World", который не начинается с "Hello" и покажем, что не все пустые строки равны между собой. Научимся прожаривать строки в чужих классах.
Простыми словами об InlineKeyboard в Телеграмм ботах на java
За 4 месяца самостоятельной жизни моего первого бота стало понятно, что пользователям не хочется что‑либо вводить в поле сообщения. Что значительно удобней было бы просто нажимать на очередную кнопку при выборе формы документа. Иными словами, в целях упрощения взаимодействия с ботом необходимо минимизировать возможность использовать обычную клавиатуру смартфона или ПК.
И такая возможность есть, если применить InlineKeyboard — вариант кнопок (за которыми скрыт необходимый функционал), прикрепленных непосредственно к сообщению от бота.
Применить такую клавиатуру я решила при разработке другого бота. Однако столкнулась с тем, что ни в документации Telegram bot Api, ни в статьях / разборах, размещенных в Интернет, нет прозрачного пошагового пояснения всей цепочки процессов. Разобравшись для себя с взаимосвязями вызовов в InlineKeyboard я решила этим поделиться с другими разработчиками.
Автоматически ищем техдолг с помощью RefactorFirst
Недавно вышла новая версия библиотеки RefactorFirst 0.4.0, которая позволяет определять и визуализировать технический долг. С этой информацией можно пойти к своему тимлиду или продукт-оунеру и выбить время на рефакторинг, имея под руками железные доказательства.
Она ищет в Java-коде Божественные Классы и классы с очень высоким уровнем связности, которые следовало бы отрефакторить. Для этого используются правила God Class Rule и Coupling Between Objects Rule из опенсорсного коданализатора PMD.
Коротко опишу, что это такое, и как этим пользоваться.
Новые фичи в IDEA 2023.2 EAP 7
Быстро приближается релиз IntelliJ IDEA 2023.2, а значит, текущему EAP-у осталось жить недолго. Вы все еще можете успеть попробовать новые фичи, и попросить исправить их до релиза, когда исправлять будет уже поздно.
JetBrains ушел из России, но его IDE всё ещё является основным средством разработки на Java. Как у бывшего product marketing manager в JetBrains, у меня есть некоторый опыт в написании и переводе таких статей. Изначально, принести эту новость сподвигло то, что в ней есть важное обновление плагина Big Data Tools, над которым когда-то работала моя команда. Кроме того, JB разродились официальной поддержкой LSP, что наверняка, стоило им титанических моральных усилий. PMM-ов бывших не бывает, им просто перестают за это платить.
Я попробую описывать самые значимые новости, касающиеся JetBrains IDE. Чтобы получать больше таких новостей - подписывайтесь на Хабре на наш блог, а ещё вы можете пройти в мою личную телегу @Javawatch.
Под катом - обзор перечисленных фичей, со скриншотами. Поехали.