Пых
Ну что ж, давно не виделись?! Линч в 19:00! Расскажу, как у меня дела, какие планы на ближайшее время, и конечно же посмотрим проекты, которые вы скинете. До встречи! https://youtu.be/lmTsDyF4e6A
0:00 Упс, я забыл, как запускать стрим...
0:43 php-farttime
2:40 Я теперь работаю на себя
6:08 Анонс курса по PHP
26:40 Статус моих OpenSource-проектов
30:22 Линч zlodes/php-prometheus-client
55:20 Почему в Symfony рецепты лежат не вместе с бандлами
57:30 Ответы автора zlodes/php-prometheus-client на мои замечания
58:08 Зачем чувствовать себя тупым
1:01:54 Создаём окно при помощи SerafimArts/ffi-sdl
1:17:25 PhpStorm или Vim? Аналогия с барабанами О_о
1:20:36 Constructor Property Promotion
1:21:16 Почему я не использую Copilot
1:24:34 И снова про белую тему
1:27:36 Я долго дебажу автокомплит SDL и вывожу-таки на экран картинку!
2:04:05 Почти делаю Кириллу Pull Request
2:08:22 Финал
0:43 php-farttime
2:40 Я теперь работаю на себя
6:08 Анонс курса по PHP
26:40 Статус моих OpenSource-проектов
30:22 Линч zlodes/php-prometheus-client
55:20 Почему в Symfony рецепты лежат не вместе с бандлами
57:30 Ответы автора zlodes/php-prometheus-client на мои замечания
58:08 Зачем чувствовать себя тупым
1:01:54 Создаём окно при помощи SerafimArts/ffi-sdl
1:17:25 PhpStorm или Vim? Аналогия с барабанами О_о
1:20:36 Constructor Property Promotion
1:21:16 Почему я не использую Copilot
1:24:34 И снова про белую тему
1:27:36 Я долго дебажу автокомплит SDL и вывожу-таки на экран картинку!
2:04:05 Почти делаю Кириллу Pull Request
2:08:22 Финал
Код-румы для онлайн-собеседований
В этом месяце провожу для Evrone технические собеседования на позицию Middle/Senior PHP разработчика и активно использую Yandex Code для практических заданий.
Раньше я всё делал сложнее для собеседуемого: давал ссылку на Gist с заданием и просил пошарить экран с IDE. Сейчас просто создаю комнату с условием задачи, отправляю ссылку кандидату, и через пять секунд мы уже обсуждаем и правим один и тот же сниппет. Это как Google Docs или как если бы Code With Me от JetBrains был доступен прямо в браузере.
https://code.yandex-team.ru/
Об инструменте узнал от @adrenaL1nkin на собеседовании в Webinar. 😊
В этом месяце провожу для Evrone технические собеседования на позицию Middle/Senior PHP разработчика и активно использую Yandex Code для практических заданий.
Раньше я всё делал сложнее для собеседуемого: давал ссылку на Gist с заданием и просил пошарить экран с IDE. Сейчас просто создаю комнату с условием задачи, отправляю ссылку кандидату, и через пять секунд мы уже обсуждаем и правим один и тот же сниппет. Это как Google Docs или как если бы Code With Me от JetBrains был доступен прямо в браузере.
https://code.yandex-team.ru/
Об инструменте узнал от @adrenaL1nkin на собеседовании в Webinar. 😊
Пых
🔴 PHP-линч #20 Через час линч! https://youtu.be/j7w5nmk2AFE
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код?
Anonymous Quiz
39%
Uncaught Error: Call to protected method B::hello() from scope C
61%
Hello!
🤵 💍 👰
Сегодня у нас с Ольгой год семейной жизни! А ещё, так совпало, свадьба моего брата! По этому поводу мы записали кавер на любимую песню. Приглашаю вас послушать!
https://youtu.be/nIA4GDz9APE
Сегодня у нас с Ольгой год семейной жизни! А ещё, так совпало, свадьба моего брата! По этому поводу мы записали кавер на любимую песню. Приглашаю вас послушать!
https://youtu.be/nIA4GDz9APE
YouTube
Imagine — John Lennon Cover By Olga & Valentin
Что выведет код?
Anonymous Quiz
42%
Fatal error: Uncaught Error: Call to protected method B::hello() from scope C
58%
Hello!
К сожалению, в 19 не получается, поэтому проведу на час раньше из кафе. Надеюсь, будет нормально слышно.
https://youtu.be/DxmX2A_WJTk
Please open Telegram to view this post
VIEW IN TELEGRAM
Пых
Вчера на линче коснулись нюансов работы автовайринга в Symfony. В какой-то момент я сказал, что даже если в DI найдётся ровно один сервис, реализующий некий интерфейс, то Symfony не заавтовайрит этот сервис без алиаса. Но в чате меня поправили, и я пообещал проверить.
Я был не прав. Действительно, если в контейнере имеется только один сервис, имплементирующий интерфейс, то он без дополнительных телодвижений будет использован для инъекции по этому интерфейсу. И только если таких сервисов 0 или несколько, будет выброшено исключение вида
Но в любом случае я рекомендую либо явно прописывать алиасы для автоваринга, либо хитрить и сразу регистрировать сервис под именем интерфейса, например:
Я был не прав. Действительно, если в контейнере имеется только один сервис, имплементирующий интерфейс, то он без дополнительных телодвижений будет использован для инъекции по этому интерфейсу. И только если таких сервисов 0 или несколько, будет выброшено исключение вида
Cannot autowire service "Client": argument "$dependency" of method "__construct()" references interface "Contract" but no such service exists. You should maybe alias this interface to one of these existing services: "Implementation", "AnotherImplementation
".Но в любом случае я рекомендую либо явно прописывать алиасы для автоваринга, либо хитрить и сразу регистрировать сервис под именем интерфейса, например:
$services
->defaults()
->autowire()
->autoconfigure()
->set(Client::class)
->set(Contract::class, Implementation::class)
->args(...);
В PHP 8.4/9 будет новый JIT!
На днях Дмитрий Стогов опубликовал сообщение в externals, в котором представил новый Just-in-Time компилятор (php/src#12079), основанный на собственном фреймворке Дмитрия Intermediate Representation.
Основной плюс нового подхода в том, что исходный код PHP освободится от низкоуровневых деталей JIT-компиляции. Теперь интерпретатор будет формировать так называемое промежуточное представление, которое вышеупомянутый фреймворк превратит в ассемблерный код с учётом процессорной специфики. Также новый JIT позволит в будущем применить дополнительные оптимизации (видимо, уже на стороне фреймворка) для получения более эффективного машинного кода. Минус же состоит в более долгой JIT-компиляции.
Изначально Дмитрий собирался оставлять обе версии JIT, но, судя по обсуждению в PR, многие не против просто поменять старую на новую и не париться с поддержкой двух компиляторов. Пока не очень понятно, когда именно всё это выйдет, но я охотно верю, что уже в PHP 8.4 (ноябрь 2024).
Большое спасибо Владимиру Плахотникову за идею для поста!
P.S. Я заболел, поэтому отложил все свои анонсы. Сейчас иду на поправку. Если всё будет хорошо, то в среду мы зарелизим на стриме Typhoon 0.2.0 (бывший PHP Extended Type System) с новой крутой статической рефлексией, а в четверг я опубликую заявку для записи на курс.
На днях Дмитрий Стогов опубликовал сообщение в externals, в котором представил новый Just-in-Time компилятор (php/src#12079), основанный на собственном фреймворке Дмитрия Intermediate Representation.
Основной плюс нового подхода в том, что исходный код PHP освободится от низкоуровневых деталей JIT-компиляции. Теперь интерпретатор будет формировать так называемое промежуточное представление, которое вышеупомянутый фреймворк превратит в ассемблерный код с учётом процессорной специфики. Также новый JIT позволит в будущем применить дополнительные оптимизации (видимо, уже на стороне фреймворка) для получения более эффективного машинного кода. Минус же состоит в более долгой JIT-компиляции.
Изначально Дмитрий собирался оставлять обе версии JIT, но, судя по обсуждению в PR, многие не против просто поменять старую на новую и не париться с поддержкой двух компиляторов. Пока не очень понятно, когда именно всё это выйдет, но я охотно верю, что уже в PHP 8.4 (ноябрь 2024).
Большое спасибо Владимиру Плахотникову за идею для поста!
P.S. Я заболел, поэтому отложил все свои анонсы. Сейчас иду на поправку. Если всё будет хорошо, то в среду мы зарелизим на стриме Typhoon 0.2.0 (бывший PHP Extended Type System) с новой крутой статической рефлексией, а в четверг я опубликую заявку для записи на курс.
Пых
PHP Extended Type System 0.1.0 🚀 https://github.com/php-extended-type-system/type/releases/tag/0.1.0 https://github.com/php-extended-type-system/type-stringifier/releases/tag/0.1.0 https://github.com/php-extended-type-system/type-reflection/releases/tag/0.1.0…
Typhoon 0.2.0
Итак, завтра (21 сентября) в
Ещё раз расскажу, зачем это всё, как в общих чертах работает и какие инструменты ждать в ближайшее время.
https://youtu.be/lp5zj0DdQ28
Итак, завтра (21 сентября) в
19:00
собираемся на канале PHP Point для совместного релиза PHP Extended Type System 0.2.0 под новым названием Typhoon!Ещё раз расскажу, зачем это всё, как в общих чертах работает и какие инструменты ждать в ближайшее время.
https://youtu.be/lp5zj0DdQ28
YouTube
Typhoon 0.2.0 • Новое название • Новый конструктор типов • Новая статическая рефлексия
Подписывайтесь на наши каналы в Telegram:
• Пых https://www.tg-me.com/phpyh,
• PHP Digest https://www.tg-me.com/phpdigest,
• PHP умирает?! https://www.tg-me.com/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.
• Пых https://www.tg-me.com/phpyh,
• PHP Digest https://www.tg-me.com/phpdigest,
• PHP умирает?! https://www.tg-me.com/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.
Пых
Typhoon 0.2.0 Итак, завтра (21 сентября) в 19:00 собираемся на канале PHP Point для совместного релиза PHP Extended Type System 0.2.0 под новым названием Typhoon! Ещё раз расскажу, зачем это всё, как в общих чертах работает и какие инструменты ждать в ближайшее…
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Typhoon 0.2.0 • Новое название • Новый конструктор типов • Новая статическая рефлексия
Подписывайтесь на наши каналы в Telegram:
• Пых https://www.tg-me.com/phpyh,
• PHP Digest https://www.tg-me.com/phpdigest,
• PHP умирает?! https://www.tg-me.com/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.
• Пых https://www.tg-me.com/phpyh,
• PHP Digest https://www.tg-me.com/phpdigest,
• PHP умирает?! https://www.tg-me.com/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.
🧑🏫 Хардкорный курс по PHP, 2-ой поток (2 группы)
Ну что ж, момент настал! Подготовил базовое описание. Там ещё явно не всё есть. Пишите в комментариях, какие вопросы вас интересуют в первую очередь. Ниже продублирую только информацию о том, как попасть на курс.
Основные требования: наличие компьютера с интернетом и свободное владение русским языком. Никаких ограничений по возрасту, полу и стране происхождения/нахождения нет.
Далее необходимо пройти опрос а-ля "срез знаний" (вспоминаем школу 😅️️), ссылку на него я размещу здесь, на канале Пых, 23 сентября (завтра) в 12:00 по Москве. По результатам среза я сформирую 2 группы по 10 студентов со схожим профилем знаний. При прочих равных приоритет будет отдаваться тем, кто раньше пройдёт опрос.
Желаю удачи!
Ну что ж, момент настал! Подготовил базовое описание. Там ещё явно не всё есть. Пишите в комментариях, какие вопросы вас интересуют в первую очередь. Ниже продублирую только информацию о том, как попасть на курс.
Основные требования: наличие компьютера с интернетом и свободное владение русским языком. Никаких ограничений по возрасту, полу и стране происхождения/нахождения нет.
Далее необходимо пройти опрос а-ля "срез знаний" (вспоминаем школу 😅️️), ссылку на него я размещу здесь, на канале Пых, 23 сентября (завтра) в 12:00 по Москве. По результатам среза я сформирую 2 группы по 10 студентов со схожим профилем знаний. При прочих равных приоритет будет отдаваться тем, кто раньше пройдёт опрос.
Желаю удачи!
vudaltsov on Notion
Хардкорный курс PHP | Notion
Привет!
Пых
🧑🏫 Хардкорный курс по PHP, 2-ой поток (2 группы) Ну что ж, момент настал! Подготовил базовое описание. Там ещё явно не всё есть. Пишите в комментариях, какие вопросы вас интересуют в первую очередь. Ниже продублирую только информацию о том, как попасть на…
Срез знаний для "Хардкорного курса PHP"!
Форма закрыта 25 сентября. Вопросы скоро разберём на стриме.
Копия формы для тех, кому просто интересно, что там было: https://forms.gle/zGZ2s7W7VR2nLDBy8.
Форма закрыта 25 сентября. Вопросы скоро разберём на стриме.
Копия формы для тех, кому просто интересно, что там было: https://forms.gle/zGZ2s7W7VR2nLDBy8.
Google Docs
Копия среза знаний для "Хардкорного курса PHP" (сентябрь 2023)
В данном опросе важно честно ответить на вопросы без гугления. Дело в том, что я буду формировать группы из людей со схожим профилем знаний, но не обязательно самым продвинутым.
Представим себе такую ситуацию. По результатам этого среза я определил Васю…
Представим себе такую ситуацию. По результатам этого среза я определил Васю…
В PHP есть дженерики!
Меня тут осенило, что тип static в PHP (доступен с версии 8.0) — это, по сути, дженерик. В каждом классе его можно представить как ковариантный параметр-тип с ограничением
Пруф в песочнице Psalm вместо тысячи слов: https://psalm.dev/r/a5eda433d5
Меня тут осенило, что тип static в PHP (доступен с версии 8.0) — это, по сути, дженерик. В каждом классе его можно представить как ковариантный параметр-тип с ограничением
self
, который прокидывается по цепочке наследования, каждый раз уточняясь.
/**
* @template-covariant TStatic of A
*/
abstract class A
{
/**
* @return TStatic
*/
abstract public function returnStatic(): object;
}
/**
* @template-covariant TStatic of B
* @extends A<TStatic>
*/
abstract class B extends A
{
}
Пруф в песочнице Psalm вместо тысячи слов: https://psalm.dev/r/a5eda433d5
Пых
Срез знаний для "Хардкорного курса PHP"! Форма закрыта 25 сентября. Вопросы скоро разберём на стриме. Копия формы для тех, кому просто интересно, что там было: https://forms.gle/zGZ2s7W7VR2nLDBy8.
🥳 Отбор на "Хардкорный курс PHP" завершён
Ну что ж, я наконец-то обработал 200 заявок на курс, и два десятка студентов получили ночью письма с дальнейшими инструкциями. Большое спасибо за такой интерес, мне очень приятно!
Как именно я отбирал, рассказывать не буду. Скажу лишь, что декораторы, правильно описанные словами, принимались. 😊 Ну и как обещал, у всех был одинаковый шанс попасть на курс: я не изучал колонку с email-ами и не добавлял очков тем, кто присылал мне мотивационные письма в личку.
На ближайшем стриме обязательно обсудим вопросы и задачи из формы.
Ну что ж, я наконец-то обработал 200 заявок на курс, и два десятка студентов получили ночью письма с дальнейшими инструкциями. Большое спасибо за такой интерес, мне очень приятно!
Как именно я отбирал, рассказывать не буду. Скажу лишь, что декораторы, правильно описанные словами, принимались. 😊 Ну и как обещал, у всех был одинаковый шанс попасть на курс: я не изучал колонку с email-ами и не добавлял очков тем, кто присылал мне мотивационные письма в личку.
На ближайшем стриме обязательно обсудим вопросы и задачи из формы.
Пых
🥳 Отбор на "Хардкорный курс PHP" завершён Ну что ж, я наконец-то обработал 200 заявок на курс, и два десятка студентов получили ночью письма с дальнейшими инструкциями. Большое спасибо за такой интерес, мне очень приятно! Как именно я отбирал, рассказывать…
▶️ Разбираем срез знаний для "Хардкорного курса PHP"
Сорри, что поздно пишу — до конца не знал, успею ли. Сегодня в
https://youtu.be/8RFgWCdLJ38
Сорри, что поздно пишу — до конца не знал, успею ли. Сегодня в
18:00
встретимся на PHP Point, чтобы обсудить форму https://forms.gle/zGZ2s7W7VR2nLDBy8.https://youtu.be/8RFgWCdLJ38
YouTube
Разбираем срез знаний для "Хардкорного курса PHP"
Подписывайтесь на наши каналы в Telegram:
• Пых https://www.tg-me.com/phpyh,
• PHP Digest https://www.tg-me.com/phpdigest,
• PHP умирает?! https://www.tg-me.com/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.
• Пых https://www.tg-me.com/phpyh,
• PHP Digest https://www.tg-me.com/phpdigest,
• PHP умирает?! https://www.tg-me.com/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.