Files
cacto bb194ad33f Добавить две одиночные мини-игры: ./blocks и ./invaders
Тетрис- и 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 обновлён списком всех трёх.
2026-08-12 11:41:18 +05:00

232 lines
17 KiB
HTML
Raw Permalink 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">
<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"> , ,
|\_/|
.--| |--.
( | | )
&#96;--| |--&#39;
| |
.--| |--.
( | | )
&#96;--| |--&#39;
| |
| |
__| |__
(_________)</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>