@viktorprogger
@evgwed
@tashimotor
Выиграли билеты на стачку. Если вам не нужны эти билеты, напишите мне я передам их другим!
@evgwed
@tashimotor
Выиграли билеты на стачку. Если вам не нужны эти билеты, напишите мне я передам их другим!
❤1🎉1
Forwarded from Alexander Vorobyev
Нужен совет/рекомендации/доводы/мысли.
Ситуация следующая: в модуль добавил больше расширяемости. И все расширения производятся через объект конфигурации. Соответственно класс конфигурации растет. Там нет сложной логики, хотя в некоторых случаях он выступает как фабрика (значения по умолчанию). В основном это конечно же просто геттеры и сеттеры.
Тем не менее scrutinizer-ci . Присвоил классу значек "F" и отображает его красным. С пояснением
Total Complexity 60 , Total Lines 827 .
Как подходить в таких случаях? Действительно ли стоит следовать его рекомендациям в таких случаях?
Подумываю разбить на трейты (по логическим группам). Сначала была мысль создавать некие классы для подобных групп - своего рода отдельные конфиги и затем их передавать в основной конфиг. Но это как то, на мой взгляд, в итоге усложнит читабельность файла конфигурации.
Речь идет вот об этом классе https://github.com/Voral/vs-version-incrementor/blob/master/src/Config.php
#semver #changelog
Ситуация следующая: в модуль добавил больше расширяемости. И все расширения производятся через объект конфигурации. Соответственно класс конфигурации растет. Там нет сложной логики, хотя в некоторых случаях он выступает как фабрика (значения по умолчанию). В основном это конечно же просто геттеры и сеттеры.
Тем не менее scrutinizer-ci . Присвоил классу значек "F" и отображает его красным. С пояснением
Total Complexity 60 , Total Lines 827 .
Как подходить в таких случаях? Действительно ли стоит следовать его рекомендациям в таких случаях?
Подумываю разбить на трейты (по логическим группам). Сначала была мысль создавать некие классы для подобных групп - своего рода отдельные конфиги и затем их передавать в основной конфиг. Но это как то, на мой взгляд, в итоге усложнит читабельность файла конфигурации.
Речь идет вот об этом классе https://github.com/Voral/vs-version-incrementor/blob/master/src/Config.php
#semver #changelog
GitHub
vs-version-incrementor/src/Config.php at master · Voral/vs-version-incrementor
A tool for semantic versioning and changelog generation in Composer projects based on Git commits. - Voral/vs-version-incrementor
Добавить поддержку выражений
В Symfony есть Expression Language и его поддержка в валидаторе.
Было бы круто иметь подобный валидатор для Yii3.
Нужно написать бридж к Expression Language, довольно интересная задачка!
п.с. я умел раньше писать тз 😁
👩💻 https://github.com/yiisoft/validator/issues/518
#yii #yii3 #validator
В Symfony есть Expression Language и его поддержка в валидаторе.
Было бы круто иметь подобный валидатор для Yii3.
Нужно написать бридж к Expression Language, довольно интересная задачка!
п.с. я умел раньше писать тз 😁
#yii #yii3 #validator
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Add support for expressions · Issue #518 · yiisoft/validator
A suggestion from @xepozz. prop1 prop2 prop3 Expression(this.prop1 > this.prop2 || this.prop1 in Constants::VALUES) prop1
👍6🔥4👎1
Forwarded from Alexander Makarov
Вернуть метод в ExpressionBuilderInterface в yiisoft/db
В пакете yiisoft/db (это независимсый от фреймворка DBAL от команды Yii нужно добавить отсутствующий метод в интерфейс. Я уже начал это делать, но другие дела скушали всё доступное время 😂
Итак:
1. https://github.com/yiisoft/db/pull/946
2. Надо в остальных пакетах сделать изменения под интерфейс + поправить по комментам.
#yii #yii3
В пакете yiisoft/db (это независимсый от фреймворка DBAL от команды Yii нужно добавить отсутствующий метод в интерфейс. Я уже начал это делать, но другие дела скушали всё доступное время 😂
Итак:
1. https://github.com/yiisoft/db/pull/946
2. Надо в остальных пакетах сделать изменения под интерфейс + поправить по комментам.
#yii #yii3
GitHub
GitHub - yiisoft/db: Yii Database Library
Yii Database Library. Contribute to yiisoft/db development by creating an account on GitHub.
👍6👎1🔥1
Forwarded from msavin
Export-ignore-check
В целом все крупные библиотеки следят за размером своего дистрибутива, чтобы конечный пользователь не скачивал вместе с архивом либы ненужные файлы, вроде документации, тестов, файлов конфигурации dev зависимостей
Но у меня лично каждый раз боль глазами сравнивать структуру файлов и содержимое .gitattributes (export-ignore директива), тем более часто случается рассинхрон, в том числе и у крупных библиотек (тот же phpstorm-stubs)
В связи с этим написал либу, которая призвана проверить, что там за архив получается из вашей библиотеки (через
Я прогнал топ тысячу пакетов с packagist, 470 из них могут быть оптимизированы, так шо возможно и вам пригодится
В целом все крупные библиотеки следят за размером своего дистрибутива, чтобы конечный пользователь не скачивал вместе с архивом либы ненужные файлы, вроде документации, тестов, файлов конфигурации dev зависимостей
Но у меня лично каждый раз боль глазами сравнивать структуру файлов и содержимое .gitattributes (export-ignore директива), тем более часто случается рассинхрон, в том числе и у крупных библиотек (тот же phpstorm-stubs)
В связи с этим написал либу, которая призвана проверить, что там за архив получается из вашей библиотеки (через
git archive
или скачав напрямую с packagist) и найти там ненужные файлы. Она покажет вам сколько вы сэкономите кБ, вдобавок автоматически может добавить рекомендуемые изменения в ваш .gitattributes.Я прогнал топ тысячу пакетов с packagist, 470 из них могут быть оптимизированы, так шо возможно и вам пригодится
👍13🔥7
Пофиксить PHP 8.4 deprecations в RoadRunner PHP
👩💻 https://github.com/roadrunner-php/issues/issues/39
Нужно обновить пакет version-checker, чтобы он не плевался депрекейтами PHP 8.4
Делается это несложно (можно посмотреть связанные PR в той же ишуе): подключается
Пользователи RoadRunner и Temporal, внедряющие PHP 8.4, будут вам благодарны.
Нужно обновить пакет version-checker, чтобы он не плевался депрекейтами PHP 8.4
Делается это несложно (можно посмотреть связанные PR в той же ишуе): подключается
spiral/code-style
, запускается и весь код становится красивым и без депрекейтов.Пользователи RoadRunner и Temporal, внедряющие PHP 8.4, будут вам благодарны.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
[🧹 CHORE]: resolve PHP 8.4 deprecations · Issue #39 · roadrunner-php/issues
No duplicates 🥲. I have searched for a similar issue. What should be improved or cleaned up? Fix nullable type deprecations like this: > Temporal\Worker\Transport\RoadRunnerVersionChecker::postU...
👍5🔥1
Ишуя для тех, кто не хочет кодить
🪲 Добавить Buggregator в список Awesome PHP
https://github.com/buggregator/trap/issues/191
https://github.com/buggregator/trap/issues/191
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Add Trap as a debug tool in PHP Awesome list · Issue #191 · buggregator/trap
Add Trap and Buggregator there: https://github.com/ziadoz/awesome-php#debugging-and-profiling
👍6❤1
Изменено. Тут была бредовая идея, но теперь вот это:
Несколько проблем PHP CS Fixer и их решения:
- CS Fixer пока нестабилен с новым PHP 8.4 синтаксисом. Поэтому при запуске он падает с предупреждением, мол "запускаешь на свой страх и риск, выстави PHP_CS_FIXER_IGNORE_ENV=1 и будешь сам виноват". Если код пишется без новых фичей PHP 8.4, то ставим ENV и радуемся жизни.
- CS Fixer, как зависимость, тянет много "мусорных" пакетов, которые могут повлиять на другие зависимости проекта.
В этом случае можно заюзать composer-bin-plugin и установить CS Fixer в отдельную папочку, которую можно даже смело заигнорить не только в гите, но и в IDE.
- Хотел предложить добавить им сборку бинарей, но отказался от идеи, т.к. вредя будет больше, чем пользы. Ведь CS Fixer'у важно зависеть именно от PHP проекта.
Несколько проблем PHP CS Fixer и их решения:
- CS Fixer пока нестабилен с новым PHP 8.4 синтаксисом. Поэтому при запуске он падает с предупреждением, мол "запускаешь на свой страх и риск, выстави PHP_CS_FIXER_IGNORE_ENV=1 и будешь сам виноват". Если код пишется без новых фичей PHP 8.4, то ставим ENV и радуемся жизни.
- CS Fixer, как зависимость, тянет много "мусорных" пакетов, которые могут повлиять на другие зависимости проекта.
В этом случае можно заюзать composer-bin-plugin и установить CS Fixer в отдельную папочку, которую можно даже смело заигнорить не только в гите, но и в IDE.
- Хотел предложить добавить им сборку бинарей, но отказался от идеи, т.к. вредя будет больше, чем пользы. Ведь CS Fixer'у важно зависеть именно от PHP проекта.
#yii3
🖼 Добавить дженерик для метода
В пакете Yii DB (абстракция над СУБД) есть метод
Необходимо типизировать метод таким образом, чтобы Psalm мог вывести тип результата.
⭐️ Тикет на GitHub
ConnectionInterface::transaction()
В пакете Yii DB (абстракция над СУБД) есть метод
ConnectionInterface::transaction()
, который выполняет анонимную функцию в рамках транзакции и возвращает её результат.Необходимо типизировать метод таким образом, чтобы Psalm мог вывести тип результата.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Во время сегодняшнего стрима обнаружилось, что под свеженький RoadRunner 2025 не все PHP-пакеты обновлены. Нужно в
Вот эти пакеты:
roadrunner-php/centrifugo
roadrunner-php/tcp
roadrunner-php/services
Быстро вошёл — быстро вышел, приключение на несколько минут. Зато неоценимый вклад!😏
composer.json
для зависимости spiral/roadrunner
добавить версию ^2025.1
Вот эти пакеты:
roadrunner-php/centrifugo
roadrunner-php/tcp
roadrunner-php/services
Быстро вошёл — быстро вышел, приключение на несколько минут. Зато неоценимый вклад!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Forwarded from Пых (Валентин Удальцов)
В PHP-CS-Fixer смержили мой фиксер new_expression_parentheses!
Позавчера состоялся релиз v3.76.0 Kids Playground, туда наконец-то попал фиксер
Вот как включить это правило в
Мейнтейнер Dariusz Rumiński предлагает добавить
____________
1. Слоники Пых выехали ко мне из Иркутска. Транспортная компания обещала доставить в Москву в течение 9 дней. Жду!
2. Мы вчера с программным комитетом Пых.конф’25 зафиналили на встрече мощнейшую программу. Скоро вывесим на сайт.
Позавчера состоялся релиз v3.76.0 Kids Playground, туда наконец-то попал фиксер
new_expression_parentheses
, который мы делали в Open Source цеху (#1, #4). Он убирает скобки вокруг new
выражений в соответствии с моим RFC в PHP 8.4.Вот как включить это правило в
.php-cs-fixer.dist.php
после обновления:
return new Config()
// разрешаем PHP-CS-Fixer работать на 8.4,
// это вместо переменной среды PHP_CS_FIXER_IGNORE_ENV
->setUnsupportedPhpVersionAllowed(true)
// включаем параллельную обработку файлов
->setParallelConfig(ParallelConfigFactory::detect())
// по умолчанию finder ищет только *.php
// и игнорит директории vendor и .* (.git, .idea, ...)
->setFinder(Finder::create()->in(__DIR__))
->setRules([
'@PhpCsFixer' => true,
'new_expression_parentheses' => [
// убираем ненужные скобки
'use_parentheses' => false,
],
]);
Мейнтейнер Dariusz Rumiński предлагает добавить
new_expression_parentheses
в сет @PHP84Migration
. Накидайте там лайков, пожалуйста. @open_source_php, кажется, у нас есть задачка для подписчиков. 😊____________
1. Слоники Пых выехали ко мне из Иркутска. Транспортная компания обещала доставить в Москву в течение 9 дней. Жду!
2. Мы вчера с программным комитетом Пых.конф’25 зафиналили на встрече мощнейшую программу. Скоро вывесим на сайт.
👍16🔥5
Forwarded from Позовите Олега | Архитектура и разработка
В продолжение темы про #observability решил рассказать, как отправлять данные профайлов, собранные через excimer. Надо сказать, что это не самый популярный модуль для сбора профайлов — и, как по мне, совершенно зря. Потому что это расширение максимально тесно интегрируется в PHP и даёт минимум нагрузки на процессор
Минусы? Конечно — отсутствие визуализации из коробки. Но визуализаторов полно: Pyroscope от Grafana, например. Или Speedscope. Проблема в другом — как туда всё это отправить, ведь excimer не умеет ни в OpenTelemetry, ни в какой-нибудь другой удобный формат. Что делать?
А ничего — написать враппер и адаптеры самому
Получился, как по мне, весьма удобный. Я сразу добавил интеграцию с клиентами по OpenTelemetry, данные идут в бинарном формате через protobuf. Есть поддержка:
Вот пример использования
use Excimetry\Profiler\ExcimerProfiler;
use Excimetry\Exporter\CollapsedExporter;
use Excimetry\Backend\PyroscopeBackend;
// Create a profiler
$profiler = new ExcimerProfiler();
// Start profiling
$profiler->start();
// Your code to profile here
// ...
// Stop profiling
$profiler->stop();
// Get the profile
$log = $profiler->getLog();
// Send to Pyroscope
$exporter = new CollapsedExporter();
$backend = new PyroscopeBackend(
'https://localhost:4040', // Pyroscope server URL
'my-application', // Application name
['env' => 'production'] // Labels
);
// Send the profile to Pyroscope
$backend->send($log);
// You can also set the backend to send asynchronously
$backend->setAsync(true);
$backend->send($log); // Returns immediately, sends in background
// Add custom labels
$backend->addLabel('version', '1.0.0');
$backend->addLabel('region', 'us-west');
Честно, не знаю, насколько далеко это всё зайдёт — но идея мне реально нравится 💡 Возможно, excimer станет чуточку популярнее благодаря excimetry.
Буду рад звёздочкам на GitHub
⸻
Давайте оставаться на связи
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - excimetry/excimetry: Excimetry is a PHP profiling library that provides a bridge between the ext-excimer extension and…
Excimetry is a PHP profiling library that provides a bridge between the ext-excimer extension and various profiling tools and platforms. - GitHub - excimetry/excimetry: Excimetry is a PHP profilin...
👍7❤1
Forwarded from Danil Shutsky
🛠 Задача: Миграция с @popperjs/core на @floating-ui в MoonShine (4.x)
Описание:
Библиотека @popperjs/core, используемая в MoonShine для позиционирования всплывающих элементов (tooltip, dropdown и т.д.), переехала в Floating UI. Теперь вместо @popperjs/core следует использовать @floating-ui/dom.
Цель:
В ветке 4.x заменить использование @popperjs/core на актуальную версию из floating-ui. Это позволит избежать зависимостей от устаревшей библиотеки и получить доступ к новым возможностям и оптимизациям.
Убедиться, что:
- dropdown, select, tooltip, модальные окна и прочие компоненты позиционируются корректно;
- работает auto-update позиции при изменении layout;
- тесты проходят
Please open Telegram to view this post
VIEW IN TELEGRAM
Floating-Ui
Floating UI - Create tooltips, popovers, dropdowns, and more
A JavaScript library to position floating elements and create interactions for them.
Forwarded from PHP Fart Time (Алексей roxblnfk)
Ben Ramsey предлагает обновить лицензию PHP.
Вместо старых кастомок перевести Zend на BSD-3, а PHP на BSD-4.
Думаю, Ben Ramsey многим из нас известен благодаря своему пакету ramsey/uuid, который стал де-факто стандартом для UUID, хотя, вероятно, симфонисты о нём уже позабыли и используют
Но знаете ли вы, что Ben пошёл дальше в этом направлении?
- запилил identifier/identifier — набор интерфейсов для идентификаторов.
- зарегистрировал identifier/identifier-implementation — виртуальный пакет идентификаторов.
- и запилил под него свою реализацию ramsey/identifier. Кроме UUID, пакет предоставляет айдишники ULID и SnowFlake.
Сейчас пакеты не имеют стабильного тега, но код
Что будет с
В наших проектах
Спасибо Adam Dyson (@puzzledpolymath) и остальному инициативному сообществу!
Вместо старых кастомок перевести Zend на BSD-3, а PHP на BSD-4.
Думаю, Ben Ramsey многим из нас известен благодаря своему пакету ramsey/uuid, который стал де-факто стандартом для UUID, хотя, вероятно, симфонисты о нём уже позабыли и используют
symfony/uid
.Но знаете ли вы, что Ben пошёл дальше в этом направлении?
- запилил identifier/identifier — набор интерфейсов для идентификаторов.
- зарегистрировал identifier/identifier-implementation — виртуальный пакет идентификаторов.
- и запилил под него свою реализацию ramsey/identifier. Кроме UUID, пакет предоставляет айдишники ULID и SnowFlake.
Сейчас пакеты не имеют стабильного тега, но код
ramsey/identifier
, как заверяет Ben, довольно стабилен. Всё, что ему осталось сделать до релиза: дописать доку и гайды.Что будет с
ramsey/uuid
?Ultimately, what I’d like to do is get ramsey/uuid to start using the identifier/identifier interface and then maybe use ramsey/identifier under the hood, making it easier for folks to start transitioning away from ramsey/uuid.
В наших проектах
ramsey/uuid
активно используется и списывать со счетов его рано. Однако, в Cycle ORM уже начата работа над новым пакетом cycle/entity-behavior-identifier на смену старому.Спасибо Adam Dyson (@puzzledpolymath) и остальному инициативному сообществу!
GitHub
GitHub - cycle/entity-behavior-identifier
Contribute to cycle/entity-behavior-identifier development by creating an account on GitHub.
🔥3👍2❤1
Участник сообщества предложил жирный PR, добавляющий UPSERT в Cycle.
Я сейчас сфокусирован на других задачах, поэтому нужна помощь с этой.
Можно ревьювить чисто в своих компетенциях, главное обозначить их в комментарии.
Но желательно знать, что такое UPSERT и как он используется.
Что можно ревьювить:
- API в Query Builder'е.
- Тесты (корректность и полнота тестов).
- Комментарии.
- Кишочки.
На картинке показано, что нажимать, чтобы предлагать изменения: выделяете несколько строк, жмякаете
+
, кнопка +-
для предложения правок.Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Forwarded from Alexander Makarov
Кто хочет помочь Yii3, но не уверен в своём коде, есть две лёгких, но очень полезных задачи:
- https://github.com/yiisoft/friendly-exception/issues/37
- https://github.com/yiisoft/error-handler/issues/148
Нужно наделать скриншотов, показывающих фичи, и закинуть в README пакетов + оформить в виде pull request.
- https://github.com/yiisoft/friendly-exception/issues/37
- https://github.com/yiisoft/error-handler/issues/148
Нужно наделать скриншотов, показывающих фичи, и закинуть в README пакетов + оформить в виде pull request.
GitHub
Add screenshot to readme · Issue #37 · yiisoft/friendly-exception
Need a nice screenshot from a friendly exception from Yii3 added to README.
👍7
Плагин для IDEA Ultimate / PHPStorm с языковой поддержкой синтаксиса PHP опкодов.
Если у вас есть опкоды и вы не знаете куда их деть, то можно положить в файл с расширением .phpo и плагин сделает подсветку и небольшую навигацию.
На текущий момент сделано достаточно для комфортного чтения опкодов, но в будущем появится и инспекция с анализом ваших опкодов.
Где и как их собирать удобно – это тема для другого плагина. Он уже в паблике, но полноценной интеграции с Opcodes Language нет.
Please open Telegram to view this post
VIEW IN TELEGRAM
JetBrains Marketplace
PHP Opcodes Language - IntelliJ IDEs Plugin | Marketplace
GitHub | Telegram | Donation PHP Opcodes Language support Features: syntax highlightingblock foldingvariable referencesopcodes documentation (soon)rules inspections...
👍4
Dmitrii
#php
Для любителей изучать новые вещи, могу предложить заняться добавлением примеров опкодов для доки при наведении на опкод:
- Открываете сборник опкодов
- Клонируете определение опкода в плагине
- Описываете его назначение и примеры: пхп + опкоды
Готовые опкоды можно взять отсюда, остальные придется искать / изучать исходники
👩💻 Ссылка на файл, в который нужно добавлять
👩💻 Ссылка на php-src со списком последних опкодов
Для любителей изучать новые вещи, могу предложить заняться добавлением примеров опкодов для доки при наведении на опкод:
- Открываете сборник опкодов
- Клонируете определение опкода в плагине
- Описываете его назначение и примеры: пхп + опкоды
Готовые опкоды можно взять отсюда, остальные придется искать / изучать исходники
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4