AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.12K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Виртуализация iOS на Apple Silicon

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

Статья: https://nickb.website/blog/virtualizing-ios-on-apple-silicon
Платформа: iOS
🤔1
Transcribro - это приватная клавиатура и сервис распознавания речи для Android-устройств. Он использует whisper.cpp для запуска семейства моделей OpenAI Whisper и Silero VAD для распознавания голосовой активности.
В приложении есть клавиатура голосового ввода, позволяющая набирать текст с помощью речи. Оно также может использоваться другими приложениями либо явно, либо при установке в качестве выбранного пользователем приложения для преобразования речи в текст.

Transcribro на GitHub: https://github.com/soupslurpr/Transcribro
Платформа: Android
⭐️: 370
This media is not supported in your browser
VIEW IN TELEGRAM
Паря в космосе: анимации с помощью Compose и Canvas

В своей предыдущей статье «Рисуя звезды: рисование с помощью Compose и Canvas» я рассказала о том, как я хотела улучшить свои навыки работы с  Canvas и Compose и создала иллюстрацию с планетами и звездами. В этой статье я расскажу, как анимировать эти элементы.

Статья: https://apptractor.ru/info/articles/parya-v-kosmose-animatsii-s-pomoschyu-compose-i-canvas.html
Платформа: Android
Перевод в текст живого звука с помощью фреймворка Speech

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

Статья: https://www.createwithswift.com/transcribing-audio-from-live-audio-using-the-speech-framework/
Платформа: iOS

Поставьте 10 👍 если хотите эту статью на русском.
👍3
10 причин НЕ использовать Jetpack Compose (с комментариями)

Jetpack Compose — это отличный набор инструментов для создания пользовательского интерфейса, который был тепло встречен сообществом Android-разработчиков. Мне нравится Jetpack Compose, но, как и любая другая технология, он имеет ряд недостатков. В этой статье мы узнаем, в каких случаях лучше использовать систему View и почему.

Статья: https://apptractor.ru/info/articles/10-prichin-ne-ispolzovat-jetpack-compose.html
Платформа: Android
🤡2
Реверс инжиниринг кормушки для кошек для повышения производительности разработки

После ночных покупок в Amazon я получил PetKit FreshElement Solo. У меня было две проблемы, которые он мог решить: низкая мотивация к побочному проекту и слишком большая любовь к миндалю с морской солью в темном шоколаде от Target. Я помешан на коде — так почему бы не подкормить мой обезьяний мозг, когда я пушу код? Так и возник мой проект — при каждом коммите кормушка для кошек выдает мне порцию конфет.

Статья: https://apptractor.ru/info/devices/revers-inzhiniring-kormushki-dlya-koshek-dlya-povysheniya-proizvoditelnosti-razrabotki.html
Платформа: разработка
😁31💊1
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