Добавляем поддержку 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 приложения…
Что такое sealed класс?
Это abstract класс, который имеет ограниченную иерархию наследования. Не объявляется с ключевым словом inner. В качестве наследников могут быть:
– Object который не имеет конструктора;
– Class который может иметь конструктор с параметрами.
Преимущества перед Enum:
– Может иметь несколько экземпляров классов, enum работает подобно Singleton
– Классы наследники могут иметь разные конструкторы с различным количеством аргументов;
– При использовании when, все подклассы, которые не были проверены в конструкции, будут подсвечены IDE.
Это abstract класс, который имеет ограниченную иерархию наследования. Не объявляется с ключевым словом inner. В качестве наследников могут быть:
– Object который не имеет конструктора;
– Class который может иметь конструктор с параметрами.
Преимущества перед Enum:
– Может иметь несколько экземпляров классов, enum работает подобно Singleton
– Классы наследники могут иметь разные конструкторы с различным количеством аргументов;
– При использовании when, все подклассы, которые не были проверены в конструкции, будут подсвечены IDE.
В чем ключевое отличие Iterable<T> и Sequence<T> в Kotlin?
Anonymous Quiz
16%
Iterable<T> работает только с immutable коллекциями, Sequence<T> применим к mutable
11%
Нет никакой разницы, т. к. Sequence<T> аналог Iterable<T>
48%
Последовательности обрабатываются лениво, итераторы жадно
25%
Последовательности обрабатываются по очереди, итераторы параллельно (многопоточно)
Что за тип такой — Unit? Зачем нужен?
Тип Юнит это аналог джавовского Void, создан в основном для использования в дженериках для обозначения типа, который не возвращает значения.
Тип Юнит это аналог джавовского Void, создан в основном для использования в дженериках для обозначения типа, который не возвращает значения.
Как компилируются object declarations и companion objects?
Объявление object компилируется в статический класс со статическим полем, имя которого INSTANCE. с компаньонами тоже самое, но если имя не указано, оно будет Companion
Объявление object компилируется в статический класс со статическим полем, имя которого INSTANCE. с компаньонами тоже самое, но если имя не указано, оно будет Companion