Обо мне

Целеустремленный. В любом деле рассматриваю только основательный подход. По любой технологии сначала полностью изучаю документацию и только после этого ее использую. 

В мои обязанности входит построение всего процесса разработки программного комплекса. Сначала проектирую основу систему, выбираю подходящие технологии, затем обсуждаем всем отделом архитектуру системы и только после этого приступаем к разработке. Помимо этого сам занимаюсь программированием


Имею опыт разработки многопоточных распределенных серверных приложений на Node.js. В частности мои разработки использовались в приложениях организации видеосвязи для "Прямой линии с Владимиром Путиным", в системе обслуживания сети вендинговых автоматов, в системе сбора и анализа видео-контента с камер видеонаблюдения. Что касается клиентской части, владею разработкой на Vue.js и React.js, HTML5 и CSS, использую git, webpack, babel и SCSS. Иногда использую TypeScript. Большинство написанных мной клиентских приложений являются Single-Page Application и поддерживают постоянную связь с сервером по протоколу WebSocket, что позволяет им получать информацию от сервера в режиме реального времени, что позволяет им получать информацию от сервера в режиме реального времени. Также использую в проектах различные виды хранилищ данных: реляционные, noSQL (MongoDB), аналитические (Clickhouse, ElasticSearch). Для разработки мобильных приложений использую React Native.

На протяжении всей профессиональной деятельности в основе проектов состояла слаженная команда из трех человек.  Каждый из нас является универсальным разработчикоам, способным сделать абсолютную любую часть проекта: от клиентской веб-части до сложной серверной части, организовать эффективное хранение и обработку данных в СУБД, написать настольное или мобильное приложение и многое другое.
Так как за долгое время между нами выработалось крайне эффективное взаимодействие, с особым удовольствием готовы рассмотреть предложения работы над вашими интересными проектами сразу для всей команды.

Профессиональные навыки
Опыт работы
Производитель программного обеспечения
Руководитель отдела разработки
Июнь 2018 — По настоящее время (1 год и 11 месяцев)
Руководитель отдела разработки На данном месте работы перед нами стояла задача разработки усовершенствованной системы видеоаналитики: от проектирования технологического стека проекта до построения легко масштабируемой архитектуры для выдерживания высоких нагрузок. Проект представляет из себя продвинутую систему видеонаблюдения, которая позволяет помимо обычного мониторинга камер в автоматическом режиме детектировать и распознавать предметы, лица, особенности поведения и другие сущности с помощью нейронных сетей. На мою часть команды легла вся работа кроме непосредственно обучения и подготовки нейронных сетей: от клиентского места оператора (как web-версия, так и настольные приложения под все популярные операционные системы) до балансировщика нагрузок, модулей перекодирования и обработки видео, аналитических систем, работа с медиа-серверами и т.п. Помимо простого отображения результатов детектирования нейронных сетей в реальном времени были также разработаны и внедрены в эксплуатацию полноценные сценарии работы: - вход-выход в закрытое помещение (например, переговорная комната) с помощью распознавания лица через устройство с камерой на входе (например, планшет); - вход-выход в организацию через турникеты по лицу с последующим построением отчетов по учету рабочего времени каждого сотрудника; - регистрация въезда-выезда автомобилей на территорию организации с построением отчетов, выдачей охране предупреждений о неизвестных автомобилях; - детектирование двойных проходов и вывод предупреждений оператору; - детектирование лиц из черного списка с выдачей предупреждений; - и другие сценарии. Данная система позволяет бороться с ситуациями, когда сотрудники ходят по чужим пропускам, передают пропуска друг другу и т.д. Для реализации сценариев потребовалось интегрироваться с разными системами контроля управления доступа. Также необходимо было написать множество эвристических алгоритмов, чтобы сгладить ошибки работы нейронных сетей. Решение состоит из множества модулей, способных масштабироваться на множество серверов. Наиболее сложные технические задачи по ходу проекта: - эффективная перекодировка кадров видеопотока для обработки нейронными сетями; - организация хранения видеоархива; - балансировка нагрузки между серверами; - просмотр прямых трансляций с видеокамер с минимальной задержкой на веб-клиенте с помощью html5-технологий; - эффективная организация транскодирований медипотоков для просмотра на клиентах; - алгоритмы пост-обработки результатов нейронной сети; - эффективная обработка и хранение потока событий от нейронных сетей по каждому кадру. Технологический стек проекта: Node.js, Vue.js, Media Source Extensions (для прямых трансляций в браузере), HLS (для видеоархива), MongoDB (для хранения основных данных системы), Clickhouse (для хранения результатов обработки нейронных сетей по каждому кадру, также используется для построения некоторых отчетов), nginx-rtmp, Electron.js (для настольных приложений) Также была разработана система удаленного контроля сотрудника на рабочем месте. После входа в систему веб-камера следила, что компьютером действительно пользуется именно авторизованный сотрудник, а не кто-то другой. В целях безопасности при появлении около компьютера постороннего человека система выдавала предупредение и при необходимости блокировала компьютер. Также данная система была адаптирована под дальнешее использование в системах удаленной сдачи экзаменов.
Разработка продуктов в области здравоохранения, информационной безопасности и образования
Заведующий отделом перспективных разработок
Июль 2009 — Апрель 2018 (8 лет и 10 месяцев)

