Forwarded from Pavel Buchnev
Всем привет. Сегодня планирую очередной стрим по созданию сервисов с gRPC. https://www.youtube.com/watch?v=li3nw7Bidzc В этом стриме будет добавлять еще Temporal в нашу инфру и начинать его использовать.
YouTube
Как создать PHP микросервисы с Temporal + gRPC: Авторизация и регистрацая пользователей | Часть 3
Присоединяйтесь к нам в третьей части нашего стрима, где мы продолжаем разработку PHP микросервисов с GRPC. В этом эпизоде мы фокусируемся на следующем:
📌 Основные темы:
- Docker окружение: установка и настройка Temporal.
- База данных: завершение создание…
📌 Основные темы:
- Docker окружение: установка и настройка Temporal.
- База данных: завершение создание…
🔥11 5
Forwarded from Pavel Buchnev
Всем любителям temporal привет. Антон на досуге написал статью по обработке очереди задач с Temporal.
Подготовил перевод для тех, кто не хочет напрягать мозг https://gist.github.com/butschster/2af0b06f693ec615ce55e0c2d4131e53
Оригинал https://spiralscout.com/blog/leveraging-temporal-for-efficient-document-life-cycle-management для тех, кому не нравится перевод ChatGPT )
Подготовил перевод для тех, кто не хочет напрягать мозг https://gist.github.com/butschster/2af0b06f693ec615ce55e0c2d4131e53
Оригинал https://spiralscout.com/blog/leveraging-temporal-for-efficient-document-life-cycle-management для тех, кому не нравится перевод ChatGPT )
Gist
Использование Temporal для эффективного управления жизненным циклом документов
Использование Temporal для эффективного управления жизненным циклом документов - readme.md
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
Не пропустите эксклюзивное интервью с Антоном Давыдовым, ведущим солюшн-архитектором!
🚀 Погрузимся в мир профессионального роста. Обсудим перспективы карьеры после достижения статуса Senior Developer.
💡 Поговорим о роли солюшн-архитектора: что это за специальность, каковы её ключевые задачи и какие навыки необходимы для успеха в этой роли.
🍺 Посидим-попердим. Да и просто нормально проведем время.
⚠️ Закидывайте вопросы в тред, постараемся задать их Антону. А то свои мы так и не подготовили (как обычно).
🚀 Погрузимся в мир профессионального роста. Обсудим перспективы карьеры после достижения статуса Senior Developer.
💡 Поговорим о роли солюшн-архитектора: что это за специальность, каковы её ключевые задачи и какие навыки необходимы для успеха в этой роли.
🍺 Посидим-попердим. Да и просто нормально проведем время.
⚠️ Закидывайте вопросы в тред, постараемся задать их Антону. А то свои мы так и не подготовили (как обычно).
YouTube
🚀От Сеньора к Архитектору: Разбор карьерных троп с Антоном Давыдовым!
🚀 Узнайте, как прокачать свои навыки и вырасти из senior разработчика в незаменимого архитектора ПО! Присоединяйтесь к нашему стриму с Антоном Давыдовым, который раскроет все секреты карьерного роста и мастерства в IT
✨ На стриме обсудим, как элементы системы…
✨ На стриме обсудим, как элементы системы…
🔥11💩3 3
Ссылка на курс: https://tough-dev.school/system-analysis
Стартует уже скоро, 13 июня.
Это 4-недельный курс о том, как проектировать системы, как новые (чтобы потом не переделывать), так и старые (чтобы разобрать на части и ускорить разработку); как распиливать монолиты, обоснованно выбирать технологии и архитектурные стили, оставляя после себя понятную документацию. DDD, EventSourcing, Микросервисы и т.д., все эти модные слова будут частью этого курса.
Детальная информация на сайте.
TG канал Антона:
Грустно об архитектуре и программировании
Список книг, использованных при создании курса:
Learning Domain-Driven Design
Implementing Domain-Driven Design
Introducing EventStorming
Fundamentals of Software Architecture
Software Architecture: The Hard Parts
Solutions Architect's Handbook
Software Architecture in Practice
Building Microservices
Software Systems Architecture
System Architecture
Monolith to Microservices
Analysis Patterns
Building Evolutionary Architectures
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8 4
Сегодня в 21:00 по МСК проводим стрим по профилированию PHP приложений и о том как искать медленный код (Bottlenecks) на примере Laravel и Spiral Framework + Buggregator.
Мы подготовим PHP приложение к запуску с xhprof, сбору профилей и отправки их в Buggregator для анализа. Заодно посмотрим как вообще запускать профайлер, какую информацию он отдает, как ее интерпретировать и т.д. и т.п.
Не пропустите, будет интересно
https://youtube.com/live/CU6gCj5UU84?feature=share
Мы подготовим PHP приложение к запуску с xhprof, сбору профилей и отправки их в Buggregator для анализа. Заодно посмотрим как вообще запускать профайлер, какую информацию он отдает, как ее интерпретировать и т.д. и т.п.
Не пропустите, будет интересно
https://youtube.com/live/CU6gCj5UU84?feature=share
YouTube
Profiling Laravel Apps with XHProf and Buggregator on Steroids!
🚀 Заходите на наш последний стрим, где мы разбираемся с профилированием PHP приложений через XHProf. Узнаете, почему старые инструменты устарели и как с помощью Buggregator превратить профилирование в удовольствие! 🎯
- 🤔 Что новенького? Обсудим проблемы…
- 🤔 Что новенького? Обсудим проблемы…
🔥22 4 4
Очередной упоротый обзор всякой фигни вокруг 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
Всем привет!
🕘 В 21:00 по МСК проведем очередной стрим для любителей RoadRunner, а также для тех, кто слыхал что-то про него, но не понимает зачем оно нужно. 💩
🚀 В стриме будем обсуждать как вдохнуть новую жизнь в монолит на PHP с помощью очередей RoadRunner.
😎 Наш гость, активный контрибьютор в RoadRunner, Владимир Плахотников (@embargo2710)
🧨 Обсудим:
- Проблемы старых демонов: что с ними не так и как RoadRunner делает жизнь лучше.
- Почему RoadRunner? Минимум технических сравнений, только суть.
- Истории из траншеи: как я начал учить Go и не прогадал.
- Обсудим критические ошибки и мелкие фишки, которые мы добавили.
- Итоги внедрения: что у нас получилось и как это помогло.
- Что дальше? Готовимся к HTTP-запросам!
не забудь про лайк и подписку на канал, мы их каждый день пересчитываем и складываем в копилку 🐷
https://www.youtube.com/live/otFglUGsSi0"
🕘 В 21:00 по МСК проведем очередной стрим для любителей RoadRunner, а также для тех, кто слыхал что-то про него, но не понимает зачем оно нужно. 💩
🚀 В стриме будем обсуждать как вдохнуть новую жизнь в монолит на PHP с помощью очередей RoadRunner.
😎 Наш гость, активный контрибьютор в RoadRunner, Владимир Плахотников (@embargo2710)
🧨 Обсудим:
- Проблемы старых демонов: что с ними не так и как RoadRunner делает жизнь лучше.
- Почему RoadRunner? Минимум технических сравнений, только суть.
- Истории из траншеи: как я начал учить Go и не прогадал.
- Обсудим критические ошибки и мелкие фишки, которые мы добавили.
- Итоги внедрения: что у нас получилось и как это помогло.
- Что дальше? Готовимся к HTTP-запросам!
не забудь про лайк и подписку на канал, мы их каждый день пересчитываем и складываем в копилку 🐷
https://www.youtube.com/live/otFglUGsSi0"
YouTube
Разбираем, как вдохнуть новую жизнь в монолит на PHP с помощью RoadRunner Jobs. 🚀
Привет, всем! Сегодня у нас особенный стрим: разбираем, как можно вдохнуть новую жизнь в монолит с помощью RoadRunner Jobs. 🚀
Что ждет нас сегодня:
- Проблема старых демонов: что с ними не так и как RoadRunner делает нашу жизнь лучше.
- Почему выбрали RoadRunner?…
Что ждет нас сегодня:
- Проблема старых демонов: что с ними не так и как RoadRunner делает нашу жизнь лучше.
- Почему выбрали RoadRunner?…
🔥18 9
Всем привет!
🕘 В 21:00 по МСК проведем очередной стрим для самых маленьких, кому хочется RoadRunner, но он не понимает зачем.
😎 Часто слышу отзывы по RoadRunner, мол мы много говорим про него, какой он крутой и т.д., но оказывается мало кто понимает что это такое, как он работает и зачем он вообще нужен для нашего PHP приложения. Я решил, что пора нам уже с ним познакомиться, настроить, запустить, посмотреть как он работает, как взаимодействует с PHP и бежать устанавливать в свой проект.
Сегодня мы это исправим!
Что нас ждёт:
- Разберёмся, в чем разница между работой приложения без RoadRunner и с ним.
- Установим RoadRunner.
- Изучим конфигурацию и подготовим всё к работе.
- Посмотрим, как PHP-приложение обменивается данными с RoadRunner на примере HTTP и Jobs плагинов.
- Изучим основные возможности RoadRunner.
- Узнаем, что такое RPC-протокол и зачем он нужен.
- Ответим на ваши вопросы.
https://www.youtube.com/live/qnl51Hl44kw
🕘 В 21:00 по МСК проведем очередной стрим для самых маленьких, кому хочется RoadRunner, но он не понимает зачем.
😎 Часто слышу отзывы по RoadRunner, мол мы много говорим про него, какой он крутой и т.д., но оказывается мало кто понимает что это такое, как он работает и зачем он вообще нужен для нашего PHP приложения. Я решил, что пора нам уже с ним познакомиться, настроить, запустить, посмотреть как он работает, как взаимодействует с PHP и бежать устанавливать в свой проект.
Сегодня мы это исправим!
Что нас ждёт:
- Разберёмся, в чем разница между работой приложения без RoadRunner и с ним.
- Установим RoadRunner.
- Изучим конфигурацию и подготовим всё к работе.
- Посмотрим, как PHP-приложение обменивается данными с RoadRunner на примере HTTP и Jobs плагинов.
- Изучим основные возможности RoadRunner.
- Узнаем, что такое RPC-протокол и зачем он нужен.
- Ответим на ваши вопросы.
https://www.youtube.com/live/qnl51Hl44kw
YouTube
Что такое RoadRunner и зачем он нужен вашему PHP-приложению. Полное руководство с примерами!
Привет, всем!
Часто слышу отзывы о RoadRunner: многие говорят, какой он крутой, но мало кто действительно понимает, что это такое, как он работает и зачем нужен для нашего PHP-приложения. Пора это исправить! Сегодня мы познакомимся с RoadRunner, настроим…
Часто слышу отзывы о RoadRunner: многие говорят, какой он крутой, но мало кто действительно понимает, что это такое, как он работает и зачем нужен для нашего PHP-приложения. Пора это исправить! Сегодня мы познакомимся с RoadRunner, настроим…
🔥30 8😁3💊3 2
Всем привет!
🕘 В 21:00 по МСК проведем очередной стрим для самых маленьких, кому хочется научиться создавать масштабируемый Workflow с Temporal
Не пропустите наш предстоящий стрим, где мы подробно разберем пример реализации Workflow для регистрации пользователя с использованием Temporal!
В этом стриме мы покажем, как можно эффективно управлять сложным процессом регистрации, включающим несколько обязательных этапов:
- Прохождение KYC для подтверждения личности.
- Верификация Email адреса, чтобы убедиться, что пользователь действительно владеет указанным email.
- Выбор тарифного плана, который определяет уровень доступа и функциональности, доступные пользователю.
Мы также рассмотрим, как в рамках Workflow происходит смена статусов и отправка уведомлений пользователю, что делает процесс регистрации максимально автоматизированным и прозрачным.
Может показаться, что все эти процессы можно реализовать и без использования Workflow, но мы покажем, как использование Temporal позволяет не только оптимизировать и упорядочить каждый шаг, но и гарантировать выполнение всех процессов в правильном порядке и с нужной синхронизацией. Это особенно важно для сервисов, требующих высокого уровня безопасности и надежности при регистрации пользователей.
Присоединяйтесь к нам, чтобы узнать, как с помощью Temporal можно повысить эффективность и безопасность регистрационных процессов!
https://youtube.com/live/QhXpI9rVnN8?feature=share
🕘 В 21:00 по МСК проведем очередной стрим для самых маленьких, кому хочется научиться создавать масштабируемый Workflow с Temporal
Не пропустите наш предстоящий стрим, где мы подробно разберем пример реализации Workflow для регистрации пользователя с использованием Temporal!
В этом стриме мы покажем, как можно эффективно управлять сложным процессом регистрации, включающим несколько обязательных этапов:
- Прохождение KYC для подтверждения личности.
- Верификация Email адреса, чтобы убедиться, что пользователь действительно владеет указанным email.
- Выбор тарифного плана, который определяет уровень доступа и функциональности, доступные пользователю.
Мы также рассмотрим, как в рамках Workflow происходит смена статусов и отправка уведомлений пользователю, что делает процесс регистрации максимально автоматизированным и прозрачным.
Может показаться, что все эти процессы можно реализовать и без использования Workflow, но мы покажем, как использование Temporal позволяет не только оптимизировать и упорядочить каждый шаг, но и гарантировать выполнение всех процессов в правильном порядке и с нужной синхронизацией. Это особенно важно для сервисов, требующих высокого уровня безопасности и надежности при регистрации пользователей.
Присоединяйтесь к нам, чтобы узнать, как с помощью Temporal можно повысить эффективность и безопасность регистрационных процессов!
https://youtube.com/live/QhXpI9rVnN8?feature=share
YouTube
Мастер-класс по Temporal на примере регистрации пользователей с KYC и Email верификацией.
В этом стриме мы подробно покажем, как эффективно управлять сложным процессом регистрации пользователя, который включает несколько критических этапов, таких как прохождение KYC для подтверждения личности, верификация email адреса и выбор тарифного плана.…
🔥19 10 3
GitHub
GitHub - php-internal/dload: Helps to download binaries from release assets
Helps to download binaries from release assets. Contribute to php-internal/dload development by creating an account on GitHub.
Привет 👋
Делюсь апдейтами #PackageNews
Последние пару недель хакинга были довольно продуктивными.
Запустил в альфу два новых пакетов и одну мажорную версию:
👩💻 internal/dload — утилита, скачивающая бинари.
Удобно тем, что можно закинуть в композер на событие
Уже загружаю таким образом
К полноценному релизу надо покрыть тестами и навесить пару оптимизирующих фичей.
👩💻 spiral/grpc-client — обвязка для клиента gRPC. Эта ответственность вынесена в отдельный пакет из
Для стабильной версии не хватает тестов.
👩💻 spiral/roadrunner-bridge — новая мажорная версия интеграции Spiral с RoadRunner. Оптимизации, зачистки и новые концепты из будущих версий Spiral.
Для стабильного релиза не хватает релиза Spiral 3.14 и небольшой полировки.
Делюсь апдейтами #PackageNews
Последние пару недель хакинга были довольно продуктивными.
Запустил в альфу два новых пакетов и одну мажорную версию:
Удобно тем, что можно закинуть в композер на событие
post-update
и бинари будут подгружаться вместе с зависимостями."scripts": {
"post-update-cmd": [
"dload get rr --no-interaction",
"dload get temporal --no-interaction"
],
Уже загружаю таким образом
RoadRunner
, Dolt
, Temporal
(CLI и Test) и protoc
с PHP плагином.К полноценному релизу надо покрыть тестами и навесить пару оптимизирующих фичей.
spiral/roadrunner-bridge
. Теперь нет необходимости генерировать замудрёные классы, т.к. всё генерится само на лету (достаточно интерфейса). Больше контроля и поведений благодаря интерцепторам: ротация коннекшенов, гибкие ретраи, таймауты и всё, что угодно.Для стабильной версии не хватает тестов.
Для стабильного релиза не хватает релиза Spiral 3.14 и небольшой полировки.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28
А продуктивно хакать мне помогал Copilot.
Да, да, он бывает полезным!
Вот, например, ситуация: кот наступил на клавиатуру и набрейнфачил прямо среди PHP кода 😼
Как не завалить проверку кота при том, что вы совсем не знаете brainfuck?
Не расстраивайтесь, ведь именно здесь то нейросеть и раскроет свой потенциал. Подождите секундочку, пока llm сгенерит продолжение, и останется только нажать tab, чтобы утвердить своё превосходство😠
Ну, а если Copilot не знает, что предложить, то хотя бы честно (пусть и грубо) об этом скажет.
Да, да, он бывает полезным!
Вот, например, ситуация: кот наступил на клавиатуру и набрейнфачил прямо среди PHP кода 😼
Как не завалить проверку кота при том, что вы совсем не знаете brainfuck?
Не расстраивайтесь, ведь именно здесь то нейросеть и раскроет свой потенциал. Подождите секундочку, пока llm сгенерит продолжение, и останется только нажать tab, чтобы утвердить своё превосходство
Ну, а если Copilot не знает, что предложить, то хотя бы честно (пусть и грубо) об этом скажет.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁40🤮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
Пакет 👩💻 phplrt/phplrt несомненно хорош! Спасибо @SerafimArts за крутой инструмент!
Что бы вы сделали, будь у вас AST для proto message? Я бы, например, только в нем схемы и описывал 😁
Что бы вы сделали, будь у вас AST для proto message? Я бы, например, только в нем схемы и описывал 😁
final class MessageDefNodeTest extends TestCase
{
public function testParse(): void
{
$node = $this->parser->parse(
<<<'PROTO'
syntax = "proto3";
package example;
message Person {
string name = 1;
int32 id = 2;
string email = 3;
}
PROTO,
);
$this->assertSame('proto3', $node->syntax->syntax);
$this->assertSame('example', $node->package->name);
$message = $node->topLevelDefs[0];
$this->assertSame('Person', $message->name);
$this->assertCount(3, $message->fields);
$this->assertSame('name', $message->fields[0]->name);
$this->assertSame('string', $message->fields[0]->type);
$this->assertSame(1, $message->fields[0]->number);
$this->assertSame('id', $message->fields[1]->name);
$this->assertSame('int32', $message->fields[1]->type);
$this->assertSame(2, $message->fields[1]->number);
$this->assertSame('email', $message->fields[2]->name);
$this->assertSame('string', $message->fields[2]->type);
$this->assertSame(3, $message->fields[2]->number);
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - phplrt/phplrt: PHP Language Recognition Tool
PHP Language Recognition Tool. Contribute to phplrt/phplrt development by creating an account on GitHub.
Ну что, за два дня готов пакет для построения AST для protobuf 👩💻 butschster/proto-parser . Уверен всплывут баги и т.д., но тесты есть, кучу edge кейсов покрыл.
Чем он крут? Можно взять proto-файлы, превратить их в дерево PHP-объектов (AST) и далее сгенерировать свои DTO-классы. Например:
Превратим в:
Что умеет:
1. Строить дерево. Понимает весь синтаксис, что я смог найти.
2. Привязывать комментарии к нодам. Например комментарий над полем будет в ноде поля. Комментарий к option будет в его ноде. И т.д.
3. Дока есть.
Что не умеет:
ХЗ что. призываю потестить и улучшить желающих.
Прогнал свой проект с > 100 proto файлов, все спарсил.
P.s. Ах да, забыл сказать, что эти DTO сгененировал мой другой пакет, который уже умеет работать с AST. Сделан на коленке, поэтому еще не выкладывал.
Чем он крут? Можно взять proto-файлы, превратить их в дерево PHP-объектов (AST) и далее сгенерировать свои DTO-классы. Например:
syntax = "proto3";
package examplepb;
message Person {
// Unique identifier for the person.
uint64 id = 1 [(validate.rules).uint64.gt = 999];
// Email address will be used for communication.
string email = 2 [(validate.rules).string.email = true];
// Full name of the person.
string name = 3 [(validate.rules).string = {
pattern: "^[A-Za-z]+( [A-Za-z]+)*$",
max_bytes: 256
}];
// Home location of the person.
Location home = 4 [(validate.rules).message.required = true];
message Location {
double lat = 1 [(validate.rules).double = {gte: -90, lte: 90}];
double lng = 2 [(validate.rules).double = {gte: -180, lte: 180}];
}
}
service ExampleService {
// Create a new person.
rpc CreatePerson(Person) returns (Person) {
option (google.api.http) = {
post: "/v1/persons"
body: "*"
};
}
}
Превратим в:
use Symfony\Component\Validator\Constraints as Assert;
final readonly class Person
{
public function __construct(
/** Unique identifier for the person. */
#[Assert\GreaterThan(value: 999)]
public int $id,
/** Email address will be used for communication. */
#[Assert\Email]
public string $email,
/** Full name of the person. */
#[Assert\Regex(pattern: '^[A-Za-z]+( [A-Za-z]+)*$'), Assert\Length(max: 256, charset: '8bit')]
public string $name,
/** Home location of the person. */
#[Assert\NotNull]
public Location $home,
) {
}
}
use Symfony\Component\Validator\Constraints as Assert;
final readonly class Location
{
public function __construct(
#[Assert\GreaterThanOrEqual(value: -90), Assert\LessThanOrEqual(value: 90)]
public float $lat,
#[Assert\GreaterThanOrEqual(value: -180), Assert\LessThanOrEqual(value: 180)]
public float $lng,
) {
}
}
<?php
declare(strict_types=1);
namespace Internal;
use App\Grpc\Service;
use OpenApi\Annotations as OA;
use Spiral\RoadRunner\GRPC\ContextInterface;
#[Service(name: 'ExampleService', package: 'examplepb')]
interface ExampleServiceInterface
{
/**
* Create a new person.
*/
#[OA\Post(path: '/v1/persons', tags: ['CreatePerson'])]
#[OA\RequestBody(path: '*', tags: ['CreatePerson'])]
public function CreatePerson(ContextInterface $ctx, Person $in): Person;
}
Что умеет:
1. Строить дерево. Понимает весь синтаксис, что я смог найти.
2. Привязывать комментарии к нодам. Например комментарий над полем будет в ноде поля. Комментарий к option будет в его ноде. И т.д.
3. Дока есть.
Что не умеет:
ХЗ что. призываю потестить и улучшить желающих.
Прогнал свой проект с > 100 proto файлов, все спарсил.
P.s. Ах да, забыл сказать, что эти DTO сгененировал мой другой пакет, который уже умеет работать с AST. Сделан на коленке, поэтому еще не выкладывал.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - butschster/proto-parser: Proto parser is a library for parsing Protocol Buffers files into AST
Proto parser is a library for parsing Protocol Buffers files into AST - butschster/proto-parser
3🔥30
Всем привет!
🕘 В 21:00 по МСК проведем очередной стрим для самых маленьких, кому хочется научиться создавать парсер protobuf синтаксиса на PHP с помощью AI
Не пропустите наш предстоящий стрим, где мы подробно разберем В мощный пакет от @SerafimArts - phplrt/phplrt для создания парсеров. Вместе мы напишем парсер для синтаксиса protobuf, который преобразует код в AST (абстрактное синтаксическое дерево). В процессе лайв-кодинга вы узнаете, как использовать AI для упрощения и ускорения разработки, а также получите практические советы по применению AI в программировании. Не пропустите, будет интересно и познавательно!
https://www.youtube.com/watch?v=xyk0sLe8Q9I
🕘 В 21:00 по МСК проведем очередной стрим для самых маленьких, кому хочется научиться создавать парсер protobuf синтаксиса на PHP с помощью AI
Не пропустите наш предстоящий стрим, где мы подробно разберем В мощный пакет от @SerafimArts - phplrt/phplrt для создания парсеров. Вместе мы напишем парсер для синтаксиса protobuf, который преобразует код в AST (абстрактное синтаксическое дерево). В процессе лайв-кодинга вы узнаете, как использовать AI для упрощения и ускорения разработки, а также получите практические советы по применению AI в программировании. Не пропустите, будет интересно и познавательно!
https://www.youtube.com/watch?v=xyk0sLe8Q9I
5 14🔥9