Deworker Pro
1.41K subscribers
5 photos
187 links
Download Telegram
Мы перевели проект на PHP 8.3, но код наших классов под новые возможности языка ещё не меняли. Чтобы не делать это вручную, сегодня мы проведём автообновление синтаксиса и авторефакторинг нашего PHP-проекта с помощью полезного инструмента Rector.

Также с его помощью упростим использование типов в Doctrine-сущностях, переведём PHPUnit-тесты с аннотаций на атрибуты и спрограммируем собственный ректор для более аккуратного перевода наших классов на синтаксис Constructor Property Promotion.
Помимо регистрации и входа по почте и паролю порой полезно сделать авторегистрацию и вход через сторонние сервисы вроде почтовиков и социальных сетей.

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

Впрограммируем работу с внешними OAuth-сервисами в наш процесс входа с League OAuth Server. Подключим несколько провайдеров и добавим кнопки быстрого входа в AuthProvider фронтенда.

Для удобства разработки и тестирования сделаем эмуляцию страниц и API сторонних сервисов с помощью инструмента Wiremock.
Мы уже в прошлых стримах обсудили высокоуровневое разделение проекта на модули и микросервисы, чтобы у нас было меньше связей между отдельными подсистемами.

Там мы вскользь упомянули принципы и паттерны SOLID и GRASP в применении к модулям. Эта тема интересна сама по себе и по ней всегда много вопросов от зрителей. Ведь иногда из-за непонимания изначальной идеи программист либо делает это криво, либо применяет не там, где это актуально.

Так что будет полезно рассмотреть эту тему на примерах не только высокоуровневых модулей, но и на более низкоуровневом разделении программного кода на процедуры, функции или классы.

Это мы сделаем на отдельном большом стриме про SOLID и GRASP.
Предпросмотр скринкастов

Раньше для гостей и зрителей без подписки все платные скринкасты на сайте были полностью закрыты. Вместо видео сразу выводилась плашка с кнопкой подписки. Из-за этого только из одного описания под видео не всегда было понятно, о чём пойдёт речь.

Теперь же, как некоторые заметили в комментариях, у многих таких эпизодов стало возможно посмотреть вступление. То есть можно сразу подсмотреть, что будет внутри. Если у вас не оформлена подписка, то для вас это будет весьма удобно:

https://deworker.pro/edu
Перенос стримов с YouTube

В связи с проблемной работой YouTube записи всех наших стримов с уточнениями из комментариев теперь перенесены на сайт. Так что сейчас всё открывается быстро и со всех устройств:

https://deworker.pro/blog
После долгого ожидания в PHP 8.4 появились полноценные свойства с возможностью несимметричной видимости. Так что теперь можем записать полноценный скринкаст по взаимодействию объектов про поля и свойства. Эти нововведения мы вчера обсудили на обзорном стриме:

https://t.me/elisdnru/57
Про безопасность Web-приложений

В комментариях и чатах к предыдущим стримам часто попадалось предложение о том, что было бы интересно посмотреть или послушать что-нибудь на тему безопасной разработки приложений. Как про написание безопасного кода, так и про защиту сетей, виртуальных машин и контейнеров.

Эта тема теперь особенно актуальна ввиду ужесточения ответственности за утечки персональных данных и за несоблюдение требований законов к хранению и защите этих данных. Помимо этого, если мы активно разрабатываем и публикуем приложения в Docker-контейнерах, то сразу возникает необходимость разобраться с защитой этих контейнеров и сетей между ними.

По этим просьбам проведём наш очередной большой ламповый стрим на один или два вечера про безопасность web-приложений и сопутствующей инфраструктуры.

До встречи в эфире и в записи!
Forwarded from PHP умирает?! (Валентин Удальцов)
Forwarded from PHP умирает?! (Валентин Удальцов)
Deworker Pro
Про безопасность Web-приложений В комментариях и чатах к предыдущим стримам часто попадалось предложение о том, что было бы интересно посмотреть или послушать что-нибудь на тему безопасной разработки приложений. Как про написание безопасного кода, так и про…
Сегодня вечером встретимся на второй части стрима про безопасность WEB-приложений. В первом стриме обсудили общие вопросы и инфраструктуру, а сегодня поговорим про программный код.
В разработке пришло много интересных новостей о выпуске свежих улучшенных версий многих компонентов для бэкенда и фронтенда.

