Telegram Web Link
Код-румы для онлайн-собеседований

В этом месяце провожу для Evrone технические собеседования на позицию Middle/Senior PHP разработчика и активно использую Yandex Code для практических заданий.

Раньше я всё делал сложнее для собеседуемого: давал ссылку на Gist с заданием и просил пошарить экран с IDE. Сейчас просто создаю комнату с условием задачи, отправляю ссылку кандидату, и через пять секунд мы уже обсуждаем и правим один и тот же сниппет. Это как Google Docs или как если бы Code With Me от JetBrains был доступен прямо в браузере.

https://code.yandex-team.ru/

Об инструменте узнал от @adrenaL1nkin на собеседовании в Webinar. 😊
👍40🔥13👎9💩8
Пых
🔴 PHP-линч #20 Через час линч! https://youtu.be/j7w5nmk2AFE
▶️ Начали!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3
🤡30👍8👎2👏2🌭2
🤡47🤯16👍141
🤵 💍 👰

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

https://youtu.be/nIA4GDz9APE
120🔥83👍39🍾12💩5
👍11🔥2
💩39👍15🔥9😁8🤯1
▶️ PHP-линч #21

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

https://youtu.be/DxmX2A_WJTk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥72
Пых
▶️ 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(...);
👍40🥴15🤔10🔥2🤨21
В 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) с новой крутой статической рефлексией, а в четверг я опубликую заявку для записи на курс.
🔥82👍14💊51👀1🤝1
Пых
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 сентября) в 19:00 собираемся на канале PHP Point для совместного релиза PHP Extended Type System 0.2.0 под новым названием Typhoon!

Ещё раз расскажу, зачем это всё, как в общих чертах работает и какие инструменты ждать в ближайшее время.

https://youtu.be/lp5zj0DdQ28
🔥39👍134🤔3
🧑‍🏫 Хардкорный курс по PHP, 2-ой поток (2 группы)

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

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

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

Желаю удачи!
🔥48👍178😁1
В 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
🤔25👍6🔥5🤯4😱2🤡2😁1👌1
Пых
Срез знаний для "Хардкорного курса PHP"! Форма закрыта 25 сентября. Вопросы скоро разберём на стриме. Копия формы для тех, кому просто интересно, что там было: https://forms.gle/zGZ2s7W7VR2nLDBy8.
🥳 Отбор на "Хардкорный курс PHP" завершён

Ну что ж, я наконец-то обработал 200 заявок на курс, и два десятка студентов получили ночью письма с дальнейшими инструкциями. Большое спасибо за такой интерес, мне очень приятно!

Как именно я отбирал, рассказывать не буду. Скажу лишь, что декораторы, правильно описанные словами, принимались. 😊 Ну и как обещал, у всех был одинаковый шанс попасть на курс: я не изучал колонку с email-ами и не добавлял очков тем, кто присылал мне мотивационные письма в личку.

На ближайшем стриме обязательно обсудим вопросы и задачи из формы.
👍35😢7👏52🔥1
⚓️ Podlodka PHP про тесты!

Вряд ли среди нас найдётся пыхарь, который считает, что тесты вообще не нужны. Здесь всё очевидно. Но вот про само тестирование существует куча холиваров. Верна ли пирамида? Integrated tests are a scam? Класическое или мокистское тестирование? Чистый PHPUnit или дополнительные фреймворки? White box плохо? Нужно ли 100%-ное покрытие или мутационное тестирование? И так далее...

Не знаю, какие из этих вопросов будут затронуты в рамках докладов, но раз собирается знающий народ (Дима Елисеев, ребята из Vi.Tech, Skyeng, SpaceWeb), то обсудить это всё точно получится.

Вот некоторые из заявленных в программе сессий:
• «Как теория тестирования помогает при написании тестов» (Виктор Раев),
• «Как продать автотестирование "бизнесу"» (Виталий Шароватов),
• «Контрактное тестирование (тестирование API)» (Альгис Фатеев),
• «Работа с фреймворками для написания тестов: Codeception» (Евгений Жильцов),
• «Нагрузочное тестирование» (Александр Харченко),
• «Генерация автотестов» (Семен Русин).

https://podlodka.io/phpcrew
👍2010👌1
2025/07/09 20:36:44
Back to Top
HTML Embed Code: