TGViewer
Channel Public Channel
Deworker Pro

Deworker Pro

@deworkerpro

Subscribers
1.39K
Photos
5
Videos
0
Links
187

Showing posts older than #156 · Back to latest

Older Posts 20 shown
Post #155 3.61K
Мы редко пишем весь проект полностью с нуля. Вместо этого мы активно используем готовые компоненты от других программистов, подключая через Composer.

И если у нас несколько проектов, то может возникнуть желание вынести свой код в отдельную библиотеку, чтобы использовать её у себя или даже поделиться публично.

Но если код сильно связан с остальным кодом проекта или фреймворка, то вынести его в отдельную библиотеку весьма сложно.

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

И в итоге для написания переносимого кода перейдём на PSR-7 и совместимые с ним готовые компоненты.
deworker.pro Повторное использование кода и PSR-7 Повторное использование кода в разных проектах. Инверсия зависимостей для выноса кода в компонент. Выделение общих интерфейсов и переход на PSR-7.
Post #154 3.32K
Спасибо участникам за отличную компанию! Вначале по традиции поборолись с техникой, но в итоге стрим удался.

В карточке сейчас вывели ссылку на оригинальную запись. В будущем постараемся немного смонтировать видео и убрать различные заминки, чтобы всё смотрелось более интересно. Ещё в посте выложили изображения, нарисованные нами на стриме. Может кому-то пригодятся.
deworker.pro Идеи разделения на модули и микросервисы Большой стрим про декомпозицию предметной области и идеи разделения кода на модули и микросервисы
Post #152 5.9K
Напоминаем участникам, что сегодня в 18:00 по московскому времени проведём наш стрим про разделение кода на модули и микросервисы. Рассмотрим идеи и принципы и закрепим их живым разбором подходящих примеров. Поотвечаем на ваши вопросы по этой теме и частично разберём ваши предметные области.

А у остальных зрителей ещё есть возможность приобрести участие и запись до финального повышения цены.
deworker.pro Идеи разделения на модули и микросервисы Большой стрим про декомпозицию предметной области и идеи разделения кода на модули и микросервисы
Post #150 3.17K
Deworker Pro Исследование доменной модели у нас уже скоро. Это будет в новых скринкастах. Но помимо аукциона нам будет крайне полезно рассмотреть примеры и из других предметных областей. Для этого помимо скринкастов по аукциону мы проведём отдельный большой обобщающий…
До повышения цены на наш стрим осталось всего 2 часа 24 минуты. А пока участникам и зрителям будет полезен мой прошлый доклад на смежную тему про вертикальное разделение кода, тестов и конфигурации приложения. Добавил доклад в список полезного в наш пост.
deworker.pro Идеи разделения на модули и микросервисы Большой стрим про декомпозицию предметной области и идеи разделения кода на модули и микросервисы
Post #148 3.05K
Исследование доменной модели у нас уже скоро. Это будет в новых скринкастах.

Но помимо аукциона нам будет крайне полезно рассмотреть примеры и из других предметных областей.

Для этого помимо скринкастов по аукциону мы проведём отдельный большой обобщающий практический стрим.

Успейте записаться к нам и до встречи в эфире!
deworker.pro Идеи разделения на модули и микросервисы Большой стрим про декомпозицию предметной области и идеи разделения кода на модули и микросервисы
Post #147 3.09K
Мы дошли до программирования доменной модели аукциона. У нас уже есть подробное задание, которое теперь нужно реализовать в коде.

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

Для этого мы вскоре рассмотрим Event Driven архитектуру и воспользуемся мощной практикой моделирования Event Storming.

Дабы не загромождать основную серию скринкастов мы вынесем это всё в отдельный плейлист по доменной модели.

Так что пока вы можете нас догнать, если ещё не досмотрели предыдущие эпизоды. И до встречи в новых скринкастах!
Post #146 3.04K
После написания ServerRequest и Response пора рассмотреть случаи, когда нам понадобится модификация запросов и ответов для служебных целей.

Сегодня этим и займёмся.

Поговорим про работу PHP с примитивами и объектами. Рассмотрим возможные проблемы и риски использования изменяемых объектов с сеттерами для запроса и ответа. Расскажем про иммутабельность и напишем надёжный код, избавленный от этих рисков.

Заодно упростим код формирования ответа и добавим поддержку множественных HTTP-заголовков.
deworker.pro Постпроцессинг и иммутабельность Препроцессинг HTTP-запроса перед и постпроцессинг ответа после формирования страницы. Потенциальные проблемы изменяемых объектов и их решение через иммутабельность.
Post #145 3.18K
По вашим просьбам на сайте появилась возможность оплачивать подписку от имени организации или предпринимателя за своих сотрудников.

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

Если вы сотрудник, то можете обратиться к своему работодателю, чтобы он подключил вас.
deworker.pro Оплата для юридических лиц и ИП Появилась возможность оплачивать подписку на скринкасты от имени организаций и индивидуальных предпринимателей за своих сотрудников.
Post #144 2.73K
Наш код формирования страницы не обращается к массивам PHP-FPM для получения запроса, но до сих пор вызывает SAPI для отправки ответа.

Сегодня избавимся от этой привязки и сделаем код страницы полностью независимым от используемого сервера структурой HTTP Response.

