Deworker Pro
1.41K subscribers
5 photos
187 links
Download Telegram
При реализации аутентификации мы познакомились с использованием секретов Docker для передачи контейнерам файлов ключей для JWT.

По этим же мотивам сегодня мы повысим безопасность контейнеров. Сделаем передачу паролей через секреты вместо переменных окружения. И создадим отдельного пользователя для PHP-CLI, чтобы не запускать консольные команды от root. Это нам станет полезно когда мы добавим очереди.

Заодно обновим виртуальные машины до Debian 10 и Docker 20, чтобы работать со свежими инструментами.
При появлении в базе данных реальных записей возникает вопрос надёжности их хранения и резервного копирования, чтобы их случайно не потерять.

Об этом сегодня и позаботимся.

Сравним варианты запуска PostgreSQL в Docker, нативно и как облачный сервис. Рассмотрим, как сделать репликацию при запуске в Docker. И напишем скрипт резервного копирования БД с загрузкой дампа в S3-совместимое хранилище.

И для удобства поднимем эмулятор хранилища для локальной разработки.
Стрим нового рабочего сезона

Спасибо за ваши предложения по контенту в комментариях и в обратную связь! С вами мы делаем наши видео лучше, чем изначально планировали.

Открываем новый рабочий сезон. Об этом поговорим с вами на стриме в эту пятницу 20 августа в 19:00 МСК.
В нашей инфраструктуре есть неудобства. В отличие от доменов и поддоменов при разработке и тестировании мы используем маршрутизацию по портам. При тестировании мы используем домен gateway вместо localhost. Все поддомены нам приходится вписывать вручную. И из-за монополии на 80 и 443 порты кластера мы не можем задеплоить несколько проектов.

Сегодня мы всё это решим. И от Nginx и Certbot перейдём на декларативное управление доменными именами и проксированием с помощью Traefik с автополучением Let's Encrypt сертификатов. И как бонус вынесем прокси-сервер в отдельный репозиторий, чтобы можно было деплоить в один кластер сколько угодно проектов
Борода у меня не такая уж длинная, но в поиске будущую возрастную нишу уже занимаем. Готовь, так сказать, сани с молоду 😄
Как и обещали в стриме, начинаем перезапись старых эпизодов.

Сегодня выкладываем обновлённое видео про жизненный цикл HTTP-запроса. Изменили стиль, улучшили качество и доработали часть про DNS.
Продолжаем делать контент лучше и удобнее. Сегодня рассмотрим структуру запроса и ответа с хостами, ресурсами, методами и статусами. Поговорим про идемпотентность запросов, о которой не все знают.
Помимо записи новых эпизодов и переписывания старых для удобства просмотра дописываем тайм-коды к имеющимся. Сегодня добавили их к эпизоду о подключении БД и установке Doctrine ORM.
Вы уже познакомились с деятельностью Юли на прошлом стриме. Её любовь к систематизации и классификации в дополнение к нашей программистской безбашенности было решено направить в нужное русло. Посему она возьмёт штурвал проектирования ТЗ и дизайна аукциона в свои скрупулёзные руки пока мы с вами пишем код. И всё это подробно расскажет и покажет в своей серии о проектировании. Занимайте места ближе к экрану и поехали вместе :)
С типом аукциона мы с вами определились. Сегодня начинаем рисовать. Подсмотрим несколько идей у других готовых аукционов и набросаем структуру главной страницы.
Начинаем делать свой удобный HTTP-фреймворк на PHP. От нас не скроется ни один нюанс его работы. Мы исследуем его устройство вдоль и поперёк через написание с нуля каждого компонента.

Сегодня в начале нашего пути дадим определение компонентного HTTP-фреймворка. Рассмотрим место фреймворка и библиотек в потоке управления. Встретим и решим проблему совместимости фреймворков путём использования рекомендаций PSR.

Заваривайте себе тёплого чая и поехали вместе с нами!
Главную страницу аукциона мы придумали. Теперь приступаем к лоту и ставкам, так как это в проекте самое главное.

Нужно подробно продумать жизненный цикл лота с его нюансами и вписать всё в ТЗ, чтобы потом было понятно, что программировать. Разобрать, как будем работать с городами и странами. Решить, нужно ли давать редактировать опубликованный лот или отменять ставки. И если можно, то как это делать корректно и безопасно. И нарисовать, что будет выводиться на странице лота.

Об этом сегодня поговорим и всё это нарисуем.
Вот и все пакеты Doctrine полностью перешли на новый DBAL 3.0. А SwiftMailer решил в этом месяце уйти в закат, выдвинув себе достойную замену.

Сегодня встретим новые версии пакетов бэкенда и обновим стили фронтенда по новым правилам StyleLint.
Изначально кажется, что в аукционе сложнее всего делать лоты и ставки. А дальше уже всё пойдёт само собой.

Но при проектировании оказывается, что не меньше сложностей скрывается в процессе сделки. Нужно продумать весь путь с этапами оплаты и пересылки. Как принимать оплату и списывать комиссии. Как повысить надёжность процесса передачи товара с переводом денег. Как при необходимости отменять сделки и что делать с возвратами.

В этот раз проработкой этих этапов мы и займёмся в эпизоде о сделках и балансе.
Может кого-то мы отвлекаем от великого пятничного деплоя а-ля Красная Пятница, но мы усердно пилим полезный контент.

В аукционе мы уже обсудили основные этапы от черновика лота до завершения сделки. Осталось рассмотреть вспомогательные процессы модерации, арбитража и техподдержки.

Поэтому сегодня сначала смоделируем поведение автоматической и ручной модерации при публикации лота и в переписке к нему. И поговорим о причинах споров по сделкам и их решении через арбитраж.
Напоминаю, что помимо просмотра скринкастов может быть интересно порой читать статьи в моём блоге @elisdnru. Сегодня там вышла вторая часть мегацикла про практики внедрения зависимостей.
С целями по HTTP-фреймворку мы в прошлый раз определились. Пора приступать к написанию.

Сегодня подготовим всю необходимую инфраструктуру, как мы с вами уже умеем делать с помощью Docker по опыту проекта аукциона.

Мы также установим и настроим локальный HTTP-сервер с PHP. А потом определим структуру проекта для написания наших классов. Потом для тестирования установим PHPUnit и напишем свой первый тест. И заодно настроим интерпретатор и запуск тестов в PHPUnit.
Мы разобрали внешний дизайн аукциона и его функциональность. Пришло время продумать внутренний вид личных кабинетов покупателя и продавца.
Forwarded from ElisDN.ru
Выступил с докладом на третьем митапе BeerPHP SPb.

Рассказал про вертикальную группировку кода проекта по фичам на модули и компоненты вместо горизонтального разделения исходников по типам классов. Рассмотрел, что делать с контроллерами, и как удобнее раскладывать тесты и конфигурацию в такой структуре:

https://elisdn.ru/blog/149/code-structure