Дмитрий Валько

Белгород · nosefu@gmail.com

Я начинающий python backend разработчик, увлечённый своим делом и неравнодушный к IT и технологиям.
Думаю, в вашей дружной команде найдётся место и для меня.


Опыт работы

Младший системный администратор

ООО «Технологии надёжности»

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

Разработал бота уведомлений о новых заявках и событиях мониторинга для упрощения работы на внешнем проекте.

Занимался администрированием корпоративных Jira, Confluence, поддержкой внутренних пользователей.

Занимался поддержкой команды-участницы хакатона Сбера — обеспечивал развёртывание конкурсного сервиса на предоставленной платформе Elastic Cloud Server.

Сентябрь 2023 — Настоящее время
6 месяцев

Специалист по обслуживанию
систем видеонаблюдения, ОПС, СКУД

ООО «Экосвязь-Центр»

Разрабатывал схему сети LoRaWAN для нужд заказчика областного уровня. В процессе работы занимался геокодингом и обработкой геоданных с помощью QGIS и Python. Отчёты также генерировал с помощью Python.

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

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

Июль 2017 — Август 2023
6 лет 2 месяца
Июнь 2015 — Июль 2016
1 год 2 месяца

Системный администратор

ООО «Варимед-Сервис»

Разработал на Delphi внутреннее ПО для сервисного персонала, собирающее данные с оборудования заказчика и формирующее соответствующие диагностические отчёты.

Август 2016 — Июнь 2017
11 месяцев

Системный администратор

АО «Белгородские молочные фермы», ГК «Зеленая долина»

Внедрил общую корпоративную и персональные адресные книги для Outlook на базе AD, что упростило как мою собственную работу (отпала нужда бэкапить файл конфига аутлука при замене/ремонте компьютера сотрудника), так и работу других сотрудников (легкий поиск адреса нужного сотрудника/контрагента в общей адресной книге).

Июль 2014 — Март 2015
9 месяцев

Технический специалист

ООО «ОНикА»

Поднял внутреннюю IP-АТС на базе Elastix/FreePBX с внешним транком, голосовым меню, записью разговоров, маршрутизацией звонков (в т. ч. и наружу, на мобильные телефоны сотрудников).

Март 2013 — Июнь 2014
1 год 4 месяца

Увлечения

Игры

В данный момент мне интересны не столько игры и фандомы, сколько игровые консоли и геймплейные возможности, которые они предоставляют. В моей коллекции порядка 16 консолей, от Nintendo Famicom до PS4 и Nintendo Switch. Мне нравится их восстанавливать, приводить в порядок, модифицировать. Естественно, происходит всё это не без проблем: несколько экземпляров в процессе модификации пали смертью храбрых, но вскоре были восстановлены при помощи доноров.

Меня впечатляют вещи, которые удавалось провернуть разработчикам, стеснённым ограничениями той или иной платформы. Меня восхищает изворотливость людей, которые раз за разом умудряются находить лазейки для запуска неподписанного кода. Даже сам факт реализации Free McBoot, Cobra ODE или SX Core/HWFLY — это же чистый восторг.

Ну и, конечно, я получаю безумное удовольствие, когда нахожу жемчужины вроде Journey, The Stanley Parable, Portal, The Beginner's Guide, To the Moon.

Кино

Собираю фильмы на VHS и Blu-ray, на данный момент коллекция составляет порядка 80 тайтлов. С женой пересмотрели огромное количество всего: от «Кабинета доктора Калигари», «Горбуна из Нотр Дама» и «Врага общества» до киновселенной Марвел, «Кролика Джоджо» и ремейка «Вестсайдской истории». Причём просмотр условного полуторачасового фильма всегда растягивается на 2–3 часа. Просто потому что уже в процессе хочется обсудить какие-то детали, решения, технические, сценарные и концептуальные ходы, которые применили создатели.

Некоторое время назад с женой вели свой тематический паблик и youtube-канал. Несмотря на то, что кинематограф нам безумно интересен, раскрутить это добро так и не получилось: то ли фишечки какой-то не хватило для вирусности, то ли сказалось отсутствие опыта в SMM, то ли просто мы оказались слишком нудными и въедливыми ¯\_(ツ)_/¯

Кодинг

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

Друзья, скорее всего, меня уже прокляли, потому что рано или поздно я всё равно попытаюсь увести разговор в сторону обсуждения каких-то вещей, с которыми я столкнулся в время реализации пет-проектов. Даже мантра «давайте без технины» спасает далеко не всегда)


Пет-проекты

Телеграм-бот уведомлений МЧС

С учётом жизни в приграничном регионе, мысль пересылать уведомления о тревогах из приложения МЧС в телеграм была очевидной. Перехватил трафик приложения и набросал бота, который, опрашивая МЧСовский эндпоинт, кидает новые уведомления в телеграм-канал. Позже по просьбе коллег добавил к нему суточный подсчёт статистики.

Проект на GitHub

Агрегатор сеансов с сайтов кинотеатров