Сегодня переведём наш Swarm-кластер на реверс-прокси сервер Traefik 3. Обновимся на новые мажорные версии Rector, Psalm и PHPUnit. И переведём бэкенд на PHP 8.4.

А уже потом займёмся фронтендом.
Осознанная работа с базами данных

В предыдущих стримах мы рассмотрели тему безопасности при работе с БД и способы ускорения web-приложений.

Во всех наших проектах мы используем базы данных. Как в монолитах, так и в примерах с модулями и микросервисами. И нам в рабочих проектах порой приходится сочинять сложные SQL-запросы. И для решения таких задач желательно уметь использовать SQL в полную силу.

Но помимо программного кода большой вклад в производительность вносит скорость работы БД и оптимальность наших запросов. А разработчики порой уделяют этому мало внимания. Либо это для их проекта сейчас неактуально, либо они просто не умеют этого делать.

Поэтому нам будет полезно разобраться с базами данных подробнее.

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

Эта тематика актуальна всегда и про это всегда спрашивают на собеседованиях, так что лучше не откладывать это на потом.

До встречи с участниками в эфире и в записи!
Deworker Pro
Осознанная работа с базами данных В предыдущих стримах мы рассмотрели тему безопасности при работе с БД и способы ускорения web-приложений. Во всех наших проектах мы используем базы данных. Как в монолитах, так и в примерах с модулями и микросервисами. И…
В процессе сегодняшней финальной подготовки стрима пришли идеи добавить дополнительные темы и рассказать про технические вещи вроде PgBouncer. Так что дополним программу и, чтобы всё влезло, разделим стрим на две части.

Первую часть посвятим теории БД и практикам написания и оптимизации SQL-запросов. Во второй части рассмотрим вспомогательные инструменты, конфигурацию, репликацию и шардирование.

В связи с этим потребуется дополнительное время на доработку программы. Вместо сегодняшнего вечера первую часть проведём ориентировочно 10 апреля.
Deworker Pro
Осознанная работа с базами данных В предыдущих стримах мы рассмотрели тему безопасности при работе с БД и способы ускорения web-приложений. Во всех наших проектах мы используем базы данных. Как в монолитах, так и в примерах с модулями и микросервисами. И…
Вчера выступил на конференции PHP Crew про производительность, а сегодня решил посмотреть прошедшие там доклады.

Обратил внимание на доклад "Оптимизация БД: когда индексы не работают" о случаях, когда планировщик решает не использовать индексы при выполнении запросов. И понял, что надо индексированию уделить больше внимания и такие ситуации рассмотреть подробнее.

Так что сегодня в материалы стрима добавлю больше примеров и наборов данных по теме индексов. За оставшееся время до начала сделать это не успею, так что вместо сегодняшнего вечера встретимся завтра.
А вот и сам доклад от автора:
🔤🔤🔤🔤🔤🔤🔤🔤 🐤

Вчера состоялось моё выступление на шестом сезоне подлодки. Я выступал с докладами на 4 из них. В этот раз, как я уже писал ранее, рассказывал почему индексы в конкретных запросах могут не работать. Для этого пришлось сначала разобраться какие они вообще бывают, эти индексы, а так же как работает планировщик.
В общем, спешу поделиться видео моего доклада ☄️
Please open Telegram to view this post
VIEW IN TELEGRAM
Вчера язык PHP отпраздновал своё тридцатилетие. А у нас в монтаже большой насыщенный скринкаст про свежие полезные фишки разных частей приложения.

И скоро проведём вторую часть нашего большого стрима про продвинутую работу с базами данных. Кто был на первой теоретической части, тот в курсе, что мы обсудили общие вещи и теперь займёмся практикой по написанию и рефакторингу запросов. Если пропустили участие, то можете посмотреть запись первой части и прийти на практику:

https://deworker.pro/blog/stream-dbs