Alarmee — это библиотека Kotlin/Compose Multiplatform, разработанная для упрощения планирования будильников и уведомлений на платформах Android и iOS. С Alarmee вы можете планировать одноразовые или повторяющиеся будильники, отображать уведомления, специфичные для платформы, а кроме того она поддерживает push-уведомления с использованием Firebase Cloud Messaging (Android) и службы Apple Push Notification (iOS).
Alarmee на GitHub: https://github.com/Tweener/alarmee
Платформа: Android/кроссплатформа
⭐️: 168
Alarmee на GitHub: https://github.com/Tweener/alarmee
Платформа: Android/кроссплатформа
⭐️: 168
Как Android-разработчик в iOS погружался: мой опыт внедрения Kotlin Multiplatform
Продукт создавали нативно на каждую платформу, без пересечения кода. В начале года у нас ушло несколько iOS-разработчиков, из-за чего замедлилась поставка новых функций на обеих платформах. Мы решили, что это повод внедрить наконец кроссплатформенную разработку и выровнять поставку фич на обеих платформах. В этом материале расскажу, почему мы остановились на KMP, как погружались в iOS c опытом в Android и как прошло внедрение этого фреймворка. Спойлер: быстрее и проще, чем мы думали.
Статья: https://habr.com/ru/companies/ru_mts/articles/923366/
Платформа: кроссплатформа
Продукт создавали нативно на каждую платформу, без пересечения кода. В начале года у нас ушло несколько iOS-разработчиков, из-за чего замедлилась поставка новых функций на обеих платформах. Мы решили, что это повод внедрить наконец кроссплатформенную разработку и выровнять поставку фич на обеих платформах. В этом материале расскажу, почему мы остановились на KMP, как погружались в iOS c опытом в Android и как прошло внедрение этого фреймворка. Спойлер: быстрее и проще, чем мы думали.
Статья: https://habr.com/ru/companies/ru_mts/articles/923366/
Платформа: кроссплатформа
👍2
Ликбез по UseCase’ам Android: от базовых реализаций до мультипровайдерных и многомодульных систем — Часть 1
Юзкейс (Use Case) — это основной элемент в философии «Чистой» архитектуры (Clean Architecture). Он представляет собой отдельную операцию с единственной ответственностью в рамках вашего приложения.
Как и остальные компоненты в Чистой архитектуре, юзкейсы соответствуют определенному шаблону: их интерфейсы определяются в слое домена, а реализации находятся в слое данных. Этот подход способствует соблюдению сразу нескольких принципов SOLID.
Статья: https://habr.com/ru/companies/otus/articles/925614/
Платформа: Android
Юзкейс (Use Case) — это основной элемент в философии «Чистой» архитектуры (Clean Architecture). Он представляет собой отдельную операцию с единственной ответственностью в рамках вашего приложения.
Как и остальные компоненты в Чистой архитектуре, юзкейсы соответствуют определенному шаблону: их интерфейсы определяются в слое домена, а реализации находятся в слое данных. Этот подход способствует соблюдению сразу нескольких принципов SOLID.
Статья: https://habr.com/ru/companies/otus/articles/925614/
Платформа: Android
❤1
Реагирование на жесты в SwiftUI: перетаскивание
Узнайте, как реализовать жесты перетаскивания в SwiftUI для создания плавных и интуитивно понятных перетаскиваемых элементов интерфейса.
Статья: https://apptractor.ru/info/articles/reagirovanie-na-zhesty-v-swiftui-peretaskivanie.html
Платформа: iOS
Узнайте, как реализовать жесты перетаскивания в SwiftUI для создания плавных и интуитивно понятных перетаскиваемых элементов интерфейса.
Статья: https://apptractor.ru/info/articles/reagirovanie-na-zhesty-v-swiftui-peretaskivanie.html
Платформа: iOS
👍1
Теперь мы все CTO
По мере того как вы начнете чаще использовать агентов искусственного интеллекта, вы будете лучше объяснять им задачи. Вы научитесь разбивать работу на подходящие фрагменты, выделять определенные качества, которые вам больше нужны, по сравнению с другими, и понимать их ограничения. Возможно, вы станете лучше обучать их и предоставлять им необходимые ресурсы. Подсказка: точно так же, как управлять людьми.
И с этими новыми навыками ваши старые навыки начнут атрофироваться. Навыки, которые вы используете, - это те навыки, которые вы поддерживаете. Конечно, у вас будет мышечная память - разработчик всегда остается разработчиком, точно так же, как бывшие спортсмены могут сохранять хорошую форму, — но вы уже не будете таким опытным, каким были, когда все писали сами.
Одно это делает роль “парашютиста” особенно трудной. Это одна из причин, по которой сложно быть даже техническим директором, потому что, почти по определению, все проблемы, с которыми я сталкиваюсь, - это сложные проблемы с незнакомым мне кодом и навыками, которые я не оттачиваю.
Добро пожаловать на вашу новую должность. Я надеюсь, вы будете счастливы.
Статья: https://apptractor.ru/info/articles/teper-my-vse-cto.html
Платформа: разработка
По мере того как вы начнете чаще использовать агентов искусственного интеллекта, вы будете лучше объяснять им задачи. Вы научитесь разбивать работу на подходящие фрагменты, выделять определенные качества, которые вам больше нужны, по сравнению с другими, и понимать их ограничения. Возможно, вы станете лучше обучать их и предоставлять им необходимые ресурсы. Подсказка: точно так же, как управлять людьми.
И с этими новыми навыками ваши старые навыки начнут атрофироваться. Навыки, которые вы используете, - это те навыки, которые вы поддерживаете. Конечно, у вас будет мышечная память - разработчик всегда остается разработчиком, точно так же, как бывшие спортсмены могут сохранять хорошую форму, — но вы уже не будете таким опытным, каким были, когда все писали сами.
Одно это делает роль “парашютиста” особенно трудной. Это одна из причин, по которой сложно быть даже техническим директором, потому что, почти по определению, все проблемы, с которыми я сталкиваюсь, - это сложные проблемы с незнакомым мне кодом и навыками, которые я не оттачиваю.
Добро пожаловать на вашу новую должность. Я надеюсь, вы будете счастливы.
Статья: https://apptractor.ru/info/articles/teper-my-vse-cto.html
Платформа: разработка
👍1
StoreKitTheKit - легковесная обертка для StoreKit2, упрощающая реализацию покупок.
Фичи:
1. Быстрая интеграция — настройка StoreKit за считанные минуты, а не за несколько дней.
2. Безупречная поддержка офлайн — надежное локальное хранилище гарантирует работу покупок даже без подключения к интернету.
3. Интеллектуальное управление подключением — автоматическое управление переходами между онлайн- и офлайн-состояниями магазина.
4. Комплексная поддержка — поддержка всех типов товаров: нерасходуемые встроенные приложения, расходуемые товары, автоматически продлеваемые и непродлеваемые подписки.
5. Безопасность — проверка чеков.
StoreKitTheKit на GitHub: https://github.com/nicolaischneider/StoreKitTheKit
Платформа: iOS
⭐️: 24
Фичи:
1. Быстрая интеграция — настройка StoreKit за считанные минуты, а не за несколько дней.
2. Безупречная поддержка офлайн — надежное локальное хранилище гарантирует работу покупок даже без подключения к интернету.
3. Интеллектуальное управление подключением — автоматическое управление переходами между онлайн- и офлайн-состояниями магазина.
4. Комплексная поддержка — поддержка всех типов товаров: нерасходуемые встроенные приложения, расходуемые товары, автоматически продлеваемые и непродлеваемые подписки.
5. Безопасность — проверка чеков.
StoreKitTheKit на GitHub: https://github.com/nicolaischneider/StoreKitTheKit
Платформа: iOS
⭐️: 24
👍1
Gemini CLI от Google — самый мощный инструмент разработки
Самый революционный инструмент разработки, который я использовал в этом году, не сопровождался громким запуском или многомиллиардной инвестицией.
Он представлял собой простой CLI: Gemini CLI — терминальный ИИ-агент, созданный на базе модели Google Gemini 2.5 Pro.
На первый взгляд, это выглядит как лёгкая альтернатива Claude Code. Но всего через 10 минут использования стало ясно: это не просто удобная утилита. Это мощный локальный ИИ-помощник по разработке, способный анализировать, автоматизировать и ускорять практически любой этап вашего рабочего процесса.
Статья: https://apptractor.ru/info/articles/gemini-cli.html
Платформа: разработка
Самый революционный инструмент разработки, который я использовал в этом году, не сопровождался громким запуском или многомиллиардной инвестицией.
Он представлял собой простой CLI: Gemini CLI — терминальный ИИ-агент, созданный на базе модели Google Gemini 2.5 Pro.
На первый взгляд, это выглядит как лёгкая альтернатива Claude Code. Но всего через 10 минут использования стало ясно: это не просто удобная утилита. Это мощный локальный ИИ-помощник по разработке, способный анализировать, автоматизировать и ускорять практически любой этап вашего рабочего процесса.
Статья: https://apptractor.ru/info/articles/gemini-cli.html
Платформа: разработка
👍2❤1
Когда объект Kotlin перестает быть синглтоном
В Kotlin
Статья: https://proandroiddev.com/when-kotlin-object-stops-being-a-singleton-604a3354e4ec
Платформа: Android
В Kotlin
object гарантирует синглтон — один экземпляр на всё приложение. Но это работает только до тех пор, пока не вмешиваются библиотеки сериализации. Например, Gson при десериализации создаёт новый экземпляр объекта, нарушая сравнение === и ломая логику, завязанную на глобальное состояние. Moshi вообще не поддерживает object без кастомного адаптера, а вот kotlinx.serialization корректно обрабатывает такие случаи, возвращая оригинальный экземпляр. Если вы используете object для хранения состояния или как синглтон в архитектуре, важно понимать, как с ним работают сторонние библиотеки. Чтобы сохранить гарантию единственного экземпляра — используйте kotlinx.serialization или пишите собственные адаптеры для других библиотек.Статья: https://proandroiddev.com/when-kotlin-object-stops-being-a-singleton-604a3354e4ec
Платформа: Android
👍1
Акторы в Swift — для чего они нужны?
Актор — это ссылочный тип, подобный классу, созданный для безопасного управления изменяемым состоянием в многопоточной среде. Появившиеся в Swift 5.5, акторы помогают разработчикам писать потокобезопасный и более предсказуемый код при работе с асинхронными задачами и общими изменяемыми данными.
Статья: https://apptractor.ru/info/articles/swift-actor.html
Платформа: Swift/iOS
Актор — это ссылочный тип, подобный классу, созданный для безопасного управления изменяемым состоянием в многопоточной среде. Появившиеся в Swift 5.5, акторы помогают разработчикам писать потокобезопасный и более предсказуемый код при работе с асинхронными задачами и общими изменяемыми данными.
Статья: https://apptractor.ru/info/articles/swift-actor.html
Платформа: Swift/iOS
👍2
Android Interview Questions - еще одни вопросы (без ответов) с собеседований Android-разработчиков. Категории: ООП, Kotlin, Android Framework и SDK, корутины и параллелизм, архитектура и шаблоны проектирования, данные и их хранение, инструменты, тестирование и качество кода, безопасность, доступность и прочее.
Android Interview Questions на GitHub: https://github.com/DoggyDoggyDoggy/Android-Interview-Questions
Записи собеседований: https://apptractor.ru/sobesedovaniya
Платформа: Android
⭐️: 25
Android Interview Questions на GitHub: https://github.com/DoggyDoggyDoggy/Android-Interview-Questions
Записи собеседований: https://apptractor.ru/sobesedovaniya
Платформа: Android
⭐️: 25
👍1
Я написал свой VPN-клиент для Android. Зачем, если их сотни, и что скрывается под капотом?
Каждый раз, нажимая кнопку «Connect» в очередном VPN-приложении, я ловил себя на мысли: а что там, под капотом? Как эта магия на самом деле работает на уровне Android? Вокруг сотни готовых решений, но простое пользовательское любопытство переросло в профессиональное: мне захотелось не просто использовать, а понять. Понять, какие подводные камни скрывает VpnService, как реализовать весь цикл от авторизации до поднятия защищённого туннеля, и можно ли сделать это, не утонув в устаревших технологиях.
Важный момент: Эта статья и сам проект — это мой личный "бортовой журнал". Я не претендую на создание самого безопасного или анонимного решения. Это скорее история о пути, граблях и открытиях, которая, надеюсь, будет полезна тем, кто тоже решит заглянуть под капот VPN-технологий на Android.
Статья: https://habr.com/ru/articles/926150/
Платформа: Android
Каждый раз, нажимая кнопку «Connect» в очередном VPN-приложении, я ловил себя на мысли: а что там, под капотом? Как эта магия на самом деле работает на уровне Android? Вокруг сотни готовых решений, но простое пользовательское любопытство переросло в профессиональное: мне захотелось не просто использовать, а понять. Понять, какие подводные камни скрывает VpnService, как реализовать весь цикл от авторизации до поднятия защищённого туннеля, и можно ли сделать это, не утонув в устаревших технологиях.
Важный момент: Эта статья и сам проект — это мой личный "бортовой журнал". Я не претендую на создание самого безопасного или анонимного решения. Это скорее история о пути, граблях и открытиях, которая, надеюсь, будет полезна тем, кто тоже решит заглянуть под капот VPN-технологий на Android.
Статья: https://habr.com/ru/articles/926150/
Платформа: Android
❤1
Как обнаружить обрезку Text в SwiftUI?
Статья: https://apptractor.ru/info/articles/kak-obnaruzhit-obrezku-text-v-swiftui.html
Платформа: iOS
Text активно используется в SwiftUI. По сравнению с аналогами в UIKit/AppKit, Text не требует настройки и работает «из коробки», но это также означает, что разработчики теряют контроль над ним. В этой статье я продемонстрирую на примере из реальной жизни, как решить, казалось бы, «невозможные» задачи с помощью подхода SwiftUI: найти и использовать первое представление в заданном наборе, где текст не обрезан.Статья: https://apptractor.ru/info/articles/kak-obnaruzhit-obrezku-text-v-swiftui.html
Платформа: iOS
👍1
Традиционные методы управления данными и состояниями часто приводят к запутанным зависимостям, избыточному шаблонному коду и специфическим проблемам при синхронизации состояния SwiftUI или управлении состоянием UIKit. Это может затруднить согласованное и эффективное управление состоянием приложения Swift во всём приложении.
Swift State Graph - это мощная реактивная библиотека Swift, предлагающая современный графовый подход к реактивному программированию Swift. Она разработана для решения этих сложных задач, предоставляя чёткий и декларативный подход к управлению потоками данных вашего приложения.
С помощью Swift State Graph вы можете:
• Достичь предельно ясной декларативной логики состояния благодаря автоматическому отслеживанию зависимостей Swift.
• Легко управлять состоянием приложения и получать динамическую информацию с помощью мощных вычисляемых свойств Swift.
• Оптимизировать разработку на платформах Apple с помощью унифицированных стратегий управления состояниями SwiftUI и UIKit.
Swift State Graph на GitHub: https://github.com/VergeGroup/swift-state-graph
Платформа: iOS
⭐️: 21
Swift State Graph - это мощная реактивная библиотека Swift, предлагающая современный графовый подход к реактивному программированию Swift. Она разработана для решения этих сложных задач, предоставляя чёткий и декларативный подход к управлению потоками данных вашего приложения.
С помощью Swift State Graph вы можете:
• Достичь предельно ясной декларативной логики состояния благодаря автоматическому отслеживанию зависимостей Swift.
• Легко управлять состоянием приложения и получать динамическую информацию с помощью мощных вычисляемых свойств Swift.
• Оптимизировать разработку на платформах Apple с помощью унифицированных стратегий управления состояниями SwiftUI и UIKit.
Swift State Graph на GitHub: https://github.com/VergeGroup/swift-state-graph
Платформа: iOS
⭐️: 21
👍2
•
(iOS Ru) Рынок разработки в СНГ, iOS, Переезд в UK•
(iOS Ru) Перерисовки в SwiftUI•
(iOS En) Apple-Style OnBoarding Page With Animations Using SwiftUI•
(iOS En) How to solve SwiftUI performance issues (according to Airbnb iOS engineers)•
(iOS En) Liquid Glass update•
(iOS En) Mastering Swift Sets : A Practical Guide•
(And Ru) Мок-собеседование Android-разработчика: middle и выше (+ все собеседования)•
(And En) Back it up, bring it back: No data left behind - Android Developers Backstage•
(And En) Google Play PolicyBytes - July 2025 policy updates•
(And En) Now in Android: 119 – Android 16, testing, desktop experiences, AndroidX, and more•
(And En) Create advanced automations using the Home APIs on Android•
(And En) Stateful vs. Stateless Composables In Jetpack Compose? - Everything You Need to Know•
(And En) Introduction to Spring Boot for Android Developers In 15min•
(And En) Kotlin 2.2 Livestream With the Language Evolution Team•
(And En) Model Context Protocol in Kotlin•
(And En) Dissecting Kotlin: Surveying the Latest Stable and Experimental•
(And En) Taming Asynchronous Beasts: Debugging and Performance Tuning in a Coroutine World•
(And En) Creative UIs with Compose•
(Crs En) Kotlin and Compose Multiplatform Patterns for iOS Interop•
(Dev Ru) Как сделать любую задачу интересной•
(Dev Ru) АI за пределами кодинга — ChatGPT, Gemini, Anthropic, AI для бизнеса•
(Dev En) VGG From Scratch – Deep Learning Theory & PyTorch Implementation (Full Course)•
(Mrk Ru) Как заработать на ASO? Запуск с нуля iOS-приложения INVOICERПрошлогодние видео:
•
(iOS Ru) Что нового в Swift 6?•
(And Ru) Как обойти множественное наследование в Kotlin и Java. Агрегация и композиция•
(Dev Ru) System Design-интервью для практиков•
(Dev Ru) Локальная разработка в АвитоPlease open Telegram to view this post
VIEW IN TELEGRAM
👍1
Duit: как создать эффективный BDUI фреймворк, не привлекая внимания санитаров
Open source-инструмент не гарантирует тебе, что ты сможешь решать с его помощью свои задачи. Очень часто сталкиваешься с неприятными ограничениями, какими-то компромиссами, которые тебе вообще не подходят. И поэтому я считаю, что надо развивать более широкое применение этой технологии.
И лейтмотив — альтернатива важна. Потому что мало фреймворков, которые решают задачу BDUI, а под Flutter — так вообще. Потому что конкуренция двигатель прогресса: когда фреймворков много, рубиться с ними интереснее. Потому что хочется пользоваться нормальными инструментами — качественными, отлаженными, документированными. Альтернатива важна, потому что она дает больше возможностей нам, как инженерам.
Статья: https://habr.com/ru/companies/friflex/articles/926690/
Платформа: кроссплатформа
Open source-инструмент не гарантирует тебе, что ты сможешь решать с его помощью свои задачи. Очень часто сталкиваешься с неприятными ограничениями, какими-то компромиссами, которые тебе вообще не подходят. И поэтому я считаю, что надо развивать более широкое применение этой технологии.
И лейтмотив — альтернатива важна. Потому что мало фреймворков, которые решают задачу BDUI, а под Flutter — так вообще. Потому что конкуренция двигатель прогресса: когда фреймворков много, рубиться с ними интереснее. Потому что хочется пользоваться нормальными инструментами — качественными, отлаженными, документированными. Альтернатива важна, потому что она дает больше возможностей нам, как инженерам.
Статья: https://habr.com/ru/companies/friflex/articles/926690/
Платформа: кроссплатформа
❤1
Автоматизация тестирования мобильного приложения КриптоАРМ Mobile на Android
В этой статье мы проведем обзор современных инструментов и подходов для тестирования мобильных приложений на примере приложения КриптоАРМ Mobile под Android. Подробно расскажем о настройке окружения для создания тестов, а также разработаем Docker-контейнер, который обеспечит удобный запуск тестов. Кроме того, мы рассмотрим процесс автоматизации тестирования и его интеграцию в CI/CD, что позволит упростить и ускорить процесс разработки и тестирования приложений.
Статья: https://habr.com/ru/articles/926508/
Платформа: Android
В этой статье мы проведем обзор современных инструментов и подходов для тестирования мобильных приложений на примере приложения КриптоАРМ Mobile под Android. Подробно расскажем о настройке окружения для создания тестов, а также разработаем Docker-контейнер, который обеспечит удобный запуск тестов. Кроме того, мы рассмотрим процесс автоматизации тестирования и его интеграцию в CI/CD, что позволит упростить и ускорить процесс разработки и тестирования приложений.
Статья: https://habr.com/ru/articles/926508/
Платформа: Android
👍2
Swift concurrency. Executors, Actors и их связь с потоками
В данной части из серии статей мы погрузимся чуть глубже в недра Swift Concurrency. Как определяется поток, на котором будет выполняться Task? Почему в рамках одной Task поток может меняться? Что такое Executor и на какие типы он делится? За что отвечает TaskExecutor, а за что SerialExecutor? Как определить текущий Executor по коду? Как использовать свой самописный Executor? В этой статье ответим на эти (и многие другие) вопросы.
Статья: https://habr.com/ru/articles/887240/
Платформа: iOS
В данной части из серии статей мы погрузимся чуть глубже в недра Swift Concurrency. Как определяется поток, на котором будет выполняться Task? Почему в рамках одной Task поток может меняться? Что такое Executor и на какие типы он делится? За что отвечает TaskExecutor, а за что SerialExecutor? Как определить текущий Executor по коду? Как использовать свой самописный Executor? В этой статье ответим на эти (и многие другие) вопросы.
Статья: https://habr.com/ru/articles/887240/
Платформа: iOS
👍2
Как мы использовали макросы для улучшения MVVM- архитектуры
С ростом команды и кодовой базы появилось много однотипного кода (boilerplate), особенно в слоях DataSource в MVVM. Для автоматизации и единообразия в Duolingo используют новый Swift‑функционал — макросы, которые в момент компиляции анализируют AST и генерируют повторяемые методы, например для обновления значений в KeyValueDataSource. Это позволило убрать ручной код, уменьшить баги и ускорить разработку/
Макросы сократили количество ручного и тестируемого кода (около 4300 строк сгенерировано автоматически), снизили риск ошибок и обеспечили централизованное обновление логики. Но появились неудобства: сгенерированный код менее понятен и плохо индексируется, а чистые сборки стали дольше на ~10–20 секунд. Чтобы минимизировать это, подключили пакет макросов как заранее скомпилированный бинарник и хранят кэшированную сборку в S3, что делает сборки максимально быстрыми и при этом сохраняет гибкость развития.
Статья: https://blog.duolingo.com/ios-mvvm-swift-macros/
Платформа: iOS
Поставьте 👍, если хотите эту статью на русском!
С ростом команды и кодовой базы появилось много однотипного кода (boilerplate), особенно в слоях DataSource в MVVM. Для автоматизации и единообразия в Duolingo используют новый Swift‑функционал — макросы, которые в момент компиляции анализируют AST и генерируют повторяемые методы, например для обновления значений в KeyValueDataSource. Это позволило убрать ручной код, уменьшить баги и ускорить разработку/
Макросы сократили количество ручного и тестируемого кода (около 4300 строк сгенерировано автоматически), снизили риск ошибок и обеспечили централизованное обновление логики. Но появились неудобства: сгенерированный код менее понятен и плохо индексируется, а чистые сборки стали дольше на ~10–20 секунд. Чтобы минимизировать это, подключили пакет макросов как заранее скомпилированный бинарник и хранят кэшированную сборку в S3, что делает сборки максимально быстрыми и при этом сохраняет гибкость развития.
Статья: https://blog.duolingo.com/ios-mvvm-swift-macros/
Платформа: iOS
Поставьте 👍, если хотите эту статью на русском!
👍5
Мои любимые UI утилиты Jetpack Compose — без которых я не могу жить
Jetpack Compose — это мечта, ставшая реальностью после многих лет борьбы с XML. Но даже в мечтах бывают повторяющиеся моменты, верно? Бесконечные
Статья: https://medium.com/@maliksaif070/my-favorite-jetpack-compose-ui-utilities-that-i-cant-live-without-e7fb44e24d74
Платформа: Android
Поставьте 👍, если хотите эту статью на русском!
Jetpack Compose — это мечта, ставшая реальностью после многих лет борьбы с XML. Но даже в мечтах бывают повторяющиеся моменты, верно? Бесконечные
Spacer, шаблонный код для простого Divider, вложенность, необходимая только для центрирования чего-либо на экране… список можно продолжать. Это UI-эквивалент смерти от тысячи порезов бумагой. Устав от повторения, автор статьи решил дать отпор. Он начал превращать эти распространённые UI сниппеты в небольшие, многоразовые компонуемые объекты. Результат? Более чистый код, более быстрая разработка и макет, который гораздо легче читать с первого взгляда. Он делится своей личной коллекцией этих незаменимых помощников. Если вы цените читабельный, поддерживаемый и элегантный код UI, думаю, вы захотите позаимствовать несколько из них для себя.Статья: https://medium.com/@maliksaif070/my-favorite-jetpack-compose-ui-utilities-that-i-cant-live-without-e7fb44e24d74
Платформа: Android
Поставьте 👍, если хотите эту статью на русском!
👍4❤1
This media is not supported in your browser
VIEW IN TELEGRAM
LazyTimetable - высокопроизводительная таблица для расписания с отложенной загрузкой для Jetpack Compose для Android. Идеально подходит для создания расписаний фестивалей, конференций и любых многоколоночных макетов с временными рамками.
Фичи:
• Высокая производительность: ленивая загрузка с ограничением для области просмотра для плавной прокрутки даже при больших наборах данны
• Позиционирование по времени: элементы позиционируются на основе длительности в секундах с автоматическим расчётом макета
• Двунаправленная прокрутка: плавная горизонтальная и вертикальная прокрутка
• Широкие возможности настройки: настройка цветов, интервалов и внешнего вида контента
• Типобезопасный DSL: чистый, декларативный API для определения структуры расписания
LazyTimetable на GitHub: https://github.com/MoyuruAizawa/LazyTimetable
Платформа: Android
⭐️: 38
Фичи:
• Высокая производительность: ленивая загрузка с ограничением для области просмотра для плавной прокрутки даже при больших наборах данны
• Позиционирование по времени: элементы позиционируются на основе длительности в секундах с автоматическим расчётом макета
• Двунаправленная прокрутка: плавная горизонтальная и вертикальная прокрутка
• Широкие возможности настройки: настройка цветов, интервалов и внешнего вида контента
• Типобезопасный DSL: чистый, декларативный API для определения структуры расписания
LazyTimetable на GitHub: https://github.com/MoyuruAizawa/LazyTimetable
Платформа: Android
⭐️: 38
👍2
Функциональный стиль: объясняю как другу
«Функциональное программирование», «Immutable значения», «Pure функции».
Тоже слышал эти умные слова?
И ты такой: «Что? Можно просто for написать?»
Спокойно. Сейчас все разложим по полочкам. Даже если ты пишешь var a = 1 и гордишься этим - ты свой. Погнали.
Статья: https://habr.com/ru/articles/926900/
Платформа: iOS
«Функциональное программирование», «Immutable значения», «Pure функции».
Тоже слышал эти умные слова?
И ты такой: «Что? Можно просто for написать?»
Спокойно. Сейчас все разложим по полочкам. Даже если ты пишешь var a = 1 и гордишься этим - ты свой. Погнали.
Статья: https://habr.com/ru/articles/926900/
Платформа: iOS
👍2