Никита Федькин - мысли, заметки, анонсы – Telegram
Никита Федькин - мысли, заметки, анонсы
2.83K subscribers
210 photos
7 videos
18 files
348 links
Связаться со мной - @nixel2007.
Никита Федькин (ранее Грызлов).

На канале не публикуется платная реклама.
Download Telegram
Для универсальной передачи информации о вызываемом методе на клиенте хорошо подходит ОписаниеОповещения и метод ВыполнитьОбработкуОповещения. Жаль, что этот объект и методы по работе с ним недоступны на сервере. В случае сервера придётся передавать имя метода конфигурации для вызова внешнего сервиса в виде строки и служебной структуры параметров.

Каждую из этих реализаций можно сделать в виде обработок с идентичным интерфейсом или вообще закрыть за Фасадом (https://refactoring.guru/ru/design-patterns/façade), предоставив удобный и гибкий API как для подмены реализаций CB между собой так и добавления новых.

Если Circuit Breaker объединить с Retry Pattern (https://learn.microsoft.com/en-us/azure/architecture/patterns/retry) с ощутимо большой задержкой (он и реализуется заметно проще), то можно обеспечить достаточно стабильный и самовосстанавливающийся обмен с другими системами.

Пробовали ли применять что-то из данных шаблонов на работе? Как реализовывали?
🔥15👍61
Внаглую тизерю
🔥33👍9
Это среда, мои чюваки, хороший день для анонса нового релиза BSL Language Server!

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

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

1) Писателям библиотек и приложений для оскрипта должна понравится фича запуска тестов с помощью 1testrunner прямо по нажатию на новую линзу над тест-методом. Скрин немного старый, но суть уловить можно. :)
2) Предыдущий большой внутренний проект под названием Reference index позволил достаточно просто реализовать "переименование символа". На результат работы поглядывайте, но думаю, фича вас впечатлит. Мне больше всего запало в сердечко, когда оно переименовало переданную строку с методом в обработчике оповещения.
3) Одна из моих любимейших фич из IntelliJ IDEA, показывающая имена параметров в вызываемых методах, теперь доступна и как часть BSL LS. Я уже писал про неё тут, но ещё скрин не помешает :)
4) Мне очень нравится, как в Сонаре показываются места, где повышается цикломатическая и когнитивная сложности, и я рад, что на той же части протокола, что и пункт про параметры метода, получилось реализовать показ плюсадинов. Их отображение включается по нажатию на соответствующие линзы сложности.

Релиз содержит ещё несколько крупных доработок типа запуска анализа проекта целиком при открытии, показа прогресса инициализации контекста, публикации ошибок в Sentry и даже поддержку работы через WebSocket, чтобы встроить BSL LS в, например, bsl_console. Подтекшая в прошлом релизе память теперь тоже ведёт себя намного скромнее. И не могу не упомянуть о подготовке к долгожданному переезду на jdk17, который произойдёт в следующем релизе!

Ну и конечно же пачка новых диагностик и пачка фиксов старых, куда уж без них :)

https://github.com/1c-syntax/bsl-language-server/releases/tag/v0.21.0

Уже 300 человек скачали новый релиз! Расскажите о впечатлениях :)

P.S. Кажется, я не умею в порядок картинок при отправке.
👍45🔥9
Поехали :)

P.S. В связи с выходом нового LTS не получилось указать, что плагин доступен к установке на 8.9+, только 9.9+. Политика-с.

Но если файл впихнуть руками на 8.9, то все заведётся.
🔥15👍8
Несколько лет назад JetBrains решили выделить ядро инспекций из Intellij IDEA (если быть точным, то IntelliJ Platform) в отдельный продукт. Я немного поигрался, прикрутил анализ к BSL Language Server (ну а что, вдруг что полезное найдёт, что не видит сонар), по туториалу настроил публикацию на gh-pages, да забросил.

