Хэндлим тему | Дерепко – Telegram
Хэндлим тему | Дерепко
275 subscribers
51 photos
3 videos
1 file
56 links
Discussion group @handle_topic_chat
Contact with me @xepozz
Download Telegram
PHP 📈

Я вот уже полгода пытаюсь сделать что-то в самом PHP:
- Фичи
- Документация
- Окружение для работы локально
- RFC

И вот время пришло, мой Pull Request смёржили за 8 минут!

——

Ладно, последние полгода я пока что изучаю внутренности Zend Engine, пытаясь решить те или иные задачи.
Выходит неплохо, но сложно. Сложно понимать C не только мне, но и IDE:
- Clion поддерживает C/C++, но не поддерживает PHP (*.phpt файлы, в них тесты)
- PHPStorm поддерживает PHP/PHPT (очевидно), но не поддерживает C/C++
- Intellij IDEA поддерживает PHP/PHPT, нооооо… не поддерживает C/C++

Языковое расширение PHP для IDEA выполнено в виде плагина, поэтому в IDEA Ultimate можно установить PHP плагин и всё будет работать точно так же, как и в PHPStorm, разве что некоторые моменты из UI могут не добавиться.
Я думал, что поддержка C/C++ тоже сделана в виде плагина, совместимого с IDEA Ultimate, но, видимо нет.

Приходится писать код в Clion, но даже Clion не может понять весь кастомный C, со всеми макросами и шаблонами.
Кодить и дебажить PHP куда проще, чем создавать PHP!



@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍16👏75🤯2
Intellij IDEA Conf

Сегодня будет конфа от Jetbrains посвященная IDEA и разработке около неё.
Буду смотреть одним глазом и участвовать в обсуждениях. Может чего интересного узнаю.

1️⃣ День первый

12:00 – 13:00 МСК – 30 лет Java... Путешествие продолжается
— Sharat Chander
13:00 – 14:00 МСК – Kotlin Notebooks для Spring-разработчиков
— Ignat Beresnev
14:00 – 15:00 МСК – Советы и хитрости для GraalVM и Graal Languages
в IntelliJ IDEA — Fabio Niephaus
15:00 – 16:00 МСК – Эмоции от нулевых значений в Valhalla
— Rémi Forax
16:00 – 17:00 МСК – Продвинутые возможности LangChain4j
для готовых к продакшену AI-приложений — Lize Raes
17:00 – 18:00 МСК – От нуля до героя: интеграция Java на Azure
с IntelliJ IDEA — Sandra Ahlgrimm
18:00 – 19:00 МСК – Великолепная IntelliJ IDEA
— Josh Long

https://www.youtube.com/live/Bd8EA8XKyLQ

2️⃣ День второй

12:00 – 13:00 МСК – "Sudo, Make Me a Sandwich!" – живое программирование
с агентным ИИ в IntelliJ IDEA — Anton Arhipov
13:00 – 14:00 МСК – IntelliJ IDEA – IDE, которая говорит на Gradle
— Paul Merlin
14:00 – 15:00 МСК – От Вавилонской башни к рыбке-переводчику:
эволюция архитектуры Kafka с Schema Registry — Viktor Gamov
15:00 – 16:00 МСК – Догоняем JUnit — Marc Philipp
16:00 – 17:00 МСК – Дебаты о современных базах данных: документы, таблицы
или документы в таблицах? — Franck Pachot
17:00 – 18:00 МСК – Null Safety в Spring-приложениях с JSpecify и NullAway
— Sébastien Deleuze
18:00 – 19:00 МСК – Взлом и защита ИИ-систем: игра с огнем
и управление пламенем ИИ — Bar-El Tayouri
19:00 – 20:00 МСК – ООП против DOP: что выбрать?
— Venkat Subramaniam

https://www.youtube.com/live/qg6tj8Tf36E

Кстати, через 2 недельки PHP Verse. Всем любителям PHP точно стоит записаться и добавить в календарь.

