Git Churn
В добавку к плагину File System Info @samdark предложил идею сделать подсчет и подсветку файлов, которые часто меняются.
Алгоритм следующий:
- git log с определенного времени до текущего
- Группировка и подсчет количества файлов
Теперь у нас есть карта "путь до файла" <-> "сколько раз был комит с файлом".
Так как директории в git не хранятся, то дополнительно требуется собрать список директорий и высчитать максимальное количество.
В зависимости от количества изменений нужно привести строчку с файлов в Project View к красному оттенку. Для этого можно высчитать формулу градиента и наложить такой цвет поверх элемента в Project View.
Что дает знание о количестве изменений файла:
- Кажется, что файл выполняет несколько функций и его стоит разбить на несколько
- Частые изменения файлов – потенциальное место конфликтов git merge
- Есть файлы, которые будут меняться часто и это нормально: конфиги, переменные, id и другое.
В остальных случаях точно стоит посмотреть на файл еще раз.
Плагин уже доступен в маркетплейсе
——
Маркетплейс: https://plugins.jetbrains.com/plugin/28319-git-churn
Исходники: https://github.com/j-plugins/git-churn-plugin
Чат с обсуждением: https://news.1rj.ru/str/jb_plugins/102
——
@handle_topic
В добавку к плагину File System Info @samdark предложил идею сделать подсчет и подсветку файлов, которые часто меняются.
Алгоритм следующий:
- git log с определенного времени до текущего
- Группировка и подсчет количества файлов
Теперь у нас есть карта "путь до файла" <-> "сколько раз был комит с файлом".
Так как директории в git не хранятся, то дополнительно требуется собрать список директорий и высчитать максимальное количество.
В зависимости от количества изменений нужно привести строчку с файлов в Project View к красному оттенку. Для этого можно высчитать формулу градиента и наложить такой цвет поверх элемента в Project View.
Что дает знание о количестве изменений файла:
- Кажется, что файл выполняет несколько функций и его стоит разбить на несколько
- Частые изменения файлов – потенциальное место конфликтов git merge
- Есть файлы, которые будут меняться часто и это нормально: конфиги, переменные, id и другое.
В остальных случаях точно стоит посмотреть на файл еще раз.
Плагин уже доступен в маркетплейсе
——
Маркетплейс: https://plugins.jetbrains.com/plugin/28319-git-churn
Исходники: https://github.com/j-plugins/git-churn-plugin
Чат с обсуждением: https://news.1rj.ru/str/jb_plugins/102
——
@handle_topic
1👍13🔥9👏3❤1
Рейтинг языков программирования IEEE
Вышел новый рейтинг IEEE 2025
Из наблюдений:
- PHP популярнее Kotlin
- Kotlin поднялся на несколько позиций вверх
- JavaScript и Rust идут на спад
- Python всё еще держит всех в страхе
——
Ссылка: https://spectrum.ieee.org/top-programming-languages-2025
——
@handle_topic
Вышел новый рейтинг IEEE 2025
Из наблюдений:
- PHP популярнее Kotlin
- Kotlin поднялся на несколько позиций вверх
- JavaScript и Rust идут на спад
- Python всё еще держит всех в страхе
——
Ссылка: https://spectrum.ieee.org/top-programming-languages-2025
——
@handle_topic
1👍10🔥5❤4
Обзор плагинов IntelliJ IDEA.
На сайте JetBrains вышла статья с обзором моих плагинов от Романа Пронского. Спасибо Роме за эту статью, это даст хороший буст моим плагинам.
За год было создано достаточно плагинов, набито огромное количество шишек и time to market сведен практически к нескольким часам.
Я завтра буду рассказывать про создание плагинов для IDEA с нуля. Просто база, которую мне никто не рассказывал когда я начал все это изучать год назад.
Приходите завтра на митап, думаю мой доклад будет вам полезен. Регистрация бесплатная, записи тоже будут, скорее всего в ютубе.
Если кому-то будет сложно понимать мою английскую речь, может быть потом сделаем ещё небольшой воркшоп на русском?
Собирайте вопросы, проблемы, может быть запишу отдельный ролик как работать с плагинами и платформой.
——
Ссылка на митап
Ссылка на статью
——
@handle_topic
На сайте JetBrains вышла статья с обзором моих плагинов от Романа Пронского. Спасибо Роме за эту статью, это даст хороший буст моим плагинам.
За год было создано достаточно плагинов, набито огромное количество шишек и time to market сведен практически к нескольким часам.
Я завтра буду рассказывать про создание плагинов для IDEA с нуля. Просто база, которую мне никто не рассказывал когда я начал все это изучать год назад.
Приходите завтра на митап, думаю мой доклад будет вам полезен. Регистрация бесплатная, записи тоже будут, скорее всего в ютубе.
Если кому-то будет сложно понимать мою английскую речь, может быть потом сделаем ещё небольшой воркшоп на русском?
Собирайте вопросы, проблемы, может быть запишу отдельный ролик как работать с плагинами и платформой.
——
Ссылка на митап
Ссылка на статью
——
@handle_topic
JetBrains: Developer Tools for Professionals and Teams
JetBrains Plugin Developer Conf 2025
Free virtual community event focused on developing plugins for JetBrains products.
1🔥17❤5👍3
Немного искусства.
DeadOS Band выпустил песню про PHP,
Я считаю, что конференции по PHP теперь должны начинаться под эту песню, живое исполнение, или хотя бы с хештегом #пхпжив, #пхпвмоемсердце.
Больше всего мне понравилось вот это:
Кстати, я в этом парте подумал, что 3 секунды – это дофига.
Где 3 секунды у ларки, там 1 у Symfony и 0 у Yii3.
Есть еще более крутая песня про ООП, поэтому велком слушать кто любит репчик.
—
Ссылка на DeadOS
—
@handle_topic
DeadOS Band выпустил песню про PHP,
Я считаю, что конференции по PHP теперь должны начинаться под эту песню, живое исполнение, или хотя бы с хештегом #пхпжив, #пхпвмоемсердце.
Больше всего мне понравилось вот это:
Вместо точек пишу тире стрелочка с детства
Умирал вместе с пыхой чтобы снова воскреснуть
Кстати, я в этом парте подумал, что 3 секунды – это дофига.
Где 3 секунды у ларки, там 1 у Symfony и 0 у Yii3.
У нас многопоточность, скорость и мощь
Компиляция, типизация всегда рады помочь
Плюю им в лицо - это громоздкий хлам
Laravel за три секунды разрушит ваш храм
Есть еще более крутая песня про ООП, поэтому велком слушать кто любит репчик.
—
Ссылка на DeadOS
—
@handle_topic
Telegram
DeadOS
Для всех, кто знает, что такое позднее статическое связывание.
Тем, кто помнит, что такое denwer.
Всем, кто пишет $ в имени переменной.
Всем php-разработчикам посвящается..
> Yandex music
> Apple music
> Spotify
Тем, кто помнит, что такое denwer.
Всем, кто пишет $ в имени переменной.
Всем php-разработчикам посвящается..
> Yandex music
> Apple music
> Spotify
1🔥7❤4👍2
На днях вышла новая версия PHP 8.5
Обзор новых возможностей сделал Валентин Удальцов еще месяц назад на Стачке.
PHP не стоит на месте, развивается уже 30 лет маленькими шагами. В этом году даже я принял участие в развитии и запилил пару PR с улучшением доки для старта, RFC с внедрением CHIPS и еще пяток идей / RFC которые закрылись на моменте обсуждений / голосований / локальных переписок.
Пока все обсуждают какие фичи вошли в релиз, подсвечу что не вошло в релиз:
- PFA: Partial Function Application
- True Async
- OOP cURL
- Data Classes
- SEF: Single Expression Function
- Алиас fn для function
Я думаю, что в новый релиз тоже что-то притащу, в этот раз что-то более существенное. Может быть перезакину свои прошлые идеи еще раз, но с большей подготовкой.
Из интересностей:
- Кажется, что TrueAsync проект так и не выйдет в мир
Голосование с перевесом в нет, Edmond Dantes уже написал свои мысли в internals.
Я сильно не погружался в код, но там обещалась база для работы корутин и/или event loop. Пока различные команды делают свои корутины на генераторах, файберах, экстеншенах, мы могли бы пользоваться хотя бы более производительной версией из коробки.
- Обсуждение обновлении политики обсуждения RFC заняло 3 месяца. База для internals.
- Роман Пронский уходит с позиции СЕО the PHP Foundation.
Боюсь представить как может измениться фонд и разработка PHP, если на его позицию найдут какого-нибудь “деда”, который будет обсуждать все идеи так же, как и обновление политик обсуждений.
Спасибо Роме за проделанную работу!
—
Выступление Валентина
Обсуждения разработки PHP
Список RFC
Письмо Дантеса
—
@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Пых
Только что на php.net опубликовали PHP 8.5!
Тег уже два дня как стоит, но я ждал финального аккорда.
По этому поводу держите мой доклад со Стачки «PHP 8.5 не сбавляет темп!». Из него вы узнаете про основные фичи новой версии и нюансы их применения.
Основные…
Тег уже два дня как стоит, но я ждал финального аккорда.
По этому поводу держите мой доклад со Стачки «PHP 8.5 не сбавляет темп!». Из него вы узнаете про основные фичи новой версии и нюансы их применения.
Основные…
4👍10❤5🔥3
Call plugin
Недавно изучал SDK для одного сервиса и в комментариях к методам увидел ссылки на конечные урлы:
Или что-то в этом духе.
Хоть апи и было закрытым под авторизацией, я подумал, что было бы очень круто дёрнуть эту апишку прям из редактора!
Мы знаем, что придет JSON ответ.
Мы знаем, что от GET запроса ничего страшного не случится (правда ведь, разработчики?)
Мы знаем пароли, хосты и ориентиры.
И теперь мы можем это сделать. Куда вывести ответ? Да прям там же.
Мне понравилось как в Database плагине делается режим запросов с выводом данных в таблицу под этим же запросом.
Я пока что придумал 3(4) сценария:
- консольные команды, люблю писать в коментах
- HTTP API запросы: HTTP Verbs + URI/path
- просто урлы, чтобы открыть их тут же
- SQL запросы, почему бы и нет, но не в первой очереди
Оцените полезность плагина от “ну норм” до “пушка гонка”.
Есть ли мысли что еще можно добавить?
Как назвать плагин? Так как оно будет “вызывать” что-то я назвал его пока что “Call”, но нужно понятное и продаваемое имя.
——
@handle_topic
Недавно изучал SDK для одного сервиса и в комментариях к методам увидел ссылки на конечные урлы:
// /api/v1/users
function users() {…}
Или что-то в этом духе.
Хоть апи и было закрытым под авторизацией, я подумал, что было бы очень круто дёрнуть эту апишку прям из редактора!
Мы знаем, что придет JSON ответ.
Мы знаем, что от GET запроса ничего страшного не случится (правда ведь, разработчики?)
Мы знаем пароли, хосты и ориентиры.
И теперь мы можем это сделать. Куда вывести ответ? Да прям там же.
Мне понравилось как в Database плагине делается режим запросов с выводом данных в таблицу под этим же запросом.
Я пока что придумал 3(4) сценария:
- консольные команды, люблю писать в коментах
php yii command/name- HTTP API запросы: HTTP Verbs + URI/path
- просто урлы, чтобы открыть их тут же
- SQL запросы, почему бы и нет, но не в первой очереди
Оцените полезность плагина от “ну норм” до “пушка гонка”.
Есть ли мысли что еще можно добавить?
Как назвать плагин? Так как оно будет “вызывать” что-то я назвал его пока что “Call”, но нужно понятное и продаваемое имя.
——
@handle_topic
1🔥10👍3❤1
Intellij IDEA 2025.3
Вышла новая версия IDEA и IDE на этой платформе.
IDEA довольно хорошо оптимизируется в последнее время, раскатывая оптимизации на всех IDE.
Я, кстати, пользуюсь IDEA + PHP плагин, вместо PHPStorm.
Самое сочное:
- Islands design release. Мне очень нравится, использую еще с 2025.1, когда она появилась в бетке
- Unified distribution, теперь Community и Ultimate в одной IDE, разруливается подпиской
- Еще появился какой-то Agent/Client Protocol, что-то на MCPшном, пока не попробовал
Советую обновиться.
—
@handle_topic
Вышла новая версия IDEA и IDE на этой платформе.
IDEA довольно хорошо оптимизируется в последнее время, раскатывая оптимизации на всех IDE.
Я, кстати, пользуюсь IDEA + PHP плагин, вместо PHPStorm.
Самое сочное:
- Islands design release. Мне очень нравится, использую еще с 2025.1, когда она появилась в бетке
- Unified distribution, теперь Community и Ultimate в одной IDE, разруливается подпиской
- Еще появился какой-то Agent/Client Protocol, что-то на MCPшном, пока не попробовал
Советую обновиться.
—
@handle_topic
1👍9👏2❤1
Forwarded from Пых (Валентин Удальцов)
Ребята, мы с Данилом с CutCode запускаем новый проект для PHP-сообщества!
С одной стороны, в сообществе есть куча крутых ребят, готовых делиться опытом, обозревать тулинг и контрибьютить в экосистему PHP. Но без материального поощрения на это трудно выделить время и силы. Условный Boosty обходится дорого, а страницу там ещё как-то надо продвигать.
С другой стороны, есть вы — аудитория, которой в 2024 не хватило онлайн-контента. И вы наверняка готовы поддержать авторов, заплатив разумные деньги за хорошие материалы, которые можно прочитать и обсудить в Телеге, "не отходя от кассы".
Мы с Данилом разработали платформу по модели подписки на базе Telegram — PHPeople.
Подписка двухуровневая:
1. обязательная на общий чат — "лобное место" для всех участников, тут периодически публикуется часть контента авторов и можно обсуждать вопросы широким кругом;
2. опциональная на любые авторские чаты — собственное пространство каждого автора и его подписчиков.
Стоимость каждой подписки — 150₽. То есть, например, чтобы подписаться только на Дмитрия Дерепко, вам нужно внести 300₽ (общий чат + авторский). На Кирилла Несмеянова и Алексея Гагарина — 450₽ (общий чат + 2 авторских).
Пока их пятеро:
• Кирилл Несмеянов уже набросал всякой хардкорной дичи,
• Алексей Гагарин начал писать про разработку Testo — убийцу PHPUnit,
• Олег Мифле придумал отрефаторить старый ball of mud на Symfony и микросервисы,
• Дима Дерепко расскажет про свои плагины и разработку Language Server.
Я тоже автор. На PHPeople буду проводить закрытые стримы и публиковать посты для Пыха на пару недель раньше. В моём чате уже есть несколько постов про типизацию и нюансы Docker Compose и запись стрима про скаффолдер репозиториев Thesis и Typhoon.
Мы провели закрытое бета-тестирование и теперь готовы пригласить всех! Залетайте в @phpeople_bot, там можно подробнее со всем ознакомиться и присоединиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤2👍2👎1
Полезности сегодняшнего дня.
Visitor – удобный паттерн, чтобы пройтись по родительским элементам и дочерним, при это сохраняя какой-то контекст для выполнения действий.
Задача:
- Написать валидатор минут, часов, дней, месяцев, дней недель для крон выражений
Решение №1
- Получает выражение
- Берем первый элемент
- Понимаем что в нем содержится
- Отправляем в валидатор
Минусы в том, что в выражении конкретной позиции может быть несколько типов:
- Перечисление: 1,2,3
- Диапазон: 1-5
- Шаг: 2/3
- Комбинация: 1-5,10-15/2,3,4,5
Как в таком коде достать "число"? Можно регулярками, подстроками, можно забить, поддержать примитивные паттерны.
А можно создать визитор, который будет проходить проходить через нашу функцию когда заходит в "конечное число".
Таким образом, решение №2 очень элегантным:
- Создаем визитор на весь файл, чтобы пройти по всем выражениями
- При заходе в минутный паттерн, создаем новый визитор для минут, описываем нужную логику: разрешены цифры 0-59
- При заходе в часовой паттерт, создаем новый визитор для часов. Разрешены 0-23 числа
- При заходе в месяц можно дополнительно проверить еще и строковое представление
- И так далее
Таким образом, если мы будем парсить минутный диапазон 1-10/2, то наш минутный визитор пройдет через: 1, 10 и 2.
Любое из этих чисел ни при каком условии не должно быть вне диапазона 0-59.
Если мы захотим написать валидатор для диапазона, вы знаете как это можно будет сделать :))))
Пост был в PHPeople еще месяц назад, подписывайтесь через @phpeople_bot
Visitor – удобный паттерн, чтобы пройтись по родительским элементам и дочерним, при это сохраняя какой-то контекст для выполнения действий.
Задача:
- Написать валидатор минут, часов, дней, месяцев, дней недель для крон выражений
Решение №1
- Получает выражение
- Берем первый элемент
- Понимаем что в нем содержится
- Отправляем в валидатор
Минусы в том, что в выражении конкретной позиции может быть несколько типов:
- Перечисление: 1,2,3
- Диапазон: 1-5
- Шаг: 2/3
- Комбинация: 1-5,10-15/2,3,4,5
Как в таком коде достать "число"? Можно регулярками, подстроками, можно забить, поддержать примитивные паттерны.
А можно создать визитор, который будет проходить проходить через нашу функцию когда заходит в "конечное число".
Таким образом, решение №2 очень элегантным:
- Создаем визитор на весь файл, чтобы пройти по всем выражениями
- При заходе в минутный паттерн, создаем новый визитор для минут, описываем нужную логику: разрешены цифры 0-59
- При заходе в часовой паттерт, создаем новый визитор для часов. Разрешены 0-23 числа
- При заходе в месяц можно дополнительно проверить еще и строковое представление
- И так далее
Таким образом, если мы будем парсить минутный диапазон 1-10/2, то наш минутный визитор пройдет через: 1, 10 и 2.
Любое из этих чисел ни при каком условии не должно быть вне диапазона 0-59.
Если мы захотим написать валидатор для диапазона, вы знаете как это можно будет сделать :))))
Пост был в PHPeople еще месяц назад, подписывайтесь через @phpeople_bot
1👍9❤4🔥2
Codex Is Now Integrated Into JetBrains IDEs
Jetbrains изначально провтыкали ИИ-бум, когда каждый второй чайник кричал, что это IDE нового поколения (на самом деле это всё кусок VS кода).
Позже вышел Junie, который умел кое-что, но работало оно довольно слабо.
Параллельно существовал AI Assistant, который умел что-то где-то: где-то рядом с ошибкой была кнопка “Explain with AI”, где-то не было и всё в этом духе.
Не так давно Junie внедрили с AI Assistant плагин. Теперь чат и агент в одном окно, это удобно!
Помимо этого, можно выбрать вместо Джуна Клода. А теперь еще и Кодекса.
Вот признаки нормального инструмента: всё в одном месте, работает одинаково для юзера, хоть и по-разному под капотом.
Появится еще другие агенты, добавятся здесь в списке.
Не удивлюсь, если это всё сделано через систему плагинов и я могу втащить туда своего агента.
——
Пост: https://blog.jetbrains.com/ai/2026/01/codex-in-jetbrains-ides/
——
@handle_topic
Jetbrains изначально провтыкали ИИ-бум, когда каждый второй чайник кричал, что это IDE нового поколения (на самом деле это всё кусок VS кода).
Позже вышел Junie, который умел кое-что, но работало оно довольно слабо.
Параллельно существовал AI Assistant, который умел что-то где-то: где-то рядом с ошибкой была кнопка “Explain with AI”, где-то не было и всё в этом духе.
Не так давно Junie внедрили с AI Assistant плагин. Теперь чат и агент в одном окно, это удобно!
Помимо этого, можно выбрать вместо Джуна Клода. А теперь еще и Кодекса.
Вот признаки нормального инструмента: всё в одном месте, работает одинаково для юзера, хоть и по-разному под капотом.
Появится еще другие агенты, добавятся здесь в списке.
Не удивлюсь, если это всё сделано через систему плагинов и я могу втащить туда своего агента.
——
Пост: https://blog.jetbrains.com/ai/2026/01/codex-in-jetbrains-ides/
——
@handle_topic
1🔥7❤1👍1