Добавляем поддержку Flatpak в Compose Desktop
Те, кто делали мультиплатформенное приложение с помощью Compose Multiplatform, наверное уже сталкивались с тем, в как публиковать приложение. Для Linux на текущий момент доступны следующие форматы: Deb - "нативные" пакеты для Debian-подобных дистрибутивов; Rpm - такие же пакеты для Fedora, RHEL; AppImage - portable приложения(одним файлом). Недостаток первых двух - заточенность только под одну платформу(Debian и Fedora соответственно), второго - отсутствие пакетного менеджера в абсолютном большинстве дистрибутивов. Негодуя с этого, я решил внедрить compose-приложение в Flatpak - пакетный менеджер для sandboxed приложений. Sandboxed apps - приложения, которые по умолчанию не имеют доступа к файлам пользователя и другим настройкам. Flatpak дает уверенность, что та или иная функция/бинарник присутствуют в системе и могут быть использованы. Также с помощью Portals, которые встроены в Flatpak, приложение может безопасно и независимо осуществлять некоторые операции вроде доступа к камере, показа уведомлений и другого. Как вы могли видеть ранее, поддержки Flatpak в Compose Multiplatform нет.
Читать статью
Те, кто делали мультиплатформенное приложение с помощью Compose Multiplatform, наверное уже сталкивались с тем, в как публиковать приложение. Для Linux на текущий момент доступны следующие форматы: Deb - "нативные" пакеты для Debian-подобных дистрибутивов; Rpm - такие же пакеты для Fedora, RHEL; AppImage - portable приложения(одним файлом). Недостаток первых двух - заточенность только под одну платформу(Debian и Fedora соответственно), второго - отсутствие пакетного менеджера в абсолютном большинстве дистрибутивов. Негодуя с этого, я решил внедрить compose-приложение в Flatpak - пакетный менеджер для sandboxed приложений. Sandboxed apps - приложения, которые по умолчанию не имеют доступа к файлам пользователя и другим настройкам. Flatpak дает уверенность, что та или иная функция/бинарник присутствуют в системе и могут быть использованы. Также с помощью Portals, которые встроены в Flatpak, приложение может безопасно и независимо осуществлять некоторые операции вроде доступа к камере, показа уведомлений и другого. Как вы могли видеть ранее, поддержки Flatpak в Compose Multiplatform нет.
Читать статью
Telegraph
Добавляем поддержку Flatpak в Compose Desktop
Те, кто делали мультиплатформенное приложение с помощью Compose Multiplatform, наверное уже сталкивались с тем, в как публиковать приложение. Для Linux на текущий момент доступны следующие форматы: Deb - "нативные" пакеты для Debian-подобных дистрибутивов; Rpm …
Что такое Kotlin и каковы его ключевые особенности?
Kotlin - это современный статически типизированный язык программирования, работающий на JVM. Его ключевые особенности включают нулевую безопасность, поддержку функционального программирования и совместимость с Java.
Выше на картинке
Kotlin предлагает несколько преимуществ по сравнению с Java, включая большую гибкость, читаемость и более лаконичный синтаксис. Кроме того, Kotlin поддерживает современные парадигмы программирования, такие как функциональное программирование, которые Java поддерживает не полностью.
Kotlin - это современный статически типизированный язык программирования, работающий на JVM. Его ключевые особенности включают нулевую безопасность, поддержку функционального программирования и совместимость с Java.
Выше на картинке
“Hello, world!”
в KotlinKotlin предлагает несколько преимуществ по сравнению с Java, включая большую гибкость, читаемость и более лаконичный синтаксис. Кроме того, Kotlin поддерживает современные парадигмы программирования, такие как функциональное программирование, которые Java поддерживает не полностью.
Настраиваем память JVM-приложения в Kubernetes
Друзья, всем привет! Как известно, в Kubernetes у каждого pod’а есть ограничение на использование памяти (limits.memory), и, как показывает опыт, далеко не всегда очевидно, как JVM-приложение интерпретирует эту настройку, что порой может приводить к OOMKill.
Читать статью
Друзья, всем привет! Как известно, в Kubernetes у каждого pod’а есть ограничение на использование памяти (limits.memory), и, как показывает опыт, далеко не всегда очевидно, как JVM-приложение интерпретирует эту настройку, что порой может приводить к OOMKill.
Читать статью
Telegraph
Настраиваем память JVM-приложения в Kubernetes
Друзья, всем привет! Как известно, в Kubernetes у каждого pod’а есть ограничение на использование памяти (limits.memory), и, как показывает опыт, далеко не всегда очевидно, как JVM-приложение интерпретирует эту настройку, что порой может приводить к OOMKill.…
Что такое data класс и можно ли наследоваться от него?
– Класс, помеченный ключевым словом data обязательно должен иметь основной конструктор, содержащий хотя бы один аргумент;
– Класс помеченный словом data автоматически переопределяет реализации методов toString(), equals(), hashCode(), copy() для параметров переданных в конструкторе;
– От data class нельзя наследоваться т.к. он является final классом, но может наследоваться от других классов;
– Класс данных не может быть абстрактными, open, sealed или inner.
– Класс, помеченный ключевым словом data обязательно должен иметь основной конструктор, содержащий хотя бы один аргумент;
– Класс помеченный словом data автоматически переопределяет реализации методов toString(), equals(), hashCode(), copy() для параметров переданных в конструкторе;
– От data class нельзя наследоваться т.к. он является final классом, но может наследоваться от других классов;
– Класс данных не может быть абстрактными, open, sealed или inner.
Есть ли у Kotlin примитивные типы данных, такие как int, long, float?
Anonymous Quiz
13%
Нет, Kotlin не имеет и не использует примитивные типы данных.
42%
Нет, не на уровне языка. Но компилятор Kotlin использует примитивы JVM для лучшей производительности
12%
Да, но Kotlin всегда конвертирует их в не примитивные аналоги.
33%
Да, Kotlin в этом отношении похож на Java.
Все библиотеки имеют фатальные недостатки, или Как мы изобретали Retrofit-подобный велосипед для JSON-RPC протокола
Привет! Меня зовут Юра Кучанов, работаю Android разработчиком в Garage Eight и сегодня хочу рассказать о том, как мы делали Retrofit-подобную библиотеку для JSON-RPC протокола. Началось всё с того, что нам потребовалось для общения сервера и Android приложения использовать протокол JSON-RPC. Что значит “потребовалось”? Если кратко – бэкендеры предложили, а сильных аргументов против, в сущности, не нашлось =) В итоге я пошёл искать библиотеки в сети и… И обнаружил, что готовые решения не подходят (так как там, конечно же, есть хотя бы один фатальный недостаток). В итоге сделал свою библиотеку в стиле Retrofit. Ниже расскажу, почему не подошли готовые решения, как реализовал своё через рефлексию и как копался в исходниках Retrofit и OkHttp для реализации нужного нам функционала.
Читать статью
Привет! Меня зовут Юра Кучанов, работаю Android разработчиком в Garage Eight и сегодня хочу рассказать о том, как мы делали Retrofit-подобную библиотеку для JSON-RPC протокола. Началось всё с того, что нам потребовалось для общения сервера и Android приложения использовать протокол JSON-RPC. Что значит “потребовалось”? Если кратко – бэкендеры предложили, а сильных аргументов против, в сущности, не нашлось =) В итоге я пошёл искать библиотеки в сети и… И обнаружил, что готовые решения не подходят (так как там, конечно же, есть хотя бы один фатальный недостаток). В итоге сделал свою библиотеку в стиле Retrofit. Ниже расскажу, почему не подошли готовые решения, как реализовал своё через рефлексию и как копался в исходниках Retrofit и OkHttp для реализации нужного нам функционала.
Читать статью
Telegraph
Все библиотеки имеют фатальные недостатки, или Как мы изобретали Retrofit-подобный велосипед для JSON-RPC протокола
Привет! Меня зовут Юра Кучанов, работаю Android разработчиком в Garage Eight и сегодня хочу рассказать о том, как мы делали Retrofit-подобную библиотеку для JSON-RPC протокола. Началось всё с того, что нам потребовалось для общения сервера и Android приложения…