Программист С++, C#

Алексей Ткаченко

Образование:

Диплом с отличием в области прикладной математики, 1992, Московский Государственный Университет Леса, Факультет Электроники и Системотехники, г. Мытищи, Московская область, Россия. Этот факультет был создан с целью подготовки специалистов для космических аппаратов промышленности заводов, расположенных поблизости, в городе Королев.

Сертификаты:

Brainbench: C# 3.0 Programmer, C++ Programmer

(http://www.brainbench.com/transcript.jsp?pid=189246)

Опыт вкратце:

В 1986 году сделал программу Fortran для печати 3D-графика любой математической функции на алфавитно-цифровом принтере для IBM 370. В 1987 году написал драйвер видеокарты для PDP-11 на ассемблере.

В 1992 году я получил диплом с отличием в области прикладной математики.

В 1994 году одним из первых в организации использовал графический интерфейс и сделал программу на Windows и C++ , которая отображала график телеметрии космических аппаратов в двух масштабах одновременно с использованием двух синхронных курсоров.

С 2002 года я работал в различных проектах, связанных с корейской электроникой, активно используя смесь старых и новых технологий, таких как C, C + +, C #, Win32, MFC,. Net, дизассемблер в различных комбинациях. Были также некоторые интересные проекты, как трехуровневая система для линии по производству LCD, система для тестирования оборудования космических аппаратов в режиме реального времени, встроенные программы для WinCE и FreeRTOS.

В большинстве проектов я делал все сам от анализа до разработки, тестирования и установки.

Около половины проектов включали в себя работу с большими объёмами унаследованного кода, соединение старых и новых технологий, рефакторинг и реверс инжиниринг.

Технические аспекты:

Операционные системы:

Windows XP/2000/NT/98/95/3.11, MS-DOS 6.20, Windows CE, Windows 7, OSX 10.6

Программное обеспечение:

MS Visual C++, C#, .NET, WinForms, ATL, MFC, QT, STL, SourceSafe, Internet Explorer, Word, Access, SQL Server, Oracle, XCode

Языки:

C++, C#, DHTML, VBScript, JavaScript, XML, SQL

Опыт работы:

June 2012 - October 2012 Personal project:

• Программное обеспечение для наручных часов MetaWatch:

- Переделка и расширение встроенной системы на языке C для поддержки дополнительных режимов и пунктов меню.

- Встроенные C++ классы для отображения минутной и часовой стрелки, календаря, будильника, секундомера и переключения между двумя часовыми поясами.

- WinForms C# редактор анимации для создания изображения минутной и часовой стрелки с посекундным обновлением и сжатием данных.

- HTML странички с информацией о часах: www.windy-dunes.com/watches

(проект отложен в ожидании следующей модели, т.к. часы предыдущей модели уже закончились)

Среда разработки: Code Composer Studio 5.2, plain C, C++, FreeRTOS, Git, Visual Studio 9.0, C#, WinForms, SourceSafe, Windows XP.

Май 2012 - Июнь 2012 Удалённая работа для Южной Кореи:

• Несколько компонентов для системы водоснабжения:

- Компонент для написания отчётов в формате Excel с использованием информации из базы данных.

- OPC клиент, сохраняющий телеметрию в MS SQL Server.

- Программа для мониторинга данных газовых сенсоров в базе данных Oracle.

Среда разработки: Visual Studio 9.0, managed C++, C#, WinForms, Open XML SDK, LINQ to SQL, OPC DA, SQL Server, Oracle, SourceSafe, Windows XP.

Февраль 2012 - Апрель 2012 Immersive Technologies, Перт, Австралия:

• Улучшение WinForms программы для симулятора, обучающего вождению грузовика на руднике

Среда разработки: Visual Studio 10.0, C#, WinForms, Windows 7.

Февраль 2011 - Октябрь 2011 NCH Software, Канберра, Австралия:

• Развитие многоплатформной C++ библиотеки для OSX 10

NCH Software использует преимущества своей многоплатформной C++ библиотеки для портирования их программых продуктов, работающих с аудио и видео с Windows на Apple OS X. Я участвовал в разработке этой библиотеки на стороне OS X добавив ряд новых элемнтов, например воспроизведение и запись MIDI, конвертация в различные форматы аудио и немного элементов графического интерфейса. Я работал одновременно на двух компьютерах используя удаленное соединение с OSX 10.6 на Windows 7. Один и тот же фолдер с исходниками на Windows 7 использовался для компилирования и отладки с помощью Visual Studio и XCode. Это давало возможность проверять результаты сразу же на обеих операционных системах.

Среда разработки: C++, XCode, Visual Studio 9.0, OSX 10.6, Windows 7, MIDI.

• Реверс инжениринг аудио декодера

Я провел три месяца восстанавливая исходный код аудио декодера, 3000 команд ассемблера были проанализированы для написания многоплатформенного декодера на C++.

Среда разработки: C++, Visual Studio 9.0, Windows 7, IDA, ассемблер.

Июль 2010 – Сентябрь 2010 Codan, Аделаида, Австралия

• Адаптация QT библиотеки для Windows CE 6.0 ( see http://developer.qt.nokia.com/forums/viewthread/633 )

Codan был занят ребрендингом их радио путём замены старого двухцветного дисплея на новый цветной. Они решили использовать Windows CE 6.0 но на тот момент у Nokia не было готового алгоритма для компиляции библиотеки QT для этой операционной системы. Поэтому я провёл некоторое время разрабатывая пошаговую последовательность, исправляя ошибки и меняя настройки, чтобы скомпилировать QT. Также я организовал хранение исходников для Platform Builder на SVN.

Среда разработки: MS Visual Studio 7.0, QT, Windows CE 6.0, Windows XP

Март 2010 - прибыл в Австралию по визе постоянного резидента ( Skilled Independent, Class VE, subclass 175 ).

Январь 2010 – Февраль 2010 NexGeo, Daejeon, Южная Корея

• Универсальный QT контрол для редактирования опций, хранящихся в XML

NexGeo работал с большим количеством геологических проектов, один из которых относился к научной программе, которая могла вычислять трёхмерную картину подземных водоносных слоёв. Эта программа требует сотни настроек и десятки диалогов, которые было необходимо сделать. Я решил максимально автоматизировать этот процесс и сделал универсальный QT контрол для редактирования опций, хранящихся в XML. Он даёт возможность создавать новый диалог путём добавления в систему двух XML файлов - без компиляции программы. Один XML файл описывает имена настроек и может быть сделан в текстовом редакторе,а другой описывает графический пользовательский интерфейс и может быть сделан в программе QT Designer. Никакого дополнительного программирования не нужно, данные автоматически добавляются к XML файлу с использованием соответствия имён параметров и имён контролов в диалоге.

Среда разработки: MS Visual Studio 9.0, C++, QT, Windows XP.

Январь 2009 – Декабрь 2009 Asia Pacific Systems ( совместно с Kornic Systems), Seoul, Южная Корея

• Встроенный броузер для XML диалогов

В 2009 году большинство продуктов фирмы Asia Pacific Systems относились к чему-нибудь встроенному, например спутниковые телефоны для Thuraya. Так же они участвовали в космической программе, поэтому, когда они получили контракт на подготовку спутника, им нужно было "чистое помещение" для сборки и тестирования. В результате они купили фирму Kornic systems где я работал. Я начал участвовать в их проекте по разработке настольного WinCE IP телефона, делая встроенный броузер XML диалогов в соответствии со спецификацией Cisco IPPhone XML Objects. Проект включал активное взаимодействие с HTTP сервером на PC и с ASP сервером внутри телефона, поэтому я также делал тестовые веб страницы на Apache Tomcat Java Server и встроенные ASP компоненты.

Cisco IPPhone XML Objects - это диалоги на основе XML, которые дают возможность взаимодействовать с внешним интернет или интранет HTTP сервером, вводить текст, получать сообщения, нажимать кнопки, выбирать элементы из списков или точки в графической информации.

Среда разработки: MS Embedded Visual C++ 4.0, MFC, XML, ATL, SAXXMLReader Windows CE.

• Адаптация системы тестирования оборудования космического аппарата для другого типа карты стандарта MIL-STD-1553

Много работы было связано с компьютерной системой тестирования встроенной электроники спутника, подключенной к шине MIL-STD-1553. Она широко используется в военном и авиационном оборудовании. Компания хотела переключиться на другой тип MIL-STD-1553 карт, поэтому я переделал модули, относящиеся к ним. Некоторые интерфейсы были не документированны и я провёл около месяца с интерактивным дисассемблером IDA Pro, чтобы определить внутреннюю логку. Это помогло переключиться с карты DDC Milbus на Excalibur Milbus без изменений в интерфейсе и основной системе. Для управления картой Excalibur Milbus я создал библиотеку базовых классов поддерживающих динамическое изменение Milbus цикла, который может быть перестроен по внешнему сигналу. Для тестирования этих компонентов я сделал симулятор, работающий в режиме удалённого терминала Milbus для приёма команд и посылки ответов. Система включала источники питания, которые управлялись с использованием MFC Windows Sockets.

Среда разработки: MS Visual Studio 8.0, C++, Win32, STL, MFC, Windows Sockets, Windows XP, MIL-STD-1553, DDC Milbus, Excalibur Milbus, IDA Pro.

• Рантайм GUI редактор для WPF

Обычно тестирующие программы имеют много окон, в которых содержатся данные о состоянии оборудования, поэтому иногда удобно предоставить оператору возможность самому создавать элементы графического интерфейса и располагать их на экране. Для этой цели я использовал Windows Presentation Foundation и сделал динамическую библиотеку, которая позволяет выбирать WPF элементы с помощью мыши, менять размер и расположение этих элементов, показывать и менять их свойства в процессе выполнения программы.

Среда разработки: MS Visual C#, .NET, Windows Presentation Foundation.

Март 2005 – Декабрь 2008 Kornic Systems, Suwon, Южная Корея

• Система управления линией по производству LCD

В этот период period Kornic System был в основном занят в создании линий по производству LCD для Samsung и Foxconn. Эти производственные линии обычно включают PC сервер, который активно взаимодействует с оборудованием для сбора информации и с фабричным сервером для получения команд и рецептов. Вся информация также отображается на дисплее оператора в реальном времени. Оператор может видеть статус каждого робота, станка, количество обработанных ими заготовок и т.п. Я сделал такую систему с помощью MS Visual C# and C++, .NET и ATL. Она имела трёхуровневую архитектуру и включала MS SQL сервер и использовала .NET Remoting для связи с удалённым клиентом. Основная бизнес-логика была реализована как сервис со специальной библиотекой, которая представляла реляционные данные в виде объектов с использованием ADO. Все структуры обмена данными были основаны на одних и тех же универсальных классах, которые использовали XML сериализацию. Все окна удалённого клиента автоматически обновлялись с помощью .NET Remoting. Графический интерфейс клиентской прогрммы был основан на настраеваемых элементах управления на основе стандартных элементов MS WinForms. Сервер общался с оборудованием, контролируемым PLC по MELSEC NET протоколу и с фабричным сервером по HSMS протоколу через Windows Sockets.

Среда разработки: MS Visual C#, C++, .NET, WinForms , .NET Remoting, ATL, STL, XML, MS SQL, Windows Sockets, HSMS, MELSEC NET.

• Рефакторинг системы управления роботами для разработки полупроводников

Kornic System делал также программное обеспечение для производства полупроводников. Логика контроля перемещения кремниевых заготовок между роботами и обрабатывающими устройствами может быть очень сложной и должна быть максимально оптимизирована. Система должна принимать решения в непредсказуемом количестве ситуаций, поскольку время обработки меняется непредсказуемо и одна и та же система может обрабатывать заготовки из разных лотов и по разным рецептам. Разработка этой системы была начата в эпоху процедурно-ориентированного программирования и по мере усложнения размер кода начал расти экспоненциально. Я сделал рефакторинг, который отделил логику принятия решений от логики управления устройствами, сделал структурированное C# API для управления устройствами и базовые классы, которые заменяли процедурно-ориентированную логику принятия решений на систему принятия решений на основе правил.

Среда разработки: MS Visual C#, C++, .NET, WinForms, XML, HSMS.

Октябрь 2002 – Июль 2004 Samsung Research Center, Москва

• Система тестирования для DVD плеера

Мой отдел занимался программами тестирования оптических систем CD и DVD плееров. Я сделал MMC snap-in для тестирования DVD плеера через диагностический интерфейс, подключенный к порту RS-232. Компонент давал возможность анализировать структуру DVD диска, использовать скрипты, чтобы проигрывать его содержимое в любой последовательности, генерировать отчёты в формате HTML и отображать видео с помощью DirectShow на экране PC во время тестирования.

Среда разработки: MS Visual C++, STL, ATL, MMC, DHTML, JavaScript, DirectShow, DVD, RS-232.

• Модуль для создания коллекций мультимедийных файлов

Также я участвовал в другом проекте, который был предназначен для создания коллекций мултимедийных файлов и конвертации их в DVD и MPV форматы. Я сделал модуль документа, который поддерживал иерархическую структуру и сохранение в формате XML и GUI модуль с древовидным и списковым отображением элементов.

Среда разработки: MS Visual C#, WinForms, C++, STL, ATL, .NET, XML, DirectShow, DVD, MPV

Июнь 2001 – Сентябрь 2002 Compumark, Москва

• Бизнес-логика для печати изображений через интернет

Compumark был торговым представительством Lexmark по продаже принтеров. Они пытались сделать программную систему для печати высококачественных изображений через интернет. Она должна была иметь сложную логику генерации содержимого web страницы индивидуально для каждого пользователя в зависимости от многих пораметров и настроек. Я активно поучаствовал в этом процессе сделав компоненты для GUI и бизнес-логики.

Среда разработки: MS Visual C#, WinForms, C++, STL, ATL, MS Access и ADO .NET.

Апрель 2000 – Апрель 2001 Ulter Systems, Москва

• Многопоточный сервис для автоматической рассылки электронной почты.

Ulter Systems была вполне успешной и хорошо организованной компанией, специализировавшейся в компьтеризированных опросах населения с использованием телефона и интернета. Я сделал многопоточный сервис для автоматической рассылки электронной почты респондентам опроса. Программа генерировала тексты писем, заполняя шаблон соответствующей информацией из базы данных и напрямую обращалась к SMTP серверу. Перед тем, как написать этот сервис, я сделал полную документацию на его разработку на английском языке в соответствии с ISO 9000-3.

Среда разработки: MS Visual C++, STL, ATL, MFC, ADO, Windows Sockets, SMTP, MS SQL, Oracle, DAO.

• COM библиотека для связи с Unix.

Также я сделал COM библиотеку для связи с Unix машиной через сокеты и другой COM объект для конвертации данных опроса из текстовых файлов в базу данных MS Access.

Среда разработки: MS Visual C++, STL, ATL, MFC, ADO, Windows Sockets, MS Access.

Март 1998 – Октябрь 1999 American Computer Innovators, Москва

• Компоненты для издательской системы.

American Computer Innovators была смелой попыткой сделать современную издательскую систему поверх старой системы документооборота. Я сделал DCOM объект - без MFC или ATL, просто по исходникам из книжки. Этот DCOM соединял WinWord на клиентской машине и QuarkXPress(tm) на сервере с помощью макросов на Word Basic и расширения на QuarkXPress(tm) extension. Также фирмой был сделан огромный GUI клиент и я также участвовал в этом, сделав многие компоненты, например: print preview, окно составных запросов, сохранение результатов поиска в формате HTML, универсальный модуль для "эластичного" масштабирования элементов управления в окнах переменного размера, класс отображения для документов в формате Word, HTML и различных мультимедиа форматах и т.п.

Среда разработки: MS Visual C++, MFC, COM, OLE, MS SQL, Oracle, Visual Basic, HTML, VBScript, JScript.

Ноябрь 1996 – Февраль 1998 Информзащита, Москва

• Клиентская часть для сервера баз данных

Информзащита родилась и располагалась в недрах ФАПСИ ( Федеральное Агентство Правительственной Связи и Информации ). Система разграничения доступа Windows NT была тогда несовместима со стандартами Российской Федерации и компания пыталась делать специальное расширение к операционной системе. Из соображений безопасности было решено не использовать готовые сервера баз данных и один программист был занят написанием специальной реляционной базы данных. Я делал клиентскую часть - от протокола обмена через named pipes до клиентской программы для просмотра, редактирования и импорта записей, а также программу заполнения базы данных различной информацией из домена ( пользователи, группы, журналы и т.п. ) Когда автор бызы данных уехал в Америку, я занимался тестированием и сервера, и клиентской части, для чего написал программу тестирования с возможностью использования скриптов.

Среда разработки: MS Visual C, C++, MFC.

Март 1994 – Июль 1996 Ракетно-космическая корпорация Энергия, Королёв

• Программа для конвертации телеметрии

Ракета передаёт телеметрию в течение всего полёта. Эта информация в основном используется если что-нибудь будет не так и полезный груз улетит в Тихий Океан ( с вероятностью 33% ). Данные представлены в дискретных значениях, которые нужно конвертировать в реальные физические значения. Там были сотни параметров, упакованных в специальную иерархическую базу данных. Я сделал C++ программу для Windows, которая читала базу данных, конвертировала данные и показывала графики космической телеметрии в двух масштабах одновременно и использовала два курсора синхронно.

Среда разработки: MS Visual C++.