Программист
Олег
Возраст
34 года (16 Февраля 1990)
Город
Екатеринбург
Описание
Губанов Олег.
Разработчик Программного Обеспечения.
Email: o_gubanov@mail.ru
Skype: o_gubanov.
Telegram: @WarLordRus12
Телефон: 89965930266
Почему Я:
В профессиональной разработке занят более 7 лет. Разработал систему для программирования решений, использующих архитектуру современных графических процессов для задач связаннных с распараллеливанием расчетов. Основной стек технологий, которыми я владею это технологии Microsoft. В качестве среды разработки использую платформу Microsoft Visual Studio.В своих разработках использую языка программирования С++ и С#. В совершенстве знаю технологии Microsoft Direct3D11- API и Microsoft DirectCompute(сs_5_0) и язык программирования HLSL.Имею опыт программирования вычислительных, геометрических, вершинных и пиксельных шейдеров. В качестве инструментов для работы с двухмерной графикой использую технологии Microsoft Direct2D, GDI и Windows Imaging Component.
Также имею опыт разработки информационных систем, используюя платформу Microsoft .NET FrameWork. В качестве технологии проектов для информационных систем использовал Microsoft Windows Forms.и Microsoft WPF(Windows Presentation Foundation). В качестве технологии проектирования баз данных для информационных систем, использую Microsoft SQL Server(2014-2022). Владею языком програмирования запросов SQL (SELECT, INSERT, UPDATE, DELETE). Моя основная деятельность это разработка комплексов для моделирования бизнес и технологических процессов в основе которых лежат алгоритмы для графических ускорителей и создания ииструментов управления данными комплексами в виде информационных систем.
Мой Опыт Работы:
Введение
На последнем месте работы я отработал с 2016 года по сегодняшний день. Это была компания Уралгазтест, которая специализировалась на разарботке программного обеспечения для моделирования технологических и бизнес-процессов. Я являюсь соавтором одной из разработок этой компании, а именно платформы для програмиррования распределенных вычислительных систем под кодовым названием GPUDigitalLab. В данной разработке также принимал участие мой коллега и наставник Елфимов Александ Анатольевич(кандидат Физико-Математичееских-Наук). Под его управлением и наставлениями нам удалось создать платформу, которая позволяла программировалть алгоритмы для описания технологических процессов и упаковывать их в роботизированные инструменты, для создания которых применяются технологии управления потоками, предоставленные Windows API и библиотеки stl(standard template library).
Мы разработали комплекс, в основе которого лежит ядро или центральный процессор системы, задачей которого исполнять вычислительные алгоритмы на уровне видеокарты по требованию от подключенного программного обеспечения. В качестве подключенного программного обеспечения выступает информационная система, управляющая реляционной, объектно-ориентированной базой данных, развернутой на удаленном сервере. В качестве типа проекта я использовал Windows Forms Application. Альтернативными технололгиями для программирования информационных системы могут выступать технологии Microsoft WPF(Windows Presentation Foundation), а также веб приложения Microsoft ASP.NET.
Далее я бы хотел описать созданые нами в рамках платформы подсистемы.
Система Компьютерного зрения и Видео-Аналитики
Данная платформа имеет собственную подсистему компьютерного зрения, которая позволяет работать как с изображениями, так и с видео-материалами. Данная платформа разработата на основе технологий Microsoft Media Foundation SDK(Обработка видео-Материала), Microsoft Direct2D(визуализация 2D графики), Windows Imaging Component и GDI(низкоуровневая обработка изображений, работа с пикселями кадра). Исползуя технологию МFPlay, объект медиа сессии(Media Session) и объект видео-дисплея я создало систему видео-воспроизведения, которая позволяла мне загрузить видео в память системы и вывести его на экран с сохранением аудио и видео потоков). Для того, чтобы выполнять захват кадров в необходимые временные отрезки мы использовали технологию таймеров ожидания, настроенных на актвацию через заданный временной интервал в миллисекундах. При срабаытваннии таймера активировалась операция захвата экрана в изображениес в названии которого был порядковый номер.
Из извлеченных из видео кадров, программным образом вырезались прямоугольные клипы заданной левой верхней точкой, длиной и шириной кадра.Этот клип преобразовывался в коллекцию пикселей. В качестве технологии коллекций на уровне нативного кода мы использовали std::vector. В качестве коллекций внутри информационной системы использовался объекнтно ориентировнный список(System.Collections.Generic.List). В основе всей моей платформы лежит автоматизированной исполнение DirectCompute шейдеров с разной логикой и природой в зависимости от решаемой технологической или бизнес задаче, та оптимальном количестве потоков и групп потоков в зависимости от тяжести алгоритма.
. Первым шагом анализа изображений мы применяли алгоритмы дескрипторов, которые принимали набор пикселов и присваивали им маркер в зависимомти от условия. После того как сработал алгоритм дескриптора, требуется применить алгоритм восстановления исходного объекта который вернет те пиксели исходного вектора, которые соответствуют условию.
После того как завершена операция препроцессинга кадра с помощью дескрипторов, к оставшимся пикселям применяется алгоритм анализа изображений. Именно он преобразовывает пикселы изображения в объекты, которые несут информацию, необходимую для контроля за состоянием объекта во время производственнного процесса.
Одним из демонстрационных проектов по компьютерному зрению является инструмент контроля розлива загрязнений на белую подложку. Система разбивает видео на набор кадров, после этого кадры обрабатываются с помощью инструментов комтб
В качестве формата хранения и обмена данными данная система использует формат .json. Для чтения и записи объектов в формат .json на уровне С++ испольузется библиотека boost, а на уровне программирования бизнес логики и пользоватьельского интерфейса на уровне языка С# используюется библиотека NewtonSoft.Json.
Разработка Системы Моделирования Бизнес Процессов.
В основе модели бизнес-процесса всегда прописывается логика взаимодействия объектов. Для описания этой логики я применяю UML(Универаальный язык моделирования).Для начала я реализовываю USE-Case диаграмму, для того чтобы отобразить, как сущности обмениваются инфомацией во время описываемого технологического или бизнес-процесса. Исползуя диаграмму сущностей(Entity Relationship), я описываю, как объекты системы относятся к друг другу и какова структура каждого объекта. После этого для описания системы строится диаграмма классов, в которой каждый объект имеет набор методов, каждый из которых несет орпделенную нагрузку. На основе этих диаграмм я проектирую базу данных в среде Microsoft SQL Server Management Studio.Для связи разрабатываемых проектов с базами данных используются строки подключения. Строка подключения к базе данных обычно прописывается в конфигурационном файле проекта информационной системы. Сама информационная система разрабатывается на языке С#.
Логика моделей бизнес-процессов реализовывается в виде вычислителных шейдеров, в которых прописывается структура входных и выходных объектов математической модели процесса. У каждой модели должен быть буффер для хранения глобальных переменных, используемых во время расчетов, наборы входных и выходных объектов, вспомогательные функции, каждая из которых вычисляет конкретный параметр выходного объекта и основная процедура вычислительного инструмента, которая и управляет всем расчетным циклом.
Для запуска моделей в виде вычислителных шейдеров я разработал систему процедур на языке С++. Обычно для разработки подобных решений я использую формат проекта Win32 Application.Cоздаеваемые процедуры отвечают за компиляцию шейдера, создания контейнеров для загрузки данных, создание преставллений котнейнеров для обмена данными между GPU и CPU, запуск расчетного алгоритма и сохранени результатов расчетов.
Обычно работа по созданию расчетного комплекса имеет следующие этапы
Проектирование Реалиционой базы данных
Разработка Информационной системы управления данными
Разработка математических моделей, реализующих бизнес логику
Разработка процедур для создания контейнеров данных для моделей, компиляции моделей и запуска моделей на уровне GPU.
Разработка системы запуска процедур обработки данных в режиме потоков СPU под управлением инструментов синхронизации потоков
Разработка процедур закрытого типа, которые принимают адреса входных и выходных файлов с расширением .json и управляют всем процессов обработки вычислительной задачи от получения исходных данных расчетной операции до сохранения результатов расчетов.
Разрабока сервервной процедуры в рамках серверной платформы для обработки запросов со стороны клиентских приложений
Разработка процедуры со стороны информационной системы для подключения к серверу, поставки исходных данных, получения от сервера результатов расчетов и сохранение их в базе данных.
В качестве примера такого проекта я могу представить инструмент, роботизации процессов обрабоки операции купли и продажи услуг в стоматлогической клинике.
Информационная система клиники, работающая с реляционной базой данных держит первичную информацию о всех исходных объектах стоматологической клиники.
Расчетный комплекс запускается и работает в режиме-клиент сервер, до того, как информационная система не запросит завершения его процесса
В качестве услуг клиники предствавляется линейка заболеваний челюсти, которые могут быть вылечены сотрудниками клиники.
Излечение каждого заболевания требует определенных затрат с точки зрения медикаментов и расходных материалов.
Медикаменты и расходные материалы закупаются клиникой в определенном порядке согласно потребностям.
Созданная математическая моддель в многопоточном режиме на GPU вычисляет себестоимость каждой единицы расходных материалов и медикаментов, использованных врачом, также система вычисляет стоимость трудозатрат врача. На основе этих параметров вычисляется себестоимость для сложной услуги.
Эта себестоимость кладется в базу данных и используется для работы с клиентами. При обновлении расходных данных система пересчитывает себестоимость услуги.
Образование
Проходил обучение в Аберистуитском Университете по спериальности программная инженерия с 2008-2011 год. Во время обучения у меня произошло несогласие с основной темой обучения, а именно изучения архитектуры операционных систем и технологий программирования на базе UNIX подобных систем и языков Java, Objective-C и Haskell. Я взял для самостоятельного изучения основ программной инжененрии другой стек технологий, а именно Visual C++, C#, HLSL. Используя данные технологии, я создал трехмерный движок Imagine3D, который позволяет создать программируемые анимации на основе 3D моделей и партикловых систем(систем частиц). Статические модели становилисть объектами сцены или Ассетами, импортированные скелетные модели становились акторами. Сценарий для трехмерной анимации объектов программировался на язые LUA. В этом сценарии прописывались действия, выполняемые акторами во время анимационной сцены, правила взаимодействия акторов во время столкновения на сцене, а также глобальный сценарий, состоящий из событий, которые выполняются системой вне зависимости от поведения участников.
Для навигации по пространству я использовал алгоритм бинарного разбиения простанства, который разбивает игровую область на диапазоны, каждый из которых имеет свое Id. Данная технололгия позволяла отслежитвать местоположение объектва в 3D пространстве
Для того чтобы искать своих противников, актор активировал алгоритм проброски лучей(ray-cast). Во время этого алгоритма считается количество столкновений между лучом и сторонниими объектами. В случае когда при пробросе луча происходило больше двух столкновений с объектами(стены) запускался выстрел в виде системы частиц.
Для ориентации в простанстве каждый актор имел набор матриц, которые позволяли ему поворачиваться и перемещаться в трехмерном пространстве.
Вокруг каждого актора был рассчитан геометрический примитив в виде объемной геометрической фигуры(куб, параллелипипед, сфера). На языке HLSL реализовывалась логика обнаружения столкновений объектов в 3D пространстве. События, происходящие межу акторами в 3D пространстве, прописывались в основном сценарии, созданном на LUA. При возникновении события на сцене запускалась настроенная логика.
Для того чтобы вывести визуализацию созданной анимации на экран была реализована технология ренедера 3D графики, используя алгоритм трассировки лучей. Анимация в режиме реального времени записывалась на видео
Созданное видео может быть воспроизведено на уровне видео-плеера системы. Видео-плеер позволяет подключаться к сервисам видео-трансляции и передавать видео клиентам по протоколу Http. Для получения видео-потока у клиентов должно быть клиентское приложение для приема данных.
Отзывы:
Елфимова Любовь Геннадьеваня(Уральский Федеральный Универсистем) - elfimovalg@rambler.ru
Язовксих Александр Владимирович(Математик, Исследователь) -zvriqel@gmail.com
27 июля, 2016
Ирина
Город
Екатеринбург
Возраст
63 года ( 5 июня 1961)
27 июля, 2016
Анатолий
Город
Екатеринбург
Возраст
69 лет (21 июня 1955)
27 июля, 2016
Наталья
Город
Екатеринбург
Возраст
38 лет (27 сентября 1986)