Программирование входа в PHP-проект по протоколу OAuth2 через сторонние сервисы и социальные сети. Создание заглушек сторонних сервисов для локальной разработки и тестирования.
Автоматическое обновление синтаксиса и авторефакторинг PHP-проекта с помощью инструмента Rector. Использование стандартных правил и программирование собственного ректора.
Моделирование предметной области бизнеса в DDD. Домены и поддомены. Event Driven архитектура слабосвязанных модулей. Практика Event Storming для построения цепочек команд и событий.
Проблемы кода с прямым обращением к суперглобальным массивам и глобальным переменным. Неуниверсальность и неудобство тестирования. Побочные эффекты и чистые функции.
Подключение компонента Serializer для сериализации и десериализации выборок и команд в формат JSON. Использование нормализатора для работы с массивами.
Обновление конфигурации Doctrine ORM и переводим консольные команды на инъекцию зависимостей в конструктор. Переписываем код на синтаксис с property promotion.
Реализация клиента аутентификации в React для получения токенов JWT с бэкенда по протоколу OAuth2 с PKCE. Подходы к автообновлению токенов и нюансы безопасности.
Добавление кнопки входа под фича-флагом аутентификации. Поиск компонентов для работы с OAuth2 в React. Возможные трудности при подключении сторонних библиотек.
Декларативное централизованное управление доменными именами с помощью Traefik. Автополучение Let's Encrypt сертификатов. Деплой нескольких проектов в один кластер.
Запуск БД в Docker и без него. Способы организации репликации. Написание скрипта резервного копирования базы данных PostgreSQL с загрузкой в S3-совместимое хранилище.
Способы аутентификации при работе с API. Использование токенов формата JWT в распределённых системах. Спецификация OAuth 2.0 для получения доступа в сторонние сервисы.
Переход от классического CodeSniffer к продвинутым стандартам кодирования с PHP CS Fixer. Внедрение практики final or abstract для классов. Интеграция в PhpStorm.
Перевод API на PHP 8. Сборка расширений из исходников вместо PECL. Добавление типов и упрощение PHPDoc-блоков за счёт перехода от Psalm-аннотаций и удаления повторов.
Программирование формы регистрации пользователя в React. Организация взаимодействия фронтенда с API. Работа через CORS-заголовки и через проксирование.
Доработка E2E-тестов для работы с асинхронными страницами. Вынесение общего шаблона вёрстки. Установка маршрутизатора и создание страницы для регистрации.
Унификация привязки состояния и действий к свойствам компонента. Автоматизация мэппинга через коннектор. Подключение React-Redux. Асинхронные экшены через Thunk.
Добавление новых действий к объекту хранилища через систему плагинов-редьюсеров. Диспетчеризация действий. Фабрики-создатели действий. Подключение Redux.
Реализация CI/CD pipeline в сервисе GitHub Actions. Использование GitHub Packages для хранения Docker-образов. Кэширование Docker-слоёв через BuildKit.
Создание проекта с ReactJS. Подключение и сборка пакетов через NodeJS. Запуск девелоперского сервера с автообновлением UI. Деплой фронтенда через Docker.
Использование посредников middleware для выноса повторяющегося инфраструктурного кода из контроллеров. Очистка ввода и централизованная обработка доменных исключений.
Философия логирования процессов в Docker. Установка Monolog. Вывод логов для функциональных тестов. Подключение сервиса Sentry.IO для уведомлений об ошибках.
Написание и генерирование миграций для автоматизации создания и изменения структуры БД. Использование фикстур для автозаполнения таблиц демонстрационными данными.
Автоматизация серверной инфраструктуры. Автоматическая установка Docker и Compose на виртуальную машину через Ansible. Подключение сертификатов Let's Encrypt.