Истории не было, для внятного кэша инструкций по настройке GitHub Actions не было, с ветками играться проблематично, да ещё экспорт настроек скорее не работал, чем работал. Из плюсов - зарепортил ребятам баг одной инспекции на связке спринга и ломбока, и они его даже признали и поправили.

А сейчас наткнулся на анонс Qodana Cloud.

https://www.jetbrains.com/help/qodana/cloud-about.html

Ребята метят куда-то в рынок SonarQube, добавили показ код кавереджа, активно подсказывают, какие инспекции стоит ещё включить, разве что метрик по проекту пока нет.

Из приятного: чтобы поиграться с порталом, нужно добавить всего одну переменную среды в workflow, запускающий анализ. Еще и поддержка веток появилась!

В общем, анализ BSL Language Server можно найти по ссылочке ниже. Никаких дополнительных и новых настроек пока не крутил, код кавереджа нет, и не понятно, как оно будет работать с пулл-реквестами из форков, но поковырять можно :)
FPшит на спринге в комьюнити версии безбожно.

https://qodana.cloud/projects/ARGKk/reports/NVRP1

Слышали что-нибудь про Qodana? В контексте 1С штука пока бесполезная, но всякие шарпы и простигосподи пыхыпы там поддерживаются.
👍6🤷‍♂4🥴2🔥1👏1
JetBrains объявили о включении поддержки LSP в свои IDE.

https://blog.jetbrains.com/platform/2023/07/lsp-for-plugin-developers/

После прочтения этой новости у меня две эмоции.

1) Да блин неужели, не прошло и пяти лет. А нет, постойте-ка, прошло!
2) Только в платных IDE и в Ultimate версии Идеи? Да вашу ж б мать!
😁9🤔3👍2🤯2🌭2👏1😱1😢1
Мини #анонс

Тут BSL Language Server 0.21.1 подъехал. Никита Иванченко помог отловить причину падения бсл лс в vscode на старте. Если у вас раньше падало, то попробуйте ещё раз, теперь падать должно перестать.

Мы закрыли симптом, но не причину, за причиной вернёмся чуть позже. Главное, что она понятна.

Stay tuned.
🔥40
Давно хотел настроить себе какую-нибудь донат-площадку для получения благодарностей в материальном виде.

Стоял в очереди на программу GitHub Sponsors в течение нескольких лет (любопытство и симпатия к продукту), ожидая, пока она заработает в России для выплат. В некотором роде дождался ¯\_(ツ)_/¯

Если вдруг кто-то хотел закинуть чеканную монету лично мне, а не на экосистему вокруг BSL Language Server, то вы можете это сделать по ссылочке:

https://github.com/sponsors/nixel2007

Наверное, можете. Если честно без понятия, будет ли оно работать в РФ, но там низом Stripe, а он в РФ доступен.

Напомню, что во славу около-bsl опенсорса все ещё действует donate.stream, которым мы пользуемся во время собственно стримов:

https://donate.stream/openbsl-foundation
👍15🔥7😁2
С днем рождения, BSL Language Server.

За прошедший год был всего один крупный релиз 0.21.х, про который я подробно писал ранее, зато внутри было много подвижек, направленных на оптимизацию, стабилизацию и поддержку работы новых типов LSP-запросов.
В рамках альфа-релизов ветки 0.22.х уже доступны переход на jdk17, Spring Boot 3.1, а буквально на днях была решена проблема чуть ли не пятилетней давности, приводившая к очень отложенной реакции BSL Language Server во время старта и расчёта данных проекта. Например, теперь всплывающая подсказка по методам начинает работать через несколько секунд после старта. Да, она не сможет показать данные другого модуля, если он ещё не проанализировался, но зато теперь не зависает до конца построения контекста. Финальное решение проблемы падения сервера из-за логирования тоже скоро будет готово и войдёт в следующий альфа-релиз.

В общем, на пререлизном канале vscode есть что протестировать и пооставлять обратную связь в чатике.

Если хочется понастольгировать, можно попробовать запустить предновогодний релиз 0.1.3, который был первым релизом, работающим в связке с сонар-плагином, которому на момент выхода был один день :)
А ещё в этом релизе было целых две диагностики и даже работал автокомплит, который умел возвращать "hello world!" :)

BSL Language Server - важный для меня проект. Начинавшийся вместе с Лёхой Сосновым как отдушина после тяжёлого 1сного лета, во многом он стал триггером к дальнейшему погружению в джаву и заставил изучить кучу вещей по дороге. В какой-то мере он помог мне сменить работу.

С днем рождения всех причастных. Спасибо вам за ваш вклад и поддержку. Пять лет.
🎉47👍193🍾2🎄2🔥1
Новый 2019ый год во Вьетнаме. Впервые запустили сонар-плагин и радуемся!
🔥28😁7👍5🎅31
Поддержки пост!

Бывшие коллеги из Бита попросили меня переслать ссылку на канал "Технологии 1С проектов".
Ребята пишут про проектную деятельность, методы и инструменты управления проектами, рассматривают хорошие и плохие кейсы и периодически даже проводят обучение.

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

Вот ссылочка на дайджест июньских постов.

Залетайте на огонёк!
👍11👎5🤮5
Чего долго ждать, устрою #анонс.

Внезапно, даже не дожидаясь 2024-го года, выпущен новый релиз BSL Language Server под номером 0.22.0.

Можно сказать, что это maintainance-релиз, так как новой функциональности вроде как и нет. Зато до релиза дошли три очень важных внутренних изменения.

Во-первых, мы наконец-то переехали на Spring Boot 3.1 и JDK17. Помимо большей лицензионной чистоты (мы больше не нарушаем копирайты Оракл из-за использования “незаконных” аннотаций jsr-305), нам наконец-то доступны фичи вроде switch expressions, instanceOf pattern matching и прочие records. В моем топе, конечно же, вариант быстрого вызова stream.toList() вместо длинного stream.collect(Collectors.toList()). Посмотрели таки во fluent, молодцы :D

Во-вторых, была решена одна из самых старых (около 4 лет) проблем долгого “прогрева” сервера при начале работы, когда рассчитываются метаданные конфигурации, или контекст сервера наполняется файлами. Выражалось это в зависании всплывающей подсказки, задержке в появлении дерева символов документа, да и вообще BSL Language Server вёл себя очень неповоротливо. Как обычно, большинство проблем можно решить банальным чтением документации, а мне на будущее теперь в назидание напоминание, что про опасность долгих параллельных расчётов на общем пуле потоков в каждом втором ответе про многопоточку на StackOverflow пишут не просто так :)

И в-третьих, так называемая проблема логирования. Несколько месяцев назад в плагине для VSCode была обновлена зависимость от vscode-language-client - собственно бридж между самим VSCode и BSL Language Server, который занимается преобразованием запросов к/от сервера в конкретные окошки в редакторе. Среди прочего в этом обновлении было изменение поведения обработки получаемых данных “не по протоколу” - без требуемых заголовков и объектов. И если раньше language-client просто кидал информационное сообщение в отдельный лог, доступный в VSCode, то в новой версии ребята из Microsoft не придумали ничего лучше, чем просто падать с исключением и выключать подключённый лэнг сервер.

А что делает любое уважающее себя джава приложение, когда внутри себя перехватывает ошибку? Правильно, выводит предупреждение в лог… Из-за этого поведения и была большая часть падений BSL Language Server на стартапе, и теперь она решена - если к серверу подключен клиент, то вместо вывода сообщения в обычный выхлоп stdout, сообщение перехватывается и отправляется на клиента.

Чейнджлог как и всегда доступен по ссылочке ниже. Хотя я и так почти все рассказал :)

https://github.com/1c-syntax/bsl-language-server/releases/tag/v0.22.0
🔥36👍133🤔1
Божественная картинка, раскрывающая разные виды тестирования.

За находку спасибо @Stepa86!
🔥49👍15🌭3