Просмотрено
Категория: Без рубрики

Foreground процесс завершается в Android

Foreground процесс завершается в Android

Написал приложение, которое в Foreground режиме периодически пингует сервер и забирает с него некую информацию. Проблема в том, что через некоторое время приложение перестаёт выходить на связь. По коду вроде проблем нет, и я начал капать в сторону того, что сам Android убивает фоновые процессы. Интересно, что в настройках приложения я отключил всякую оптимизацию, разрешил работу в фоне, но ему оказалось этого недостаточно. Для начала рекомендую подключить устройство к ПК, и снять с него логи. Для этого нужно активировать режим…

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

The emulator process for avd has terminated. Android Studio

The emulator process for avd has terminated. Android Studio

Среди прочих проблем, которые являются причиной появления данной ошибки — есть проблемы с gpu. Для того, чтобы получить более детальное описание причины Вашей ошибки, стоит посмотреть логи здесь: C:\Users\{userName}\AppData\Local\Google\AndroidStudio2024.2\log\idea.log По ошибкам отсюда можно попытаться найти решение в интернете. Но в моём случае, там не было зацепок, и я нашёл логи при прямом запуске эмулятора из командной строки. Вот пара команд для отображения списка виртуальных устройств и запуска конкретного устройства: {Your Android Sdk Directory}\emulator\emulator -list-avds {Your Android Sdk Directory}\emulator\emulator @avdName В…

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

Нюансы подключения к ActiveMQ Artemis в обычном и кластерном режиме

Нюансы подключения к ActiveMQ Artemis в обычном и кластерном режиме

Проблема — клиент не восстанавливает подключение к серверу ActiveMQ после обрыва соединения. Здесь зависит от режима соединения. При обычном (не кластерном) соединении достаточно установить параметр reconnectAttempts=-1. Это заставит клиента бесконечно пытаться подключиться к узлу, с которым изначально было установлено соединение. По-умолчанию параметр установлен в значение 0, что запрещает попытки переподключения, также можно установить конкретное число попыток, например reconnectAttempts=5. В итоге соединение должно выглядеть примерно следующим образом: quarkus.artemis.url=tcp://127.0.0.1:61616?clientFailureCheckPeriod=5000&retryInterval=1000&reconnectAttempts=-1&callTimeout=3000 При кластерном подключении, значение параметра reconnectAttempts=-1 сыграет с Вами злую шутку, т.к. при…

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

Особенности сборки native приложений в Quarkus через GraalVM

Особенности сборки native приложений в Quarkus через GraalVM

Столкнулся с некоторыми проблемами: Ошибки типа Discovered unresolved type during parsing… и Discovered unresolved method during parsing… Имеют свойство появляться в случайном порядке, если в приложении существует несколько мест вызывающих данную ошибку. Сначала пытался лечить путем добавления аргумента сборки quarkus.native.additional-build-args=—initialize-at-run-time….. но это оказалось бесполезно, т.к. при сборке, грааль сканирует весь код и находит места вызовов несуществующих классов/методов, и если найдёт, то прекращает сборку и вываливает ошибку. На эту тему есть небольшое замечание тут. Как скипнуть эту проблему или игнорировать такие…

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

JPA Criteria API

JPA Criteria API

Выборка записей с максимальной датой в разрезе значений определённого поля На SQL выражение выглядит так (записи с максимальным create_timestamp у каждого sender’а): Но т.к. criteria api поддерживает подзапросы полько в секции where, то можно реализовать только такой запрос (будет делать то же самое): Если реализовать интерфейс Specification, то он будет выглядеть так: При этом, это поля из модели, сгенерированные maven-плагином: Выборка записей с максимальной датой На SQL выражение выглядит так (записи с максимальным create_timestamp): Если реализовать интерфейс Specification, то он…

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

Логгирование обращений к базе данных в Spring Boot

Логгирование обращений к базе данных в Spring Boot

Чтобы логгировать SQL-запросы к базе данных — нужно добавить следующие свойства: Ещё есть вариант использовать библиотеку p6spy, которая будет писать в лог настоящие запросы:

Настройка Gitlab CI/CD для java приложения

Настройка Gitlab CI/CD для java приложения

1. Создание раннера Для начала нам нужно организовать постоянно работающий процесс (runner), который будет выполнять все задачи по нашему CICD (т.е. задания билдинга, проверки, закрузки на сервер и выполнения в нём каких-то команд). Кстати, у гитлаба есть много разных публичных runner’ов, но, во-первых — я бы не хотел чтобы код моего закрытого репозитория улетал на какие-то непонятные раннеры, во-вторых — раннер надо настроить под конкретную задачу, чтобы адекватно кешировались промежуточные результаты и не тормозил весь процесс снова и снова проделывая…

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

JPA relations

JPA relations

Один ко многим БД: 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 Один к одному Один…

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