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

Концовка топ😂
С днем космонавтики!

День космонавтики — отмечаемая сначала в СССР, а после в России и других странах постсоветского пространства 12 апреля дата, установленная в ознаменование первого полёта человека в космос.
1👍7🔥3🍾2
Media is too big
VIEW IN TELEGRAM
С новым годом!

Вчера День Космонавтики, а сегодня Новый Год в Тайланде!

Называется Songcran. Отмечают его несколько дней. В больших туристических местах просто засады с обливанием водой друг друга. У каждого уважающего себя тайца имеется мега водяная пушка. А самых хитрые берут кастрюлю и поливают тебя из ведра, а совсем ниндзя приспускают окно в машине стреляют в тебя 👍

Поехал покататься по центру и, честно говоря, купаться совсем не горел желанием. А когда облили пару раз уже и настроение поднялось, и поехал еще пару кругов навернул по центру 😂

На популярных пляжах вроде бы вообще пенные вечеринки на улицах.
Тайцы веселые и добрые. Будьте, как тайцы 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍7🔥3
Регулярные выражения! 👻
Не страшно? И не должно!
#мысли

Пару недель назад решил написать серию статей по регулярным выражениям.
Сел описывать все свои знания. Хотел очень кратко уложиться в 1-2 поста, чтобы захватить минимальный комфортный максимум, чтобы не забивать голову о рекурсиях и прочих вещах, но в то же время суметь написать регулярку для какого-нибудь DSL.

В общем, из 1-2 постов это переросло в 8 и там я еще не уложил реально сложные вещи.

Хотел сделать ежедневную серию, чтобы был какой-то фидбек от вас с решением задачек: от простых к легким. А в конце могли бы подвести итог разбором или созданием своего парсера, например, урезанной версии PHP или Python.

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

На прошедшей недели по работе пришлось сделать пару вещей на регулярках и опять пришел к мысли о написании серии постов.
Однако вчера пришла другая идея: создать отдельный канал а-ля “5min regexp”: раз в какое-то время базово проходиться по базовым и сложным вещам, время от времени публиковать разборы задачек, интерактивы в виде выбора правильного результата и задач на размышление.

Пока не знаю, будет ли это кому-то интересно, поэтому хотел бы узнать у вас.

Что думаете, отдельный канал с интерактивами, задачками, обучалками, разборами или серия больших и жирных постов?
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍12
Куда пропал?
#оффтоп

С середины Апреля ничего не писал, но много разного произошло.
Если перестал писать статьи и заметки, то чем дольше этого не делаешь, тем дольше будешь это откладывать. Кто занимается подобным то скорее всего меня понимает. При этом у меня в черновиках есть несколько "продакшен-реди" статей, даже это откладывалось.
Решил не делать новогодних резолюций, а взять и написать сегодня.

Буду наверстывать, вкидывать уже что-то из прошлого и делиться своими мыслями, и уже совсем скоро будет приятный бонус всем кто использует PHPStorm для разработки на PHP. Нет, не лицензия и не прокси сервер, вы уж там сами 😁

Пока готовлю статью для хабра, жду финальных апрувов, надеюсь вам понравится.

Всех с наступающим 🎄❄️☃️
1🔥1563🎄2
Хэндлим тему | Дерепко
Куда пропал? #оффтоп С середины Апреля ничего не писал, но много разного произошло. Если перестал писать статьи и заметки, то чем дольше этого не делаешь, тем дольше будешь это откладывать. Кто занимается подобным то скорее всего меня понимает. При этом…
👍Апрувнули релиз, плагин теперь доступен, статья лежит на хабре, можно пользоваться и хейтить.

Короткий обзор возможностей:
Плагин позволяет сделать строчки чем-то большим, чем просто строковый литерал.

Например, строка может быть:
- Названием файла
- Названием свойства класса
- Названием метода
- Еще что-то?

Плагин имеет некую систему базового референса, от которого можно делать вычисления:
- Проект
- Директория
- Текущий файл
- Переменная ($var->…)
- Аргумент (method($var, …))

Описывая эти вещи самому можно сделать довольно сложные вычисления простым декларативным языком:

Подсказки для Yii2 метода render():

<files
className="\yii\base\Controller"
methodName="render"
argumentIndex="0"
fileExt="php"
relatedTo="file"
>
<directoryProcessors>
<regexp from="Controller\.php" to=""/>
<regexp from="([a-z])([A-Z])" to="$1-$2"/>
<regexp from="/controllers/" to="/views/"/>
<regexp from="/modules/([^\\/]+)/views/" to="/themes/default/modules/$1/views/"/>
</directoryProcessors>
</files>


Подсказка метода render() в файле представления:

<files
className="\yii\base\View"
methodName="render"
argumentIndex="0"
fileExt="php"
relatedTo="directory"
/>


Подсказка мейлера:

<files
className="\yii\swiftmailer\Mailer"
methodName="compose"
argumentIndex="0"
fileExt="php"
relatedTo="project"
>
<directoryProcessors>
<append value="common/mail/" />
</directoryProcessors>
</files>


Подсказка Active Form:

<properties
className="\yii\widgets\ActiveForm"
methodName="field"
argumentIndex="1"
relatedTo="argument"
relatedArgumentIndex="0"
/>


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

——

Статья: https://habr.com/ru/articles/868898

Публичный репозиторий: https://github.com/xepozz/meta-storm-idea-plugin

Плагин на маркетплейсе: https://plugins.jetbrains.com/plugin/26121-meta-storm

@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥16👍1
Всех с наступившим Новым 2️⃣0️⃣2️⃣5️⃣ годом 🎅
В новом году нас с вами ждут много классных проектов, тысячи нереализованных идей, куча статей, сотни крутых материалов для изучения и конечно релиз Yii3!
А плагин MetaStorm уже готов к финальной полировке рефакторинга структуры конфигов, а новые фичи уже просятся в релиз.
Остаемся на связи 👋
Please open Telegram to view this post
VIEW IN TELEGRAM
1🎄643👍3
MetaStorm⚡️

Редизайн. Масштабируемая архитектура композитного типа. Коллекции. Коллекторы. Переменные. Таблицы. Атрибуты. Система поиска XPath. Cycle. Temporal. Moonshine.

Вот что произошло с плагином за пару недель. Серьезные обновления на основе фидбека от вас. Стало реально проще читать и писать конфиги. Новый релиз уже в проде и доступен для обновления.
Кстати, для у плагина появился свой телеграмм канал, где мы обсуждаем его полезность.

Описал все что произошло с плагином на Хабре, а парни из CutCode сделали обзор и даже взяли у меня интервью!
Ждем видос, а пока можете почитать статью и сказать стало ли понятнее 😄

Статья на Хабре

Пора уже форкать PhpStorm?

——

@handle_topic
@meta_storm
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥9💯3👍2😁1
Видео обзор плагина MetaStorm для PHPStorm 🚀

Покажу, как работает MetaStorm и как он упрощает работу с автокомплитом в PHPStorm! Так и не дождался поддержки MoonShine в Laravel Idea, но получилось всё что хотел реализовать в MetaStorm! Сразу скажу, скорость работы с MoonShine повышает максимально!

Вы увидите:
- Примеры конфигураций MetaStorm и принцип работы
- Возможности автокомплита для иконок, полей, методов и моделей
+ Интервью с автором плагина - Дмитрием Дерепко, планы на развитие и взгляд на Open Source

https://youtu.be/pUhnl03ckEM

📌 Полезные ссылки:
MetaStorm на jetbrains - https://plugins.jetbrains.com/plugin/26121-metastorm
Обзоры от автора на Хабре:
https://habr.com/ru/articles/868898/
https://habr.com/ru/articles/872000/
GitHub репозиторий - https://github.com/xepozz/meta-storm-idea-plugin
Телеграмм канал MetaStorm @meta_storm
1👍62🔥1🍾1
🪲 Buggregator

Buggregator – инструмент для разработки, который позволяет в режиме реального времени отлавливать и показывать различные события, которые произошли в вашем приложении.
Несколько похож на 🖼️ Yii Dev Panel, но это всего лишь часть от полноценной девелоперской панельки 😎

Сам багри – это фронтенд для отображения всей собранной информации.
А собирает информацию Trap сервер, который написан на PHP и умеет работать в несколько одновременных коннектов, благодаря сокетам и “корутинам”, которые реализованы на файберах (или генераторах).

В общем, для работы с багри нужно:
- Запустить Trap в консоли
— Trap выводит всю инфу еще и в консоль
— Трап публикует Buggregator на выбранном порту, чтобы смотреть на него в браузере
- Открыть Buggregator в браузере или смотреть в консоль

Для автоматизации этих действий я сделал небольшой плагин, который сам стартует Trap и показывает Web View + Terminal View в IDE вкладках.

Теперь можно просто начать работать и собранные события уже появятся в IDE.
Не нужно бегать в браузер
Не нужно открывать консоль для запуска трапа
Не нужно платить за Ray 30$ в год (кто вообще это делает?)

