Как быстро запустить PHPStan из PhpStorm?
(не из консоли, а через интегрированный интерфейс PhpStorm - мы же в IDE работаем в конце концов)
Шаг 1: подключить PHPStan к PhpStorm через Settings -> PHP -> Quality Tools -> PHPStan = ON
Теперь непосредственно в редакторе кода будут подсвечены проблемные места – это отрабатывает новый Inspection, наличие которого можно проверить в Settings -> Editor -> Inspections -> поиск по слову «phpstan» -> PHPStan validation галочка.
Шаг 2: как проверить все файлы в проекте? Меню: Code -> Analize Code -> Run Inspection by Name… (обратие внимание в меню на незапоминаемый хоткей) – далее в поиске набрать название нашего Inspection = «phpstan»
Шаг 3: а можно без длинных меню и сложных хоткеев?
Да, есть несколько вариантов, которые я перепробовал, вот самый быстрый: ⚡
3.1 Settings -> Editor -> Inspections -> создать новый Profile, назвав его, например, «PHPStan Only»
3.2 На Toolbar добавить новую иконку: кликнуть правой кнопкой по Toolbar -> Customize Toolbar… -> кнопка в виде плюса «Add Action…» -> поиском найти действие «Inspect Code…» - таким образом на панели кнопок будет быстрая кнопка эквивалентная меню Code -> Inspect Code…
3.3 Особенность диалога Inspect Code… в том, что он предлагает выбрать профиль, по которому нужно проверить проект, и далее он запоминает выбранный в последний раз профиль! Именно для этого мы создали профиль «PHPStan Only» - выбрав один раз, следующий запуск сведётся до двух кликов. Впрочем, можно и удобный хоткей для вызова этого диалога настроить: Settings -> Keymap -> в поиске набрать «Inspect Code» и назначить хоткей. Этот способ немного удобнее того, что я описал как «Шаг 2» - теперь нам не нужно вводить название инспекции «phpstan», теперь есть профиль и он уже выбран по умолчанию в диалоге «Inspect Code…»
(не из консоли, а через интегрированный интерфейс PhpStorm - мы же в IDE работаем в конце концов)
Шаг 1: подключить PHPStan к PhpStorm через Settings -> PHP -> Quality Tools -> PHPStan = ON
Теперь непосредственно в редакторе кода будут подсвечены проблемные места – это отрабатывает новый Inspection, наличие которого можно проверить в Settings -> Editor -> Inspections -> поиск по слову «phpstan» -> PHPStan validation галочка.
Шаг 2: как проверить все файлы в проекте? Меню: Code -> Analize Code -> Run Inspection by Name… (обратие внимание в меню на незапоминаемый хоткей) – далее в поиске набрать название нашего Inspection = «phpstan»
Шаг 3: а можно без длинных меню и сложных хоткеев?
Да, есть несколько вариантов, которые я перепробовал, вот самый быстрый: ⚡
3.1 Settings -> Editor -> Inspections -> создать новый Profile, назвав его, например, «PHPStan Only»
3.2 На Toolbar добавить новую иконку: кликнуть правой кнопкой по Toolbar -> Customize Toolbar… -> кнопка в виде плюса «Add Action…» -> поиском найти действие «Inspect Code…» - таким образом на панели кнопок будет быстрая кнопка эквивалентная меню Code -> Inspect Code…
3.3 Особенность диалога Inspect Code… в том, что он предлагает выбрать профиль, по которому нужно проверить проект, и далее он запоминает выбранный в последний раз профиль! Именно для этого мы создали профиль «PHPStan Only» - выбрав один раз, следующий запуск сведётся до двух кликов. Впрочем, можно и удобный хоткей для вызова этого диалога настроить: Settings -> Keymap -> в поиске набрать «Inspect Code» и назначить хоткей. Этот способ немного удобнее того, что я описал как «Шаг 2» - теперь нам не нужно вводить название инспекции «phpstan», теперь есть профиль и он уже выбран по умолчанию в диалоге «Inspect Code…»
🔥19👍5👀2👎1
В продолжение предыдущего поста: как узнать, есть ли возможность настроить ту или иную функцию в PhpStorm? А какие варианты вообще бывают, чтобы выбрать наиболее удобный для себя?
Раньше я гуглил. У JetBrains достаточно подробная документация, зачастую находятся нужные ссылки, но дальше нужно вчитываться.
Удача, если конкретно мой вопрос кто-то уже задал на StackOverflow или в YouTrack (багтрекер для всех продуктов JetBrains) - можно найти конкретный рецепт по шагам.
Последние несколько месяцев я задаю подобные вопросы в ChatGPT. Поскольку документация публичная и она проиндексирована в базе знаний ChatGPT, то обычно получаю достаточно сфокусированные ответы на конкретный вопрос.
Вчера попробовал для этих целей непосредственно AI Assistant в PhpStorm. Под капотом он отправляет запросы всё в тот же API OpenAI (по сути в ChatGPT), но теперь это выглядит как "справка по программе здорового человека". У меня есть вопрос к PhpStorm, я его пишу непосредственно в PhpStorm и получаю конкретный ответ.
Выводы: если вы пишете софт и к нему есть подробная документация, которая, будучи проиндексированной, могла бы стать пищей для ума AI, то попробуйте подключить в свой софт "справочный центр" на базе ChatGPT (или аналогов)!
Раньше я гуглил. У JetBrains достаточно подробная документация, зачастую находятся нужные ссылки, но дальше нужно вчитываться.
Удача, если конкретно мой вопрос кто-то уже задал на StackOverflow или в YouTrack (багтрекер для всех продуктов JetBrains) - можно найти конкретный рецепт по шагам.
Последние несколько месяцев я задаю подобные вопросы в ChatGPT. Поскольку документация публичная и она проиндексирована в базе знаний ChatGPT, то обычно получаю достаточно сфокусированные ответы на конкретный вопрос.
Вчера попробовал для этих целей непосредственно AI Assistant в PhpStorm. Под капотом он отправляет запросы всё в тот же API OpenAI (по сути в ChatGPT), но теперь это выглядит как "справка по программе здорового человека". У меня есть вопрос к PhpStorm, я его пишу непосредственно в PhpStorm и получаю конкретный ответ.
Выводы: если вы пишете софт и к нему есть подробная документация, которая, будучи проиндексированной, могла бы стать пищей для ума AI, то попробуйте подключить в свой софт "справочный центр" на базе ChatGPT (или аналогов)!
👍17🔥5👎2❤1
Решил попробовать запустить Qodana на своём проекте 😱🤦😭
(что такое Qodana: https://www.jetbrains.com/ru-ru/qodana/)
(что такое Qodana: https://www.jetbrains.com/ru-ru/qodana/)
🔥17😁4
Я попросил DALL-E нарисовать PHP. И сделать его лучшим языком программирования. Ещё лучше! PHP Best of the Best на все времена! PHP - язык, который преисполнился всей вселенной!
😁32👏29🤡5👍1🔥1
Вчера узнал, что внутри Яндекса есть анонимный imageboard под названием ячан (не уверен как пишется, возможно на английском yachan). И по этическим соображениям треды удаляются черз 3 дня - классика 😂 Интересно, есть ли международных крупных корпорациях внутренние анонимные имаджборды? GoogChan? MicroChan? FaceChan? AmazChan?
😁19🤯2
Forwarded from Russian Association of Software Architects (Sergey Baranov)
Какая прекрасная штука вот теперь появилась и в MySQL
https://blogs.oracle.com/mysql/post/mysql-82-transparent-readwrite-splitting
https://dev.mysql.com/doc/mysql-router/8.2/en/router-read-write-splitting.html
https://blogs.oracle.com/mysql/post/mysql-82-transparent-readwrite-splitting
https://dev.mysql.com/doc/mysql-router/8.2/en/router-read-write-splitting.html
Oracle
MySQL 8.2 – transparent read/write splitting
In MySQL 8.2, a significant enhancement has been introduced to MySQL Router. This improvement enables MySQL Router to intelligently differentiate between read and write queries and efficiently route them based on their nature.
😁2
Forwarded from PHP of By (Community Org)
42 - это не только ответ на "Главный вопрос жизни, вселенной и вообще", но и порядковый номер митапа PHPofBy, который состоится 19 Декабря в 19.00 (+3).
На завершающем митапе в этом году Игорь Филиппов покажет нам бельгийское кунг-фу и научит готовить Laravel в стиле Spatie
Дмитрий Джумагалиев скомбинирует доклад с воркшопом и научит использовать PACT для контрактного тестирования
Ну а Кирилл Несмеянов покажет, что на самом деле мы не знаем PHP :)
Страница митапа тут: https://wearecommunity.io/events/phpofby-meetup-42
Ссылка на трансляцию тут: https://www.youtube.com/watch?v=lt2jbzTbPxM
Читайте подробное описание, и регистрируйтесь - нам как всегда важно понимать, сколько вас будет :)
На завершающем митапе в этом году Игорь Филиппов покажет нам бельгийское кунг-фу и научит готовить Laravel в стиле Spatie
Дмитрий Джумагалиев скомбинирует доклад с воркшопом и научит использовать PACT для контрактного тестирования
Ну а Кирилл Несмеянов покажет, что на самом деле мы не знаем PHP :)
Страница митапа тут: https://wearecommunity.io/events/phpofby-meetup-42
Ссылка на трансляцию тут: https://www.youtube.com/watch?v=lt2jbzTbPxM
Читайте подробное описание, и регистрируйтесь - нам как всегда важно понимать, сколько вас будет :)
❤9👏1
Заглянул в репозиторий https://github.com/php/php-langspec и обнаружил, что обновлений в master почти нет, а среди веток только PHP-5.6 и PHP-7.0. Выходит у PHP нет актуальной версии спецификации, есть только спека уровня 7.0 (или чуть выше) и набор RFC принятых поверх? 🧐
🤔11
🎄Сегодня (23 дек 2023) в 12:00 GMT+3 (Мск) присоединяйтесь к online митапу: https://www.youtube.com/watch?v=tF9s785SxAM&ab_channel=SkyengTech
YouTube
PHP Community meetup: 4 доклада, апдейты PHP 8.3 и итоги года
Встретимся к концу года, чтобы послушать доклады, подвести итоги и запустить опрос сообщества.
Собрали отличный лайнап:
«PHP 8.3: прогресс или стагнация?» — Валентин Удальцов , автор каналов Пых и PHP Point.
«Готовим Composer» — Александр Макаров…
Собрали отличный лайнап:
«PHP 8.3: прогресс или стагнация?» — Валентин Удальцов , автор каналов Пых и PHP Point.
«Готовим Composer» — Александр Макаров…
👍9🔥4
Forwarded from Alisa Kruglova [MSK -2]
Привет! phpcommunity.ru проводит четвертый ежегодный опрос. По традиции узнаем расклад по версиям языка в командах, фреймворкам, инструментам, лучшим статьям и видео по мнению сообщества. И, конечно, разыграем PHP-слона и другой мерч.
Опрос помогает видеть, как развивается сообщество, и готовить митапы, статьи и конференции по актуальным темам.
Найди 5 минут, чтобы подвести итоги своего PHP-года:
Форму закроем 8 января 2024. Результатами поделимся в конце января.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🤮1
Прохожу опрос по итогам 2023 года в PHP-комьюнити (видео, рекомендую смотреть на x1,5 скорости): https://youtu.be/U2ntmKUJa1Y
YouTube
Итоги 2023 в PHP-комьюнити - прохожу опрос
Опрос: https://forms.gle/n9QErGz5iGYrWEzj9
В этом видео упомянул телеграм канал "5 minutes of AI": https://news.1rj.ru/str/en_5minAI
Пятиминутка PHP - подкаст о PHP, DBA, архитектуре, DevOps. https://5minphp.ru
В этом видео упомянул телеграм канал "5 minutes of AI": https://news.1rj.ru/str/en_5minAI
Пятиминутка PHP - подкаст о PHP, DBA, архитектуре, DevOps. https://5minphp.ru
🔥5🤡3
Теперь к серьёзным опросам: наиболее популярная PHP функция в вашем коде в 2023?
Anonymous Poll
16%
getrusage - Gets the current resource usages
10%
strpbrk — Search a string for any of a set of characters
6%
get_html_translation_table — Returns the translation table used by htmlspecialchars and htmlentities
18%
natcasesort — Sort an array using a case insensitive "natural order" algorithm
5%
get_mangled_object_vars — Returns an array of mangled object properties
8%
metaphone — Calculate the metaphone key of a string
26%
similar_text — Calculate the similarity between two strings
10%
easter_date — Get Unix timestamp for midnight on Easter of a given year
13%
frenchtojd — Converts a date from the French Republican Calendar to a Julian Day Count
31%
mb_strimwidth — Get truncated string with specified width
🤯90🤡34👀10🤷♂4🔥4💩2👍1
Есть фрагмент кода, который генерирует набор уведомлений для пользователя.
Каждый вид уведомления формируется своим методом, итого имеем множество методов. Их стало слишком много, пришло время разделить эту кодовую базу на несколько классов.
Первый метод я вынес в отдельный класс вручную.
Далее сформировал инструкцию для AI: "вынеси такой-то метод в отдельный класс, оринетируйся на мой пример..."
Использовал утилиту Aider (https://aider.chat/), в которую зашиты протестированные system и user prompts, также эта утилита умеет отправлять в качестве контекста содержимое файлов исходного кода.
Как выглядел процесс:
- добавление файлов в контекст запроса происходит командой
- далее отправляю основной prompt - нужно подождать ещё около минуты, пока не начнёт генерироваться ответ
- ответ приходит строка за строкой, медленно, наблюдаю в консоли
- как только передача ответа завершилась в дело вступает утилита Aider, которая должна создать новый файл на диске (новый класс) и скорректировать старый код, подставив вызов нового класса. Новый класс был создан без части кода и с обновлением текущего файла не вышло.
Что произошло: ответ от GPT содержал кривой diff, который Aider не смог наложить на существующий исходник. В этом случае в Aider предусмотрена автоматизация: он отправляет новый запрос в OpenAI с просьбой вернуть корректный diff. И опять длительное ожидание.
Это не первая попытка использовать Aider. И каждый раз прихожу к выводу, что это слишком медленно и неудобно.
В следующий раз опишу, как эту же задачу я решал с помощью Aider + локально запущенной модели DeepSeek Coder (https://huggingface.co/TheBloke/deepseek-coder-6.7B-instruct-GGUF) и с помощью GitHub Copilot Chat в PhpStorm.
Каждый вид уведомления формируется своим методом, итого имеем множество методов. Их стало слишком много, пришло время разделить эту кодовую базу на несколько классов.
Первый метод я вынес в отдельный класс вручную.
Далее сформировал инструкцию для AI: "вынеси такой-то метод в отдельный класс, оринетируйся на мой пример..."
Использовал утилиту Aider (https://aider.chat/), в которую зашиты протестированные system и user prompts, также эта утилита умеет отправлять в качестве контекста содержимое файлов исходного кода.
Как выглядел процесс:
- добавление файлов в контекст запроса происходит командой
/add и этот процесс очень медленный, чуть ли не минуту на каждый файл (я добавил два файла = 2 минуты)- далее отправляю основной prompt - нужно подождать ещё около минуты, пока не начнёт генерироваться ответ
- ответ приходит строка за строкой, медленно, наблюдаю в консоли
- как только передача ответа завершилась в дело вступает утилита Aider, которая должна создать новый файл на диске (новый класс) и скорректировать старый код, подставив вызов нового класса. Новый класс был создан без части кода и с обновлением текущего файла не вышло.
Что произошло: ответ от GPT содержал кривой diff, который Aider не смог наложить на существующий исходник. В этом случае в Aider предусмотрена автоматизация: он отправляет новый запрос в OpenAI с просьбой вернуть корректный diff. И опять длительное ожидание.
Это не первая попытка использовать Aider. И каждый раз прихожу к выводу, что это слишком медленно и неудобно.
В следующий раз опишу, как эту же задачу я решал с помощью Aider + локально запущенной модели DeepSeek Coder (https://huggingface.co/TheBloke/deepseek-coder-6.7B-instruct-GGUF) и с помощью GitHub Copilot Chat в PhpStorm.
👍14😁1