PHP Fart Time
1.72K subscribers
75 photos
3 videos
2 files
162 links
Привет, фартаны!

Дурачимся, пилим OpenSource и рассказываем про пердовые технологии в php.

Авторы контента: @roxblnfk и @butschster
Download Telegram
Привет, фартаны!
Закончился 2023 год, начался 2024.
Пришла пора оглянуться назад и посмотреть на проделанную работу, а заодно расставить таймкоды.

📽 Все про PHP attributes
📽 Distributed Cron scheduling
📽 Создаем простой чат с использованием Spiral Framework, RoadRunner и Centrifugo WS сервер и VueJs
📽 Что такое RoadRunner app server и для чего он нужен PHP
📽 Как работать с gRPC в PHP
📽 Пишем простой Temporal workflow

С Новым Годом! Говорят, он будет хуже, чем предыдущие, но последним (правда не говорят, в каком смысле).
Пишите в комментариях, что бы вы хотели увидеть в следующем стриме.
Привет, фартаны!

Вот и подведён итог 2023 года в PHP RU сообществе.
Что тут сказать? Такой сокрушительной победы мы и не ожидали! Спасибо за поддержку и внимание 🥳

https://t.me/tg_5minphp/1299
Пинг.

Скоро выйдет Temporal PHP SDK с новой крутой фичей - Workflow Update. К релизу стоит задача не только завершить код в SDK и доку, но и подготовить примеры.

А ещё я купил себе новую клаву, чтобы не добивать родную у ноутбука. Keychron K2 в очень классной комплектации. Это механика с блютузом и подсветкой, достаточно тихая, приятная в работе и тяжёлая (а значит надёжная).

При этом, я думаю, многим из вас нравятся настолки в той или иной мере. Кости в ведьмаке тоже считаются.

В общем, пора кодить. Задача - сделать игру Zonk на Temporal с использованием новой фичи Workflow Update.

👇👇👇
Go live!
Привет, Это FartTimer!

📺 У нас опубликован новое видео.
Это запись спонтанного стрима на твиче. Этакий концентрат информации про Temporal, RoadRunner, интерцепторы и что-то там ещё на 4 часа.
https://youtu.be/AIwZAXXcYEY?si=h-U1qfP0SJSTPWPw
🪼 А чтобы не приходилось скучать в ожидании нового видео, напоминаю, что скоро будет проходить проплывать Podlodka PHP. Погружение на тему "Работа с базой данных".
Подробнее о конференции тут https://podlodka.io/phpcrew

Скоро разыграем одну подарочную проходку, когда придумаем конкурс. Может у вас есть идеи?

Увидимся на подлодке 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
🎟Розыгрыш билета на подлодку

Закидывайте в этот тред мемы про Buggregator, Temporal, RoadRunner, Spiral, Bitrix, Wordpress, релиз Yii3, Валентина и трейты, PHP, пыхо-тренды и всё остальное на тему PHP.

Автор, субъективно набравший меньше 💩 или больше позитивных реакций, получит приглашение на подлодку.

⚠️ *Важно: авторские мемы участвуют в розыгрыше, а честно перепощенные просто приветствуются.*

Автор лучшего перепощенного мема получит лицензию на Buggregator.
Подводим итоги конкурса из поста выше

Лучший мем: https://t.me/php_fart/61?comment=325

Автор мема заслуженно получает промокод на подлодку: 01000110010000010101001001010100 (вводить после нажатия кнопки КУПИТЬ)
Поздравляем победителя! 🎉🎉🎉

🍾🍾 Второе место вычислить нереально, поэтому лицензию на багри получают все 🍾🍾
Забрать можно в этом репозитории https://github.com/buggregator/server или через докер (Документация)
docker run --rm --pull always -p 127.0.0.1:8000:8000 -p 127.0.0.1:1025:1025 -p 127.0.0.1:9912:9912 -p 127.0.0.1:9913:9913 ghcr.io/buggregator/server:latest


Или через композер composer req --dev buggregator/trap
В блоге Виктора (который из Yii 3 Core) вышла позитивная заметка про Buggregator.
Получать обратную связь — хорошо. А получать хорошую обратную связь — ещё лучше.

