Обо мне

Хобби: программирование, спорт, футбол, шахматы.Черты характера: трудолюбие, коммуникабельность, отзывчивость, стремление к изучению нового. Люблю читать технические книги, связанные с программированием и IT-технологиями.В свободное время занимаюсь разработкой open-source проектов.Автор nuget-пакетов:CPIOLibSharp(https://www.nuget.org/packages/CPIOLibSharp/)RpmReaderNetLib(https://www.nuget.org/packages/RpmReaderNetLib/)

Профессиональные навыки
Участие в профессиональных сообществах
Опыт работы
Российский производитель кровельных, гидроизоляционных и теплоизоляционных материалов
Ведущий разработчик
Ноябрь 2017 — По настоящее время (2 года и 11 месяцев)

Проектирование и разработка Enterprise-решений на .Net(.Net Core). Основной язык разработки C#. 

  1. Реализация REST API сервисов на базе фреймворка NetCore WebAPI. Реализация слоев безопасности(claim-based), журналирования, swagger-публикация и других дополнительных слоев, специфичных для конкретных сервисов. Использовался  API First подход, используя OpenAPI спецификацию ver. 2 . Используемые технологии:
    1. Net.Core Web API
    2. MSSQL сервер
    3. Entity Framework(Entity Framework Core), Dapper, ADO NET
    4. Service Bus for Windows
    5. AutoMapper
    6. NLog в связке с ELK
    7. IIS в качестве веб-сервиса
  2. Реализация WCF сервисов.
  3. Реализация GRPC сервисов. Реализация утилиты по конвертации WSDL в proto-файлы(смотреть профиль github, в процессе) для возможности быстрой генерации контрактов GRPC сервисов.
  4. Админка для конфигурирования систем. Реализован на AngularJS + bootstrap3
  5. Написание интеграционных и функциональных тестов(NUnit + Allure) 
  6. Построение экосистемы для реализации нагрузочных тестов разрабатываемых сервисов и их реализация.
    Используемые технологии:
    1. Фреймворк k6 для написания тестов. 
    2. Grafana для визуализации результатов проведения нагрузочных тестов . 
    3. Zabbix для получения метрик, связанных с "железом" хост-машин.
  7. Написание небольших бенчмарков, используя библиотеку BenchmarkDotNet
  8. Контейнеризация разрабатываемых сервисов в Docker
  9. Создание и поддержка CI+CD, другие задачи DevOps. 
    1. TeamCity
    2. Octopus
    3. SonarQube
    4. Power Shell

Знание основных паттернов проектирования(банды 4-х),  принципов KISS, SOLID

Навык использования облачной платформы Azure.

Лидер в области автоматизации управления логистикой, создатель решений AXELOT WMS и AXELOT TMS
Старший разработчик
Июнь 2015 — Октябрь 2017 (2 года и 5 месяцев)

1. Разработка распределенных информационных систем на языке программирования С#, Java

Проекты:

a) ESB (сервисная шина данных) - предназначена для построения распределённого информационного ландшафта предприятия. Обеспечивает взаимодействие всех интегрируемых приложений в одном центре.

б) ServerAPI - высоконагруженная система, представляющая из себя фасад для предоставления данных из базы 1С внешним системам

в) Ценообразование - высоконагруженная система для расчета стоимости товаров на основе данных из 1С по заданному алгоритму.

Языки программирования: C#/Mono, C++, bash, Transact-SQL

Используемые технологии:

* написание, публикация, использование WCF-сервисов.

* работа с базами данных в СУБД - MSSQL, SQLite. Использование технологии On-Memory OLTP, работа с SQL Server Integration Services(SSIS)

* навык использования ORM: Entity Framework

* написание протокола прикладного уровня модели OSI для сетевого взаимодействия между узлами системы на основе бинарной сериализации объектов библиотеки Google Protocol buffer(protobuf)

* работа с шинной данных Service Bus for Windows Server(Windows Azure).

* работа с библиотекой журналирования - log4net

* LINQ(to object, to xml, to entities)

* портирование программ, написанных на С# для ОС Windows, Linux(Mono)

