Изначально кажется, что в аукционе сложнее всего делать лоты и ставки. А дальше уже всё пойдёт само собой.
Но при проектировании оказывается, что не меньше сложностей скрывается в процессе сделки. Нужно продумать весь путь с этапами оплаты и пересылки. Как принимать оплату и списывать комиссии. Как повысить надёжность процесса передачи товара с переводом денег. Как при необходимости отменять сделки и что делать с возвратами.
В этот раз проработкой этих этапов мы и займёмся в эпизоде о сделках и балансе.
Но при проектировании оказывается, что не меньше сложностей скрывается в процессе сделки. Нужно продумать весь путь с этапами оплаты и пересылки. Как принимать оплату и списывать комиссии. Как повысить надёжность процесса передачи товара с переводом денег. Как при необходимости отменять сделки и что делать с возвратами.
В этот раз проработкой этих этапов мы и займёмся в эпизоде о сделках и балансе.
Может кого-то мы отвлекаем от великого пятничного деплоя а-ля Красная Пятница, но мы усердно пилим полезный контент.
В аукционе мы уже обсудили основные этапы от черновика лота до завершения сделки. Осталось рассмотреть вспомогательные процессы модерации, арбитража и техподдержки.
Поэтому сегодня сначала смоделируем поведение автоматической и ручной модерации при публикации лота и в переписке к нему. И поговорим о причинах споров по сделкам и их решении через арбитраж.
В аукционе мы уже обсудили основные этапы от черновика лота до завершения сделки. Осталось рассмотреть вспомогательные процессы модерации, арбитража и техподдержки.
Поэтому сегодня сначала смоделируем поведение автоматической и ручной модерации при публикации лота и в переписке к нему. И поговорим о причинах споров по сделкам и их решении через арбитраж.
deworker.pro
Модерация и арбитраж
Организация модерации и автомодерации лотов. Обращения в арбитраж для решения споров по сделкам. Работа технической поддержки.
Напоминаю, что помимо просмотра скринкастов может быть интересно порой читать статьи в моём блоге @elisdnru. Сегодня там вышла вторая часть мегацикла про практики внедрения зависимостей.
С целями по HTTP-фреймворку мы в прошлый раз определились. Пора приступать к написанию.
Сегодня подготовим всю необходимую инфраструктуру, как мы с вами уже умеем делать с помощью Docker по опыту проекта аукциона.
Мы также установим и настроим локальный HTTP-сервер с PHP. А потом определим структуру проекта для написания наших классов. Потом для тестирования установим PHPUnit и напишем свой первый тест. И заодно настроим интерпретатор и запуск тестов в PHPUnit.
Сегодня подготовим всю необходимую инфраструктуру, как мы с вами уже умеем делать с помощью Docker по опыту проекта аукциона.
Мы также установим и настроим локальный HTTP-сервер с PHP. А потом определим структуру проекта для написания наших классов. Потом для тестирования установим PHPUnit и напишем свой первый тест. И заодно настроим интерпретатор и запуск тестов в PHPUnit.
deworker.pro
Сервер и структура проекта
Установка сервера Nginx c PHP-FPM в Docker. Подготовка структуры файлов и директорий проекта. Автозагрузка классов с Composer. Установка и настройка PHPUnit.
Мы разобрали внешний дизайн аукциона и его функциональность. Пришло время продумать внутренний вид личных кабинетов покупателя и продавца.
deworker.pro
Кабинет покупателя и продавца
Устройство личного кабинета покупателя и продавца. Просмотр своих лотов, ставок и сделок. Движения на балансе и избранные лоты.
Forwarded from ElisDN.ru
Выступил с докладом на третьем митапе BeerPHP SPb.
Рассказал про вертикальную группировку кода проекта по фичам на модули и компоненты вместо горизонтального разделения исходников по типам классов. Рассмотрел, что делать с контроллерами, и как удобнее раскладывать тесты и конфигурацию в такой структуре:
https://elisdn.ru/blog/149/code-structure
Рассказал про вертикальную группировку кода проекта по фичам на модули и компоненты вместо горизонтального разделения исходников по типам классов. Рассмотрел, что делать с контроллерами, и как удобнее раскладывать тесты и конфигурацию в такой структуре:
https://elisdn.ru/blog/149/code-structure
elisdn.ru
Вертикальное разделение кода, тестов и конфигов
Доклад про вертикальное разделение кода проекта по фичам на отдельные модули и компоненты вместо использования горизонтального разделения по типам классов. Размещение контроллеров, тестов и конфигурации приложения.
Вот мы с вами и составили примерное задание для разработки нашего демонстрационного аукциона. На этих требованиях мы с вами остановимся и начнём всё это программировать.
Но с ростом реального проекта после запуска будут приходить новые идеи. Сейчас мы можем только предположить, как всё это будет происходить и какие из идей можно будет реализовать позже.
Поэтому сегодня обсудим, как функциональность проекта может развиваться со временем вширь и вглубь. И по итогам эпизода будет конкурс, где вы можете выиграть бесплатное продление подписки.
Но с ростом реального проекта после запуска будут приходить новые идеи. Сейчас мы можем только предположить, как всё это будет происходить и какие из идей можно будет реализовать позже.
Поэтому сегодня обсудим, как функциональность проекта может развиваться со временем вширь и вглубь. И по итогам эпизода будет конкурс, где вы можете выиграть бесплатное продление подписки.
Месяц назад вышел PHP 8.1 с новыми возможностями. Атрибуты теперь поддерживают вложенность, которой раньше не было. Это нам мешало перейти на них в 8.0. Теперь нас ничто не останавливает.
Пришла пора завершить переход на PHP 8.0 и перевести наш проект с классических аннотаций на новые нативные атрибуты для валидатора и Doctrine ORM. Поговорить, что делать с ними в legacy-проектах.
И заодно пощупать новые компоненты из версии Symfony 6 для бэкенда и новый React Router 6 для фронтенда.
Пришла пора завершить переход на PHP 8.0 и перевести наш проект с классических аннотаций на новые нативные атрибуты для валидатора и Doctrine ORM. Поговорить, что делать с ними в legacy-проектах.
И заодно пощупать новые компоненты из версии Symfony 6 для бэкенда и новый React Router 6 для фронтенда.
Мы с вами завершили написание техзадания аукциона. Теперь пора поговорить о том, в какой последовательности и с помощью каких инструментов мы будем всё это реализовывать.
Поэтому 3 января в понедельник в 16:00 по московскому времени мы в прямом эфире разберём все требования с точки зрения программиста и обсудим, как мы всё это будем разрабатывать.
Поэтому 3 января в понедельник в 16:00 по московскому времени мы в прямом эфире разберём все требования с точки зрения программиста и обсудим, как мы всё это будем разрабатывать.
deworker.pro
Рецензирование требований
Оценка составленного задания со стороны программиста. Обсуждение требований. Предложение идей по технической реализации проекта.
В разделе скринкастов появилась вкладка истории просмотренных вами эпизодов. Достаточно залогиниться, и ваша страница истории начнёт работать. Так вам будет сразу видно, какие эпизоды вы посмотрели, а какие нет.
И для каждого видео теперь работает запоминание текущей позиции. Если вы зайдёте в недосмотренный вами ранее скринкаст и нажмёте Play, то воспроизведение продолжится с прошлого сохранённого момента.
Приятного просмотра!
И для каждого видео теперь работает запоминание текущей позиции. Если вы зайдёте в недосмотренный вами ранее скринкаст и нажмёте Play, то воспроизведение продолжится с прошлого сохранённого момента.
Приятного просмотра!
Напоминаем, что через полчаса в 16:00 по московскому времени мы разберём все требования с точки зрения программиста и обсудим, как мы всё это будем разрабатывать. Приходите к нам на эфир https://youtu.be/8YFD5lTHyXk
YouTube
Рецензирование требований ТЗ
Оценка составленного задания со стороны программиста.
Обсуждение требований https://deworker.pro/edu/series/auction-model/review
Предложение идей по технической реализации проекта.
00:00:00 - Приветствие
00:05:16 - Этапы аукциона
00:20:50 - Ответы на вопросы…
Обсуждение требований https://deworker.pro/edu/series/auction-model/review
Предложение идей по технической реализации проекта.
00:00:00 - Приветствие
00:05:16 - Этапы аукциона
00:20:50 - Ответы на вопросы…
По мотивам прошлых стримов и дайджестов делимся текущим прогрессом. У нас накопилось несколько новостей о том, сколько всего мы прошли, что делаем сейчас и что уже сделали:
Что там есть
Что там есть
Помимо переобработки старых видео записываем обещанный мегаэпизод про работу HTTP-сервера с синхронным и асинхронным запуском PHP. За эту неделю записали пока восемь часов материала и осталось записать ещё два-три, чтобы в итоге смонтировать концентрированный двухчасовой шедевр. Задача оказалось сложнее и интереснее, чем мы задумывали, но мы справимся.
А пока работа кипит, можем завтра отдохнуть и подвести с вами итоги года в мире PHP в утреннем стриме. Там как раз обсудим, чем полезно и чем вредно задавать технические вопросы в чатах. И заодно расскажем, что собрались с этим делать на deworker.pro.
А пока работа кипит, можем завтра отдохнуть и подвести с вами итоги года в мире PHP в утреннем стриме. Там как раз обсудим, чем полезно и чем вредно задавать технические вопросы в чатах. И заодно расскажем, что собрались с этим делать на deworker.pro.
elisdn.ru
Герои меча и PHP
Стрим PHP-сообщества по подведению итогов 2021 года. Результаты большого опроса. Нововведения языка с экосистемой и рекомендуемые вами ресурсы.
Самое грандиозное событие этого года завершено. Записан мегаскринкаст про работу HTTP-сервера с нашим программным кодом. И про недопонимания и заблуждения, которые порой бывают у PHP-программистов.
deworker.pro
Работа сервера и заблуждения в PHP
Работа HTTP-сервера вроде Apache и Nginx с PHP по протоколам CGI и FastCGI. Переменные окружения и потоки ввода и вывода. Асинхронные PHP-серверы.
В комментариях под скринкастами вы часто задаёте интересные вопросы, на которые я стараюсь дать подробный ответ. Но новые комментарии под сотней просмотренных ранее видеороликов никто не ищет. Большой пласт информации проходит мимо зрителей и теряется в тысячах других комментариев.
Чтобы это исправить, добавлен новый раздел Q&A, куда вручную отбираются комментарии с интересными вопросами и ответами. И теперь можно интересные скринкасты и комментарии добавлять в избранное.
Об этом и другом рассказываем в свежем дайджесте.
Чтобы это исправить, добавлен новый раздел Q&A, куда вручную отбираются комментарии с интересными вопросами и ответами. И теперь можно интересные скринкасты и комментарии добавлять в избранное.
Об этом и другом рассказываем в свежем дайджесте.
deworker.pro
Дайджест новостей на март
Нововведения на сайте. Избранное и раздел с вопросами и ответами. Информация по приёму платежей иностранными картами не из РФ.
Продолжаем разработку проекта на Slim & React. Сегодня соберём накопившиеся за всё это время обновления и переведём проект на PHP 8.1 и новый React 18.
deworker.pro
Переход на PHP 8.1 и React 18
Перевод бэкенда на PHP 8.1 и мини-обзор новых возможностей. Переход фронтенда на React 18.
Пора для аукциона сделать аутентификацию на React. Этим теперь и займёмся.
Сегодня добавим кнопку входа под фича-флагом аутентификации и займёмся поиском подходящего компонента для работы с OAuth2 в React. Обсудим, какие могут быть трудности при подключении сторонних библиотек и какие есть способы это решить.
Сегодня добавим кнопку входа под фича-флагом аутентификации и займёмся поиском подходящего компонента для работы с OAuth2 в React. Обсудим, какие могут быть трудности при подключении сторонних библиотек и какие есть способы это решить.
deworker.pro
Поиск Oauth2 клиента
Добавление кнопки входа под фича-флагом аутентификации. Поиск компонентов для работы с OAuth2 в React. Возможные трудности при подключении сторонних библиотек.
Фича-флаг добавили и готовые компоненты рассмотрели. Пора реализовать всё в проекте.
Сегодня сделаем полноценный клиент аутентификации в React для получения токенов JWT с бэкенда по протоколу OAuth2 с PKCE.
Рассмотрим подходы к автообновлению токенов и нюансы безопасности. Заодно добавим возможность действия от имени пользователя в E2E-тестах.
Сегодня сделаем полноценный клиент аутентификации в React для получения токенов JWT с бэкенда по протоколу OAuth2 с PKCE.
Рассмотрим подходы к автообновлению токенов и нюансы безопасности. Заодно добавим возможность действия от имени пользователя в E2E-тестах.
deworker.pro
Аутентификация OAuth2 в React
Реализация клиента аутентификации в React для получения токенов JWT с бэкенда по протоколу OAuth2 с PKCE. Подходы к автообновлению токенов и нюансы безопасности.
Для компонента аутентификации нам осталось доделать возможность входа через OAuth-провайдер на другом домене или поддомене. Для указания хоста мы можем использовать переменные окружения как мы делаем в бэкенде.
Но работа с окружением во фронтенде сильно отличается тем, что JavaScript код выполняется не на севрере, а в браузере, где никаких переменных нет. И для динамической подстановки значений в момент запуска сервера нам придётся использовать особые подходы.
Поэтому сегодня разберём внутреннюю работу и использование переменных окружения в React при разработке и при деплое с Docker. Заодно познакомимся с аргументами для пробрасывания ключей доступа к приватным репозиториям в процессе сборки контейнеров.
Но работа с окружением во фронтенде сильно отличается тем, что JavaScript код выполняется не на севрере, а в браузере, где никаких переменных нет. И для динамической подстановки значений в момент запуска сервера нам придётся использовать особые подходы.
Поэтому сегодня разберём внутреннюю работу и использование переменных окружения в React при разработке и при деплое с Docker. Заодно познакомимся с аргументами для пробрасывания ключей доступа к приватным репозиториям в процессе сборки контейнеров.
deworker.pro
Переменные окружения в React
Использование переменных окружения для фронтенда на React при разработке и при деплое с Docker. Отличие работы переменных фронтенда от бэкенда. Пробрасывание аргументов и динамическая замена.
Раньше мы рассматривали написание пайплайна тестирования и деплоя в GitHub Actions. Но мы это делали до того, как перешли на использование secrets для паролей. И в последнее время переименовался реестр в GitHub Packages.
Актуальный рабочий вариант пайплайна сейчас можно посмотреть в свежих исходниках блога:
https://t.me/elisdnru/31
Актуальный рабочий вариант пайплайна сейчас можно посмотреть в свежих исходниках блога:
https://t.me/elisdnru/31
Telegram
ElisDN.ru
Когда-то в докладе о переписывании легаси рассказывал о постепенном обновлении и рефакторинге своего сайта. Многое уже сделано. Выкладываю доработанный исходный код с полной автоматизацией разработки и деплоя и активным использованием Docker:
https://el…
https://el…
Спешим сообщить, что нам удалось восстановить приём иностранных платежей.
Если у вас не было возможности оплачивать ранее, то теперь можете ни в чём себе не отказывать. Можете посмотреть крайне полезный мегаскринкаст о работе HTTP-серверов и о связанных с этим часто возникающих заблуждениях у PHP-программистов. И потом досмотреть свежие эпизоды по Slim и React.
Кнопка оплаты и инструкция теперь доступны в кабинете.
Если у вас не было возможности оплачивать ранее, то теперь можете ни в чём себе не отказывать. Можете посмотреть крайне полезный мегаскринкаст о работе HTTP-серверов и о связанных с этим часто возникающих заблуждениях у PHP-программистов. И потом досмотреть свежие эпизоды по Slim и React.
Кнопка оплаты и инструкция теперь доступны в кабинете.