pleshevski.ru/dist/works.html

43 lines
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="ru-RU">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.14" />
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html,
body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme')
const systemDarkMode =
window.matchMedia &&
window.matchMedia('(prefers-color-scheme: dark)').matches
if (userMode === 'light') {
document.documentElement.dataset.theme = 'light'
} else if (userMode === 'dark' || systemDarkMode) {
document.documentElement.classList.toggle('dark', true)
document.documentElement.dataset.theme = 'dark'
}
</script>
<link rel="alternate" hreflang="en-us" href="https://pleshevski.ru/eng/works.html"><meta property="og:url" content="https://pleshevski.ru/works.html"><meta property="og:site_name" content="Дмитрий Плешевский"><meta property="og:title" content="Работы"><meta property="og:type" content="website"><meta property="og:locale" content="ru-RU"><meta property="og:locale:alternate" content="en-US"><meta property="og:updated_time" content="2024-07-25T13:59:34.000Z"><meta property="article:modified_time" content="2024-07-25T13:59:34.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Работы"}</script><title>Работы | Дмитрий Плешевский</title><meta name="description" content=" ">
<link rel="preload" href="/assets/style-BACGJ9Qw.css" as="style"><link rel="stylesheet" href="/assets/style-BACGJ9Qw.css">
<link rel="modulepreload" href="/assets/app-OMtl6IVo.js"><link rel="modulepreload" href="/assets/works.html-B-M3ZurS.js">
<link rel="prefetch" href="/assets/index.html-DdOSz3i9.js" as="script"><link rel="prefetch" href="/assets/index.html-DhiGfEXH.js" as="script"><link rel="prefetch" href="/assets/works.html-B4GC5YDW.js" as="script"><link rel="prefetch" href="/assets/404.html-DhSV0iSI.js" as="script">
</head>
<body>
<div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" data-v-765855fb><!--[--><header class="vp-navbar"><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/"><!----><span class="vp-site-name" aria-hidden="true">Дмитрий Плешевский</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="Резюме"><!---->Резюме<!----></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Работы"><!---->Работы<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><button class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar"><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="Резюме"><!---->Резюме<!----></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Работы"><!---->Работы<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div class="theme-default-content"><!--[--><!--]--><div><h2 id="выделенныи-опыт-работы" tabindex="-1"><a class="header-anchor" href="#выделенныи-опыт-работы"><span>Выделенный опыт работы</span></a></h2><h4 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h4><ul><li>Даты: Август 2018 по настоящее время</li><li>Роли: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Разработка инструмента управления проектами для дизайнеров интерьера</p><ul><li>Разработка GraphQL API (Node.JS, Apollo, PostgreSQL, Redis, BullMQ). Перенес триггеры базы данных в бизнес-логику. Написал интеграционные тесты на 70% api.</li><li>Разработка фронтенда (React, Antd). Сформировал uikit и общие компоненты, оптимизировал сложные и нагруженные компоненты. Полностью изменил работу с API на фронтенде. Внедрил практику написания интеграционных тестов с помощью cypress.</li><li>Полностью перенес проект на TypeScript. Сформировал изолированные модули системы.</li><li>Как руководитель команды, я привнес в проект метод критической цепи, метод буфера и метод планирования с конца. Помог команде войти в ритм, чтобы выпускать релизы каждую неделю небольшими партиями. Я также несколько раз составлял индивидуальный план развития для членов команды.</li></ul><h4 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h4><ul><li>Даты: Май 2018 - по настоящее время (Пассивная поддержка)</li><li>Роль: Tech Lead</li></ul><p>Разработка веб-инфраструктуры образовательного центра Мастер Прогресс</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">Главного сайта</a> (Python, Flask).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Кабинета студента</a> (Python, Flask, TypeScript, React).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">Инструмента для работы с rosmintrud</a> (Deno, Vue, Typescript)</li><li>Создана полная инфраструктура на Woodpecker CI и Docker swarm.</li></ul><h4 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h4><ul><li>Даты: Август 2018 - May 2020</li><li>Роль: Lead Fullstack Developer</li></ul><p>Разработка социальной платформы, сфокусированной на улучшении человека и планеты.</p><ul><li>REST API (Node.JS, Express, PostgreSQL) для основного сайта и бэк-офиса.</li><li>Автопостер в различные социальные сети и мессенджеры (Facebook, LinkedIn, Twitter, Telegram).</li><li>Создал нейронную сеть для автоматической категоризации статей.</li></ul><h4 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h4><ul><li>Dates: March 2016 May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>В этой компании было 6 значительных проектов, которые я успешно завершил:</p><ul><li>Оптимизация создания рекламных страниц (PHP, JavaScript)</li><li>Поддержка основного традиционного сайта <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>Разработка парсинга для мониторинга товаров на предмет изменения цены, количества/наличия на складе, рейтинга и других полей на основе данных с 55+ сайтов (Node.js, Express)</li><li>Работа с нейронными сетями для подбора товаров</li><li>Разработка приложений для распознавания лиц для Android (Java)</li></ul><h2 id="хронология" tabindex="-1"><a class="header-anchor" href="#хронология"><span>Хронология</span></a></h2><p>В списке перечислены только публичные проекты.</p></div><!--[--><!--]--></div><footer class="vp-page-meta"><!----><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: dmitriy@pleshevski.ru">Dmitriy Pleshevskiy</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--[--><div class="works-table-wrapper" data-v-765855fb><table data-v-765855fb><thead><tr><th>Название</th><th>Описание</th><th>Роль</th><th>Технологии</th><th>Статус</th><th>Даты</th></tr></thead><tbody><!--[--><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/mindustry-tools">Mindustry tools</a></td><td>Tools for the Mindustry game</td><td>author</td><td>Nix, Godot</td><td>passively-maintained</td><td><div><small class="">01/07/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://rosmintrud.masterprogress.ru">Master Progress Rosmintrud tools</a></td><td>Internal service to prepare documents for the rosmintrud (SPA)</td><td>tech&nbsp;lead</td><td>Deno, Sqlite, TS, Vue, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">07/03/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-plpgsql">tree-sitter-plpgsql</a></td><td>plpgsql grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>passively-maintained</td><td><div><small class="">01/05/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-d2">tree-sitter-d2</a></td><td>d2 grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>actively-developed</td><td><div><small class="">12/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/mynix/nix2lua">nix2lua</a></td><td>This is a small but functional library that converts your nix configurations into lua format.</td><td>author</td><td>Nix, Lua</td><td>passively-maintained</td><td><div><small class="">11/22/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/vnetod">vnetod</a></td><td>Dotenv section switcher</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/29/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/recipes">recipes</a></td><td>Site with recipes which cares about privacy</td><td>author</td><td>TS, Deno, Rust</td><td>passively-maintained</td><td><div><small class="">05/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru">pleshevski.ru</a></td><td>Source code of my personal site</td><td>author</td><td>TS, Vue, Vuepress, Nix</td><td>passively-maintained</td><td><div><small class="">03/16/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/espruino-starter">espruino-starter</a></td><td>Quickly start creating your new project on the espruino board or a board based on it.</td><td>author</td><td>JS</td><td>as-is</td><td><div><small class="">08/23/2021</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/sonic-channel">sonic-channel</a></td><td>Rust client for sonic search backend.</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/18/2020</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/it-fsm">it-fsm</a></td><td>Simple full-featured finite state machine for your project</td><td>author</td><td>TS, NodeJS, Deno</td><td>passively-maintained</td><td><div><small class="">10/11/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://cabinet.masterprogress.ru">Cabinet Master Progress</a></td><td>Student&#39;s cabinet of the educational center Master Progress (SSR + SPA)</td><td>tech&nbsp;lead</td><td>Python, Flask, PostgreSQL, TS, React, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">09/22/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/genrss">genrss</a></td><td>RSS generator for python</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="">07/23/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://www.binarymanagement.com">Binary Management</a></td><td>Project management tool for interior designers</td><td>developer, tech&nbsp;lead, team&nbsp;lead</td><td>TS, NodeJS, React, Antd, Docker, Drone CI, Rust, Nix</td><td>actively-developed</td><td><div><small class="">09/15/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://masterprogress.ru">Master Progress</a></td><td>Main website of the educational center Master Progress (SSR + Forms)</td><td>tech&nbsp;lead</td><td>Python, Flask, JS, Nix</td><td>passively-maintained</td><td><div><small class="">04/10/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/picsg">picsg</a></td><td>A tool for steganographing information in a picture encoded using the Vernam cipher.</td><td>author</td><td>Haskell</td><td>as-is</td><td><div><small class="grey">04/13/2024</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/yandexgpt_tg_bot">yandexgpt_tg_bot</a></td><td>The Telegram bot to describe article with link by YandexGPT.</td><td>author</td><td>JS, NodeJS, Nix</td><td>as-is</td><td><div><small class="grey">06/27/2023</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/estring">estring</a></td><td>A simple way to parse a string using type annotations.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/23/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/enve">enve</a></td><td>It helps you work with environment variables and convert it to any type using only type annotations</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/18/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/docker_stack">docker stack drone plugin</a></td><td>Deploy to production using `docker stack deploy`</td><td>author</td><td>Docker, Drone CI, Woodpecker CI</td><td>as-is</td><td><div><small class="grey">06/06/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/paren">paren</a></td><td>Library for parsing and rendering information.</td><td>author</td><td>TS, Deno</td><td>experimental</td><td><div><small class="grey">03/14/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/hwt">hwt</a></td><td>healthy workaholic timer A tool that keeps you from breaking your health by working all day.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">02/04/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/wd2">wd2</a></td><td>A wrapper over d2 which allows to use additional configs from d2 file</td><td>author</td><td>Bash, Nix</td><td>as-is</td><td><div><small class="grey">12/12/2022</small></div><div><small>07/31/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/react-rest-request">react-rest-request</a></td><td>Minimalistic REST API client for React inspired by Apollo.</td><td>author</td><td>TS, React</td><td>deprecated</td><td><div><small class="grey">10/04/2020</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/marshmallow_pageinfo">marshmallow_pageinfo</a></td><td>Page info marshmallow schema for api</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">10/05/2019</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ictmpl">ictmpl</a></td><td>Generate projects from templates</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">06/30/2018</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/github/dexios">dexios</a></td><td>Dexios is a fast, secure, and open source command-line encryption tool.</td><td>collaborator</td><td>Rust</td><td></td><td><div><small class="grey">06/01/2022</small></div><div><small>02/28/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/itconfig">itconfig</a></td><td>Easy build a configs from environment variables and use it in globally.</td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">12/22/2019</small></div><div><small>07/24/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/migra">migra</a></td><td>Simple SQL migration manager for your project.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">01/31/2021</small></div><div><small>03/17/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ood_persistence">ood_persistence</a></td><td>Asynchronous and synchronous interfaces and persistence implementations for your OOD architecture </td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">10/12/2021</small></div><div><small>10/21/2021</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://corespirit.com">Core Spirit</a></td><td>Social platform focusing on human and planetary enhancement</td><td>developer</td><td>TS, NodeJS, Go, Python, React, Docker, Drone CI</td><td></td><td><div><small class="grey">09/05/2018</small></div><div><small>12/31/2019</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/jjcrypto">jjcrypto</a></td><td>Javascript encoder and decoder</td><td>author</td><td>PHP</td><td>as-is</td><td><div><small class="grey">11/01/2015</small></div><div><small>11/01/2015</small></div></td></tr><!--]--></tbody></table></div><!--]--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div>
<script type="module" src="/assets/app-OMtl6IVo.js" defer></script>
</body>
</html>