Обложка канала

Пых. Страница 2

4468 @phpyh

Блог @vudaltsov о разработке на PHP

  • Пых

    Итоги 2022 в PHP-коммьюнити Каюсь! Я совсем забыл выложить результаты опроса PHP-сообщества. Большое спасибо всем, кто принял участие и проголосовал за мой контент! ❤️ https://phpcommunity.ru/2022-php
    2022 год в русскоговорящем PHP-сообществе

    Итоги третьего ежегодного опроса.

    phpcommunity.ru
  • Пых

    Нужно ли отбивать пробелами оператор конкатенации? Несколько лет подряд у меня был ответ "нет", потому что в PHP-CS-Fixer concat_space по умолчанию выставлен в none и я привык так писать ещё со времён контрибьютинга в Symfony. Но на новой работе коллеги ставят пробелы. Почитал новый PER Coding Style: "All binary arithmetic, comparison, assignment, bitwise, logical, string, and type operators MUST be preceded and followed by at least one space". Документация подтверждает, что конкатенация относится к строковым операторам. Получается, что если следовать рекомендации, то надо ставить...
  • Пых

    Наводим порядок в composer.json Если вы, как и я, испытываете наслаждение от автоматизированного порядка, могу порекомендовать пакет ergebnis/composer-normalize. Он упорядочивает ключи composer.json в соответсвии со схемой, после чего структура файла становится логичной и узнаваемой. Под капотом, кстати, используется ergebnis/json-normalizer — он решает задачу нормализации JSON в общем случае и может быть полезен сам по себе. Интеграция в проект предельно проста:
    composer req --dev ergebnis/composer-normalize
    composer normalize
    git commit -am 'Навёл порядок в composer.json!'
    
    Ну и закрепляем наши усилия, добавив в CI-пайплайн composer normalize --dry-run. https://github.com/ergebnis/composer-normalize
    GitHub - ergebnis/composer-normalize: Provides a composer plugin for normalizing composer.json.

    :musical_note: Provides a composer plugin for normalizing composer.json. - GitHub - ergebnis/composer-normalize: Provides a composer plugin for normalizing composer.json.

    GitHub
  • Реклама

  • Пых

    PHP-линч #10

    Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, гитхаб/symfony/console. Как устроен PHP-линч: 1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент (не)известного фреймворка. Заранее ссылки не принимаются. 2. Я выбираю проект по душе и клонирую репозиторий. 3. Комментирую на лету, говорю, что думаю, без обид. Все линчи всегда записываются, так что не переживайте, если не успеваете присоединиться в процессе. Подписывайтесь на наши каналы в Telegram: • Пых https://t.me/phpyh, • PHP Digest https://t.me/phpdigest, • PHP умирает?! https://t.me/isPHPdying. Поддержите канал на Boosty: https://boosty.to/phpyh.

    YouTube
  • Пых

    Эффективность кэширования Недавно на консультации разработчик показывал HTTP-кэширование главной страницы. Мне сразу бросилось в глаза, что для проверки If-Modified-Since в базу делается целая пачка далеко не лёгких запросов с join-ами, которые выясняют, как давно изменялись сущности, участвующие в рендеринге. Я предложил проверить, действительно ли это быстрее, чем просто отдать страницу. Пару лет назад в докладе Павла Паршикова я познакомился с формулой целесобразности кэширования:
    rp + (r + c + w)(1 - p) < c
    
    c — стоимость выполнения кэшируемой операции,
    0 < p < 1 — вероятность попадания в кэш (hit),
    r — стоимость чтения и валидации кэша,
    w — стоимость записи в кэш.
    
    После упрощения:
    
    r + w(1 - p)
    ———————————— < c
         p
    
    Получается, что кэширование имеет смысл тогда, когда взаимодействие с ним обходится дёшево, а вероятность хита близка к 1. Как правило, наибольшее внимание уделяют p, подразумевая, что сам кэш достаточно быстрый. Но r не стоит недооценивать. В описанной в начале поста ситуации именно стоимость валидации оказалась слишком высокой, из-за чего кэширование потеряло смысл.
  • Пых

    👨‍🔬 Новая лекция от Пыха. LRU мемоизация Что такое мемоизация, как её абстрагировать и отрефакторить по TDD на LRU-алгоритм. 40 минут. boosty.to/phpyh/p…6fd5d28a
  • Пых

    Предпраздничная головоломка! Разберём потом на стриме.
  • Пых

    Варианты нейминга конструктора типов для php-extended-type-system/type. Отличается только имя конструктора, всё остальное одинаковое.
  • Пых

    Release 0.1.0 🚀 · php-extended-type-system/type

    Released during live stream at PHP Point. Спасибо Пыхарям за поддержку ❤️

    GitHub
  • Пых

    PHP Extended Type System v0.1.0 Пыхари, сегодня мы наконец-то увидим, как я на чём-то ставлю тег, пусть и 0.1.0! Встречаемся через час на уютном PHP Point! https://youtu.be/5c0WdgAnH_k
    PHP Extended Type System v0.1.0

    Подписывайтесь на наши каналы в Telegram: • Пых https://t.me/phpyh, • PHP Digest https://t.me/phpdigest, • PHP умирает?! https://t.me/isPHPdying. Поддержите канал на Boosty: https://boosty.to/phpyh.

    YouTube
  • Пых

    🎲 Разыгрываю билет на Podlodka PHP Crew! Как вы уже знаете, ранее я отобрал двух участников воркшопа по статанализу на Podlodka PHP Crew, и сегодня вечером в 19:00 мы с Алесем и Андреем обмажемся типами по-полной, уж поверьте мне. Но внезапно я вспомнил, что у меня есть дополнительная проходка на конфу, и решил её разыграть! Билет на Подлодку получит тот, кто первым правильно решит задачку: https://psalm.dev/r/ed78fa67f7. Там нужно поправить все ошибки одним изменением, не прибегая к @psalm-suppress. Исправленный сниппет присылайте в личку так же ссылкой на psalm.dev. Решение задачи разберём завтра на PHP-линче в 21:00 (проведём после Подлодки).
  • Пых

    function phpyh(array &$value): void
    {
        $value = 1;
    }
    
    $value = [];
    phpyh($value);
    
    var_dump($value);
  • Пых

    Конкурс от канала PHP умирает?! До 1-ого марта скинь в личку @vudaltsov идею для озвучки сцены из фильма или сериала. Условия: • сцена должна быть короткой (не дольше 30 секунд), • предлагаемый вариант озвучки должен быть связан с PHP, • преимущество получат самые смешные варианты, которые не выставляют PHP в плохом свете (по крайней мере, явно). Примеры: • https://t.me/isPHPdying/19, • https://t.me/isPHPdying/26, • https://t.me/isPHPdying/124, • https://t.me/isPHPdying/125. Что присылать: • фрагмент фильма или сериала или ссылку на него с тайм-кодом, • текст альтернативной озвучки, • можно несколько вариантов. Призы: 🥇 месяц подписки object на Пых Boosted, 🥈 месяц подписки array на Пых Boosted, 🥉 месяц подписки array на Пых Boosted. Все три ролика будут обязательно озвучены и выложены на канале после подведения итогов. С нетерпением ждём ваших идей!
  • Пых

    PHP-линч #9 • yiisoft/validator

    0:00 Я со странным лицом смотрю на экран 0:15 Начало 1:54 Почему я рубашке 2:40 Про стрим о yiisoft/validator 2020 года 4:15 Про мой гидратор 5:16 yiisoft/validator 14:39 Что с курсом Loft School 16:00 Зачем поддерживать 2 мажорные версии Psalm 16:54 Продолжаем изучать yiisoft/validator 51:22 Рефлексия и кеш в статическом свойстве 56:22 Снова про нейминг аттрибута 57:17 Мемоизация метаданных в симфони 59:52 Про nullable и #[Required] 1:01:11 Глобальный игнор для временных файлов 1:03:13 Высокий уровень кода в yiisoft 1:04:16 Ищем json, composer-required, composer-unused 1:07:13 Финал Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, гитхаб/symfony/console. Как устроен PHP-линч: 1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент (не)известного фреймворка. Заранее ссылки не принимаются. 2. Я выбираю проект по душе и клонирую репозиторий. 3. Комментирую на лету, говорю, что думаю, без обид. Все линчи всегда записываются, так что не переживайте, если не успеваете присоединиться в процессе. Подписывайтесь на наши каналы в Telegram: • Пых https://t.me/phpyh, • PHP Digest https://t.me/phpdigest, • PHP умирает?! https://t.me/isPHPdying. Поддержите канал на Boosty: https://boosty.to/phpyh.

    YouTube
  • Пых

    Спасибо всем откликнувшимся, мне было очень приятно связаться с каждым! К сожалению, пришлось выбирать, так как по сценарию нужно 2 участника. Но что-то мне подсказывает, что это не последняя движуха такого рода. 😉 Правильное решение задачи: https://psalm.dev/r/064023dcb7. И всех ещё раз приглашаю на Podlodkа PHP Crew, в частности на мой воркшоп "Упарываемся по статанализу: условные типы и вложенные дженерики" 28-ого в 19:00.
    Онлайн-конференция Podlodka PHP Crew, сезон #2

    Недельное мероприятие от команды Podlodka: ежедневные интерактивные сессии в Zoom по актуальным вопросам PHP-индустрии, нон-стоп общение с экспертами и звёздами индустрии, закрытое профессиональное сообщество в Slack.

    podlodka.io
  • Реклама

  • Пых

    PHP-линч #8 • api-platform/core • WeakMap в EventListener

    0:00 Новости и анонсы 3:43 Про мой воркшоп на Podlodka PHP Crew 5:35 Про собес на .NET миддла 10:12 Про CuyZ/Valinor и Poseidon 12:20 Снова про C# 14:24 Позволит ли Happy Inc. мне зарелизить либу? 15:39 API Platform 1:07:09 Как прокинуть состояние между событиями Symfony без $request.attributes 1:12:50 Последние комментарии и финал Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, гитхаб/symfony/console. Как устроен PHP-линч: 1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент (не)известного фреймворка. Заранее ссылки не принимаются. 2. Я выбираю проект по душе и клонирую репозиторий. 3. Комментирую на лету, говорю, что думаю, без обид. Все линчи всегда записываются, так что не переживайте, если не успеваете присоединиться в процессе. Подписывайтесь на наши каналы в Telegram: • Пых https://t.me/phpyh, • PHP Digest https://t.me/phpdigest, • PHP умирает?! https://t.me/isPHPdying. Поддержите канал на Boosty: https://boosty.to/phpyh.

    YouTube
  • Пых

    Ищу любителей статанализа для воркшопа на Podlodkа PHP Crew 28-ого февраля в 19:00 на второй Подлодке PHP я проведу воркшоп "Упарываемся по статанализу: условные типы и вложенные дженерики". Для выступления мне потребуются два добровольца, которые под моим руководством выполнят несколько познавательных заданий и на следующий день смогут перейти на Kotlin или Haskell. Короче, пыхарь, если ты практикуешь статанализ, готов пообщаться в онлайне и не занят через две недели во вторник вечером, пиши мне в личку @vudaltsov. Чтобы проверить свои знания, реши задачку https://psalm.dev/r/e7e74a61cf. Ах, да, те, кого я отберу, получат бесплатные билеты на Podlodkа PHP Crew! ———————————— PHP-линч #8 будет завтра в 18:00.
  • Пых

    Оказывается, уточнение по этому вопросу дожидается своего релиза в мастере PER coding style. В соответствии с рекомендацией правильный вариант — первый. Спасибо @samdark.
    per-coding-style/spec.md at master · php-fig/per-coding-style

    PER coding style. Contribute to php-fig/per-coding-style development by creating an account on GitHub.

    GitHub