Telegram Web Link
Пых
Ilija Tovilio, на текущий момент один из самых активных контрибьюторов в PHP, только что дал мне карму для публикации RFC и пожелал удачи! Буду считать это хорошим знаком! 💪 https://externals.io/message/122052#122053
📝 new MyClass()->method() без скобок

В конце прошлого года я придумал правку для синтаксиса PHP, которая позволит не оборачивать new выражения в cкобки для обращения к ним:


final class MyClass
{
const CONSTANT = 'constant';
public static $staticProperty = 'staticProperty';
public static function staticMethod(): string { return 'staticMethod'; }
public $property = 'property';
public function method(): string { return 'method'; }
public function __invoke(): string { return '__invoke'; }
}

var_dump(
new MyClass()::CONSTANT, // string(8) "constant"
new MyClass()::$staticProperty, // string(14) "staticProperty"
new MyClass()::staticMethod(), // string(12) "staticMethod"
new MyClass()->property, // string(8) "property"
new MyClass()->method(), // string(6) "method"
new MyClass()(), // string(8) "__invoke"
);


Только что я наконец-то опубликовал RFC через internals! В течение как минимум двух недель будет проходить обсуждение, потом открою голосование.

RFC: https://wiki.php.net/rfc/new_without_parentheses
Реализация и тесты: https://github.com/php/php-src/pull/13029
Можно следить за обсуждением на сайте, а можно подписаться на рассылку и принять в нём участие.
🔥135👍50👎17😐72
📣 Стачка! Stop working! Typhoon!

В эту пятницу в 15:20 по местному времени я выступаю в Ульяновске на Стачке с докладом про Typhoon (секция Backend). Расскажу, как мы собирали систему типов typhoon/type, вдохновляясь Psalm и PHPStan, как её редуцировали, как искали в ней место для self, parent и static.

Ульяновские пыхари, отзовитесь в комментариях! Можем дополнительно организоваться до или после конфы и где-то посидеть.

https://ul24.nastachku.ru/schedule
Please open Telegram to view this post
VIEW IN TELEGRAM
👍45🔥156
Podlodka PHP Crew

На ближайшей неделе стартует очередная подлодка PHP, в этот раз про БД. Но уже сегодня пройдёт открытая сессия «Зачем переходить на MySQL 8, если есть PostgreSQL в 5.х всё устраивает?»

В среду 24 апреля в 19:00 мы встретимся с Кириллом Несмеяновым, чтобы найти ответ на другой вопрос: «Зачем использовать ORM, если есть чистый SQL?»

Ну а так каждый день будет что-то интересное: Redis, Elasticsearch, Doctrine, масштабирование и миграции.

Зашифрованный одноразовый бесплатный билет для пыхаря: 4655434b-2d4f-854d-ad55-53452d53514c (уже использован) и многоразовый промокод на 500 рублей: PHPYH.

https://podlodka.io/phpcrew

Мем от @markin_igor из PHP Fart Time.
Реклама. ИП Толстая Елена Петровна ИНН:507503278104, erid:2SDnjbrpi81
🔥2513👍12😁4🤮4
Уязвимость в iconv() в GNU C Library

Новость про CVE-2024-2961 в привязке к PHP так раздули, что у многих сложилось впечатление, будто уязвимость в самом языке и масштаб последствий для пыхарей невероятно велик. Это не так. Уязвимость проявляется только при использовании функций и стрим-фильтров расширения iconv с непровалидированными кодировками, полученными снаружи. Ну то есть надо прям вот такое иметь в коде, чтобы словить атаку:


iconv('utf-8', $_REQUEST['charset'], 'my_text');


Думаю, все понимают, что в современном коде это маловероятно.

Также не ждите патч-релиза со стороны PHP. glibc подключается динамически и не компилируется в исполняемый файл. Достаточно просто обновить glibc.

Подробнее в официальном ответе на сайте PHP: https://www.php.net/archive/2024.php#2024-04-24-1
👍84🤝8😁32
ML-assisted completion

Примерно с месяц у меня в PhpStorm включен бесплатный Full Line Code Completion. Если бы после обновления он не был "искаропки", я б, наверное, так и не попробовал ничего подобного. Но раз судьба свела, вот мои наблюдения.

Без помощника:
1. размышляю над тем, что написать дальше (по сути, это самый сложный и долгий этап),
2. пишу код, используя хоткеи, шаблоны и стандартный предсказуемый автокомплит.

С помощником:
1. размышляю над тем, что написать дальше,
2. ввожу пару символов, вижу на экране подсказку (иногда с запозданием),
3. зрительно анализирую её (дополнительная мыслительная деятельность),
4. с вероятностью 40% ассистент не угадывает точь-в-точь, goto 2;
5. с вероятностью 60% угадывает, нажимаю Tab.

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

Возможно, я сейчас написал какой-то ретроградский пост и мне просто нужно установить полноценный AI Assistant, тогда-то всё встанет на свои места. Или я пишу не тот код — надо меньше думать, больше формошлёпить и крудить, а не тайфуны типунить... Короче, разубедите или поддержите меня — я в этой теме новичок.
👍64💯33😁102🤔2💩1
Пых
Дмитрий Стогов одобрил мой PR! На текущий момент RFC набрал 16 голосов "за" и 2 "против".
Официально объявляю свой RFC принятым!

Не буду ждать утра, чтобы сообщить, что я только что закрыл голосование на отметке в 25 голосов против 4. Это означает, что в PHP 8.4 мы с вами сможем писать new без скобок! Осталось только дождаться мёрджа PR в мастер.

