Видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Посоветуйет в комментах интересные каналы по мобильной разработке? 🌐 @AppFiles
•
(iOS En) Stacked Cards Effect using SwiftUI•
(iOS En) Pinch to Zoom - SwiftUI•
(iOS En) Rebuild Spotify in SwiftUI•
(iOS En) Swift has more formatters than you know•
(iOS En) XCTest Tutorial: How to add automated UI tests for Better iOS App Quality•
(iOS En) Horizontal Wheel Picker•
(iOS En) Create Realistic Particle Effects for visionOS•
(And Ru) Что нужно учить в 2024•
(And En) Time for Playtime - Android Developers Backstage•
(And En) How to Implement a Pull-to-Refresh LazyColumn with Material3 in Android•
(And En) If You're Making These 5 Use Case Mistakes, You Haven't Understood Clean Architecture•
(And En) Material You Review•
(Crs Ru) Flutter Dev Podcast #45: Собеседования на позицию Flutter-разработчика•
(Crs En) Display images with Custom Paint using Supabase Storage•
(Crs En) Flutter Responsive UI Design•
(Dev Ru) Пишем рекомендательную систему музыки на Java•
(Dev Ru) Задача из Моего Собеседования в Amazon•
(Dev Ru) Ада Лавлейс и программирование•
(Dev Ru) Осознанный подход к метрикам•
(Dev En) AI Flutter Code Generator with Gemini APIПосоветуйет в комментах интересные каналы по мобильной разработке? 🌐 @AppFiles
YouTube
Stacked Cards Effect using #swiftui for #ios 17 in #xcode 15
Keyguard - это альтернативный клиент для платформы Bitwarden (открытый менеджер паролей), созданный для обеспечения наилучшего пользовательского опыта. Особенности Keyguard - Material You, мощный и быстрый поиск, поиск записи с дублированными паролями, неактивной двух-факторной аутентификацией, незащищенными веб-сайтами и дублированными, неполными или просроченными записями, прекрасная производительность, поддержка автозаполнения, поддержка множественных учетных записей с безопасным входом и двух-факторной аутентификацией, загрузка больших файлов в фоне, красивая светлая и черная темы, поддержка Chrome OS. В дополнение, у Keyguard есть притягивающие глаз анимации и плавность работы, которую вы ожидаете от лучших современных приложений.
Keyguard на GitHub: https://github.com/AChep/keyguard-app
Платформа: Android
⭐️: 529
Keyguard на GitHub: https://github.com/AChep/keyguard-app
Платформа: Android
⭐️: 529
Privacy Manifest: что нужно о нём знать для внедрения в проект
На работе я столкнулся с задачей внедрения Privacy Manifest в проект. Изучение вопроса началось с прочтения документации Apple, а продолжилось просмотром WWDC-сессии на тему конфиденциальности. После внедрения оказалось, что для корректной работы над задачей нужно изучить больше информации. Поэтому я решил поделиться опытом в формате инструкции. Покажу, как внедрять Privacy Manifest на примере вымышленного проекта, и дам практические советы по внедрению манифеста конфиденциальности.
Статья: https://habr.com/ru/companies/sberbank/articles/803445/
Платформа: iOS
На работе я столкнулся с задачей внедрения Privacy Manifest в проект. Изучение вопроса началось с прочтения документации Apple, а продолжилось просмотром WWDC-сессии на тему конфиденциальности. После внедрения оказалось, что для корректной работы над задачей нужно изучить больше информации. Поэтому я решил поделиться опытом в формате инструкции. Покажу, как внедрять Privacy Manifest на примере вымышленного проекта, и дам практические советы по внедрению манифеста конфиденциальности.
Статья: https://habr.com/ru/companies/sberbank/articles/803445/
Платформа: iOS
Context receivers — новые extension functions
Поговорим сегодня про context receivers — фиче Kotlin, про которую я узнал давно, но смог найти применение лишь пару месяцев назад. Расскажу о том, что такое context receivers, где их можно использовать, и, конечно же, про «успешный успех» — минус 60% самописного DI в Ozon ID SDK.
Статья: https://habr.com/ru/companies/ozontech/articles/802641/
Платформа: Android
Поговорим сегодня про context receivers — фиче Kotlin, про которую я узнал давно, но смог найти применение лишь пару месяцев назад. Расскажу о том, что такое context receivers, где их можно использовать, и, конечно же, про «успешный успех» — минус 60% самописного DI в Ozon ID SDK.
Статья: https://habr.com/ru/companies/ozontech/articles/802641/
Платформа: Android
🔥2
Сделайте ваше iOS-приложение меньше с помощью динамических фреймворков
Упаковать динамический фреймворк достаточно просто, однако для того, чтобы правильно дедуплицировать ресурсы и сделать приложение легким, вам придется пройти через множество недокументированных шагов.
Статья: https://apptractor.ru/info/articles/sdelayte-vashe-ios-prilozhenie-menshe-s-pomoschyu-dinamicheskih-freymvorkov.html
Платформа: iOS
Упаковать динамический фреймворк достаточно просто, однако для того, чтобы правильно дедуплицировать ресурсы и сделать приложение легким, вам придется пройти через множество недокументированных шагов.
Статья: https://apptractor.ru/info/articles/sdelayte-vashe-ios-prilozhenie-menshe-s-pomoschyu-dinamicheskih-freymvorkov.html
Платформа: iOS
Gifu добавляет в UIKit поддержку protocol-based performance-aware анимированных GIF. Не требует использования встроенного подкласса GIFImageView. Всю тяжелую работу выполняет класс Animator, а протокол GIFAnimatable раскрывает функциональность классам представления, которые соответствуют ему, используя расширения протокола. Animator имеет FrameStore, который хранит в памяти только ограниченное количество кадров, эффективно создавая буфер для анимации, не занимая всю доступную память. Такой подход делает загрузку больших GIF-файлов гораздо более дружественной к ресурсам.
Gifu на GitHub: https://github.com/kaishin/Gifu
Платформа: iOS
⭐️: 3K
Gifu на GitHub: https://github.com/kaishin/Gifu
Платформа: iOS
⭐️: 3K
GitHub
GitHub - kaishin/Gifu: High-performance animated GIF support for iOS in Swift
High-performance animated GIF support for iOS in Swift - kaishin/Gifu
👍2
Введение в Trio
Компания Airbnb начала разработку Trio более двух лет назад и использует его в продакшене уже более полутора лет. На нем построена значительная часть работающих экранов в Android-приложении Airbnb, и он позволил нашим инженерам создавать 100% функций в Compose UI.
В этой серии статей мы рассмотрим, как Mavericks можно использовать в современных приложениях на базе Compose. Мы обсудим проблемы архитектуры на базе Compose и то, как Trio пытался их решить
Статья: https://apptractor.ru/info/articles/vvedenie-v-trio.html
Платформа: Android
Компания Airbnb начала разработку Trio более двух лет назад и использует его в продакшене уже более полутора лет. На нем построена значительная часть работающих экранов в Android-приложении Airbnb, и он позволил нашим инженерам создавать 100% функций в Compose UI.
В этой серии статей мы рассмотрим, как Mavericks можно использовать в современных приложениях на базе Compose. Мы обсудим проблемы архитектуры на базе Compose и то, как Trio пытался их решить
Статья: https://apptractor.ru/info/articles/vvedenie-v-trio.html
Платформа: Android
Compose Rich Editor - текстовый редактор для Jetpack Compose и Compose Multiplatform, полностью настраиваемый и поддерживающие общие функции ввода текста. Основные фичи - мультиплатформенность, простота в использовании (API Compose Rich Editor использует возможности языка Kotlin для простоты и минимального количества шаблонного кода), WYSIWYG.
Compose Rich Editor на GitHub: https://github.com/MohamedRejeb/Compose-Rich-Editor
Платформа: Android
⭐️: 764
Compose Rich Editor на GitHub: https://github.com/MohamedRejeb/Compose-Rich-Editor
Платформа: Android
⭐️: 764
Один «подводный камень» в Jetpack Compose и как его можно исправить
В этой небольшой статье я расскажу об одном подводном камне, с которым вы вполне можете столкнуться при использовании Jetpack Compose. Я также объясню, как его обойти. Это связано с распространением касаний, макетами и Поверхностью в composable.
Статья: https://apptractor.ru/info/articles/odin-podvodnyy-kamen-v-jetpack-compose-i-kak-ego-mozhno-ispravit.html
Платформа: Android
В этой небольшой статье я расскажу об одном подводном камне, с которым вы вполне можете столкнуться при использовании Jetpack Compose. Я также объясню, как его обойти. Это связано с распространением касаний, макетами и Поверхностью в composable.
Статья: https://apptractor.ru/info/articles/odin-podvodnyy-kamen-v-jetpack-compose-i-kak-ego-mozhno-ispravit.html
Платформа: Android
Оптимизация приложения для сетевой доступности
Доступность сети — важный аспект для приложений, полагающихся на сетевые возможности. Ваши пользователи не всегда будут иметь хорошее подключение к Интернету, поэтому оптимизация приложения для плохих сетевых условий очень важна.
Мы можем использовать несколько методов для соответствующей оптимизации нашего приложения, но очень важно знать о распространенных ошибках, когда вы это делаете. После написания нескольких сетевых фреймворков и десятков приложений, пришло время поделиться с вами моими лучшими практиками, чтобы предотвратить ошибки, которые я совершил в прошлом.
Статья: https://apptractor.ru/info/articles/optimizatsiya-prilozheniya-dlya-setevoy-dostupnosti.html
Платформа: iOS
Доступность сети — важный аспект для приложений, полагающихся на сетевые возможности. Ваши пользователи не всегда будут иметь хорошее подключение к Интернету, поэтому оптимизация приложения для плохих сетевых условий очень важна.
Мы можем использовать несколько методов для соответствующей оптимизации нашего приложения, но очень важно знать о распространенных ошибках, когда вы это делаете. После написания нескольких сетевых фреймворков и десятков приложений, пришло время поделиться с вами моими лучшими практиками, чтобы предотвратить ошибки, которые я совершил в прошлом.
Статья: https://apptractor.ru/info/articles/optimizatsiya-prilozheniya-dlya-setevoy-dostupnosti.html
Платформа: iOS
Протокол Identifiable в SwiftUI с примерами
Протокол Identifiable позволяет выполнять итерации по коллекции объектов внутри ForEach в SwiftUI. Хотя этот протокол выглядит простым и имеет всего одно свойство, в нем легко допустить распространенную ошибку, которая может привести к неожиданному поведению вашего представления.
Статья: https://apptractor.ru/info/articles/identifiable.html
Платформа: iOS
Протокол Identifiable позволяет выполнять итерации по коллекции объектов внутри ForEach в SwiftUI. Хотя этот протокол выглядит простым и имеет всего одно свойство, в нем легко допустить распространенную ошибку, которая может привести к неожиданному поведению вашего представления.
Статья: https://apptractor.ru/info/articles/identifiable.html
Платформа: iOS
isowords - игра для iOS по поиску слов на кубиках. Надо соединять буквы, чтобы составить слова, чем длиннее, тем лучше, а когда буква будет использована в третий раз, кубик исчезнет, открыв новые буквы внутри. isowords - это большое и сложное приложение, построенное полностью на Swift. Логика iOS-клиента построена на Composable Architecture, а пользовательский интерфейс - в основном на SwiftUI с небольшим количеством SceneKit. Сервер также построен на Swift с использованием экспериментальных библиотек.
isowords на GitHub: https://github.com/pointfreeco/isowords
Платформа: iOS
⭐️: 2.5K
isowords на GitHub: https://github.com/pointfreeco/isowords
Платформа: iOS
⭐️: 2.5K
Сам себе экосистема. Часть 4: как я реализовал клиент Telegram на Android-смартфоне 14-летней давности
Я решил реализовать клиент Telegram на смартфоне 14-летней давности на базе официальной реализации MTProto от команды Telegram — TDLib. Сегодня мы с вами: узнаем новые причины мотивации вернуть в строй смартфоны прошлых лет, напишем на C# реле-сервер, который обрабатывает пакеты MTProto и кодирует их в простой текстовый формат датасетов, который можно моментально обработать даже при нестабильном GPRS-соединении на 21-летнем Siemens C60, а также узнаем о разработке миниатюрных Android-приложений на базе «голого» API-системы, которые не тянут за собой никаких зависимостей, в том числе и AppCompat/androidx. Интересно?
Статья: https://habr.com/ru/companies/timeweb/articles/804033/
Платформа: Android
Я решил реализовать клиент Telegram на смартфоне 14-летней давности на базе официальной реализации MTProto от команды Telegram — TDLib. Сегодня мы с вами: узнаем новые причины мотивации вернуть в строй смартфоны прошлых лет, напишем на C# реле-сервер, который обрабатывает пакеты MTProto и кодирует их в простой текстовый формат датасетов, который можно моментально обработать даже при нестабильном GPRS-соединении на 21-летнем Siemens C60, а также узнаем о разработке миниатюрных Android-приложений на базе «голого» API-системы, которые не тянут за собой никаких зависимостей, в том числе и AppCompat/androidx. Интересно?
Статья: https://habr.com/ru/companies/timeweb/articles/804033/
Платформа: Android
🔥1
Игра в безопасность Android-приложений
В рамках статьи нас интересуют сами процессы взлома и защиты, а не конкретные методики работы с конкретными инструментами. Поэтому разберёмся с этими процессами и постараемся сделать выводы. Чтобы читать было интереснее, я решил попеременно ставить себя и на место нападающего, и на место защищающего приложение человека. Что-то вроде шахмат: сначала ход делает нападающий, а затем защищающийся. Пока кто-то не победит. Пройдём путь, постепенно наращивая сложность, от простого вроде HTTPS — к более сложному, вроде обфускации и деобфускации, изменению поведения. И под конец перейдём к C++ и просмотру его Assembler кода.
Статья: https://habr.com/ru/companies/cian/articles/804835/
Платформа: Android
В рамках статьи нас интересуют сами процессы взлома и защиты, а не конкретные методики работы с конкретными инструментами. Поэтому разберёмся с этими процессами и постараемся сделать выводы. Чтобы читать было интереснее, я решил попеременно ставить себя и на место нападающего, и на место защищающего приложение человека. Что-то вроде шахмат: сначала ход делает нападающий, а затем защищающийся. Пока кто-то не победит. Пройдём путь, постепенно наращивая сложность, от простого вроде HTTPS — к более сложному, вроде обфускации и деобфускации, изменению поведения. И под конец перейдём к C++ и просмотру его Assembler кода.
Статья: https://habr.com/ru/companies/cian/articles/804835/
Платформа: Android
Обработка сетевых вызовов в Swift с помощью Moya
Moya предоставляет нам абстракцию для выполнения сетевых вызовов без прямого взаимодействия с Alamofire и позволяет в кратчайшие сроки сосредоточиться на основных функциях вашего приложения вместо того, чтобы работать с сетью.
Статья: https://apptractor.ru/info/articles/moya.html
Платформа: iOS
Moya предоставляет нам абстракцию для выполнения сетевых вызовов без прямого взаимодействия с Alamofire и позволяет в кратчайшие сроки сосредоточиться на основных функциях вашего приложения вместо того, чтобы работать с сетью.
Статья: https://apptractor.ru/info/articles/moya.html
Платформа: iOS
GreenStash - это простое cвободное и открытое приложение для Android, которое поможет вам легко планировать и управлять своими сбережениями, а также выработает привычку экономить деньги. Внутри Material 3 и Material You, биометрия, MAD (пользовательский интерфейс и логика написаны на чистом Kotlin, единая активити, никаких фрагментов, только Composable Destinations.
GreenStash на GitHub: https://github.com/Pool-Of-Tears/GreenStash
Платформа: Android
⭐️: 428
GreenStash на GitHub: https://github.com/Pool-Of-Tears/GreenStash
Платформа: Android
⭐️: 428
Видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Посоветуйте в комментах интересные каналы по мобильной разработке? 🌐 @AppFiles
•
(iOS En) Let's Build Interactive Floating Action Button - SwiftUI•
(iOS En) How to easily test Push Notifications in the iOS simulator•
(iOS En) Rebuild Bumble in SwiftUI•
(iOS En) SwiftUI Limited TextField With Indicator•
(And Ru) Как работает Android Work Profile•
(And Ru) Разбор кода магазина приложений•
(And Ru) Опыт, Java vs Kotlin и работа со списками•
(And En) Now in Android: 102 - Google I/O 2024, Women’s History Month, Vulkan on Android, and more•
(And En) DON'T Make This Clean Architecture Packaging Mistake•
(And En) Improving Video Playback with ExoPlayer•
(And En) Every Kind of Class in Kotlin•
(Crs Ru) Как Compose Multiplatform for iOS может убить Flutter?•
(Dev Ru) Открытое алгоритмическое собеседование (все собеседования)•
(Dev Ru) Как разрабатывать Яндекс Маркет, обеспечивать качество и работать с BDUI•
(Dev Ru) Собеседование продуктового аналитика в Авито•
(Dev Ru) Дата/время•
(Dev Ru) Релокация в UKПосоветуйте в комментах интересные каналы по мобильной разработке? 🌐 @AppFiles
YouTube
Let's Build Interactive Floating Action Button - SwiftUI
Hello Guys 🖐🖐🖐
In this video, I'm going to show how to create a cool Interactive Floating Action Button Using SwiftUI | Floating Action Button SwiftUI | SwiftUI Interactive Button | SwiftUI Action Button | SwiftUI Simultaneous Gesture | SwiftUI Gestures |…
In this video, I'm going to show how to create a cool Interactive Floating Action Button Using SwiftUI | Floating Action Button SwiftUI | SwiftUI Interactive Button | SwiftUI Action Button | SwiftUI Simultaneous Gesture | SwiftUI Gestures |…
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI Environment Overrides - небольшая библиотека, которая добавляет панель управления для тестирования того, как приложение SwiftUI адаптируется под различные цветовые темы, настройки доступности и локализации. Вдохновлена панелью "Environment Overrides" в Xcode, но позволяет проверять реальное работающее приложение вместо предварительного просмотра в Xcode.
SwiftUI Environment Overrides на GitHub: https://github.com/nalexn/EnvironmentOverrides
Платформа: iOS
⭐️: 304
SwiftUI Environment Overrides на GitHub: https://github.com/nalexn/EnvironmentOverrides
Платформа: iOS
⭐️: 304
Конструкторы-самозванцы в Kotlin
Сегодня я хочу поговорить про интересные моменты в Kotlin, связанные с вызовами конструкторов классов. Или не совсем конструкторов? Или же совсем не конструкторов? Давайте разбираться.
Статья: https://habr.com/ru/articles/805767/
Платформа: Android
Сегодня я хочу поговорить про интересные моменты в Kotlin, связанные с вызовами конструкторов классов. Или не совсем конструкторов? Или же совсем не конструкторов? Давайте разбираться.
Статья: https://habr.com/ru/articles/805767/
Платформа: Android
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Tap Target Compose - это Jetpack Compose реализация “мишеней” (Tap Target) из Material Design, используемых для указания пользователю на новые функции.
Tap Target Compose на GitHub: https://github.com/PierfrancescoSoffritti/tap-target-compose
Платформа: Android
⭐️: 32
Tap Target Compose на GitHub: https://github.com/PierfrancescoSoffritti/tap-target-compose
Платформа: Android
⭐️: 32