TGViewer
Channel Public Channel
Android Mobile | YeaHub

Android Mobile | YeaHub

@yeahub_android_mobile

Теория, подготовка к интервью и курсы для Android разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Subscribers
431
Photos
332
Videos
21
Links
597

Showing posts older than #168 · Back to latest

Older Posts 20 shown
Post #167 114
#полезное
😴 Google выкатила топовый генератор кода — Firebase создает любые приложения с нуля и даже помогает задеплоить их.

🟠 Работает со всеми популярными языками прораммирования, включая Java, Rust и Swift, а также фреймворками и библиотеками.
🟠 Основа — новейшая Gemini от Гугла, она пишет, редачит и оптимизирует код за вас.
🟠 Можно работать с уже готовым проектом — сервис подскажет, как вести разработку дальше.
🟠 Разрабы обещают завезти кучу ИИ-агентов для помощи разработчикам.
🟠 БЕСПЛАТНО.
Тестируем здесь

👉Новости 👉База вопросов
Post #166 137
#полезное
🤓 supabase-kt — это мультиплатформенный Kotlin-клиент для работы с Supabase, альтернативой Firebase с открытым исходным кодом!

✅ Библиотека поддерживает Android, iOS, JVM и JavaScript, предоставляя удобный API для работы с аутентификацией, базой данных Postgres, серверными функциями, файловым хранилищем и реальным временем. Она разработана для упрощения интеграции Supabase в Kotlin-приложения, обеспечивая гибкость и удобство работы с сервисами платформы.
Гитхаб

👉Новости 👉База вопросов
  • 👍 1
Post #165 138
#Собес #networks
🤔 Что такое авторизация?

Авторизация - это процесс, который определяет, какие ресурсы и действия доступны пользователю после успешной аутентификации. Она используется для применения политик безопасности, чтобы ограничить доступ к сетевым ресурсам на основе прав пользователя.

👉Новости 👉База вопросов
Post #164 164
#полезное
😊 Shader Ripple Effect Playground — библиотека шейдерных AGSL эффектов

Shader Ripple Effect Playground — библиотека шейдерных AGSL эффектов для Android. Есть эффект пульсации, реагирующий на касание, непрерывная волновая анимация с настраиваемыми параметрами, переход раскрытия содержимого с эффектом пульсации — все с настрйоками. Полная совместимость с любым элементом пользовательского интерфейса Jetpack Compose, простая интеграция с минимальным количеством кода.
Shader Ripple Effect Playground на GitHub

👉Новости 👉База вопросов
Post #163 151
#полезное
👨‍💻 RSocket-Kotlin — это мультиплатформенная реализация протокола RSocket на Kotlin, предназначенная для реактивного обмена сообщениями между клиентами и серверами!

Она поддерживает различные модели взаимодействия, включая fire-and-forget, request-response, request-stream и bidirectional channels. Библиотека основана на kotlinx.coroutines и ktor-io, что делает ее удобной для работы с асинхронными операциями и сетевыми приложениями.
Гитхаб

👉Новости 👉База вопросов
Post #161 185
#Собес
🤔 Объясните концепцию typealias в Kotlin.

typealias в Kotlin позволяет задать новое имя для существующего типа, улучшая читаемость и удобство кода. Оно не создаёт новый тип, а только предоставляет альтернативное имя. Используйте typealias, чтобы сделать код более понятным, особенно при работе с длинными или повторяющимися типами.

👉Новости 👉База вопросов
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
Post #160 147
#полезное
🫠 Анализируем время сборки и рисуем графики

🟠 Базовый Build Analyzer из Android studio покажет куда тратиться основная масса времени в сборке.
🟠 Аналогичный репорт можно получить через ./gradlew --profile assemble[Flavor]Debug.
🟠 Так же скан можно выгрузить в web и пошарить с коллегами через ./gradlew --scan. Там вы увидите более подробную разбивку по затраченному времени на тот или иной шаг сборки
🟠 Gradle Profiler и благодаря его удобной функции - сценарии, можно получить наглядную статистику. Больше примеров тут

👉Новости 👉База вопросов
Post #159 126
#полезное
😎 Пишем тесты для compose навигации

Все благодаря type-safe навигации, представленной недавно. Внутри статьи вариант для старого подхода и способ миграции его на новый подход. Для тестов используется TestNavHostController, позволяющий верифицировать экран на котором находимся. Пример:

