Android Mobile | YeaHub
488 subscribers
285 photos
21 videos
471 links
Теория, подготовка к интервью и курсы для Android разработчиков

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
📞 Anvil — плагин для компилятора Kotlin, облегчающий внедрение зависимостей с помощью Dagger 2

Anvil упрощает внедрение зависимостей в Dagger за счет автоматического объединения модулей Dagger и интерфейсов компонентов. В общем, вместо того чтобы вручную добавлять модули в компонент Dagger и заставлять компонент Dagger расширять все интерфейсы компонента, эти модули и интерфейсы могут быть включены в компонент автоматически, типо того:

@Module
@ContributesTo(AppScope::class)
class DaggerModule { .. }

@ContributesTo(AppScope::class)
interface ComponentInterface {
fun getSomething(): Something
fun injectActivity(activity: MyActivity)
}

// The real Dagger component.
@MergeComponent(AppScope::class)
interface AppComponent

Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#полезное
❤️‍🔥 Vico — создание диаграмм и графиков на Kotlin

dependencies {
implementation(libs.vico.compose)
implementation(libs.vico.compose.m2)
implementation(libs.vico.compose.m3)
implementation(libs.vico.core)
implementation(libs.vico.views)
}


Vico — это легкая расширяемая библиотека Kotlin для создания диаграмм.
Библиотека совместима как с Jetpack Compose, так и с системой представлений, при этом 2 её основных модуля — compose и views, — являются независимыми.

GitHub
Wiki

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#полезное
👋 Apollo Kotlin — типизированный GraphQL-клиент, который генерирует Kotlin-модели на основе ваших GraphQL-запросов. Этот инструмент избавляет от ручного парсинга JSON и работы с сырыми мапами данных, превращая ответы сервера в удобные типизированные объекты.

Инструмент поддерживает мультиплатформенный Kotlin, что позволяет использовать его не только в Android-приложениях, но и в других Kotlin-проектах. Автоматическая генерация моделей гарантирует, что вы сможете обращаться только к тем полям, которые явно запросили в GraphQL-операции.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1
#Собес #android
🤔 Расскажите об основных компонентах Android-приложения.

B Android-приложении есть четыре ключевых компонента: Activity (экран UI), Service (фоновая работа), BroadcastReceiver (приём широковещательных сообщений) и ContentProvider (доступ к данным). Каждый компонент обьявляется в манифесте и управляется системой. Они взаимодействуют через Intent, что даёт гибкость в навигации и общении внутри и между приложениями.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
#полезное
😘 Inspektify — написанная на Kotlin библиотека для Android и iOS. Она позволяет вам наблюдать за сетью вашего приложения в режиме реального времени прямо на вашем мобильном устройстве

Эту библиотеку можно использовать только в проектах, использующих Ktor для сетевой коммуникации
Github

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#полезное
😎 Kotlin Serialization — официальная библиотека JetBrains для сериализации без рефлексии. Поддерживает JSON, Protobuf, CBOR и другие форматы, работая на всех платформах Kotlin: JVM, JS и Native.

Проект использует аннотации @Serializable для генерации кода сериализации на этапе компиляции, что делает его быстрым и безопасным. Интеграция с Gradle, Maven и Bazel упрощает подключение в любом проекте.
GitHub

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
3
#полезное
🤓 Как самому зашифровать SharedPreferences

Вы наверняка знаете, что решение от Google в виде EncryptedSharedPreferences уже давно Deprecated, а какой-то адекватной замены им так и не появилось. И что делать, если безопасники отказываются принимать оговорку, что префы может читать только само приложение, если на устройстве нет рута?

Остается только написать свое решение и, на самом деле, сделать это не сильно сложно. Для этого нам понадобится AndroidKeystore и Tink — open-source решение от Google для работы с криптографией, которое очень удобно в использовании.

Алгоритм получается следующий:
1. В AndroidKeystore создаем новый ключ, если его еще нет
2. В Tink генерируем KeysetHandle
3. На основе этих данных создаем encryptedKeyset средствами Tink и сохраняем его в SharedPreferences
4. Затем из keysetHandle достаем примитив AEAD, с помощью которого уже будем шифровать данные
5. PROFIT

В этой реализации главное учесть два момента:
🟠Обязательно удалять ключ из AndroidKeystore при очистке префов
🟠Разработать стратегию на случай, если encryptedKeyset в префах или ключа в Keystore не оказалось, иначе вы не сможете расшифровать ваши данные!

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Senior Android-разработчик (Kotlin) в компанию АВТОТЕХ

