Увлёкся азартной игрой с государством корпорацией.
Успел выиграть каплю знания — PostgreSQL умеет нативно оперировать множествами, в т.ч. — символов. И получается очень удобно, когда словарный запас иссяк:
select word
from public.nouns
where
char_length(word) = 5
and string_to_array(word, null) @> '{с,о}'
and not string_to_array(word, null) && '{а,к,ц,и,я}'
and word like '__ь'
Выбирал тут планировщик для периодических заданий по обслуживанию приложения. С Quartz что-то все устали возиться, ленились отдельную схему под его таблички выделять и кончили тем, что возжелали свежих проблем нового, неизведанного.
И, в том числе:
Поддержки работы со множеством узлов в кластере;
Поддержки персистентности заданий;
Простоты использования;
Простоты развертывания.
Конечно — open source с подходящей лицензией. И spring-boot-starter в комплекте — для максимального удовольствия.
Возникла потребность подключаться из Java приложения к брокеру RabbitMQ с использованием защищенного соединения. Приложение на Spring Boot, живёт в контейнере Docker и должно слушать два узла Rabbit параллельно.
На входе: сертификат клиентского узла — контейнер client-cert.pfx, корневой сертификат для него root-cert.crt
Открытый серверный сертификат шлюза Rabbit: выкачивается автоматически (можно подложить вручную)
Используемая версия java поддерживает форматы хранилищ и JKS, и PKCS12
Требуется: создать и положить сертификаты в Key Store (сертификаты приложения «клиентские») и Trust Store (доверенные «серверные» сертификаты). В чём разница.
Очень легко и удобно оказалось в Докере (compose) связывать сети. Раньше сервисы обычно пихал в один compose-файл (или, точнее, лень было разделять специально — как шли «из коробки» — так и запускались).
Но стало неудобно. Совсем неудобно стало, что каждый норовит себе отдельную БД поднять соседним контейнером. И всё равно приходится лезть, и монтирование данных для БД на хостовой ФС прописывать. Ближе к делу:
Довелось недавно, оказавшись на задворках Москвы, сходить в любопытный театр (Этнотеатр) на не менее любопытный спектакль — Комедия о Фроле Скобееве.
Современная постановка сделана по пьесе конца XIX века, а та, в свою очередь, написана по произведению века XVII (или начала XVIII, тут мнения расходятся).
Частенько в коде встречаются перечисления, дополнительно хранящие некие значения (в виде private final поля обычно).
Чтобы в дальнейшем можно было, например, при сериализации в json это значение подставлять автоматом (@JsonValue у Jackson). Тогда возникает обычно и обратная задача — десериализовать (распарсить) значение обратно в Enum (@JsonCreator у Jackson).
Вот мне и надоело копипастить туда-сюда все эти методы (сериализации/десериализации) между классами Enum. Решил сделать один раз утилитный метод и в проекте им пользоваться. Благо, время позволило.
Накопилось ещё некоторое количество «приёмчиков» работы с Open/Libre Office. Если предыдущая заметка на эту тему была посвящена LO Writer, то на сей раз — «подопытным» выступает пакет Calc (электронные таблицы).
Для затравки — простое, но часто нужное действие — перемещение строк и столбцов таблицы.
В силу определённых обстоятельств — периодически стал возникать вопрос, в каких временных рамках я занимался тем или иным проектом. И готового ответа на него у меня не было — как-то не приходило в голову фиксировать подобную информацию.
Но есть же git — ведь он поможет? Ведь поможет, да?