@Test
fun whenUserIsInBookSearch_andClickOnABook_verifyDestinationIsBookDetail() {
// User is in BookSearch
composeTestRule.runOnUiThread {
navController.setCurrentDestination(NavigationRoutes.BOOK_SEARCH)
}

// User clicks on the first book
composeTestRule.onAllNodesWithTag(bookCardTestTag)[0].performClick()
assertTrue { navController.currentDestination?.route == NavigationRoutes.BOOK_DETAIL }
}


Выглядит очень просто, в связи с чем вопрос: Тестирование навигации это тесты ради тестов или валидный способ проверки бизнес-логики?

👉Новости 👉База вопросов
Medium How to Automatically Test Jetpack Compose Navigation Navigation is a core functionality of all mobile apps, and the tedious work lies in manually testing every possible navigation path from a…
Post #158 119
#полезное
🤓 Kopy — это библиотека для Kotlin, предназначенная для удобного глубокого копирования объектов!

🚩Она позволяет создавать новые экземпляры классов данных с измененными свойствами, включая вложенные объекты, без необходимости вручного копирования каждого поля. Это особенно полезно при работе со сложными структурами данных, где требуется изменить только часть объекта, сохранив остальные данные неизменными.
Гитхаб

👉Новости 👉База вопросов
Post #157 111
#Собес
🤔 В чем разница между init и constructor в Kotlin?

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

👉Новости 👉База вопросов
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
Post #156 120
#статьи
🤯 Размещение UI-компонентов в пределах отступов Safe Area

Безопасная область (safe area) — это часть экрана, которую не загораживают элементы системного UI, такие как строка состояния, панель навигации, динамический остров и пр.

По умолчанию SwiftUI гарантирует, что представления будут размещены в этой безопасной области, чтобы сохранить видимость и доступность. Однако бывают случаи, когда разработчикам требуется больше контроля над тем, как представления взаимодействуют с этими границами.
Читать статью

👉Новости 👉База вопросов
Post #155 106
#полезное
😊 Это база: companion object (также Singleton)

Объекты можно объявлять внутри класса, при этом нет каких-либо ограничений по их количеству. Но только один объект можно пометить ключевым словом companion object в рамках одного класса.

Синглтон-свойство companion object достигается за счет того, что он создается внутри класса в качестве статического поля. Он будет инициализирован при первом обращении к нему или при создании первого экземпляра класса, в котором он объявлен.

Важно отметить, что companion object будет инициализирован первым, а затем уже будет создан экземпляр класса:

class MyClass {
init {
// Выполняется всегда после инициализации companion object
}
companion object {
init {
// Выполняется всегда перед блоком init содержащего класса
}}}
val myClass = MyClass()


Такому объекту можно не указывать свое имя, и обращаться к методам и свойствам объекта через имя содержащего его класса без явного указания имени объекта.

class SomeClass { 
companion object {
fun create()
}
}
val someClass = SomeClass.create()


Компилируется в public static final class на Java. Работает подобно ключевому слову static в Java.

👉Новости 👉База вопросов
Post #154 115
#полезное
🥺 AAY-chart — это библиотека для создания графиков в приложениях на Kotlin Multiplatform и Jetpack Compose!

✅ Она поддерживает несколько типов диаграмм, таких как линейные, столбчатые, круговые, пончиковые и радарные.
Гитхаб

👉Новости 👉База вопросов
  • ❤ 1
Post #153 101
#Собес
🤔 Объясните модификатор suspend в Kotlin.

Модификатор suspend в Kotlin используется для пометки функций, которые могут быть приостановлены и возобновлены в рамках корутин. Это позволяет функции выполнять асинхронные операции, не блокируя поток, и вызывать другие приостанавливаемые функции внутри себя.

👉Новости 👉База вопросов
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
  • 👍 1
Post #152 113
#ЛитКод
Задача: 364. Nested List Weight Sum II

Вам дан вложенный список целых чисел nestedList. Каждый элемент является либо целым числом, либо списком, элементы которого также могут быть целыми числами или другими списками.