* создание установочных пакетов WIndows с помощью Wix Toolset(http://wixtoolset.org/). Подписывание пакетов SSL сертификатом.

* разработка плагинов для IDE Eclipse на JAVA(Standart Widget Toolset)

* сборка нативных библиотек(C++) и их использование в проектах на C# через технологию PInvoke.

* опыт использования системы сборки cmake для сборки проектов на языке С++

* создание установочных deb/rpm-пакетов для платформы Linux:

% знание форматов пакетов deb, rpm

% bash-скрипты

% написание демонов на базе системы инициализации upstart, systemd

2. Разработка системы для быстрого развертывания распределенной информационной системы на основе docker-контейнеров.

Язык программирования: Python3

Используемые технологии:

* docker-контейнеры(https://www.docker.com).

* python3

Кроме этого, имеет опыт в следующих областях программирования:

* сборка nuget-пакетов

* написание, проведение unit test, использование mock-объектов

Уверенные знания паттернов программирования и их реализации.

Системы контроля версий TFS, Git, "мост" между этими системами git-tfs

Навык использования облачной платформы компании Microfost - Azure.

Крупнейший в России оператор и производитель игровых аппаратов
Программист-разработчик
Август 2012 — Июнь 2015 (2 года и 11 месяцев)
Разработка игр под десктопные машины на базе OC Linux и под мобильные платформы для ios, android. 1. Разработка, оптимизация игрового движка, построенного на архитектуре open-source библиотеки SDL 2.0. Язык программирования - С++ * SDL 2.0 не поддерживала загрузку 16-битных текстур и загруку файлов в формате PVR. Была модифицирована библиотека с поддержкой данных возможностей. Это дало возможность экономии RAM-памяти при запуске игр. * Разработка утилиты поточного шифрования/дешифрования файлов на основе API библиотеки openssl с целью защиты ресурсов игры от просмотра. * Добавление в ядро библиотеки поддержки запуска само написанных шейдерных программ с соответствующим расширением API библиотеки SDL 2.0. * Разработан механизм многопоточной загрузки ресурсов(файлов) игры, что значительно дало прирост в скорости загрузки ресурсов. * Реализация поддержки использования текстурных атласов в игровом движке, что привело к оптимизации использования RAM-памяти и увеличения скорости вывода картинки на экран. * Механизм загрузки/выгрузки ресурсов в runtime(при запущенной игре). Данной поддержки не было в нашем игровом движке. Это позволило более равномерно использовать RAM-память при запуске игр. Механизм основан на технологии Автоматического подсчета ссылок (Automatic Reference Counting, ARC), который используется в языке Objective-C. В нашем движке механизм подсчета ссылок на ресурсы был реализован через классы умных указателей языка С++(shared_ptr). * Написание самих игр. 2. Портирование десктопных игр под android. Запуск нативных библиотек(C++), написанных для Linux, под систему android, используя JNI. 3. Написание игр под ios на open-source движке cocos2d. Языки программирования: C/С++, Objective-C, bash Используемые технологии: 1) OpenGL ES 2.0+ 2) Опыт написания шейдерных программ. 3) Система сборки проектов - cmake. 4) Работа с атласным упаковщиком графических текстур - TexturePacker. 5) Библиотеки STL, Boost, SDL 2.0, googletest, jsoncpp 6) Игровой движок cocos2d Система контроля версий - SVN, Mercurial. Опыт использования системы автоматической сборки TeamCity и системы отслеживания ошибок(багтрекером) - Youtrack.
ЗАО НПП ЗНАК
Киров
Техник-программист
Октябрь 2010 — Июль 2012 (1 год и 10 месяцев)

Подработка в студенческие годы.

Написание программных модулей цифровой обработки сигналов радиочастотных сигналов(язык С++):

1) Реализация модулей демодуляции цифровых сигналов с частотной модуляцией и их декодирование.

2) Разработка вокодера MELP.

Используемые технологии:

1) Библиотека Boost,STL

2) Библиотека Intel® Integrated Performance Primitives(IPPS)

Высшее образование
Вятский государственный университет
Киров
Факультет: Автоматики и вычислительной техники; ФАВТ
Сентябрь 2007—Август 2012 (4 года и 11 месяцев)