1 411
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-37 روز
-130 روز
آرشیو پست ها
1 411
Напоминаем участникам, что сегодня в 18:00 по московскому времени проведём наш стрим про разделение кода на модули и микросервисы. Рассмотрим идеи и принципы и закрепим их живым разбором подходящих примеров. Поотвечаем на ваши вопросы по этой теме и частично разберём ваши предметные области.
А у остальных зрителей ещё есть возможность приобрести участие и запись до финального повышения цены.
1 411
До повышения цены на наш стрим осталось всего 2 часа 27 минут. А пока участникам и зрителям будет полезен мой прошлый доклад на смежную тему про вертикальное разделение кода, тестов и конфигурации приложения. Добавил доклад в список полезного в наш пост.
1 411
Исследование доменной модели у нас уже скоро.
Но помимо аукциона нам будет крайне полезно рассмотреть примеры и из других предметных областей.
Для этого помимо скринкастов по аукциону мы проведём отдельный большой обобщающий практический стрим.
1 411
Мы дошли до программирования доменной модели аукциона. У нас уже есть подробное задание, которое теперь нужно реализовать в коде.
Нужно будет разобраться с доменными контекстами, пройтись по пользовательским сценариям и продумать, какие у нас будут команды, агрегаты и события.
Для этого мы вскоре рассмотрим Event Driven архитектуру и воспользуемся мощной практикой моделирования Event Storming.
Дабы не загромождать основную серию скринкастов мы вынесем это всё в отдельный плейлист по доменной модели.
Так что пока вы можете нас догнать, если ещё не досмотрели предыдущие эпизоды. И до встречи в новых скринкастах!
1 411
После написания ServerRequest и Response пора рассмотреть случаи, когда нам понадобится модификация запросов и ответов для служебных целей.
Сегодня этим и займёмся.
Поговорим про работу PHP с примитивами и объектами. Рассмотрим возможные проблемы и риски использования изменяемых объектов с сеттерами для запроса и ответа. Расскажем про иммутабельность и напишем надёжный код, избавленный от этих рисков.
Заодно упростим код формирования ответа и добавим поддержку множественных HTTP-заголовков.
1 411
По вашим просьбам на сайте появилась возможность оплачивать подписку от имени организации или предпринимателя за своих сотрудников.
Если вы работодатель, то теперь можете зайти в кабинете в корпоративный раздел и подключить своих сотрудников.
Если вы сотрудник, то можете обратиться к своему работодателю, чтобы он подключил вас.
1 411
Наш код формирования страницы не обращается к массивам PHP-FPM для получения запроса, но до сих пор вызывает SAPI для отправки ответа.
Сегодня избавимся от этой привязки и сделаем код страницы полностью независимым от используемого сервера структурой HTTP Response.
Заодно реализуем экономную отдачу больших файлов средствами PHP через Stream.
1 411
В прошлом эпизоде мы поняли, что прямая работа с суперглобальными массивами привязывает нас к конкретному серверу и неудобна при тестировании.
Сегодня от этого перейдём к внедрению серверонезависимой структуры ServerRequest. Напишем для неё фабрику и для удобства перейдём на объекты-значения вместо скалярных полей.
1 411
У нас есть функция определения языка с прямым обращением к суперглобальным массивам PHP-FPM. Но такой подход неуниверсален и неудобен при тестировании.
Сегодня попробуем к этой функции написать unit-тесты и найти проблемы использования глобальных переменных и синглтонов. Познакомимся с неудобством побочных эффектов и с тестированием чистых функций.
1 411
Мы подготовили структуру проекта HTTP-фреймворка и разобрались с работой сервера. Теперь применим это на практике.
Сегодня создадим более сложную главную страницу с получением параметров HTTP-запроса и отправкой дополнительных заголовков ответа через SAPI при работе через PHP-FPM.
Заодно напишем первый вариант функции определения текущего языка и подумаем, что с ней не так.
1 411
Пока записывается следующий мегаскринкаст про запрос и ответ мы переобработали и дополнили эпизод про каркас проекта. Помимо PHPUnit добавлена установка и интеграция CS Fixer и Psalm:
https://t.me/deworkerpro/114
1 411
Взгляд изнутри
Подготовка материала – это хорошо, но ведение проекта этим не ограничивается. Есть ещё много задач, размышлений и рутинных дел.
О внутренней работе и своих впечатлениях нам обычно рассказывает Юлия у себя в @elisjuli_live. На этот раз она делится результатами после жаркого лета.
1 411
Команды в контроллерах мы до сих пор заполняли данными из JSON-запросов вручную. Это неудобно. И любое несоответствие типов приведёт к ошибке 500 Server Error.
Вместо этого упростим себе работу и автоматизируем ввод и вывод JSON для наших запросов и команд с помощью компонента Serializer. И сделаем красивый вывод списка ошибок типов при неверных запросах.
1 411
Впереди у нас подключение Serializer и проектирование доменной модели аукциона.
А пока перед этими темами завершим начатое ранее обновление конфигурации Doctrine ORM и переведём её консольные команды на инъекцию зависимостей в конструктор. Заодно перепишем структуры на использование модификатора readonly и переведём сервисы на синтаксис с constructor property promotion. Поворим, где это уместно, а где не очень.
1 411
Для FREE-доступа открыт мегаскринкаст про работу HTTP-сервера с PHP и про частые заблуждения, с этим связанные.
Если у вас скоро собеседование, то будет особенно полезно.
1 411
После типизации наших E2E-тестов пора перейти к пошаговому добавлению типизации фронтенда, учитывая разные нюансы. Как раз этим займёмся в сегодняшнем мегаскринкасте про внедрение TypeScript в проект на ReactJS.
Помимо всех страниц проставим типы компоненту FeatureToggle и полностью типизируем AuthProvider. Проверим, сколько недочётов было в нашем коде.
Заодно напишем фейковый провайдер аутентификации для оборачивания им других компонентах в юнит-тестах.
1 411
Когда разобрались с видами типизации и с TypeScript пришла пора внедрить всё это в наш проект. Сегодня проведём полную интеграцию с CucumberJS для наших E2E-тестов и исправим все недочёты, которые при этом найдём.
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
