Профессиональные навыки
HTMLJavaScriptC++ CSS.NETTypescriptSeleniumC#JavaScala
Опыт работы
Февраль 2017 — по настоящее время (11 месяцев)
Финансовая компания
Фронтенд-разработчик (senior)
Лимассол
Обязанности и достижения

Разработка фронтенда веб-приложения для биржевой торговли.

Обязанности:

  • Реализация новой функциональности на современном стеке технологий: TypeScript, React, Redux, css-in-js (Fela), RxJs, css3 +flexbox, webpack. Используются такие техники программирования как компоненты высшего уровня (HOC), css-in-js на библиотеке fela, FRP c библиотекой RxJs. Клиентская бизнес-логика реализована с помощью redux, связь сервером и комбинирование различных серверных и интерфейсных событий - с помощью RxJs, связь между ними организована через redux-observable.Широко используются библиотеки типов и возможности TypeScript, что дает коду большую гибкость и надёжность.
  • Поддержка старого кода (компонентов, реализованных на jquery), миграция частей старого кода современный стек.
Август 2016 — Февраль 2017 (7 месяцев)
Solit Clouds
fullstack-web-разработчик
Ярославль
Обязанности и достижения

Разработка подсистемы отчётности для сайта http://emias.info/ - веб-интерфейса на Angular 1.5, адаптация интерфейса для планшетов, а также поддержка кода на бэкенде (Java/Spring/Hibernate)

