Как массово поменять местами аргументы методов в Idea

Заметил, что в одном из сервисов перепутаны местами аргументы, например, в коде прописано Assertions.assertEquals(order.getAwaitingActivation(), true), хотя по сигнатуре метода должно быть наоборот assertEquals(Object expected, Object actual), то есть должно быть Assertions.assertEquals(true, order.getAwaitingActivation()).

Так как мест, где нужно сделать замену больше 100, решил сделать замену через Replace in files (Ctrl+Shft+R).

В итоге понадобилось написать два регулярных выражения:

  1. Для поиска Assertions.assertEquals((.*?), (.*?));
  2. Для замены Assertions.assertEquals($2, $1);

Регулярного выражение для поиска простое, что большой плюс, но минус в том, что выражения типа Assertions.assertEquals(order.getAwaitingActivation(), true, "Awating actiovation"); преобразуются неверно. В моем случае это было несущественно, так как таких строк кода в сервисе было мало.

Стоит отметить, что при поиске пришлось неявно поставить признак ленивого квантора .*? вместо .+

Read more

Бесплатный программист от Atlassian

Вчера попробовал acli rovodev https://developer.atlassian.com/cloud/acli/guides/install-linux/. Плюсы: 1. Бесплатный пока бета 2. Суточный лимит 20 миллионов токенов и много запросов 3. Прилежный 4. За час он создал реактивный гейтвей https://github.com/batsura-sa/reactive-gateway-project Минусы: 1. Требует VPN

By Sergei Batsura

Распределенные блокировки в PostgreSQL

Мне известны следующие варианты: 1. Advisory lock - придумываем константу и используем pg_advisory_lock и pg_try_advisory_lock 2. Создаем таблицу блокировок и в этой таблице создаем запись. Если запись создана, то блокировка успешна. Для удаления блокировки удаляем запись. 3. Можно переиспользовать shedlock и соорудить что-то типа https:

By Sergei Batsura

Помним про оверхед, при использовании JSON вместо PROTOBUF

В 2024 году Андрей Комягин в докладе "Глубокое погружение в архитектуру Kafka" привел такие цифры для 100 атрибутов в сообщении: 1. PROTOBUF в среднем компактнее в 2.5 раза 2. Скорость сериализация PROTOBUF выше в 2 раза 3. Скорость десериализации PROTOBUF выше в 6 раз! 4. Производительность сериализации/

By Sergei Batsura