Пакетные новости #PackageNews
👩💻 arthurdick/term-to-svg — тулза для конвертации CLI-сессии в анимированный SVG файл. Может быть полезна разработчикам CLI-пакетов.
Автор — Arthur Dick.
👩💻 terremoth/php-async — запуск сериализованных кложур в отдельных процессах. Здесь интересно то, что кложура передаётся в фоновый скрипт с помощью Shared Memoroy.
👩💻 Infection 0.31.0 теперь по умолчанию не мутирует код, не покрытый тестами. Чуть ранее были и другие оптимизации производительности Infection.
👩💻 PHP-ORT — более осознанный подход к решению проблем PHP в эру AI, чем Symfony AI Platform.
Пока последние говнокодят коннекторы отвратительного качества к апишкам популярных AI-платформ, @krakjoe зашёл с другой стороны и запилил высокопроизводительную библиотеку для тензорных вычислений с SIMD-оптимизациями (AVX2/SSE) и многопоточностью. Опционально поддерживает ONNX Runtime для запуска готовых моделей.
Python модели тренирует, а PHP получает нативные возможности для их использования, оставаясь самым популярным языком веба.
Автор — Arthur Dick.
А вы мутируете свой код?
Пока последние говнокодят коннекторы отвратительного качества к апишкам популярных AI-платформ, @krakjoe зашёл с другой стороны и запилил высокопроизводительную библиотеку для тензорных вычислений с SIMD-оптимизациями (AVX2/SSE) и многопоточностью. Опционально поддерживает ONNX Runtime для запуска готовых моделей.
Python модели тренирует, а PHP получает нативные возможности для их использования, оставаясь самым популярным языком веба.
Фундаментальное решение вместо костылей поверх чужих сервисов
© Claude
Please open Telegram to view this post
VIEW IN TELEGRAM
Встречаем новостной канал по PHP!
Информационное Агентство "Пыхорама"😮
Самые горячие новости и мнения экспертов. А главное — только правда!
⚡️ Дональд Трамп установил новый срок для релиза Yii3
⚡️ Прокуратура проверит всех владельцев сертификатов 1С-Bitrix
⚡️ Laravel признан психологически опасным: у программистов развивается зависимость от магии
* Одобрено НИИ стоматологии.
Информационное Агентство "Пыхорама"
Самые горячие новости и мнения экспертов. А главное — только правда!
⚡️ Дональд Трамп установил новый срок для релиза Yii3
⚡️ Прокуратура проверит всех владельцев сертификатов 1С-Bitrix
⚡️ Laravel признан психологически опасным: у программистов развивается зависимость от магии
* Одобрено НИИ стоматологии.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25🔥14 7💊4
Forwarded from Пых.конф’25 — главное PHP-событие этого года!
PHP сегодня в самом расцвете сил:
• 20 человек в ядре, финансируемых PHP Foundation.
• Релизы каждый год с десятками новых фичей.
• Async, типизация, атрибуты, выразительный синтаксис.
• Обслуживает миллиарды пользователей по всему миру.
Оставалась только одна проблема — русскоязычным инженерам не хватало пространства для обсуждения этим тем. Мы её решили.
Пых.конф — абсолютно новая конференция с актуальной программой, доступными билетами и насыщенным offstage-движем.
• Асинхронность и протоколы для неблокирующего I/O.
• RAG в PHP-бэкендах и круглый стол «Кодим с ИИ».
• Архитектурные каноны: DDD, модульность, идемпотентность.
• Производительность: от памяти и массивов до воркеров и CI.
• Yii3, Doctrine, Swoole, WordPress и Битрикс — экосистема во всей красе.
• Не только PHP: YDB, Postgres, Docker, OpenAPI.
• Fail-митап и Открытый микрофон для всех, кто захочет высказаться.
• Игры и конкурсы на стендах партнёров — компаний, преданных PHP.
Мы сделали то, чего сами ждали много лет. Не хватает только тебя.
Забрать билет | Ничего не пропустить | Собрать свою программу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19 14🤯1
GitHub
GitHub - phpstreamserver/phpstreamserver: PHPStreamServer is a high-performance PHP application server and process manager written…
PHPStreamServer is a high-performance PHP application server and process manager written in PHP. - phpstreamserver/phpstreamserver
#ТоксикСреда
Помните такой журнальчик "В мире PHP"? В выпуске №2 я в шутку писал следующее:
Я думал, что он просто умрёт тихой смертью, особенно на фоне втаскивания FrankenPHP в кор... но нет! Пару дней назад вышел PHPStreamServer 0.7.0, а сегодня он уже собирает овер дохера лайков на Reddit.
Автор пишет:
Ну, что тут сказать... удачи и земля пухом! Впереди чувака ждёт самое интересное, т.к. сейчас в бандле IO операции пока что блокирующие.
Как раз сегодня смотрел на Symfony HTTP Kernel и прифигел с этого лютого говнокода.
Я, значит, что-то там пытаюсь улучшить в бенчах TechEmpower: смотрю на говно в официальных бандлах и костыли в неофициальных, и везде то лишняя конвертация в PSR-7, то просто лишний код, то какая-то херня с рефлексией, то ещё какие-то навороты в цикле запросов.
И всё это из-за того, что весь HTTP Foundation написан через жопу. Вызовы
Если и любить фрейморк только за доку, то есть и более достойные альтернативы.
Не знаю, как у вас, но у меня с каждым заходом в код симфы или RFC от симфонистов укрепляется мнение, что FrankenPHP активно зафорсился разработчиками Symfony только для того, чтобы их говнокод смог нормально работать в современном мире. И чтобы никто не сказал, что франкен на самом деле – говно, они специально не рефакторят код фреймворка, замедляя этим другие рантаймы.
Возможно, это не умышлено и симфонисты просто попали в замкнутый круг костылей:
- "сейчас сделаем костыль, а потом сделаем нормально";
- это "потом" не наступает;
- предыдущий костыль подпирают другим костылём и всё начинается сначала.
Но как-то не складно.
Помните такой журнальчик "В мире PHP"? В выпуске №2 я в шутку писал следующее:
RoadRunner скоро будет не нужен, т.к. будет переписан с этого медленного Golang на PHP. Наконец то! Встречаем PHPStreamServer. Здесь пока только HTTP плагин, но, надеюсь, всё будет.
Я думал, что он просто умрёт тихой смертью, особенно на фоне втаскивания FrankenPHP в кор... но нет! Пару дней назад вышел PHPStreamServer 0.7.0, а сегодня он уже собирает овер дохера лайков на Reddit.
Автор пишет:
Для меня сейчас это попытка создать полностью (на 100%) асинхронное приложение на Symfony... Вероятно, можно было бы интегрировать и Laravel, но я так не думаю.
Ну, что тут сказать... удачи и земля пухом! Впереди чувака ждёт самое интересное, т.к. сейчас в бандле IO операции пока что блокирующие.
Как раз сегодня смотрел на Symfony HTTP Kernel и прифигел с этого лютого говнокода.
Я, значит, что-то там пытаюсь улучшить в бенчах TechEmpower: смотрю на говно в официальных бандлах и костыли в неофициальных, и везде то лишняя конвертация в PSR-7, то просто лишний код, то какая-то херня с рефлексией, то ещё какие-то навороты в цикле запросов.
И всё это из-за того, что весь HTTP Foundation написан через жопу. Вызовы
echo
захардкожены в приватных методах, всё негибко и максимально всрато.Главное в симфони пакетах не смотреть код! Если читать доку исключительно, то симфа отличная.
Кирилл Несмеянов
Если и любить фрейморк только за доку, то есть и более достойные альтернативы.
Не знаю, как у вас, но у меня с каждым заходом в код симфы или RFC от симфонистов укрепляется мнение, что FrankenPHP активно зафорсился разработчиками Symfony только для того, чтобы их говнокод смог нормально работать в современном мире. И чтобы никто не сказал, что франкен на самом деле – говно, они специально не рефакторят код фреймворка, замедляя этим другие рантаймы.
Возможно, это не умышлено и симфонисты просто попали в замкнутый круг костылей:
- "сейчас сделаем костыль, а потом сделаем нормально";
- это "потом" не наступает;
- предыдущий костыль подпирают другим костылём и всё начинается сначала.
Но как-то не складно.
1 27🔥7
Сегодня бороздил просторы LinkedIn и наткнулся на вопрос:
Автор радуется, что код работает без ошибок и даже «выглядит нормально», но на там есть ловушка. (Кстати найдете ли вы ее?. Можете в коментах рассказать)
> ❗️ Проблема в том, что после ->get() мы уже получаем Collection и фильтруем данные в памяти (Collection::where()), а не в базе (Builder::where()).
На маленьком датасете всё выглядит красиво, а на проде с тысячами пользователей — вываливается лишняя нагрузка, лишнее потребление памяти и потеря ожидаемого поведения.
И вот что интересно.
С одной стороны, охуенный «тест на внимательность». Готов ли ты за джунами такую хуйню искать?
С другой — не демонстрация ли это проблем в Eloquent и Collection?
Фреймворк гордится тем, что «очень простой и интуитивный», но именно эта простота рождает ситуации, где:
- джун легко спутает
- визуально одинаковые методы (
ошибка не выдаст exception, а тихо превратится в баг производительности.
Вопрос к вам: А для вас #Laravel все еще говно?
Can you spot the issue in this snippet?
$users = User::where('status', 'active')->get();
if ($users->count() > 0) {
$users = $users->where('role', 'admin');
}
return view('users.index', compact('users'));
The code runs without errors, and the output even looks fine.
But there’s a hidden conceptual problem here that could cause serious trouble in real-world projects.
Question:
Where exactly is the problem, why is this approach risky, and what would be the correct way to fix it?
Автор радуется, что код работает без ошибок и даже «выглядит нормально», но на там есть ловушка. (Кстати найдете ли вы ее?. Можете в коментах рассказать)
На маленьком датасете всё выглядит красиво, а на проде с тысячами пользователей — вываливается лишняя нагрузка, лишнее потребление памяти и потеря ожидаемого поведения.
И вот что интересно.
С одной стороны, охуенный «тест на внимательность». Готов ли ты за джунами такую хуйню искать?
С другой — не демонстрация ли это проблем в Eloquent и Collection?
Фреймворк гордится тем, что «очень простой и интуитивный», но именно эта простота рождает ситуации, где:
- джун легко спутает
QueryBuilder
и Collection
- визуально одинаковые методы (
where
) на самом деле делают принципиально разноеошибка не выдаст exception, а тихо превратится в баг производительности.
Вопрос к вам: А для вас #Laravel все еще говно?
2 23😁18 5🤔4💩3
#ТоксикСреда, фартаны.
Всех нас уже изряднозаебдостали отовсюду вылезающие конструкторы MCP-серверов на PHP.
Предлагаю быстро пройтись по каждому MCP SDK, который приходит на ум.
1. symfony/mcp-bundle — бридж на symfony/mcp-sdk (бывший php-llm/mcp-sdk).
Здесь тулзы описываются дедовскими методами: типа JSON-schema через PHP-массивы. Кто-то скажет "низкоуровнево", я скажу "всрато". Не ведитесь на бренд, там всё из говна и палок.
Кстати, если вы всё ещё верите в Symfony и хотите как-то исправить этот AI Platform, то записывайтесь на хакатон, а то они уже совсем отчаялись.
2. logiscape/mcp-sdk-php — использовался на практике в CTX. HTTP Transport нормальный (портирован с Python SDK), но роутер — говно: RegisterHandler руками, угадываешь параметры, никаких мидлварей. Пришлось много переписывать. Архитектура не хорошая и не плохая (никакая). Такое бывает, когда бездумно переписываешь с Python.
3. pronskiy/mcp — от Романа Пронского.
По доке выглядит удобно и минималистично, но не для сложных задач.
Рома хайпнул, разработка заморожена. Сделано поверх
4. laravel/mcp — кажется, Laravel подсмотрели решение у Ромы, но что-то пошло не так и у них получилась хуйня неюзабельная.
Схемы создаются через громоздкий билдер, где необходимо руками описывать каждое поле. LLM возвращает массив, и дальше сам разбирайся: никаких DTO, никакой валидации.
Подходит только для Hello World проектов. Можно сразу скипать.
5. php-mcp/server — MCP из Нигерии.
Выглядит прилично: схемы генерируются из аргументов методов с атрибутами, есть invocable классы. Но дьявол в деталях: DTO превращает в "type object", собственный JSON-schema валидатор строже стандарта, handler фильтрует аргументы и теряет данные.
Чтобы это заработало нормально, пришлось экстендить половину internal классов. Интеграция на пороховой бочке 👇
6. spiral/mcp-server — обвязка над
Решены ключевые проблемы базовой и других библиотек из подборки: вместо громоздких функций с десятками аргументов или всратых массивов используются DTO с атрибутами. По ним обнаруживаются тулзы и из них же генерируется JSON-схема через spiral/json-schema-generator. Входящие данные маппятся через Valinor с валидацией.
Подключается одним bootloader'ом, легко настраивается и интегрируется с любым сервисом.
Общая проблема многих библиотек в том, что ими сами же авторы и не пользуются: делают на волне хайпа простейший MVP, а потом рассказывают, что можно решить любые задачи.
Берёшь такую херню для интеграции с Task manager, где надо создавать задачи с подзадачами (~10 полей с вложенными DTO и валидацией), понимаешь что нужно что-то другое. Это не тот кейс из доки типа "тут пара аргументов
В общем, спасибо всем пацанам, которые тащат нормальные пакеты, и тем, кто им помогает ❤️
Всех нас уже изрядно
Предлагаю быстро пройтись по каждому MCP SDK, который приходит на ум.
1. symfony/mcp-bundle — бридж на symfony/mcp-sdk (бывший php-llm/mcp-sdk).
Здесь тулзы описываются дедовскими методами: типа JSON-schema через PHP-массивы. Кто-то скажет "низкоуровнево", я скажу "всрато". Не ведитесь на бренд, там всё из говна и палок.
Кстати, если вы всё ещё верите в Symfony и хотите как-то исправить этот AI Platform, то записывайтесь на хакатон, а то они уже совсем отчаялись.
2. logiscape/mcp-sdk-php — использовался на практике в CTX. HTTP Transport нормальный (портирован с Python SDK), но роутер — говно: RegisterHandler руками, угадываешь параметры, никаких мидлварей. Пришлось много переписывать. Архитектура не хорошая и не плохая (никакая). Такое бывает, когда бездумно переписываешь с Python.
3. pronskiy/mcp — от Романа Пронского.
По доке выглядит удобно и минималистично, но не для сложных задач.
Рома хайпнул, разработка заморожена. Сделано поверх
logiscape/mcp-sdk-php
👆4. laravel/mcp — кажется, Laravel подсмотрели решение у Ромы, но что-то пошло не так и у них получилась хуйня неюзабельная.
Схемы создаются через громоздкий билдер, где необходимо руками описывать каждое поле. LLM возвращает массив, и дальше сам разбирайся: никаких DTO, никакой валидации.
Подходит только для Hello World проектов. Можно сразу скипать.
5. php-mcp/server — MCP из Нигерии.
Выглядит прилично: схемы генерируются из аргументов методов с атрибутами, есть invocable классы. Но дьявол в деталях: DTO превращает в "type object", собственный JSON-schema валидатор строже стандарта, handler фильтрует аргументы и теряет данные.
Чтобы это заработало нормально, пришлось экстендить половину internal классов. Интеграция на пороховой бочке 👇
6. spiral/mcp-server — обвязка над
php-mcp/server
от инженера Spiral Scout 😎, сделанная с умом .Решены ключевые проблемы базовой и других библиотек из подборки: вместо громоздких функций с десятками аргументов или всратых массивов используются DTO с атрибутами. По ним обнаруживаются тулзы и из них же генерируется JSON-схема через spiral/json-schema-generator. Входящие данные маппятся через Valinor с валидацией.
Подключается одним bootloader'ом, легко настраивается и интегрируется с любым сервисом.
Общая проблема многих библиотек в том, что ими сами же авторы и не пользуются: делают на волне хайпа простейший MVP, а потом рассказывают, что можно решить любые задачи.
Берёшь такую херню для интеграции с Task manager, где надо создавать задачи с подзадачами (~10 полей с вложенными DTO и валидацией), понимаешь что нужно что-то другое. Это не тот кейс из доки типа "тут пара аргументов
$a
и $b
, оба строки, а JSON-схему ебани массивом". И вот уже сам сидишь и переписываешь пол пакета.В общем, спасибо всем пацанам, которые тащат нормальные пакеты, и тем, кто им помогает ❤️
🔥33 13😁6
Жетончик н-н-надо? Как в баталфилд 3!
В прошлый раз я организовывал сбор на именованные жетоны на PHPRussia 2024.
Жетонами я остался доволен, поэтому давайте повторим, но уже для ПЫХ.КОНФ'25.
Условия простые:
- Вот копилка: https://www.tbank.ru/cf/1UjzHHet5aH (знаю, описание всратое, спасибо ТБанку)
- Закидывайте туда сумму от 500р с указанием никнейма в комментарии.
- Этот никнейм будет нанесён на обратную сторону жетона. Если укажете с собачкой, то и нанесено будет с собачкой
- Если что-то не так (забыли комментарий или накосячили в написании), то всё решим в чате.
- Сбор продлится минимум неделю.
- Жетоны будут уникальными и получить их можно будет только на Пыхконфе (включая пре/афтепати).
- Цена на жетоны немного выше себестоимости. Разница пойдёт на покрытие стоковых неименованных жетонов (необработанных односторонних).
Спасибо всем, кто в прошлый раз скинулся сверх стоимости жетонов — это помогло покрыть часть затрат на общий мерч. В тот раз сбор продлился всего сутки-двое и многие говорили, что увидели, когда уже поздно, в этот раз времени хватит.
На фотке жетоны с PHPRussia: сверху две стороны именованных с ошкуренной поверхностью, снизу два варианта стоковых. Пыхконфовые будут отличаться.
В прошлый раз я организовывал сбор на именованные жетоны на PHPRussia 2024.
Жетонами я остался доволен, поэтому давайте повторим, но уже для ПЫХ.КОНФ'25.
Условия простые:
- Вот копилка: https://www.tbank.ru/cf/1UjzHHet5aH (знаю, описание всратое, спасибо ТБанку)
- Закидывайте туда сумму от 500р с указанием никнейма в комментарии.
- Этот никнейм будет нанесён на обратную сторону жетона. Если укажете с собачкой, то и нанесено будет с собачкой
@nickname
, если без собачки — то без собачки nickname
.- Если что-то не так (забыли комментарий или накосячили в написании), то всё решим в чате.
- Сбор продлится минимум неделю.
- Жетоны будут уникальными и получить их можно будет только на Пыхконфе (включая пре/афтепати).
- Цена на жетоны немного выше себестоимости. Разница пойдёт на покрытие стоковых неименованных жетонов (необработанных односторонних).
Спасибо всем, кто в прошлый раз скинулся сверх стоимости жетонов — это помогло покрыть часть затрат на общий мерч. В тот раз сбор продлился всего сутки-двое и многие говорили, что увидели, когда уже поздно, в этот раз времени хватит.
На фотке жетоны с PHPRussia: сверху две стороны именованных с ошкуренной поверхностью, снизу два варианта стоковых. Пыхконфовые будут отличаться.
3🔥14💊2
Дизайн жетонов готов.
1. Слева пример именованного жетона.
Напоминаю, что ещё есть пара дней, чтобы вкинуться в именованные жетоны на Пых.конф'25.
2. В середине: стоковый жетон.
Такой жетон можно будет заполучить на конференции в оффлайне случайным образом или при выполнении определённых действий :)
В общем, пока не придумал, как, но количество таких жетонов ограничено.
3. Справа: золотой жетон Beer PHP.
Как вы знаете, в PHP сообществе есть пивные движухи:
- Beer PHP, когда пехапешники выбираются в бар, пьют пивои угнетают ларавельщиков. Иногда даже с докладами.
Подробнее можно почитать тут.
- #RandomBeer — почти тоже самое, но в онлайне.
🍺 Если вы, братья по пиву, собираетесь на пыхконф, вы можете оформить себе и такой жетончик. Я его не планировал именным, но если очень хочется, то можно.
Пишите в переводе "на пиво" или "на пиво, nickname", если надо подписать. Цвет никнейма будет белым, как пивная пенка.
1. Слева пример именованного жетона.
Напоминаю, что ещё есть пара дней, чтобы вкинуться в именованные жетоны на Пых.конф'25.
2. В середине: стоковый жетон.
Такой жетон можно будет заполучить на конференции в оффлайне случайным образом или при выполнении определённых действий :)
В общем, пока не придумал, как, но количество таких жетонов ограничено.
3. Справа: золотой жетон Beer PHP.
Как вы знаете, в PHP сообществе есть пивные движухи:
- Beer PHP, когда пехапешники выбираются в бар, пьют пиво
Подробнее можно почитать тут.
- #RandomBeer — почти тоже самое, но в онлайне.
🍺 Если вы, братья по пиву, собираетесь на пыхконф, вы можете оформить себе и такой жетончик. Я его не планировал именным, но если очень хочется, то можно.
Пишите в переводе "на пиво" или "на пиво, nickname", если надо подписать. Цвет никнейма будет белым, как пивная пенка.
🔥8 7🤮2 2
PHP Fart Time
Дизайн жетонов готов. 1. Слева пример именованного жетона. Напоминаю, что ещё есть пара дней, чтобы вкинуться в именованные жетоны на Пых.конф'25. 2. В середине: стоковый жетон. Такой жетон можно будет заполучить на конференции в оффлайне случайным образом…
Формирую заказ и через пару часов завершу сбор.
Забавно, что среди стандартных вариантов от фартанов поступили заказы и на кастомные штуки: кошечки, птички для детей, Сова и даже Винни Пух с Пятачком :D
Раз уж такая пьянка, решил и сам вкинуться на майнкрафтовый жетон сыну :D
Забавно, что среди стандартных вариантов от фартанов поступили заказы и на кастомные штуки: кошечки, птички для детей, Сова и даже Винни Пух с Пятачком :D
Раз уж такая пьянка, решил и сам вкинуться на майнкрафтовый жетон сыну :D
🔥19😁3💊3
#PackageNews и горячие релизы 🔥
1 сентября. Разработчикам Yii пора в школу.
Но не расстраивайтесь, что релиз придётся отложить ещё на год или до ближайших каникул, ведь шаблон
Он сильно изменился с тех пор, как я его трогал последний раз, поэтому тоже не терпится посмотреть. Может даже удастся Павла вытащить на первый взгляд оналйн.
Ну а где Yii — там и Active Record! Поэтому встречайте ещё один горячий пирожок:
Как теперь это назвать? Data Record? Active Mapper?
1 сентября. Разработчикам Yii пора в школу.
Но не расстраивайтесь, что релиз придётся отложить ещё на год или до ближайших каникул, ведь шаблон
yiisoft/app
вышел в версии 1.0.0.Он сильно изменился с тех пор, как я его трогал последний раз, поэтому тоже не терпится посмотреть. Может даже удастся Павла вытащить на первый взгляд оналйн.
Ну а где Yii — там и Active Record! Поэтому встречайте ещё один горячий пирожок:
cycle/active-record
и тоже в стабильной версии 1.0.0. Сделано на базе Cycle ORM и, соответственно, полностью с ним совместимо.Как теперь это назвать? Data Record? Active Mapper?
Please open Telegram to view this post
VIEW IN TELEGRAM
😁23🔥4🤔4 3
PHP Fart Time
Формирую заказ и через пару часов завершу сбор. Забавно, что среди стандартных вариантов от фартанов поступили заказы и на кастомные штуки: кошечки, птички для детей, Сова и даже Винни Пух с Пятачком :D Раз уж такая пьянка, решил и сам вкинуться на майнкрафтовый…
Ох и накидали же в последний момент.
Как всегда за секунду до дедлайна. А потом ещё и после дедлайна.
В общем, жетонов майнкрафта поприбавилось и сбор уже точно окончательно закрыт.
Пришло время поговорить о следующей конфе 😅
Через пару недель после Пых.Конфа, 2 и 3 октября, пройдёт ещё одна конфа — «Стачка».
Тем дофига: Telegram-боты, AI-ревью, применение ML, отладка в разных окружениях, DDD, CQRS, производительность, WordPress, RabbitMQ и PHP 8.5.
Нет, жетоны я туда организовывать не буду, т.к. сам не смогу там побывать, но если вы сможете, то обязательно побывайте!
Как всегда за секунду до дедлайна. А потом ещё и после дедлайна.
В общем, жетонов майнкрафта поприбавилось и сбор уже точно окончательно закрыт.
Пришло время поговорить о следующей конфе 😅
Через пару недель после Пых.Конфа, 2 и 3 октября, пройдёт ещё одна конфа — «Стачка».
Тем дофига: Telegram-боты, AI-ревью, применение ML, отладка в разных окружениях, DDD, CQRS, производительность, WordPress, RabbitMQ и PHP 8.5.
Нет, жетоны я туда организовывать не буду, т.к. сам не смогу там побывать, но если вы сможете, то обязательно побывайте!
🔥9 6
PHP Fart Time
#PackageNews и горячие релизы 🔥 1 сентября. Разработчикам Yii пора в школу. Но не расстраивайтесь, что релиз придётся отложить ещё на год или до ближайших каникул, ведь шаблон yiisoft/app вышел в версии 1.0.0. Он сильно изменился с тех пор, как я его трогал…
Без лишних слов, анонс: сегодня вечером опробуем Yii3 App 1.0.0.
https://www.youtube.com/watch?v=ksjGwhvVcN8
https://www.youtube.com/watch?v=ksjGwhvVcN8
YouTube
Обзор релиза Yii3 App 1.0.0
Щупаем венец 5-ти летней эволюции вместе с вами.
Наш канал: https://yangx.top/php_fart
👍 Не забудьте подписаться и поставить лайк, если видео вам понравилось. Оставляйте комментарии и делитесь видео, чтобы поддержать наш канал!
Наш канал: https://yangx.top/php_fart
👍 Не забудьте подписаться и поставить лайк, если видео вам понравилось. Оставляйте комментарии и делитесь видео, чтобы поддержать наш канал!
🔥28 12 2💩1
PHP Fart Time
Без лишних слов, анонс: сегодня вечером опробуем Yii3 App 1.0.0. https://www.youtube.com/watch?v=ksjGwhvVcN8
Было время переспать с мыслями по Yii3 App.
Хвалебных слов не будет, ибо #токсикСреда. Но ребята и так знают, что они молодцы🫡
Мой технический разбор из двух частей в дополнение к стриму:
🖼️ Массивы уже не айс. Всё-таки времена PHP 7.4 позади.
Обратите внимание на то, что параметры (params) очень хорошо ложатся на DTOшки. DTOшки тоже хорошо сериализуются и десериализуются, кладутся куда угодно, версионируются по semver.
Бонусы очевидны: типизация, автокомплит, не надо знать "путь" до нужного конфига во всеобщем
🖼️ Про кашу параметров и структуру: мы вынесли тезис, что в куче параметров чёрт ногу сломит. Хрен найдёшь то, что ищешь.
Однако, я знаю как этого избежать. Всё дело в структуре проекта!
Предлагаемая структура "как в Laravel" проклята. Группировка по типу классов, мол "тут контроллеры, тут хендлеры, тут ещё что-то", — тупиковый путь.
Вот если бы сразу сгруппировать по фичам или модулям, то что получится? Можно раскидать и перегруппировать не только контроллеры/сервисы/etc , но и параметры с конфигами DI.
Ребята, поработайте над структурой!
🖼️ Нельзя получить Request из контейнера: надо сначала получить RequestProvider, затем дёрнуть на нём метод get.
Оно понятно, почему так:
- Мало кто знает, но PSR контейнер по спеке должен быть идемпотентным: на один и тот же id возвращать всегда один и тот же результат. Там не предусмотрены non-singleton биндинги.
- А раз в контейнере всё синглтон, то реквест туда не положишь из-за его динамической натуры: в long running реквест будет каждый раз другой, также он может измениться в PSR мидлварях.
Но не понятно, почему платить за это должны разработчики. Как по мне, плата высокая.
Решить, кстати, эту проблему можно кучей разных доступных способов. Решайте! :)
🖼️ Чтобы уметь работать в неумираемом режиме, Yii опирается на два столпа: дедовские ресеттеры и иммутабельность. Ресеттеры полагаются на события PSR EventDispatcher.
Я доку не читал (а кто её вообще читает?), но надеюсь, что диспетчер событий не навязывается для использования в юзер-ленде.
И если ресеттеры — удел фреймворков, которые не смогли в архитектуру, и для исключительных случаев, то иммутабельность — очень хорошо. Я бы рекомендовал использовать больше иммутабельности и одноразовых объектов, чтобы стейты юзеров не текли, и им не приходилось писать ресеттеры, которые они всё равно писать не будут.
То, что мы видели на стриме мне не понравилось: стейт контроллера протекает. Да, я бы сам не писал такой код, но мы же говорим про фреймворк общего назначения уровня "домохозяйка+". Ну и напомню: если висит ружьё, то оно обязательно выстрелит.
Хвалебных слов не будет, ибо #токсикСреда. Но ребята и так знают, что они молодцы
Мой технический разбор из двух частей в дополнение к стриму:
Обратите внимание на то, что параметры (params) очень хорошо ложатся на DTOшки. DTOшки тоже хорошо сериализуются и десериализуются, кладутся куда угодно, версионируются по semver.
Бонусы очевидны: типизация, автокомплит, не надо знать "путь" до нужного конфига во всеобщем
$params
. В DTO также можно добавлять атрибуты для настройки мерж-планов или даже авторезолвинга альясов.# Было
/**
* @var array $params
*/
Foo::class => static function() use ($params): Foo {
return new Foo($params['foo/bar']['option']);
}
# Стало
Foo::class => static function(FooConfig $config): Foo {
return new Foo($config->option);
}
Однако, я знаю как этого избежать. Всё дело в структуре проекта!
Предлагаемая структура "как в Laravel" проклята. Группировка по типу классов, мол "тут контроллеры, тут хендлеры, тут ещё что-то", — тупиковый путь.
Вот если бы сразу сгруппировать по фичам или модулям, то что получится? Можно раскидать и перегруппировать не только контроллеры/сервисы/etc , но и параметры с конфигами DI.
Ребята, поработайте над структурой!
Оно понятно, почему так:
- Мало кто знает, но PSR контейнер по спеке должен быть идемпотентным: на один и тот же id возвращать всегда один и тот же результат. Там не предусмотрены non-singleton биндинги.
- А раз в контейнере всё синглтон, то реквест туда не положишь из-за его динамической натуры: в long running реквест будет каждый раз другой, также он может измениться в PSR мидлварях.
Но не понятно, почему платить за это должны разработчики. Как по мне, плата высокая.
Решить, кстати, эту проблему можно кучей разных доступных способов. Решайте! :)
Я доку не читал (а кто её вообще читает?), но надеюсь, что диспетчер событий не навязывается для использования в юзер-ленде.
И если ресеттеры — удел фреймворков, которые не смогли в архитектуру, и для исключительных случаев, то иммутабельность — очень хорошо. Я бы рекомендовал использовать больше иммутабельности и одноразовых объектов, чтобы стейты юзеров не текли, и им не приходилось писать ресеттеры, которые они всё равно писать не будут.
То, что мы видели на стриме мне не понравилось: стейт контроллера протекает. Да, я бы сам не писал такой код, но мы же говорим про фреймворк общего назначения уровня "домохозяйка+". Ну и напомню: если висит ружьё, то оно обязательно выстрелит.
Please open Telegram to view this post
VIEW IN TELEGRAM
Саша понял, про что я: в закрытом чате мы уже обсудили, что было бы неплохо иметь больше описания и ссылок в коде. Паша, конечно, молодец, что быстро разобрался с параметрами роута, однако мы уже живём в мире, где надо делать супер быстро, где LLM смотрит на примеры кода, которые под носом (это не только вайбкоддинга касается, но и автокомплита тоже), где смузи-разработчики не будут углубляться (для этих надо ещё и эмоджи 📖 добавлять).
Вывод мой такой:
Сейчас Yii — конструктор с маленькими деталями. Чтобы сделать что-то большое, придётся много сражаться в рукопашную. И я уже "стар для этого дерьма".
Также я не люблю фреймворки, которые мешают или ограничивают. Yii3 не ограничивает, однако если мне для того, чтобы получить $request, надо сначала получить RequestProvider, а чтобы отправить строчку, нужно создать Response и стрим для него, то произойдёт что-то одно:
- либо я пойду велосипедить и делать базовый контроллер, который будет сахарным, но в дальнейшем код моих контроллеров будет без лапши.
- либо с возгласом "доколе можно!" возьму другой фреймворк.
У Yii 3 есть чаты для сообщества (открытые и закрытые по подписке), но почему бы не обсудить что-то прямо здесь?
Please open Telegram to view this post
VIEW IN TELEGRAM
boosty.to
Yiisoft - Yii Community
Yii is a highly efficient PHP framework based on component architecture, intended for development of large-scale web applications.
Starting from level "Sponsor-500", subscribers get access to private Telegram chat with framework developers themselves,…
Starting from level "Sponsor-500", subscribers get access to private Telegram chat with framework developers themselves,…
🔥11😁1
Сегодня наткнулся на очередной пост в LinkedIn о том, что в Laravel добавили кнопку "Скопировать Markdown" специально для AI, и кто-то пошел дальше и запилил пакет с кнопками Ask ChatGPT / Ask Claude прямо на странице ошибки.
И я призадумался 🤔 ибо #токсикСреда.
Если разработчику нужно обязательно спросить у AI, чтобы понять, что за ошибка в его же коде — это выглядит пугающе.
Мы же таким образом выращиваем не программистов, а AI-операторов, которые без LLM даже стек-трейс не смогут прочитать и понять, что же они тамнаговнокодили/ вайбкодили.
Ну а ты собираешься спрашивать у AI про ошибки в твоем жеговно коде? Не боишься получить дозу кибер-унижения? Поделитесь кейсами которые было сложно дебажить и где бы помог AI 👇
И я призадумался 🤔 ибо #токсикСреда.
Если разработчику нужно обязательно спросить у AI, чтобы понять, что за ошибка в его же коде — это выглядит пугающе.
Мы же таким образом выращиваем не программистов, а AI-операторов, которые без LLM даже стек-трейс не смогут прочитать и понять, что же они там
Ну а ты собираешься спрашивать у AI про ошибки в твоем же
😁24 12 5