Техническое собеседование. Осень 2024. Просил 300-350к. Опыт в резюме 5 лет. Было много вопросов, которые основаны на реальных кейсах.

Вопросы:
- Что такое «зомби-процессы» и как они соотносятся с потоками (threads)?
- В чём разница между Flow и LiveData, как ту же логику организовать?
- Как работают методы bind и unbind y Android-сервисов?
- Какие проблемы могут возникнуть при перехвате Intent через BroadcastReceiver?

Все вопросы можно посмотреть на нашей платформе

#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍1
Исследование рынка вакансий IT 📈

Я проверил рынок на 4 резюме: 1-я неделя открытые резюме, 2-я неделя 100 откликов.

В A/B тестировании я проверял максимальный возраст, университет, опыт работы и пол.

Важные инсайды для резюме:

1️⃣Аутсорсы с высшим IT образованием конвертят в 2 раза больше (8 vs 4 приглашений)
2️⃣Возраст 40+ - все еще в строю, особенно, если сильное резюме на 3 года опыта (7 приглашений)
3️⃣Вышка, продуктовая разработка 4 года и Москва - конверсия 8,6%


Я проведу еще более масштабное исследование, где станет понятно - какой он, идеальный кандидат для любой специальности. Пока новый A/B тест насчитывает 26 резюме 🗿

Нужна твоя помощь. Аккаунт в tg, аккаунт известной площадке по поиску работы.


👉 Перешли этот пост друзьям, а также реагируй и пиши в комментариях, если готов взять виртуальную симку и дать самому масштабному исследованию рынка жизнь.

Подпишись, чтобы не пропустить 🚀

IT Crew | Антон Гуляев
👍3🔥32
#Собес #android
🤔 Как работают дженерики в Kotlin «под капотом»?

Kotlin-дженерики реализованы через стирание типов (type erasure) на JVM, аналогично Java: информация о конкретном параметре типа недоступна в рантайме. Компилятор проверяет типы во время компиляции, а затем генерирует код без параметризации. Для сохранения информации о типе используют реифицированные (reified) параметры в inline -функциях.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🥄 Creating an Engaging Progress Button in Jetpack Compose

Гайд по реализации вот такой кнопки с прогрессом на Jetpack Compose.

Исходный код → ProgressButton

Читать

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#Собес #git
🤔 Что такое команды git reset -mixed и git merge - abort?

git reset --mixed : отменяет изменения, которые были добавлены в индекс, но сохраняет изменения в рабочем каталоге.
git merge --abort : отменяет слияние, которое в данный момент находится в процессе, и возвращает репозиторий в состояние до начала слияния.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😬 Шаблон приложения Kotlin Multiplatform

Базовый шаблон приложения Kotlin Multiplatform для Android и iOS. Он включает общую бизнес-логику и обработку данных, а также реализацию общего пользовательского интерфейса с использованием Compose Multiplatform
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#полезное
😎 Koin — это лёгкий и прагматичный фреймворк для внедрения зависимостей (Dependency Injection) на языке Kotlin!

Он поддерживает как Kotlin Multiplatform, так и Android. Koin предоставляет удобный DSL для настройки зависимостей, минимизирует избыточность кода и интегрируется с различными экосистемами, включая Jetpack Compose и Ktor.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
🤓 Currencies — приложение для Android, которое предоставляет простой и удобный конвертер валют. Программа поддерживает несколько провайдеров обменных курсов, таких как Европейский Центральный Банк, OpenExchangeRates и другие, а также предлагает функции калькулятора и исторические курсы

Приложение написано на Kotlin с использованием Material Design и поддерживает светлую и тёмную темы интерфейса
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#Собес #git
🤔 Как вы находите коммит, который что-то нарушил после операции слияния?

💬 Кратко:
Для поиска коммита, который нарушил код после слияния, можно использовать команду git bisect . Этот инструмент помогает найти коммит, который вызывает проблему, путем бинарного поиска.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#полезное
🤣 Compose Hot Reload — инструмент от JetBrains для мгновенного обновления UI в Compose Multiplatform без перезапуска приложения.

Позволяет видеть изменения в интерфейсе сразу после правки кода, ускоряя разработку. Работает с Kotlin/JVM и поддерживает автоматическую перезагрузку через Gradle-задачи. Для полного функционала требует JetBrains Runtime.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42