Android разработка – Telegram
Android разработка
5.21K subscribers
442 photos
25 videos
1 file
547 links
все о Android разработке

@itchannels_telegram - 🔥 лучшие it каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - ml 📚

@pythonlbooks -📚books
Download Telegram
💻 Kotlin Coding Conventions

Соглашения в сфере разработки призваны помочь разработчикам писать понятный друг для друга код, в статье речь именно об этом.
Если вы только переходите от написания пет-проектов к работе над чем-то более серьёзным — загляните по ссылке в конце

Затрагиваются такие очевидные и не совсем вещи:
Правила форматирования кода, отступы, фигурные скобки, использование замыкающих запятых

Комментарии к документации, использование иммутабельных данных и значения параметров по умолчанию

Особенности Kotlin, такие как использование именованных аргументов и условных операторов

Рекомендации по использованию функций расширения, инфиксных функций и фабричных функций

Пишите код и помните: однажды работать с ним будет маньяк, который знает, где вы живёте)

📎 Читать

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥2🥴1
💻 Статические методы и синхронизация в Котлин

На собеседовании может всплыть вопрос в духе: "Что будет являться монитором для блока кода, помеченного сразу двумя аннотациями @Synchronized и @JvmStatic в Котлин?".
Держите полезную статью, в которой рассматривается, для чего используются данные аннотации и каким будет результат при их одновременном использовании.

А пока немного о @Synchronized и @JvmStatic:

🟡Аннотация @Synchronized в Kotlin является аннотацией для методов и блоков кода, которая обеспечивает синхронизацию доступа к ним между потоками. Когда метод или блок кода помечены аннотацией @Synchronized, только один поток может получить право их выполнения в определенный момент времени, остальные потоки будут ожидать освобождения монитора, прежде чем получить доступ. Это позволяет избежать состояния гонки и обеспечить правильное выполнение кода в многопоточной среде.

🟡Аннотация @JvmStatic в Kotlin указывает компилятору, что функция или свойство должны быть статическими в Java-коде после компиляции. Когда мы используем @JvmStatic перед функцией или свойством в объекте- компаньоне или внутри объекта, компилятор Kotlin создает соответствующий статический элемент в Java-коде. Это позволяет вызывать этот элемент напрямую из Java-кода, без необходимости ссылаться на экземпляр класса или объекта.

📎 Статья

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥21
💻 Каррирование в Kotlin

Kotlin поддерживает парадигму функционального программирования (ФП). Часто объектно ориентированный подход (ООП) ставят в противовес ФП, но они не соперники и могут дополнить друг друга. Одно из понятий ФП — каррирование функций.

Например, преобразование функции в вид f(a)(b) называется каррированием в честь Хаскелла Карри.
// Пример каррированной функции с применением fun
fun f(a: Int) = { b: Int -> a + b }

// Пример каррированной функции с применением переменной
val f2: (Int) -> (Int) -> Int = { b -> { a -> a + b } }


▶️ Погружение в каррирование в Kotlin

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1
💻 Что такое Kotlin Channel?

При использовании корутин в Kotlin рано или поздно появляется вопрос о том, какие примитивы необходимо использовать для передачи потоков данных между несколькими корутинами.
Для этого в библиотеке kotlinx.coroutines имеется специальный механизм, который так и называется — Channel.

▶️ Посмотрим на него поподробнее

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
💻 Вопрос на засыпку: какого типа x = null + null?

▶️Какой тип имеет x в выражении:
val x = null + null



▶️Это довольно забавная функция из стандартной библиотеки Kotlin. Вот ее сигнатура:
public operator fun String?.plus(other: Any?): String

Левый аргумент может принимать все строки плюс null, а правый — вообще любые значения Kotlin, включая null.

Поэтому исходное выражение аналогично такой записи:
val s: String? = null
val x: String = s + null


🟡Или же проверить тип x можно вот так:
fun main() {
val x = null + null
println(x::class.simpleName)
}

// String


@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥1
📱 Google меняет способ обновления Android Studio с помощью Feature Drops

Google обновляет цикл выпуска инструмента для создания приложений Android Studio. С помощью Feature Drops разработчики получат «более частые и целенаправленные обновления».

Первое обновление включает новейшие возможности платформы IntelliJ IDEA компании Jetbrains, на которой основана Android Studio. Сюда входят «улучшения удобства использования, производительности и стабильности», такие как обновления терминала и редактора.
Эти изменения появятся в стабильном канале быстрее, чем это происходило ранее.

Затем последует выпуск функций, в том числе инструментов, помогающих тестировать/оптимизировать форм-фактор большого экрана. Бета-версия станет доступна вскоре после того, как обновление платформы IDE выйдет в стабильном канале. В предстоящем выпуске функций Koala Feature Drop будут добавлены:

