AppFiles - Mobile Development
2.01K subscribers
2.61K photos
33 videos
8 files
3.51K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
MLX - это фреймворк для исследований в области машинного обучения для Apple Silicon, разработанный компанией Apple.

Некоторые ключевые особенности MLX включают:

• Знакомые API: MLX имеет API на языке Python, близкий к NumPy. MLX также имеет полнофункциональные API для C++, C и Swift, которые в точности повторяют API Python. В MLX есть пакеты более высокого уровня, такие как mlx.nn и mlx.optimizers, с API, близкими к PyTorch, что упрощает построение более сложных моделей.
• Композитные преобразования функций: MLX поддерживает композитные преобразования функций для автоматического дифференцирования, автоматической векторизации и оптимизации вычислительных графов.
• Ленивые вычисления: Вычисления в MLX являются ленивыми. Массивы материализуются только тогда, когда это необходимо.
• Динамическое построение графов: Графы вычислений в MLX строятся динамически. Изменение формы аргументов функций не вызывает медленной компиляции, а отладка проста и интуитивно понятна.
• Мультиустройства: Операции могут выполняться на любом из поддерживаемых устройств (в настоящее время это CPU и GPU).
• Унифицированная память: Заметным отличием MLX от других фреймворков является унифицированная модель памяти. Массивы в MLX находятся в общей памяти. Операции над массивами MLX могут выполняться на любом из поддерживаемых типов устройств без передачи данных.

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

В репозитории примеров MLX есть множество примеров, включая обучение языковой модели трансформера, генерация крупномасштабных текстов с помощью LLaMA и тонкая настройка с помощью LoRA, генерация изображений с помощью Stable Diffusion, распознавание речи с помощью Whisper от OpenAI.

MLX на GitHub: https://github.com/ml-explore/mlx
Платформа
: iOS
⭐️: 12.8K
1
Проектируем системный дизайн Spotify

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

Статья: https://apptractor.ru/develop/proektiruem-sistemnyy-dizayn-spotify.html
Платформа: разработка

Поставьте 👍, если хотите еще статей с примерами системного дизайна.
👍6
Lingshot - это простой, но мощный инструмент для перевода скриншотов, который делает многоязычное общение более доступным, чем когда-либо прежде. С помощью этого приложения вы можете сделать скриншот любого текста и мгновенно перевести его на нужный вам язык - с распознаванием текста и использованием ChatGPT.

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

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

Lingshot на GitHub: https://github.com/CharlesMoreira1/lingshot
Платформа: Android
⭐️: 74
Машинное обучение на устройствах с помощью MLX и Swift

MLX - это фреймворк для работы с машинным обучением на Apple Silicon. MLX предназначен для исследований, а не для развертывания моделей в приложениях. MLX Swift расширяет MLX на язык Swift, облегчая исследователям ML-эксперименты на процессорах Apple.

Статья: https://apptractor.ru/info/articles/mashinnoe-obuchenie-na-ustroystvah-s-pomoschyu-mlx-i-swift.html
Платформа: iOS
Прекратите использовать тестовые теги в Jetpack Compose

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

Статья: https://apptractor.ru/info/articles/prekratite-ispolzovat-testovye-tegi-v-jetpack-compose.html
Платформа: Android/тестирование
20 лет Xcode год за годом

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

Статья: https://apptractor.ru/info/articles/20-let-xcode-god-za-godom.html
Платформа: iOS
👍3
EmojiKit - SDK на базе Swift, позволяющий использовать эмодзи в приложениях для всех основных платформах Apple (iOS, macOS, tvOS, watchOS и visionOS). EmojiKit предоставляет все необходимое для работы с эмодзи, включая категории, варианты оттенков кожи, информацию о юникоде и версии, поддержку локализации и т.д.

EmojiKit на GitHub: https://github.com/Kankoda/EmojiKit
Платформа: iOS
⭐️: 34
Почему Ollie перешел от SwiftUI к UIKit

Мы обнаружили, что в SwiftUI много «магии», которая затрудняет понимание. В SwiftUI есть множество неявных скрытых предположений, которые, если их не соблюдать, могут привести к неожиданным болезненным результатам.

Статья: https://apptractor.ru/info/articles/pochemu-ollie-pereshel-ot-swiftui-k-uikit.html
Платформа: iOS
3
Decompose - это библиотека Kotlin Multiplatform для разбиения кода на древовидную структуру, состоящую из небольших независимых компонентов бизнес-логики (BLoC), учитывающих жизненный цикл, с функцией маршрутизации и подключаемым пользовательским интерфейсом (Jetpack/Multiplatform Compose, Android Views, SwiftUI, Kotlin/React и т.д.).

Decompose проводит четкие границы между кодом пользовательского интерфейса и кодом, не относящимся к нему, позволяет правильно делать Dependency injection (DI) и Inversion of control (IoC), иметь общую логику навигации и т.д.

Decompose на GitHub: https://github.com/arkivanov/Decompose
Платформа: Android/кроссплатформа
⭐️: 1.8K
🔥4
7 открытых iOS-проектов, которые помогут изучить SwiftUI

Чтение кода (и его понимание) — один из лучших способов улучшить свои навыки разработки. Проекты с открытым исходным кодом — самое правильное место, где можно узнать о лучших практиках, стилях программирования и многих других темах. В этой статье список из 7 iOS-проектов на SwiftUI, которые помогут вам научиться новому.

Статья: https://apptractor.ru/develop/7-otkrytyh-ios-proektov-kotorye-pomogut-izuchit-swiftui.html
Платформа: iOS
🔥2
Отслеживание времени сборки Android-проекта

Сколько часов вы просидели перед Android Studio, просматривая сообщение «Gradle Build Running», просто ожидая сборки и развертывания приложения на вашем устройстве? Для больших приложений, совместно используемых десятками разработчиков, измерение этого числа важно для определения того, сколько времени может быть потрачено впустую

Статья: https://apptractor.ru/info/articles/otslezhivanie-vremeni-sborki-android-proekta.html
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
VerticalSplit - реализации разделенного на две части экрана с динамическими границами в SwiftUI. Вдохновлена приложением Amie для iOS.

VerticalSplit на GitHub: https://github.com/vedantgurav/VerticalSplit
Платформа
: iOS
⭐️: 46
2
ComposeInvestigator - отслеживает рекомпозиции Composable с указанием причины, без какого-либо шаблонного кода. Он может выполнять следующие задачи:

• Сообщает, если Composable пропущен при рекомпозиции.
• Сообщает, если аргументы элемента изменились и он был перекомпонован. Он также может сравнить значения до и после изменения.
• Сообщает, были ли изменены значения состояния внутри Composable. Также можно сравнить значения до и после изменения.
• Получает стек вызовов, ведущий к вовлечению Composable. Это помогает определить конкретный Composable, который перекомпонуется, когда один и тот же Composable используется повторно в нескольких местах.

ComposeInvestigator на GitHub: https://github.com/jisungbin/ComposeInvestigator
Платформа: Android
⭐️: 60
1
Android Lint: оптимизируем проверку мердж-реквестов

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

Статья: https://habr.com/ru/companies/ru_mts/articles/797053/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
MLX Swift Chat - пример запуска LLM-модели локально с помощью MLX. MLX - это эффективный фреймворк машинного обучения, специально разработанный для Apple Silicon. Сам проект - полностью нативное приложение SwiftUI, которое позволяет запускать локальные LLM-модели (например, Llama, Mistral) на процессоре Apple в режиме реального времени с помощью MLX.

MLX Swift Chat на GitHub: https://github.com/PreternaturalAI/mlx-swift-chat
Платформа: iOS
⭐️: 194
3
Continuations для взаимодействия асинхронных задач с синхронным кодом

Continuations позволяют нам создать обертку над обработчиком завершения (completion handler) и асинхронными функциями, чтобы мы могли обернуть старый код в более современный API. Например, функция withCheckedContinuation() создает новое continuation, которое может запускать любой код, который мы хотим, а затем вызывает resume(returning:), чтобы отправить значение обратно, даже если это часть обработчика завершения (completion handler).

Статья: https://habr.com/ru/articles/797735/
Платформа: iOS
Начинаем тестирование со Сканером Доступности

В этой статье мы рассмотрели Accessibility Scanner — инструмент для проверки некоторых аспектов доступности приложений для Android. Хотя он не гарантирует полной доступности приложений, это отличный инструмент для поиска малозаметных проблем.

Статья: https://apptractor.ru/info/articles/accessibility-scanner.html
Платформа: Android
Apollo Kotlin (ранее известный как Apollo Android) - это клиент GraphQL, который генерирует модели Kotlin и Java из запросов GraphQL.

Apollo Kotlin выполняет запросы и мутации на сервере GraphQL и возвращает результаты в виде типов Kotlin, специфичных для запроса. Это означает, что вам не нужно разбирать JSON, передавать Maps и заставлять клиентов вручную приводить значения к нужному типу. Вам также не нужно писать типы моделей самостоятельно, потому что они генерируются из определений GraphQL, которые использует ваш пользовательский интерфейс.

Поскольку сгенерированные типы зависят от запроса, вы можете получить доступ только к тем данным, которые вы указали в запросе. Если вы не запрашиваете определенное поле в запросе, вы не сможете получить доступ к соответствующему свойству возвращаемой структуры данных.

Эта библиотека разработана в первую очередь для Android, но вы можете использовать ее в любом приложении на Java/Kotlin, включая мультиплатформенные.

Apollo Kotlin на GitHub: https://github.com/apollographql/apollo-kotlin
Платформа: Android
⭐️: 3.6K
🔥1
Введение в Изоляцию в Swift

Недавно кто-то задал мне вопрос об изоляции акторов. Конкретные детали не так важны, но я действительно задумался над этим вопросом, потому что, конечно, любой тут начнет испытывать трудности. Изоляция является центральным элементом работы параллелизма в Swift, но это совершенно новая концепция.

Несмотря на новизну, она использует в основном знакомые механизмы. Вероятно, вы уже понимаете то, как работает изоляция, просто пока не осознаете этого.

Вот описание концепций в самых простых терминах, которые я смог придумать.

Статья: https://apptractor.ru/info/articles/vvedenie-v-izolyatsiyu-v-swift.html
Платформа: iOS