Профессиональные навыки
Опыт работы
Разработка навигационного ПО и навигационных карт
Новосибирск
инженер разработчик ПО
Июнь 2012 — По настоящее время (8 лет и 5 месяцев)

Вебсайт + система управления контентом: разработка, внедрение, сопровождение.

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

В процессе решал задачи на самых разных участках:

  • спроектировал и реализовал кэширующую подсистему для статического содержимого сайта с поддержкой ahead-of-time генерации и частичной инвалидации на основе выгружаемых изменений

  • реализовал в серверном коде сайта поддержку взаимодействия с авторизационным сервером, сервером, обеспечивающим управление списками рассылки новостей, сервером сообщений и др.

  • реализовал набор модулей сайта в т.ч. личный кабинет, каталог устройств, каталог продаваемых продуктов… (структура страниц, верстка компонентов, взаимодействие с серверной частью)

  • обеспечил перенос данных старой версии сайта

  • разработал и настроил автоматическую систему резервного копирования

(Java, Alfresco, freemarker, javascript, Eclipse, Tomcat, Postgres)


Backend и остальное

Помимо сайта вовлекался во “всякое”. Сервер данных исходно работавший через xmlrpc потребовал развития. Был переведен на protobuf-интерфейсы. А позже на grpc. Для проекта диспетчерской системы потребовался генератор отчетов в формате xlsx. Для публичного API thrift-сервера диспетчерской системы потребовался SOAP-интерфейс. По этим темам:

  • описал API сервера данных через proto-интерфейсы

  • реализовал protobuf-интерфейс на стороне сервера, приготовил для него клиента, внедрил его на сайте

  • реализовал grpc-интерфейс на стороне сервера, приготовил для него клиента, внедрил его на сайте

  • реализовал сбор статистики и передачу данных на zabbix-сервер для мониторинга

  • разобрался с компиляцией thrift-компилятором java-классов, модифицировал обвязку для одновременной генерации пакетов классов по нескольким версиям интерфейса

  • реализовал SOAP-proxy транслирующий xml-запросы на thrift-сервер и передающий его ответы

  • на базе имевшегося генератора pdf-отчетов на базе apache-fop с помощью apache-poi реализовал генерацию отчетов в формате xlsx

(Java, protobuf, grpc, zabbix, apache-fop, apache-poi, thrift, soap)

Лаборатория НГУ-Intel
Новосибирск
руководитель проекта
Ноябрь 2009 — Апрель 2010 (6 месяцев)

Руководство проектом по развитию оптимизаций векторизации в JIT компиляторе вирт. машины OpenJDK.
Для заказчика (Intel в Новосибирске) группа провела исследования, разработала прототип, провела измерения прироста производительности и реализовала в коде JIT компилятора OpenJDK поддержку векторных инструкций для арифметики и работы с памятью.

На разработанных тестах для целевых архитектур Core2Duo и Nehalem мы получили прирост производительности от 1.2 (add/sub для FP doubles) до 4 раз (FP division). Бенчмарк scimark.lu.small сюиты SPECjvm2008 показал ускорение на 14%.

UniPro
Новосибирск
инженер разработчик ПО
Июнь 2008 — Июнь 2012 (4 года и 1 месяц)

Разработка системы управления проектами.

Система представляет собой J2EE приложение с конфигурируемым веб-интерфейсом и поддержкой огромного количества накопленных за много лет данных. Разработка велась в течение многих лет разными группами.

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

За время работы:

  • участвовал в проектировании набора улучшений

  • реализовал задуманное в сотрудничестве с другими в т.ч. удаленными разработчиками

  • обеспечивал поддержку, исправление ошибок

(Java, Prolog, Eclipse, Tomcat)

инженер разработчик ПО
Май 2003 — Декабрь 2004 (1 год и 8 месяцев)

Автоматизация тестирования VLIW-микропроцессора Эльбрус 3М (Эльбрус 2000).

Проект по разработке генератора автоматических тестов, эмулирующего структуру “длинного машинного слова” архитектуры Elbrus 3M для порождения псевдо-случайных последовательностей инструкций.

  • Разработка генераторов для проверки инструкций подкачки массивов, модуля управления памятью.

  • Разработка библиотеки макросов на ассемблере Эльбрус для работы сгенерированных тестов.

  • Развитие библиотеки макросов для ассемблера Ia32 для взаимодействия с модулем Hyper-Threading.

(C/C++, ассемблер Ia32/Эльбрус, Perl, DDD)

Международная корпорация, которая имеет невероятные возможности повсюду
старший инженер-разрабочик ПО
Декабрь 2004 — Июнь 2008 (3 года и 7 месяцев)

Разработка Just-In-Time компилятора проекта Apache Harmony.

  • Исправил ряд критических ошибок в трансляторе байт-кода, высокоуровневых оптимизациях, генераторе кода для успешного прохождения валидирующих тестов: Eclipse, SPECs и др. на платформах IPF, Ia32, EM64T (Linux/Windows).

  • Разработал и реализовал ряд улучшений для расширения функциональности виртуальной машины, а также для повышения производительности.

  • Внес вклад в задачах:

  • поддержка архитектуры EM64T на Linux и Windows

  • подключение uncompressed режима для EM64T

  • поддержка Java 1.5

(C/C++, ассемблер Ia32/EM64T, DDD, MS Visual Studio)

Plesk
 
тестировщик
Октябрь 2002 — Февраль 2003 (5 месяцев)
Высшее образование
Новосибирский государственный университет
Новосибирск
Факультет: Механико-математический; ММФ
Сентябрь 1998—Июнь 2003 (4 года и 9 месяцев)

математик, системный программист