Ключевые навыки
Backend
- Rust, Tokio, Axum
- Ruby on Rails
- PHP, Yii, CodeIgniter
- REST API
- RSpec, Capybara, proptest
Базы и кэш
- PostgreSQL
- MySQL
- Redis
- MongoDB
- Tarantool
Инфраструктура
- Apache Kafka
- Docker, Docker Compose
- Git, GitLab CI
- Linux
- Capistrano
Карьера
Общий опыт: 15 лет и 1 месяц
M
Сейчас · Rust и Ruby
mokka
Октябрь 2022 — настоящее время
Платёжные API, отчётность для Центрального банка и асинхронные
сервисы на Tokio.
Rust
Tokio
Axum
Kafka
PostgreSQL
Redis
Ruby on Rails
-
01
Разработал и поддерживал парсинг и формирование отчётов для Центрального банка России.
-
02
Интегрировал покупку дисконтных карт в рассрочку через giftery.ru.
-
03
Улучшил тестовое покрытие платёжных API и описал взаимодействие платёжных сервисов.
-
04
Собрал асинхронные высоконагруженные сервисы на экосистеме Tokio.
-
05
Построил REST API на Axum с middleware: авторизация, логирование и трейсинг. Внешние API — через reqwest.
-
06
Проектировал схемы PostgreSQL, оптимизировал запросы и вынес состояние в Redis.
-
07
Собрал событийные пайплайны: продюсеры и консьюмеры Apache Kafka на rust-rdkafka.
-
08
Написал юнит- и интеграционные тесты, стресс-тесты на proptest и асинхронные сценарии на tokio-test.
T
Fullstack · команда 15
Teleset
Февраль 2018 — сентябрь 2022
Платформа для ТВ-приставок: обновление Rails, тесты и удалённое
управление на стадионах и в барах.
Rails 6
Ruby 2.7
React
PostgreSQL
Redis
Docker
RSpec
-
01
Обновил приложение с Rails 4.2 до Rails 6.0.
-
02
Поднял покрытие тестами с 22% до 90%.
-
03
Ускорил обработчик регистрации пингов ТВ-приставок в 22 раза.
-
04
Разработал систему удалённого управления ТВ-приставками для стадионов и баров на 2021 FIFA Arab Cup.
-
05
Проводил собеседования Ruby-разработчиков. Стек также включал MySQL, MongoDB, Tarantool, GitLab CI и Capybara.
Результат
Обработчик пингов стал быстрее в 22 раза
Ускорил регистрацию пингов ТВ-приставок в
22 раза и поднял покрытие тестами
с 22% до 90%.
E
Fullstack · команда 8
Elpanda Group
Август 2015 — январь 2018
Софт для техподдержки маркетплейса автозапчастей и управление
командой из пяти разработчиков.
Rails 4.2
Ruby 2.5
PostgreSQL
Redis
Capistrano
RSpec
-
01
Участвовал в создании отдела технической поддержки для внутренних и удалённых подразделений маркетплейса.
-
02
Вёл коммуникации, требования и ожидания по проекту.
-
03
Спроектировал и разработал программное обеспечение для отдела технической поддержки.
-
04
Внедрил продукт в управление продажами маркетплейса автозапчастей.
-
05
Управлял командой разработки из 5 человек.
H
PHP · команда 5
Helpline.by
Сентябрь 2011 — июнь 2015
Корпоративные приложения, архитектура CRM и e-commerce-стартап
с отчётами, которые стали быстрее в 12 раз.
PHP 5
Yii 1
CodeIgniter
-
01
Разрабатывал и запускал корпоративные приложения для крупного бизнеса.
-
02
Проектировал архитектуру CRM-продукта и переводил бизнес-требования в технические задачи.
-
03
Запустил и развивал стартап в e-commerce — интернет-гипермаркет бытовой техники.
-
04
Создал плагин отчётности, который сократил время ожидания в 12 раз.
Мои проекты
Wc
Библиотека
github.com/dima-antonenko/warm_core
Пул потоков для Linux: работа остаётся на одном физическом ядре, данные не вытесняются из кэша.
Rust
Linux
libc
Открыть репозиторий
-
01
Читает топологию из /sys и закрепляет поток за одним CPU. По умолчанию один рабочий поток на физическое ядро, чтобы пара hyper-threading не выбивала данные из L1 и L2.
-
02
Индексы очереди разнесены по разным линиям кэша. На задаче размером с L2 пул закончил работу примерно в 1.2 раза быстрее, чем std::thread с yield_now.
Rf
CLI
github.com/dima-antonenko/rustfetch
Системная сводка на Rust, аналог screenfetch: ASCII-арт и детали машины в одном экране.
Rust
Открыть репозиторий
-
01
Рисует логотип системы и рядом показывает ОС, ядро, uptime и загрузку ресурсов.
-
02
Собирает тему, окружение и прочие детали, которые обычно размазаны по нескольким командам.
Lc
CLI
github.com/dima-antonenko/line_counter
Быстрый подсчёт строк кода: языки, фильтры файлов и обход проекта.
Rust
Открыть репозиторий
-
01
Считает строки по кодовой базе и различает языки.
-
02
Фильтрует файлы, чтобы в отчёт не попадало лишнее.
Mc
Учебный узел
github.com/dima-antonenko/minichain
Учебный UTXO-узел на одной машине: блоки, подписи Ed25519 и proof-of-work.
Rust
Ed25519
sled
Открыть репозиторий
-
01
Деньги живут как непотраченные выходы. Новый блок берёт транзакции из мемпула и подбирает nonce.
-
02
Два процесса обмениваются цепочкой по TCP. Принимается более длинная цепочка, если каждый блок проходит проверку.
Pg
Библиотека
github.com/dima-antonenko/pg_pool
Асинхронный пул сессий PostgreSQL для Tokio: ограниченное число соединений внутри процесса.
Rust
Tokio
PostgreSQL
Открыть репозиторий
-
01
Выдаёт соединения задачам и возвращает их в пул, когда guard уничтожается.
-
02
Закрытые и слишком старые сессии в пул не возвращаются: вместо них открывается новая, пока не достигнут предел.
Образование и сертификаты