adelf on programming
1.54K subscribers
45 photos
1 video
63 links
Download Telegram
JetBrains недавно переделал отчеты по продажам плагинов и они стали в разы более информативные. Вот этот, например, показывает новые покупки или продления лицензий Laravel Idea.

Синим наверху показаны продления и видно, что на данный момент я денег со старых верных клиентов получаю почти в два раза больше, чем с новых. Наверно, можно сделать какие-то выводы. В год я теряю примерно 10-15% юзеров, что весьма неплохой показатель. А вот продажи новых за последний год не растут. Скорее всего это связано с совместной рекламной кампанией с JetBrains. Она мощно стартанула прошлым летом и с тех пор сложно переплюнуть приток новых.

Там есть еще график покупок персональных и корпоративных лицензий. И там до сих пор от людей, покупающих напрямую, чуток больше денег идет, чем от организаций. Где-то слышал, что у JetBrains ситуация сильно склонена в сторону корпоративных лицензий. Значит, я тут сильно недорабатываю. И действительно, весь мой неумелый маркетинг направлен напрямую в юзеров. Надо что-то менять.
Заглянул таки в это окошко в IDEA своей. Неудивительно, что в большом проекте, даже писанном почти полностью своими руками, Navigation-фичи начинают вылезать на первые места. Больше ходишь по проекту и читаешь код, чем пишешь.

У меня еще не такой большой. Средний. Чуть больше 4 мегабайтов кода. Котлин весьма компактный язык.

Recent Files popup - это Cmd(Ctrl)-E. Удобно вместо табов, ибо они не нужны.
Ездил на прошлой неделе в Австралию на ларакон. Увидел свой продукт как спонсора на плакате. Был доволен как ребенок. Michael Dyrynda со сцены еще отдельно выделил, что плагин помог им сделать сайт и приложение для конфы.

P.S. Австралия - классное место. Конкретно город Брисбен утопает в зелени и парках. На каждом шагу публичные библиотеки, где можно посидеть с ноутом сколько хочешь. Я там захотел жить.
Случайно обнаружил, что можно проектам кастомные иконки делать. Можно прямо на проекте правой кнопкой кликнуть и там выбрать пункт, либо просто скопировать icon.svg(или png) в папку .idea.
Это все-таки произошло. JetBrains забирает мой плагин себе!

Как-то давно, лет 8 назад, я решил написать проект с нуля, без фреймворков. Надо было приспособить его для разных сред и я заюзал .env файлик и пхп-пакет для него. И был неприятно удивлен, что комплишена для ключей то нет! Быстренько наваял плагин для комплишена, назвал его .env files support и запушил его в маркетплейс. А потом сделал подсветку синтаксиса и JetBrains стал рекомендовать его ставить всем. А сейчас по общему рейтингу плагинов он вообще стоит на первом месте! Недавно JetBrains предложил включить его в поставку IDE и я согласился.

https://blog.jetbrains.com/phpstorm/2025/01/support-for-env-files/
This media is not supported in your browser
VIEW IN TELEGRAM
Мы, проггеры, часто занимаемся автоматизацией различной. Но всегда надо думать что юзер делает до этой автоматизации, и после. Может там тоже можно чутка предугадать и предложить юзеру чуть больше.

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

Я тоже методы подсказываю кое-где и вот сейчас повторяю эту логику.
IntelliJ IDE (а значит и PhpStorm) работает в многопотоковом режиме. Есть один, главный поток, который обрабатывает весь интерфейс юзера и все операции записи, и есть бэкграунд потоки, в которых предполагается делать все остальное.

С некоторых пор JetBrains активно работает над тем, чтобы в главном потоке ничего медленного не происходило. В EAP сборках даже эксепшены вылазят, если сделаешь чтото медленное в нем. Это, кстати, приносит результат. В последние годы шторм стал отзывчивее(это не субьетивщина, а достоверно вычисленный результат), но писать код иногда прям трудно. Если у тебя окно, в котором в процессе ввода надо лазить по классам и собирать инфу, то это больно.

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

P.S. Просто нытья пост.
Инкапсуляция или почему важно прятать как можно больше информации внутри обьектов

Большинство комплишенов моего плагина подсказывают параметры внутри методов. $foo->bar('тут комплитим'); в процессе вырисовался обьект CompletionContext, в котором есть обьект Parameter, и обьект ParameterList - это уже внутренние объекты PhpStorm. И юзались они везде и часто.

Теперь возникла мысль, что $foo['тут комплитим'] и $foo('тут комплитим') - это тоже вызовы методов! И если на них смотреть по-другому, как $foo->offsetGet('тут комплитим') и $foo->__invoke('тут комплитим'), то все станет сильно проще для меня. Но внутренние объекты шторма там другие, поэтому надо обьект CompletionContext абстрагировать немного. Но не получается. Он был открыт, все лезли в его внутренности и построить абстракцию, когда там не метод, а вызов массива или __invoke, не получается.

Сижу теперь делаю поля приватными и методы как можно более абстрактными. За 5 лет там много накопилось.
https://t.me/tg_5minphp/1413

Тут Петр Мязин из пятиминутки PHP удивляется, что старая монолитная IDEA оказалась более гибкой, чем модный опенсорсный VsCode. Я знаю как работает экосистема IDEA (ну плюс-минус) и видел как выглядят плагины к VsCode. Не особо удивлен. Ну может только добавить могу, что основная платформа IDEA - тоже давным давно открытая.

Почему Идея оказалась более гибкой - не знаю. Но хотел показать скриншот этот и рассказать про стабильность системы плагинов Идеи и то, как тщательно за ней стараются следить.

Плагин к Идее - это скомпиленый Java JAR-файл. Там все статично и если загружаешь его на маркетплейс там сразу идет проверка на совместимость с обьявленными версиями IDEA. Поймает любое неверное обращение к методу, классу и чему угодно. Сразу предупредает, что скоро удалят некоторые вещи. Весьма полезная вещь, да и локально можно запускать(у меня на CI крутится). Команда Идеи там довольно четко меняет интерфейсы когда надо, добавляет новые. Один раз только удивили сильно, но я тут об этом уже писал.

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

Плагин к VsCode - это нечто, написанное на тайпскрипте(а может и на яваскрипте). Нигде не нашел, где можно обьявить какие версии VsCode поддерживает плагин. Я сомневаюсь вообще что можно хоть какойто адекватный анализ провести там. Но если кто писал плагины туда - просветите плиз в комментах. Я анализировал некоторые исходные коды плагинов для вскода, и это страшно вообще.

P.S. 1655 Deprecated calls - это из-за моего старого обфускатора. Ни на что не влияет.