Архивы автора: kna

Один ко многим БД: Branch. Справочная таблица реквизитов банка для денежных счетов. Поле Тип Описание Ограничения id varchar(32) Город операционного офиса банка PK bank varchar(256) Наименование офиса (для реквизитов перевода) not null bik varchar(9) БИК Branch_Code. Справочная таблица соответствия города и кода отделения банка. Поле Тип Описание Ограничения code integer Код отделения PK branch_id varchar(256) Город отделения not nullFK на branch.id при удалении записи в branch производится каскадное удаление Liquibase: Java: Один ко многим без @Id Один к одному Один к одному без @Id

Type specified for TypedQuery [ru.knastnt.app.MyClass] is incompatible with query return type [class ru.knastnt.app.MyClass] Такое случается при дебаге и решается с путём исключения из pom.xml зависимости spring-boot-devtools. Can’t load camunda cockpit with error in console: It was not able to load the following file ‘app/plugin.js’ Проблема описана здесь https://jira.camunda.com/browse/CAM-10738 и решением является: — либо запуск с использованием Shorten command line: — либо удаление из .idea/workspace.xml строки <property name=»dynamic.classpath» value=»true» /> @JsonAnySetter not works. @JsonAnySetter не работает на вложенных объектах. С этой проблемой я мучился несколько дней! Оказалось, что при объявлении переменной помеченной аннотацией @JsonAnySetter , её нужно обязательно инициализировать! =) Диблирующиеся значения в списке @OneToMany Воспроизводится при EAGER загрузке. Предлагают заменить List на Set: https://stackoverflow.com/questions/20749806/duplicates-in-onetomany-annotated-list Почему не стоит делать JUnit тесты транзакционными У меня давно сформировалось такое мнение, но причины этого как-то уже позабылись. Буду пытаться восстановить их здесь: Могут быть проблемы с отношениями одинКоМногим, МногиеКоМногим из-за того, что изменения не…

Читать дальше

Речь идёт об установке данных систем локально с помощью Docker. Active MQ https://hub.docker.com/r/rmohr/activemq Запуск: docker pull rmohr/activemq docker run -p 61616:61616 -p 8161:8161 rmohr/activemq Подключение к web: http://localhost:8161/admin Логин/пароль: admin admin IBM MQ https://hub.docker.com/r/ibmcom/mq How to: https://github.com/ibm-messaging/mq-container/blob/master/docs/usage.md Запуск: docker pull ibmcom/mq docker run —env LICENSE=accept —env MQ_QMGR_NAME=QM1 —publish 1414:1414 —publish 9443:9443 —detach ibmcom/mq Подключение к web: https://localhost:9443/ Логин/пароль: admin passw0rd Имя администратора очередей: QM1 Канал: DEV.ADMIN.SVRCONN

Не буду разжевывать то что и так везде разжевано, просто запишу тут некоторые вещи. Если нужно управлять ченджсетами вне контекста java-приложения, то это можно сделать непосредственно через утилиту liquibase.exe. Для начала нужно установить liquibase на компьютер.Затем добавить в директорию lib драйвер postgre-jdbc (желательно версии не ниже 9.6, а то будут потом проблемы).Затем запускать из директории проекта. Применение файла _.xml (если это обновление уже применено, то второй раз уже не применяется): При этом история применения обновлений сохраняется в двух служебных таблицах: databasechangelog и databasechangeloglock. Вместо update можно применять другие команды: history — показать историю обновлений (https://docs.liquibase.com/commands/community/history.html) rollbackCount 1 — откатить одно последнее обновление (https://docs.liquibase.com/workflows/liquibase-community/using-rollback.html?Highlight=rolling%20back) updateTestingRollback — тот же update, но с тестированием отката. Но работает странно: не следит что база сохраняет консистентность В качестве тестового файла можете использовать этот: Если мы сделаем update этому файлу, то по порядку каждый ченджсет применится (если только уже не был применен). При этом в истории…

Читать дальше

Пошагавая инструкция как настроить интернационализацию в приложении на Spring. Пишу эту статью потому что там много нюансов, чтобы их самому не забыть). Исходные данные: Пустой проект на Java 11, созданный при помощи https://start.spring.io/ с зависимостями Spring Web, Thymeleaf. Для запуска интернационализации на проекте Spring Boot достаточно создать бандлы (файлы .properties) и объявить Bean — MessageSource. Создадим пару файлов: src\main\resources\locale\messages\app.propertiessrc\main\resources\locale\messages\app_ru.properties со следующим содержимым соответственно: registration.label = Sign Up login.label=Sign Inregistration.label = Регистрация login.label=Вход Чтобы быстренько увидить работающую интернационализацию, тупо создадим src\main\resources\templates\index.html и запихнем туда чё-нить интернациональное: Это не требует дополнительной настройки, т.к. согласно поставляемой автоконфигурации, thymeleaf будет искать свои шаблоны именно в этой директории. И index.html будет использоваться при открытии корня сайта. Теперь создадим класс с конфигурацией На этом базовая интернационализация будет работать. Самое время запустить проект и проверить чё там. Если у Вас есть англоязычный браузер, то в нём будет соответственно англоязычная локаль нашего приложения. Я поставил себе в Firefox…

Читать дальше

