Rafinad: сахар для UI-тестирования iOS-приложений
Мы в hh очень любим UI-тесты, ими покрывается практически вся функциональность наших приложений, и даже backend-разработчики прогоняют тесты мобильных платформ перед развертыванием своих фич. Однако наши механизмы UI-тестирования разрабатывались более 8 лет назад и с тех пор почти не изменились.
Кто-то скажет, что старые решения прошли проверку временем и что «работает — не трогай»... Возможно, и так. Но сейчас мы внедряем новую дизайн-систему, а новые компоненты требуют адаптации всех тестов — не лучшее ли время для перемен?
Поэтому мы пересмотрели наши подходы к UI-тестированию и теперь готовы поделиться наработками с сообществом в виде open-source проекта — Rafinad. В этой статье расскажем, что он умеет и как им пользоваться.
Статья: https://habr.com/ru/companies/hh/articles/910380/
Платформа: iOS
Мы в hh очень любим UI-тесты, ими покрывается практически вся функциональность наших приложений, и даже backend-разработчики прогоняют тесты мобильных платформ перед развертыванием своих фич. Однако наши механизмы UI-тестирования разрабатывались более 8 лет назад и с тех пор почти не изменились.
Кто-то скажет, что старые решения прошли проверку временем и что «работает — не трогай»... Возможно, и так. Но сейчас мы внедряем новую дизайн-систему, а новые компоненты требуют адаптации всех тестов — не лучшее ли время для перемен?
Поэтому мы пересмотрели наши подходы к UI-тестированию и теперь готовы поделиться наработками с сообществом в виде open-source проекта — Rafinad. В этой статье расскажем, что он умеет и как им пользоваться.
Статья: https://habr.com/ru/companies/hh/articles/910380/
Платформа: iOS
FCM для Android и Backend на Kotlin
Firebase Cloud Messaging (FCM) — это бесплатный (или почти) облачный сервис от Google, который позволяет отправлять push-уведомления и сообщения напрямую на устройства Android, iOS и веб-приложения. FCM широко используется для реализации мгновенных уведомлений, оповещений о событиях, маркетинговых рассылок и других сценариев, где требуется быстрая доставка сообщений пользователям.
В этой статье мы рассмотрим, как интегрировать FCM в Android-приложение на Kotlin и как настроить отправку push-уведомлений с небольшого, похожего backend, сервера, написанного на Kotlin. Вы узнаете, как подключить Firebase к вашему проекту, реализовать обработку входящих сообщений на устройстве, а также научитесь отправлять push-уведомления на выбранные устройства.
Статья: https://habr.com/ru/articles/912710/
Платформа: Android
Firebase Cloud Messaging (FCM) — это бесплатный (или почти) облачный сервис от Google, который позволяет отправлять push-уведомления и сообщения напрямую на устройства Android, iOS и веб-приложения. FCM широко используется для реализации мгновенных уведомлений, оповещений о событиях, маркетинговых рассылок и других сценариев, где требуется быстрая доставка сообщений пользователям.
В этой статье мы рассмотрим, как интегрировать FCM в Android-приложение на Kotlin и как настроить отправку push-уведомлений с небольшого, похожего backend, сервера, написанного на Kotlin. Вы узнаете, как подключить Firebase к вашему проекту, реализовать обработку входящих сообщений на устройстве, а также научитесь отправлять push-уведомления на выбранные устройства.
Статья: https://habr.com/ru/articles/912710/
Платформа: Android
Быстродействие прокрутки в SwiftUI - в погоне за 120 кадрами в секунду
SwiftUI может столкнуться с очень болезненными проблемами производительности при работе с бесконечно прокручиваемой лентой. Сегодня мы изучим эти проблемы производительности, поймем, почему они возникают, и рассмотрим методы их устранения, чтобы сделать производительность SwiftUI гладкой как масло Аннушки.
Статья: https://apptractor.ru/info/articles/swiftui-120.html
Платформа: iOS
SwiftUI может столкнуться с очень болезненными проблемами производительности при работе с бесконечно прокручиваемой лентой. Сегодня мы изучим эти проблемы производительности, поймем, почему они возникают, и рассмотрим методы их устранения, чтобы сделать производительность SwiftUI гладкой как масло Аннушки.
Статья: https://apptractor.ru/info/articles/swiftui-120.html
Платформа: iOS
👍1
SUICoordinator - библиотека SwiftUI, обеспечивающая мощное управление навигацией и координацию на основе вкладок для iOS-приложений. SUICoordinator обеспечивает чистое разделение проблем, отделяя логику навигации от представлений, что делает SwiftUI-приложения более удобными в обслуживании и масштабируемыми.
Ключевые особенности
• Чистый SwiftUI: Никаких зависимостей от UIKit - построен полностью на SwiftUI
• Паттерн координатор: Чистое отделение логики навигации от представлений
• Координация вкладок: Расширенная навигация на основе вкладок с помощью TabCoordinator, кастомных представлений и бейджей
• Гибкие презентации: Поддержка push, sheet, fullscreen, detents и кастомных презентаций
• Глубокое связывание: Возможности принудительного представления для push-уведомлений и внешних триггеров
• Типобезопасные маршруты: Сильно типизированные маршруты навигации с безопасностью при компиляции
• Асинхронная навигация: Полная поддержка async/await для плавной навигации
• Кастомные панели вкладок: создание полностью кастомных интерфейсов вкладок с помощью TabCoordinator
• Поддержка бейджей: Динамическое управление бейджами для элементов вкладок в TabCoordinator
• Управление памятью: Автоматическая очистка и управление ресурсами
SUICoordinator на GitHub: https://github.com/felilo/SUICoordinator
Платформа: iOS
⭐️: 79
Ключевые особенности
• Чистый SwiftUI: Никаких зависимостей от UIKit - построен полностью на SwiftUI
• Паттерн координатор: Чистое отделение логики навигации от представлений
• Координация вкладок: Расширенная навигация на основе вкладок с помощью TabCoordinator, кастомных представлений и бейджей
• Гибкие презентации: Поддержка push, sheet, fullscreen, detents и кастомных презентаций
• Глубокое связывание: Возможности принудительного представления для push-уведомлений и внешних триггеров
• Типобезопасные маршруты: Сильно типизированные маршруты навигации с безопасностью при компиляции
• Асинхронная навигация: Полная поддержка async/await для плавной навигации
• Кастомные панели вкладок: создание полностью кастомных интерфейсов вкладок с помощью TabCoordinator
• Поддержка бейджей: Динамическое управление бейджами для элементов вкладок в TabCoordinator
• Управление памятью: Автоматическая очистка и управление ресурсами
SUICoordinator на GitHub: https://github.com/felilo/SUICoordinator
Платформа: iOS
⭐️: 79
👍1
Создание кастомного тултипа Jetpack Compose
В мире мобильной разработки удобство и интуитивность интерфейса играют ключевую роль. Одним из способов улучшения пользовательского опыта является предоставление дополнительной информации в нужный момент, и для этого идеально подходят тултипы.
В этой статье мы разберём, как создать гибкую и удобную систему тултипов в Jetpack Compose, используя модифайеры и специальный оборачивающий блок. Мы шаг за шагом рассмотрим создание необходимых компонентов, их взаимодействие и методы управления тултипом.
Статья: https://habr.com/ru/companies/wildberries/articles/905994/
Платформа: Android
В мире мобильной разработки удобство и интуитивность интерфейса играют ключевую роль. Одним из способов улучшения пользовательского опыта является предоставление дополнительной информации в нужный момент, и для этого идеально подходят тултипы.
В этой статье мы разберём, как создать гибкую и удобную систему тултипов в Jetpack Compose, используя модифайеры и специальный оборачивающий блок. Мы шаг за шагом рассмотрим создание необходимых компонентов, их взаимодействие и методы управления тултипом.
Статья: https://habr.com/ru/companies/wildberries/articles/905994/
Платформа: Android
👍1
VPAT для Android
Инженер-программист Хе Джун Чой делится опытом проведения оценки доступности Android-приложения Slack с использованием шаблона VPAT (Voluntary Product Accessibility Template).
VPAT — это документ, описывающий, насколько продукт соответствует стандартам доступности. Он помогает клиентам понять, насколько продукт подходит для пользователей с ограниченными возможностями.
В 2024 году, после значительных изменений в пользовательском интерфейсе, Slack привлек стороннего поставщика для проведения оценки доступности. В результате было выявлено 542 проблемы: 135 на Android, 163 на iOS и 244 на десктопе. Очевидные проблемы, такие как контрастность цветов и отсутствие подписей к изображениям, были немедленно переданы соответствующим командам для устранения.
Основные темы и решения
В статье подробно рассматриваются основные проблемы доступности на Android и способы их решения:
• Недоступные сообщения об ошибках: Обновлены компоненты
• Отсутствие заголовков: Добавлены семантические заголовки в списки, такие как страница настроек.
• Отсутствие меток доступности у полей ввода: Обеспечено наличие постоянных меток, а не только заполнительного текста.
• Ошибки, обозначенные только цветом: Добавлены дополнительные индикаторы для пользователей с нарушениями зрения.
• Некоторые проблемы, связанные с навигацией с клавиатуры на устройствах с большим экраном (например, планшетах), были отложены, так как Slack для Android пока не поддерживает такие устройства.
Статья подчеркивает важность системного подхода к обеспечению доступности и демонстрирует, как команды Slack работают над улучшением опыта для всех пользователей. Это ценный ресурс для разработчиков, стремящихся повысить доступность своих приложений.
Статья: https://slack.engineering/android-vpat-journey/
Платформа: Android
Инженер-программист Хе Джун Чой делится опытом проведения оценки доступности Android-приложения Slack с использованием шаблона VPAT (Voluntary Product Accessibility Template).
VPAT — это документ, описывающий, насколько продукт соответствует стандартам доступности. Он помогает клиентам понять, насколько продукт подходит для пользователей с ограниченными возможностями.
В 2024 году, после значительных изменений в пользовательском интерфейсе, Slack привлек стороннего поставщика для проведения оценки доступности. В результате было выявлено 542 проблемы: 135 на Android, 163 на iOS и 244 на десктопе. Очевидные проблемы, такие как контрастность цветов и отсутствие подписей к изображениям, были немедленно переданы соответствующим командам для устранения.
Основные темы и решения
В статье подробно рассматриваются основные проблемы доступности на Android и способы их решения:
• Недоступные сообщения об ошибках: Обновлены компоненты
OutlinedTextField и SKBanner, чтобы ошибки озвучивались с помощью TalkBack.• Отсутствие заголовков: Добавлены семантические заголовки в списки, такие как страница настроек.
• Отсутствие меток доступности у полей ввода: Обеспечено наличие постоянных меток, а не только заполнительного текста.
• Ошибки, обозначенные только цветом: Добавлены дополнительные индикаторы для пользователей с нарушениями зрения.
• Некоторые проблемы, связанные с навигацией с клавиатуры на устройствах с большим экраном (например, планшетах), были отложены, так как Slack для Android пока не поддерживает такие устройства.
Статья подчеркивает важность системного подхода к обеспечению доступности и демонстрирует, как команды Slack работают над улучшением опыта для всех пользователей. Это ценный ресурс для разработчиков, стремящихся повысить доступность своих приложений.
Статья: https://slack.engineering/android-vpat-journey/
Платформа: Android
❤1👍1
Создание фигур с помощью Path в представлении SwiftUI Canvas
В статье автор демонстрирует, как использовать Canvas и Path в SwiftUI для создания анимированных геометрических фигур.
Эта статья будет полезна разработчикам, интересующимся созданием динамических визуализаций и интерактивных интерфейсов в SwiftUI.
Статья: https://www.createwithswift.com/creating-shapes-using-path-in-the-swiftui-canvas-view/
Платформа: iOS
В статье автор демонстрирует, как использовать Canvas и Path в SwiftUI для создания анимированных геометрических фигур.
Эта статья будет полезна разработчикам, интересующимся созданием динамических визуализаций и интерактивных интерфейсов в SwiftUI.
Статья: https://www.createwithswift.com/creating-shapes-using-path-in-the-swiftui-canvas-view/
Платформа: iOS
👍1🔥1
Большинство приложений для Android нарушают это правило чистого кода!
Многие Android-разработчики неосознанно попадают в одну и ту же архитектурную ловушку — они помещают слишком много логики в классы фреймворков, такие как FirebaseMessagingService, BroadcastReceiver, Activity или Service. Поначалу это кажется быстрым и легким. Но вскоре код становится хрупким, его становится трудно тестировать и почти невозможно поддерживать.
В этой статье мы покажем, как избежать этой ловушки, применяя одно простое правило:
Делайте компоненты Android «тупыми».
Статья: https://apptractor.ru/info/articles/bolshinstvo-prilozheniy-dlya-android-narushayut-eto-pravilo-chistogo-koda.html
Платформа: Android
Многие Android-разработчики неосознанно попадают в одну и ту же архитектурную ловушку — они помещают слишком много логики в классы фреймворков, такие как FirebaseMessagingService, BroadcastReceiver, Activity или Service. Поначалу это кажется быстрым и легким. Но вскоре код становится хрупким, его становится трудно тестировать и почти невозможно поддерживать.
В этой статье мы покажем, как избежать этой ловушки, применяя одно простое правило:
Делайте компоненты Android «тупыми».
Статья: https://apptractor.ru/info/articles/bolshinstvo-prilozheniy-dlya-android-narushayut-eto-pravilo-chistogo-koda.html
Платформа: Android
❤1
Институциональные покупки: понимание и обнаружение
Всплеск загрузок, вызванный институциональными покупками (Institutional Purchases), видимыми в App Store Connect, приводит в замешательство многих разработчиков приложений. Несколько сообщений на Reddit или форумах Apple пытаются ответить на вопрос, что это такое, но путаницы с ними по-прежнему много. Программа Apple Volume Purchase Program (VPP) имеет отношение к институциональным покупкам и приводит к измененному поведению вашего приложения.
Что такое институциональные покупки и что вы должны делать с ними по-другому?
Статья: https://apptractor.ru/info/articles/institutsionalnye-pokupki-ponimanie-i-obnaruzhenie.html
Платформа: iOS
Всплеск загрузок, вызванный институциональными покупками (Institutional Purchases), видимыми в App Store Connect, приводит в замешательство многих разработчиков приложений. Несколько сообщений на Reddit или форумах Apple пытаются ответить на вопрос, что это такое, но путаницы с ними по-прежнему много. Программа Apple Volume Purchase Program (VPP) имеет отношение к институциональным покупкам и приводит к измененному поведению вашего приложения.
Что такое институциональные покупки и что вы должны делать с ними по-другому?
Статья: https://apptractor.ru/info/articles/institutsionalnye-pokupki-ponimanie-i-obnaruzhenie.html
Платформа: iOS
Что такое static в Swift — вопросы с собеседований
Swift — современный язык программирования, который сочетает в себе мощь и безопасность, предоставляя разработчикам разнообразные инструменты для написания выразительного и безопасного кода. Ключевое слово
Статья: https://apptractor.ru/info/articles/static-swift.html
Все: вопросы с собеседований
Платформа: iOS
Swift — современный язык программирования, который сочетает в себе мощь и безопасность, предоставляя разработчикам разнообразные инструменты для написания выразительного и безопасного кода. Ключевое слово
static в Swift играет важную роль в определении свойств и методов, принадлежащих самому типу, а не его экземпляру. Хотя концепция может показаться знакомой тем, кто имел дело с языками вроде Java или C++, в Swift она имеет свои особенности, тонкости и области применения, которые важно понимать, чтобы использовать язык на полную мощность.Статья: https://apptractor.ru/info/articles/static-swift.html
Все: вопросы с собеседований
Платформа: iOS
👍2
Pixel Weather App - многофункциональное погодное приложение для Android с уникальным пиксель-арт пользовательским интерфейсом, разработанное в качестве дипломного проекта. Приложение не только отображает стандартные прогнозы погоды из OpenWeatherMap API, но и использует локальную модель TensorFlow Lite для прогнозирования температуры «ощущается как».
Внутри Kotlin, Jetpack Compose, MVVM, корутины и Flow, Hilt, Room, TensorFlow Lite, Gradle.
Pixel Weather App на GitHub: https://github.com/ArtemZarubin/PixelArtWeatherML
Платформа: Android
⭐️: 29
Внутри Kotlin, Jetpack Compose, MVVM, корутины и Flow, Hilt, Room, TensorFlow Lite, Gradle.
Pixel Weather App на GitHub: https://github.com/ArtemZarubin/PixelArtWeatherML
Платформа: Android
⭐️: 29
Как мы распилили монолит Tinder
Tinder поделился опытом преодоления проблем, связанных с монолитной архитектурой в iOS-приложении. Они столкнулись с трудностями, такими как медленные сборки, отсутствие четкой ответственности за модули и сложности в тестировании. Чтобы решить эти проблемы, команда Tinder применила стратегию модульности, разделив монолит на независимые Swift-модули.
Ключевые аспекты подхода Tinder:
1. Сокращение критического пути сборки: Путем «уплощения» графа зависимостей, то есть устранения ненужных зависимостей между модулями, они добились возможности параллельной компиляции, что значительно ускорило процесс сборки.
2. Модульность как средство управления зависимостями: Разделение кода на модули позволило явно определить контракты между частями системы, уменьшить использование анти-паттернов, таких как синглтоны и циклические зависимости, и улучшить читаемость и поддержку кода.
3. Автоматизация процесса: С учетом масштабов проекта (более 1000 файлов и 150 000 строк кода), ручная модульность была бы неэффективной. Tinder разработал инструменты для автоматического рефакторинга, что обеспечило масштабируемость и последовательность изменений.
Этот опыт демонстрирует, как переход от монолитной архитектуры к модульной может значительно улучшить производительность, упростить поддержку и ускорить разработку в крупных проектах.
Статья: https://medium.com/tinder/how-we-decomposed-tinders-monolith-48dcf01a6066
Платформа: iOS
Tinder поделился опытом преодоления проблем, связанных с монолитной архитектурой в iOS-приложении. Они столкнулись с трудностями, такими как медленные сборки, отсутствие четкой ответственности за модули и сложности в тестировании. Чтобы решить эти проблемы, команда Tinder применила стратегию модульности, разделив монолит на независимые Swift-модули.
Ключевые аспекты подхода Tinder:
1. Сокращение критического пути сборки: Путем «уплощения» графа зависимостей, то есть устранения ненужных зависимостей между модулями, они добились возможности параллельной компиляции, что значительно ускорило процесс сборки.
2. Модульность как средство управления зависимостями: Разделение кода на модули позволило явно определить контракты между частями системы, уменьшить использование анти-паттернов, таких как синглтоны и циклические зависимости, и улучшить читаемость и поддержку кода.
3. Автоматизация процесса: С учетом масштабов проекта (более 1000 файлов и 150 000 строк кода), ручная модульность была бы неэффективной. Tinder разработал инструменты для автоматического рефакторинга, что обеспечило масштабируемость и последовательность изменений.
Этот опыт демонстрирует, как переход от монолитной архитектуры к модульной может значительно улучшить производительность, упростить поддержку и ускорить разработку в крупных проектах.
Статья: https://medium.com/tinder/how-we-decomposed-tinders-monolith-48dcf01a6066
Платформа: iOS
❤3👍3
Скриншот-тестирование для превью Compose
Скриншот-тестирование - эффективный способ проверить, как ваш пользовательский интерфейс выглядит для пользователей. Инструмент Compose Preview Screenshot Testing сочетает в себе простоту и возможности composable превью с повышением производительности при выполнении скриншот-тестов на собственном компьютере. Compose Preview Screenshot Testing разработан для того, чтобы быть таким же простым в использовании, как и сами composable превью.
Статья: https://apptractor.ru/info/articles/skrinshot-testirovanie-dlya-prevyu-compose.html
Платформа: Android
Скриншот-тестирование - эффективный способ проверить, как ваш пользовательский интерфейс выглядит для пользователей. Инструмент Compose Preview Screenshot Testing сочетает в себе простоту и возможности composable превью с повышением производительности при выполнении скриншот-тестов на собственном компьютере. Compose Preview Screenshot Testing разработан для того, чтобы быть таким же простым в использовании, как и сами composable превью.
Статья: https://apptractor.ru/info/articles/skrinshot-testirovanie-dlya-prevyu-compose.html
Платформа: Android
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Выразительные анимации для всех
По мере изучения возможностей Material 3 Expressive одним из первых компонентов, которые я собираюсь внедрить, станут кнопки-переключатели. Благодаря новой выразительной системе движений и визуальных эффектов мне не терпится увидеть, как эти кнопки могут стать более динамичными, плавными и эмоционально привлекательными - выйти за рамки статичных элементов пользовательского интерфейса и стать тем, что действительно реагирует на взаимодействие с пользователем.
Статья: https://apptractor.ru/info/articles/vyrazitelnye-animatsii-dlya-vseh.html
Платформа: Android
По мере изучения возможностей Material 3 Expressive одним из первых компонентов, которые я собираюсь внедрить, станут кнопки-переключатели. Благодаря новой выразительной системе движений и визуальных эффектов мне не терпится увидеть, как эти кнопки могут стать более динамичными, плавными и эмоционально привлекательными - выйти за рамки статичных элементов пользовательского интерфейса и стать тем, что действительно реагирует на взаимодействие с пользователем.
Статья: https://apptractor.ru/info/articles/vyrazitelnye-animatsii-dlya-vseh.html
Платформа: Android
ObservableDefaults - библиотека Swift, которая легко интегрирует UserDefaults и NSUbiquitousKeyValueStore (iCloud Key-Value Storage) с фреймворком Observation в SwiftUI. Он предоставляет два мощных макроса (@ObservableDefaults для локального управления UserDefaults и @ObservableCloud для облачного синхронизированного хранения данных), которые упрощают сохранение данных, автоматически связывая объявленные свойства с соответствующими системами хранения. Это позволяет точно и эффективно реагировать на изменения данных, независимо от того, происходят ли они внутри приложения, извне или на нескольких устройствах.
ObservableDefaults на GitHub: https://github.com/fatbobman/ObservableDefaults
Платформа: iOS
⭐️: 152
ObservableDefaults на GitHub: https://github.com/fatbobman/ObservableDefaults
Платформа: iOS
⭐️: 152
•
(iOS Ru) Ускоряем приложение эффективно•
(iOS Ru) Swift Concurrency в iOS SDK Яндекс Доставки•
(iOS Ru) Как мы доверили качество наших приложений AI•
(iOS En) iOS Interview Question: Build a World Clock App in SwiftUI•
(iOS En) 6 Useful SwiftUI Modifiers - Xcode 16•
(iOS En) How to Run Automated UI Tests in iOS with XCUITest•
(iOS En) Elevate Your SwiftUI Lists with iOS 18’s New Container Features•
(iOS En) SwiftUI iOS Localization Tutorial: Master String Catalogs in Xcode 16•
(iOS En) How Task Cancellation Really Works in Swift (Behind the Scenes)•
(iOS En) Re-creating iMessage Morph-Menu Effect Using SwiftUI•
(And Ru) История одного бизнес-желания•
(And Ru) Наглядный пример, когда не следовать best practices for coroutines от Google•
(And Ru) Кто является Senior разработчиком?•
(And En) What’s new in Jetpack Compose•
(And En) Google Home APIs, tools, and Gemini capabilities for your apps•
(And En) KotlinConf'25 - Keynote•
(And En) Everything you need to know about NEW Navigation 3•
(Crs Ru) Борьба с лишним весом, или Методы оптимизации размеров Flutter-приложений•
(Crs En) Hot Reload In Compose Multiplatform (CMP) - THIS Is All You Have to Know•
(Dev Ru) Анатомия энергопотребления•
(Dev Ru) От J2ME до супераппов: 20 лет разработки глазами техдиректор•
(Dev Ru) Вадим Чистяков — Global Talent Visa, переезд в Лондон, работа в IT•
(Dev Ru) Мнемотехника: запомнить всё — развитие памяти, насмотренность, саморазвитие•
(Dev En) Announcing Gemma 3n Preview: Powerful, Efficient, Mobile-First AI•
(Dev En) Learn Python for Data Science – Full Course for BeginnersПрошлогодние видео:
•
(iOS Ru) Как писать игры на Swift для Playdate•
(iOS Ru) Мок-собеседование iOS-разработчика. SwiftUI (+ все собеседования)•
(iOS Ru) Макросы Swift: проще, чище, быстрее•
(iOS Ru) Мы решили все проблемы работы в модульном проекте. Хотите так же?•
(And Ru) Оптимизация Compose: проблемы, опыт, тактика, стратегия•
(Crs Ru) 5 лет с Flutter: эволюция кроссплатформенности•
(Crs Ru) Flutter-диета. Как сбросить вес, выпиливая модули•
(Dev Ru) Прокачиваем Code Review: как выжать максимум?Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
ReadMoreTextView - библиотека реализует сворачиваемый виджет Text с «Читать дальше» в свернутом состоянии и «Читать меньше» в развернутом. Поддерживает Android View и Jetpack Compose.
ReadMoreTextView на GitHub: https://github.com/webtoon/ReadMoreTextView
Платформа: Android
⭐️: 180
ReadMoreTextView на GitHub: https://github.com/webtoon/ReadMoreTextView
Платформа: Android
⭐️: 180
Для чего я написал собственный аудиопроигрыватель
Раздосадованный ограниченностью возможностей, я решил взяться за разработку. Если уж я купил вычислительное устройство (в данном случае iPhone), то что мешает мне просто создать необходимое мне при помощи кода? В этой статье я расскажу о своих разочарованиях по пути к реализации базовой функциональности музыкального плеера: загрузки аудиофайлов, их упорядочивания и воспроизведения. Но больше всего мне хотелось напомнить себе, что это просто компьютер, и у меня должна быть возможность заставить его выполнять нужные мне задачи.
Статья: https://habr.com/ru/companies/ruvds/articles/912886/
Платформа: iOS
Раздосадованный ограниченностью возможностей, я решил взяться за разработку. Если уж я купил вычислительное устройство (в данном случае iPhone), то что мешает мне просто создать необходимое мне при помощи кода? В этой статье я расскажу о своих разочарованиях по пути к реализации базовой функциональности музыкального плеера: загрузки аудиофайлов, их упорядочивания и воспроизведения. Но больше всего мне хотелось напомнить себе, что это просто компьютер, и у меня должна быть возможность заставить его выполнять нужные мне задачи.
Статья: https://habr.com/ru/companies/ruvds/articles/912886/
Платформа: iOS
Автоматизация проверки стиля кода с помощью KtLint в Android проекте
Мне повезло участвовать в большом стартапе и начать проект самостоятельно. И в моем проекте я решил покончить с Code Review в привычном понимании.
Что мне было необходимо? Нужен был инструмент, который бы приводил код к единому стилю и избавил меня и других участников команды от необходимости проверять стиль кода. Сюда входит правила расстановки новых строк, именования методов, отступы и тд. Необходимо чтоб инструмент подсвечивал места где стиль не соблюдается и исправлял автоматически такие места.
В данной статье я рассмотрю только анализ стиля Kotlin кода и его автоматическое исправления согласно выработанным правилам в проекте.
Статья: https://habr.com/ru/articles/914250/
Платформа: Android
Мне повезло участвовать в большом стартапе и начать проект самостоятельно. И в моем проекте я решил покончить с Code Review в привычном понимании.
Что мне было необходимо? Нужен был инструмент, который бы приводил код к единому стилю и избавил меня и других участников команды от необходимости проверять стиль кода. Сюда входит правила расстановки новых строк, именования методов, отступы и тд. Необходимо чтоб инструмент подсвечивал места где стиль не соблюдается и исправлял автоматически такие места.
В данной статье я рассмотрю только анализ стиля Kotlin кода и его автоматическое исправления согласно выработанным правилам в проекте.
Статья: https://habr.com/ru/articles/914250/
Платформа: Android
🔥1
SmartCaptcha Yandex на iOS: инструкция по внедрению
Настройка Yandex SmartCaptcha на первый взгляд может показаться простой задачей, но на практике она требует внимательности, точной настройки и понимания архитектуры приложения. Я поделюсь личным опытом внедрения этого инструмента, объясню, какие нюансы стоит учесть, а также как избежать ошибок.
Материал предназначен для iOS-разработчиков, у которых уже есть базовые знания мобильной разработки, и кто хочет быстро и корректно внедрить капчу от Яндекса в свое iOS-приложение.
Статья: https://habr.com/ru/companies/simbirsoft/articles/914178/
Платформа: iOS
Настройка Yandex SmartCaptcha на первый взгляд может показаться простой задачей, но на практике она требует внимательности, точной настройки и понимания архитектуры приложения. Я поделюсь личным опытом внедрения этого инструмента, объясню, какие нюансы стоит учесть, а также как избежать ошибок.
Материал предназначен для iOS-разработчиков, у которых уже есть базовые знания мобильной разработки, и кто хочет быстро и корректно внедрить капчу от Яндекса в свое iOS-приложение.
Статья: https://habr.com/ru/companies/simbirsoft/articles/914178/
Платформа: iOS
👍1