Найти тему
Пятиминутка PHP

YaTalks, Yii3, Tinkerwell, Mac mini M1...

Сегодня расслабленный выпуск Пятиминутки PHP без конкретного фокуса. Поговорим на несколько разных тем: подкаст и конференция YaTalks, первые впечатления от Yii3, PHP 8.1 уже близко, Tinkerwell, Mac Mini на M1, механические клавиатуры и коврик для мыши с JSON API.

Итак, к сожалению, этой осенью не будет одной из моих любимых конференций Higload++, перенесли на весну.

Другая интересная конфа на эту осень - YaTalks 2021. Ежегодная технологическая конференция Яндекса для разработчиков. Будет шесть треков: Lifestyle, Frontend, Backend, ML, Mobile и Product. Интересно, что такое Lifestyle? Но это online.

Что я думаю про Online конференции. В отличие от митапов или вебинаров, конференции зачастую растягиваются на два и более дней. Я бывал на паре таких мероприятий от Jug.ru и Онтико – это известные команды, которые много лет делали для нас традиционные живые конференции типа Highload, PHP Russia, Holy.js, FrontendConf и другие. Так вот, при переходе в онлайн они накрутили интерактивности на сайтах мероприятий, но, честно говоря, я быстро терял интерес ко всем этим виртуальным комнатам, стендам и ребусам, оставался смотреть только трансляции докладов. Посмотрим, что получится у команды YaTalks. Слышал позитивные отзывы в подкасте Веб-стандарты, что в Яндексе научились-таки делать online мероприятия в отличие от упомянутых выше Jug.ru и Онтико.

Также ребята из Яндекса запустили подкаст YaTalks, активно развивают сообщество разработчиков вокруг своего бренда. Первый выпуск про релокацию в IT: из России и обратно. Интересны истории тех, кто «обратно»! Качество звука и картинки на высоте, хорошо подготовились, выпуски раз в две недели, я подписался.

Попробовал фреймворк Yii3. Я уже подписан на телеграм канал Хроники Yii3 – там публикуются краткие заметки и новости об обновлениях и изменениях в фреймворке. Этакий живой changelog, приятно видеть регулярную активность, хороший канал для популяризации фреймворка, я считаю.

Напомню, Yii3 сейчас в фазе разработки, нет даже альфа-версии, поэтому в реальных проектах его использовать рано, при этом часть пакетов уже готова и по факту можно собрать работающее приложение. В чате Yii3 проскакивала информация, что есть энтузиасты, которые уже использую его в production!

Чтобы посмотреть на фреймворк в деле, есть специальный репозиторий с демо-приложением, достаточно клонировать, затем composer update и yii serve – приложение реально работает, запускается.

Я взял это демо-приложение и поверх него создал небольшой личный кабинет клиента с заказами и счетами. В целом приложение выглядит, как я и ожидал, аккуратная архитектура, повсюду Dependency Injection и принцип наименьшего удивления.

Немного страшно стало от директории config, внутри которой была поддиректория packages – это конфиги всех установленных пакетов (composer пакетов), которые публикуются в процессе установки, т.е. файлы конфигов копировались из vendor в config/packages при composer install иupdate. С одной стороны, благодаря этому наглядно видно, какие параметры я могу сконфигурировать и это интересно для исследования пакетов и их возможностей. С другой стороны, начинаются пляски с бубном, если в самом пакете конфигурация поменялась, значит надо как-то обновить и файл уже скопированный в директорию проекта – то ли заменить, то ли как-то объединить.

В итоге совсем недавно стратегия установки поменялась, теперь конфиги пакетов НЕ копируются из vendor в директорию приложения. Но есть консольная команда, для копирования. Рекомендую почитать отдельный gist с пояснениями плюсов и минусов, тема управления конфигами интересна сама по себе, даже без относительно Yii3: https://gist.github.com/devanych/9475d7d3b0e2507b564c8d174a3c0fa7