Статья разбита на 2 части: Установка Kafka на сервер и создание SpringBoot приложения. Если вы вообще не в курсе за брокеров сообщений, то советую посмотреть два видосика про Apache Kafka и Rabbit MQ. Они дадут понимание как там что работает и чем отличается: I. Установка Apache Kafka В качестве базовой системы у меня CentOS 7 x86_64 Minimal 1804. Для кафки рекомендуется иметь 4 Gb оперативки. Перед началом работы ставлю нужные мне программы: sudo yum install mc nano net-tools wget -y далее, согласно инструкции https://www.digitalocean.com/community/tutorials/how-to-install-apache-kafka-on-centos-7: 1 Установка OpenJDK8 sudo yum install java-1.8.0-openjdk 2 Создание нового пользователя sudo useradd kafka -m флаг -m означает, что также будет создана домашняя папка этого пользователя (/home/kafka). Устанавливаем пароль: sudo passwd kafka Добовляем пользователя в группу wheel чтобы у него были права устанавливать зависимости Kafka: sudo usermod -aG wheel kafka Теперь войдем из-под этого пользователя: su -l kafka 3 Загрузка и установка Kafka Binaries Для начала…

Читать дальше

Файл application.properties Большой список всевозможных свойств и описаний к ним Получение значения параметра свойства Надо пометить переменную наподобие такого RestTemplate send PATCH request При попытке отправить PATCH запрос, возникает исключение ProtocolException: Invalid HTTP method: PATCH или ResourceAccessException: I/O error on PATCH request Для решения проблемы следует добавить зависимость: И создавать RestTemplate следующим образом: Spring инициализация Запуск своего кода при загрузке Spring i18n Internalization Поддержка языков при использовании Spring Boot. Достаточно определить бин: И разместить бандлы в указанном месте (locale/messages/app). Т.е.: src/main/resources/locale/messages/app.properties иsrc/main/resources/locale/messages/app_ru.properties В этом случае если браузер желает русскую локаль, то ему будет отдан app_ru.properties, в противном случае — app.properties Также можно переопределить логику определения текущей локали с помощют объявления бина : Если этого не сделать SpringBoot будет использовать org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver.classв нём можно ставить брейкпоинты. Таким образом, если не переопределять LocaleResolver, то локаль будет определяться их хэдеров запроса. Более подробно написано тут https://blog.knasys.ru/spring-boot-i18n-thymeleaf/ Аннотации Как переиспользлвать настроенную аннотацию @Pattern Если Вы…

Читать дальше

Первая часть была здесь Спойлер: данная статья написана о первой версии программы. В настоящее время я развиваю данный проект: пофиксил баги, сделал UI, проработал документацию и собрал установщики! Добро пожаловать на сайт: netbackup.blog.knasys.ru В этой части расскажу как можно приготовить сервер для бакапов. Сразу прошу прощения за качество изображений — делал на скорую руку. Имеется: 4 HDD на 1 Tb Материнка ASUS H81M-R Процессор Intel Celeron (2,4 GHz вроде) DDR3 4Gb Чтобы не быть пиратом и не тратить лицензию на винду, использую Линукс. Так как материнка RAID не поддерживает, то буду использовать программный RAID. Да это и хорошо, т.к. не будет привязки к чипсету материнской платы. В качастве ОС буду использовать Fedora Workstation Live x86_64 31. Получилась вот такая сборка: У меня в системе будет два RAID1 массива по терабайту. Один я сделаю непосредственно перед установкой системы, а второй — после. Выбираю первые два жестких диска для массива: Нажимаю «Создать…

Читать дальше

Спойлер: данная статья написана о первой версии программы. В настоящее время я развиваю данный проект: пофиксил баги, сделал UI, проработал документацию и собрал установщики! Добро пожаловать на сайт: netbackup.blog.knasys.ru Давно вынашивал идею как-то бакапить данные пользовательских компьютеров в своей организации на случай внезапного отказа жесткого диска/нападения шифровальщиков/и т.п. Сначала думал сделать каждому пользователю сетевой диск для хранения важных данных, но как-то не зашло. Потом начал копать в сторону специализированных программ для резервного копирования: есть  множество решений, но либо они бесплатные и их нужно ставить на каждый комп и настраивать отдельно, либо платные. Так как ставить на каждый из 85-ти компов мне как-то не с руки, то искал серверный вариант, к тому же бесплатный. И крайне желательно чтобы под линукс. Нашел крутой оперсорсный проект Bareos — хорошо документированный развивающийся проект энтерпрайз уровня, поставил, настроил, но вот беда — уж очень медленно он тянул файлы через сеть. Чтобы бакапнуть 500 Gb —…

Читать дальше

На некоторых дистрибутивах Linux после учтановки — приложение «Файлы» не видит сеть Windows. При попытке открыть её, либо молча открывается пустая директория с надписью типа папка пуста, либо показывается сообщение об ошибке типа: «Не удалось получить список доступных на сервере ресурсов», не удалось открыть «Сеть Windows» или что-нибудь подобное. Конечно можно обойтись прямым обращением к хосту как описано здесь http://programmingandnotonly.blogspot.com/2017/11/windows-linux-mint.html, но это «такое». Данное поведение я обнаружил на свежеустановленных Centos 8 Desktop и Fedora 31 Workstation, и очень расстроился, т.к. поиски по интернету причины этого заняли очень много времени и тщетных попыток. Однако, интересно что Ubuntu после установки всё открывает без проблем. Сейчас я покажу решение которое помогло мне и решение, которые, возможно, поможет кому-то ещё. Итак, в моём случае проблема была в файле конфигурации самбы: /etc/samba/smb.conf Его содержимое в Федоре было следующим: GNU nano 4.3 /etc/samba/smb-original.conf # See smb.conf.example for a more detailed config file or # read the…

Читать дальше

40/136