Кстати, сам багри изготовлен в цеху 🔥 Fart Time
На багри уже есть обзор от CutCode:
https://www.youtube.com/watch?v=vy4C5zK7EJE
И обзор от автора Павла на хабре:
https://habr.com/ru/articles/823156/

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

——

Пост на бусти

buggregator.dev
Jetbrains Marketplace
Github
@php_fart

@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥14👍5
В прошлом году я был на нескольких конференциях: где-то в роли спикера, где-то обычным слушателем. Хочу поделиться с вами мыслями и фоточками.

🔉 Стачка
Когда-то давно я слышал про стачку, но всегда думал, что это конфа явно не про техничку. Однако приятно удивился, что это было не так, и @mifleo позвал меня выступить с докладом.
Стачка была 27-28 сентября в Санкт-Петербурге. Масштабы конференции сильно удивили. Я думал так замахивается только Highload++ в России.

Мне удалось присоединиться к конференции в виде спикера с темой “Архитектура Yii Debug” 🖼️ А за несколько недель до даты узнал, что @samdark туда тоже едет с темой Yii3.
2 дня конференции прошли довольно хорошо:
- доклад зашел довольно туго, зато есть мысли как его лучше подать
- 30+15 минут довольно мало для моей темы, поэтому очень торопился впихнуть всё
- увиделся с теми, с кем работал удаленно несколько лет
- погулял по Питеру
Ждал записи доклада, чтобы поделиться с вами, но многие доклады не записались, в том числе и мой. Вместо этого скину доклад ПДФкой, но прочесть без меня будет сложно.
https://spb24.nastachku.ru



🔨 JetBrains Plugin Developer Conf 2024

Не понял как на меня затергетили, но узнав про конфу для разработчиков плагинов, я отложил все свои дела на день и пошел слушать.
Конференция была на английском. Проводилась полностью удаленно, с несколькими ведущими.
Около половины спикеров были русскоговорящими, однако говорили на английском.
Технические доклады были довольно хороши, многих вещей не найти в документации, можно только добыть их личным опытом разработки плагинов.
Я даже выиграл приз за ответ на вопрос. Там что-то было про грамматику языка, а я в то время уже пилил плагин для PHPLRT.
https://lp.jetbrains.com/plugin-dev-conf-2024/



🔠🔠 Highload++
2 и 3 декабря в Москве проходила еще более масштабная конференция Highload++, в рамках которой проходили так же PHPRussia и Golang Conf.
В большей степени я ходил общался с людьми. Забавно, что на конференциях люди очень открыты и могут рассказать чуть ли не бизнес планы компании, а на собесах / в чатах инфы на порядки менее секьюрной никогда не дождешься 🤷‍♀️
Еще понравился момент, когда на конференции Highload++, которые сами понимаете чему посвящена, решают задачу пропуска в кафе на обед (по талонам) следующим образом:
- люди начинают приходить за некоторое время до назначенного времени обеда (~20 минут и менее)
- их не пускают до того самого времени
- образуется bottleneck, очередь
- очередь начинает рассасываться, превращаясь из “очереди на вход в зал”, которая в свою очередь превращается в “очередь на заказ обеда”, а та в свою очередь в “очередь на место за столом” 😠
Жаль, что организация конференции не слушает конференцию, иначе знали бы как решать cache stampede подобные задачи. Коротко: начать пускать за какое-то время
https://highload.ru/moscow/2024



Думаю может еще раз сходить на Стачку 2025, которая будет уже в апреле.
На хайлоаде обсуждали с ребятами возможность YiiConf. Может быть и попробуем это устроить? Release is coming…
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍13🔥52
🗓 Cron & Crontab Support Plugin



Время от времени делаю плагин для поддержки PHP Language Recognition Tool и его синтаксиса pp2
Делаю в свободное время, поэтому часто переключаюсь между контекстами, что приводит к отрыву от потока внимания, а из-за этого страдает понимание происходящего при создании парсера-генератора для парсера-генератора. В общем, порой бывает сложно.
А чтобы было попроще, я иногда отвлекаюсь на более простые вещи и делаю их. Всё равно их делать потом.

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

Часто в работе приходится писать Cron задачи, это где пять звездочек и что-то помимо них:

* * * * * rm -rf /

❗️ Эта команда каждую минуту удаляет все данные с жесткого диска на Linux и MacOS.
🤔 Вопрос: что произойдет после второго выполнения этой команды?

Обычно такие файлы редактируются на веру – если после деплоя крон задача не отработала, значит нужно поправить и повторить.
А задача может стоять и через неделю. А еще нужно понять отработала она или нет. А если много кронов, нужно чтобы логи за это время не сротировались в мусорку.

