Видео и подкасты за неделю на @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Что было год назад:
•
•
•
•
• Осознанный подход к метрикам
•
(iOS Ru) Исследуем мир фото и видео редакторов•
(iOS Ru) Найди и исправь ошибки в коде — Задачи с собеседования•
(iOS Ru) Запускаем приложения на своем iOS-симуляторе•
(iOS Ru) Осторожно, Combine!•
(iOS Ru) Позаботимся о памяти при использовании value-типов•
(iOS Ru) Swift – больше, чем язык для iOS•
(iOS En) Videos from Swift Heroes 2024•
(iOS En) Staggered Animated View Using SwiftUI •
(iOS En) Advanced SwiftUI Animations - PhaseAnimator•
(iOS En) A case for Custom Bindings in SwiftUI: Essential Tips and Tricks•
(iOS En) VoiceMemos Waveform Audio Scrubber Using SwiftUI - Waveform Visualization•
(And Ru) Почему вам стоит включить Gradle Configuration Cache•
(And Ru) Интеграция GeckoView в Dynamic Feature•
(And Ru) Последнее слово в Android-навигации•
(And En) Introduction to the SDK Runtime•
(And En) How to Refactor Legacy Android Code With a Clear Step-By-Step Approach•
(And En) Applying the Observer Pattern in Kotlin•
(And En) Validating the chaos of RSS feeds with JetBrains’ Junie & some domain modeling sorcery•
(Crs Ru) Kotlin не для Android•
(Crs Ru) Как мы делали суперапп «Дилер онлайн», и что из этого получилось•
(Crs Ru) Совместная работа Kotlin/Native GC и ARC в iOS•
(Dev Ru) Правовой статус кодаЧто было год назад:
•
(Crs Ru) Flutter Dev Podcast #45: Собеседования на позицию Flutter-разработчика•
(Dev Ru) Пишем рекомендательную систему музыки на Java•
(Dev Ru) Задача из Моего Собеседования в Amazon•
(Dev Ru) Ада Лавлейс и программирование• Осознанный подход к метрикам
Kotlin и Jetpack Compose: портируем DOOM на смарт-часы
Я взялся за этот проект для Android Wear просто потому, что это интересно, и не так много людей видели, как на часах работает полноценная 3D‑игра. Однако я также хочу, чтобы проект был доступен и для «стандартного» Android. Таким образом, читатели, у которых нет смарт‑часов, смогут наслаждаться тем же кодом на своих смартфонах.
Статья: https://habr.com/ru/companies/otus/articles/894514/
Платформа: Android
Я взялся за этот проект для Android Wear просто потому, что это интересно, и не так много людей видели, как на часах работает полноценная 3D‑игра. Однако я также хочу, чтобы проект был доступен и для «стандартного» Android. Таким образом, читатели, у которых нет смарт‑часов, смогут наслаждаться тем же кодом на своих смартфонах.
Статья: https://habr.com/ru/companies/otus/articles/894514/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
AnimationSequence - это мощная, но интуитивно понятная библиотека Jetpack Compose (поддерживает Android, iOS, Desktop и Web), разработанная для упрощения последовательной анимации в ваших приложениях для Android. С минимальными усилиями создавайте элегантные, отзывчивые и иерархические анимации, улучшая пользовательский опыт и оживляя пользовательский интерфейс.
AnimationSequence на GitHub: https://github.com/pauloaapereira/AnimatedSequence
Платформа: Android
⭐️: 48
AnimationSequence на GitHub: https://github.com/pauloaapereira/AnimatedSequence
Платформа: Android
⭐️: 48
👍1
SwiftUI. Навигация по строке в разделяемом координаторе
Небольшие ухищрения позволяют существенно прокачать навигацию в приложении, и, что самое главное, облегчить себе жизнь. В особенности, если дизайнер отличается необузданной фантазией.
Статья: https://habr.com/ru/articles/894936/
Платформа: iOS
Небольшие ухищрения позволяют существенно прокачать навигацию в приложении, и, что самое главное, облегчить себе жизнь. В особенности, если дизайнер отличается необузданной фантазией.
Статья: https://habr.com/ru/articles/894936/
Платформа: iOS
Как мы ускоряли Android-сборку «селлера»
Скорость сборки проекта напрямую влияет на time to market продукта и (внезапно) удовольствие от процесса разработки. Если каких-то 50 лет назад время компиляции могло доходить до нескольких дней, и это считалось нормальным, то сейчас даже лишняя пара минут сборки проекта в Android Studio может заставить понервничать. Чтобы сберечь здоровье себе и CI, скорости сборки проекта нужно уделять внимание.
Статья: https://habr.com/ru/companies/ozontech/articles/894364/
Платформа: Android
Скорость сборки проекта напрямую влияет на time to market продукта и (внезапно) удовольствие от процесса разработки. Если каких-то 50 лет назад время компиляции могло доходить до нескольких дней, и это считалось нормальным, то сейчас даже лишняя пара минут сборки проекта в Android Studio может заставить понервничать. Чтобы сберечь здоровье себе и CI, скорости сборки проекта нужно уделять внимание.
Статья: https://habr.com/ru/companies/ozontech/articles/894364/
Платформа: Android
Dagger 2 и жизненный цикл
У нас было приложение‑монолит с главным ComponentManager, где строился весь граф зависимостей. Файл был немаленький. Также во всех фрагментах необходимо было вручную создавать DI‑компонент и следить за его чисткой, а разработчики то и дело забывали про это или чистили неправильно.
Потом началась кампания по выносу фичёвого кода в отдельные модули. С каждым новым модулем всё чаще выстреливала циклическая зависимость, и приходилось писать обвязку (прокси‑класс). Главный ComponentManager оставался связующим звеном между фичёвыми модулями, через которое происходил переброс зависимостей, так что он всё ещё был большим и сложным. Иногда рефакторинг, связанный с перемещением кода из одного модуля в другой, вызывал многочасовую борьбу за нахождение пути решения проблемы «почему сборка никак не соберётся?». Иногда, чтобы доставить зависимость из одного модуля в другой, нужно было строить сложные конструкции, как при игре в «Твистер».
Вся эта увлекательная и мучительная игра продолжалась довольно долго, пока на помощь, как бы странно это ни звучало, не пришёл новомодный Compose. Тогда мы только начинали его осваивать, и я решил сделать небольшой pet‑проект, состоящий из двух экранов, с применением Compose для его изучения. Естественно, в этот проект подключил всё самое современное из библиотек, включая Dagger 2. Как обычно, немного повозившись с настройкой DI, в голове всплыла вся та боль, которую мы испытываем в нашем проекте.
Статья: https://habr.com/ru/companies/sberbank/articles/893856/
Платформа: Android
У нас было приложение‑монолит с главным ComponentManager, где строился весь граф зависимостей. Файл был немаленький. Также во всех фрагментах необходимо было вручную создавать DI‑компонент и следить за его чисткой, а разработчики то и дело забывали про это или чистили неправильно.
Потом началась кампания по выносу фичёвого кода в отдельные модули. С каждым новым модулем всё чаще выстреливала циклическая зависимость, и приходилось писать обвязку (прокси‑класс). Главный ComponentManager оставался связующим звеном между фичёвыми модулями, через которое происходил переброс зависимостей, так что он всё ещё был большим и сложным. Иногда рефакторинг, связанный с перемещением кода из одного модуля в другой, вызывал многочасовую борьбу за нахождение пути решения проблемы «почему сборка никак не соберётся?». Иногда, чтобы доставить зависимость из одного модуля в другой, нужно было строить сложные конструкции, как при игре в «Твистер».
Вся эта увлекательная и мучительная игра продолжалась довольно долго, пока на помощь, как бы странно это ни звучало, не пришёл новомодный Compose. Тогда мы только начинали его осваивать, и я решил сделать небольшой pet‑проект, состоящий из двух экранов, с применением Compose для его изучения. Естественно, в этот проект подключил всё самое современное из библиотек, включая Dagger 2. Как обычно, немного повозившись с настройкой DI, в голове всплыла вся та боль, которую мы испытываем в нашем проекте.
Статья: https://habr.com/ru/companies/sberbank/articles/893856/
Платформа: Android
👍2
Неожиданно легко допустить утечку памяти в вашем приложении, даже не осознавая этого. Если утечки памяти остаются без внимания, они могут увеличить объем занимаемой памяти вашего приложения, что приводит к более быстрому завершению работы приложения в фоновом режиме. В тяжелых случаях ваше приложение может быть завершено даже во время работы на переднем плане.
Но проблема не только в использовании памяти. Утечка объектов может привести к неожиданным и скрытым ошибкам, которые гораздо сложнее отследить.
DriftCheck - это легковесная библиотека, которая поможет вам обнаружить циклы удержания и забытые ссылки, привязав ваши объекты к четко определенному жизненному циклу представлений UIKit/SwiftUI.
DriftCheck на GitHub: https://github.com/chrsmys/DriftCheck
Платформа: iOS
⭐️: 22
Но проблема не только в использовании памяти. Утечка объектов может привести к неожиданным и скрытым ошибкам, которые гораздо сложнее отследить.
DriftCheck - это легковесная библиотека, которая поможет вам обнаружить циклы удержания и забытые ссылки, привязав ваши объекты к четко определенному жизненному циклу представлений UIKit/SwiftUI.
DriftCheck на GitHub: https://github.com/chrsmys/DriftCheck
Платформа: iOS
⭐️: 22
❤1
Как правильно организовать проект c модульной архитектурой в iOS-разработке
Модульный подход не просто разделяет приложение на более управляемые части, но и закладывает возможность многократного использования кода в других проектах, позволяет организовать разработку и тестирование функциональных блоков независимо от основного приложения.
В этом материале я расскажу про ключевые моменты модульной архитектуры в iOS-приложениях, инструментах для ее внедрения и применения в наших проектах.
Статья: https://habr.com/ru/companies/ru_mts/articles/892444/
Платформа: iOS
Модульный подход не просто разделяет приложение на более управляемые части, но и закладывает возможность многократного использования кода в других проектах, позволяет организовать разработку и тестирование функциональных блоков независимо от основного приложения.
В этом материале я расскажу про ключевые моменты модульной архитектуры в iOS-приложениях, инструментах для ее внедрения и применения в наших проектах.
Статья: https://habr.com/ru/companies/ru_mts/articles/892444/
Платформа: iOS
👍1
Tack Android - это современное приложение-метроном для Android с красивым интерфейсом, которое имеет все функции, необходимые для отработки музыкального произведения. Также доступно отдельное приложение Wear OS с тактильными битами и множеством опций прямо на вашем запястье.
Tack Android на GitHub: https://github.com/patzly/tack-android
Платформа: Android
⭐️: 261
Tack Android на GitHub: https://github.com/patzly/tack-android
Платформа: Android
⭐️: 261
❤1
Трекер поездов и погоды с Raspberry Pi и E-Ink
Разработчик Сэм Бронер создал проект с использованием Raspberry Pi и E-Ink дисплея для отслеживания расписания поездов и прогноза погоды. Устройство отображает время прибытия ближайших поездов линий F и G нью-йоркского метро, а также текущую дату, время и погодные условия. Дисплей разделен на четыре секции: заголовок с датой и временем, трекер поездов, информация о погоде и "погодная шкала" на следующие 12 часов.
Аппаратная часть проекта включает 9,7-дюймовый E-Ink дисплей с разрешением 1200x825 пикселей, подключенный к Raspberry Pi 4b. Для программирования использовалась модульная архитектура, состоящая из движка отображения, системы компоновки, сервисов данных и контроллера приложения. Особое внимание уделено оптимизации обновления дисплея и обеспечения стабильности работы.
Подробные инструкции, список необходимых компонентов и исходный код доступны в репозитории на GitHub.
Статья: https://sambroner.com/posts/raspberry-pi-train
Платформа: разработка
Разработчик Сэм Бронер создал проект с использованием Raspberry Pi и E-Ink дисплея для отслеживания расписания поездов и прогноза погоды. Устройство отображает время прибытия ближайших поездов линий F и G нью-йоркского метро, а также текущую дату, время и погодные условия. Дисплей разделен на четыре секции: заголовок с датой и временем, трекер поездов, информация о погоде и "погодная шкала" на следующие 12 часов.
Аппаратная часть проекта включает 9,7-дюймовый E-Ink дисплей с разрешением 1200x825 пикселей, подключенный к Raspberry Pi 4b. Для программирования использовалась модульная архитектура, состоящая из движка отображения, системы компоновки, сервисов данных и контроллера приложения. Особое внимание уделено оптимизации обновления дисплея и обеспечения стабильности работы.
Подробные инструкции, список необходимых компонентов и исходный код доступны в репозитории на GitHub.
Статья: https://sambroner.com/posts/raspberry-pi-train
Платформа: разработка
❤1
Конкатенация против интерполяции текста в SwiftUI
можно сказать, что хотя конкатенация текста хорошо работает для простых сценариев стилизации, лучше всего всегда отдавать предпочтение интерполяции для локализованного текста, чтобы обеспечить грамматически правильный и естественный перевод. В реальных проектах также рекомендуется включать комментарии, особенно для строк с определителями формата, чтобы переводчики понимали, что представляет собой каждый заполнитель.
Статья: https://apptractor.ru/info/articles/konkatenatsiya-protiv-interpolyatsii-teksta-v-swiftui.html
Платформа: iOS
можно сказать, что хотя конкатенация текста хорошо работает для простых сценариев стилизации, лучше всего всегда отдавать предпочтение интерполяции для локализованного текста, чтобы обеспечить грамматически правильный и естественный перевод. В реальных проектах также рекомендуется включать комментарии, особенно для строк с определителями формата, чтобы переводчики понимали, что представляет собой каждый заполнитель.
Статья: https://apptractor.ru/info/articles/konkatenatsiya-protiv-interpolyatsii-teksta-v-swiftui.html
Платформа: iOS
👍1
Документируем код с помощью DocC
В настоящее время Apple предоставляет нам компилятор документации под названием DocC. DocC преобразует текст на основе Markdown в расширенную документацию для фреймворков и пакетов Swift. Сегодня мы изучим основы DocC, что позволяет нам предоставлять надлежащую документацию для нашего кода.
Статья: https://apptractor.ru/info/articles/docc.html
Платформа: iOS
В настоящее время Apple предоставляет нам компилятор документации под названием DocC. DocC преобразует текст на основе Markdown в расширенную документацию для фреймворков и пакетов Swift. Сегодня мы изучим основы DocC, что позволяет нам предоставлять надлежащую документацию для нашего кода.
Статья: https://apptractor.ru/info/articles/docc.html
Платформа: iOS
👍2
Профилирование и бенчмаркинг Android-сборок
Оптимизация времени сборки — важный аспект эффективной разработки. В статье на ProAndroidDev рассмотрены инструменты для анализа и улучшения производительности сборки Gradle.
• Build Analyzer в Android Studio показывает длительность выполнения задач и предлагает рекомендации по оптимизации.
• Профилирование Gradle (--profile) создаёт локальный HTML-отчет с детальным разбором всех процессов.
• Gradle Scan (--scan) формирует удаленный отчёт, где можно увидеть влияние кеширования, зависимостей и сетевых операций.
• Gradle Profiler позволяет тестировать разные сценарии сборки, оценивать влияние изменений кода, ресурсов и макетов.
Использование этих инструментов поможет ускорить процесс разработки и выявить узкие места в вашем проекте.
Статья: https://proandroiddev.com/profile-benchmark-android-builds-b572948c5be5
Платформа: Android
Обязательно поставьте 👍, если хотите эту статью на русском.
Оптимизация времени сборки — важный аспект эффективной разработки. В статье на ProAndroidDev рассмотрены инструменты для анализа и улучшения производительности сборки Gradle.
• Build Analyzer в Android Studio показывает длительность выполнения задач и предлагает рекомендации по оптимизации.
• Профилирование Gradle (--profile) создаёт локальный HTML-отчет с детальным разбором всех процессов.
• Gradle Scan (--scan) формирует удаленный отчёт, где можно увидеть влияние кеширования, зависимостей и сетевых операций.
• Gradle Profiler позволяет тестировать разные сценарии сборки, оценивать влияние изменений кода, ресурсов и макетов.
Использование этих инструментов поможет ускорить процесс разработки и выявить узкие места в вашем проекте.
Статья: https://proandroiddev.com/profile-benchmark-android-builds-b572948c5be5
Платформа: Android
Обязательно поставьте 👍, если хотите эту статью на русском.
❤1
VDAnimation предоставляет мощный, декларативный способ создания сложных анимаций в SwiftUI с минимальным кодом. Создавайте анимации последовательно, параллельно, с настраиваемым временем и кривыми.
VDAnimation на GitHub: https://github.com/dankinsoid/VDAnimation
Платформа: iOS
⭐️: 20
VDAnimation на GitHub: https://github.com/dankinsoid/VDAnimation
Платформа: iOS
⭐️: 20
Как мы сделали дизайн-систему для мобильных устройств и TV
Наша цель — показать концепцию дизайн-системы, поэтому в статье мы сознательно опустили некоторые технические нюансы, не влияющие на суть. Например, мы не затрагиваем оптимизацию рекомпозиций, а в примерах компонентов вы не найдете Modifier. Используйте представленный код как отправную точку для собственных решений, а не как финальную реализацию.
Статья: https://habr.com/ru/companies/vk/articles/896134/
Платформа: Android
Наша цель — показать концепцию дизайн-системы, поэтому в статье мы сознательно опустили некоторые технические нюансы, не влияющие на суть. Например, мы не затрагиваем оптимизацию рекомпозиций, а в примерах компонентов вы не найдете Modifier. Используйте представленный код как отправную точку для собственных решений, а не как финальную реализацию.
Статья: https://habr.com/ru/companies/vk/articles/896134/
Платформа: Android
BundledSQLiteDriver: новый взгляд на SQLite в Android и Kotlin Multiplatform
BundledSQLiteDriver из библиотеки androidx.sqlite — это специальная сборка встраиваемой СУБД SQLite от команды разработчиков Android Jetpack, предназначенная для использования в Kotlin Multiplatform проектах. В этой статье мы рассмотрим особенности её использования по сравнению со встроенным в Android вариантом SQLite.
Статья: https://habr.com/ru/articles/896794/
Платформа: Android
BundledSQLiteDriver из библиотеки androidx.sqlite — это специальная сборка встраиваемой СУБД SQLite от команды разработчиков Android Jetpack, предназначенная для использования в Kotlin Multiplatform проектах. В этой статье мы рассмотрим особенности её использования по сравнению со встроенным в Android вариантом SQLite.
Статья: https://habr.com/ru/articles/896794/
Платформа: Android
❤1
Вы уже знаете, как настроить Gradle для работы с мультипроектными/мультимодульными сборками с Kotlin DSL и Spring Dependency Management? Gradle, Kotlin, Spring Skeleton - пример, в котором автор абстрагировал самые важные логические компоненты и упаковал их в отдельные модули buildSrc. Это делает сборку очень модульной и также очень понятной.
Gradle, Kotlin, Spring Skeleton на GitHub: https://github.com/mrclrchtr/gradle-kotlin-spring
Платформа: Android
⭐️: 135
Gradle, Kotlin, Spring Skeleton на GitHub: https://github.com/mrclrchtr/gradle-kotlin-spring
Платформа: Android
⭐️: 135
👍2
Google AI Studio: макеты Figma -> iOS приложение на Gemini 2.5 Experimental
Мне случайно попалось задание с собеседования 2-х годичной давности на позицию "iOS разработчик" , в котором требовалось создать iOS приложения для бронирования номера в Отеле на основе макетов экранов из Figma, в которых использовалась "карусель" из фото.
Я решила попробовать использовать ИИ для разработки такого iOS приложения по макетам из Figma. Прямо скажем, что текст на прототипах экранов не очень отчетливо виден, так что ИИ предстоит его сначала прочитать, а уже потом создать iOS приложение.
Статья: https://habr.com/ru/articles/896498/
Платформа: iOS
Мне случайно попалось задание с собеседования 2-х годичной давности на позицию "iOS разработчик" , в котором требовалось создать iOS приложения для бронирования номера в Отеле на основе макетов экранов из Figma, в которых использовалась "карусель" из фото.
Я решила попробовать использовать ИИ для разработки такого iOS приложения по макетам из Figma. Прямо скажем, что текст на прототипах экранов не очень отчетливо виден, так что ИИ предстоит его сначала прочитать, а уже потом создать iOS приложение.
Статья: https://habr.com/ru/articles/896498/
Платформа: iOS
👍1
Как я писал проводник для Wear OS и что из этого вышло
Однажды настал момент, когда мне было необходимо поработать с файлами на своих часиках. Я просто хотел создать папку, накидать туда фоточек со шпорами... классика, не правда ли?
Открыв Google Play я ожидал увидеть обилие разнообразного программного обеспечения, которое позволит мне это сделать. Каково же было моё удивление, когда я увидел всего два приложения для управления файлами на часах...
Статья: https://habr.com/ru/articles/897170/
Платформа: Android
Однажды настал момент, когда мне было необходимо поработать с файлами на своих часиках. Я просто хотел создать папку, накидать туда фоточек со шпорами... классика, не правда ли?
Открыв Google Play я ожидал увидеть обилие разнообразного программного обеспечения, которое позволит мне это сделать. Каково же было моё удивление, когда я увидел всего два приложения для управления файлами на часах...
Статья: https://habr.com/ru/articles/897170/
Платформа: Android
"ИИ-агенты для начинающих" - бесплатный курс Microsoft
У Microsoft появился еще один бесплатный курс по ИИ для самостоятельного обучения, предназначенный для новичков. Этот курс состоит из 10 уроков, которые охватывают основы создания ИИ-агентов.
Новость: https://apptractor.ru/learn/ai-agents-for-beginners.html
Платформа: обучение
У Microsoft появился еще один бесплатный курс по ИИ для самостоятельного обучения, предназначенный для новичков. Этот курс состоит из 10 уроков, которые охватывают основы создания ИИ-агентов.
Новость: https://apptractor.ru/learn/ai-agents-for-beginners.html
Платформа: обучение