Вы используете Buggregator? Поделитесь в комментариях обратной связью 💖
Напишите, как используете, чего не хватает, на что сделать упор.
Хотели бы, чтобы мы писали здесь о багри больше (не маркетинговый буллшит, а про фичи, кейсы, размышления и прочее)? — если да — ставьте 🖼️
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы выяснили, что вам, уважаемые фартаны, интересно почитать про #Buggregator. Ну что-ж, начнём со знакомства.

🪲 Buggregator — вспомогательный инструмент для отладки. Он не призван заменить xDebug, а наоборот - усилить. Из названия понятно, что он агрегирует баги, а точнее дампы. Что пошлёте — то и сагрегирует.

Сейчас поддерживаются:
- Логи из Monolog
- События и отчёты Sentry
- Профили XHProf (рисует граф и флейм-граф)
- Дампы из Symfony var-dumper и Spatie Ray
- Mail (есть встроенный SMTP сервер)
- Виджеты Inspector dev

🎁 В линейке Buggregator несколько продуктов.
Основной продукт, который мы подразумеваем под названием Buggregator — серверное решение, готовое интегрироваться в вашу инфраструктуру наравне с другими сервисами. Запускается и работает под докером.

Это Production-Ready решение, которое можно спрятать за авторизацией (доступна интеграция с SSO с настраиваемыми скоупами) и подключить к своей базе данных (сейчас доступны MongoDB и Postgres. Хотите MySQL? Добавим!)

😸 Начните локальное использование под докером, запустив команду:
docker run --rm --pull always -p 127.0.0.1:8000:8000 -p 127.0.0.1:1025:1025 -p 127.0.0.1:9912:9912 -p 127.0.0.1:9913:9913 ghcr.io/buggregator/server:latest


Каждый порт соответствует своему протоколу. Просто настройте ваш сервис на использование этих портов:
- 8000HTTP DumpsSentry, RayInspectorXHProf.
- 1025: SMTP.
- 9912Symfony Var-Dumper.
- 9913Monolog.
Полная документация: docs.buggregator.dev

🔨 Разработка Buggregator ведётся в нескольких репозиториях:
- buggregator/server — бэкенд на Spiral и RoadRunner.
- buggregator/frontend — фронтенд на Vuejs 3 и TailwindCSS с использованием StoryBook.
- buggregator/docs — документация

⭐️ Мы будем очень рады, если вы поддержите нас звёздочкой на гитхабе и поучаствуете в развитии проекта своими идеями, багрепортами, контрибьютингом или просто расскажете о Buggregator своему коту.
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем знакомство с миром #Buggregator

💾 Trap

Рабочее название в первые дни — "Buggregator Client". Задумывался как прокси вар-дампов на Buggregator Cloud, но быстро оброс фичами и новым смыслом.

Теперь Trap — это:
- Миниатюрный сервер Buggregator, не требующий Docker для работы. Написан на файберах PHP 8.1. Раньше выводил дампы, логи, HTTP и прочие события только в консоль. Сейчас поддерживается такой же WEB интерфейс, как у старшего брата.
- Набор патчей для Symfony VarDumper. Наличие установленного Trap в вашем проекте улучшит то, как VarDumper отрисовывает Protobuf объекты.
- Набор хелперов. В Trap есть функция trap(). Это тот же Symfony dump(), но с некоторыми изменениями.

Установка:
composer require --dev buggregator/trap -W


🪲 Trap сервер

Запускается из вендора:
./vendor/bin/trap --ui

Флаг --ui необходим для включения веб-морды на 8000 порту. Сейчас эта функция в бета-режиме.

По умолчанию Trap слушает только один порт 9912, но туда можно слать всё: и дампы, и логи, и http, переходящий в WebSocket. Мы написали инспектор траффика, который сам определяет протокол и направляет данные в нужный обработчик.
Trap можно запустить на тех же портах, что и основной Buggregator:
vendor/bin/trap -p1025 -p9912 -p9913 -p8000

(стоит ли сделать этот список портов по умолчанию?)

Trap годится только для локального использования: тут нет SSO, а из "внешних БД", возможно, будет только SQLite, просто чтобы не хранить события в массивах 🙂
Но есть и эксклюзивные фичи:
- благодаря "локальности", Trap может находить файлы профилировщиков, если таковые были сконфигурированы в php.ini.
- низкоуровневая работа с трафиком позволяет реализовать абсолютно любой протокол. Даже просто вывести сырые бинарные данные, как отдельное событие, чего-то да стоит!

🚀 Хэлперы trap()

