fa
Feedback
Пятиминутка PHP

Пятиминутка PHP

رفتن به کانال در Telegram

Подкаст о PHP, DBA, архитектуре, DevOps. Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Темы про СУБД, Linux, DevOps Автор: @petrmyazin

نمایش بیشتر
2 813
مشترکین
-324 ساعت
-57 روز
-330 روز
آرشیو پست ها
Поставил задачу для ИИ-агента валидировать JSON по схеме. Он написал Python код непосредственно внутри PHP кода (в HEREDOC ст
Поставил задачу для ИИ-агента валидировать JSON по схеме. Он написал Python код непосредственно внутри PHP кода (в HEREDOC строке) и вызывал через exec! Это какой-то саботаж, я считаю! Спасибо, что не перевёл мой проект на Go 🤣

Я мало касаюсь фронтенда и ранее не работал с Playwright для e2e тестирования. Всегда не хватало времени, чтобы попробовать и разобраться. Теперь, благодаря ИИ-инструментам, настроить и запустить Playwright стало проще: ставлю задачу codex cli, оно само там что-то устанавливает, настраивает, запускает. Сейчас читаю логи работы codex и ужасаюсь, сколько подводных камней и нюансов с запуском тестов в headless браузере! Хорошо что я не полез в это разбираться руками и сэкономил себе кучу времени и нервов. Вы только почитайте эти логи (оформил ниже как цитаты)! Раньше пришлось бы разгребать эти вопросы вручную поиском на StackOverflow. Как же тяжело было фронтендерам до появления современных ИИ-агентов 🫨
Playwright wrapper есть, но у файла нет exec-bit. Это не блокер: запущу его через bash, затем открою страницу и пройду весь сценарий в headless-режиме с живой проверкой DOM и console/pageerror.
Нет exce-bit? 🤡
С текущим wrapper есть странность: отдельные одноразовые вызовы не сохраняют browser session. Обойду это через один живой PTY-сеанс shell и выполню команды Playwright последовательно в одной среде, чтобы не терять состояние между open, snapshot, click и fill.
Живой PTY-сеанс shell? Серьёзно? 🤯
С playwright-cli оказался нюанс именно в named sessions. Проверяю рабочий путь без именованной сессии и в одном shell, чтобы не тратить время на сам инструмент: если стандартный open -> snapshot работает, дальше иду по e2e уже этим маршрутом.
Вспомнил анекдот "... но есть нюанс" 😂

У кого нет денег на подписки AI - юзайте Яндекс.Погоду 😂
У кого нет денег на подписки AI - юзайте Яндекс.Погоду 😂

🧭 Разбираем современный PHP вместе с Podlodka PHP Crew PHP-стек может устаревать незаметно: решения вроде бы работают, но ск
🧭 Разбираем современный PHP вместе с Podlodka PHP Crew PHP-стек может устаревать незаметно: решения вроде бы работают, но скорость разработки снижается, стоимость поддержки растёт, а количество возможностей сокращается. 💡 Эксперты Podlodka PHP Crew собрали онлайн-конференцию «Современный стек PHP-разработки», чтобы разобраться, как всё устроено сегодня. 🗓С 20 по 24 апреля участники: • изучат, как сегодня запускают PHP-приложения (worker mode, новые рантаймы, FrankenPHP), • посмотрят, как изменилась инфраструктура и что пора выкинуть из Docker-стека, • обсудят, как реально применять AI-агентов в разработке (не только писать код, но и расследовать баги и планировать изменения), • разберут практические кейсы (например, в онлайн-режиме будут запускать мультиплеерную игру на PHP с Temporal и RoadRunner), • и в целом поймут, какие инструменты и подходы действительно стоит внедрять в 2026. Формат — пять дней живых Zoom-сессий по утрам и вечерам, закрытое комьюнити в Telegram и общение со спикерами. Если хотите обновить свой стек и лучше понимать, куда движется разработка на PHP — обязательно присоединяйтесь👇 🎟Early-bird билеты доступны до 13 апреля А по промокоду php_crew_8_POtgy1 получите скидку🎁

Как быстро и эффективно сделать ИИ-агента для бизнеса? Делюсь реальной историей. 🏗️ Задача: есть внутренняя система учёта и документооборота с веб-интерфейсом, естественно написана на PHP! Хотим добавить ИИ-помощника для сотрудников прямо внутри системы. Возможно, это будет какой-то чат внутри системы или иной способ взаимодействия с ИИ. Один из практических сценариев: пришел счёт на оплату от контрагента, этот счёт надо проверить на соответствие тарифам, понять сроки оплаты и условия подписания закрывающих документов. Если данные в системе грамотно разложены по полочкам и формальным признакам, то ИИ здесь не нужен, можно автоматизировать проверку детерминированным алгоритмом. Ключевое слово: «если». Отложим вопрос классической автоматизации и попробуем построить инструмент для бизнеса на базе LLM. 1️⃣ Версия 1: «Всё в контекст» - менеджер пишет задачу (промпт) в наш встроенный ИИ-чат из карточки документа - на бэкенде к вопросу менеджера прикрепляется вся информация по данному документу из БД в формате JSON - этот достаточно большой запрос, состоящий из исходного вопроса и всей информация из БД по текущей сущности уходит в LLM - спустя 15-60 секунд приходит ответ от LLM, показываем его в чате менеджеру ⚠️ Проблемы версии 1: … Это Preview нового поста по подписке «Петр Мязин | PHPeople» ☝️ Подпишись через @phpeople_bot и узнаешь: - Что всего было 3 версии - Какое решение в итоге оказалось ультра-эффективным - При этом кода стало в х10 раз меньше

Давно я не заглядывал в настройки окружений Codex Cloud - облачная платформа для AI программирования. Сейчас заглянул и тепер
Давно я не заглядывал в настройки окружений Codex Cloud - облачная платформа для AI программирования. Сейчас заглянул и теперь там есть PHP 8.5 из коробки 🎉 Что это за «окружения» и зачем они нужны? - Codex Cloud - это часть продукта ChatGPT для программирования - Заходите в свой chatgpt.com, в меню слева переходите по ссылке “Codex Cloud” - Далее нужно предоставить доступ к github репозиторию вашего проекта - После этого создать так называемое «окружение» (environment) - это некий docker контейнер, для которого можно накликать несколько опций и список предустановленных пакетов - также можно описать свой Setup Script, в котором выполнить установку дополнительных пакетов (например расширений PHP) и выполнить composer install - Теперь можно описать задачу в специальном teaxtarea -> будет запущено настроенное окружение с предустановленными пакетами, внутрь будет клонирован репозиторий с github, запущен Setup Script, после чего AI-агент Codex начнёт работу над задачей.

Установил PhpStorm 2026.1 (https://blog.jetbrains.com/phpstorm/2026/03/phpstorm-2026-1-is-now-out/) Сразу открылась вкладка "
+1
Установил PhpStorm 2026.1 (https://blog.jetbrains.com/phpstorm/2026/03/phpstorm-2026-1-is-now-out/) Сразу открылась вкладка "What's New in PhpStorm 2026.1" - в прошлых версиях такой вкладки не было (или я не замечал?), и эта новинка мне нравится! Почему бы не почитать, что нового? Возможно, такая автоматическая вкладка покажется навязчивым материалом и "лишним окном которое мешает работать", но и закрыть не сложно. Радовался не долго: на этой странице прокрутка не работает! Ни с клавиатуры, ни трекпадом, нет вертикального scroll. Тупо читаю заголовок и рассматриваю два скриншота (которые целиком не уместились) 🤦‍♂️ Как можно было такое упустить? Перезапускаю PhpStorm, открываю эту страницу заново через Help -> What's new in PhpStorm и нашел корень проблемы. При первом открытии страницы всплывает диалог "Введите username и password от proxy". • Далее я иду в программу KeePassXC (где у меня некоторые пароли, но это секрет) • копирую логин и пароль в буфер обмена. Да, копирую сразу два значения, потом могу вставить их по очереди через RayCast буфер обмена. • возвращаюсь в PhpStorm, а диалога с параметрами Proxy уже нет! Видимо, диалог ушел куда-то на задний план и как его вернуть на передний план не понятно. И страница без прокрутки в зависшем состоянии. Вот такие edge cases баги бывают. С поддержкой Proxy в PhpStorm вообще беда: • несколько версий подряд не работала кнопка "Check connection" в настройках Proxy - всегда выдавала результат, что неверный логин пароль, хотя они были верные и по факту proxy работал. В текущей 2026.1 версии починили, только что проверил. • Proxy работал для всех функций в PhpStorm, кроме Junie - этот плагин, видимо, ходил в сеть как-то мимо Proxy и в итоге не работал. • username и password у меня сохранены в Settings -> Proxy, но открытие страницы "What's New in PhpStorm 2026.1" каждый раз просит ввести их заново! То тут, то там в PhpStorm что-то отваливается и забаговано. Но альтернативы ещё хуже, как ни крути.

photo content

Вышел Laravel 13 🎉 Обновился без проблем c Laravel 11 на Laravel 13 за один промпт в codex. Чтобы было повеселее, после обно
Вышел Laravel 13 🎉 Обновился без проблем c Laravel 11 на Laravel 13 за один промпт в codex. Чтобы было повеселее, после обновления Laravel ещё заменил spatie/ignition (пакет для красивого отображения ошибок) на yiisoft/error-handler 😊 Вопрос: если с каждым обновлением Laravel менять по одному пакету в проекте на пакет из набора Yii3, то на какой версии Laravel я полностью перейду на Yii3? 🧐

К хорошему быстро привыкаешь. Пример из жизни: в 2021 году вышел iPhone 13 с частотой обновления экрана 120 Гц. До этого iPhone имели частоту обновления 60 Гц. Казалось, и 60 Гц хватит всем, зачем 120? 📲 Сначала я визуально не почувствовал перехода 60 Гц -> 120 Гц. Но спустя какое-то время включил режим энергосбережения, iPhone включил частоту 60 Гц и разница стала заметна: жутко неприятные анимации, особенно скролл. До сих пор не люблю режим энергосбережения из-за этого. Вчера случилась похожая история с эмулятором терминала. Знаете, есть модные терминалы которые подчёркивают свою скорость рендеринга благодаря отрисовке на GPU: • Warp – написан на Rust, заявляют 144+ FPS на 4K мониторах • WezTerm – написан на Rust, позиционируется как «GPU‑accelerated terminal» • Ghostty – написан на Zig, заявляет использование нативного UI и GPU‑ускорения рендеринга • Alacritty - написан на Rust, «GPU accelerated terminal emulator» с упором на простоту и производительность • Kitty – написан на Cи (sic!) и тоже «GPU‑based terminal», отдельно выделяют ускоренный рендеринг и свой графический протокол Опять же, казалось бы, зачем вообще нужна какая-либо оптимизация рендеринга в терминале? Это же не компьютерные игры, тут просто текстовый вывод работы каких-то программ и команд. Я давно пользуюсь Warp, но вечера попробовал cmux. 🔥 В cmux инетрфейс заточен на работу с ИИ-агентами, удобное деление на проекты и вкладки - интересный заход! https://cmux.com 🐌 Но вот беда: ужасный дёрганый тормозящий скролл! Порой мне кажется, даже буквы при печати появляются на экране недостаточно быстро (или я уже придираюсь?). В общем, ощущения от визуальной составляющей отвратительные. Я привык к 144+ FPS в терминале. А по основным фичам интерфейса cmux с делением на проекты и вкладки внутри проектов всё очень нравится! В cmux действительно удобнее работать с ИИ-агентами, чем в терминале с обычными табами.

Весь мой опыт управления разработкой в одной фразе.

Repost from AI for Devs
Anthropic удвоили лимиты вайбкодерам РФ и СНГ 😁 С 13 по 27 марта лимиты Claude удваиваются в непиковые часы. Для Штатов это
Anthropic удвоили лимиты вайбкодерам РФ и СНГ 😁 С 13 по 27 марта лимиты Claude удваиваются в непиковые часы. Для Штатов это ночь и утро, а для нас — почти весь рабочий день и вечер. По Москве двойной лимит работает с 22:00 до 16:00 следующего дня. То есть можно спокойно вайбкодить с утра до 16:00, потом шестичасовой перерыв, и с 22:00 снова двойная порция токенов. Распространяется на все планы, кроме Enterprise. Включается автоматически, ничего дополнительно делать не нужно. @ai_for_devs

Долгожданный выпуск про DDD. Местами даже получились дебаты :) Смотрим, слушаем, наслаждаемся! https://www.youtube.com/watch?v=03FnrgYLkV8 Альтернативные ссылки: Аудио | vk

Слушал подкаст про DDD. Ведущий рассказал пример неудачного проектирования, когда в таблице "Заказы" оказалось 150+ полей (очень много). На этом моменте мне захотелось сказать Hold my beer... Открываю инспектор БД и смотрю таблицу shipment в своём проекте: 482 колонки, 46 foreign keys! В одной таблице все виды перевозок: • авто • авиа • море • Ж/Д • мультимодальные (несколько видов транспорта) • и даже таможенное оформление как отдельный вид перевозки! От такого "DDD" даже у нейросети контекст отвис 😂

🔥 4 RFC в истории PHP, которые провалились буквально из-за пары голосов В языке PHP многие фичи, которые сегодня кажутся очевидными, сначала не проходили голосование RFC. Иногда не хватало буквально нескольких голосов. Вот несколько показательных примеров. --- 1️⃣ Typed Properties (2016) Сегодня это нормальная часть языка:

class User {
    public int $id;
}
Но первая версия RFC провалилась. Результат голосования:
Yes: 24
No: 17
На первый взгляд — победа. Но для этого RFC требовалось 2/3 голосов. Через несколько лет предложение переработали — и Typed Properties появились в PHP 7.4. Сегодня это одна из самых используемых возможностей языка. --- 2️⃣ Scalar Type Hints До PHP 7 нельзя было писать:

function sum(int $a, int $b)
Можно было типизировать только: * array * callable * классы Первая версия RFC по scalar types провалилась буквально на грани. Типичный результат одного из голосований:
Yes: 31
No: 25
До порога 2/3 голосов опять немного не дотянули. В итоге появился компромисс:

declare(strict_types=1);
И scalar types всё-таки попали в PHP 7.0. --- 3️⃣ Generics Одна из самых ожидаемых фич PHP до сих пор. Идея:

class Collection<T> {
    public function add(T $item) {}
}
Generics дают: • сильную типизацию • безопасные коллекции • лучшее автодополнение IDE Главная проблема — сложность реализации. Generics требуют серьёзных изменений: • type system • runtime • reflection • opcache Поэтому обсуждение этой фичи продолжается уже много лет. --- 4️⃣ Named Arguments Сегодня можно писать так:

setcookie(
    name: "test",
    expires: time() + 3600
);
Но первая версия RFC была отклонена. Разработчики опасались: • ломать старые API • сложности в call stack • несовместимости с variadic функциями После переработки RFC всё-таки приняли, и Named Arguments появились в PHP 8.0. --- 💡 Интересный факт В internals есть шутка: > RFC не умирает — он просто уходит на переписывание. Большинство крупных фич PHP проходят примерно такой путь: 1️⃣ первая версия RFC проваливается 2️⃣ идею перерабатывают 3️⃣ через несколько лет она всё-таки попадает в язык

В начале марта открыто голосование по RFC ValueError Conversions для PHP 8.6, которое предлагает заменить множество предупреждений (E_WARNING) на ValueError, когда функции получают некорректные значения. Пример:

<?php
 
// Current behavior (may hang on some systems, e.g. macOS)
var_dump(copy("source.txt", "")); // bool(false)
 
// After (proposed behavior)
try {
    copy("source.txt", "");
} catch (ValueError $e) {
    echo $e->getMessage();
    // copy(): Argument #2 ($to) must be a non-empty valid path
}
 
// PHP ≤ 8.5: return false
// PHP 8.6 (proposed): ValueError exception
 
?>
https://discourse.thephp.foundation/t/php-dev-rfc-vote-valueerror-conversions-for-php-8-6/5206 Голосование открыли — но сразу нашли нарушения правил. • нет обязательной опции Abstain (воздержаться) • не было “Intent to Vote” объявления • RFC обсуждали меньше минимального cooldown-периода (14 дней) • markdown-разметка голосования в wiki была сломана, из-за неправильных отступов варианты голосования не отображались

«Новая флагманская модель …» Флагманская модель, которую мы заслужили:
«Новая флагманская модель …» Флагманская модель, которую мы заслужили:

Laracon EU 2-3 марта 2026. Сейчас Live на YouTube панельная дискуссия о направлении развития Laravel и экосистемы: https://www.youtube.com/live/YJmuKPk3d9M?feature=shared

Оказывается в апреле 2026 заканчивается поддержка MySQL 8.0 Хорошие новости: перейти на следующую LTS версию MySQL 8.4 должно быть достаточно просто, несовместимых изменений очень мало: https://dev.mysql.com/doc/refman/8.4/en/upgrading-from-previous-series.html 🆕 Я сделал краткую выжимку «что нового» через Perpelxity: Ключевые улучшения в 8.4 (относительно 8.0) Производительность InnoDB • innodb_io_capacity: 200 → 10000 (учёт SSD).[percona] •ется поддержка MySQL 8.0 16MB → 64MB. •преле 2026 заканчиваетс fsync → O_DIRECT. • 2026 заканчивается поддерж all → none (быстрее на флэш). • Автообновление гистограмм (`ANALYZE TABLE` работает автоматически).[opennet +1] • innodb_buffer_pool_in_core_file: ON → OFF (меньше дампов). Репликация и GTID • GTID-теги: можно метить группы транзакций для аудита/отслеживания.[percona] • SOURCE_RETRY_COUNT: 60 → 10 (быстрее failover). • Новые колонки вжка MySQL 8.0 Хорошие Оказывается в аОказывается в апрОказывается в апреле 2026 з • Репликатор всегда используетчивается поддержка MySQL(убраны старые варианты).[mysql] Безопасность и дефолты •.0 Хорошие новости: переустарел, по умолчанию2026 заканчивается поддер(как в 8.0, но строже).[spec-zone] •тся поддержка MySQL 8 1GB → 3% от RAM (1-4GB). • Убраны legacy-опции репликации (`log_bin_use_v1_events`, `--relay-log-info-file`). Ставь лайк, если используешь MySQL. Ставь дизлайк, если на PostgreSQL. Fight❗️

Repost from Пых
PHP-линч Yii3 В эту среду в 19 состоится долгожданный PHP-линч Yii3! В прямом эфире установлю новоиспечённый фреймворк и поделюсь первыми впечатлениями. Всех жду! 📹 YouTube 📹 VK Видео