Telegram Web Link
Пых
Ну что ж, давно не виделись?! Линч в 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 Финал
Код-румы для онлайн-собеседований

В этом месяце провожу для 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
🤵 💍 👰

Сегодня у нас с Ольгой год семейной жизни! А ещё, так совпало, свадьба моего брата! По этому поводу мы записали кавер на любимую песню. Приглашаю вас послушать!

https://youtu.be/nIA4GDz9APE
▶️ PHP-линч #21

К сожалению, в 19 не получается, поэтому проведу на час раньше из кафе. Надеюсь, будет нормально слышно.

https://youtu.be/DxmX2A_WJTk
Please open Telegram to view this post
VIEW IN TELEGRAM
Пых
▶️ PHP-линч #21 К сожалению, в 19 не получается, поэтому проведу на час раньше из кафе. Надеюсь, будет нормально слышно. https://youtu.be/DxmX2A_WJTk
Вчера на линче коснулись нюансов работы автовайринга в Symfony. В какой-то момент я сказал, что даже если в DI найдётся ровно один сервис, реализующий некий интерфейс, то Symfony не заавтовайрит этот сервис без алиаса. Но в чате меня поправили, и я пообещал проверить.

Я был не прав. Действительно, если в контейнере имеется только один сервис, имплементирующий интерфейс, то он без дополнительных телодвижений будет использован для инъекции по этому интерфейсу. И только если таких сервисов 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) с новой крутой статической рефлексией, а в четверг я опубликую заявку для записи на курс.
🧑‍🏫 Хардкорный курс по PHP, 2-ой поток (2 группы)

Ну что ж, момент настал! Подготовил базовое описание. Там ещё явно не всё есть. Пишите в комментариях, какие вопросы вас интересуют в первую очередь. Ниже продублирую только информацию о том, как попасть на курс.

Основные требования: наличие компьютера с интернетом и свободное владение русским языком. Никаких ограничений по возрасту, полу и стране происхождения/нахождения нет.

Далее необходимо пройти опрос а-ля "срез знаний" (вспоминаем школу 😅️️), ссылку на него я размещу здесь, на канале Пых, 23 сентября (завтра) в 12:00 по Москве. По результатам среза я сформирую 2 группы по 10 студентов со схожим профилем знаний. При прочих равных приоритет будет отдаваться тем, кто раньше пройдёт опрос.

Желаю удачи!
В PHP есть дженерики!

Меня тут осенило, что тип 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-ами и не добавлял очков тем, кто присылал мне мотивационные письма в личку.

На ближайшем стриме обязательно обсудим вопросы и задачи из формы.
2025/07/04 04:18:00
Back to Top
HTML Embed Code: