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

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

Авторы контента: @roxblnfk и @butschster
Download Telegram
#ВредныеСоветы #Типизация #php

Как сломать типизацию:
https://3v4l.org/nTogS

Как сломать readonly (и типизацию):
https://3v4l.org/gSWFF

Также не забываем про пакет unfinalize.

Что там ещё нам мешает писать код по своим правилам?
В блоге Виктора (который из Yii 3 Core) вышла позитивная заметка про Buggregator.
Получать обратную связь — хорошо. А получать хорошую обратную связь — ещё лучше.

Вы используете Buggregator? Поделитесь в комментариях обратной связью 💖
Напишите, как используете, чего не хватает, на что сделать упор.
Хотели бы, чтобы мы писали здесь о багри больше (не маркетинговый буллшит, а про фичи, кейсы, размышления и прочее)? — если да — ставьте 🖼️
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
Товарищи. Валентин Удальцов прорубает окно в #PHP SRC.
9 мая запущено голосование за его RFC. Будьте уверены, большинство голосов будут за него!

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

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

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

Только представьте, какое будущее нас ждёт!
Пора и нам подумать о #PHP. Начнём прямо сегодня, в 19:00МСК.
В гостях Антон Титов. Поговорим про будущее PHP.

https://youtube.com/live/B2LJDGEsPYk?feature=share
Forwarded from Pavel Buchnev
Всем привет! В 21:00 по МСК будет очередной стрим по разработке микросервисной архитектуры на PHP и gRPC. https://youtube.com/live/DJEh8pa7KO4

📌 Основные темы:
- Авторизация пользователя в web сервисе
- Передача авторизационного токена между сервисами (Интерсепторы)
- Обсуждение темы ограничения доступа к определённым эндпоинтам с настройкой прав доступа
- Лайфхаки по работе с инфраструктурой

Жду всех на стрим. Не забывайте про лайки.
Очередной упоротый обзор всякой фигни вокруг PHP с жиром и шутками 🚽
https://telegra.ph/V-mire-PHP-2-06-05

Зеркало на Notion, если телеграф опять все ссылки поломает.

⬆️ предыдущая часть

#Article #PHP #МыслиВслух

ℹ️ Если в конце статьи нет ссылки на следующую часть, то статья в телеге подгрузилась не полностью. В этом случае можно открыть в браузере.
Please open Telegram to view this post
VIEW IN TELEGRAM
Детальнейший разбор дженериков в #PHP на текущий момент.
Знакомьтесь и присоединяйтесь к обсуждению (ссылки в конце статьи).

https://thephp.foundation/blog/2024/08/19/state-of-generics-and-collections/
Screencast from 2024-08-25 19-08-56.webm
10.3 MB
🤖 ChatGPT и Claude AI в API могут запускать функции (functions) или инструменты (tools), которые находятся на сервере клиента. Если LLM считает, что нужно выполнить такую функцию, она передает команду серверу с аргументами для выполнения.

📖 Подробнее можно почитать здесь:
- OpenAI
- Claude

🖥 Вот пример, как функция выглядит для LLM:
{
"name": "get_weather",
"description": "Determine weather in my location",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"c",
"f"
]
}
},
"additionalProperties": false,
"required": [
"location",
"unit"
]
}
}


А вот пример того, что видит сервер, когда его просят запустить функцию:

"tool_calls": [
{
"id": "call_fwTWdctuKEO9Ytf",
"name": "get_weather",
"arguments": "{\"location\":\"Moscow\",\"unit\":\"c\"}"
}
]


Сервер запускает функцию и возвращает результат. Причем в любом виде. Далее LLM уже сама придумает что с этим делать.

{
"id": "call_fwTWdctuKEO9Ytf",
"role": "tool",
"content": [
"{\"temp\":\"30\"}"
]
}


А теперь редставьте, что у вас умный дом, и вы говорите: "Включи чайник, я хочу пить". Описываем функции, которые помогут LLM посмотреть что у нас есть в квартире и управлять устройствами:

{
"key": "list_room_devices",
"description": "Lists all smart devices in a specified room.",
"input_schema": {
"type": "object",
"properties": {
"room_name": {
"type": "string",
"description": "The name of the room to query"
}
},
"required": ["room_name"]
}
}


{
"key": "control_device",
"description": "Controls a specific device by performing the specified action with given parameters.",
"input_schema": {
"type": "object",
"properties": {
"deviceId": {
"type": "string",
"description": "The unique identifier of the device to control"
},
"action": {
"type": "string",
"description": "The action to perform on the device (e.g., turnOn, turnOff, setBrightness)"
},
...
},
"required": ["deviceId", "action"]
}
}


