Пых
Завтра в 11 по Москве в пыхэфире Краснодар! • 11:00 — Быстрый способ разобраться с легаси и начать жить (Сергей Жук, Skyeng) • 12:00 — Автотесты: как тестировать нетестируемое (Артем Прозоров, ZeBrains) • 13:00 — Как жить, если у тебя не хайлоад: истории…
Цитирую @seregazhuk:
Не бывает кода, который потом понадобится. Выкидывайте! Есть гит, он всё помнит. Как правило, "код который понадобится" никогда не понадобится.
Я тоже советую чаще делать выбор в пользу удаления. Если коммиты атомарные и с хорошим комментарием, найти их в истории и восстановить не составит труда. А вот кода любого сорта, в том числе WTF-, непокрытого и потенциально уязвимого автоматически станет меньше.
https://www.youtube.com/watch?v=Uezd5ocJQ9I&t=1133
Не бывает кода, который потом понадобится. Выкидывайте! Есть гит, он всё помнит. Как правило, "код который понадобится" никогда не понадобится.
Я тоже советую чаще делать выбор в пользу удаления. Если коммиты атомарные и с хорошим комментарием, найти их в истории и восстановить не составит труда. А вот кода любого сорта, в том числе WTF-, непокрытого и потенциально уязвимого автоматически станет меньше.
https://www.youtube.com/watch?v=Uezd5ocJQ9I&t=1133
Build Stuff Software Development 2020 уже в эту среду!
Build Stuff проводят на этой неделе конференцию и предложили мне разыграть на канале 5 билетов. Мероприятие традиционно проходит в Европе, но в этом непростом году пройдёт онлайн.
Конференция будет в эфире три дня (11-13 ноября), и на ней обсудят все баззворды на свете от машин лёрнинга до девопса. Меня особенно заинтересовала секция Hiding The Lead (13 ноября в 11:00) Сэма Ньюмена, авторитетного автора книг по микросервисной архитектуре.
К сожалению, придумать хорошую задачу в этот раз не успеваю, разыграем 5 билетов рандомно 🎲
Заполняйте форму сегодня до полуночи, и завтра в Пыхтелке я объявлю победителей.
Build Stuff проводят на этой неделе конференцию и предложили мне разыграть на канале 5 билетов. Мероприятие традиционно проходит в Европе, но в этом непростом году пройдёт онлайн.
Конференция будет в эфире три дня (11-13 ноября), и на ней обсудят все баззворды на свете от машин лёрнинга до девопса. Меня особенно заинтересовала секция Hiding The Lead (13 ноября в 11:00) Сэма Ньюмена, авторитетного автора книг по микросервисной архитектуре.
К сожалению, придумать хорошую задачу в этот раз не успеваю, разыграем 5 билетов рандомно 🎲
Заполняйте форму сегодня до полуночи, и завтра в Пыхтелке я объявлю победителей.
Завтра в 11 по Москве в пыхэфире Нижний!
• 11:00 — MySQL vs Postgres (Антон Робуль)
• 12:00 — Полезные привычки для программистов (Олег Скляров, Skyeng)
• 13:00 — Очередной проект: взлетит или нет (Сергей Пантюшин, ВодоходЪ)
Также в процессе стрима можно будет принять участие в квизе и выиграть билеты на PHP Russia, пхп-слонов и не только.
https://youtu.be/pe3b0DHVnq8
• 11:00 — MySQL vs Postgres (Антон Робуль)
• 12:00 — Полезные привычки для программистов (Олег Скляров, Skyeng)
• 13:00 — Очередной проект: взлетит или нет (Сергей Пантюшин, ВодоходЪ)
Также в процессе стрима можно будет принять участие в квизе и выиграть билеты на PHP Russia, пхп-слонов и не только.
https://youtu.be/pe3b0DHVnq8
PHP 🎱
Уже завтра, за день до релиза, будет большой стрим про PHP 8 от Skyeng, PHP Russia и PHP Point!
В программе:
• дискуссия о развитии PHP с Альбертом Степанцевым,
• обзор новых фич восьмёрки от меня,
• Q&A с ключевыми разработчиками PHP Дмитрием Стоговым и Никитой Поповым.
Ведущие Александр Макаров и Роман Пронский.
Подключайтесь, общайтесь и задавайте вопросы! Начало в 19 по Москве 🕖
https://www.youtube.com/watch?v=QSszmWIrRyw
Уже завтра, за день до релиза, будет большой стрим про PHP 8 от Skyeng, PHP Russia и PHP Point!
В программе:
• дискуссия о развитии PHP с Альбертом Степанцевым,
• обзор новых фич восьмёрки от меня,
• Q&A с ключевыми разработчиками PHP Дмитрием Стоговым и Никитой Поповым.
Ведущие Александр Макаров и Роман Пронский.
Подключайтесь, общайтесь и задавайте вопросы! Начало в 19 по Москве 🕖
https://www.youtube.com/watch?v=QSszmWIrRyw
YouTube
PHP 8: что нового, туда ли двигается, что будет дальше
5:35 - дискуссия "Тем ли путем идет PHP" между Валентином Удальцовым и Альбертом Степанцевым
29:05 - доклад "PHP 8: userland" от Валентина
1:05:30 - обсуждение доклада с Романом Пронским и Александром Макаровым
1:27:25 - Q&A с ключевыми разработчиками 8…
29:05 - доклад "PHP 8: userland" от Валентина
1:05:30 - обсуждение доклада с Романом Пронским и Александром Макаровым
1:27:25 - Q&A с ключевыми разработчиками 8…
Встречаем PHP 8!
🔴 Трансялция на PHP Point: https://www.youtube.com/watch?v=QSszmWIrRyw.
🗺 Слайды моей презентации: https://vudaltsov.github.io/php8-slides/.
🔴 Трансялция на PHP Point: https://www.youtube.com/watch?v=QSszmWIrRyw.
🗺 Слайды моей презентации: https://vudaltsov.github.io/php8-slides/.
Прямо сейчас очень интересная дискуссия Дмитрия Стогова и Никиты Попова про типы, компиляцию, async/await, корутины и траекторию развития PHP.
https://www.youtube.com/watch?v=QSszmWIrRyw
https://www.youtube.com/watch?v=QSszmWIrRyw
Deprecations
Чтобы проект был всегда готов к обновлению языка и зависимостей, я рекомендую следить за депрекациями (устаревшими возможностями) и фиксить их как можно раньше.
Сегодня в PHP для этого полно инструментов, мы с командой пользуемся этими:
• Deprecated* issue в Psalm (в PHPStan есть phpstan-deprecation-rules);
• канал
• команда
• вкладка Deprecations в разделе Logs в Symfony Profiler;
• подписка на релизы пакетов и внимательное их изучение.
Чтобы проект был всегда готов к обновлению языка и зависимостей, я рекомендую следить за депрекациями (устаревшими возможностями) и фиксить их как можно раньше.
Сегодня в PHP для этого полно инструментов, мы с командой пользуемся этими:
• Deprecated* issue в Psalm (в PHPStan есть phpstan-deprecation-rules);
• канал
deprecation в Monolog (см. рецепт MonologBundle);• команда
debug:container --deprecations (выводит список устаревших сервисов, замеченных при сборке DI контейнера Symfony);• вкладка Deprecations в разделе Logs в Symfony Profiler;
• подписка на релизы пакетов и внимательное их изучение.
Ребята в Пыхтелке напомнили про Symfony PHPUnit Bridge.
В этом пакете есть
Спасибо @chi_teck и @andrewDemb.
В этом пакете есть
SymfonyTestsListener, который в том числе умеет учитывать депрекации при тестировании. Его необязательно использовать с simple-phpunit, можно со стандартным phpunit. Подробнее о подключении и настройке читайте в документации.Спасибо @chi_teck и @andrewDemb.
Telegram
Пыхтелка
Основной чат канала Пых @phpyh для обсуждения разработки на PHP.
Правила группы: t.me/phpyhtelka/77070
Правила группы: t.me/phpyhtelka/77070
dbal:run-sql
Недавно абсолютно случайно наткнулся на команду
При помощи команды можно выполнить SQL запрос через любое сконфигурированное в приложении подключение, не заморачиваясь с доступами. Очень удобно использовать в Makefile и CI.
Недавно абсолютно случайно наткнулся на команду
dbal:run-sql (всё-таки полезно гулять по папке vendor 🤓). Она поставляется с пакетом Doctrine DBAL, поэтому доступна не только симфонистам и ормщикам.При помощи команды можно выполнить SQL запрос через любое сконфигурированное в приложении подключение, не заморачиваясь с доступами. Очень удобно использовать в Makefile и CI.
bin/console dbal:run-sql \
--connection=name \
'select ... from ...'
Сейчас в эфире на канале PHP Point первый Дайджест Стрим!
Обратите внимание, что ссылка другая, не та, которую шерили утром.
https://www.youtube.com/watch?v=i9iC58z0yHE
Обратите внимание, что ссылка другая, не та, которую шерили утром.
https://www.youtube.com/watch?v=i9iC58z0yHE
YouTube
PHP Digest Live #194. Каким может быть Enum в PHP 8.1, про новый PhpStorm, JetBrains Qodana
PHP-Дайджест № 194 (1 – 14 декабря 2020) https://habr.com/ru/post/532950/
Подписывайтесь на наши каналы в Telegram:
• PHP Digest https://news.1rj.ru/str/phpdigest,
• Пых https://news.1rj.ru/str/phpyh,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying.
Подписывайтесь на наши каналы в Telegram:
• PHP Digest https://news.1rj.ru/str/phpdigest,
• Пых https://news.1rj.ru/str/phpyh,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying.
Как избавиться от лишних неявных зависимостей 🧹
Рассмотрим классический пример про полифилы. Symfony Console версии 5.1 использует функцию is_countable, которая появилась в PHP 7.3. Чтобы поддерживать PHP 7.2, пакет требует полифил symfony/polyfill-php73. Поэтому когда мы устанавливаем
Чтобы его удалить, нужно в composer.json в разделе replace прописать
ComposerRequireChecker (на страже в CI) поможет не увлечься и не удалить лишние пакеты. Он проверит, что все используемые в проекте символы (функции, константы и классы) содержатся в зависимостях, явно прописанных в
В сниппете фрагменты composer.json из нашего проекта в Happy Inc.
Рассмотрим классический пример про полифилы. Symfony Console версии 5.1 использует функцию is_countable, которая появилась в PHP 7.3. Чтобы поддерживать PHP 7.2, пакет требует полифил symfony/polyfill-php73. Поэтому когда мы устанавливаем
symfony/console в проекте с PHP 7.4, мы получаем не только компонент, но и полифил PHP 7.3, который нам, очевидно, не нужен.Чтобы его удалить, нужно в composer.json в разделе replace прописать
"symfony/polyfill-php73": "*" и выполнить update. Аналогично можно убрать полифилы расширений PHP, предварительно гарантировав их наличие через require ext-<name> (см. сниппет).ComposerRequireChecker (на страже в CI) поможет не увлечься и не удалить лишние пакеты. Он проверит, что все используемые в проекте символы (функции, константы и классы) содержатся в зависимостях, явно прописанных в
require.В сниппете фрагменты composer.json из нашего проекта в Happy Inc.
Вдохновляющая статья про PHP от Мэтью Брауна, автора Psalm.
I’m here to tell you that it can, and Vimeo’s continued success with PHP is proof that it’s a great tool for fast-moving companies in 2020.
https://medium.com/vimeo-engineering-blog/its-not-legacy-code-it-s-php-1f0ee0462580
Только мыть, конечно, лучше сверху вниз, а не наоборот 😄
I’m here to tell you that it can, and Vimeo’s continued success with PHP is proof that it’s a great tool for fast-moving companies in 2020.
https://medium.com/vimeo-engineering-blog/its-not-legacy-code-it-s-php-1f0ee0462580
Только мыть, конечно, лучше сверху вниз, а не наоборот 😄
Medium
It’s not legacy code — it’s PHP
Vimeo has been using PHP in production for over 15 years. Find out how we keep a million lines of PHP in check!
Привет, пыхари ☃️
Вы всё чаще обращаетесь ко мне в личке, и я очень рад, что могу быть полезен, записывая между делом голосовые сообщения.
Однако чтобы все проводили время с макимальной пользой и отдачей, консультации теперь будут в формате созвона и платными. Вы сможете спрашивать подробнее и сразу получать ответы, а я буду знать, что не зря не успеваю вечером поиграть на 🥁
Пишите мне (@vudaltsov), о чём хотите поговорить. Если я достаточно в теме, согласуем дату и время созвона. Дальше по ситуации. Пока ставка 3000 рублей в час. Если спрос будет большим, она может вырасти 😉
Вы всё чаще обращаетесь ко мне в личке, и я очень рад, что могу быть полезен, записывая между делом голосовые сообщения.
Однако чтобы все проводили время с макимальной пользой и отдачей, консультации теперь будут в формате созвона и платными. Вы сможете спрашивать подробнее и сразу получать ответы, а я буду знать, что не зря не успеваю вечером поиграть на 🥁
Пишите мне (@vudaltsov), о чём хотите поговорить. Если я достаточно в теме, согласуем дату и время созвона. Дальше по ситуации. Пока ставка 3000 рублей в час. Если спрос будет большим, она может вырасти 😉
📖 Только что купил и начал читать Introducing EventStorming, основополагающий труд по ивент стормингу от автора этого подхода, Альберто Брандолини.
Ивент сторминг ("событийный штурм") — это формат совещания, на котором разработчики и доменные эксперты вместе проясняют предметную область. Результатом такого обсуждения является набор бизнес-процессов, сформулированных в терминах DDD. Подробнее на Википедии.
У кого сейчас есть время и желание, го читать параллельно со мной, через недельку обсудим в Пыхтелке 👌
https://www.eventstorming.com/book/
Ивент сторминг ("событийный штурм") — это формат совещания, на котором разработчики и доменные эксперты вместе проясняют предметную область. Результатом такого обсуждения является набор бизнес-процессов, сформулированных в терминах DDD. Подробнее на Википедии.
У кого сейчас есть время и желание, го читать параллельно со мной, через недельку обсудим в Пыхтелке 👌
https://www.eventstorming.com/book/
📺 Что делать джуну с пятилетним стажем?
Мой первый вечерний Пыхэфир на канале PHP Point!
https://www.youtube.com/watch?v=y4Y2r4uf0qw
Мой первый вечерний Пыхэфир на канале PHP Point!
https://www.youtube.com/watch?v=y4Y2r4uf0qw
YouTube
Пыхэфир #1. Что делать джуну с пятилетним стажем?
Делюсь своими мыслями на тему того, как развиваться разработчику, который чувствует, что застрял на одном месте и не понимает, куда и как двигаться дальше.
Статья на Хабре про пытливый ум: https://habr.com/ru/post/484590/.
Книга Лабковского "Хочу и буду":…
Статья на Хабре про пытливый ум: https://habr.com/ru/post/484590/.
Книга Лабковского "Хочу и буду":…
Напоминаю, что уже давно можно пользоваться функциями PHP 8 даже если у вас 7.1!
Ставим Symfony Polyfill PHP 8.0 и получаем следующие функции:
• str_contains,
• str_starts_with,
• str_ends_with,
• get_debug_type,
• preg_last_error_msg,
• fdiv,
• get_resource_id.
Ставим Symfony Polyfill PHP 8.0 и получаем следующие функции:
• str_contains,
• str_starts_with,
• str_ends_with,
• get_debug_type,
• preg_last_error_msg,
• fdiv,
• get_resource_id.
composer req symfony/polyfill-php80GitHub
GitHub - symfony/polyfill-php80: Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions
Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions - symfony/polyfill-php80
Самый быстрый способ выяснить, какие пакеты мешают вам перейти на PHP 8:
На скрине ситуация на нашем проекте в Happy Inc. Делитесь в Пыхтелке, как у вас с этим обстоят дела 🤓
lcobucci/jwt в 4-ой версии уже поддерживает PHP 8, но пока не дошли руки поправить нарушения обратной совместимости, под которые мы попадаем.
composer why-not php ^8На скрине ситуация на нашем проекте в Happy Inc. Делитесь в Пыхтелке, как у вас с этим обстоят дела 🤓
lcobucci/jwt в 4-ой версии уже поддерживает PHP 8, но пока не дошли руки поправить нарушения обратной совместимости, под которые мы попадаем.
Через час собираемся на PHP Point, чтобы обсудить трейты!
Будет две трансляции:
• на YouTube https://youtu.be/DEk56xbMITo,
• и ВКонтакте https://vk.com/hexlet?w=wall-54520471_9949 (спасибо @hexlet_ru).
Крутая альтернативная обложка от phpcommunity.ru (SkyEng) 👨🎨
Будет две трансляции:
• на YouTube https://youtu.be/DEk56xbMITo,
• и ВКонтакте https://vk.com/hexlet?w=wall-54520471_9949 (спасибо @hexlet_ru).
Крутая альтернативная обложка от phpcommunity.ru (SkyEng) 👨🎨
Пых
Через час собираемся на PHP Point, чтобы обсудить трейты! Будет две трансляции: • на YouTube https://youtu.be/DEk56xbMITo, • и ВКонтакте https://vk.com/hexlet?w=wall-54520471_9949 (спасибо @hexlet_ru). Крутая альтернативная обложка от phpcommunity.ru (SkyEng)…
YouTube
Трейты в PHP — зло? Валентин Удальцов против всех (Часть 1)
Продолжение: https://youtu.be/xoEPNiMtVps
Битва сторонников и противников трейтов, которая раз и навсегда расставит точки!
Партнеры: Skyeng 🎸, Hexlet 🥁
http://phpcommunity.ru
Участники:
Валентин Удальцов (Happy Inc, Пых)
Сергей Жук (Skyeng, подкаст «Между…
Битва сторонников и противников трейтов, которая раз и навсегда расставит точки!
Партнеры: Skyeng 🎸, Hexlet 🥁
http://phpcommunity.ru
Участники:
Валентин Удальцов (Happy Inc, Пых)
Сергей Жук (Skyeng, подкаст «Между…