Просмотрено
Автор: kna

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….. но это оказалось бесполезно, т.к. при сборке, грааль сканирует весь код и находит места вызовов несуществующих классов/методов, и если найдёт, то прекращает сборку и вываливает ошибку. На эту тему есть небольшое замечание тут. Как скипнуть эту проблему или игнорировать такие…

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

Изменение версии java в Ubuntu

Изменение версии java в Ubuntu

Рассматриваемая система — Ubuntu 22.04. Нужно сделать так, чтобы была возможность одной командой изменить дефолтную версию java. На самом деле оно уже есть, и чтобы изменить версию java в ubuntu, нужно лишь использовать команду: Эта команда изменит ссылку файла /usr/bin/java, которая ссылается на одну из установленных версий java (обычно в директории /usr/lib/jvm). Также переменная JAVA_HOME, которая по-умолчанию ссылается на /usr/bin/java, попадёт в выбранную версию. Всё работало до того момента, когда мне понадобилось добавить GraalVm. Во-первых, GraalVm не появляется в списке…

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

Логгирование JMS сообщений

Логгирование JMS сообщений

Различные способы логгирования JMS сообщений: 1. Логгирование внутри конвертора (Плюс в том, что будет логгироваться тело сообщения как есть. Если сообщение невозможно распарстить, то оно тоже залоггируется (если конечно это TextMessage)): 2. Логгирование внутри jmsTemplate при отправке (Тоже тело сообщения как есть): 3. Логгирование внутри @JmsListener’а (Тоже тело сообщения как есть): 4. Установка уровня логгирования для входящих сообщений (Минус в том, что логгируется объект Message целиком, и тело сообщения может просто не влезть в максимальную длину записи лога):

JPA Criteria API

JPA Criteria API

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

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

Открыть файл — предупреждение системы безопасности как отключить

Открыть файл — предупреждение системы безопасности как отключить

Такая вот ерунда просто вымогает при каждом запуске вполне легитимных приложений: В интернете полно статей как отключить защиту Defender, поправить групповые политики, изменить настройки конфиденциальности, разблокировать приложение… Всё это шляпа. Оказалось, что если запускать непосредственно сам exe-шник, то запускается сразу без этих дурацких вопросов. Значит дело в ярлыке. Но не понятно что с ним не так. Проблему удалось решить случайно, итак: На exe-шнике жмём правой кнопкой — Создать ярлык, вылезет окошко с предложением создать его на рабочем столе — жмём…

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

Spring data jdbc: one-to-one, one-to-many relations

Spring data jdbc: one-to-one, one-to-many relations

Т.к. в Spring Data JDBC нет стандартных хибернейтовских аннотаций типа @OneToOne, @OneToMany и @JoinColumn, то для меня было проблематично понять можно ли там вообще организовать отношения и использовать их при получении или сохранении объектов. Оказалось это делается так: One-To-One При такой реализации объект Operation без проблем вычитывается из БД уже с смапленным внутрь TaxInfo. Так же без проблем работает сохранение нового Operation с заполненным TaxInfo (корректно заполняются поля id и operationId. One-To-Many Несколько проблематично отношение один ко многим. Здесь сложность…

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