Собрал эффективную команду разработчиков, способную создать полноценный программный продукт, включающий:
- работу с базой данных (NoSQL и SQL);
- разработку серверной части (backend);
- разработку браузерной клиентской части (frontend);
- разработку мобильных приложений под платформы iOS и Android;
- разработку настольных приложений под платформы Windows и MacOS;
- использование распределенной легко-масштабируемой архитектуры системы.

В мои обязанности входили как проектирование общей архитектуры системы, так и непосредственно разработка самих систем.

На протяжении всего времени работы старался использовать самые последние технологии и исследовать новые направления. Изначально это были Microsoft-технологии, такие как MS SQL Server, WPF, WCF, Silverlight, LinqToSQL, Entity Framework и др. Затем появлением новых технологий (и отказа от старых соответственно) решения стали основываться уже на Node.js в серверной части, а также Vue.js и Angular в клиентской. А для хранения и обработки данных стали использоваться NoSQL-решения, вертикальные базы данных, map-reduce-решения и т.п.

За все время работы было разработано несколько десятков проектов: как крупных, так и совсем небольших. К сожалению, не о всех проектах можно говорить, поэтому ниже будут перечислены только открытые и самые значимые.



Основные проекты.


1. Программный комплекс обработки видеозвонков для "Прямой линии с Владимиром Путиным" (2016 и 2017 гг.)
Был спроектирован и разработан программный комплекс для обслуживания большого количества одновременно совершаемых видеозвонков пользователей, способный легко масштабироваться в случае резкого возрастания нагрузки.
Система успешно справилась с нагрузкой как в 2016, так и в 2017 годах.

Данный комплекс состоит из следующих частей:
- iOS- и Android-приложения;
- клиентский веб-сайт;
- рабочее место оператора;
- рабочее место редактора;
- рабочее место администратора с системами мониторинга общего состояния комплекса, системами управления звонков;
- рабочее место для организации вывода звонка в прямой эфир.

Основная функция системы заключалась в организации видеодиалога между пользователями и операторами программы, во время которого оператор заполнял анкету пользователя и регистрировал видеозвонок в системе. Таким образом, система занималась распределением поступающих звонков между доступными операторами, организацией очереди ожидающих, предоставлением пользователю возможности самостоятельной записи видеообращения и т.д. Результат видеодиалога - видеоролики и анкету - система должна была преобразовать в заданный формат ("склеить"" ролики оператора и пользователя в один, конвертировать видео и аудио в нужный формат) и отправить посредством API организатора мероприятия в единую систему обработки обращений. Система была реализована нами в распределенном виде на нескольких серверах и обеспечивала безотказную работу при большом потоке пользователей.
Операторы использовали для приема звонков специальное разработанное рабочее место оператора, а пользователи совершали видеозвонки и записи видеообращений посредством разработанных мобильных приложений под iOS и Android или же через веб-сайт.

Для организации прямого эфира программы были проведены интеграционные работы с телевизионной компанией и соответствующим оборудованием. Также разработано рабочее место редактора программы, с помощью которого редактор мог посмотреть все текущие звонки между операторами и пользователями и перенаправить выбранный видеозвонок в телевизионную студию в ТВ-формате. После этого видеозвонок выводился в прямой эфир, а пользователь имел возможность задать свой вопрос непосредственно Владимиру Путину.

В процессе разработки данного комплекса было взаимодействие со всеми участвующими сторонами: мобильные операторы сотовой связи, Ростелеком, ВГТРК и др.
Особое внимание было уделено надежности системы, устойчивости к нагрузкам, а также безопасности всего комплекса. Успешное проведение мероприятий в 2016 и 2017 годах подтвердило выполнение поставленных задач. 

Технологический стек: Node.js, MongoDB, node-rtmp, ffmpeg, Vue.js (в 2016 Angular), websockets, Android SDK, Objective-C и др.



2. Программный комплекс вендинговой системы
Была разработана система, включающая в себя как программное обеспечение для торговых автоматов, так и серверную систему для управления всей сетью.
К программному обеспечению автоматов были предъявлены высокие требования как к визуальной составляющей (много медиа-контента и визуальных составляющих, такие как анимации), так и к надежности работы.
Программное обеспечение на автоматах предоставляло пользователю красивый "живой" интерфейс. Также было реализовано взаимодействие со всеми управляющими платами и датчиками торгового автомата. Торговый автомат в режиме реального времени сообщал о своем состоянии и событиях на единый сервер управления. Администраторская серверная часть позволяла управлять вендинговыми автоматами через веб-приложение. С помощью данной части можно управлять абсолютно всеми аспектами каждого автомата: удаленное изменение раскладок продуктов, обновление прошивок, изменении цен или акций на продукцию, обновлении рекламного контента и т.д. Кроме того, через приложение можно наблюдать за состоянием вендинговых автоматов в реальном времени (онлайн-оффлайн, температура холодильника, открыта ли дверь и т.п.) Автоматы присылали управляющему приложению логи о продажах, выдачах сдачи, ошибках, технических неполадках и т.п. Управляющее приложение сохраняло эти данные в общей базе данных и строило по ним различную аналитику.
Помимо функций управления автоматами также были реализованы функции складского учета, прогнозирования закупок, ведение отчетов и документации о закупках, подсчете зарплатных бонусов для сотрудников и др.

Технологический стек: Node.js и MongoDB для серверной части, Angular для веб-клиента, WPF для софта на автоматах.

Демонстрация работы системы: https://www.youtube.com/watch?v=ar1yfGKvwTA
https://www.youtube.com/watch?v=GJTRtLtGX-w


3. Доверенная среда коммуникации (BellChat), финалист конкурса на звание государственного мессенджера

Приложение чата организовало доверенную среду коммуникации как между сотрудниками одной компании, так между сотрудниками разных компаний. Одной из основных целей нашего чата являлось наличие централизованного хранилища сообщений и файлов, позволяющее иметь доступ ко всей переписке с любого клиента. Для чата были реализованы приложения под все основные настольные и мобильные операционные системы, а также веб-клиент, позволяющий пользоваться чатом везде без предварительной установки клиента. Также чат позволял организовывать групповые переписки для любого количества пользователей, что было особенно удобно для сотрудников компании. Список контактов каждого сотрудника содержал всех остальных сотрудников, что позволяло быстро выяснять рабочие вопросы с помощью личной переписки.
В чате было реализовано общение между сотрудинками разных компаний в отличие от standalone-решений. Тем самым, была предоставлена возможность вести как деловую переписку между сотрудниками компании, так и личную между друзьями пользователя.
В дополнение к основной системе был разработан мощный аналитический модуль, позволяющий администраторам компании проанализировать общение внутри организации, не нарушая тайны переписки. Благодаря данному модулю можно было выявить очаги связности, помогающие перераспределить команды внутри организации для более эффективной работы. 



4. Олимпиада для школьников для Президентской библиотеки им. Б.Н. Ельцина.

Данный программный комплекс был разработан еще в 2010 году, но до сих пор позволяет эффективно проводить онлайн-олимпиады по всей России для школьников по истории, русскому языку и обществознанию. Данная олимпиада проводится до сих пор и включена в официальный реестр Министерства образования.
Разработанный программный комплекс включает все стадии проведения олимпиады:
- регистрация участников;
- прохождение тестов;
- автоматическая и ручная проверка тестов;
- администрирование учетных записей участников;
- гибкое управление вопросами для тестов;
- анализ статистических данных и построение отчетов.

Технологический стек изначально был построен на Silverlight (браузерный клиент пользователя) + WPF (администраторские программы управления) + MS SQL Server. Позднее система модернизировалась и появились мобильный web-клиент на knockout.js, а затем и основной клиент был переписан без использования Silverlight. Часть администраторских возможностей перенесена из WPF-приложений в специально написанную администраторскую web-часть.



5. Система видеоаналитики на базе нейронных сетей

После создания отдела нейронных сетей в нашей организации появилась задача разработать универсальную систему для обработки видео-потоков с IP-камер с помощью нейронных сетей. Задача нейронных сетей заключалась в том, чтобы получить кадр и выдать информацию о найденных в кадре объектах (лица, типы предметов и т.п.). Задача нашей системы было организовать масштабируемую систему обработки медиа-контента, эффективного транскодирования и подготовки данных для нейронный сетей, последующий анализ результирующих данных, формирование уведомлений, отчетов, показа результатов работы в реальном времени. Также необходимо было решить задачи организации хранения видеоархива, распределенной обработки и хранения данных.

Часть наработок для реализации данной системы была взята из проекта "Прямая линия с Владимиром Путиным".

Технологический стек: Node.js, MongoDB, Vue.js, Websockets, Ceph, nginx-rtmp и др.

Программист
Сентябрь 2008 — Июль 2009 (11 месяцев)

Разработка на языке программирования C#. Разработка собственной платформы Document Framework для эффективного написания приложений на платформе WPF, взаимодействующих с базой данной посредством технологии LINQ. Создание приложений для заказчиков на основе технологий WPF и Silverlight.

Высшее образование
Московский государственный университет экономики, статистики и информатики
Москва
Факультет: Институт компьютерных технологий; ИКТ
Сентябрь 2005—Июль 2010 (4 года и 10 месяцев)
Математическое обеспечение и администрирование информационных систем Участник и победитель в составе университетских команд олимпиад по математике и программированию