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

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

Авторы контента: @roxblnfk и @butschster
Download Telegram
Подводим итоги конкурса из поста выше

Лучший мем: 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 объектов.

Только представьте, какое будущее нас ждёт!
📣 Анонсы стримов переехали в отдельную тему. Первый анонс уже там.

UPD:
Если вы поддерживаете это решение и не хотите часто видеть анонсы на каждый стрим, ставьте 🔥
Однако, если анонсы в канале не мешают, ставьте 💊
Никто не верил, но это произошло. Валентин уже во всю выполняет заказы фичей в PHP:
- закидывает get_objects() в PHP Internals
- решает нерешаемые вопросы дженериков в PHP

Что дальше? Функция fart(🔥) в ядре?
function fart(int $power, \DateInterval $duration, float $toxicity = 0.1)


Если да, то попрошу сделать её сразу неблокирующей 👌
Please open Telegram to view this post
VIEW IN TELEGRAM
Пора и нам подумать о #PHP. Начнём прямо сегодня, в 19:00МСК.
В гостях Антон Титов. Поговорим про будущее PHP.

https://youtube.com/live/B2LJDGEsPYk?feature=share