AppFiles - Mobile Development
2.16K subscribers
3.05K photos
41 videos
12 files
4.02K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Книга: «System Design. Проектирование мобильных систем. Подготовка к сложному интервью»

Практическое руководство MSD превращает сложные собеседования в предсказуемый процесс. Вы получаете 5-шаговую схему эффективного прохождения интервью и разбор 7 реальных кейсов (лента новостей, мессенджер, YouTube, Google Drive, трейдинговая платформа и др.), позволяющих проектировать архитектуру клиента, API, офлайн-режим, кэширование и масштабируемость. Здесь вы найдете готовые шаблоны, trade-off’ы и шпаргалки — всё, чтобы уверенно проходить интервью в топ-компаниях и расти от мидла до стафф+.

Статья: https://habr.com/ru/companies/piter/articles/1039648/
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Pine - нативный для Mac редактор кода

Pine — это редактор кода для разработчиков, которым нужно быстрое нативное приложение для Mac без накладных расходов Electron. Создан с использованием SwiftUI и AppKit, разработан для macOS 26 Liquid Glass. Открывается мгновенно, не мешает работе.

Архитектура: MVVM с представлениями SwiftUI, поддерживаемыми AppKit через NSViewRepresentable. Ядро редактора использует нативный стек NSTextStorage/NSLayoutManager/NSTextContainer. Подсветка синтаксиса выполняется асинхронно в фоновой очереди с токенами генерации для предотвращения появления устаревших результатов. Операции Git выполняются параллельно через GCD. Поиск по проекту использует параллелизм Swift с использованием скользящего окна.

Pine на GitHub: https://github.com/batonogov/pine
Платформа: macOS/iOS
⭐️: 13

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
AppFiles - Mobile Development
Pine - нативный для Mac редактор кода Pine — это редактор кода для разработчиков, которым нужно быстрое нативное приложение для Mac без накладных расходов Electron. Создан с использованием SwiftUI и AppKit, разработан для macOS 26 Liquid Glass. Открывается…
Defer в Swift: уберитесь перед уходом

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

Ключевое слово defer в Swift позволяет выполнить блок кода в конце текущего скоупа. Что означает текущий скоуп (область видимости)? Обычно это ближайшая пара фигурных скобок. Давайте рассмотрим несколько примеров.

Статья: https://apptractor.ru/info/articles/defer.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Обертки свойств в Swift: сокращаем шаблонный код

Раньше я везде копировал и вставлял один и тот же код валидации.

Каждый раз, когда мне нужно было ограничить значение от 0 до 100, я писал один и тот же геттер и сеттер. Каждый раз, когда я хотел сохранить что-то в UserDefaults, — один и тот же шаблонный код. Каждый раз, когда мне нужен был потокобезопасный доступ, — одна и та же процедура блокировки/разблокировки.

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

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

SwiftUI использует их повсюду. @State@Binding@Published@Environment. Вы все это время использовали обертки свойств. Но вот в чем дело: вы можете создать свои собственные. И как только вы это научитесь это делать, вы будете удивляться, как вы вообще жили без них.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Jetpack Compose New Style API - пример использования нового Style API

Небольшой экран для умного дома, созданный для изучения нового Jetpack Compose Foundation Style API.

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

Что демонстрирует этот пример:

• Централизованный слой AppTheme.styles для многократно используемых стилей компонентов
• Токены стилей обрабатываются внутри StyleScope с помощью CompositionLocal.currentValue
• Состояния нажатия, выбора и отключения с помощью rememberUpdatedStyleState
• Компактная область управления климатом с селектором режимов, скоростью вентилятора и чипом Eco
• Пользовательский индикатор температуры, созданный с помощью Compose Canvas
• Простой поток состояний в стиле MVVM с использованием ViewModel и StateFlow

Jetpack Compose New Style API на GitHub: https://github.com/ardakazanci/JetpackCompose-New-Style-API
Платформа: Android
⭐️: 19

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
Потоко-защищённая шина событий в Swift

В крупных приложениях для iOS взаимодействие между компонентами зачастую оказывается сложнее, чем сам компонент. Сервис завершает операцию, координатор должен отреагировать, возможно, потребуется обновить несколько экранов, и передача каждой зависимости по всему дереву навигации быстро начинает казаться излишней «рутинной» работой. Внедрение зависимостей и управление состоянием по-прежнему имеют своё место. Шина (данных) событий предоставляет нам ещё один инструмент для слабосвязанных уведомлений, где прямое управление добавило бы ненужную сложность. Цель этого компонента проста: позволить одной части приложения публиковать событие, а другим частям приложения — подписываться на события определенного типа. Реализация сосредоточена на типовой безопасности, потокобезопасном хранении, автоматической очистке при деаллокации владельца, явной отмене отдельных подписок, доставке MainActor для кода пользовательского интерфейса и поддержке AsyncStream для потребителей async/await.

Статья: https://habr.com/ru/articles/1042258/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как DuckDuckGo сократила время сборки Android-приложений до 57%

Работая с командой Gradle Technologies, DuckDuckGo использовала скрипты проверки сборки Develocity, чтобы систематически выявлять и исправлять проблемы, связанные с производительностью. Вот что они обнаружили — и чему могут научиться другие команды разработчиков Android.

Статья: https://apptractor.ru/info/articles/kak-duckduckgo-sokratila-vremya-sborki-android-prilozheniy-na-57.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
1
OneWay - управление состоянием с однонаправленным потоком данных

OneWay — это простая, легковесная библиотека для управления состоянием, использующая однонаправленный поток данных. Она полностью совместима со Swift 6 и построена на основе Swift Concurrency. Её архитектура обеспечивает потокобезопасность на всех этапах.

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

OneWay на GitHub: https://github.com/DevYeom/OneWay
Платформа: iOS
⭐️: 107

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Приоритизация эффективности использования памяти: важные шаги для Android 17

Хотя производительность приложения часто ассоциируют с плавным интерфейсом и быстрым стартом, именно память служит «тихим фундаментом», на котором строятся все эти видимые метрики. Не секрет, что мы наблюдаем сдвиг: объём и использование памяти устройства становятся важнее, чем когда-либо. В Android 17 мы не только продвинулись в оптимизациях памяти на уровне системы, но и предоставляем инструменты и API, которые помогут вам заранее подготовиться к более строгим требованиям к памяти позднее в этом году.

Статья: https://apptractor.ru/info/articles/prioritizatsiya-effektivnosti-ispolzovaniya-pamyati-vazhnye-shagi-dlya-android-17.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Корутины и то как они работают на низком уровне

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

Конечно же, никаких гномов-волшебников не существует, а сами Coroutines работают по определенным алгоритмам, причем не то чтобы очень сложным

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

Статья: https://habr.com/ru/articles/1041632/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Shelly - IDE для Android, ориентированная на ИИ-чаты

Shelly — это рабочее пространство, которое объединяет все компоненты на вашем Android-устройстве: локальную работу с терминалом, нативные PTY приложений, CLI Codex, ИИ панели, браузер/документацию, предварительный просмотр и фоновые API-агенты.

Нативная IDE для Android-терминала, позволяющая запускать настоящий Codex CLI в собственном PTY-приложении, с агентами ИИ, работающими через API — Gemini, Cerebras, Groq, Perplexity и локальными моделями — а также Git, Bash, Python и редакторами, встроенными в APK. Никакой Termux установки, никакой загрузки дистрибутива, никакой отдельной настройки менеджера пакетов. Никакого терминала в WebView, никакого удаленного бриджа для IDE. Откройте приложение, авторизуйте свои учетные записи ИИ и работайте в локальных многооконных терминалах на Android.

Shelly на GitHub: https://github.com/RYOITABASHI/Shelly
Платформа: Android
⭐️: 24

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как оптимизировать картинки в Android и не сломать UX: метрики, практики и компромиссы

Когда экран с изображениями начинает тормозить, первая реакция обычно предсказуемая: выключить crossfade, включить кэш, добавить placeholder и надеяться, что этого достаточно.

Иногда это правда помогает. Но редко решает проблему системно.

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

Поэтому оптимизация картинок в Android — это не про один флаг в image loader. Это про то, как быстро экран становится визуально полным, насколько плавно он скроллится и сколько стоит каждый image request.

Статья: https://habr.com/ru/companies/uzum/articles/1032460/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM