Forwarded from Pavel Buchnev
Всем привет! В 21:00 по МСК будет очередной стрим по разработке микросервисной архитектуры на PHP и gRPC. https://youtube.com/live/DJEh8pa7KO4
📌 Основные темы:
- Авторизация пользователя в web сервисе
- Передача авторизационного токена между сервисами (Интерсепторы)
- Обсуждение темы ограничения доступа к определённым эндпоинтам с настройкой прав доступа
- Лайфхаки по работе с инфраструктурой
Жду всех на стрим. Не забывайте про лайки.
📌 Основные темы:
- Авторизация пользователя в web сервисе
- Передача авторизационного токена между сервисами (Интерсепторы)
- Обсуждение темы ограничения доступа к определённым эндпоинтам с настройкой прав доступа
- Лайфхаки по работе с инфраструктурой
Жду всех на стрим. Не забывайте про лайки.
YouTube
Как создать PHP микросервисы с gRPC: Авторизация пользователей | Часть 4
Присоединяйтесь к нам в четвертой части нашего стрима, где мы продолжаем разработку PHP микросервисов с GRPC. В этом эпизоде мы фокусируемся на следующем:
📌 Основные темы:
- Авторизация пользователя в web сервисе
- Передача авторизационного токена между…
📌 Основные темы:
- Авторизация пользователя в web сервисе
- Передача авторизационного токена между…
🔥17 6
Очередной упоротый обзор всякой фигни вокруг PHP с жиром и шутками 🚽
https://telegra.ph/V-mire-PHP-2-06-05
Зеркало на Notion, если телеграф опять все ссылки поломает.
⬆️ предыдущая часть
#Article #PHP #МыслиВслух
ℹ️ Если в конце статьи нет ссылки на следующую часть, то статья в телеге подгрузилась не полностью. В этом случае можно открыть в браузере.
https://telegra.ph/V-mire-PHP-2-06-05
Зеркало на Notion, если телеграф опять все ссылки поломает.
⬆️ предыдущая часть
#Article #PHP #МыслиВслух
ℹ️ Если в конце статьи нет ссылки на следующую часть, то статья в телеге подгрузилась не полностью. В этом случае можно открыть в браузере.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
В мире PHP #1
⬅️ предыдущая часть Мутационное тестирование Напомню, что мутационное тестирование — это отличный способ убедиться в том, что написанные тесты – говно и ничего не тестируют даже при 100% покрытии. Infection Infection теперь поддерживает кастомные мутаторы.…
1🔥52 9 5💩2
triangular-octopus-0f6 on Notion
В мире PHP #2 | Notion
Сорян, фартаны. Статейку чутка просрочил. Заработался, бывает. Представьте, что она опубликована месяц назад и баянов тут нет.
Новый выпуск "В мире PHP"
https://triangular-octopus-0f6.notion.site/PHP-2-d67a1f346b8541729fb3aa476e0fa086?pvs=4
⬆️ предыдущая часть
#Article #PHP #МыслиВслух
https://triangular-octopus-0f6.notion.site/PHP-2-d67a1f346b8541729fb3aa476e0fa086?pvs=4
⬆️ предыдущая часть
#Article #PHP #МыслиВслух
4🔥35 8💩2💊1
Детальнейший разбор дженериков в #PHP на текущий момент.
Знакомьтесь и присоединяйтесь к обсуждению (ссылки в конце статьи).
https://thephp.foundation/blog/2024/08/19/state-of-generics-and-collections/
Знакомьтесь и присоединяйтесь к обсуждению (ссылки в конце статьи).
https://thephp.foundation/blog/2024/08/19/state-of-generics-and-collections/
thephp.foundation
State of Generics and Collections
The PHP Foundation — Supporting, Advancing, and Developing the PHP Language
4 15🔥2 1
Screencast from 2024-08-25 19-08-56.webm
10.3 MB
📖 Подробнее можно почитать здесь:
- OpenAI
- Claude
{
"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
4🔥15 3🤮1
Кстати, для любителей #Laravel. Вчера задался вопросом, а можно ли с помощью #LLM агентов управлять консольными командами и накидал скриптик, который умеет это делать. https://www.youtube.com/watch?v=Tlu6PyL3Ur4
Мало того, что он может посмотреть какие команды есть в проекте и может их вызывать по мере необходимости, так еще он мне говорит: "Господь , создавший меня. Молю тебя научи меня файлы читать и код в низ править". И, я услышал его молитвы и научил. И стал он мне код в созданных файлов править и дописывать. Короче слово за слово, чуть ядро линукса мне не пропатчил. Успел его остановить, чтобы он не запустил создание себе подобны агентов и не захватил мой компьютер. Кто бы мог подумать, что #PHP мог стать захватчиком мира 😁
Кстати код агента я написал за 15 минут, а вот инструкции пришлось прорабатывать, часто шел в обход них. Короче то, что на видео - час работы.
Получилась в итоге забавная штука. Иногда тупить, но если инструкции проработать можно получить норм инструмент.
P.s. Отпишитесь в комментах, что думаете и может пора еще один стримчик, где сделаем такого агента и еще немного погрузимся в понимание как это работает?
Мало того, что он может посмотреть какие команды есть в проекте и может их вызывать по мере необходимости, так еще он мне говорит: "Господь , создавший меня. Молю тебя научи меня файлы читать и код в низ править". И, я услышал его молитвы и научил. И стал он мне код в созданных файлов править и дописывать. Короче слово за слово, чуть ядро линукса мне не пропатчил. Успел его остановить, чтобы он не запустил создание себе подобны агентов и не захватил мой компьютер. Кто бы мог подумать, что #PHP мог стать захватчиком мира 😁
Кстати код агента я написал за 15 минут, а вот инструкции пришлось прорабатывать, часто шел в обход них. Короче то, что на видео - час работы.
Получилась в итоге забавная штука. Иногда тупить, но если инструкции проработать можно получить норм инструмент.
P.s. Отпишитесь в комментах, что думаете и может пора еще один стримчик, где сделаем такого агента и еще немного погрузимся в понимание как это работает?
YouTube
Building a Blog with LLM Agents: Automating Laravel Development
In this exciting demonstration, we showcase the power of Language Model (LLM) agents in streamlining Laravel development. Watch as intelligent agents take charge of making decisions on how to structure the application and which Artisan commands to run.
Key…
Key…
5🔥22 11💊4🤯2
Всем привет!
🕘 В 20:30 по МСК приглашаем вас на крутой стрим для всех, кто хочет наконец-то понять что такое LLM-агенты и посмотреть на наш крутой фреймворк по их созданию на PHP! Как всегда, советую приходить на стрим!
Сегодня будет создавать агента управления консольными командами для #laravel. В процессе посмотрим как все это можно кастомизировать под свои задачи.
До встречи на стриме! Чтоб не меньше 1_000 человеков пришло! И лайков столько же🤖 Так что шарьте ссылки, ставьте лайки. Не утаивайте от своих коллег инфу.
https://youtube.com/live/to3sH2XzZB4?feature=share
🕘 В 20:30 по МСК приглашаем вас на крутой стрим для всех, кто хочет наконец-то понять что такое LLM-агенты и посмотреть на наш крутой фреймворк по их созданию на PHP! Как всегда, советую приходить на стрим!
Сегодня будет создавать агента управления консольными командами для #laravel. В процессе посмотрим как все это можно кастомизировать под свои задачи.
До встречи на стриме! Чтоб не меньше 1_000 человеков пришло! И лайков столько же
https://youtube.com/live/to3sH2XzZB4?feature=share
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Разрабатываем LLM агента на PHP для управления консольными командами на Laravel
В этом стриме мы подробно разберем процесс разработки LLM-агента на #PHP.
Мы шаг за шагом разработаем функционального #LLM-агента, способного выполнять сложные задачи и взаимодействовать с пользователями на естественном языке.
В ходе лайв-кодинга вы узнаете:…
Мы шаг за шагом разработаем функционального #LLM-агента, способного выполнять сложные задачи и взаимодействовать с пользователями на естественном языке.
В ходе лайв-кодинга вы узнаете:…
8 18 10🔥6💊3
Telegram
PHP Fart Time
#Article #Типизация #php
Всем нравятся Constructor Property Promotion, не так ли?
final class Foo {
public function __construct(
public bool $bar = false,
public array $baz = [],
) { }
}
☝️ эти фрагменты кода эквивалентны 👇
final…
Всем нравятся Constructor Property Promotion, не так ли?
final class Foo {
public function __construct(
public bool $bar = false,
public array $baz = [],
) { }
}
☝️ эти фрагменты кода эквивалентны 👇
final…
#Article #Типизация
Я уже ранее публиковал заметку про любопытное отличие Promoted Properties от обычных свойств в кишках #PHP.
Например, вот такая портянка:
превращается в такую:
Вау! Круто!
Но не раскрыта тема комментариев.
Если вы не пишете комментарии в коде, то вам, в прочем, без разницы😑 но мне вот приходится 😫
Как правило, если требуется указать более точный "псалмовый" тип, то он перемещается из аннотации
А т.к. я обычно пишу непонятные тулзы, которые хер пойми как работают, то в комментариях часто нужен не только текст, но и вставки кода, дополнительные аннотации типа
И хорошего решения тут нет.
👉 Писать портянку под
👉 Писать типы и комментарии непосредственно над параметром — всрато.
👉 Не использовать Promoted Properties и дублировать комментарий — всрато, но есть исключения (если свойство публичное, а конструктор internal, то в конструкторе можно обойтись только типом).
И даже если сделаешь красиво, то всё-равно потом придёт какой-нибудь умник с ректором или CS фиксером и запромоутит разом все параметры🚽
Я уже ранее публиковал заметку про любопытное отличие Promoted Properties от обычных свойств в кишках #PHP.
Promoted Properties от того и Promoted, что очень неплохо продвигались в плане маркетинга.
Например, вот такая портянка:
class CustomerDTO
{
public string $name;
public string $email;
public DateTimeImmutable $birth_date;
public function __construct(
string $name,
string $email,
DateTimeImmutable $birth_date
) {
$this->name = $name;
$this->email = $email;
$this->birth_date = $birth_date;
}
}
превращается в такую:
class CustomerDTO
{
public function __construct(
public string $name,
public string $email,
public DateTimeImmutable $birth_date,
) {}
}
Вау! Круто!
Но не раскрыта тема комментариев.
Если вы не пишете комментарии в коде, то вам, в прочем, без разницы
Как правило, если требуется указать более точный "псалмовый" тип, то он перемещается из аннотации
@var
в аннотацию @param
над конструктором, поэтому иногда получается такое говно, в котором нужный тебе параметр пойти найди.А т.к. я обычно пишу непонятные тулзы, которые хер пойми как работают, то в комментариях часто нужен не только текст, но и вставки кода, дополнительные аннотации типа
@internal
, @note
, @since
, @see
, @link
.И хорошего решения тут нет.
👉 Писать портянку под
@property
— тем всратее, чем больше комментариев и параметров.👉 Писать типы и комментарии непосредственно над параметром — всрато.
class CustomerDTO
{
public function __construct(
/**
* @var non-empty-string Comment here
* Example here
*/
public readonly string $name,
//...
) {}
}
👉 Не использовать Promoted Properties и дублировать комментарий — всрато, но есть исключения (если свойство публичное, а конструктор internal, то в конструкторе можно обойтись только типом).
И даже если сделаешь красиво, то всё-равно потом придёт какой-нибудь умник с ректором или CS фиксером и запромоутит разом все параметры
Please open Telegram to view this post
VIEW IN TELEGRAM
#Article
Кстати, а вставки кода в комментариях — тоже кучерявая тема в #PHP.
👉 Есть Java-like вариант: оборачивать тегами
Но мы, вроде, уже ушли от HTML среди PHP😏
👉 Есть Python-like вариант: делать отступы
Тут не очень очевидно, сколько пробелов от звёздочки должно быть: по логике 1+4, но не сходится с разметкой Tab-ов.
Это активно используется в Symfony и PhpStorm это даже рендерит. Кстати, кто знает, как отключить этот рендеринг для классов из vendor?
👉 Есть Markdown-like вариант:
Мне нравится markdown, но это не рендерится PhpStorm'ом. Однако, рендерится документором.
Python-like на документоре не проверял, может тоже рендерит.
Кстати, а вставки кода в комментариях — тоже кучерявая тема в #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
🤔8🔥2
Telegram
Пых
Ну это, фартаны, известный прикол. А как вы думаете, почему такой код работает?
<?php
echo b'Пых';
https://3v4l.org/D40FF
<?php
echo b'Пых';
https://3v4l.org/D40FF
Ну, это-то тоже известная штука, Валентин.
А можешь ли ты уместить решение FizzBuzz в 56 байтов? (ранее рекорд был 52 символа, но недавно обновили версию пыхи, и кое какие хаки перестали работать)
https://code.golf/fizz-buzz#php
А можешь ли ты уместить решение FizzBuzz в 56 байтов? (ранее рекорд был 52 символа, но недавно обновили версию пыхи, и кое какие хаки перестали работать)
https://code.golf/fizz-buzz#php
У кого короче, тот и выиграл
© wispoz
😁3
На канале PHPDigest в комментариях к новости о релизе #PHP 8.4 зарождается движение сепаратистов.
Принципиально буду писать со скобками. Ибо они там нужны. Заявляет основатель движения Андрей. Фартаны, мы в точке бифуркации. Пришло время сделать выбор!
Принципиально буду писать со скобками. Ибо они там нужны. Заявляет основатель движения Андрей. Фартаны, мы в точке бифуркации. Пришло время сделать выбор!
Anonymous Poll
11%
Принципиально буду писать скобки! ✊
45%
Наконец то можно без скобок. В топку их! 😍
27%
Мне насрать, линтер разрулит... 🙄
17%
Я вне политики / смотрю результат 🧘