Портфолио-сайт: Blazor Server + PostgreSQL
Сайт-портфолио с админкой, PostgreSQL и конвейером обработки медиа
Корпоративные системы недропользования, миграции и оптимизация PostgreSQL, пайплайны обработки медиа, автономные дроны и agentic AI. По каждому проекту — суть задачи, техническое решение и, где возможно, пример кода.
Сайт-портфолио с админкой, PostgreSQL и конвейером обработки медиа
Формирование протокола решения экспертной комиссии по запасам
Сводные сведения об объекте недропользования для государственной отчётности
Простой парсер PDF-файла родословной
Проект автоматизированного полёта дрона
Скрипт PostgreSQL для каскадного удаления месторождения
Автосоздание полезных ископаемых в учётных объектах по ПИ залежей
Пакетная загрузка подписей экспертов к экспертизе РГФ
Шесть автономных агентов (Claude Code + Cline) под управлением MCP-оркестратора растащили монолит на модули: 1,2 млн строк C# разобраны семантическим графом Roslyn, 340 файлов переписаны за 11 часов без регрессов на проде.
Собственный MCP-сервер на .NET 8 отдаёт агентам живой DDL, индексы с числом обращений, размеры таблиц и EXPLAIN ANALYZE по read-only роли. Агент перестал придумывать имена колонок и на 70% реже ошибается в SQL.
Агенты пишут xUnit-тесты пачками, а харнесс на Roslyn отбраковывает всё, что не собирается, не ловит мутацию или тестирует реализацию вместо поведения. Итог: ~4 900 новых тестов и покрытие 68%.
Семантический поиск по 180 000 страниц документации, ГОСТов и истории коммитов: pgvector + локальные эмбеддинги, гибридный ранкинг и ответы со ссылкой на файл, страницу и дату. Данные не покидают контур.
Отчёт по недропользованию генерировался 47 секунд и ронял соединения. Переписал на CTE + оконные функции, добавил партиционирование и составной индекс: 180 мс на тех же данных — ускорение в 260 раз.
Журнал изменений на триггерах Oracle + конвейер на .NET 8: двоичный COPY в PostgreSQL и LISTEN/NOTIFY. Задержка репликации 200–400 мс при 4 млн изменений в сутки, без GoldenGate и платных лицензий.
412 ГБ, 780 млн записей, 11 лет данных и Firebird 2.5 на пределе возможностей. Перенос на PostgreSQL 16 конвейером на Channels: 6 параллельных потоков, двоичный COPY, контрольные суммы по каждому диапазону ключей.
Каскадные связи «лицензия → участок → дочерние объекты → обременения» считались в коде на 40 000 объектов. Один рекурсивный CTE с защитой от циклов решает задачу на стороне БД за 120 мс.
Пользовательский CSV/Excel/XLSX любого размера: потоковый разбор без загрузки в память, 40 правил валидации, отчёт об ошибках построчно и загрузка через двоичный COPY. 1,5 млн строк — 62 секунды.
Сервис подписи и проверки документов: detached CMS, усиленная квалифицированная подпись, штампы времени, разбор цепочки сертификатов и понятная причина отказа вместо кода ошибки 0x8009.
Шаблонизируемые протоколы и ведомости: титул, таблицы результатов, оценки экспертов, диаграммы и QR-код на онлайн-версию. 200 страниц формируются за 3 секунды, вёрстка не разъезжается при 900 участниках.
Автоматическая обработка загруженных материалов: обрезка обложек в 16:9, ресайз и webp-пресеты, перекодирование видео в H.264 с faststart. 300 МБ исходников превращаются в ~18 МБ веб-контента без ручной работы.
Постоянный хостинг без облачных счетов: Ubuntu Server, Docker Compose, PostgreSQL с партиционированием, Nginx с Let's Encrypt и systemd-юниты для автостарта после света и перезагрузки.
Свой экспортёр метрик на .NET 8, дашборды Grafana и алерты в Telegram до того, как пользователь заметит проблему. Среднее время обнаружения инцидента упало с «пока не позвонили» до 40 секунд.
Бэкап, который действительно восстанавливается: pg_dump в custom-формате, копия на внешний носитель, еженедельная проверка через реальный рестор в одноразовую базу и алерт в Telegram при любой ошибке.
Профилирование, проекции вместо Include, compiled query, разделение one-to-many запросов и кэш справочников: отчёт ускорился в 30 раз, а количество SQL-запросов упало с 1 100 до 4.
Минимальный API на ASP.NET Core: access и refresh токены с ротацией, ограничение частоты запросов по ключам и IP, идемпотентность платёжных операций, аккуратные ProblemDetails и живая OpenAPI-документация.
Двухуровневый кэш справочников и агрегатов: 1 час TTL, распределённая инвалидация через Redis-каналы, защита от cache stampede и «мягкий» пересчёт в фоне. Нагрузка на БД упала на 84%.
Заявка с сайта уходит в Telegram за 300 мс: разметка HTML, экранирование пользовательского текста, повторные попытки с backoff, очередь при сбое сети и мгновенный статус для клиента через SignalR.
Лёгкая CRM без лицензий: воронка статусов, история переписки, задачи с напоминаниями, вложения в файловом хранилище и поиск по всей базе. Заменила таблицу в Excel и три мессенджера.
Свой алгоритм сравнения XML, текстов и таблиц: построчный diff с подсветкой, семантическое сравнение XML по узлам вместо строк и защита от «поехавших» из-за порядка атрибутов шумовых правок.
Настольное приложение на WPF для массовой загрузки справочников: drag-and-drop файла, предпросмотр с подсветкой ошибок, фоновая загрузка в БД и генерация xlsx через OpenXML на машинах без установленного Excel.