Самое неудобное при разработке моего приложения «личный кабинет» поверх Yii3 было то, что документации реально мало. Я прочитал весь репозиторий yiisoft/docs, а вдогонку и весь подраздел форума на сайте yiiframework.com посвящённый Yii 3. На форуме вообще активности мало. Телеграм чат гораздо более живой.

Например, решил попробовать пакет yii-dataview, который не имеет документации, но имеет краткое описание в README и тесты, на первый взгляд пакет он даёт искомую функциональность просмотра списка записей и карточки. Но в чате ответили, что этот пакет ждёт большой рефакторинг, так что лучше на него пока не смотреть.

Короче, Yii3 понравился - грамотный фреймворк, разработка идёт, канал Хроники Yii3 радует новостями, жду стабильный релиз.

Следующая тема – это PHP 8.1. Планируемая дата релиза 25 ноября 2021. Я обычно начинаю переводить свои проекты в начале следующего года после релиза, т.е. начну в январе 2022. Если погуглить «что нового в PHP 8.1» уже можно найти много статей в разных блогах, включая Хабр, в целом все новинки уже хорошо разжеваны с примерами кода. Лично для себя главной фичей я выделяю Enums – руки чешутся избавиться от многих старых фрагментов, реализующих перечисления. Честно говоря, этот переход с самописных перечислений на Enums больше про эстетику, люблю, когда всё аккуратно разложено по полочкам.

Попробовал Tinkerwell – это что-то типа REPL, т.е. можно писать PHP код и видеть результат его выполнения. Tinkerwell становится интересным в комплекте с Laravel проектом, когда хочется поэкспериментировать в выполнением того или иного кода требующего фреймворка, например, запустить хитрые выборки Eloquent моделей и посмотреть на результат. В Laravel есть готовая команда artisan tinker, но она выполняется в консоли, где не очень удобно редактировать фрагменты кода. Также есть плагин Tinkerwell для PhpStorm – вот это вообще идеально, редактировать код непосредственно в PhpStorm с подсветкой и автодополнениями и тут же его запускать с выводом результата небольшое окошко внизу.

Оригинальное приложение Tinkerwell является Electron приложением и, как редактор кода, не очень удобно и слегка забаговано, например, иногда область для редактирования вообще перестаёт работать, невозможно ничего напечатать, надо перезапускать приложение.

На лендинге одной из фишек Tinkerwell указана возможность выполнить код на production без необходимости менять какие-либо файлы на сервере.

Несколько интересных сценариев использования есть в блоге разработчика: https://beyondco.de/blog/tinkerwell

  • получить результирующий sql запрос из query builder
  • экспорт данных из Eloquent моделей в csv
  • изменение пароля пользователя
  • отправка Email
  • отправка HTTP запросов используя все удобства класса Http из Laravel

В качестве рабочей машины я недавно переехал на Mac Mini на процессоре M1. Читал, что для типичной PHP разработки M1 подходит и спустя месяц собственного опыта могу это подтвердить. PHP установил из homebrew, все необходимые расширения работают, XDebug работает, MySQLустановил официальным инсталлятором с сайта MySQL – всё ок, остальные инструменты тоже без проблем: PhpStorm, TablePlus, Docker, Ansible, Nodejs.

Пересел на механическую клавиатуру. Попробовал несколько видов свичей: красные, коричневые и синие. Синие самые интересные! Клавиатуры Varmilo и Keychrone. В планах попробовать раздельную клавиатуру, типа Kinesis Freestyle. Механические клавиатуры – отдельный интересный мир!

Забавы ради купил коврик для мыши с подсветкой. Коврик подключается по USB, к нему идёт софт для настройки этой самой подсветки. Уже после покупки обнаружил, что софт интересный: оказывается он поднимает веб-сервер и имеет JSON API, т. е. подсветкой можно управлять с помощью http запросов. Дальше дело фантазии, например, упал билд на CI – коврик загорелся красным. Такой вот киберпанк. Модель SteelSeries QcK Prism Cloth.

На сегодня всё, услышимся в следующем выпуске.