——

@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍7🔥2
Яндекс.Конфа, завтра.
Forwarded from Yandex for Developers
🛎 Infra.conf’25 пройдёт уже завтра!

Ждём очно всех, кто получил подтверждение офлайн-регистрации. И несём ссылку на трансляцию тем, кто предпочитает онлайн!

Infra.conf — это конференция только про инфраструктурные боли и их решения. В программе 17 докладов в двух залах с утра и до самого вечера.

Вот часть из выступлений:

🔴 Кирилл Сюзев из команды Yandex Infrastructure расскажет про архитектуру и историю создания CI/CD на платформе для разработчиков SourceCraft

🔴 Александр Николаичев и Николай Гриценко из Yandex Infrastructure покажут, почему все дороги ведут в Internal Development Platform

🔴 Роза Морозенкова из Купер.тех расскажет, кому и зачем нужна ML-платформа

🔴 Валерий Евдокимов из ecom.tech поделится опытом внедрения OpenTelemetry, Qryn и Coroot для выстраивания системы наблюдаемости

🔴 Виталий Шишкин из Positive Technologies расскажет о лучших практиках и нюансах разработки Tracing Policy Tetragon

🔴 Эдуард Оболенский из Yandex Infrastructure поделится опытом создания инфраструктуры для мобильной разработки

➡️ Остальные доклады ищите в программе конференции на сайте. Трансляция будет там же.

💓 Ждём вас!

⭐️ Если у вас оформлен Telegram Premium, поддержите наш канал по ссылке

Подписывайтесь:
💬 @Yandex4Developers
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1🔥1
🖼 Jetbrains Survey

Каждый год прохожу опросник от JB.
Мне не сложно, ребятам полезно, мне интересно.

Интересно что:
- узнать новые технологии, упомянутые в опросниках
- узнать какие-то инсайды от статистик/текстов
- вспомнить свои прошлые ответы и увидеть, как ты растешь

В этом году прям хороший упор на AI область. Видно, что компания начала туда расти и изучила конкурентов. Молодцы, что сказать.

Есть возможность выиграть какой-то приз: мак, пару сотен баксов, мерч.
Шанс я не знаю какой, поэтому особо не надейтесь 🙂

Можете посмотреть на результаты опросника за прошлый год. Красивые и интересные сводки получаются из этих долгих опросников.

Опросник можно пройти здесь, если вы еще его не прошли.
Результаты опросника за 2024 год здесь.

——

@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5👌2🔥1
Context Collection Competition от Jetbrains

Стартует соревнование по обработке контекста кода.
Скорее это разработка на заказ, но с бонусом и возможностью порекламиться.

Мне кажется, что финальное решение пойдет в саму IDEA или плагины, чтобы собирать и обрабатывать контекст для AI Assistant и Junie, чтобы они работы быстрее, без надобности делать ls -la / в консоли.

Даты, забрал с лендоса:

June 2, 2025: competition opens and practice phase begins
June 9, 2025: public phase begins
July 25, 2025: public phase ends, private phase begins
July 25, 2025: solution paper submission opens
August 18, 2025: private phase ends
August 18, 2025: final results announced
August 26, 2025: solution paper submission closes
November 2025: solutions presented at the workshop

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

По ссылка можно почитать больше инфы.

Лендос: https://lp.jetbrains.com/research/context-collection-competition/
Eval.AI: https://eval.ai/web/challenges/challenge-page/2516/overview
Github: https://github.com/JetBrains-Research/ase2025-starter-kit

——

@handle_topic
1👍5🔥4
PHP 30 лет

```
В этот день написали меня на свет
В этот день с иголочки сеньор одет
В этот день теплом ваших серверов я согрет
Мне сегодня тридцать лет
В этот день скажу миру: «Hello world»
В этот день я в True Async возьму билет
В этот день и exit() не во вред
Мне сегодня тридцать лет
```