В базовой версии:
- поддержка парсинга крон файла как настоящего языка программирования, с лексером, парсером и анализатором
- подсветка и поддержка временных меток: *; */1; 30/5; 1,11,21,31; 1-30; 1-10,20-30,50-59 и другие их вариации
- подсветка переменных и их значений
- подсветка и автокомплит shell command, которая идет после временных меток
- подсветка комментариев
- небольшие оптимизации по схлопыванию временных интервалов
- несколько инспекций на корректность временного периода
- схлопывание временных интервалов в человеко-читаемый вид
- возможность открыть расписание на crontab.guru
- автопривязка к cron.* / crontab.* / *.cron / *.crontab / cron файлам
- Jetbrains сделали подсказку для установки плагина, если открыть один из таких файлов
- иконка от @roxblnfk, на которой вместо “CRON” написано “СГОП” (сгоп)

Хочу добавить туда еще подсказки и навигацию при вводе переменных, а еще внедрение подсветки в строчки в коде, похожие на крон джобы.

Плагин поддерживается во всех Jetbrains IDE выпущенных с прошлого года.

Если пишите крон джобы, то буду рад фидбеку.



Jetbrains Marketplace
Github
@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥9👍65
👨‍💻 Удобная разработка

Как вы могли заметить, в последнее время мне очень часто приходится работать с Kotlin: Cron, Buggregator и конечно MetaStorm!
Синтаксис Kotlin очень нравится:
- C-like синтаксис, сразу всё понятно
- Как Java, только менее многословная, очень немногословная Java!
- Короткие синтаксические конструкции
- Система типов. Есть дженерики, но нет дизъюнкции и конъюнкции типов 😲
- Интересная схема “расширения” классов

В общем, когда изучал конструкции различных плагинов в Open source увидел, что в Котлине можно делать так:

$var = $nullableVar ?: return

Вместо привычного

$var = $nullableVar
if ($var == null) {
return
}


Вопрос 3-х строк, но написав подобное более 100 раз без этого сахарка уже не то.
Более того, помимо return можно использовать и другие управляющие конструкции: break и continue.

Возвращаясь к работе на PHP я уже по привычке начинаю так писать, но на PHP так писать нельзя. Пока что 😁

Я давно привык писать код с “early return”: когда в самом начале проверяется код на различные условия, а дальше выполняется логика метода с полностью валидным состоянием.

Подобные операции на пару десятков строк можно было бы схлопнуть несколько раз!
Лаконичный и выразительный код, это ускорение и упрощение чтения. Когда ты не дочитывая конструкции до конца уже понимаешь однозначность намерения, когда где-нибудь в неудобном месте не приходится дублировать десяток проверок, чтобы сделать наконец-то этот return null;!

Примеры:


$result = $condition ? $a : return;
$result = $conditionA ? $a : ($conditionB ? $b : break);
$result = $condition ?? return;
$result = $condition ?? break;


и любые другие комбинации ваших выражений, даже такие как эти:

"string" . 1 + throw throw throw throw throw throw new Exception("exception");


Да, синтаксически это полностью валидный код в PHP, хоть и выглядит как 💩
Я решил добавить пару подобных тест-кейсов в PHP: Pull request.

В общем, надеюсь скоро подобный код можно будет писать и return, break и continue:

function test() {
return return return return return throw throw throw throw new Exception();
}


✔️ Подписка на PHP Internals
✔️ Попросить милостыню: https://news-web.php.net/php.internals/126252
✔️ Proof of Concept: https://github.com/php/php-src/pull/17647
🚫 RFC: как разрешат создавать RFC, так и создам

Как вы оцениваете такую возможность?
Когда-то было тоже самое с throw конструкция. Пора и другим подтягиваться?



@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥9👍5👏21🐳1
🔥 Обзор IDE для PHP — стрим на CutCode! 🔥

Друзья, готовим мощный стрим про инструменты разработки на PHP! Разберем популярные IDE, их плюсы и минусы, а также обсудим продвинутые темы для разработчиков.

💡 Что будет на стриме?
🔹 Сравнение популярных IDE для PHP
🔹 Разработка плагинов для PhpStorm
🔹 Обзор Language Server Protocol (LSP)

🎙 Участники:
Алексей Гагарин
Дмитрий Дерепко
Виктор Бабанов
Кирилл Несмеянов
Данил Щуцкий

📅 Когда: 7 февраля в 19:00 (мск)
📍 Где: на CutCode - YouTube, TG, VK.

Есть вопросы по теме IDE? Накидывайте в комментариях 💬

#CutCode #PHP #IDE #PhpStorm #LSP
1🔥64👍3