Глубина целого числа — это количество списков, внутри которых оно находится. Например, вложенный список [1,[2,2],[[3],2],1] имеет значение каждого целого числа, установленное равным его глубине. Пусть maxDepth будет максимальной глубиной любого целого числа.
Вес целого числа определяется как maxDepth - (глубина целого числа) + 1.

Верните сумму каждого целого числа в nestedList, умноженную на его вес.

Пример:
Input: nestedList = [[1,1],2,[1,1]]
Output: 8
Explanation: Four 1's with a weight of 1, one 2 with a weight of 2.
1*1 + 1*1 + 2*2 + 1*1 + 1*1 = 8


👨‍💻 Алгоритм:

1⃣Инициализировать первый уровень BFS-дерева, добавив все элементы из входного nestedList в очередь.

2⃣Для каждого уровня извлекать передний элемент из очереди. Если это список, то добавить его элементы в очередь. В противном случае обновить значения sumOfElements, maxDepth и sumOfProducts.

3⃣Когда очередь станет пустой, вернуть значение (maxDepth + 1) * sumOfElements - sumOfProducts.

😎 Решение:
class Solution {
fun depthSumInverse(nestedList: List<NestedInteger>): Int {
val queue: Queue<NestedInteger> = LinkedList(nestedList)
var depth = 1
var maxDepth = 0
var sumOfElements = 0
var sumOfProducts = 0

while (queue.isNotEmpty()) {
val size = queue.size
maxDepth = maxOf(maxDepth, depth)

repeat(size) {
val nested = queue.poll()

if (nested.isInteger()) {
val value = nested.getInteger()
sumOfElements += value
sumOfProducts += value * depth
} else {
queue.addAll(nested.getList())
}
}
depth++
}
return (maxDepth + 1) * sumOfElements - sumOfProducts
}
}


👉Новости 👉База вопросов
Post #151 100
#полезное
😵‍💫 EitherNet — это библиотека для Kotlin, предназначенная для обработки API-ответов в приложениях!

✅ Она предоставляет типизированный подход к обработке результатов сетевых запросов, используя sealed-классы для представления успешных и неудачных ответов. Это упрощает работу с ошибками, исключая необходимость использования исключений для обработки ошибок. Например, можно различать типы ошибок, такие как сетевые сбои, HTTP-ошибки или специфические API-ошибки, что делает код более безопасным и понятным.

✅ Библиотека интегрируется с Retrofit, позволяя разработчикам легко подключить её к существующим API-запросам. Она поддерживает аннотации, такие как @.DecodeErrorBody, для автоматической обработки тела ошибок HTTP-ответов. Это делает работу с API более удобной и предсказуемой, улучшая качество обработки ошибок и делая код проще для чтения и поддержки.
Гитхаб

👉Новости 👉База вопросов
  • 🔥 1
Post #150 117
#полезное
😊 KoalaPlot — это библиотека для создания графиков и диаграмм, основанная на Compose Multiplatform и написанная на языке Kotlin!

✅ Она позволяет создавать интерактивные диаграммы для Android, десктопа, iOS и веба с использованием единого API. Поддерживает разнообразные виды графиков, такие как круговые, линейные, столбчатые, а также графики на основе полярных координат. В библиотеке предусмотрена широкая настройка визуальных элементов, таких как цвета, шрифты, взаимодействие с пользователем и анимации.
Гитхаб

👉Новости 👉База вопросов
  • 🔥 1
Post #149 117
#Собес
🤔 Каково назначение ключевого слова by в Kotlin?

Ключевое слово by используется для делегирования. Оно позволяет классу передавать выполнение функций или управление свойством другому объекту. Это упрощает повторное использование кода и добавление дополнительного поведения к уже существующей функциональности.

👉Новости 👉База вопросов
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
  • 👍 1
Post #148 133
#полезное
👍 Ныне популярный vibe-coding теперь и в Android Studio благодаря Firebender!

По своей сути, то же самое, что и Cursor, Trae и windsurf, но встроено внутрь Android Studio. Демо для тех кто слышит об этом впервые можно глянуть тут: https://firebender.com/

Это кратно удобнее, чем задавать вопросы в чат. Доступны как популярные модели claude-3.7, так и локально запущенные llm. Пробовали ли на своих проектах работу с AI агентами в паре?

👉Новости 👉База вопросов
vas3k.blog Вайб-кодинг Новый способ программирования в эпоху GenAI
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →