Тетрис- и Space Invaders-подобные аркады на чистом canvas/JS, без мультиплеера и без сервера — в отличие от ./tanks это классические одиночные игры. Названия сайта — generic (не «Тетрис»/«Space Invaders»), та же логика, что и с переименованием ./battlecity в ./tanks: обе франшизы — активно защищаемые товарные знаки (The Tetris Company, Taito). ./blocks — 10x20 поле, 7 фигур, вращение с простым wall-kick, ускорение по уровням, next-piece превью, hard drop. ./invaders — волны врагов, стрельба игрока и врагов, жизни, ускорение с каждой волной. Обе — клавиатура + сенсорные кнопки, RU/EN (не сбрасывает партию при переключении языка — в отличие от бага, который чинили в ./tanks). Кросс-ссылки между всеми тремя играми на каждой игровой странице, подвал whoami обновлён списком всех трёх.
232 lines
17 KiB
HTML
232 lines
17 KiB
HTML
<!doctype html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>cacto — Гаммель Дмитрий, PHP backend-разработчик</title>
|
||
<meta name="description" content="Гаммель Дмитрий — backend-разработчик PHP. 6 лет коммерческого опыта: банковская IT-инфраструктура, ClickHouse-аналитика, legacy. Резюме, проекты." />
|
||
<link rel="canonical" href="https://cactoz.su/" />
|
||
<meta property="og:type" content="profile" />
|
||
<meta property="og:url" content="https://cactoz.su/" />
|
||
<meta property="og:title" content="Дмитрий Гаммель — backend-разработчик PHP" />
|
||
<meta property="og:description" content="6 лет коммерческого PHP: банковская IT-инфраструктура, ClickHouse-аналитика, legacy. До этого — АСУТП и электротехника." />
|
||
<meta property="og:image" content="https://cactoz.su/assets/og.png" />
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<link rel="icon" type="image/svg+xml" href="/assets/cactus-logo.svg" />
|
||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
||
<link rel="stylesheet" href="/css/theme.css" />
|
||
<link rel="stylesheet" href="/css/resume.css" />
|
||
</head>
|
||
<body>
|
||
<canvas id="matrix-rain"></canvas>
|
||
|
||
<header class="site-header">
|
||
<div class="site-header__inner">
|
||
<a href="/" class="logo" aria-label="cacto — на главную">
|
||
<img src="/assets/cactus-logo.svg" width="20" height="20" alt="" />
|
||
cacto<span class="cursor">_</span>
|
||
</a>
|
||
<ul class="nav-links">
|
||
<li><a href="/" aria-current="page">whoami</a></li>
|
||
<li><a href="/projects">ls projects/</a></li>
|
||
<li><button id="lang-toggle" class="lang-btn" type="button">EN</button></li>
|
||
</ul>
|
||
</div>
|
||
</header>
|
||
|
||
<div class="container">
|
||
<!--
|
||
Статика ниже — серверный RU-рендер того же содержимого, что генерирует
|
||
frontend/js/resume.js (DATA.ru). Сделано так, чтобы curl/поисковики без
|
||
исполнения JS видели текст резюме, а не пустой #resume-root. resume.js
|
||
не перерисовывает при lang=ru (по умолчанию) — только при переключении
|
||
на EN. При правке текста резюме меняйте оба места: DATA.ru в resume.js
|
||
и разметку ниже.
|
||
-->
|
||
<main id="resume-root">
|
||
<section class="hero">
|
||
<pre class="ascii-cactus" aria-hidden="true"> , ,
|
||
|\_/|
|
||
.--| |--.
|
||
( | | )
|
||
`--| |--'
|
||
| |
|
||
.--| |--.
|
||
( | | )
|
||
`--| |--'
|
||
| |
|
||
| |
|
||
__| |__
|
||
(_________)</pre>
|
||
<div class="hero-text">
|
||
<div class="status-line"><span class="status-dot"></span>STATUS: OPEN TO WORK</div>
|
||
<h1><span class="glitch" data-text="Гаммель Дмитрий">Гаммель Дмитрий</span></h1>
|
||
<p class="role">PHP-разработчик (Backend, Middle+/Senior)</p>
|
||
<p class="tagline">От электрического сигнала до строчки кода.</p>
|
||
<div class="hero-actions">
|
||
<a class="hero-actions__btn" href="/assets/dmitry-gammel-cv.pdf" download>скачать резюме (PDF)</a>
|
||
<a class="hero-actions__btn" href="https://git.cactoz.su/cacto" target="_blank" rel="noopener">git.cactoz.su/cacto</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="about">
|
||
<h2 class="section-heading"><span class="section-heading__num">01</span>cat about.txt</h2>
|
||
<p>Backend-разработчик, 6 лет коммерческого опыта на PHP. Работаю с legacy, сложными запросами и архитектурными решениями — там, где «просто добавить фичу» не получается.</p>
|
||
<p>Спроектировал аналитический контур на ClickHouse: отчёты формировались 3–4 минуты, стали за 10–15 секунд. Вёл разработку модуля документооборота в банковской IT-инфраструктуре — архитектура, декомпозиция, код-ревью, онбординг разработчиков.</p>
|
||
<p>Начинал с электротехники и АСУТП: писал управляющий софт для промышленных систем на ST, поднимал SCADA. Путь «от электрического сигнала до строчки кода» помогает быстро вникать в чужие системы и в задачи на стыке железа и бэкенда.</p>
|
||
<p>Ищу позицию Middle+/Senior backend. Основной стек — PHP, параллельно пишу на Go.</p>
|
||
</section>
|
||
|
||
<section class="experience">
|
||
<h2 class="section-heading"><span class="section-heading__num">02</span>ls -la experience/</h2>
|
||
<ol class="timeline">
|
||
<li class="timeline-item">
|
||
<div class="timeline-item__meta">март 2026 — настоящее время · 5 месяцев</div>
|
||
<h3 class="timeline-item__role">Программист АСУТП и КИПиА</h3>
|
||
<div class="timeline-item__company">Уралэнергоаква · Екатеринбург</div>
|
||
<ul>
|
||
<li><span class="dash">-</span><span>Временный период вне основной специальности после завершения проекта в ЭТП ГПБ. Ищу позицию backend-разработчика; параллельно — пет-проекты и Go.</span></li>
|
||
</ul>
|
||
</li>
|
||
<li class="timeline-item">
|
||
<div class="timeline-item__meta">июль 2022 — март 2026 · 3 года 9 месяцев</div>
|
||
<h3 class="timeline-item__role">PHP-разработчик</h3>
|
||
<div class="timeline-item__company">ООО «ЭТП ГПБ» (дочернее АО «Газпромбанк») · Екатеринбург</div>
|
||
<ul>
|
||
<li><span class="dash">-</span><span>Разрабатывал и поддерживал внутреннюю систему электронного документооборота для согласования и контроля исполнения договоров.</span></li>
|
||
<li><span class="dash">-</span><span>Поддерживал и развивал legacy-проект на Zend Framework, участвовал в архитектурном переходе на Symfony; PHP 7.4 → 8.0.</span></li>
|
||
<li><span class="dash">-</span><span>Переписывал построители запросов на «чистый» SQL с оптимизацией под PostgreSQL, внедрял сервисный слой архитектуры.</span></li>
|
||
<li><span class="dash">-</span><span>Спроектировал и реализовал аналитический контур отчётности на ClickHouse — сократил время формирования отчётов с 3–4 минут до 10–15 секунд.</span></li>
|
||
<li><span class="dash">-</span><span>Реализовал интеграции с внутренними банковскими сервисами, включая проверку электронной подписи и машиночитаемых доверенностей.</span></li>
|
||
<li><span class="dash">-</span><span>Работал с очередями сообщений (RabbitMQ) для асинхронной обработки задач.</span></li>
|
||
<li><span class="dash">-</span><span>Неофициально возглавлял разработку нового модуля документооборота: планировал архитектуру, проводил код-ревью, довёл проект до MVP.</span></li>
|
||
<li><span class="dash">-</span><span>Работал по Scrum: месячные спринты, таск-трекер YouTrack, оценка задач методом Planning Poker.</span></li>
|
||
</ul>
|
||
</li>
|
||
<li class="timeline-item">
|
||
<div class="timeline-item__meta">март 2021 — июль 2022 · 1 год 5 месяцев</div>
|
||
<h3 class="timeline-item__role">PHP-разработчик</h3>
|
||
<div class="timeline-item__company">фриланс/субподряд · kupisever.ru · удалённо</div>
|
||
<ul>
|
||
<li><span class="dash">-</span><span>Дорабатывал бэкенд действующей B2B-платформы (доска объявлений) на Yii2 в качестве субподрядчика, работал самостоятельно на удалённом проекте. Стек: PHP, Yii2, PostgreSQL, RabbitMQ, Docker.</span></li>
|
||
<li><span class="dash">-</span><span>Разработал модуль email-рассылок с очередями сообщений (RabbitMQ): веб-форма конструктора писем с текстовым редактором и гибкой настройкой параметров рассылки.</span></li>
|
||
<li><span class="dash">-</span><span>Реализовал модуль категорий объявлений — административную часть (бэкенд) и клиентское меню (фронтенд).</span></li>
|
||
</ul>
|
||
</li>
|
||
<li class="timeline-item">
|
||
<div class="timeline-item__meta">июль 2020 — март 2021 · 9 месяцев</div>
|
||
<h3 class="timeline-item__role">PHP-разработчик (с обязанностями руководителя группы)</h3>
|
||
<div class="timeline-item__company">ИстВуд · Курган</div>
|
||
<ul>
|
||
<li><span class="dash">-</span><span>Интернет-магазины на 1С-Битрикс: вёрстка, интеграция готовых модулей, доработка бизнес-логики под задачи клиентов.</span></li>
|
||
<li><span class="dash">-</span><span>Реализовал интеграции с 1С (обмен товарными каталогами и заказами) и платёжными системами (эквайринг).</span></li>
|
||
<li><span class="dash">-</span><span>Реализовал нестандартный механизм автоматического получения и обновления каталога товаров (несколько тысяч позиций, ежесуточное обновление) для интернет-магазина на кастомном шаблоне вне типовых решений Bitrix.</span></li>
|
||
<li><span class="dash">-</span><span>Разработал функционал онлайн-записи на приём к врачу для сайта частной клиники; реализовал интеграцию с фискальным регистратором.</span></li>
|
||
<li><span class="dash">-</span><span>Участвовал во внедрении Битрикс24: настройка бизнес-процессов и цепочек согласования закупок.</span></li>
|
||
<li><span class="dash">-</span><span>Фактически руководил командой из 3 разработчиков: распределял задачи, контролировал качество реализации, проводил технические собеседования.</span></li>
|
||
</ul>
|
||
</li>
|
||
<li class="timeline-item">
|
||
<div class="timeline-item__meta">октябрь 2019 — февраль 2020 · 5 месяцев</div>
|
||
<h3 class="timeline-item__role">Техник по телекоммуникациям</h3>
|
||
<div class="timeline-item__company">Урал-М · Курган</div>
|
||
<ul>
|
||
<li><span class="dash">-</span><span>Настройка и обслуживание систем СКУД, видеонаблюдения, радиоканальной связи; работа с 1С.</span></li>
|
||
</ul>
|
||
</li>
|
||
<li class="timeline-item">
|
||
<div class="timeline-item__meta">апрель 2014 — июль 2018 · 4 года 4 месяца</div>
|
||
<h3 class="timeline-item__role">Техник-электрик</h3>
|
||
<div class="timeline-item__company">Кирпичный завод, Мясокомбинат, Хлебозавод · Курган</div>
|
||
<ul>
|
||
<li><span class="dash">-</span><span>Электромонтажные и наладочные работы на производственных предприятиях.</span></li>
|
||
</ul>
|
||
</li>
|
||
</ol>
|
||
</section>
|
||
|
||
<section class="skills">
|
||
<h2 class="section-heading"><span class="section-heading__num">03</span>skills --list</h2>
|
||
<div class="skill-group">
|
||
<div class="skill-group__title">backend</div>
|
||
<ul class="tag-list">
|
||
<li class="tag">PHP8</li>
|
||
<li class="tag">PHP7</li>
|
||
<li class="tag">Symfony</li>
|
||
<li class="tag">Zend Framework</li>
|
||
<li class="tag">Yii2</li>
|
||
<li class="tag">PostgreSQL</li>
|
||
<li class="tag">MySQL</li>
|
||
<li class="tag">ClickHouse</li>
|
||
<li class="tag">SQL</li>
|
||
<li class="tag">RabbitMQ</li>
|
||
<li class="tag">Docker</li>
|
||
<li class="tag">Git</li>
|
||
<li class="tag">REST API</li>
|
||
<li class="tag">PHPUnit</li>
|
||
<li class="tag">Composer</li>
|
||
<li class="tag">ООП</li>
|
||
<li class="tag">Go</li>
|
||
</ul>
|
||
</div>
|
||
<div class="skill-group">
|
||
<div class="skill-group__title">electrical / automation</div>
|
||
<ul class="tag-list">
|
||
<li class="tag">АСУТП</li>
|
||
<li class="tag">КИПиА</li>
|
||
<li class="tag">СКУД</li>
|
||
<li class="tag">Видеонаблюдение</li>
|
||
<li class="tag">Радиоканальная связь</li>
|
||
<li class="tag">Электромонтаж</li>
|
||
<li class="tag">1С</li>
|
||
</ul>
|
||
</div>
|
||
<div class="skill-group">
|
||
<div class="skill-group__title">soft</div>
|
||
<ul class="tag-list">
|
||
<li class="tag">Оптимизация SQL-запросов</li>
|
||
<li class="tag">Обучение и адаптация junior-разработчиков</li>
|
||
<li class="tag">Быстрая обучаемость</li>
|
||
</ul>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="education">
|
||
<h2 class="section-heading"><span class="section-heading__num">04</span>cat education.txt</h2>
|
||
<ul class="edu-list">
|
||
<li class="edu-item">
|
||
<div class="edu-item__year">2013</div>
|
||
<div class="edu-item__degree">Неоконченное высшее</div>
|
||
<div class="edu-item__school">Тюменский государственный нефтегазовый университет (ТюмГНГУ)</div>
|
||
<div class="edu-item__detail">Институт кибернетики, информатики и связи, Электроэнергетика и электротехника</div>
|
||
</li>
|
||
<li class="edu-item">
|
||
<div class="edu-item__year">2011</div>
|
||
<div class="edu-item__degree">Свидетельство о квалификации «Электромонтёр 3 разряда»</div>
|
||
<div class="edu-item__school">ФГБОУ ВПО «Тюменский государственный университет»</div>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
|
||
<section class="contact">
|
||
<h2 class="section-heading"><span class="section-heading__num">05</span>cat contact.txt</h2>
|
||
<ul class="contact-list">
|
||
<li><span class="contact-list__label">email</span><a href="mailto:cactozzz93@gmail.com">cactozzz93@gmail.com</a></li>
|
||
<li><span class="contact-list__label">telegram</span><a href="https://t.me/Cactozz">t.me/Cactozz</a></li>
|
||
</ul>
|
||
</section>
|
||
</main>
|
||
|
||
<footer id="site-footer" class="site-footer">
|
||
<p>P.S. есть ещё пара мини-игр — <a href="/game">./tanks</a> (мультиплеер), <a href="/blocks">./blocks</a> и <a href="/invaders">./invaders</a>, если будет пара свободных минут.</p>
|
||
</footer>
|
||
</div>
|
||
|
||
<script type="module" src="/js/matrix-rain.js"></script>
|
||
<script type="module" src="/js/resume.js"></script>
|
||
</body>
|
||
</html>
|