Заодно реализуем экономную отдачу больших файлов средствами PHP через Stream.
deworker.pro Ответ Response и SAPI Emitter Избавление от зависимости от сервера PHP-FPM при отправке HTTP-ответа. Экономная отдача больших файлов средствами PHP через Stream.
Post #143 3K
В прошлом эпизоде мы поняли, что прямая работа с суперглобальными массивами привязывает нас к конкретному серверу и неудобна при тестировании.

Сегодня от этого перейдём к внедрению серверонезависимой структуры ServerRequest. Напишем для неё фабрику и для удобства перейдём на объекты-значения вместо скалярных полей.
deworker.pro Данные запроса и ServerRequest Абстракция для серверного запроса для отхода от привязки к PHP-FPM. Переход от суперглобальных массивов к серверонезависимой структуре ServerRequest.
Post #142 3.15K
У нас есть функция определения языка с прямым обращением к суперглобальным массивам PHP-FPM. Но такой подход неуниверсален и неудобен при тестировании.

Сегодня попробуем к этой функции написать unit-тесты и найти проблемы использования глобальных переменных и синглтонов. Познакомимся с неудобством побочных эффектов и с тестированием чистых функций.
deworker.pro Побочные эффекты и Unit-тесты Проблемы кода с прямым обращением к суперглобальным массивам и глобальным переменным. Неуниверсальность и неудобство тестирования. Побочные эффекты и чистые функции.
Post #141 2.89K
Мы подготовили структуру проекта HTTP-фреймворка и разобрались с работой сервера. Теперь применим это на практике.

Сегодня создадим более сложную главную страницу с получением параметров HTTP-запроса и отправкой дополнительных заголовков ответа через SAPI при работе через PHP-FPM.

Заодно напишем первый вариант функции определения текущего языка и подумаем, что с ней не так.
deworker.pro SAPI и параметры запроса Получение параметров HTTP-запроса и отправка ответа через SAPI при работе через PHP-FPM. Написание функции определения текущего языка.
Post #140 3.2K
Post #139 3.49K
Взгляд изнутри

Подготовка материала – это хорошо, но ведение проекта этим не ограничивается. Есть ещё много задач, размышлений и рутинных дел.

О внутренней работе и своих впечатлениях нам обычно рассказывает Юлия у себя в @elisjuli_live. На этот раз она делится результатами после жаркого лета.
deworker.pro Взгляд изнутри Подготовка материала – это хорошо, но ведение проекта этим не ограничивается. Есть ещё много задач, размышлений и рутинных дел.
Post #138 3.63K
Команды в контроллерах мы до сих пор заполняли данными из JSON-запросов вручную. Это неудобно. И любое несоответствие типов приведёт к ошибке 500 Server Error.

Вместо этого упростим себе работу и автоматизируем ввод и вывод JSON для наших запросов и команд с помощью компонента Serializer. И сделаем красивый вывод списка ошибок типов при неверных запросах.
deworker.pro Сериализация с Serializer Подключение компонента Serializer для сериализации и десериализации выборок и команд в формат JSON. Использование нормализатора для работы с массивами.
Post #137 3.44K
Впереди у нас подключение Serializer и проектирование доменной модели аукциона.

А пока перед этими темами завершим начатое ранее обновление конфигурации Doctrine ORM и переведём её консольные команды на инъекцию зависимостей в конструктор. Заодно перепишем структуры на использование модификатора readonly и переведём сервисы на синтаксис с constructor property promotion. Поворим, где это уместно, а где не очень.
Post #136 3.84K
Для FREE-доступа открыт мегаскринкаст про работу HTTP-сервера с PHP и про частые заблуждения, с этим связанные.

Если у вас скоро собеседование, то будет особенно полезно.
Post #135 3.54K
После типизации наших E2E-тестов пора перейти к пошаговому добавлению типизации фронтенда, учитывая разные нюансы. Как раз этим займёмся в сегодняшнем мегаскринкасте про внедрение TypeScript в проект на ReactJS.

Помимо всех страниц проставим типы компоненту FeatureToggle и полностью типизируем AuthProvider. Проверим, сколько недочётов было в нашем коде.

Заодно напишем фейковый провайдер аутентификации для оборачивания им других компонентах в юнит-тестах.
deworker.pro Типизация с TypeScript в React Использование TypeScript в ReactJS. Установка транспилятора и настройка ESLint. Добавление типизации к новому и существующему проекту.
Post #134 3.43K
Когда разобрались с видами типизации и с TypeScript пришла пора внедрить всё это в наш проект. Сегодня проведём полную интеграцию с CucumberJS для наших E2E-тестов и исправим все недочёты, которые при этом найдём.
Post #133 3.72K
Пока в Вилларибо празднуют, успешно используя в PHP явную типизацию и Psalm, в Виллабаджио на JavaScript всё ещё программируют наугад без типов и боятся обновлять пакеты.

Пришло время это исправить. Сравнить виды типизации в разных языках программирования и посмотреть, чем в этом плане JavaScript отличается от PHP и что там можно сделать. Этим мы и займёмся.
deworker.pro Типизация в JavaScript Различие видов типизации в разных языках программирования. Сравнение типизации в PHP и в JavaScript.
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →