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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #git
🤔 Что такое рабочий процесс Gitflow?

Gitflow - это стратегия ветвления, которая делит разработку на несколько веток: main для релизов, develop для активной разработки и дополнительные ветки для новых функций, исправлений багов и релизов. Этот процесс удобен для крупных проектов с чёткими этапами разработки.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🏠 springdoc-openapi — библиотека, превращающая ваши Spring Boot 3.x приложения в самоописываемые API, она генерирует OpenAPI 3.0 спецификацию и интерактивный Swagger UI на ходу.

В отличие от ручного описания эндпоинтов, она анализирует контроллеры, модели и аннотации вроде @Operation или @SecurityScheme, создавая актуальную документацию без boilerplate-кода. Проект поддерживает не только классические MVC, но и WebFlux, включая функциональные эндпоинты.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#полезное
😱 Redwood — библиотека для создания пользовательских интерфейсов на Android, iOS и в веб-приложениях с использованием Kotlin и Jetpack Compose!

🟠 Основная цель проекта — упростить разработку многоплатформенных интерфейсов, обеспечивая согласованность UI и возможность использования общих компонентов на разных платформах.

🟠 Redwood интегрирует систему дизайна и компонуемые функции (composables), что позволяет разрабатывать UI, которые адаптируются к особенностям каждой платформы. Это решение нацелено на повышение продуктивности и унификацию интерфейсов без необходимости писать отдельный код для каждой платформы.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Меняем Android Studio на IntelliJ IDEA ради JetBrains Junie

Что за проблемы возникли:
🟠 Android Plugin немного отстает от последних версий Android Studio
🟠 Несколько полезных плагинов недоступны для установки в IDEA (Firebase Services, Firebase Testing, Test Recorder, Android APK Support, Android NDK Support, Android SDK Upgrade Assistant, Google Cloud Tools for Android Studio, App Links Assistant)
🟠 Некоторые плагины нужно установить вручную(Android,Android Design Tools, Jetpack Compose, Smali Viewer), некоторый функционал дублируется

Android Studio хорошо заточена под Android разработку, но когда хочется потрогать последние фичи из IDEA - свитчнуться возможно!

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #git
🤔 Что делает файл .gitignore?

Файл .gitignore определяет файлы и папки, которые Git должен игнорировать. Это используется для исключения временных файлов, логов, зависимостей, сгенерированных файлов и других ненужных элементов.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Seal — open-source приложение, предлагающее простое решение для скачивания контента — загрузку медиа через yt-dlp с поддержкой 1000+ сайтов. Проект выделяется чистым Material Design 3 интерфейсом и неожиданными фишками вроде встроенного aria2c для ускорения загрузок и автоматического добавления метаданных в аудиофайлы.

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😎 Ktorm — минималистичный ORM для Kotlin-разработчиков. Этот фреймворк предлагает принципиально иной подход к работе с базами данных: вместо сложных конфигураций и магии аннотаций здесь чистый Kotlin-код с типизированным SQL DSL.

При этом фреймворк не абстрагируется от SQL, а аккуратно его дополняет: вы всегда видите, какой запрос будет выполнен, но пишете его на понятном Kotlin. Встроенная поддержка пагинации, агрегаций и транзакций делает Ktorm готовым к использованию в production.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
🤓 Rich Errors в Kotlin 2.4

Анонсировали на KotlinConf. На мой взгляд, классная обертка на замену старому-доброму try-catch.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #git
🤔 Какие различные стратегии ветвления вы знаете?

Централизованный рабочий процесс (Centralized Workflow). Веткой разработки по умолчанию является main, и все изменения фиксируются в этой ветке. Этот рабочий процесс не требует других веток, кроме главной.

Рабочий процесс разветвления функций (Feature Branching Workflow). Основная идея рабочего процесса разветвления функций заключается в том, что разработка всех функций должна вестись в специальной ветке, а не в основной.

Рабочий процесс Gitflow. Gitflow определяет строгую модель ветвления, разработанную вокруг релиза проекта. Это обеспечивает надежную основу для управления большими проектами. Она назначает очень специфические роли различным веткам и определяет, как и когда они должны взаимодействовать. В дополнение к функциональным веткам используются отдельные ветки для подготовки, поддержки и записи релизов.

Рабочий процесс Forking. Forking Workflow принципиально отличается от других популярных рабочих процессов Git. Вместо того чтобы использовать единый серверный репозиторий в качестве "центральной" кодовой базы, он предоставляет каждому разработчику свой серверный репозиторий. Это означает, что каждый участник имеет не один, а два Git-репозитория: частный локальный и публичный серверный. Чаще всего Forking Workflow встречается в публичных проектах с открытым исходным кодом.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 Фоновая работа в Android и iOS

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

На текущий момент не существует хорошего решения для KMP-проектов, которое предоставляло бы общий API для работы с фоновыми задачами. Это вполне объяснимо: API сильно отличаются между платформами.

🚩Для решения задачи синхронизации данных в фоне в Android существует несколько решений, например, WorkManager, который имеет довольно удобный API и позволяет запускать задачи с интервалом не менее 15 минут. Он позволяет задать условия запуска задачи, порядок выполнения воркеров и определить поведение при повторном планировании одной и той же задачи.

🚩 В iOS есть два стула: BGAppRefreshTaskRequest и BGProcessingTaskRequest.

Первый предназначен для относительно быстрых операций длительностью до 30 секунд и может выполняться чаще, второй — для более долгих задач, которые могут выполняться в течение нескольких минут и даже часов. Разумеется, можно указать минимальное время, через которое должна быть выполнена синхронизация. В интернетах рекомендуют устанавливать интервал в один час, однако iOS конечно же не гарантирует, что задача будет выполнена вообще

С появлением SwiftUI стало удобнее работать с фоновыми задачами — достаточно запланировать их с помощью BGTaskScheduler и обрабатывать через модификатор backgroundTask. Однако, по сравнению с WorkManager, многое приходится делать вручную — например, явно обрабатывать ситуацию, когда задача уже запланирована, иначе интервал её запуска может быть сброшен.

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#ЛитКод
Задача: 487. Max Consecutive Ones II

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

Пример:
Input: nums = [1,0,1,1,0]
Output: 4
Explanation:
- If we flip the first zero, nums becomes [1,1,1,1,0] and we have 4 consecutive ones.
- If we flip the second zero, nums becomes [1,0,1,1,1] and we have 3 consecutive ones.
The max number of consecutive ones is 4.


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

1⃣Для каждого возможного начала последовательности в массиве nums начните считать количество нулей.

2⃣Для каждой последовательности проверяйте, сколько нулей содержится в ней. Если количество нулей не превышает одного, обновите максимальную длину последовательности единиц.

3⃣Продолжайте проверять все возможные последовательности в массиве, и верните максимальную длину последовательности единиц, удовлетворяющую условию.

😎 Решение:
class Solution {
fun findMaxConsecutiveOnes(nums: IntArray): Int {
var longestSequence = 0
for (left in nums.indices) {
var numZeroes = 0
for (right in left until nums.size) {
if (nums[right] == 0) {
numZeroes++
}
if (numZeroes <= 1) {
longestSequence = maxOf(longestSequence, right - left + 1)
}
}
}
return longestSequence
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Redwood — библиотека для создания пользовательских интерфейсов на Android, iOS и в веб-приложениях с использованием Kotlin и Jetpack Compose!

🟠 Основная цель проекта — упростить разработку многоплатформенных интерфейсов, обеспечивая согласованность UI и возможность использования общих компонентов на разных платформах.

🟠Redwood интегрирует систему дизайна и компонуемые функции (composables), что позволяет разрабатывать UI, которые адаптируются к особенностям каждой платформы. Это решение нацелено на повышение продуктивности и унификацию интерфейсов без необходимости писать отдельный код для каждой платформы.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #git
🤔 Что такое ветка в репозитории Git?

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️‍🔥 Ktorfit — retrofit для Kotlin Multiplatform на базе Ktor

Когда нужно реализовать сетевые запросы в Kotlin-приложении, Ktorfit предлагает знакомый по Retrofit DSL инструмент, но с поддержкой Ktor-клиентов под капотом.

Проект использует Kotlin Symbol Processing для генерации кода во время компиляции — это даёт возможность использовать нативные suspend-функции и Flow для Kotlin Coroutines, поддержку всех платформ, где работает Ktor, а также лёгковесную альтернативу без рефлексии
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
💅1
#полезное
👨‍💻 kotlin-logging — легковесный фреймворк для логгирования, написанный на чистом Kotlin

implementation 'io.github.oshai:kotlin-logging-jvm:5.1.0'

kotlin-logging предоставляет обертку для slf4j-api для использования классами Kotlin; при этом kotlin-logging имеет такие преимущества:
— нет необходимости писать шаблонный код, содержащий имя логгера и класса или имя логгера
— простой способ регистрации сообщений в виде строки с ленивой оценкой с помощью лямбда-выражения {}
— все предыдущие реализации slf4j по-прежнему могут быть использованы
GitHub
Wiki

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #git
🤔 Как вы разрешаете конфликты в Git?

Конфликты возникают, когда изменения из удаленного и локального репозиториев пересекаются. Чтобы разрешить конфликт, нужно вручную отредактировать проблемные файлы, выбрать правильную версию, а затем зафиксировать изменения.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😊 Мобильные технологии Apple снова унизили — в сети сравнили простое удаление объектов на смартфонах Apple и Samsung.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😵 6 основных аспектов безопасности

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

В этой статье мы рассмотрим шесть основных аспектов защиты API, которые помогут минимизировать риски взлома, утечки данных и отказа в обслуживании.
Читать статью

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😵 Стандартизация без боли

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

В статье автор сравнивает языки программирования по уровню синтаксической однозначности, гибкости и пригодности для командной работы.

Также рассматривает, как строгие ограничения формируют культуру качества, а чрезмерная выразительность часто мешает команде работать как единое целое
Читать статью

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