Сейчас основной стек - это php с приоритетом на Symfony. Не против переключиться на Golang, но практического опыта меньше полугода.
Разработчик с разнообразным опытом: создание web-сайтов, серверных скриптов, разработка с нуля, работа в легаси-проектах, патчи к сторонним системам.
Работал и как бекенд-программист в паре с фронтенд-программистом.
И как единственный фуллстек-программист плюс менеджер-сисадмин.
И как один из разработчиков в проекте, где 100 человек.
И как программист-тexлид команды из трёх программистов плюс удалённые менеджер-тимлид, тестировщик и сисадмин.
Библиотекарь
в
Детский оздоровительный лагерь "Лесная сказка"
Июнь 2006 - август 2006, июнь 2007 - август 2007, июнь 2008 - август 2008
Инженер-программист
в
ГГТУ им. П.О.Сухого
Август 2009 - май 2018
Разработка Единой Системы Авторизации Пользователей:
регистрация, личный кабинет пользователя, админка, учебные планы, управление хостами, логи и др.
Получение данных из 1С с помощью SOAP.
Патчи к некоторым используемым системам.
Проекты:
GUI-клиент для настройки dhcp,
сентябрь 2009 - ноябрь 2009
Регистрация в ЕСАП ( единая система авторизации пользователей ),
ноябрь 2009 - ноябрь 2012
Личный кабинет пользователя ЕСАП,
ноябрь 2009 - ноябрь 2012
Модуль администратора ЕСАП,
ноябрь 2009 - июль 2013
Различные небольшие скрипты и патчи,
январь 2010 - май 2018
Оплаты, статистика студентов,
июль 2010 - ноябрь 2012
Управление конфигурацией DHCP через web-интерфейс,
июнь 2011 - ноябрь 2012
Личный кабинет пользователя ЕСАП. Версия 2,
декабрь 2012 - март 2015
Модуль администратора ЕСАП. Версия 2,
апрель 2013 - май 2018
Электронный деканат,
май 2014 - июнь 2014
Статистика пользования интернетом,
июль 2014 - август 2014
Общий SOAP-сервер для взаимодействий с 1С,
октябрь 2014 - май 2018
Личный кабинет пользователя ЕСАП. Версия 3,
март 2015 - май 2018
CAS-авторизация для DSpace6,
ноябрь 2017 - декабрь 2017
GUI-клиент для настройки dhcp
Разработчик,
сентябрь 2009 - ноябрь 2009
Для изменения конфигурации DHCP, которая хранится в LDAP, использовать свой GUI-клиент с предустановленными правилами и ограничениями.
Вместо ldap-браузера общего назначения.
Проект отклонён.
Обязанности:
Проектирование и создание GUI, связь через С-библиотеку libldap.
Технологии:
C/C++, Qt3, libldap
Регистрация в ЕСАП ( единая система авторизации пользователей )
Разработчик,
ноябрь 2009 - ноябрь 2012
Регистрация в ЕСАП, которая автоматически создаёт аккаунты студентов и сотрудников для всех услуг:
учебных и административных сайтов, почты, интернета, файлового хранилища.
Обязанности:
Проектирование БД, создание интерфейса и проверка введённых данных по базам данных деканатов и отдела кадров.
Технологии:
Perl, Catalyst, MySQL, HTML/CSS
Личный кабинет пользователя ЕСАП
Разработчик,
ноябрь 2009 - ноябрь 2012
Информация пользователю о доступных сервисах и квотах.
Изменение пароля.
Обязанности:
Проектирование и написание web-интерфейса.
Технологии:
Perl, Catalyst, MySQL, HTML/CSS
Модуль администратора ЕСАП
Разработчик,
ноябрь 2009 - июль 2013
Просмотр и редактирование настроек доступа к ресурсам для студентов и сотрудников.
Просмотр статистики распределения студентов и сотрудников по учебным группам и подразделениям.
Изменение и проверка алиасов официальной почты.
Управление дополнительными настройками доступа к ресурсам используя группы в ldap.
Просмотр логов всех модулей ЕСАП и оповещение администратора о критических ошибках.
Управление операторами ЕСАП.
Обязанности:
Разработка web-интерфейса и взаимодействие с MySQL и LDAP. Сопровождение.
Технологии:
Perl, MySQL, LDAP, Catalyst, HTML/CSS
Различные небольшие скрипты и патчи
Разработчик,
январь 2010 - май 2018
Из change-файла со вставками sql-кода получить готовый к выполнению sql-файл.
Оптимизация сравнения двух больших perl-хешей.
Найти все процессы-воркеры, и kill те, которые ещё не зомби, но потребляют много процессора.
Php-cкрипт, делавший optimize table в MySQL, переписать на консольный perl-скрипт с поддержкой параметров.
Для случайно изменённого поля mysql-таблицы восстановить предыдущие значения из бекапа, при этом не обновляя другие поля или таблицы.
Поиск бага в локальной версии intuit.
Поиск причины зависания видео на новом ноутбуке.
Собрать драйвер для нового сканера, а то некорректно работает на последней версии OC.
Для плагина camm приложения cacti добавить оповещение через jabber.
Преобразовать данные из xml в csv.
Сравнение двух схем БД: одна в формате sql, вторая в json-формате.
Обязанности:
Разработка скриптов и патчей.
Технологии:
Perl, MySQL, С, Php, Python
Оплаты, статистика студентов
Разработчик,
июль 2010 - ноябрь 2012
Данные об оплате и задолженностях студентов из 1C выгружаются в MySQL через SOAP.
Потом web-сервер показывает это студентам.
Обязанности:
Реализация web- и soap-серверов. Формирование wsdl, xsd; каркаса функции для 1С-программистов.
Технологии:
SOAP/WSDL, Perl, MySQL, 1C
Управление конфигурацией DHCP через web-интерфейс
Архитектор, разработчик,
июнь 2011 - ноябрь 2012
Хранение конфигурации DHCP в БД даёт возможность изменять её не только системному администратору.
Также позволяет делать резервные копии и связывать с другой информацией о хостах.
Обязанности:
Разработка БД, перенос конфигурации DHCP из LDAP в БД, создание web-интерфейса, редактирование с проверкой ограничений, написание скриптов синхронизации БД с LDAP.
Технологии:
Perl, Mojolicious, LDAP, MySQL, HTML/CSS, DocBook
Личный кабинет пользователя ЕСАП. Версия 2
Ведущий разработчик,
декабрь 2012 - март 2015
Объединение проектов "Регистрация в ЕСАП", "Личный кабинет пользователя ЕСАП" и "Оплаты, статистика студентов"
с изменением дизайна и переходом на платформу Mojolicious+Bootstrap3.
Добавление информации об учебном процессе: учебные планы заочного факультета, мониторинг успеваемости, аттестация.
Восстановление пароля и логина.
Обязанности:
Всё, кроме обновлений на production-сервере. Выдача заданий дизайнеру. Сопровождение.
Технологии:
Perl, Mojolicious, HTML/CSS/JavaScript, MySQL
Модуль администратора ЕСАП. Версия 2
Ведущий разработчик,
апрель 2013 - май 2018
Объединение с проектом "Управление конфигурацией DHCP через web-интерфейс" и переход на платформу Mojolicious+Bootstrap3.
Добавление логов почтового сервера, логов dhcp и статистики dhcp.
Привязка хостов к сотрудникам.
Назначение ответственных за информационную безопасность в подразделениях и комнатах.
Общее улучшение интерфейса.
Инвентарный номер компьютера.
Отображение данных о компьютерах из OCS Inventory NG.
Использование JS-фреймворка Dojo для отображения статистики ( фильтрация и графики ).
Была попытка переделать сайт как вебприложение на REST-архитектуре с клиентской частью на Dojo,
но в итоге решено использовать постепенный рефакторинг с учётом полученного опыта.
Назначение ответственных за техобслуживание и установку ПО.
Журнал техобслуживания хостов.
Заполнение деканатами данных об учебном процессе.
Но ТЗ нет.
Через год решено приобрести готовую типовую 1С-конфигурацию.
Обязанности:
Не определено. Переведён на другие задачи.
Технологии:
Python, OpenERP
Статистика пользования интернетом
Разработчик,
июль 2014 - август 2014
Замена LightSquid на Free-SA.
Статистика считается по IP, но из-за использования VPN он динамический.
Требуется заменa IP на логин, используя БД биллинг-системы ~AsmodeuS~.
А также оптимизация этой замены, т.к. анализатор из-за частых обращений к БД иногда не успевал завершиться до утра.
Обязанности:
Анализ и модификация free-sa. Оптимизация ( кеширование последних данных из биллинг-системы ).
Технологии:
С, libmysqlclient
Общий SOAP-сервер для взаимодействий с 1С
Ведущий разработчик,
октябрь 2014 - май 2018
Идёт замена некоторых систем ( эволюция: MS Access => MS SQL Server => MySQL => 1C ) на 1С-конфигурацию "Управление бюджетным учреждением 8".
Но некоторые данные, которые будут храниться в 1C, нужны для ЕСАП.
После анализа вариантов ( SOAP, OData, прямое обращение к PostgreSQL ) выбрали запуск выгрузки через SOAP по расписанию.
В процессе выполнения проект превратился в платформу, на которой можно создавать неограниченное количество дополнительных SOAP-серверов.
В июле 2017г выгрузка данных об оплате и задолженностях студентов перенесена сюда из личного кабинета пользователя ЕСАП.
Обязанности:
Создание wsdl-ссылок, nginx-конфигураций, soap-скриптов ( используется fcgi ), внешних выгрузок в 1С, регламентных заданий в 1С.
Технологии:
Perl, 1C, SOAP/WSDL, MariaDB
Чтение rfid-меток студенческого билета в Linux
Ведущий разработчик,
февраль 2015 - февраль 2015
Библиотека перешла на ОС Linux.
В wine программа от поставщика для чтения rfid-меток работала некорректно.
Обязанности:
Анализ работы аналогичной программы для ОС Windows.
Создание демон-процесса для чтения rfid-меток.
Технологии:
Perl, Linux ( bash, xvkbd, udev )
Личный кабинет пользователя ЕСАП. Версия 3
Ведущий разработчик,
март 2015 - май 2018
Поддержка многоязычного интерфейса.
Адаптивный дизайн для поддержки мобильных телефонов.
Выдача всей доступной информации студентам заочной формы обучения.
Авторизация в Microsoft DreamSpark.
Авторизация через Jasig CAS.
Обязанности:
Всё, кроме первой линии техподдержки, начального deploy и обновлений production-БД.
Технологии:
Perl, HTML/CSS/JavaScript, Mojolicious, MariaDB
CAS-авторизация для DSpace6
Разработчик,
ноябрь 2017 - декабрь 2017
Добавление CAS-авторизации для DSpace 6.
На github нашёлся патч для DSpace 5, но для CAS он использовал внешнюю библиотеку старой версии.
Эта старая версия библиотеки не собиралась, имела несовместимый с новой версией интерфейс и полтора года как полностью снята с поддержки.
Переписал найденный патч на DSpace 6 и org.jasig.cas.client 3.4.1
Обязанности:
Анализ похожего патча для старых версий, написание нового патча, тестирование.
Технологии:
Java, Apache Cocoon, Jasig CAS Server, org.jasig.cas.client v3.4.1
Инженер-программист
в
ЧТПУП "Первое измерение"
Январь 2012 - июнь 2012
Инспектирование и правка сайта izmerenie.by. Изменения в 1С:Бухгалтерии.
Web-мастер
в
Gometal.by
Сентябрь 2015 - октябрь 2017
Создание и поддержка сайта gometal.by.
Сайт представлял собой интернет-витрину из готовых статических страниц,
которые были сгенерированы с помощью perl и пакета ImageMagick на основе xml и шаблонов Mojo::Template.
Инженер-программист
в
Стратегический консалтинг
Февраль 2017 - май 2017
Backend и frontend без вёрстки и дизайна. Технологии: Python/Django, MySQL, HTML/JS
Программист
в
АйТиДок
Ноябрь 2017 - январь 2018
Сфера деятельности компании – разработка и поддержка программного обеспечения
для крупнейшей в США сети производителей/дистрибьюторов медицинского оборудования и лекарственных препаратов.
Использовал: PHP7/Symfony3, JavaScript
Инженер-программист
в
БостилСаппорт
Февраль 2018 - июль 2019, ноябрь 2019 - апрель 2021
Система учёта и обработки данных для крупного канадского проекта, связанного с мобильной связью.
Основная задача проекта - остановить нежелательные телефонные звонки.
Обязанности:
Переписывание админки с чистого PHP на Symfony(easyadmin), добавление в неё функционала. Создание API для интеграции с корпоративными клиентами
Технологии:
PHP7, Symfony3, MySQL
SmartBuy
Ведущий разработчик,
июнь 2018 - октябрь 2018
Проект рекламы через кассовые чеки.
Игрок сканирует чек или QR-код в магазине, регистрируется в системе
и принимает участие либо во мгновенной лотерее, "стирая" билетик на смартфоне, либо в викторине.
При выигрыше обращается к кассиру за призом.
CMS для управления множеством компаний-клиентов и их кампаний с призами.
Обязанности:
Анализ. Реализация всего backend. Deploy. Доработка под frontend
Технологии:
PHP7, Symfony4, JSON API, MySQL
Корзина для shop.by
Разработчик,
ноябрь 2018 - декабрь 2018
Глобальная корзина - посредник между покупателями и магазинами-продавцами.
Продавцы подключают корзину как сервис.
Корзина сама определяет, какому конкретному магазину перенаправить заказ.
Заморожено из-за долгого согласования с менеджментом
Обязанности:
Анализ ТЗ. Изучение существующего кода. Оценка времени выполнения
Технологии:
PHP, Go, Laravel, Yii2, MySQL, GraphQL
Mebeljurnal.ru
Разработчик,
ноябрь 2018 - декабрь 2018
Обязанности:
Отвязка от старой БД, оставшейся от Joomla. Обновление PHP и Laravel до свежих версий
Технологии:
PHP, Laravel, MySQL
Mir24.tv
Разработчик, техлид,
декабрь 2018 - июль 2019, ноябрь 2019 - апрель 2021
Багофиксы и разнообразные дополнительные функции для mir24.tv и её админки.
Реализация API для SmartTV.
Переписывание API для мобильного приложения с Java на PHP.
Сайт-кастинг для "Слабого звена".
Обязанности:
Начинал как один из пяти программистов, а закончил как программист-техлид команды из трёх программистов плюс удалённые менеджер-тимлид, тестировщик и сисадмин.
Для объявлений создаются 4 подпроекта, у которых общий API.
К нему могут обращаться либо PHP, либо Vue.js.
API написано на Golang, скрывает БД от всех остальных и его интерфейс - это GraphQL
Обязанности:
Проектирование, реализация и тестирование БД и API
Технологии:
Go, GraphQL, MySQL, ManticoreSearch, PHP, Laravel
Инженер-программист
в
Зачётка
Июль 2019 - октябрь 2019
Разработка CRM для Поступи.бел.
Технологии: PHP7/Laravel5.8, JavaScript/Vue.js, MySQL, Redis, WebSocket.
Senior Software Engineer
в
VirtualHealth
Апрель 2021 - продолжаю работать
Проекты:
Infrastructure team,
апрель 2021 - апрель 2022
Workflows team,
май 2022 - ноябрь 2022
Backend team,
ноябрь 2022 - настоящее время
Infrastructure team
Developer,
апрель 2021 - апрель 2022
Основные домены: New instances, ElasticSearch, AWS S3, Airflow, Notifications, Twilio. Команду расформировали при обновлении процессов в компании.
В описание попали больше инфраструктурные задачи. Основные задачи под NDA или понятны только внутри компании.
Из-за требований безопасности заменил распределённые мютексы, написанные на Zookeeper, на распределённые мютексы, написанные на Locking Functions из MySQL.
Внедрение Veracode SAST в bitbucket pipelines.
CDC Maxwell генерирует события по бинлогу MySQL.
Но появились изолированные PostreSQL, для которых тоже нужно реагировать на изменения данных.
Для этих случаев решено использовать бизнес-события.
Но для конечного пользователя обработка этих двух типов событий не должна отличаться.
Если из треугольника "Дёшево. Быстро. Качественно." вычеркивается Качественно, то мне некомфортно.
Предпочитаю вычеркивать или Быстро, или по чуть-чуть Быстро и Дёшево
Профиль по Белбину: специалист, аналитик, далее плотной группой идут финишёр, исполнитель, идеегенератор.
Хобби: исследовать и созидать.
Коллекционирование впечатлений, идей, мыслей и сюжетов из книг и фильмов;
велосипед, исследование местности пешком;
мысленное построение математическо-аналитической модели чего-либо.
Например, найду алгоритм или стратегию выигрыша в игре и после этого могу потерять к ней интерес, ведь осталось просто следовать найденному алгоритму.
Третья рабочая группа инвалидности: после 18 лет больше по близорукости, а до 18 по ДЦП.
Один глаз с рождения 0.03 и зрение монокулярное.
На должностях, требующих работу на компьютере,
медкомиссию сейчас прохожу, если в направлении на медосмотр будет формулировка
"... на должность инженера-программиста без вредных условий труда".
В Беларуси формулировка вредности:
"Наблюдение за экранами видеодисплейных терминалов:
при буквенно-цифровом типе отображения информации - более 3 часов в смену,
при графическом типе отображения - более 5 часов в смену"
( пункт 5.6.3 Приложения 1 Постановления Министерства здравоохранения Республики Беларусь от 28.04.2010 N 47 ).
Есть ИП, на них медкомиссия не распространяется. Другие маловероятные варианты: аренда/аутстаффинг; официально 3, а фактически 8; договор подряда.
Возможно я чего-то не учёл либо законы уже поменялись.
Английский неразговорный.
На слух иностранные языки воспринимаются плохо, т.к. из звукового потока я не всегда успеваю выделить слова до того как произнесётся следующая фраза.
Это также осложняется тем, что написание и произношение слов в английском языке отличаются.
Ещё для распознавания слов важен контекст.
На матанализе была новая тема и новый термин, который я слышал то как "пояс", то как "полюс".
После лекции я посмотрел в учебнике: полюс. Больше слова "пояс" я не слышал :)
А вот русские "пятьдесять" и "шестьдесять" я нередко путаю, т.к. они звучат похоже и в любом контексте равнозначны.
Если создаёте или пополняете команду разработчиков, то обращайтесь.
Рассмотрю любые предложения.