Продвинутая шпаргалка по корутинам в Kotlin
Итак, вы давно работаете с корутинами Kotlin и уже знакомы с такими базовыми концепциями. Но по мере того как ваши проекты становятся все сложнее, вы можете обнаружить, что часто ищете сложные решения и обращаетесь за помощью к Google или любимому искусственному интеллекту.
В этой шпаргалке собраны основные сведения, которые я почерпнула за время работы. Она призвана стать удобным справочником для решения более сложных сценариев работы с корутинами.
Статья: https://medium.com/@galou.minisini/advanced-kotlin-coroutine-cheat-sheet-for-android-engineer-15e0d180fc1f
Платформа: Android
Итак, вы давно работаете с корутинами Kotlin и уже знакомы с такими базовыми концепциями. Но по мере того как ваши проекты становятся все сложнее, вы можете обнаружить, что часто ищете сложные решения и обращаетесь за помощью к Google или любимому искусственному интеллекту.
В этой шпаргалке собраны основные сведения, которые я почерпнула за время работы. Она призвана стать удобным справочником для решения более сложных сценариев работы с корутинами.
Статья: https://medium.com/@galou.minisini/advanced-kotlin-coroutine-cheat-sheet-for-android-engineer-15e0d180fc1f
Платформа: Android
Конвейеры мобильного развертывания за $0
Непрерывная интеграция (Continuous Integration, CI) - один из главных столпов продвинутых разработчиков.
Если вы живете и дышите большими проектами, то возможность пройти горнило настройки эффективных конвейеров сборки, тестирования и развертывания - обычное дело, но что делать, если вы работаете над инди-проектом?
Если вы раньше не настраивали CI-конвейеры, это ставит вас в невыгодное положение как инженера, поскольку такая автоматизация является обязательной для любого нового проекта. Сегодня я покажу вам, как настроить CI для ваших побочных проектов. Бесплатно!
Статья: https://apptractor.ru/info/articles/konveyery-mobilnogo-razvertyvaniya-za-0.html
Платформа: iOS/разработка
Непрерывная интеграция (Continuous Integration, CI) - один из главных столпов продвинутых разработчиков.
Если вы живете и дышите большими проектами, то возможность пройти горнило настройки эффективных конвейеров сборки, тестирования и развертывания - обычное дело, но что делать, если вы работаете над инди-проектом?
Если вы раньше не настраивали CI-конвейеры, это ставит вас в невыгодное положение как инженера, поскольку такая автоматизация является обязательной для любого нового проекта. Сегодня я покажу вам, как настроить CI для ваших побочных проектов. Бесплатно!
Статья: https://apptractor.ru/info/articles/konveyery-mobilnogo-razvertyvaniya-za-0.html
Платформа: iOS/разработка
SafeDI - безопасная инъекция зависимостей во время компиляции для Swift-проектов. SafeDI создан для инженеров, которые хотят получить безопасность и простоту ручной инъекции зависимостей без накладных расходов на шаблонный код. SafeDI использует макросы Swift и плагины Swift Package Manager для чтения вашего кода и создания дерева зависимостей, которое проверяется во время компиляции. Зависимости могут быть либо инстанцированы SafeDI, либо направлены в дерево зависимостей.
SafeDI на GitHub: https://github.com/dfed/SafeDI
Платформа: iOS
⭐️: 61
SafeDI на GitHub: https://github.com/dfed/SafeDI
Платформа: iOS
⭐️: 61
Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Что вы посмотрели за неделю?
#ios #android #mobile #video
•
(iOS Ru) Почему Metal перестал быть страшным•
(iOS Ru) Локализация iOS-приложения за 1$ в 2024 году•
(iOS En) SwiftUI Floating Bottom Sheets•
(iOS En) How to Refactor SwiftUI into Reusable Views•
(iOS En) SwiftUI App Intro Animation's - Shape Morphing Effect•
(iOS En) Xcode File Headers and Macros•
(iOS En) How to Use TextField Keyboard Focus in SwiftUI with FocusState•
(And Ru) Нужно ли учить Java для Android-разработки в 2024•
(And En) Compose Tips for Delightful UI•
(And En) Compose Migration Side Effects - What Can Go Wrong?•
(And En) Building Libraries for the Next 25 Years•
(And En) Turbocharge Your Data: Harnessing Kotlin and gRPC to Handle Real-Time Data From Connected Cars•
(And En) Grow with the Flow: How Kotlin Flow Became a Game Changer for our Business•
(And En) Coroutines: Concurrency in Kotlin•
(Crs Ru) KMP на ОС Аврора: проблемы и пути их решения•
(Crs En) The Kotlinx DateTime API for Compose Multiplatform•
(Crs En) How to Implement Drag & Drop in Jetpack Compose•
(Crs En) Hitchhiker’s Guide to Kotlin Multiplatform Libraries•
(Dev Ru) Алгоритмическая сессия на собеседовании + Все собеседования•
(Dev Ru) Автоматическая генерация верстки под Server-driven UI из макетов Figma•
(Dev Ru) Учимся договариваться о деньгах — Офферы, Зарплаты, Повышение•
(Dev Ru) Дизайн системы — это слишком модно, возможно они вам не нужны•
(Dev En) How to get a FAANG Dev Job in your 40sЧто вы посмотрели за неделю?
#ios #android #mobile #video
Selenoid без симуляции: настройка, отладка и автоматизация на физическом Android-устройстве
Решение трудностей — развернуть Selenoid без Докера на сервере для работы с реальными устройствами, а также обеспечить полную автоматизацию при создании конфигураций для подключаемых Android девайсов через USB-порт.
Об этой и других задачах развёртывания инфраструктуры для запуска тестов на реальных Android-устройствах на Linux и Mac расскажу в этой статье. А также продемонстрирую реализованные нами кастомные скрипты для генерации конфигурационных файлов для подключенных устройств.
Статья: https://habr.com/ru/companies/alfa/articles/833136/
Платформа: Android
Решение трудностей — развернуть Selenoid без Докера на сервере для работы с реальными устройствами, а также обеспечить полную автоматизацию при создании конфигураций для подключаемых Android девайсов через USB-порт.
Об этой и других задачах развёртывания инфраструктуры для запуска тестов на реальных Android-устройствах на Linux и Mac расскажу в этой статье. А также продемонстрирую реализованные нами кастомные скрипты для генерации конфигурационных файлов для подключенных устройств.
Статья: https://habr.com/ru/companies/alfa/articles/833136/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Compose Game Engine - простой игровой движок для 2D-игр, созданный с помощью Jetpack Compose. Эта библиотека обеспечивает базовую функциональность игрового движка, включая управление игровыми объектами, обнаружение столкновений и рендеринг. Она использует Animatable и Canvas API. Однако она (пока) подходит только для небольших игр.
Compose Game Engine на GitHub: https://github.com/vgupta98/compose-game
Платформа: Android
⭐️: 14
Compose Game Engine на GitHub: https://github.com/vgupta98/compose-game
Платформа: Android
⭐️: 14
👍3
Как iOS-команда Medium эффективно работает с legacy кодом
Кодовой базе iOS-приложения Medium уже более 10 лет, и у нас все еще есть код 2013 и 2014 годов, который используется до сих пор.
Здесь вы можете подумать, почему, черт возьми, они никогда не переписывали его полностью?
На самом деле в iOS-команде Medium мы носим это как почетный знак, и сегодня я хочу объяснить, почему рассказываю о том, как эффективно работать с устаревшим кодом, и одновременно не мешать ему (слишком сильно).
Статья: https://apptractor.ru/info/articles/kak-ios-komanda-medium-effektivno-rabotaet-s-legacy-kodom.html
Платформа: iOS
Кодовой базе iOS-приложения Medium уже более 10 лет, и у нас все еще есть код 2013 и 2014 годов, который используется до сих пор.
Здесь вы можете подумать, почему, черт возьми, они никогда не переписывали его полностью?
На самом деле в iOS-команде Medium мы носим это как почетный знак, и сегодня я хочу объяснить, почему рассказываю о том, как эффективно работать с устаревшим кодом, и одновременно не мешать ему (слишком сильно).
Статья: https://apptractor.ru/info/articles/kak-ios-komanda-medium-effektivno-rabotaet-s-legacy-kodom.html
Платформа: iOS
WhatsApp Clone Compose - приложение-клон WhatsApp, созданное с помощью Stream Chat SDK for Compose для реализации систем обмена сообщениями и Stream Video SDK for Compose для видеозвонков.
Цель этого репозитория - продемонстрировать следующее:
• Реализация всего пользовательского интерфейса с помощью Jetpack Compose.
• Реализация компонентов архитектуры Android с помощью библиотек Jetpack, таких как Hilt и AppStartup.
• Выполнение фоновых задач с помощью корутин Kotlin.
• Интеграция систем чата с Stream Chat SDK для обработки событий в реальном времени.
• Интеграция систем видеозвонков с Stream Video SDK с использованием WebRTC под капотом.
Примечание: Stream SDK бесплатны для простого использования, но если вы захотите использовать их в реальном приложении, то за них придется много платить.
WhatsApp Clone Compose на GitHub: https://github.com/GetStream/whatsApp-clone-compose
Платформа: Android
⭐️: 1.2K
Цель этого репозитория - продемонстрировать следующее:
• Реализация всего пользовательского интерфейса с помощью Jetpack Compose.
• Реализация компонентов архитектуры Android с помощью библиотек Jetpack, таких как Hilt и AppStartup.
• Выполнение фоновых задач с помощью корутин Kotlin.
• Интеграция систем чата с Stream Chat SDK для обработки событий в реальном времени.
• Интеграция систем видеозвонков с Stream Video SDK с использованием WebRTC под капотом.
Примечание: Stream SDK бесплатны для простого использования, но если вы захотите использовать их в реальном приложении, то за них придется много платить.
WhatsApp Clone Compose на GitHub: https://github.com/GetStream/whatsApp-clone-compose
Платформа: Android
⭐️: 1.2K
Реализация Server-Driven UI в Android
Управляемый сервером пользовательский интерфейс (Server-driven UI) — это сценарий, в котором клиент получает информацию от API о том, какие компоненты и контент следует показать. В этом могут использоваться все три основные платформы — iOS, Android и веб. Я считаю, что подобная разработка улучшает отзывчивость и управляемость нативных приложений. Сегодня мы поговорим о том, как этого добиться.
Статья: https://apptractor.ru/info/articles/realizatsiya-server-driven-ui-v-android.html
Платформа: Android
Управляемый сервером пользовательский интерфейс (Server-driven UI) — это сценарий, в котором клиент получает информацию от API о том, какие компоненты и контент следует показать. В этом могут использоваться все три основные платформы — iOS, Android и веб. Я считаю, что подобная разработка улучшает отзывчивость и управляемость нативных приложений. Сегодня мы поговорим о том, как этого добиться.
Статья: https://apptractor.ru/info/articles/realizatsiya-server-driven-ui-v-android.html
Платформа: Android
Еще про Server-Driven UI
• BDUI как стратегия мобильного приложения
• Как разрабатывать Яндекс Маркет, обеспечивать качество и работать с BDUI
• BDUI – удовольствие или боль?
• BDUI на 100%: управляем шиммерами с бэкенда
• Podlodka #318: Backend Driven UI
• Backend Driven… Аналитика!
• DivKit. Server Driven UI. Ольга Ким. Яндекс
• Server Driven UI в Android с Compose
• Server-Driven UI с DivKit
• Глубокое погружение в Server-Driven UI систему Airbnb
• BDUI как стратегия мобильного приложения
• Как разрабатывать Яндекс Маркет, обеспечивать качество и работать с BDUI
• BDUI – удовольствие или боль?
• BDUI на 100%: управляем шиммерами с бэкенда
• Podlodka #318: Backend Driven UI
• Backend Driven… Аналитика!
• DivKit. Server Driven UI. Ольга Ким. Яндекс
• Server Driven UI в Android с Compose
• Server-Driven UI с DivKit
• Глубокое погружение в Server-Driven UI систему Airbnb
iOS Clean Architecture демонстрирует реализацию чистой архитектуры, MVVM и Combine в приложении на Swift. Архитектура разделяет проблемы на отдельные слои, делая кодовую базу более удобной для сопровождения, тестирования и масштабирования. Следуя этим принципам, вы сможете создавать надежные приложения, которые легко расширять и адаптировать к меняющимся требованиям.
iOS Clean Architecture на GitHub: https://github.com/tuan188/CleanArchitecture
Платформа: iOS
⭐️: 269
iOS Clean Architecture на GitHub: https://github.com/tuan188/CleanArchitecture
Платформа: iOS
⭐️: 269
Дизайн-система в SwiftUI
Благодаря согласованности мы можем получить эффективность, которая ускоряет процесс проектирования и разработки за счет предоставления многократно используемых компонентов и шаблонов.
Улучшение сотрудничества между дизайнерами и разработчиками получается за счет предоставления общего языка и набора инструментов, уменьшения недопонимания и обеспечения согласованности.
Статья: https://apptractor.ru/info/articles/dizayn-sistema-v-swiftui.html
Платформа: iOS
Благодаря согласованности мы можем получить эффективность, которая ускоряет процесс проектирования и разработки за счет предоставления многократно используемых компонентов и шаблонов.
Улучшение сотрудничества между дизайнерами и разработчиками получается за счет предоставления общего языка и набора инструментов, уменьшения недопонимания и обеспечения согласованности.
Статья: https://apptractor.ru/info/articles/dizayn-sistema-v-swiftui.html
Платформа: iOS
Disk - это мощная и простая библиотека управления файлами, созданная с учетом рекомендаций Apple по хранению данных в iOS. Disk максимально эффективно использует новый протокол Codable, представленный в Swift 4, и дает вам возможность сохранять структуры, не заботясь о кодировании/декодировании. Disk также помогает сохранять изображения и другие типы данных на диск всего одной строкой кода.
Disk на GitHub: https://github.com/saoudrizwan/Disk
Платформа: iOS
⭐️: 3.1K
Disk на GitHub: https://github.com/saoudrizwan/Disk
Платформа: iOS
⭐️: 3.1K
Жутко, но факт: как Uber тестирует платежи в продакшене
Вместо того чтобы напрягаться по поводу идеального релиза, Uber внедрил инструменты для раннего обнаружения производственных сбоев и быстрого и простого отката к заведомо безопасному состоянию.
Статья: https://apptractor.ru/info/articles/zhutko-no-fakt-kak-uber-testiruet-platezhi-v-prodakshene.html
Платформа: тестирование
Вместо того чтобы напрягаться по поводу идеального релиза, Uber внедрил инструменты для раннего обнаружения производственных сбоев и быстрого и простого отката к заведомо безопасному состоянию.
Статья: https://apptractor.ru/info/articles/zhutko-no-fakt-kak-uber-testiruet-platezhi-v-prodakshene.html
Платформа: тестирование
Как автоматически обнаруживать утечки памяти в CI/CD с помощью UI-тестов
Хотя эта функция осталась незамеченной многими разработчиками, при правильном использовании она может стать мощным инструментом для автоматического обнаружения утечек памяти в ваших iOS-приложениях в CI/CD-средах.
Статья: https://apptractor.ru/info/articles/kak-avtomaticheski-obnaruzhivat-utechki-pamyati-v-ci-cd-s-pomoschyu-ui-testov.html
Платформа: iOS/тестирование
Хотя эта функция осталась незамеченной многими разработчиками, при правильном использовании она может стать мощным инструментом для автоматического обнаружения утечек памяти в ваших iOS-приложениях в CI/CD-средах.
Статья: https://apptractor.ru/info/articles/kak-avtomaticheski-obnaruzhivat-utechki-pamyati-v-ci-cd-s-pomoschyu-ui-testov.html
Платформа: iOS/тестирование
This media is not supported in your browser
VIEW IN TELEGRAM
Zoomable - это библиотека Jetpack Compose, позволяющая масштабировать содержимое с помощью жеста щипка, двойного тапа или двойного касания и жеста перетаскивания. Zoomable можно использовать как с любыми composable компонентами, такими как Image, Text и т.д., так и с асинхронными изображениями, такими как AsyncImage от Coil.
Zoomable на GitHub: https://github.com/usuiat/Zoomable
Платформа: Android
⭐️: 354
Zoomable на GitHub: https://github.com/usuiat/Zoomable
Платформа: Android
⭐️: 354
👍1
Пишем своё приложение для установки PIN на другие приложения
Ещё с детства мой отец приучил меня пользоваться антивирусами. Соблюдая традиции, я купил себе подписку на антивирус для Андроида. Оказалось, в приложении есть крайне интересная фича - установка ПИН-кода для других приложений на устройстве. Интересной она была для меня тем, что я, как мобильный разработчик, не имел ни малейшего понятия, как подобное можно сделать. И вот теперь, после непродолжительных раскопок и проделанной работы, я делюсь своим опытом.
Статья: https://habr.com/ru/articles/834768/
Платформа: Android
Ещё с детства мой отец приучил меня пользоваться антивирусами. Соблюдая традиции, я купил себе подписку на антивирус для Андроида. Оказалось, в приложении есть крайне интересная фича - установка ПИН-кода для других приложений на устройстве. Интересной она была для меня тем, что я, как мобильный разработчик, не имел ни малейшего понятия, как подобное можно сделать. И вот теперь, после непродолжительных раскопок и проделанной работы, я делюсь своим опытом.
Статья: https://habr.com/ru/articles/834768/
Платформа: Android
Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Что вы посмотрели за неделю?
#ios #android #mobile #video
•
(iOS Ru) Итоги одного года мобильной разработки с использованием NLP•
(iOS Ru) Combine с нуля — реактивщина это просто•
(iOS En) Building Compositional Grid Layout With iOS 18 APIs•
(iOS En) The Best iOS Dev Portfolio Strategy•
(iOS En) How to Reduce Log Verbosity in the Xcode Debug Console•
(iOS En) Getting the MOST out of Xcode 16•
(iOS En) Building App Intro Animations with Shape Morphing Effect Using SwiftUI•
(And En) Targeting Android 15 - Why Your App Is NOT Ready•
(And En) Channels in Kotlin Coroutines•
(And En) Guide to Improving Compose Performance•
(And En) Background Work in Android: Strategies and Best Practices•
(And En) Applying the Strategy Pattern in Kotlin•
(Crs En) Lifecycle path to Multiplatform•
(Crs En) Kotlin Multiplatform in Google Workspace•
(Crs En) KMP in Action A Production Case Study•
(Dev Ru) Тулкиты кодогенерации Android vs iOS•
(Dev Ru) Ускоряем карьерный рост в FAANG•
(Dev Ru) Алгоритмы — самый провальный этап собеседований (+ все собеседования)•
(Dev En) Operating Systems Course for BeginnersЧто вы посмотрели за неделю?
#ios #android #mobile #video
Swift Semantic Search - демонстрационное приложение показывает, как создавать нативные приложения с ИИ работающие в реальном времени для устройств Apple. Оно использует библиотеку Unum для Swift и квантованные модели. Под капотом приложение использует UForm для понимания и "встраивания" мультимодальных данных, таких как многоязычные тексты и изображения, обрабатывая их на лету в фиде камеры. После того как векторные вложения вычислены, приложение использует USearch для обеспечения поиска в семантическом пространстве в режиме реального времени. Этот же механизм обеспечивает геопространственный поиск по координатам изображений и, как было показано, легко масштабируется даже до 100M+ записей на iPhone.
Swift Semantic Search на GitHub: https://github.com/ashvardanian/SwiftSemanticSearch
Платформа: iOS
⭐️: 66
Swift Semantic Search на GitHub: https://github.com/ashvardanian/SwiftSemanticSearch
Платформа: iOS
⭐️: 66
Как улучшить время сборки в iOS с помощью модуляризации
Большинство команд мобило понимают и ценят преимущества быстрой сборки. Возможность быстро компилировать и тестировать код означает ускорение разработки и итераций, что, в свою очередь, позволяет команде осуществлять доставку новых версий более регулярно и эффективно. Но на самом деле бывает сложно добиться стабильно быстрой сборки и внедрить долгосрочное решение, позволяющее поддерживать высокую скорость сборки по мере роста кодовой базы. Существует множество различных тактик, и если некоторые из них относительно тривиальны — например, уменьшение размера доставляемых ресурсов, — то другие могут быть гораздо более сложными и даже опасными (вспомните сомнительные трюки с компилятором)!
К счастью, самые рискованные методы улучшения времени сборки редко бывают необходимы. Вместо этого большинство команд добьются успеха, внедряя некоторые из наиболее распространенных подходов постепенно, по мере роста кодовой базы и масштабирования ресурсов.
Статья: https://habr.com/ru/companies/piter/articles/834724/
Платформа: iOS
Большинство команд мобило понимают и ценят преимущества быстрой сборки. Возможность быстро компилировать и тестировать код означает ускорение разработки и итераций, что, в свою очередь, позволяет команде осуществлять доставку новых версий более регулярно и эффективно. Но на самом деле бывает сложно добиться стабильно быстрой сборки и внедрить долгосрочное решение, позволяющее поддерживать высокую скорость сборки по мере роста кодовой базы. Существует множество различных тактик, и если некоторые из них относительно тривиальны — например, уменьшение размера доставляемых ресурсов, — то другие могут быть гораздо более сложными и даже опасными (вспомните сомнительные трюки с компилятором)!
К счастью, самые рискованные методы улучшения времени сборки редко бывают необходимы. Вместо этого большинство команд добьются успеха, внедряя некоторые из наиболее распространенных подходов постепенно, по мере роста кодовой базы и масштабирования ресурсов.
Статья: https://habr.com/ru/companies/piter/articles/834724/
Платформа: iOS