Январь 2015 — Март 2015 (3 месяца)
Различные побочные проекты
Ярославль
Обязанности и достижения
Выполняю задачи на библиотеках React + Reflux в одном стартапе (список с автодополнением с подгрузкой данных, табличный список с формами редактирования, и т.п.).
Март 2012 — Август 2016 (4 года и 6 месяцев)
JS-разработчик в отделе Web-платформы
Ярославль
Обязанности и достижения
Разработка веб-платформы: набора компонентов, использующихся внутри компании при разработке интерфейса и бизнес-логики веб-приложений http://online.sbis.ru, http://reg.tensor.ru, и http://inside.tensor.ru. Используемые языки и технологии: html, css3, javascript, jquery, ajax, requirejs, doT, svg. Веб-компоненты могут строить свою вёрстку как на сервере (с помощью препроцессора, написанного на node.js), так и на клиенте, в браузере, причём на обоих сторонах используется один js-код компонента, запускаемый в разных режимах. При построении компонентов используется шаблонизатор doT, дополненный так, что в шаблоны можно встраивать свои компоненты, которые строятся автоматически при раскрытии шаблона: таким образом прикладные программисты могут декларативно строить свои компоненты на базе других, с минимальным написанием js-кода. Компоненты представляют собой иерархию классов, оформленных в виде модулей requirejs, что позволяет загружать их динамически, вместе со всеми зависимостями (css- и html-модулями, содержащими стили и шаблон вёрстки компонента). Также есть возможность статической сборки базовой библиотеки и пользовательского кода в один или несколько пакетов, для более быстрой загрузки. Общение между компонентами происходит как через методы API, так и через шины событий, позволяющие строить приложение со слабой связностью между частями. Широко используется promise-объекты в качестве результатов асинхронных запросов, диалогов, анимации, что позволяет удобно работать с асинхронными процессами, и строить довольно сложную асинхронную логику. Также в некоторых компонентах используется расчёт размеров скриптом, при этом запросы на пересчёт размеров группируются в пакете, и расчёт выполняется один раз для нескольких изменений, что хорошо влияет на скорость расчётов. Для регрессионного тестирования компонентов используется Selenium - на нём работают тесты, которым нужен браузер (тесты вёрстки и тесты со сложным визуальным сценарием, и jstestdriver для юнит-тестов, малозависимых от среды исполнения). Тесты запускаются и исполняются автоматически на сервере сборок teamcity. В мои обязанности входит разработка базового кода компонентов: шин событий, promise-объектов, подсистемы классов и наследования, механизма загрузки модулей и шаблонов, подсистемы расчёта размеров, и другого низкоуровневого кода, а также поддержка библиотек и инструментов для системы тестирования. Также я участвую в разработке и поддержке компонентов совместно с остальными сотрудниками веб-платформы. Полностью сам разрабатывал такие компоненты, как svg-диаграммы, диалоги, и большую часть деревьев и табличных представлений. Также при разработке собственной библиотеки компонентов постоянно приходится изучать подходы и решения из других библиотек - таких как React, Ember, Angular, redux, virtual-dom. В последнее время занимаюсь разработкой новой версии ядра библиотеки компонентов - с использованием подхода, похожего на React (c виртуальным DOM), с шаблонизатором для vdom, и моделью компонентов, похожей на Ember. Такой подход имеет большие преимущества по сравнению с нынешней версией библиотеки, сделанной по принципам традиционного MVC.
Декабрь 2010 — Март 2012 (1 год и 4 месяца)
ООО Брайнсматч
Web-программист
Москва
Обязанности и достижения
Участие в разработке системы профессионального тестирования и поиска работы "Брейнсматч". Обязанности: разработка веб-интерфейса - серверной части на php с использованием библиотеки yii, клиентской части на javascript с использованием библиотек jquery, jquery-ui, backbone (MVC-библиотека для javascript-приложений), сервисов авторизации yandex, facebook, vk, и других. Назначение веб-интерфейса - рабочее место для менеджеров компании, а также рабочее место для соискателя и работодателя - пользователей системы. Базы данных, использованные в проекте: MySql 5.2, MongoDb. Также в проекте реализована возможность звонков через sip-сервер, с помощью flash-клиента, и прокси-сервер на Питоне, соединяющий flash-клиента с sip-сервером. Для этого был использован доработанный нами opensource-сервер siprtmp, в результате чего удалось добиться стабильной работы веб-телефона и возможности созвона между соискателями и работодателями через сайт. Также, совмещён биллинг sip-сервера (utm5) с биллингом нашего сервиса через триггеры в базе sip-биллинга. Sip-cервер работает на asterisk и администрируется другой компанией, предоставляющей услуги sip-телефонии. Проект разрабатывался командой из нескольких программистов и дизайнера. На сегодняшний день проект закрыт по не зависящим от разработчиков причинам, но основные функции тестирования, подбора вакансий и сотрудников работали, и предоставляли удобный интерфейс. Моё участие заключалось в разработке телефонной части (полностью), а также - в разработке серверной и клиентской части интерфейса (вместе с остальной командой).
Декабрь 2006 — Сентябрь 2010 (3 года и 10 месяцев)
LMD Innovative
Программист
Ярославль
Обязанности и достижения
Обязанности: - Разработка компонентов для Delphi и Delphi.Net Участие в разработке различных компонентов: - Текстовый редактор с подсветкой синтаксиса и настраиваемыми синтаксическими схемами на XML (ссылка: http://www.lmdinnovative.com/products/vcl/lmdsyntaxedit/) . - Сетка с типизированными полями и разными редакторами, зависящими от типа поля (ссылка: http://www.lmdinnovative.com/products/vcl/lmdgridpack/). . - Пакет компонентов для интеграции Delphi/Delphi.Net и движка Microsoft Active Scripting (http://www.lmdinnovative.com/products/vcl/lmdscriptpack/). Возможности: разбор Delphi-модулей, обработка событий скрипта модулем Delphi и наоборот, поддержка отладчика ActiveScript, интеграция с платформой .Net - Адаптация компонента TRegExp к юникоду, Delphi.Net, встраивание его в текстовый редактор. - Написание различных вспомогательных утилит и функций.
Декабрь 2005 — Январь 2010 (4 года и 2 месяца)
Различные проекты
Программист
Ярославль
Обязанности и достижения
- Интеграция системы распознавания автомобильных номеров "Поток" с системой безопасности предприятия "Lenel" для компании Теннекс. Проект обеспечивает хранение в базе данных о машинах сотрудников, и автоматическое открытие шлагбаума для авторизованных сотрудников и гостей. Технологии, использованные в проекте: WMI-интерфейс системы Lenel, MSSQL, среда разработки Delphi для реализации клиентского приложения и сервиса. -В компании "Теннекс": Утилита для системы безопасности предприятия "Lenel", позволяющая отслеживать нахождение работников в различных зонах здания, в целях пожарной безопасности. Технологии, использованные в проекте: WMI-интерфейс системы Lenel, MSSQL, MIDAS, среда разработки Delphi для интерфейса. - Простой корпоративный CRM-интернет-сайт на ASP.Net для торговой фирмы, позволяющий регистрировать контакты фирмы с другими компаниями, управлять заметками по компаниям, и выполнять поиск компаний и заметок по различным условиям. База данных – MS Access. - Рекламный тулбар для Internet Explorer, с перехватом на себя поиска из адресной строки, редиректом с некорректных адресов на свой поисковик, с полноцветными иконками с альфа - каналом, и т.д.
Ноябрь 2004 — Сентябрь 2006 (1 год и 11 месяцев)
Корпорация PTC
Программист, системный администратор
Ярославль
Обязанности и достижения
Обязанности: - разработка и поддержка расчётной части системы автоматического проектирования Pro/Engineer (http://ptc.com/products/proengineer/) - Расчёт плоских заготовок для объёмных моделей, использование систем линейных и нелинейных уравнений и численных методов для их решения. - установка и поддержка средств разработки на системах Windows, Linux (Redhat 4) и Solaris 10, настройка и поддержка локальной сети и серверного ПО для групповой работы (Mantis, svn, Wiki - багтрекер, контроль версий и движок для внутренней документации и о Разработка велась на системах Linux, Solaris, и Windows. Используемые инструменты и технологии: Профайлеры: AQTime/gprof, компиляция и отладка: Visual Studio, gcc+gdb+gnu make+Emacs+SunStudio. Языки: C - основной язык приложения, небольшая часть (библиотека для работы с графами) на C++. Также использовались bash, Java, JScript и VB.Net для написания различных вспомогательных скриптов и мелких расширений сред разработки (Visual Studio, Emacs, NetBeans).
Февраль 2000 — Октябрь 2004 (4 года и 9 месяцев)
«Tradal LTD»
Программист
Лимассол
Обязанности и достижения
Обязанности: - разработка разнообразных программ под Windows - администрирование MSSQL - администрирование локальной сети на Windows 2000 - администрирование систем контроля версий CVS, SVN - администрирование веб-серверов Apache2 и IIS Проекты: 1. Различные утилиты - интернет-боты для SMTP/POP/HTTP протоколов 2. Система для автоматизации позиционирования слов и управления аккаунтами на платных поисковых сайтах – Overture, Findwhat, Lycos, Espotting, GoClick, PageSeeker, SearchFeed и 7search. Использованные языки и технологии: Веб-бот на C# + dll-библиотеки к нему на C++, ASP и ASP.Net + MSSQL для веб-интерфейса. Модули веб-бота написаны с использованием движка Internet Explorer-a и библиотеки MSHTML. Серверная часть рассылала оповещения по SMTP и SMS о различных событиях, а также умела распознавать картинки-капчи, используя FineReader. Прочие инструменты и технологии, использованные в проекте: Subversion - контроль версий, NDoc - документирование, NUnit-юнит-тесты, XML-сериализация для различных настроек.
Сентябрь 1999 — Февраль 2000 (6 месяцев)
Завод фрикционных материалов, ОАО «Фритекс», Ярославль
Инженер-программист
Ярославль
Обязанности и достижения
Обязанности: - разработка программ под Windows, программирование микроконтроллеров. Разрабатывал программу для учёта, контроля и анализа для испытательных стендов. Для управления стендами использовались микроконтроллеры, данные с которых по COM-порту передавались программе, которая их обсчитывала, хранила в локальной базе, показывала в виде графиков, и строила обобщённые отчёты по испытаниям в Word-е и Excel-е. Программа была написана на Borland C++ Builder, Delphi, с использованием VCL и WinAPI. Также писал небольшие программы для микроконтроллеров
Высшее образование
Январь 1994 — Январь 1999
ЯГТУ
Машиностроительный
Ярославль
Специализация и достижения
Специальность: Техническая кибернетика