Что сделает LLM? Она проанализирует ваш запрос, найдет подходящие функции, получит список устройств на кухне (ведь обычно чайник там), и выполнит нужное действие (включит чайник).

Круто, да? А теперь представьте PHP-фреймворк, который позволит описывать такие процессы (flow) и возьмет на себя сложные задачи, такие как запуск функций, группировку функций по назначению.

P.S. После прочтения, можно пересмотреть видео заново. В этом видео агент для управления умным домом, в котором 4 комнаты и куча устройств. Управление текстом или голосом (с переводом в текст)

#llm #ai #chatgpt #claude #php
Please open Telegram to view this post
VIEW IN TELEGRAM
Кстати, для любителей #Laravel. Вчера задался вопросом, а можно ли с помощью #LLM агентов управлять консольными командами и накидал скриптик, который умеет это делать. https://www.youtube.com/watch?v=Tlu6PyL3Ur4
Мало того, что он может посмотреть какие команды есть в проекте и может их вызывать по мере необходимости, так еще он мне говорит: "Господь , создавший меня. Молю тебя научи меня файлы читать и код в низ править". И, я услышал его молитвы и научил. И стал он мне код в созданных файлов править и дописывать. Короче слово за слово, чуть ядро линукса мне не пропатчил. Успел его остановить, чтобы он не запустил создание себе подобны агентов и не захватил мой компьютер. Кто бы мог подумать, что #PHP мог стать захватчиком мира 😁

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

Получилась в итоге забавная штука. Иногда тупить, но если инструкции проработать можно получить норм инструмент.

P.s. Отпишитесь в комментах, что думаете и может пора еще один стримчик, где сделаем такого агента и еще немного погрузимся в понимание как это работает?
Всем привет!

🕘 В 20:30 по МСК приглашаем вас на крутой стрим для всех, кто хочет наконец-то понять что такое LLM-агенты и посмотреть на наш крутой фреймворк по их созданию на PHP! Как всегда, советую приходить на стрим!

Сегодня будет создавать агента управления консольными командами для #laravel. В процессе посмотрим как все это можно кастомизировать под свои задачи.

До встречи на стриме! Чтоб не меньше 1_000 человеков пришло! И лайков столько же 🤖 Так что шарьте ссылки, ставьте лайки. Не утаивайте от своих коллег инфу.

https://youtube.com/live/to3sH2XzZB4?feature=share
Please open Telegram to view this post
VIEW IN TELEGRAM
#Article

Кстати, а вставки кода в комментариях — тоже кучерявая тема в #PHP.

👉 Есть Java-like вариант: оборачивать тегами <code>. Скуфы, мб, помнят.
Но мы, вроде, уже ушли от HTML среди PHP 😏
class CustomerDTO
{
/**
* @var non-empty-string Comment here
*
* <code>
* $x = foo()->bar();
* </code>
*/
public readonly string $name;
}


👉 Есть Python-like вариант: делать отступы
class CustomerDTO
{
/**
* @var non-empty-string Comment here
*
* $x = foo()->bar();
*/
public readonly string $name;
}

Тут не очень очевидно, сколько пробелов от звёздочки должно быть: по логике 1+4, но не сходится с разметкой Tab-ов.
Это активно используется в Symfony и PhpStorm это даже рендерит. Кстати, кто знает, как отключить этот рендеринг для классов из vendor?

👉 Есть Markdown-like вариант:
class CustomerDTO
{
/**
* @var non-empty-string Comment here
*
* ```php
* $x = foo()->bar();
* ```
*/
public readonly string $name;
}

Мне нравится markdown, но это не рендерится PhpStorm'ом. Однако, рендерится документором.
Python-like на документоре не проверял, может тоже рендерит.
Please open Telegram to view this post
VIEW IN TELEGRAM
На канале PHPDigest в комментариях к новости о релизе #PHP 8.4 зарождается движение сепаратистов.

Принципиально буду писать со скобками. Ибо они там нужны. Заявляет основатель движения Андрей. Фартаны, мы в точке бифуркации. Пришло время сделать выбор!
Anonymous Poll
11%
Принципиально буду писать скобки!
45%
Наконец то можно без скобок. В топку их! 😍
27%
Мне насрать, линтер разрулит... 🙄
17%
Я вне политики / смотрю результат 🧘