Начинаем вести свой видеоканал. Сегодня у нас обещанные ранее ответы на вопросы:
YouTube
Ответы на вопросы о проекте Deworker
Как и обещали ранее, мы собрали самые популярные вопросы о проекте Deworker и записали на них ответы. Возможно, среди них вы найдете свой вопрос. А если не найдёте, то напишите его ниже в комментариях.
00:00:00 - Приветствие
00:00:22 - Причины создания отдельного…
00:00:00 - Приветствие
00:00:22 - Причины создания отдельного…
Продолжаем написание своего ReactJS. Сегодня мы переводим генерацию виртуального DOM-дерева со встроенных Node-элементов на облегчённый формат JSON:
deworker.pro
Виртуальный DOM в формате JSON
Отход от стандартных Node-элементов к структурам для построения виртуального DOM. Перевод на декларативный JSON-формат описания UI.
Страсти накалились и пора тушить :) Мы с вами уже разобрали работу виртуальных элементов и рендер представления. Сегодня займёмся упрощением кода компонентов и перейдём на настоящий React. И для красоты и удобства подключим Babel и внедрим синтаксис JSX:
deworker.pro
Компоненты React и синтаксис JSX
Добавление фабрики компонентов для упрощения разработки. Подключение Babel. Внедрение HTML-подобного синтаксиса JSX для написания компонентов.
Продолжаем исследование React. Сегодня займёмся усовершенствованием работы с состоянием. Вместо примитивной структуры мы сделаем полноценный объект-хранилище. После этого автоматизируем вызов перерендера страницы через подписку на события.
deworker.pro
Хранилище состояния и подписка
Инкапсуляция состояния в объект-хранилище. Реализация автоматического рендеринга через подписку на изменение состояния.
Продолжаем исследование React. В предыдущем эпизоде мы придумали удобное хранилище состояния. А в этом эпизоде сделаем работу с ним более удобнее, доработав экшены. Отделим декларацию действия от его реализации, сделав код компонентным и тестируемым. И после этого рассмотрим и подключим библиотеку Redux.
Когда мы разобрались с действиями пришло время добавить интерактивность. Сегодня сделаем кнопки добавления лотов в избранное. И на них построим архитектуру Flux. Разберёмся с классическим MVC для фронтенда и с упрощённым Web-MVC для бэкенда.
deworker.pro
Интерактив по Flux и MVC
Добавление интерактивных элементов. Организация однонаправленного потока управления Flux. Анализ паттерна Model-View-Controller.
Продолжаем путь к совершенству нашего приложения. Сегодня решим проблему каскадной передачи состояния в виде props-ов через всё дерево. Напишем тесты и введём понятие презентационных и контейнерных компонентов. И переведём код на передачу состояния через контекст React. А в следующем эпизоде попробуем это отрефакторить для избавления от копипасты.
deworker.pro
Контекст и контейнерные компоненты
Проблема каскадного проброса параметров. Использование контекстов React для передачи состояния внутренним компонентам. Выделение контейнерных компонентов.
Мы нашли удобный способ подключать компоненты к хранилищу, передаваемому через контекст, через connected-компоненты. Теперь мы можем обобщить этот процесс, создав универсальный настраиваемый коннектор. Заодно избавимся от перерендера целого приложения. Доработаем метод dispatch, чтобы он умел работать с асинхронными экшенами. В итоге получим более аккуратный код.
deworker.pro
Привязка состояния и React-Redux
Унификация привязки состояния и действий к свойствам компонента. Автоматизация мэппинга через коннектор. Подключение React-Redux. Асинхронные экшены через Redux-Thunk.
Вот мы и сделали приложение на React. Но загрузка лотов производится даже когда мы не выводим их на странице. Использование Redux порой может быть лишним. И загрузка данных из API может быть сложнее.
Сегодня рассмотрим и сравним варианты хранения и изменения состояния внутри и снаружи компонента, а код побочных эффектов сделаем выполняемым только по требованию. Для этого исследуем устройство хуков и сильнее декомпозируем наш код.
Сегодня рассмотрим и сравним варианты хранения и изменения состояния внутри и снаружи компонента, а код побочных эффектов сделаем выполняемым только по требованию. Для этого исследуем устройство хуков и сильнее декомпозируем наш код.
deworker.pro
Локальное состояние и хуки
Размещение локального состояния внутри классовых и функциональных компонентов. Использование хуков для экономии кода.
Наш фронтенд почти готов. Сегодня закроем его эпичным эпизодом о разных способах маршрутизации. Дополним нюансами подгрузки цен, отрефакторим маршрутизатор и посмотрим, что в итоге у нас получилось.
И после исследования работы React уже можем продолжить проект аукциона на Slim.
И после исследования работы React уже можем продолжить проект аукциона на Slim.
deworker.pro
Маршрутизация и History API
Динамическая смена контента. Написание компонента Router для эмуляции многостраничности через использование хэшэй и History API браузера.
Мы это сделали! В честь завершения серии про исследование React публикуем пост с итогами в блоге
deworker.pro
Что есть React: Мы это сделали!
Вот мы и завершили наше большое исследование работы фронтенд-фреймворков на примере устройства React. Получилось двенадцать полноценных эпизодов по написанию большого приложения с самого нуля.
Возвращаемся к аукциону 👍🏼
За время наших похождений в мир React вышли новые Composer 2, Xdebug 3, Psalm 4, Cucumber 7 и PHP 8. Также обновились базовые Docker-образы Nginx, NodeJS и PostgreSQL.
Так что сейчас самое время перейти на свежий софт и в следующем эпизоде заняться полезной интеграцией PHPUnit, CodeSniffer и Psalm в новый PhpStorm. А потом (когда на него перейдут все пакеты) встретить PHP 8. Очень ждём :)
За время наших похождений в мир React вышли новые Composer 2, Xdebug 3, Psalm 4, Cucumber 7 и PHP 8. Также обновились базовые Docker-образы Nginx, NodeJS и PostgreSQL.
Так что сейчас самое время перейти на свежий софт и в следующем эпизоде заняться полезной интеграцией PHPUnit, CodeSniffer и Psalm в новый PhpStorm. А потом (когда на него перейдут все пакеты) встретить PHP 8. Очень ждём :)
deworker.pro
Обновление Docker с Composer и XDebug
Обновление версий Docker-образов Nginx, NodeJS и PostgreSQL. Переход на Composer 2 и XDebug 3. Изменения в Cucumber 7. Включение кэширования для Psalm 4.
У нас подключено много инструментов для тестирования и анализа кода, но мы пока запускаем всё отдельно в консоли. Будет удобнее, если это будет работать прямо в IDE, чтобы все ошибки подсвечивались сразу, а не находились потом в консоли.
Для этого сегодня проведём интеграцию PHPUnit, CodeSniffer и Psalm прямо в PhpStorm. И заодно подключим плагины Psalm для упрощения описания типов для сервисов контейнера и для классов с тестами. Так разрабатывать будет интереснее.
Для этого сегодня проведём интеграцию PHPUnit, CodeSniffer и Psalm прямо в PhpStorm. И заодно подключим плагины Psalm для упрощения описания типов для сервисов контейнера и для классов с тестами. Так разрабатывать будет интереснее.
deworker.pro
Интеграция PHPUnit и Psalm в PhpStorm
Интеграция запуска PHPUnit-тестов и инспекций CodeSniffer и Psalm в PhpStorm. Подключение плагинов к Psalm для упрощения кода.
Чем заниматься в новогоднюю ночь – дело фантазии каждого. Может кому-то нравится в это время деплоить...
Если под утро вам вдруг станет грустно, то можете провести это время с пользой и через Ansible поднять свой локальный кэширующий прокси-реестр DockerHub для своего Jenkins :)
Если под утро вам вдруг станет грустно, то можете провести это время с пользой и через Ansible поднять свой локальный кэширующий прокси-реестр DockerHub для своего Jenkins :)
deworker.pro
Создание локального зеркала DockerHub
Решение проблемы Pull Rate Limit сервиса DockerHub. Создание собственного кеширующего прокси для загрузки официальных Docker-образов.
Каникулы проведены с пользой. На них занялся уборкой:
Исправил опечатки в коде аукциона по issues. Доработал некоторые эпизоды: улучшил команду
Видеоролики тоже исправлены и перезалиты.
Исправил опечатки в коде аукциона по issues. Доработал некоторые эпизоды: улучшил команду
deploy в эпизоде о Jenkins, перешёл везде на вызов docker-compose build с флагом --pull, кое-где сократил длинные вступления и подведения итогов.Видеоролики тоже исправлены и перезалиты.
Скринкастов на сайте уже стало много. Свои комментарии под ними искать не очень удобно.
Чтобы вы больше не теряли свою переписку с полезными вопросами и ответами в кабинете теперь есть ссылка "Мои комментарии":
https://deworker.pro/cabinet
Чтобы вы больше не теряли свою переписку с полезными вопросами и ответами в кабинете теперь есть ссылка "Мои комментарии":
https://deworker.pro/cabinet
А в ближайшем эпизоде напишем полноценную инфраструктуру Feature Toggles к фронтенду и бэкенду для более удобной разработки по принципам CI/CD.
Многие из вас интересовались, какая цветовая схема для PhpStorm используется в наших скринкастах. Тема сделана вручную специально для скринкастов. Делимся ей в нашем новогоднем дайджесте.
deworker.pro
Дайджест обновлений и тема для PhpStorm
Дайджест новостей и обновлений на сайте. Цветовая схема PhpStorm для записи скринкастов.
Новый мегаэпизод готов!
При рассмотрении философий CI/CD мы вместо Feature Branches говорили о подходе Trank Based Development для скрытой разработки новой функциональности в основной Git-ветке.
Сегодня это сделаем на практике. Добавим к проекту инфраструктуру полноценной работы с Feature Flags для фронтенда на ReactJS и бэкенда на PHP.
И при разработке компонента для бэкенда рассмотрим и применим принцип ISP из SOLID.
При рассмотрении философий CI/CD мы вместо Feature Branches говорили о подходе Trank Based Development для скрытой разработки новой функциональности в основной Git-ветке.
Сегодня это сделаем на практике. Добавим к проекту инфраструктуру полноценной работы с Feature Flags для фронтенда на ReactJS и бэкенда на PHP.
И при разработке компонента для бэкенда рассмотрим и применим принцип ISP из SOLID.
deworker.pro
Feature Flags для JS и PHP
Добавление поддержки Feature Toggle для фронтенда на ReactJS и бэкенда на PHP для разработки новой функциональности в стиле Continuous Integration.
Если мы ведём разработку всего проекта в одном монорепозитории, то сталкиваемся с неудобством долгого запуска pipeline. При малейшей правке файлов фронтенда у нас запускаются линтеры и тесты для всего проекта, а не только для фронтенда.
Сегодня мы оптимизируем наш Pipeline в Jenkins так, чтобы он запускал проверки только для изменённого кода. Для этого научим его пользоваться командами git diff и docker-compose images для отслеживания изменений кода и софта. При этом рассмотрим нюансы, с которыми можно столкнуться при внедрении такой автоматизации.
Сегодня мы оптимизируем наш Pipeline в Jenkins так, чтобы он запускал проверки только для изменённого кода. Для этого научим его пользоваться командами git diff и docker-compose images для отслеживания изменений кода и софта. При этом рассмотрим нюансы, с которыми можно столкнуться при внедрении такой автоматизации.
deworker.pro
Оптимизация Pipeline монорепозитория
Ускорение сборочного конвейера в Jenkins. Отслеживание изменений кода фронтенда и бэкенда в текущей сборке. Пропуск шагов если код не затронут.