Резюме: Ведущий разработчик C/C++
Программист/разработчик/ведущий разработчик с/с++, удалённая работа,подработка, от 2500 в час
По договору с ИП. Налоги и пр плачу сам.
Г. Р 1974
Опыт работы (с 1998 года):
С 2011
Организация: USA-based POS software development company.
Позиции: разработчик, ведущий разработчик с/с++ (удалённо).
Проекты: Создание и сопровождение системы POS приложений.
Задачи: Разработка архитектуры, реализация системных функций, расширение набора платформ.
Платформы: bare linux (без штатного GUI), cygwin/win32, android.
Основное достижение: организовал и выполнил большую часть работ по смене архитектуры системы приложений (несколько сотен тысяч строк кода dos-style на event-driven), переносу системы на несколько новых платформ с кардинальным улучшением возможностей UI/коммуникаций и других сервисов.
Некоторые из выполненных работ:
перенес подсистемы GUI и коммуникаций существовавшей системы приложений на vendor-specific API новых устройств:
реализовал протоколы связи с корпоративной системой - обновление, экспорт/импорт данных, запуск транзакций;
сделал симулятор устройства на cygwin/win32 (для отладки);
предложил и выполнил проект внедрения более современной и независимой от платформы архитектуры, не требующий изменений в прикладном коде. Первоначально система должна была работать на слабых устройствах, на которых не было никакой графической системы/фреймворка. Результат работает на MIPS 100 МГц 16 МБ РАМ и на андройде или win32. Занимался разработкой, реализацией и внедрением в практику использования другими участниками, управление привлекаемыми разработчиками. В рамках этого проекта, занявшего 2 года до первого выхода на рынок:
сделал набор событийно-управляемых С++ API (IPC разного уровня, таймеры, сети, масса вспомогательные систем и утилит);
сделал оконную систему и html-based GUI;
выполнил глубокий рефакторинг взаимодействий приложений;
обеспечил работоспособность прикладного кода без изменений в нём;
сделал launcher app в стиле андройда с возможностью кардинальной смены модели взаимодействия с пользователем;
сделал систему управления временем и систему управления энергопотреблением;
сделал поддержку rtl scripts и CJK (иврит, китайский);
перенёс систему на андроид NDK (уже полтора года на рынке);
наряду с другими разработчиками выполнил массу задач по багфиксингу и расширению прикладной логики.
Результаты, которые мне особенно нравятся:
GUI на базе html (полностью моя разработка, но не может быть опубликована) - поддерживает flexbox, multicolumn, float, shadow/templates/slots, scroll-snap, backgrounds, animations, animated images, bidi texts, white-space/breaks control, event handlers in с++, занимает в собранном виде 400 килобайт в версии для 32-бит ARM, поддерживает вывод на разные устройства - андройд, linux FB, win32, печать на разных принтерах;
перенос системы на андройд занял одну неделю работы до запуска полнофункционального демонстратора;
очень простая реализация C++ closures (аналог современных lambda) без расхода ресурсов для старых компиляторов (типа MSVC 2008 и gcc 3).
Из более старых работ (2011-1998), выполненных лично или в качестве лидера команды
рефакторинг UI приложений банковского служащего (windows, внедрение tree-list view интерфейса на MSVC, сокращение объёма исходников в несколько раз);
реализация автоматического UAC elevation через сервис (windows 7) для обновления старого приложения без существенной переделки системы обновления;
интерфейс оператора промышленной установки (работал в 3-5 раз быстрее, чем на Qt);
эмулятор MS Excel API на С# для генерации xls файлов на веб-серверах (в те времена подобные инструменты не были распространены);
прототип БД для отдела планирования крупной компании (анализ большого набора xls таблиц, создание схемы БД MS Access, программы ввода и проверки данных, набор стандартных и пользовательские запросы, генератор отчетов на MS Excel).
Платформы/языки/библиотеки/инструменты:
posix (linux, в основном 2.6) - системное программирование, IPC/processes/threading, сети - сокеты/ssl(openssl)/протоколы(HTTP, FTP, DNS, NTP)/libcurl, netlink (управление сетями, события USB), асинхронные коммуникации на разных API
Win32 API - все основы - processes/threads, разные IPC, WaitFor, completion ports, классический GUI, GDI/GDI+, API сканирования/видео (поверхностно), кое-что делал на DirectX9/11 и OpenGL, работал с C#.
Android - в основном C/NDK, могу в родные приложения Java, но не спец, собирал сторонние C либы, работал с камерой и распознаванием.
C/C++ примерно до с++03, современные версии представляю, но интенсивно не использовал.
boost и Qt интересовался, но использовал давно.
HTML/CSS/javascript/XML/xslt постоянно как вспомогательные инструменты, реализация ограниченных css/script/xslt engines.
MS Office VB и COM (давно).
SQL (SQLite, ранее Oracle/MS в клиентских приложениях).
кое-что о Python и когда-то давно работал на php.
X86 assembler (16/32)
git command line/gitk, другие version management, bugtrackers.
Образование: ММФ НГУ