Раньше мы рассматривали написание пайплайна тестирования и деплоя в 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.
Кнопка оплаты и инструкция теперь доступны в кабинете.
Пока в Вилларибо празднуют, успешно используя в PHP явную типизацию и Psalm, в Виллабаджио на JavaScript всё ещё программируют наугад без типов и боятся обновлять пакеты.
Пришло время это исправить. Сравнить виды типизации в разных языках программирования и посмотреть, чем в этом плане JavaScript отличается от PHP и что там можно сделать. Этим мы и займёмся.
Пришло время это исправить. Сравнить виды типизации в разных языках программирования и посмотреть, чем в этом плане JavaScript отличается от PHP и что там можно сделать. Этим мы и займёмся.
deworker.pro
Типизация в JavaScript
Различие видов типизации в разных языках программирования. Сравнение типизации в PHP и в JavaScript.
Когда разобрались с видами типизации и с TypeScript пришла пора внедрить всё это в наш проект. Сегодня проведём полную интеграцию с CucumberJS для наших E2E-тестов и исправим все недочёты, которые при этом найдём.
После типизации наших E2E-тестов пора перейти к пошаговому добавлению типизации фронтенда, учитывая разные нюансы. Как раз этим займёмся в сегодняшнем мегаскринкасте про внедрение TypeScript в проект на ReactJS.
Помимо всех страниц проставим типы компоненту FeatureToggle и полностью типизируем AuthProvider. Проверим, сколько недочётов было в нашем коде.
Заодно напишем фейковый провайдер аутентификации для оборачивания им других компонентах в юнит-тестах.
Помимо всех страниц проставим типы компоненту FeatureToggle и полностью типизируем AuthProvider. Проверим, сколько недочётов было в нашем коде.
Заодно напишем фейковый провайдер аутентификации для оборачивания им других компонентах в юнит-тестах.
deworker.pro
Типизация с TypeScript в React
Использование TypeScript в ReactJS. Установка транспилятора и настройка ESLint. Добавление типизации к новому и существующему проекту.
Для FREE-доступа открыт мегаскринкаст про работу HTTP-сервера с PHP и про частые заблуждения, с этим связанные.
Если у вас скоро собеседование, то будет особенно полезно.
Если у вас скоро собеседование, то будет особенно полезно.
deworker.pro
Работа сервера и заблуждения в PHP
Работа HTTP-сервера вроде Apache и Nginx с PHP по протоколам CGI и FastCGI. Переменные окружения и потоки ввода и вывода. Асинхронные PHP-серверы.
Впереди у нас подключение Serializer и проектирование доменной модели аукциона.
А пока перед этими темами завершим начатое ранее обновление конфигурации Doctrine ORM и переведём её консольные команды на инъекцию зависимостей в конструктор. Заодно перепишем структуры на использование модификатора readonly и переведём сервисы на синтаксис с constructor property promotion. Поворим, где это уместно, а где не очень.
А пока перед этими темами завершим начатое ранее обновление конфигурации Doctrine ORM и переведём её консольные команды на инъекцию зависимостей в конструктор. Заодно перепишем структуры на использование модификатора readonly и переведём сервисы на синтаксис с constructor property promotion. Поворим, где это уместно, а где не очень.
Команды в контроллерах мы до сих пор заполняли данными из JSON-запросов вручную. Это неудобно. И любое несоответствие типов приведёт к ошибке 500 Server Error.
Вместо этого упростим себе работу и автоматизируем ввод и вывод JSON для наших запросов и команд с помощью компонента Serializer. И сделаем красивый вывод списка ошибок типов при неверных запросах.
Вместо этого упростим себе работу и автоматизируем ввод и вывод JSON для наших запросов и команд с помощью компонента Serializer. И сделаем красивый вывод списка ошибок типов при неверных запросах.
deworker.pro
Сериализация с Serializer
Подключение компонента Serializer для сериализации и десериализации выборок и команд в формат JSON. Использование нормализатора для работы с массивами.
Взгляд изнутри
Подготовка материала – это хорошо, но ведение проекта этим не ограничивается. Есть ещё много задач, размышлений и рутинных дел.
О внутренней работе и своих впечатлениях нам обычно рассказывает Юлия у себя в @elisjuli_live. На этот раз она делится результатами после жаркого лета.
Подготовка материала – это хорошо, но ведение проекта этим не ограничивается. Есть ещё много задач, размышлений и рутинных дел.
О внутренней работе и своих впечатлениях нам обычно рассказывает Юлия у себя в @elisjuli_live. На этот раз она делится результатами после жаркого лета.
deworker.pro
Взгляд изнутри
Подготовка материала – это хорошо, но ведение проекта этим не ограничивается. Есть ещё много задач, размышлений и рутинных дел.
Пока записывается следующий мегаскринкаст про запрос и ответ мы переобработали и дополнили эпизод про каркас проекта. Помимо PHPUnit добавлена установка и интеграция CS Fixer и Psalm:
https://t.me/deworkerpro/114
https://t.me/deworkerpro/114
Telegram
Deworker Pro
С целями по HTTP-фреймворку мы в прошлый раз определились. Пора приступать к написанию.
Сегодня подготовим всю необходимую инфраструктуру, как мы с вами уже умеем делать с помощью Docker по опыту проекта аукциона.
Мы также установим и настроим локальный…
Сегодня подготовим всю необходимую инфраструктуру, как мы с вами уже умеем делать с помощью Docker по опыту проекта аукциона.
Мы также установим и настроим локальный…
Мы подготовили структуру проекта HTTP-фреймворка и разобрались с работой сервера. Теперь применим это на практике.
Сегодня создадим более сложную главную страницу с получением параметров HTTP-запроса и отправкой дополнительных заголовков ответа через SAPI при работе через PHP-FPM.
Заодно напишем первый вариант функции определения текущего языка и подумаем, что с ней не так.
Сегодня создадим более сложную главную страницу с получением параметров HTTP-запроса и отправкой дополнительных заголовков ответа через SAPI при работе через PHP-FPM.
Заодно напишем первый вариант функции определения текущего языка и подумаем, что с ней не так.
deworker.pro
SAPI и параметры запроса
Получение параметров HTTP-запроса и отправка ответа через SAPI при работе через PHP-FPM. Написание функции определения текущего языка.
У нас есть функция определения языка с прямым обращением к суперглобальным массивам PHP-FPM. Но такой подход неуниверсален и неудобен при тестировании.
Сегодня попробуем к этой функции написать unit-тесты и найти проблемы использования глобальных переменных и синглтонов. Познакомимся с неудобством побочных эффектов и с тестированием чистых функций.
Сегодня попробуем к этой функции написать unit-тесты и найти проблемы использования глобальных переменных и синглтонов. Познакомимся с неудобством побочных эффектов и с тестированием чистых функций.
deworker.pro
Побочные эффекты и Unit-тесты
Проблемы кода с прямым обращением к суперглобальным массивам и глобальным переменным. Неуниверсальность и неудобство тестирования. Побочные эффекты и чистые функции.
В прошлом эпизоде мы поняли, что прямая работа с суперглобальными массивами привязывает нас к конкретному серверу и неудобна при тестировании.
Сегодня от этого перейдём к внедрению серверонезависимой структуры ServerRequest. Напишем для неё фабрику и для удобства перейдём на объекты-значения вместо скалярных полей.
Сегодня от этого перейдём к внедрению серверонезависимой структуры ServerRequest. Напишем для неё фабрику и для удобства перейдём на объекты-значения вместо скалярных полей.
deworker.pro
Данные запроса и ServerRequest
Абстракция для серверного запроса для отхода от привязки к PHP-FPM. Переход от суперглобальных массивов к серверонезависимой структуре ServerRequest.
Наш код формирования страницы не обращается к массивам PHP-FPM для получения запроса, но до сих пор вызывает SAPI для отправки ответа.
Сегодня избавимся от этой привязки и сделаем код страницы полностью независимым от используемого сервера структурой HTTP Response.
Заодно реализуем экономную отдачу больших файлов средствами PHP через Stream.
Сегодня избавимся от этой привязки и сделаем код страницы полностью независимым от используемого сервера структурой HTTP Response.
Заодно реализуем экономную отдачу больших файлов средствами PHP через Stream.
deworker.pro
Ответ Response и SAPI Emitter
Избавление от зависимости от сервера PHP-FPM при отправке HTTP-ответа. Экономная отдача больших файлов средствами PHP через Stream.
По вашим просьбам на сайте появилась возможность оплачивать подписку от имени организации или предпринимателя за своих сотрудников.
Если вы работодатель, то теперь можете зайти в кабинете в корпоративный раздел и подключить своих сотрудников.
Если вы сотрудник, то можете обратиться к своему работодателю, чтобы он подключил вас.
Если вы работодатель, то теперь можете зайти в кабинете в корпоративный раздел и подключить своих сотрудников.
Если вы сотрудник, то можете обратиться к своему работодателю, чтобы он подключил вас.
deworker.pro
Оплата для юридических лиц и ИП
Появилась возможность оплачивать подписку на скринкасты от имени организаций и индивидуальных предпринимателей за своих сотрудников.
После написания ServerRequest и Response пора рассмотреть случаи, когда нам понадобится модификация запросов и ответов для служебных целей.
Сегодня этим и займёмся.
Поговорим про работу PHP с примитивами и объектами. Рассмотрим возможные проблемы и риски использования изменяемых объектов с сеттерами для запроса и ответа. Расскажем про иммутабельность и напишем надёжный код, избавленный от этих рисков.
Заодно упростим код формирования ответа и добавим поддержку множественных HTTP-заголовков.
Сегодня этим и займёмся.
Поговорим про работу PHP с примитивами и объектами. Рассмотрим возможные проблемы и риски использования изменяемых объектов с сеттерами для запроса и ответа. Расскажем про иммутабельность и напишем надёжный код, избавленный от этих рисков.
Заодно упростим код формирования ответа и добавим поддержку множественных HTTP-заголовков.
deworker.pro
Постпроцессинг и иммутабельность
Препроцессинг HTTP-запроса перед и постпроцессинг ответа после формирования страницы. Потенциальные проблемы изменяемых объектов и их решение через иммутабельность.
Мы дошли до программирования доменной модели аукциона. У нас уже есть подробное задание, которое теперь нужно реализовать в коде.
Нужно будет разобраться с доменными контекстами, пройтись по пользовательским сценариям и продумать, какие у нас будут команды, агрегаты и события.
Для этого мы вскоре рассмотрим Event Driven архитектуру и воспользуемся мощной практикой моделирования Event Storming.
Дабы не загромождать основную серию скринкастов мы вынесем это всё в отдельный плейлист по доменной модели.
Так что пока вы можете нас догнать, если ещё не досмотрели предыдущие эпизоды. И до встречи в новых скринкастах!
Нужно будет разобраться с доменными контекстами, пройтись по пользовательским сценариям и продумать, какие у нас будут команды, агрегаты и события.
Для этого мы вскоре рассмотрим Event Driven архитектуру и воспользуемся мощной практикой моделирования Event Storming.
Дабы не загромождать основную серию скринкастов мы вынесем это всё в отдельный плейлист по доменной модели.
Так что пока вы можете нас догнать, если ещё не досмотрели предыдущие эпизоды. И до встречи в новых скринкастах!
Исследование доменной модели у нас уже скоро. Это будет в новых скринкастах.
Но помимо аукциона нам будет крайне полезно рассмотреть примеры и из других предметных областей.
Для этого помимо скринкастов по аукциону мы проведём отдельный большой обобщающий практический стрим.
Успейте записаться к нам и до встречи в эфире!
Но помимо аукциона нам будет крайне полезно рассмотреть примеры и из других предметных областей.
Для этого помимо скринкастов по аукциону мы проведём отдельный большой обобщающий практический стрим.
Успейте записаться к нам и до встречи в эфире!
deworker.pro
Идеи разделения на модули и микросервисы
Большой стрим про декомпозицию предметной области и идеи разделения кода на модули и микросервисы
Deworker Pro
Исследование доменной модели у нас уже скоро. Это будет в новых скринкастах. Но помимо аукциона нам будет крайне полезно рассмотреть примеры и из других предметных областей. Для этого помимо скринкастов по аукциону мы проведём отдельный большой обобщающий…
До повышения цены на наш стрим осталось всего 2 часа 24 минуты. А пока участникам и зрителям будет полезен мой прошлый доклад на смежную тему про вертикальное разделение кода, тестов и конфигурации приложения. Добавил доклад в список полезного в наш пост.
deworker.pro
Идеи разделения на модули и микросервисы
Большой стрим про декомпозицию предметной области и идеи разделения кода на модули и микросервисы
Напоминаем участникам, что сегодня в 18:00 по московскому времени проведём наш стрим про разделение кода на модули и микросервисы. Рассмотрим идеи и принципы и закрепим их живым разбором подходящих примеров. Поотвечаем на ваши вопросы по этой теме и частично разберём ваши предметные области.
А у остальных зрителей ещё есть возможность приобрести участие и запись до финального повышения цены.
А у остальных зрителей ещё есть возможность приобрести участие и запись до финального повышения цены.
deworker.pro
Идеи разделения на модули и микросервисы
Большой стрим про декомпозицию предметной области и идеи разделения кода на модули и микросервисы