До сих пор не верится, что шальная попытка законтрибьютить в PHP, предпринятая за завтраком 26 декабря прошлого года, увенчалась успехом. Теперь есть запал для пары других идей. Попробую летом их оформить.

Всем огромное спасибо за поддержку!
🔥329👍80🎉62🤮154🌚2👎1🍾1😎1
Пых
Официально объявляю свой RFC принятым! Не буду ждать утра, чтобы сообщить, что я только что закрыл голосование на отметке в 25 голосов против 4. Это означает, что в PHP 8.4 мы с вами сможем писать new без скобок! Осталось только дождаться мёрджа PR в мастер.…
🎉 Merged!

После исправления косяка, замеченного зорким глазом Никиты Попова, мой PR был окончательно одобрен и наконец-то попал в master! У них там как-то странно это происходит — через отдельный commit и закрытый PR, хотя у меня во всех проектах на GitHub аналогичный squash + rebase по кнопке даёт фиолетовый статус "merged", а не красный "closed". Но не суть.

Тем временем я закинул в internals ещё одну идею. Я предложил вынести методы ArrayAccess::offsetExists, offsetGet в отдельный интерфейс с рабочим названием ArrayAccessRead, чтобы можно было делать иммутабельные коллекции, поддерживающие $object['key'] синтаксис только в режиме чтения. Но выяснилось, что уже есть драфт отличного RFC, который предлагает куда более глубокое переосмысление кривого ArrayAccess. Надеюсь, что он тоже попадёт в 8.4, а я пока подумаю над чем-то ещё. 🍸
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥156🎉63👍34💩5👏42👎1👀1
🍻 Пишем на PHP и не теряем память. It even works underwater!

В этот четверг в 19:00 на Автозаводской Таганке пройдёт митап BeerPHP, посвящённый производительному PHP.

Максим Хасанов расскажет про RoadRunner, Алексей Сидоркин про Swoole, а у меня будет секция про память. Обсудим, откуда берутся утечки и как подготовить код для запуска в неумирающих рантаймах.

Только оффлайн, без трансляции и записи. Если ты в Москве, регистрируйся и приходи!

https://beerphp.ru/
Please open Telegram to view this post
VIEW IN TELEGRAM
😢73👍35👎21😡112
🐘 С днём рождения, PHP!

К 29-ому дню рождения PHP Рома Пронский опубликовал ролик, в котором он скомпилировал и запустил первую версию языка!

https://youtu.be/0BPExYh5Anw

И ещё несколько ссылок для любознательных:
интервью с Расмусом про то, как он изобрёл PHP,
статья Артёма Украинского про PHP 1 на Хабре,
музей PHP.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉80👍18🔥9👎2
📹 Стримкаст про типы в PHP

Завтра (12 июня) в 20:00 встретимся с Димой Елисеевым на новом канале Станислава Ракчаева и команды LivePHP "Абстрактный программист", чтобы обсудить типизацию. Ребята подкупили меня фразой "затронем Typhoon". 😂

В общем, заходите, задавайте вопросы, расскажу всё, что знаю.

https://youtu.be/eXfsU-x3bMg

P.S.: Видео с прошедшего BeerPHP обязательно будет, но нужно ещё подождать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥20
Разбор резюме от Егора Бугаенко

https://youtu.be/af6bidlat6Q

Прям очень зашло! Когда снова буду искать работу, обязательно переделаю резюме.

Мои заметки:
• свой документ вместо типовой выгрузки с HH,
• две версии анкеты: сжатая и яркая для технаря, подробная и скучная для HR,
• убрать подработки верстальщиком в интернет-магазине в студенческие времена,
• уникальный опыт на каждом месте работы (так-то все мы рефакторим, пилим фичи и тестируем),
• каждый факт должен подтверждаться ссылкой.

Понравилась следующая мысль. Если я, например, указываю в резюме "Git" и "Symfony 6", то я лукавлю, потому что это неравноценные навыки. Я никогда не просматривал исходники гита, не делал про него докладов, тем более не контрибьютил. Да, я умею в rebase, знаю разные flow, но это само собой разумеется. В то же время у меня суммарно под сотню PR и issue в symfony/symfony, я выступал на SymfonyCon, лично знаком с Core-командой и читаю курс с использованием этого фреймворка. Принципиально другой уровень! Так что в версии резюме для технаря "Git" я уж точно уберу.
👍39🔥13👎11🤡6
Пых
BeerPHP сменил локацию! Митап пройдёт в лофте "Событие" на Таганке. Организаторы говорят, что эта площадка значительно лучше. Дата и время те же самые: 6 июня (завтра) в 19:00. Также мне разрешили поделиться с вами записью доклада после мероприятия! ht…
📹 BeerPHP. Пишем на PHP и не теряем память

Наконец-то мы смонтировали ролик! Помимо доклада в нём есть признание в любви к вам, матерные слова и подробная история моего RFC.

Получилось очень задорно! Спасибо организаторам и участникам BeerPHP за такую крутую атмосферу.

https://youtu.be/56I5C0NYjv8
https://vudaltsov.github.io/memory-leaks-slides/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍70🔥326🥰1🌭1
🎵 Музыкальный стрим!

Хотите музыкальный стрим сегодня с 17 до 18 МСК? Позже, к сожалению, не получится из-за договорённостей с соседями. Сыграю несколько песен на барабанах (можно будет даже заказать), отвечу на ваши вопросы. Посмотрим, что из этого выйдет. 😉

Ставь 🤩, если заглянешь.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩51🔥14👍13👎73😁2
2025/07/08 14:29:54
Back to Top
HTML Embed Code: