AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.12K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
DevTutor for SwiftUI - это приложение, предназначенное для помощи разработчикам в создании исключительных приложений с использованием SwiftUI. Оно предлагает воспроизводимые примеры кода и соответствующие предварительные просмотры пользовательского интерфейса, чтобы упростить процесс программирования. Кроме того, приложение включает локальный офлайн-доступ к официальной документации по языку программирования Swift на китайском и английском языках.

DevTutor for SwiftUI на GitHub: https://github.com/jaywcjlove/devtutor
Платформа: iOS
⭐️: 145
Пишите на Swift как Apple

В этой статье я продемонстрирую некоторые из кодовых соглашений, которых я теперь придерживаюсь, непосредственно переняв подход Apple к программированию в Swift.

• Булево значение должно определять условие
• Не заботьтесь о длине имени типа, уточните намерение
• Прошедшее время для метода, настоящее время или глагол для замыкания
• Избегайте прямого указания объекта, используйте Enum или Static для объявления типа
• Словарь с перечислением в качестве ключа
• Вложенный тип — это нормально
• Протокол — это поведение: найдите нужное существительное, используйте суффикс -able, если оно не найдено

Статья: https://apptractor.ru/info/articles/pishite-na-swift-kak-apple.html
Платформа: iOS
😁2
Остерегайтесь UserDefaults: история о трудно понимаемых ошибках и потерянных данных

Оказывается, иногда вы можете запросить сохраненные данные из UserDefaults, а он... просто не захочет их получать! Это довольно большая проблема для системы, которая должна надежно хранить данные для вас.

Это может привести к еще более серьезной проблеме - к безвозвратной потере данных.

Статья: https://apptractor.ru/info/articles/osteregaytes-userdefaults.html
Платформа: iOS
MusicSearch - приложение для Android, позволяющее просматривать песни, исполнителей и все, что с ними связано, используя MusicBrainz API.

Мультиплатформенные дистрибутивы находятся в разработке. Только приложение для Android считается стабильным.

MusicSearch на GitHub: https://github.com/lydavid/MusicSearch
Платформа: Android
⭐️: 40
Видео и подкасты за неделю @AppFiles

(iOS Ru) Собеседование iOS-разработчика: проектирование и лайфкодинг (+ все собеседования)
(iOS En) Improve Scroll Transitions | SwiftUI
(iOS En) Grid Multi-Selection using Pan Gesture | SwiftUI
(iOS En) How to Fix UIKit and SwiftUI Menu Buttons (make them easier to tap)
(iOS En) TDD Basics with SwiftUI
(iOS En) Adopt iPhone 16 Camera Control into your SwiftUI App
(iOS En) WWDC22: Design protocol interfaces in Swift
(And En) Now in Android: 110 - Android 15, Credential Manager, Android Studio Koala, Compose for TV
(And En) FULL Guide to Kotlin's Inline Keyword (inline, crossinline & noinline)
(And En) Micro Open Source: From Passion to Pet Project Publication
(Crs Ru) Flutter Web глазами мобильного разработчика
(Crs En) Build a Book Library App for Android & iOS using ROOM KMP (MVVM)
(Dev Ru) Мобильная разработка в Алисе и YaOS: как это работает
(Dev Ru) Путь тестировщика: ошибки, опыт, деньги
(Dev Ru) Перформанс мобильных приложений
(Dev Ru) Дизайн-система 2.0: менеджеры нужны
(Dev Ru) Двое за ноутом, не считая copilot’а, или Как внедрить парное программирование
(Dev Ru) Так много тимлидов хороших и разных. А я какой?
(Dev Ru) Стартап мечты превратился в кошмар
(Dev En) Databases In-Depth – Complete Course
(Dev En) Electron Course - Code Desktop Applications (inc. React and Typenoscript)
(Dev En) AWS Certified AI Practitioner (AIF-C01) – Full Course to PASS the Certification Exam

#ios #android #mobile #video
TinyStorage - простая и легкая замена UserDefaults (не обертка, а именно замена, лишенная некоторых недостатков нативного фреймворка) с более надежным доступом и встроенной поддержкой типов Codable.

Как писал автор в этой статье, в последнее время у UserDefaults все чаще возникают проблемы с возвратом нулевых данных, когда устройство заблокировано и iOS предварительно «разогревает» ваше приложение. В сочетании с API, который не очень хорошо раскрывает эту информацию, вы можете легко оказаться в ситуации с трудноотслеживаемыми ошибками и потерей данных. Эта библиотека стремится решить эту проблему, не шифруя файл и обеспечивая более надежный доступ к сохраненным данным (хотя и менее безопасный, так что не храните конфиденциальные данные), и добавляя к этому некоторые приятные мелочи.

Как и UserDefaults, TinyStorage предназначен для использования с относительно небольшими значениями. Не храните в TinyStorage массивные базы данных, так как он не оптимизирован для этого, но он достаточно быстр для извлечения сохраненных типов Codable. В качестве ориентира, размер хранилища не должен превышать 1 МБ.

TinyStorage на GitHub: https://github.com/christianselig/TinyStorage
Платформа: iOS
⭐️: 182
История одного модального окна или переходим с UIKit на SwiftUI. Часть 1

Сегодня хочу рассказать, как я делала модальное окно на SwiftUI (в приложении, которое полностью пока написано на UIKit, за исключением новых фич) и какие возникли сложности, а так же как с ними справилась.

Вот дизайн, ничего необычного, по нажатию на TableViewCell мы видим модальное окно, в котором отображены имеющиеся сохраненные статьи, так же есть вариант получить с сервера новые статьи, отобразить progress view и затем опять вывести модальное окно с новой статьёй.

Казалось бы, что может пойти не так?

Статья: https://habr.com/ru/articles/848972/
Платформа: iOS
Авто-трекинг производительности Room Database

Room (абстракция над SQLite) — одна из основных технологий, используемая почти во всех Android-приложениях для кэширования данных, оффлайновости, как cross-process хранилище данных и тому подобное.

При этом скорость работы приложения обычно напрямую зависит от скорости работы с БД, особенно если речь идет о холодном старте, когда все данные хранятся в кэше (в БД).

Встает вопрос: “А не является ли сама работа с БД узким местом скорости старта приложения?”

В Wildberries это особенно актуально, так как приложение построено на парадигме offline-first, когда почти вся информация кэшируется в БД, чтобы приложение работало даже с медленным интернетом или без него.

Для ответа на этот вопрос в статье разберем рантайм реализацию автоматического трекинга скорости выполнения запросов и транзакций в Room Database на основе Java Dynamic Proxy.

Статья: https://habr.com/ru/companies/wildberries/articles/849068/
Платформа: Android
День, когда мы (почти) потеряли тысячу клиентов

Все началось с сообщения об ошибке. Такого типа сообщения, которое вы видите в пятницу днем и откладываете до следующего понедельника. В тот день мы не обратили на него особого внимания, а зря.

Пользователи Android 6 и 7 не могли войти в систему или совершить перевод из-за обновления корневого сертификата SSL, выданного Let's Encrypt. Нам нужно было разблокировать этих пользователей.

Здесь я хочу поделиться нашим опытом преодоления бури, вызванной взмахом крыла этой бабочки.

Статья: https://apptractor.ru/info/articles/den-kogda-my-pochti-poteryali-tysyachu-klientov.html
Платформа: Android
Принятие SwiftUI (да и вообще любой новой технологии)
1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Создаем анимацию печати текста на печатной машинке в SwiftUI

Анимация текста может значительно улучшить впечатления пользователя от приложения, добавив ему динамичности и интерактивности. Одним из особенно интересных эффектов является анимация печатной машинки, когда текст появляется символ за символом, как будто его набирают в режиме реального времени. Например, такая анимация особенно актуальна для платформ чатов с искусственным интеллектом. На самом деле, я использовал именно эту анимацию в процессе регистрации в своем приложении Catzumi, создавая ретро-стиль и запоминающееся первое впечатление для новых пользователей.

Статья: https://apptractor.ru/info/articles/sozdaem-animatsiyu-pechati-teksta-na-pechatnoy-mashinke-v-swiftui.html
Платформа: iOS
Kotlin Multiplatform Developer Roadmap предлагает путь обучения для понимания мультиплатформенной разработки на Kotlin, включая соответствующие библиотеки и технологические стеки по различным темам. Каждый узел представляет ключевые аспекты Kotlin Multiplatform, включая концепции платформы, SDK, часто используемые библиотеки и практические решения.

Kotlin Multiplatform Developer Roadmap на GitHub: https://github.com/skydoves/kmp-developer-roadmap
Платформа: Android/кроссплатформа
⭐️: 289
iOS Performance Optimization - этот проект предлагает базовые знания и рекомендуемые ресурсы по оптимизации производительности iOS-приложений. Основные темы: уменьшение размера приложения, сокращение времени сборки, сокращение времени запуска приложения, оптимизация рантайма, зависания приложения, использование памяти, CI.

iOS Performance Optimization на GitHub: https://github.com/hoangatuan/iOS-Performance-Optimization
Платформа: iOS
⭐️: 40
🔥2
Тесты для функций Compose в Android

Представьте себе мир, где каждый раз, когда вы вносите изменения в код вашего приложения, вы уверены, что ничего не сломалось. Где ошибки обнаруживаются еще до того, как пользователи успеют их заметить. Где ваш код не только работает, но и документируется автоматически, улучшая архитектуру проекта с каждым тестом. Звучит как мечта? На самом деле это реальность, если вы правильно используете тесты. В этой статье мы погрузимся в мир тестирования Android-приложений с использованием Jetpack Compose, рассмотрим различные виды тестов и научимся настраивать и писать инструментальные тесты для ваших Compose функций.

Статья: https://habr.com/ru/articles/850588/
Платформа: Android
Антипаттерны Code Review

Code Review кажется отличной идеей, верно? Два разработчика, просматривающие один и тот же код, имеют в два раза больше шансов обнаружить проблемы. Это распространяет понимание того, как развивается проект. Рецензент может узнать полезные приемы, подробно читая код автора, или найти возможность научить автора полезному приему, который он еще не знал.

Что может пойти не так?

Статья: https://apptractor.ru/info/articles/antipatterny-code-review.html
Платформа: разработка
1
Вычисление семантического расстояния между словами с помощью Natural Language Framework

Такие фрагменты текста естественного языка, как слова и предложения, могут иметь семантическое сходство между собой. На этой концепции основано большинство подсказок, и она реализуется с помощью класса NLEmbedding фреймворка Natural Language.

Обработка естественного языка позволяет компьютерам понимать человеческий язык и взаимодействовать с ним. Она помогает обрабатывать и анализировать текстовые данные, извлекать значимую информацию и определять взаимосвязи между словами и фразами. Класс NLEmbedding обеспечивает возможность структурированного отображения и анализа этих связей.

Статья: https://apptractor.ru/info/articles/vychislenie-semanticheskogo-rasstoyaniya-mezhdu-slovami-s-pomoschyu-natural-language-framework.html
Платформа: iOS
2
This media is not supported in your browser
VIEW IN TELEGRAM
Loaders - два индикатора прогресса/лоадера для Jetpack Compose. Есть шестеренки и паззл, который открывает картинку.

Loaders на GitHub: https://github.com/EranBoudjnah/Loaders
Платформа: Android
⭐️: 59
Tuist: добавляем генерацию проекта в текущее приложение

Знаете, что объединяет всех iOS-разработчиков, работающих над крупными проектами? Все мы когда-то сталкивались с этим старым знакомым — файлом .xcodeproj, который хранит в себе десятки, а то и сотни конфликтов после каждого merge. Мы тоже жили с этой проблемой много лет, пока не нашли решение.

Знакомьтесь, Tuist — инструмент, который кардинально изменил наш подход к управлению проектами. Он не только помогает избежать конфликтов, но и автоматизирует генерацию ключевых компонентов, значительно облегчая команде жизнь.

Если у вас всё еще сохранился этот «реликт прошлого», то, возможно, наш опыт поможет вам наконец-то избавиться от него. Давайте разберемся, как это сделать.

Статья: https://habr.com/ru/companies/cian/articles/847688/
Платформа: iOS
Компьютерное зрение на C++: пишем приложение для поиска объектов под Android

Расскажу, как реализовать обнаружение объектов в реальном времени с помощью камеры на мобильной платформе Android с использованием библиотек PyTorch и NCNN и моделей компьютерного зрения YOLOv5 и YOLOv4. Шаблон моего приложения пригодится тем, кто хочет проверить прототип функциональности для компьютерного зрения на С++, использующий OpenCV на Android, но не хочет глубоко погружаться в программирование под Android.

Статья: https://habr.com/ru/companies/yadro/articles/850786/
Платформа: Android
Как мы улучшили производительность навигации на Android на 30%

В 2019 году команда Yelp Core Android начала работу по повышению производительности навигации в приложении Yelp для потребителей. Мы перешли от создания экранов с несколькими отдельными Активити к использованию фрагментов внутри одной Активити. В этой статье мы расскажем о нашем решении, о нашем подходе к миграции, и поделимся выводами, сделанными на этом пути, а также достигнутыми успехами.

Статья: https://apptractor.ru/info/articles/kak-my-uluchshili-proizvoditelnost-navigatsii-na-android-na-30.html
Платформа: Android
AppFiles - Mobile Development
Как мы улучшили производительность навигации на Android на 30% В 2019 году команда Yelp Core Android начала работу по повышению производительности навигации в приложении Yelp для потребителей. Мы перешли от создания экранов с несколькими отдельными Активити…
Ускоряем работу приложения с помощью сжатия с общим словарем

Несмотря на то, что с каждым релизом iPhone становятся все быстрее и быстрее, сетевые задержки остаются постоянным препятствием на пути пользователя. Скорость доставки информации к месту назначения ограничена скоростью света, и во многих случаях на этом пути возникают дополнительные замедления (3G-соединения, туннели метро, спутниковый интернет и т.д.). Сокращение размера передаваемых данных по-прежнему приносит пользу пользователям, и поэтому мы рассмотрим относительно новую технику — «сжатие с общим словарем» (shared dictionary compression). Хотя эта техника уже давно используется в таких компаниях, как Google и Amazon, в последнее время она получила широкое распространение в сообществе разработчиков. В основном это касается браузеров, но в этой статье я покажу, как можно легко использовать сжатие с общим словарем в приложениях для iOS.

Статья: https://apptractor.ru/info/articles/uskoryaem-rabotu-prilozheniya-s-pomoschyu-szhatiya-s-obschim-slovarem.html
Платформа: автор говорит, что iOS, но вообще ничего специфичного там нет, поэтому разработка