Разбит на два сервиса: сервис скрапинга и сервис вывода информации.

  • Сервис скрапинга Проект на GitHub
    Cкрапинг данных с сайтов кинотеатров осуществляется с помощью requests, selenium и bs4, сохраняется в бд на postgresql через sqlalchemy. Консолидация производится с помощью открытых данных из реестра прокатных удостоверений фильмов Министерства Культуры РФ.
  • Сервис вывода информации Проект на GitHub
    Django тянет данные из БД и выводит пользователю. Пользователь может выбирать желаемые город и дату (передаются в параметрах GET‑запроса). К фронту прикручен Bootstrap.

Расширение для Chrome,
которое позволяет присваивать метки пользователям pikabu.ru

Серьёзный недостаток имеющихся на Пикабу заметок — их нет перед глазами. Для того, чтобы их посмотреть, приходится либо вызывать всплывающую панель профиля, либо переходить в сам профиль пользователя. Метки данного расширения всегда на виду, справа от никнейма, либо под ним.

Отображаются метки и в профиле, и в постах, и в комментариях. Если метки не помещаются в строку с никнеймом пользователя, то все они переносятся на следующую.

Реализовано на чистом JS + CSS. Использованы иконки Font Awesome. Метки хранятся на стороне пользователя в хранилище chrome.storage.sync. Если верить документации, при использовании этого хранилища должна быть доступна автоматическая синхронизация созданных меток между браузерами, подключёнными к одной учётной записи Google. Но, судя по всему, работать синхронизация будет толко после публикации в Chrome Web Store. В планах найти способ оплатить аккаунт разработчика Chrome Web Store, выложить расширение и проверить функционал синхронизации.

Проект на GitHub Больше подробностей и скриншотов

Проигрыватель музыки на Arduino

Форкнув проект APSG, я значительно оптимизировал использование progmem для хранения мелодии (только одна из оптимизаций помогла уменьшить размер мелодии на 43,7%). Кроме того, на Python 2 был написан скрипт, конвертирующий специально подготовленные MIDI-файлы в необходимый для ардуино формат. Благодаря этому значительно упростилась работа над написанием и отладкой мелодий.

Проект на GitHub

Телеграм-бот, мониторящий новые коммиты в репозитории

В момент начала моего обучения у сервиса был лишь один канал уведомлений: электронная почта. Письмо отправлялось в тот момент, когда преподаватель отчитывался о проверке задания на платформе курсов.

Для меня это было неудобно и медленно, поэтому я сделал телеграм-бота, который мониторил репозиторий на наличие новых коммитов (для ускорения работы тянулись только метаданные репозитория) и отправлял метаданные новых коммитов мне в Телеграм. Таким образом я узнавал о проверке работы ещё до того, как преподаватель отпишется на платформе.

Бот задеплоен на Heroku в феврале 2020 года и продолжал работать до тех пор, пока в конце 2022 года сервис не поменял модель монетизации.

Проект на GitHub

Переделка таксофона АМТ-69 под сотовую связь

С помощью Arduino Nano и модуля SIM900 таксофону АМТ-69 была подарена новая жизнь. Старался сделать всё максимально антуражно, поэтому реализовал следующий функционал:

  • при входящем вызове звучит «правильный» звонок — тарахтение по колокольчикам;
  • ответ на звонок поднятием трубки;
  • завершение звонка опусканием трубки на рычаг;
  • входящие и исходящие вызовы работают без нареканий;
  • номера экстренных служб, набранные в старом формате (01, 02 и т. д.), автоматически преобразуются в номера нового формата (101, 102 и т. д.);
  • при поднятии трубки звучит гудок;
  • при наборе номера в трубке звучат DTMF-сигналы;
  • при окончании разговора в трубке звучат короткие гудки (вышеперечисленные сигналы генерируются в соответствии со стандартами);
  • работа от АКБ 12В.

От функционала монетоприёмника пришлось отказаться по нескольким причинам:

  • громоздкось самого механизма;
  • невозможность найти оригинальные жетоны;
  • отсутствие возможностей и времени на переделку механизма под актуальные денежные знаки.

Здесь больше подробностей, фото и видео

Рейкастинг-движок на Pygame

Мне было интересно, каким образом были реализованы Wolfenstein-подобные шутеры. Поискав в сети матмодели и примеры, написал свою реализацию сначала с использованием вывода псевдографики на консоль, а затем с использованием Pygame и текстур.

Проект на GitHub

Реверс-инжиниринг камеры дрона DJI Phantom FC40

Для работы с камерой было доступно лишь приложение для смартфона, которое уже устарело и не работает на актуальных мобильных ОС.

При помощи старого смартфона был отловлен трафик общения приложения с камерой, анализ проводился в Wireshark. Протокол не был защищён и представлял собой набор эндпоинтов, на которые отправлялись HTTP-запросы с командами управления. Был написан скрипт на Python, который инициализировал работу камеры и открывал rtsp-поток для чтения любой программой, поддерживающей воспроизведение потокового видео. В процессе работы скрипт отправлял статусные сообщения, оповещавшие камеру о том, что клиент не отключился, а также выводил уровень заряда встроенного в камеру аккумулятора.

Светомузыка для 0x40 hues

Утилита, собранная в HiAsm, брала цвет пикселя с экрана компьютера и передавала по rs232 на Arduino. Контроллер принимал эти данные и через полевые транзисторы управлял цветом RGB-ленты.

Здесь чуть больше подробностей