Резюме: Инженер-программист (С++)
Опыт работы: 4 года
ООО "Фениксмед АИ"
Программист C++
Апрель 2025 — сейчас (9 месяцев)
Разработка приложения для анализа медицинских изображений и поддержки принятия врачебных решений в области травматологии на C++ с использованием ITK, VTK и wxWidgets.
Обязанности и достижения:
- Оптимизация скорости работы: Нашел и переписал самое медленное место в коде - модуль загрузки и подготовки DICOM-снимков. После правок загрузка исследований ускорилась в ~7.5 раз. Пользователи (врачи) перестали ждать загрузки нескольких тысяч снимков минутами.
- Проектирование и реализация новых модулей: Полностью спроектировал и написал с нуля три больших функциональных блока:
1) Инструменты измерений: Линейка, углы (в том числе для сколиоза - угол Кобба), эллипсы. Каждое измерение можно было выбрать, передвинуть его точки, удалить.
2) Инструмент разметки: Простой редактор на базе OpenCV, чтобы можно было рисовать поверх снимков (кисть, линии, ластик с возможностью стирать только фон или только нарисованные элементы). Этим потом пользовались для создания разметки под задачи машинного обучения.
3) Модуль анализа динамических исследований: Разработал систему для обработки специальных серий снимков (например, отслеживающих распространение контрастного вещества). Программа автоматически группировала сотни изображений по типам и временным меткам, а затем строила график изменения «яркости» тканей во времени. Такой график - ключевой инструмент для врача, чтобы визуально находить области с аномальным накоплением контраста, что является важным признаком при диагностике.
- Работа со сложной визуализацией: Разобрался в чужом коде на Java, чтобы перенести логику работы мультипланарного перекрестья в наше приложение на C++. Отвечал за синхронное движение трех плоскостей (аксиальной, корональной, сагиттальной)
- Доработка 3D-визуализации: Реализовал систему быстрого переключения цветовых схем (LUT-пресетов) для 3D-моделей, например, для ангиографии (CT-AAA). Это позволяло врачам быстро менять вид реконструкции под свои задачи.
- Общая кодовая база: Активно участвовал в код-ревью, старался писать понятный код и применять принципы SOLID, где это было уместно. Исправлял ошибки, работал с конфигурацией в XML, поддерживал работу с архивами (ZIP/RAR).
Технологии: C++, STL, ITK, VTK, wxWidgets, OpenCV, XML, multithreading, Git, SOLID.
---------------------------------------------
ООО "Стилсофт"
Программист-стажер С++
Июль 2024 — Март 2025 (9 месяцев)
Обязанности и достижения:
- Разрабатывал высокопроизводительные приложения-эмуляторы реальных устройств на C++ с использованием Qt4/Qt5.
- Реализовывал сетевое взаимодействие через TCP/UDP-сокеты (QTcpSocket/QUdpSocket), обеспечивая надежный и стабильный обмен данными.
- Работал с многопоточностью, использовал мьютексы и механизмы синхронизации для потокобезопасной логики.
- Изучал и внедрял протоколы обмена данными, интегрировал решения с корпоративными системами.
- Ключевой проект: разработка и поддержка эмуляторов устройств, включая обработку изображений с помощью OpenCV2.
- Анализировал техническую документацию и спецификации протоколов для корректировок конфигурационных файлов и реализации новых функций.
- Активно использовал Wireshark для анализа и отладки сетевых протоколов корпоративных продуктов, диагностики проблем взаимодействия и обратной разработки обмена данными.
Технологии и инструменты:
C++, Qt4/Qt5, TCP/UDP, многопоточность, мьютексы, OpenCV2, Wireshark, Jira, Confluence, Git
---------------------------------------------
C++ / Qt Developer
Февраль 2024 — Июль 2024 (6 месяцев)
Описание проекта:
Разработка учебного клиент-серверного приложения (онлайн-казино) на C++ / Qt с использованием WinSock2 и базы данных SQLite. Основной объём серверной логики и архитектуры клиент-серверного взаимодействия выполнялся мной. Проект прошёл техническое рецензирование в ООО «Стилсофт».
Обязанности и достижения:
- Проектирование архитектуры клиент-серверного взаимодействия, включая протокол обмена данными и систему команд.
- Разработка серверной части: обработка игровых клиентов в отдельных потоках, синхронизация с использованием мьютексов, управление игровыми сессиями.
- Реализация игровой логики (Blackjack) полностью на стороне сервера, включая все проверки, расчёты и управление состояниями.
- Работа с SQLite: хранение данных, выполнение запросов, подготовка структуры базы.
- Интеграция сетевого взаимодействия через WinSock2, отладка и корректная обработка пакетов на клиенте.
- Доработка клиентской части Qt-приложения для корректной визуализации состояния игры на основе данных от сервера.
- Совместная работа в небольшой команде: распределение задач, синхронизация изменений, ревью друг друга.
- Улучшение устойчивости протокола, оптимизация потоковой обработки и повышение стабильности соединений.
Технологии и инструменты:
C++, Qt, WinSock2, SQLite, многопоточность, мьютексы, клиент-серверная архитектура, Git
---------------------------------------------
CraftEngine — собственная студия разработки модов для Minecraft
2 года и 2 месяца
Java Developer / Modding Developer (freelance, коммерческие задачи)
Январь 2022 — Февраль 2024 (2 года и 2 месяца)
Работаю над коммерческими модами/плагинами для Minecraft (FML 1.7.10). Поддерживаю собственную modding-студию CraftEngine - https://craftengine-studio.gitbook.io/craftenginestudio.
Обязанности и достижения:
- Разработка модов и плагинов на Java под FML 1.7.10.
- Проводил рефакторинг и исправление багов в открытых модах Minecraft, включая устранение крашей, улучшение логики и оптимизацию производительности.
- Разрабатывал систему клиент–серверного обмена данными между модами и серверными плагинами, обеспечивая корректную синхронизацию игрового состояния и обработку пользовательских действий.
- Создание GUI-элементов, игровых механик, предметов, блоков и кастомных систем.
- Оптимизация производительности и устранение конфликтов между модами.
- Поддержка небольших коммерческих проектов для майнкрафт-серверов.
- Настройка Gradle, Forge-окружения, рефакторинг и ревью кода.