— новый процесс входа в систему, который значительно упрощает подключение к нескольким сервисам Google, таким как Firebase и Gemini, в Android Studio;

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

— шаблон Gemini API, который поможет внедрить генеративный искусственный интеллект в приложение.

Дополнительные функции будут анонсированы на I/O 2024, то есть в ближайший вторник

📎 Подробнее

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
💻 Кинетические часы — интересный проект на Kotlin

Отличная идея для пет-проекта)
Создано с использованием Compose Desktop

🖥 GitHub

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔3🔥1
🔥🔥🔥 Google объявила конкурс для всех разработчиков Gemini API с призовым фондом в $3 млн и Custom Electric 1981 DeLorean (Легендарная машина из фильма Назад в будущее)

В рекламе снялся легендарный Кристофер Ллойд, актер снимавшийся в трилогии Назад в будущее.

🛻 Главный приз: полностью электрическая версия DeLorean 1981, произведенная на заказ.

Общий призовой фонд: $3 млн.

Конкурс Google Gemini API открыт как для отдельных участников, так и для команд. Разработчикам предлагается создать и представить приложения с использованием API Gemini.

⚡️Критерии оценки

Google оценивает приложения по пяти основным критериям:

* Креативность
* Полезность
* Исполнение
* Новизна
* Влияние

Компания будет выбирать приложения, которые:

*Ииспользуют API Gemini
* Решают реальные проблемы
* Оригинальны и хорошо продуманы
* Дают потяьный пользовательский опыт

Призы

В рамках конкурса также будут вручаться денежные призы в различных категориях:

* Лучшее приложение для Android
* Лучшее веб-приложение
* Лучшая игра

Кроме того, будут присуждаться крупные денежные призы за:

* Самое полезное приложение
* Самое эффективное приложение
* Самое креативное приложение

Крайний срок подачи заявок

Крайний срок подачи заявок: 12 августа 2024 года.

Онлайн-голосование в категории «Выбор пользователей» ожидается 16 августа.

В остальных категориях победителей выберет внутренняя команда Google. Результаты конкурса Gemini API будут объявлены в октябре.

📌 Подать заявку: https://ai.google.dev/competition?hl=ru
📌 Видео: https://www.youtube.com/watch?v=_cZa_7KaQ3c&t=18s

@ai_machinelearning_big_data
👍1
💻 detekt — статический анализатор кода на Kotlin

brew install detekt

detekt предоставляет высококонфигурируемые наборы правил, имеет бесшовную интеграцию с Gradle от первого лица с помощью плагина Gradle, и предоставляет ещё массу возможностей.
Поддерживает различные форматы отчетов: HTML, Markdown, SARIF, XML (Checkstyle) и кастомные форматы.

🖥 GitHub
🟡 Доки

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
💻 Exposed — ORM библиотека для Kotlin

val exposed_version = "0.50.0"
dependencies {
implementation("org.jetbrains.exposed", "exposed-core", exposed_version)
implementation("org.jetbrains.exposed", "exposed-dao", exposed_version)
implementation("org.jetbrains.exposed", "exposed-jdbc", exposed_version)
}


Exposed — это легковесная библиотека SQL поверх драйвера JDBC для Kotlin. Exposed имеет два варианта доступа к базам данных: облегченный ORM (с использованием DAO) и безопасный для типов SQL (с использованием DSL).

Exposed можно использовать для имитации различных движков баз данных, что позволяет создавать приложения без зависимости от конкретного движка и переключаться между ними с минимальными изменениями или вообще без них.

Поддерживает MariaDB, MySQL, Oracle, Postgres, SQLite, Microsoft SQL Server

🖥 GitHub

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42👎1🔥1
💻 fmodel — функциональное, алгебраическое и реактивное моделирование доменов с помощью Kotlin

Библиотека fmodel написана на чистом Kotlin без зависимостей

🖥 GitHub
🟡 Страничка fmodel

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Coil — библиотека загрузки изображений для Android, основанная на корутинах Kotlin

Фичи Coil (Coroutine Image Loader):

Скорость: Coil выполняет ряд оптимизаций, включая кэширование памяти и диска, понижение дискретизации изображения в памяти, автоматическую приостановку/отмену запросов и многое другое.

Лёгкость: Coil добавляет ~2000 методов в ваш APK (для приложений, которые уже используют OkHttp и Coroutines), что сравнимо с Picasso и значительно меньше, чем Glide и Fresco.

Простота использования: API Coil использует возможности языка Kotlin для простоты и минимального количества косяков.

Современность: Coil ориентирован на Kotlin и использует современные библиотеки, включая Coroutines, OkHttp, Okio и AndroidX Lifecycles.

🖥 GitHub

@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52👍2