Приходите на стрим от CutCode по поводу дня рождения PHP с блек джеком и мерчом
😁95👍2🔥1
🎉 30 лет PHP! Присоединяйтесь к праздничному стриму!

Завтра, 8 июня в день рождения PHP в 18:00 (мск) вместе с Сергеем Пантелеевым:
🔹 Пообщаемся, обсудим итоги опроса (успейте заполнить форму → https://forms.gle/X2uw61xAxhX88uiQ6)
🔹 И... разыграем слонов! 🐘

Не пропустите! 🚀 - https://youtube.com/live/85xnTYzVtgw
#PHP30
4👍2🔥2
Dmitrii
PHPVerse – 30 лет на слоне Jetbrains запланировали онлайн митап по поводу дня рождения PHP – пыхе 30 лет. Что будет: - стрим на ютубе со звёздами пхп - сессии по 20 минуток - феерические анонсы - можно задавать вопросы Кто будет: - тот самый лысый - Nicolas…
PHPverse 2025, CodeIgniter ягодка опять!

Сегодня в 14:30 по МСК!

1️⃣14:30–14:40
Let's Dive In! Открытие JetBrains PHPverse 2025 с приветствием от ведущих и настройкой на день, посвященный празднованию 30-летия PHP.

2️⃣14:40–15:10
FrankenPHP: Reinventing PHP for the Modern Web Kévin Dunglas

3️⃣15:15–15:45
Symfony: Current State and Future Plans Nicolas Grekas

4️⃣15:50–16:20
Building MCP Servers With PHP Marcel Pociot

5️⃣16:25–16:55
How AI Is Changing the Tech Industry Cheuck Ting Ho

6️⃣17:00–17:30
Laravel: Q&A With Its Creator Taylor Otwell

7️⃣17:30–17:40
PHP Anniversary Merch Презентация юбилейного мерча и розыгрыш призов

8️⃣18:00–18:30
The Future of PHP Education: Jeffrey Way, Povilas Korop, Kevin Bond

9️⃣18:35–19:05
PHP Foundation: Growing PHP for the Future Roman Pronskiy, Gina Banyard

1️⃣0️⃣19:10–19:30
See You Next Time! Завершение мероприятия с итогами и финальным розыгрышем призов



Идём? На какие сессии пойдете?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2👎1👏1
Начинается!
Forwarded from Пых (Валентин Удальцов)
Пыхап #4 × Lamoda Tech / 19 июня 2025

Ровно через 2 недели состоится четвёртый Пыхап! В программе 3 крутых доклада и новый формат — факап-разгоны!

👁 Observability в PHP без боли
Олег Мифле из Altenar научит держать руку на пульсе прода при помощи логов, метрик и трейсинга.

🎲 Абьюзим random_bytes()
Фёдор Кулаков из Lamoda проведёт в недра PHP, чтобы показать, как за минуту получить одинаковые "рандомные" значения.

📤 Кто отправит outbox?
Валентин Удальцов покажет, как эффективно отправлять сообщения, сохранённые вместе со стейтом.

🤣 Факап-разгоны
Опробуем новый формат от Lamoda Tech! 4 эксперта на сцене сначала обсудят свои факапы, а затем поразгоняют кейсы из Хобота, зала и чата трансляции. Путём голосования определим 2 победителей, которые получат бесплатные билеты на Пых.конф’25.

🍕 Афтепати и игры
После митапа можно будет остаться поболтать за пиццей.

📍 Пыхап пройдёт 19 июня в 19:10 (четверг) в офисе Lamoda (ул. Крылатская, 15). Вход бесплатный! Регистрация откроется завтра в 15:00 МСК на канале Пых.

📹 Как обычно, будет трансляция на YouTube и VK Видео с записью!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥2
Собираем красивые тексты ошибок

Я люблю делать тексты ошибок понятными, читаемыми, информативными и стилистически красивыми.

База:
- заключать все подстаноуки в кавычки
- использовать двойные кавычки, вместо одинарных
- дочитать до конца и увидеть последний пункт

В далеком 2020 году я создал PR в Doctrine, но его морозили, и я не интересовался пинанием его дальше. 

С того момента Doctrine изменилась сильно, но узнать плохое написание текстов с ошибками можно по первому байту. Сейчас всё расскажу.

Представим строчку:

"Invalid literal '" . $literal . "'"


Такая строчка выглядит как минимум грязно, а как максимум избыточно.
Если строка заключена в двойные кавычки, то вы сможете делать интерполяцию переменных внутри этой строки без надобности конкатенации.

Например, это могло бы выглядеть так:

"Invalid literal '$literal'"


Чуть более явный вид будет такой:

"Invalid literal '{$literal}'"


Более явный – потому что фигурными скобками я подчеркиваю намерение сделать интерполяцию, а не написать $literal просто как текст, исключая возможность перепутать свои намерения.

Следующий уровень мастерства (ирония) – вовсе не писать кавычки в подставляемые значения:


'Invalid parameter: token ' . $key . ' is not defined in the query.'


В итоге, когда получите ошибку при $key = " "

Invalid parameter: token is not defined in the query.


И HTML склеит 2 пробела в 1, текст будет очень полезным и вспомогательным. Найти такие ошибки в исходниках бывает очень сложно, хоть здесь всего лишь 1 подстаноука.

Даже когда вы получите ошибку при $key = "function"

Invalid parameter: token function is not defined in the query.


То сможете запомнить, что подстановки в данной библиотеке происходят без кавычек вовсе.

Так вот, когда вы получите первую ошибку где-нибудь на веб странице и она будет выглядеть так:

Invalid literal '5'


После того и будете думать, что '5' – это значение подстановки.
То есть, в переменной типа string лежат 3 символа: кавычка, число, кавычка.
Искать такое значения у себя по коду или алгоритмам, которые могли бы выдать такое значение сложно. Тем более, если они такого не делают.

Если открыть исходники и увидеть способ формирования строки ошибки:

"Invalid literal '" . $literal . "'"


Можно предположить, что $literal = "5" или $literal = 5. Уже лучше, но порой бывает нужным еще и тип переменной вывести.

Я уже много лет предпочитаю другой способ записи ошибок/интерполяции строк – через sprintf:


sprintf('Invalid literal "%s".', $literal)


Этот вариант позволяет мне делать всё что захочу с текстом ошибки: кавычки, переносы строк, вложенные интерполяции, удобный поиск таких строк.
Я не теряю контекст текста ошибки, когда читаю или пишу его. Я могу писать $ в тексте и не думать про интерполяцию.

Когда текст ошибки простой – я позволяю себе делать простую конкатенацию

'An error occurred: ' . $error


Почему я считаю такое позволительным:
- не нужна интерполяция в конце, потому что дальше подстановки ничего нет – ни кавычек, ни точки, ни продолжения текста
- текст ошибки явно отделяет себя от подставляемого значения через символ двоеточия
- благодаря такому разделению можно не писать кавычки

Хоть текст 'An error occurred: %s' был бы полезнее при учетом интернационализации (i18n) приложения, без i18n такое использование вполне элегантное.

Кстати, Intellij IDEA позволяет превратить строку с конкатенацией в строку с sprintf за пару кликов при помощи интентов:
- Option + Enter – нажать комбинацию клавиш на строке
- "spr" – для удобной фильтрации выдаваемых интентов
- Convert string interpolation to a sprintf call – название нужного нам интента

Потом расскажу про интерполяцию в Kotlin, куда без этого.

Как вы относитесь к подстановкам через sprintf vs string interpolation?

---

PR: https://github.com/doctrine/orm/pull/8212
Doctrine/QueryException: https://github.com/doctrine/orm/blob/3.4.x/src/Query/QueryException.php#L80

---

@handle_topic
1👍10🔥32
Tim Düsterhus когда научился использовать sed

Даже github-actions не сумел сразу все теги добавить 🤔



Pull Request: https://github.com/php/php-src/pull/19063
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍4🔥3😁1
XML Clark Notation

Не так давно пришлось столкнуться с парсингом XML на JS.
С виду всё просто:
- Берем парсер из браузера, либо ставим свой
- Создаем парсер: new DOMParser()
- Запускаем parseFromString(string)

В полной мере не получалось тестировать корректность парсинга и всех дальнейших преобразований. Зато замечал изредка ошибки в консоли браузера, что что-то с элементом не так.
Однажды решил залезть туда и перехватить содержимое XML, которое выглядело следующим образом


...
<m:r>
<w:rPr>
<w:Fonts w:ascii="Cambria Math" w:hAnsi="Cambria Math" />
<w:w w:val="105" />
</w:rPr>
<m:t {http://www.w3.org/XML/1998/namespace}space="preserve">,
</m:t>
</m:r>
...



Я не сразу увидел, но потом как увидел!

<m:t {http://www.w3.org/XML/1998/namespace}space="preserve">


Сначала я подумал, что это какой-то невалидный XML и с парсером всё ОК. Однако, попробовал другие документы и обнаружил, что баг всё-таки не в XML, а в парсере.

Такая запись называется Clark Notation, она представляет из себя "inline" неймспейма документа прямо в место использования этого атрибута/тега.
Вместо объявления xmlns, namespace пишется прямо в фигурных скобках: {http://example.com}element.

Если сделать обратное преобразование, то результат будет примерно такой:

<m:t xmlns:ns="http://www.w3.org/XML/1998/namespace" ns:space="preserve">


Т.е.:
- Мы вытащили содержимое в фигурных скобках в отдельное указание неймспейса
- xmlns=NS_NAME="NS_VALUE"
- И заменили эти символы на использование этого неймспейса
- NS_NAME:space

Такое преобразование можно делать в обе стороны и даже иметь несколько инлайнов в одном теге, либо даже неймспейс тега заинлайнить:

Например, было:

<cars:part xmlns:cars="http://www.cars.com/xml"/>


Стало:

<{http://www.cars.com/xml}part/>


Выглядит короче (иногда), но JS парсер с таким не справился!

А как же PHP?

PHP Warning:  simplexml_load_string(): Entity: line 1: parser error : Couldn't find end of Start Tag tag line 1 in php shell code on line 1


Еще пыха сходит с ума и выводит эту ошибку раз 10!

А вот что получилось в Kotlin!

Element type "tag" must be followed by either attribute specifications, ">" or "/>".


В общем, стандартные средства не понимают этого Кларка.
Я сделал небольшую функцию на регулярке и циклах с заменой подстрок {...}attr на xmlns:nsN="..." nsN: и теперь всё работает как надо.

Кто-то сталкивался с этим Кларком? Как решали подобное?

——

Небольшая статья от того самого Кларка: http://www.jclark.com/xml/xmlns.htm
Вроде даже есть библиотека на PHP: https://sabre.io/xml/clark-notation/

——

@handle_topic
1👍72🔥2
Так и живем 🤷‍♂️
1😁23
Работа с кодом в презентациях

Кто хоть раз создавал презентации в которых нужно показать код, тот может вспомнить, насколько плохо это сделано в редакторах презентаций.

Не так давно нашел инструмент для помощи создания контента для презентаций: SlidesCodeHighlighter

Что он позволяет делать:
- Выбрать язык для подсветки
- “Авто” язык тоже хорошо работает
- Есть возможность выбрать тему, как светлую, так и темную
- Шрифты, размеры шрифта
- Мультикурсоры
- Возможность выделить текст и повлиять на текст “рендера”: сделать его жирным, сделать текст ярким, а все остальное бледным и тп

Как это работает:
- Заходишь на сайт инструмента
- Вставляешь код, который нужно подсветить
- Текст генерируется с обёртками вокруг слов, который подкрашиваются через <span style=“color: …”>
- При копировании копируются все стили текста
- При вставка ваш редактор парсит эти стили и текст, создает своё представление и вы получаете раскрашенный код

Работает с Keynote и Arc на Mac.

——

Ссылка: https://romannurik.github.io/SlidesCodeHighlighter

——

@handle_topic
19👍8🔥4
Новости из мира #PHP

В последнее время я много уделяю времени контрибьютингу в PHP Core. Решил поделиться новостями за последнее время. Довольно много всего вылилось.

Single Expression Functions (SEF) перевел на стадию голосования.

Честно говоря, думаю его никто не лайкнет. Вопросов было мало, хоть и изменение в пару строк. Предыдущая попытка была от Larry Garfield несколько лет назад, но не прошло из-за нерелевантных вопросов и утверждений.
В общем, через 2 недели узнаем итоги.

Обсуждение: https://externals.io/message/127423
RFC: https://wiki.php.net/rfc/single-expression-functions
GitHub: https://github.com/php/php-src/pull/17677



CHIPS RFC
Столкнулся на работе с отсутствием поддержки CHIPS в PHP при использовании setcookie, который используется в Yii2.
Пришлось сделать PR. Спросил нужно ли готовить RFC, а мне сказали, что был уже предыдущий заход от Niels Dossche.
Списался с ним, пообщались, сделали совместный RFC. Нильс выражает опасение: даже ради такой плёвой штуки подстраховался и накинул в RFC объяснений. Видимо тоже отвергали сотню раз уже.

Мой PR: https://github.com/php/php-src/pull/19054
Обсуждение: https://externals.io/message/128047
RFC: https://wiki.php.net/rfc/chips
GitHub: https://github.com/php/php-src/pull/12652



Async Engine API вышел на обсуждение.

Я думаю, это какая-то база для асинк фреймворков, чтобы они смогли адаптировать свои реализации под стандарты.

Комментарий от Edmond Dantes, инициатора этого RFC: Это базовое апи для расширений, которые будут предоставлять async возможности.

Можно поиграться с докером:

# Build the image
docker build -t true-async-php .

# Run interactively
docker run -it true-async-php bash


Dockerfile: https://github.com/true-async/php-async/blob/34eaee6a28d9c27a2f579e7cece28877c5e7666d/Dockerfile
Обсуждение: https://externals.io/message/128053
RFC: https://wiki.php.net/rfc/true_async_engine_api
Оригинальный RFC: https://wiki.php.net/rfc/true_async
GitHub: https://github.com/php/php-src/compare/master...true-async:php-src:true-async-api-stable



Short Constructor
Случайно всплыл Records RFC и я вспомнил о крутой фиче в Kotlin – короткий конструктор
Долго не думая, запилил бетку, практикуясь писать сишный код.
Закинул на обсуждение всем с возможным развитием в создание RFC.
Поговаривают, что изменение синтаксиса не сильно любят в Core.

Обсуждение: https://externals.io/message/128060
Обсуждение Records: https://externals.io/message/125975
GitHub: https://github.com/php/php-src/pull/19133

——

@handle_topic
1👍11🔥85
Junie on Github!

Jetbrains выкатили возможность использовать джуна на гитхабе:
- Создаете Issue
- Назначаете исполнителем Junie
- Идёте заваривать кофе, ведь скоро останетесь без работы и нужно привыкать к беззаботной жизни
- Проверяете решение

Можно еще и тегать в ревью, чтобы он пришел ревьювить сам.

Если вы поддерживаете Open Source, то прямо сейчас можете подать заявку на получение бесплатного 6 месячного пробного периода!

Я подался, надеюсь получится двигать свои проекты быстрее и не проехать остановку!

Лендос и форма: https://www.jetbrains.com/junie-github/



@handle_topic
1🔥8👍3