Функция trap() немного отличается от dump():
- При вызове сразу настраиваются умолчания для отправки симфоневых дампов на локальный сервер (127.0.0.1:9912), так что не надо лезть в .env.
- trap() имеет текучий интерфейс (fluent interface), а значит можно делать так:
trap(FOO: $foo, BAR: $bar) // Дампаем переменные с указанием имен
->stackTrace() // Добавить красивый Stack Trace
->once() // Сработает один раз. Удобно использовать в циклах.
->if($foo instanceof FooInterface) // Условие отправки; можно функцией
->return(); // $foo вернётся как результат

- trap()::profile()->... в планах добавить удобства для профилирования
- а ещё (субъективно) trap набирать и произносить удобнее, чем dump. Так что хватит дампать, го трапать!

🪄 Подводя итог

Trap как сервер — хорошая альтернатива, когда не хочется запускать докер а PHP установлен локально.
Trap как PHP helper — необходим, если работаете с Protobuf и gRPC. Может быть удобнее dump(). Перспективен.

⭐️ Также будем очень рады звёздочкам на гитхабе и контрибьюторской поддержке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Двигаемся дальше по #Buggregator. Поговорим про перспективные направления.


👩‍💻 Плагин для PHP Storm

Github: buggregator/phpstorm-plugin

Появился благодаря Роману Пронскому. Сейчас это очень сырая альфа-версия, которая с багами, но уже умеет запускать Trap из вендора и отображать web-морду (считай Proof of Concept сделан).
Среди функций плагина мы ожидаем в будущем увидеть гибкие настройки и разные варианты запуска сервера (в т.ч. быстрый запуск Buggregator из докера).
Разработка плагина под IntelliJ Idea — задача не из простых. И если вы поможете нам с этим справится, то будет мегакруто!
Так что, любители 👩‍💻отлина, подтягивайтесь!

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


📈 Buggregator.dev

У любого крутого проекта должен быть сайт. Крутой такой лэндосик, который будет конвертировать 90% лидов в клиентов и приносить бабки.
Наши клиенты нам бабки не приносят, поэтому лэндинг у нас не продажный, а функциональный.

🪄 Там вы можете поиграться с настоящим и общим для всех Buggregator. Все дампы общие и каждый может удалять имеющиеся или добавлять свои.
🪄 Поставьте ❤️ репозиторию Buggregator и лэндинг празднично взорвётся! Запись об этом событии также появится в общем окошке Buggregator.
🪄 В секции Contributing можно найти issues (задачи), которые можно решить без особого погружения в проект и стать почётным контрибьютором. Блок контрибьюторов также будет добавлен.


📱 Не забывайте, что у нас есть сервер Discord, в котором можно продуктивно взаимодействовать.

Ознакомительная часть закончилась. Дальше будет интерактив! 😋
Please open Telegram to view this post
VIEW IN TELEGRAM
На канале CutCode вышло познавательное видео про интерцепторы #Spiral.

Давайте постараемся накрутить просмотров и завалить Данила (автора канала) вопросами в комментариях к видео, чтобы он переквалифицировал свой канал с Laгavel на Spiral 🚀
Надоели выходные? Давно хотели попробовать Spiral, RoadRunner, PHP Fibers, Centrifugo или просто сделать что-то хорошее?

🌟 Мы готовы поделиться двумя годовыми OpenSource лицензиями 👩‍💻 JetBrains All Products Pack (активны минимум до 03.04.2025).

Заполучить проще, чем кажется:

🫵 Будь активным контрибьютором — вноси вклад в OpenSource проект Buggregator в течение следующего месяца.
(Про багри: 🪲 Buggregator, 💾 Trap и 👩‍💻 PHPStorm Plugin)

Бери любой репозиторий (server, trap, frontend, plugin, docs...) и начинай фигачить: улучшения доки и метафайлов, создание баг-репортов, предложение фичей, написание кода по ишуям, рефакторинг, улучшения CI, участие в дискуссиях, предложения по улучшению лэндинга... Всё в пользу!

Через месяц активные участники по желанию войдут в состав команды Buggregator, двое получат лицензии.
Т.к. объективно измерить вклад невозможно, обладателей лицензий определим по мелодичности звучания или как-нибудь ещё 👌

Вошёл в состав команды?
🫵 Не прекращай участвовать даже после получения All Products Pack.


🌟 Хочешь стать звездой на главной странице проекта?

🫵 Твой вклад не останется незамеченным! Участники получат своё место в списке контрибьютеров на главной странице проекта. Это та самая отметка в твоём IT-паспорте, которая не оставит равнодушным ни одного HR-специалиста.

Не стесняйся отправлять коммиты с запашком — мы поможем сделать запах лучше.

📱 Telegram чат для коммуникации, где будем осуществлять координацию по конкурсу и контрибьютингу в целом.


🌐 Открой для себя мир Open Source с PHP Fart Time 🤢
Please open Telegram to view this post
VIEW IN TELEGRAM
Напоминаю, что не время отдыхать. Время кодить!
Прошло несколько дней с начала акции помощи проекту #Buggregator.

Чего мы достигли:

🪲 Buggregator
- @markin_igor улучшил инициализацию приложения через фичу Spiral Command Sequence
- @butschster наделал кучу фичей, которые теперь нуждаются в документировании: #168, #167, #165, #157, #150

💾 Trap
- @dimajolkin обнаружил, что у файла /bin/trap выставлены не самые удобные права для запуска, и пофиксил это. А также взялся за бэклог по уменьшению psalm baseline и значительно уменьшил его.
- @hello_l0gic решил превентивно закрыть задачи, запланированные на далёкое будущее: внести trap() в список debug-функций EA Extended плагина для PHPStorm и добавить киллер-фичу трэпа — команду joke. Последняя из-за невнятного ТЗ немного подзависла.
- В это время новый пользователь багри накидал годных ишуёв #61, #60
- @roxblnfk наконец-то добавил в Trap DI конетйнер и подгрузку конфигов через DI. В следующей версии trap будет доступно конфигурирование UI порта в т.ч. через env переменные.

👩‍💻 PHPStorm Plugin:
- @Danil42Russia плотно занялся плагином. Уже выполнен один заход на CI и выдвинуто дельное предложение.

Если честно, я ожидал, что Trap и плагин обойдут стороной, т.к. Trap довольно специфичен, а на плагине Kotlin и узкая специфика JB плагинов. И мы будем видеть большинство участников на доке и Server, т.к. там привычный стэк или кодить не надо.
Всё вышло наоборот: один пришел — оказался магистром плагинов, другой взял psalm (мягко говоря, не конфетка) и никто не пошёл в доку. Что же вы творите на работе, если на выходных берётесь за такое? 🙃

В общем, большое спасибо всем участникам! Взяли хороший темп

Поделитесь с нами в комментариях, а что вам мешает начать контрибьютить?

Мем дня от @markin_igor
Please open Telegram to view this post
VIEW IN TELEGRAM
Микродайджест багри-видосиков:

👉 На нашем канале публикуются записи лайвкод-стримов Павла на тему рефакторинга SMTP в Buggregator: две части уже в релизе, ещё две на подходе.

📱 Часть 1
📱 Часть 2

👉 Сегодня и завтра Павел планирует на стримить рефакторинг вебхуков багри и переписывание джобов на Symfony Messenger в связке с RoadRunner.

👉 В очередной раз порадовал канал CutCode: в этот раз Данил сделал то, чего мы не смогли сделать сами — профессионально обозрел #Buggregator.
Встречаем лучший существующий обзор Багрегатора:

📱 Смотреть

👉 Кстати, зацените наш промо-ролик на английском. #ChatGPT очень старался.

📱 Заценить
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Igor Markin
Товарищи. Валентин Удальцов прорубает окно в #PHP SRC.
9 мая запущено голосование за его RFC. Будьте уверены, большинство голосов будут за него!

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

Для реализации возможности повлиять на будущее PHP нужно зайти на канал @phpyh, тегнуть там @vudaltsov и попросить сделать всего-лишь тоже самое, что и с первым RFC, только с новой мега-киллер-фичей (ради светлого будущего PHP ему будет не сложно).

Вот варианты киллер-фичей:
- Неблокирующий IO во всём PHP
- Сахарок async await, EventLoop и порутины
- Виртуальные интерфейсы
- Трейты с ограниченным скопом
- implements внутри трейтов
- Дженерики
- Внедрение Typhoon на уровне ядра
- Добавить в ядро функцию fart(), которая будет воспроизводить звук пердежа
- Добавить функцию get_objects(), которая вернёт WeakMap всех созданных PHP объектов.

Только представьте, какое будущее нас ждёт!