- Разрабатывал обычные микро-сервисы на классическом стеке Spring Boot: CRUD'ы, web-сервисы и "перекладыватели" json'а.
- При необходимости писал библиотеки для внутреннего использования, в силу стека представляли собой Spring Boot модули. Например: модуль логирования, который отправлял их в базу данных.
- Написал простой CI/CD сервис, способный вызывать Gradle-задачи, выполнять shell-скрипты и отправлять файлы на сервера.
- Разрабатывал сервисы с графическим web-интерфейсом на основе Vaadin. Одним из таких был портал управления внутренними сервисами: просмотр логов, удаленное выполнение команд и управление сервером авторизации.
- Верстал графические пользовательские интерфейсы (GUI) по готовым макетам из Figma. Тесно сотрудничал с дизайнером, чтобы согласовывать различные детали и доробатывать непродуманное ранее.
- Проектировал расширение и проработку возможностей графического движка, но на этом сотрудничество закончилось, не сошлись.
- Разработал конструктор пользовательских графических интерфейсов (кто-то называет это движком), позволяющий собирать сложные интерфейсы на основе конфигурации в коде или json. Написан с использованием OpenGL и имеет, например, следующие компонент: контейнеры, макеты (layout), кнопки, поля ввода. Для проработки визуальной составляющей, тесно сотрудничал с дизайнером, чтобы соответствовать внешнему стилю проекта.
- На основе вышеупомянутого конструктора написал множество различных готовых реализаций графических интерфейсов, например: дерево навыков, экран итогов игры, рейтинг игроков
- Отдельной, как по мне недооцененной, разработкой стал конструктор частиц (particle), способный обрабатывать десятки миллионов объектов в тик (20 раз в секунду). Концепция была вдохновлена устаревшей системой частиц в игровом движке Unity, позаимствовал: параметры и настройку поведения через математические кривые (curve).
- Начал разработку графического редактора на основе все того же конструктора интерфейсов. Основная цель: позволить дизайнерам, не понимающим код, создавать графические интерфейсы прямо в среде их использования (для специфики Minecraft это важно), а так же избавить разработчиков от необходимости верстки. Экспорт готовой верстки производится в Json, после чего разработчик может подключить его к любому проекту. Проект, к сожалению, так и остался в стадии MVP, в силу моего ухода с должности.
- Самостоятельно освоил Java Core: от примитивов, до структур данных, Collections, Stream API, многопоточность, ООП.
- Разобрался как работать с базами данных, системами контроля версий (Git) и системами сборки Maven и Gradle.
- Освоил основы Spring Framework: Boot, Web, WebFlux, Data, Security.
- Выполнял фриланс-заказы по разработке backend-функционала на Java.
Состояние:
Движок для desktop приложений с графическим интерфейсом на основе Vulkan API.
Ссылки: GitHub
Состояние:
Утилита, конвертирующая исходный код Java в Plant UML диаграмму зависимостей классов. Имеет гибкие настройки и легкую расширяемость.
Ссылки: GitHub
Состояние:
Удобный сериализатор и десериализатор Java объектов в виде компактного массива байт. Берет лучшее из нескольких технологий:
Ссылки: GitHub
@ByteEntity(1)
public class User {
@ByteProperty(1)
private int id;
@ByteProperty(2)
private String firstName;
@ByteProperty(3)
private short age;
@ByteProperty(4)
private Address address;
@ByteProperty(5)
private Contact[] contacts;
// Getters and Setters...
}
// Create Byte Mapper Context
ByteMapperContext context = new ByteMapperContext();
mapper = context.getByteMapper();
// Write User object to ByteBuffer
ByteBuffer exampleBuffer = ByteBuffer.allocate(1024);
mapper.write(exampleBuffer, user);
buffer.flip();
// Read User object from ByteBuffer
user = mapper.read(exampleBuffer);