Подкинули идею использования порядка индексов для увеличения производительности.
Кейс: Надо выбрать зарегистрированных сегодня и забанненых пользователей.
Суть в сравнении скорости работы индексов в зависимости от их порядка -
Решил проверить на практике:
- PHP 8.5.6
- Laravel 13
- Postgres 18
- Миграция с созданием 1 млн записей: https://laravel.su/pastebin/TP82RzZb
- Бенчмарк: https://laravel.su/pastebin/ieEPbf0D
Сравнение по 10к раз каждый.
Результат:
Таким образом, переходя за грань фанатизма даже в хайлоаде, можно следить за порядком полей, а так смысла нет экономить на спичках, учитывая что результат не сильно отличается.
Кейс: Надо выбрать зарегистрированных сегодня и забанненых пользователей.
Суть в сравнении скорости работы индексов в зависимости от их порядка -
is_active + created_at или created_at + is_active.Решил проверить на практике:
- PHP 8.5.6
- Laravel 13
- Postgres 18
- Миграция с созданием 1 млн записей: https://laravel.su/pastebin/TP82RzZb
- Бенчмарк: https://laravel.su/pastebin/ieEPbf0D
Сравнение по 10к раз каждый.
Результат:
+-------+------------------------+------------------------+
| # | is_active + created_at | created_at + is_active |
+-------+------------------------+------------------------+
| min | 2.02 ms | 2.117 ms |
| max | 3.049 ms | 3.146 ms |
| avg | 2.432 ms | 2.555 ms |
| total | 19453.767 ms | 20442.837 ms |
+-------+------------------------+------------------------+
| order | 1 | 2 |
+-------+------------------------+------------------------+
Таким образом, переходя за грань фанатизма даже в хайлоаде, можно следить за порядком полей, а так смысла нет экономить на спичках, учитывая что результат не сильно отличается.
1👍3
Поработал некоторое время со скиллом Jira Markup, созданным из официальной документации по разметке.
Нейронка хоть на слабой, хоть на сильной модели работает с ним нестабильно и непредсказуемо. Часто требовалось по несколько раз повторять запрос форматирования текста с сохранением результата.
Надоело.
В итоге пошёл другим путём - заменил текстовое описание на JS скрипт.
Оригинал скрипта взят из репозитория Markdown to Jira, сверху дописав обёртку для работы с CLI.
В итоге получился лёгкий 46-килобайтный стабильно работающий скрипт.
Само собой, для его работы нужна предустановленная NodeJs.
Был ещё вариант с Bun , но... просто глянь на скрин первого коммента под катом 🙂
Нейронка хоть на слабой, хоть на сильной модели работает с ним нестабильно и непредсказуемо. Часто требовалось по несколько раз повторять запрос форматирования текста с сохранением результата.
Надоело.
В итоге пошёл другим путём - заменил текстовое описание на JS скрипт.
Оригинал скрипта взят из репозитория Markdown to Jira, сверху дописав обёртку для работы с CLI.
В итоге получился лёгкий 46-килобайтный стабильно работающий скрипт.
Само собой, для его работы нужна предустановленная NodeJs.
🔥1
Новый скилл для формирования и исправления описаний скиллов на основании их контекста.
https://github.com/TheDragonSkills/update-skills-description
https://github.com/TheDragonSkills/update-skills-description
GitHub
GitHub - TheDragonSkills/update-skills-description: Contains rules for updating and refreshing the Skills description for AI agents
Contains rules for updating and refreshing the Skills description for AI agents - TheDragonSkills/update-skills-description
1👍2🔥1
Не знаю что это, но выглядит забавно)))
https://intheweights.com
GPT-5.5 says
Russian-speaking software developer known for open-source PHP/Laravel packages and developer tools.
Claude Opus 4.8 says
Open-source developer known in the Laravel/PHP community, creator of packages like Laravel-Lang and contributions to various Laravel tools.
https://intheweights.com
🔥3
Forwarded from Пыхник’26 — PHP на природе
Media is too big
VIEW IN TELEGRAM
Запустили краудфандинг!!!
11 сентября в Art Village под Москвой собираем небольшую PHP-конференцию на 120 участников: один поток, 8 докладов и много живого общения.
Средства на мероприятие собираем через краудфандинг. Можно взять офлайн-билет, доступ к записям, футболку «Вы вымрете, а я останусь» или просто поддержать проект любой суммой.
https://planeta.ru/campaigns/pyhnik26
11 сентября в Art Village под Москвой собираем небольшую PHP-конференцию на 120 участников: один поток, 8 докладов и много живого общения.
Средства на мероприятие собираем через краудфандинг. Можно взять офлайн-билет, доступ к записям, футболку «Вы вымрете, а я останусь» или просто поддержать проект любой суммой.
https://planeta.ru/campaigns/pyhnik26
❤1👍1🔥1💩1
This media is not supported in your browser
VIEW IN TELEGRAM
В репозитории GitHub пропала возможность публиковать Latest релизы? Решение найдено!
После ситуации с массовым взломом GitHub аккаунтов, в число которых попало четыре проекта Laravel-Lang, компания GitHub оперативно усилила безопасность репозиториев.
Одним из следствий этого стала непонятная причина публикации новых релизов - у некоторых репозиториев всё как обычно, указали тег, ввели описание, ткнули "Latest" и готово, а у некоторых, даже в рамках одной организации, кнопка "Latest" отсутствовала, и можно было создать только "Pre-release".
Нашёл способ решения этой проблемы!
1. Опубликуйте "Pre-release"
2. Вернитесь на страницу релизов
3. Нажмите на Edit (кнопка с карандашом)
4. Прокрутите вниз и выберите "Release label" - "None".
5. Жмите "Update release"
Теперь, внезапно, этот релиз будет иметь метку "Latest" и, если вернуться на страницу его редактирования, там также будет выбран пункт "Latest".
С этих самых пор, новые релизы будут иметь возможность публикации "Latest" версий.
Работает даже с иммутабельными релизами.
После ситуации с массовым взломом GitHub аккаунтов, в число которых попало четыре проекта Laravel-Lang, компания GitHub оперативно усилила безопасность репозиториев.
Одним из следствий этого стала непонятная причина публикации новых релизов - у некоторых репозиториев всё как обычно, указали тег, ввели описание, ткнули "Latest" и готово, а у некоторых, даже в рамках одной организации, кнопка "Latest" отсутствовала, и можно было создать только "Pre-release".
Нашёл способ решения этой проблемы!
1. Опубликуйте "Pre-release"
2. Вернитесь на страницу релизов
3. Нажмите на Edit (кнопка с карандашом)
4. Прокрутите вниз и выберите "Release label" - "None".
5. Жмите "Update release"
Теперь, внезапно, этот релиз будет иметь метку "Latest" и, если вернуться на страницу его редактирования, там также будет выбран пункт "Latest".
С этих самых пор, новые релизы будут иметь возможность публикации "Latest" версий.
Работает даже с иммутабельными релизами.
🤡3👍1
Laravel Model Settings
Новый проект для удобного управления настройками моделей.
Есть возможность работать как с персональными настройками модели, так и с глобальными в рамках класса моделей.
Например:
https://github.com/TheDragonCode/laravel-model-settings
Новый проект для удобного управления настройками моделей.
Есть возможность работать как с персональными настройками модели, так и с глобальными в рамках класса моделей.
Например:
class User extends Model
{
use HasSettings;
}
class Post extends Model
{
use HasSettings;
}
$user->defaultSettings()->set('foo', 111);
$post->defaultSettings()->set('foo', 222);
$post->settings()->set('foo', 333);
$post->settings()->set('bar', 444);
$user->settings()->get('foo'); // 111
$post->settings()->get('foo'); // 333
$post->settings()->get('bar'); // 444
https://github.com/TheDragonCode/laravel-model-settings
GitHub
GitHub - TheDragonCode/laravel-model-settings: Model Settings for your Laravel application
Model Settings for your Laravel application. Contribute to TheDragonCode/laravel-model-settings development by creating an account on GitHub.
👍5❤3🔥3💩1
Laravel Model Settings 1.1.0
Пакет хранит настройки отдельных Eloquent-моделей и общие значения по умолчанию.
В версии 1.1.0:
—
— добавлена поддержка UUID и ULID;
— появились касты
— добавлена совместимость с MySQL, MariaDB, PostgreSQL и SQLite.
При обновлении учтите: конфиг переименован в
GitHub · Релиз 1.1.0
Пакет хранит настройки отдельных Eloquent-моделей и общие значения по умолчанию.
В версии 1.1.0:
—
get() и all() получают настройки одним SQL-запросом;— добавлена поддержка UUID и ULID;
— появились касты
payload для разных моделей, включая поддержку spatie/laravel-data;— добавлена совместимость с MySQL, MariaDB, PostgreSQL и SQLite.
class User extends Model
{
use HasSettings;
}
$user->defaultSettings()->set('timezone', 'UTC');
$user->settings()->get('timezone'); // UTC
$user->settings()->set('timezone', 'Europe/Amsterdam');
$user->settings()->get('timezone'); // Europe/Amsterdam
$user->settings()->forget('timezone');
$user->settings()->get('timezone');// UTC
При обновлении учтите: конфиг переименован в
model_settings.php.GitHub · Релиз 1.1.0
GitHub
GitHub - TheDragonCode/laravel-model-settings: Model Settings for your Laravel application
Model Settings for your Laravel application. Contribute to TheDragonCode/laravel-model-settings development by creating an account on GitHub.
🔥1💩1
Forwarded from Пыхник’26 — PHP на природе
От скучной генерации к инженерии с ИИ
ИИ быстро генерирует код, но без контекста, декомпозиции и проверок работа с агентами превращается в ожидание и бесконечные правки. В докладе поговорим об AI-разработке как об управляемом инженерном процессе.
Данил Щуцкий — backend-разработчик с опытом более 15 лет, автор Laravel-сообщества и YouTube-канала CutCode. Консультирует команды по архитектуре и высоконагруженным системам, развивает open source и инструменты для работы с ИИ.
На примере AI Factory и AI Workspace Данил покажет, зачем нужны отдельные этапы исследования, планирования, реализации и проверки — и как превратить работу с кодинг-агентами в повторяемый процесс с понятными правилами и контролем результата.
🌿 Присоединиться к Пыхнику
ИИ быстро генерирует код, но без контекста, декомпозиции и проверок работа с агентами превращается в ожидание и бесконечные правки. В докладе поговорим об AI-разработке как об управляемом инженерном процессе.
Данил Щуцкий — backend-разработчик с опытом более 15 лет, автор Laravel-сообщества и YouTube-канала CutCode. Консультирует команды по архитектуре и высоконагруженным системам, развивает open source и инструменты для работы с ИИ.
На примере AI Factory и AI Workspace Данил покажет, зачем нужны отдельные этапы исследования, планирования, реализации и проверки — и как превратить работу с кодинг-агентами в повторяемый процесс с понятными правилами и контролем результата.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4💩2🤣1
Composer 2.10.1 изменил правила игры
[ тыц, тыц, тыц ]
Если вы устанавливаете зависимости только из опенсурс репозиториев, тогда разницы не заметите.
Но если у вас есть свой собственный репозиторий, из которого по ssh тянутся зависимости, тогда готовьтесь видеть в консоли 404 Not Found при загрузке по HTTPS.
Причина в том, что Composer отключил fallback switch, когда при недоступности ресурса он менялся на другой -
Теперь нужно явно определять КАК нужно устанавливать зависимости.
1. Внесите изменения в файл
Можно через консоль:
2. Уберите параметры
Лучше иметь такой набор:
[ тыц, тыц, тыц ]
Если вы устанавливаете зависимости только из опенсурс репозиториев, тогда разницы не заметите.
Но если у вас есть свой собственный репозиторий, из которого по ssh тянутся зависимости, тогда готовьтесь видеть в консоли 404 Not Found при загрузке по HTTPS.
Причина в том, что Composer отключил fallback switch, когда при недоступности ресурса он менялся на другой -
source-dist и dist-source.Теперь нужно явно определять КАК нужно устанавливать зависимости.
1. Внесите изменения в файл
composer.json (порядок важен): {
"config": {
- "preferred-install": "dist"
+ "preferred-install": {
+ "company/*": "source",
+ "*": "dist"
+ }
}
}Можно через консоль:
composer config 'preferred-install.company/*' source
composer config 'preferred-install.*' dist
2. Уберите параметры
--prefer-source и --prefer-dist из composer install.Лучше иметь такой набор:
composer install --no-progress --no-interaction --optimize-autoloader --classmap-authoritative --strict-psr-autoloader --no-dev
GitHub
Fixed `source-fallback` option applying to source->dist fallbacks as well by Seldaek · Pull Request #12888 · composer/composer
Fixes #12887
👍10