Александр Бызов — +7 (902) 301-90-52
Быстро, без менеджерских накруток, с полным техническим контролем от архитектуры до деплоя
ООП, DDD, чистая архитектура, паттерны проектирования, PHP 8+, Yii2, MySQL, PostgreSQL, REST API
Vue.js, JavaScript, CSS, вёрстка,JWT авторизация, WebGL/ThreeJS
Docker, Linux/FreeBSD, Bash, CI, деплой; on‑prem: домашний сервер 2×Xeon 2689, 128 GB RAM, 2 TB NVMe
Обеспечение/проверки ИБ, ViPNet, КриптоПро, ЭП, TCP/IP
Интеграция LLM по API, локальные нейросети для распознавания лиц и номеров автомобилей
Автогенерация кода, ИИ-агенты, Cursor IDE
В первую очередь я пишу веб приложения на стеке Yii2, VueJS. Разработка системы стилей, компонентов для построения интерфейса, продумывание структуры БД, выстраивание архитектуры, реализация бэкэнда на основе JSON REST-API.
Есть опыт работы с ThreeJS - построение 3d графики в браузере. Позволяет строить схемы, чертежи, модели по расчётным характеристикам. В результате получаем автоматическую генерацию документов - коммерческое предложение, спецификация, счёт, акт, чертежи с размерами, 3d виды модели, просмотр, редактирование модели в 3d.
Есть опыт внедрения LLM по API. Позволяет распознавать текстовые команды, выполнять поиск по вашей базе знаний (RAG), выполнять запросы к вашему приложению. Например, пользователь пишет запрос в виде диалога, LLM генерирует команду к приложению, выполняет её и даёт результат пользователю. («Забронируй переговорную комнату на завтра с 14:00 до 16:00»,«Какие условия для удаленной работы в нашей компании?»)
Локальные нейросети: распознавание лиц и номеров автомобилей (on‑prem)
Проблема: Отсутствие тестов делает рефакторинг рискованным
Решение: Написание тестов позволяет глубже понять как работает приложение во всех режимах. Обеспечивает проверку после рефакторинга или правок, и это отличная задача для нейросети.
Проблема: Автогенерация без контроля приводит к усложнению кода, багам и уязвимостям.
Решение: Использовать нейросети для рутинных задач (формы, миграции, прототипы, тесты), но обязательно автоматические проверки и ручное code‑review. В результате получаем огромное ускорение и экономию бюджета.
Пример: Генерация форм и миграций по модели данных, верстка из figma, генерация AR моделей, рефакторинг кода, прототипирование, написание тестов.
Проблема: Часто проект разрастается из небольшого прототипа, и в результате имеем огромное количество запутанного кода, отсутствие диалога с бизнесом приводит к точечным решениям текущих задач (костыли) всё это приводит к огромным контроллерам, стилям на десятки тысяч строк, бездумный нейминг, изменение имени переменной в жизненном цикле, валидация в контроллере. И как результат - сложное и дорогое изменение, расширение логики, низкое качество итогового продукта.
Решение: Выстраивание системы, применение паттернов проектирования, продумывание архитектуры, планирование возможных расширений. В части JS это реактивные фреймворки - vueJS. Разделение логики по компонентам, переиспользование компонентов, выстраивание системы компонентов.
Пример: Поэтапный калькулятор цены паттерн цепочка обязанностей обеспечивает прозрачность расчета, легкое добавление новых этапов, хорошая изоляция логики. Правила промокода. Объявление интерфейса «Правило». Каждое правило это отдельный класс, который отвечает только за свою часть. Сохранение в JSON в единой таблице. В результате легкое добавление любых новых правил.
Проблема: Встречаются проекты с использованием самописных решений уровня фреймворка. Нестандартное логирование и самодельные очереди.
Решение: Я всегда стараюсь максимально использовать стандартные решения фреймворка. Это позволит будущим разработчикам легко разобраться с кодом.
Пример: Yii2, валидация в модели, совпадение имен полей на фронте и бэке. Стандартный жизненный цикл: load() -> validate() -> save(). Тонкие контроллеры. Использование сценариев для ограничения атрибутов, доступных к редактированию в данный момент. Логирование стандартным логером фреймворка, оставляя возможность изменить target и другие настройки логера. Использование Yii2 Queue.
Проблема: Часто в структуре БД отсутствуют внешние ключи, присутствуют циклы, неоднозначность данных.
Решение: Продуманные таблицы, наличие внешних ключей, гарантирование целостности данных на уровне БД. Однозначность данных, отсутствие циклов.
Пример: Хранение в БД стоимости товара, количество и сумма. Сумму нужно рассчитывать, перемножив, её не нужно хранить. Что если сумма не равно перемножению, это неоднозначность данных. Я продумываю структуру БД исключая возможность таких ошибок в корне. Еще пример хранение баланса в поле БД. Его нужно вычислять суммируя доход-расход.
Проблема: Например регистрация пользователя, в БД сохраняется номер тел и код подтверждения.
Решение: Сохранение кода в кэше, и запись в БД только после подтверждения, когда все данные валидны.
Рефакторинг от if-else в контроллере к правилам-объектам с собственной логикой
• Жёсткая логика в контроллере
• Сложно добавлять и отлаживать правила
• Дублирование кода
• Автоматическое инстанцирование правил и запуск логики в них
• Отдельные формы для каждого правила на фронте
• Стандартный контроллер load() save()
Тонкий контроллер, стандартный жизненный цикл
Гибкость правил
Высокая связность кода в классе правила
Ниже цена и прямая связь — без менеджерских накруток
Архитектура, код, деплой, тесты — всё под контролем
Проекты по ViPNet, админ-серверы
Прототипирование и разработка — экономия времени и бюджета