Аннотации в Kotlin: от @Deprecated до своего KSP-процессора
Аннотации легко воспринимать как декоративную часть языка. Поставили
В этой статье разберем, что на самом деле происходит вокруг аннотаций в Kotlin, чем отличаются
Статья: https://habr.com/ru/companies/uzum/articles/1056652/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Аннотации легко воспринимать как декоративную часть языка. Поставили
@Deprecated, добавили @Suppress, пометили DTO через @JsonClass - и пошли дальше. Но в большом Android-проекте аннотации быстро перестают быть просто подсказками для IDE. Они становятся контрактом между кодом и инструментами: компилятором, статическим анализатором, генератором кода, DI-фреймворком, сериализатором или внутренней платформенной инфраструктурой.В этой статье разберем, что на самом деле происходит вокруг аннотаций в Kotlin, чем отличаются
SOURCE, BINARY и RUNTIME, почему @Composable - это не просто красивая метка, чем kapt отличается от KSP, и на каких практических задачах annotation processing может быть полезен в Android-разработке.Статья: https://habr.com/ru/companies/uzum/articles/1056652/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Gradle под капотом: как перестать мучиться и заставить свой компьютер работать на полную мощность?
Сегодня я хочу разобрать инструмент, который мы все используем десятки раз в день, но часто по-прежнему воспринимаем как «черный ящик».
Без этого мы бы до сих пор собирали проекты вручную, писали бы скрипты Bash для каждой команды и каждой машины, и боролись бы со старой проблемой, когда проект собирается у одного разработчика, но не собирается у другого.
Gradle предоставляет нам единый источник достоверной информации, возможность воспроизводимых сборок и способ масштабирования одного и того же подхода к сборке от небольшого проекта до крупного многомодульного монорепозитория.
Давайте заглянем под капот, чтобы настройка сборки перестала быть проблемой.
Статья: https://habr.com/ru/articles/1058260/
Платформа: архитектура
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сегодня я хочу разобрать инструмент, который мы все используем десятки раз в день, но часто по-прежнему воспринимаем как «черный ящик».
Без этого мы бы до сих пор собирали проекты вручную, писали бы скрипты Bash для каждой команды и каждой машины, и боролись бы со старой проблемой, когда проект собирается у одного разработчика, но не собирается у другого.
Gradle предоставляет нам единый источник достоверной информации, возможность воспроизводимых сборок и способ масштабирования одного и того же подхода к сборке от небольшого проекта до крупного многомодульного монорепозитория.
Давайте заглянем под капот, чтобы настройка сборки перестала быть проблемой.
Статья: https://habr.com/ru/articles/1058260/
Платформа: архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
Cosmos Music Player - премиальный музыкальный плеер для iOS
Cosmos Music Player — это высококачественный музыкальный плеер, поддерживающий синхронизацию с iCloud Drive и локальное хранилище, что обеспечивает пользователям гибкость в управлении музыкой. Приложение разработано для экосистемы iOS и Apple с полной интеграцией с CarPlay.
Премиальный аудиофильский музыкальный плеер для iOS, поддерживающий форматы FLAC, WAV, M4A, MP3, Opus, OGG, DSD и DSF, с расширенными функциями, включая Apple CarPlay, воспроизведение DSD (преобразование DoP и PCM), двойное хранилище (iCloud/локальное), управление плейлистами, интеграцию информации об исполнителях, графический эквалайзер и многоязычную поддержку.
Cosmos Music Player на GitHub: https://github.com/clquwu/Cosmos-Music-Player
Платформа: iOS
⭐️: 113
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Cosmos Music Player — это высококачественный музыкальный плеер, поддерживающий синхронизацию с iCloud Drive и локальное хранилище, что обеспечивает пользователям гибкость в управлении музыкой. Приложение разработано для экосистемы iOS и Apple с полной интеграцией с CarPlay.
Премиальный аудиофильский музыкальный плеер для iOS, поддерживающий форматы FLAC, WAV, M4A, MP3, Opus, OGG, DSD и DSF, с расширенными функциями, включая Apple CarPlay, воспроизведение DSD (преобразование DoP и PCM), двойное хранилище (iCloud/локальное), управление плейлистами, интеграцию информации об исполнителях, графический эквалайзер и многоязычную поддержку.
Cosmos Music Player на GitHub: https://github.com/clquwu/Cosmos-Music-Player
Платформа: iOS
⭐️: 113
Please open Telegram to view this post
VIEW IN TELEGRAM
50 вопросов о System Design, ответы на которые должен знать каждый Senior iOS-разработчик: часть 2
Разработка сетевого слоя:
• Как бы вы спроектировали переиспользуемый сетевой слой?
• Как реализовать автоматическое обновление токена?
• Как повторять неудачные запросы к API?
• Как отменять запросы к API?
• Как предотвратить дублирующиеся запросы к API?
Статья: https://apptractor.ru/info/articles/50-voprosov-o-system-design-otvety-na-kotorye-dolzhen-znat-kazhdyy-senior-ios-razrabotchik-chast-2.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Разработка сетевого слоя:
• Как бы вы спроектировали переиспользуемый сетевой слой?
• Как реализовать автоматическое обновление токена?
• Как повторять неудачные запросы к API?
• Как отменять запросы к API?
• Как предотвратить дублирующиеся запросы к API?
Статья: https://apptractor.ru/info/articles/50-voprosov-o-system-design-otvety-na-kotorye-dolzhen-znat-kazhdyy-senior-ios-razrabotchik-chast-2.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Аутентификация через биометрию в Kotlin Multiplatform или Koncierge
Наконец-то неплохо продвинувшись в написании своего мультиплатформенного приложения Modern Money мне понадобилась аутентификация для Kotlin Multiplatform.
Хотелось иметь один API для PIN-кода и биометрии, а под капотом использовать Android Biometric Prompt, Windows Hello, Touch ID.
Так появился Koncierge — набор KMP-модулей
Казалось бы, задача довольно стандартная: объявить
Статья: https://habr.com/ru/articles/1059174/
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Наконец-то неплохо продвинувшись в написании своего мультиплатформенного приложения Modern Money мне понадобилась аутентификация для Kotlin Multiplatform.
Хотелось иметь один API для PIN-кода и биометрии, а под капотом использовать Android Biometric Prompt, Windows Hello, Touch ID.
Так появился Koncierge — набор KMP-модулей
biometric, auth и auth-compose.Казалось бы, задача довольно стандартная: объявить
expect-класс и написать несколько actual-реализаций. На Android это примерно так и получилось. А вот Windows Hello, JVM-модуль и публикация всех артефактов заставили немного разобраться в том, как Kotlin Multiplatform работает с нативным кодом.Статья: https://habr.com/ru/articles/1059174/
Платформа: кроссплатформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Container - повышения реактивности асинхронных операций/загрузки
Container — это библиотека для упрощения управления состоянием и загрузки данных в приложениях Android. Она предоставляет небольшой набор строительных блоков, охватывающих наиболее распространенные реактивные шаблоны: обертывание асинхронных результатов в типизированный статус, управление производным состоянием из нескольких потоков и ленивая загрузка данных по запросу.
Container на GitHub: https://github.com/romychab/container
Платформа: Android
⭐️: 15
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Container — это библиотека для упрощения управления состоянием и загрузки данных в приложениях Android. Она предоставляет небольшой набор строительных блоков, охватывающих наиболее распространенные реактивные шаблоны: обертывание асинхронных результатов в типизированный статус, управление производным состоянием из нескольких потоков и ленивая загрузка данных по запросу.
Container на GitHub: https://github.com/romychab/container
Платформа: Android
⭐️: 15
Please open Telegram to view this post
VIEW IN TELEGRAM
•
(iOS En) Permission Onboarding Animation•
(iOS En) SwiftUI Search Made Amazing: Suggestions, Scopes & Tokens•
(iOS En) Gooey Morphing Pull To Refresh Using SwiftUI•
(And En) My Best Practices For Showing Errors In an App - Building Successful Apps•
(And En) The Compose Styles API Is Everything I Wished For•
(And En) Talking to terminals (and how they talk back)•
(And En) Peeling back the Layers: A Navigation3 Deep Dive•
(And En) How I Learned to Stop Worrying and Love Value Semantics (in Kotlin)•
(And En) Local Lifetimes for Kotlin•
(And En) Metro Under the Hood•
(And En) When Flows Won't Cut It•
(And En) AI-Driven Performance Optimization - Kotzilla MCP•
(Crs En) React Native Full Stack Course – Clerk, Postgres, NativeWind•
(Dev Ru) Качество, архитектура и ответственность в эпоху ИИ-ассистентов•
(Dev Ru) Технический долг и архитектура•
(Dev Ru) Терминалы и оболочки — tty, bash, zsh•
(Dsg Ru) DesignOps на стероидах: автоматизация процессов в Figma•
(iOS Ru) Sideloading и узник Apple•
(iOS Ru) Как побеждать в конкурсах от Telegram•
(And Ru) Переходишь на Compose? Не спеши!•
(And Ru) Как работает ТВ в Android TV?•
(And Ru) Нужны ли Android-разработчики на заводе?•
(And Ru) Gradle DSL изнутри•
(And Ru) Kotlin DSL как единый источник правды для решения многих задачPlease open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Permission Onboarding Animation | Keyframes | Complex Animations | Xcode 27
Hello Guys 🖐🖐🖐
In this video, I’ll show you how to create an Animated Camera Permission Onboarding UI Animation using SwiftUI.
SwiftUI OnBoarding Animation | SwiftUI Onboarding UI | SwiftUI Permission Onboarding | SwiftUI Camera Permission OnBoarding | SwiftUI…
In this video, I’ll show you how to create an Animated Camera Permission Onboarding UI Animation using SwiftUI.
SwiftUI OnBoarding Animation | SwiftUI Onboarding UI | SwiftUI Permission Onboarding | SwiftUI Camera Permission OnBoarding | SwiftUI…
Экономим на СМС рассылках — сервис push-уведомлений для веб- и PWA-приложений
В этом материале поговорим о сервисе доставки push-уведомлений - решаемых задачах, архитектуре, реализации и достигаемом эффекте от внедрения.
Статья: https://habr.com/ru/articles/1059890/
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В этом материале поговорим о сервисе доставки push-уведомлений - решаемых задачах, архитектуре, реализации и достигаемом эффекте от внедрения.
Статья: https://habr.com/ru/articles/1059890/
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Performance Agent Skills - коллекция навыков для улучшения производительности iOS-приложений
Набор навыков для ИИ-агентов, предназначенных для анализа, диагностики и улучшения производительности iOS-приложений. Каждый навык находится в собственном каталоге верхнего уровня и устанавливается одной командой
Навыки - практические инструкции по оптимизации производительности для ИИ-агентов. Они разработаны для того, чтобы помочь агенту анализировать проблемы производительности iOS с помощью более структурированной модели мышления: что проверять, чего избегать, какие компромиссы важны и когда требуется измерение. Это набор многократно используемых руководящих файлов для анализа, рефакторинга и исследования кода с помощью ИИ.
iOS Performance Agent Skills на GitHub: https://github.com/Livsy90/iOS-Performance-Agent-Skills
Платформа: iOS
⭐️: 79
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Набор навыков для ИИ-агентов, предназначенных для анализа, диагностики и улучшения производительности iOS-приложений. Каждый навык находится в собственном каталоге верхнего уровня и устанавливается одной командой
npx или может быть скопирован вручную в другую конфигурацию агента.Навыки - практические инструкции по оптимизации производительности для ИИ-агентов. Они разработаны для того, чтобы помочь агенту анализировать проблемы производительности iOS с помощью более структурированной модели мышления: что проверять, чего избегать, какие компромиссы важны и когда требуется измерение. Это набор многократно используемых руководящих файлов для анализа, рефакторинга и исследования кода с помощью ИИ.
iOS Performance Agent Skills на GitHub: https://github.com/Livsy90/iOS-Performance-Agent-Skills
Платформа: iOS
⭐️: 79
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Я создал желеобразное FAB-меню для Jetpack Compose
JellyFab — необычное FAB-меню для Jetpack Compose, в котором центральная кнопка не просто открывает дополнительные действия, а растягивается и покачивается, словно желе. Эффект реализован без шейдеров: только
Главная идея — представить круг не готовой фигурой, а набором из 36 точек. При появлении пунктов меню ближайшие к ним точки смещаются наружу, причём сила смещения плавно уменьшается по гауссовой кривой. Затем точки соединяются кривыми Безье, а тень меняется вместе с деформацией кнопки. Хороший пример того, что выразительная UI-анимация необязательно требует сложных технологий — иногда достаточно правильно представить задачу и синхронизировать несколько простых эффектов.
Статья🇺🇸 : https://proandroiddev.com/i-built-a-jelly-like-fab-menu-for-jetpack-compose-42e9f65f6576
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
JellyFab — необычное FAB-меню для Jetpack Compose, в котором центральная кнопка не просто открывает дополнительные действия, а растягивается и покачивается, словно желе. Эффект реализован без шейдеров: только
Canvas, Animatable и немного геометрии. Вместо стандартного FloatingActionButton используется обычный кликабельный Box, под которым можно полностью самостоятельно отрисовывать и деформировать форму.Главная идея — представить круг не готовой фигурой, а набором из 36 точек. При появлении пунктов меню ближайшие к ним точки смещаются наружу, причём сила смещения плавно уменьшается по гауссовой кривой. Затем точки соединяются кривыми Безье, а тень меняется вместе с деформацией кнопки. Хороший пример того, что выразительная UI-анимация необязательно требует сложных технологий — иногда достаточно правильно представить задачу и синхронизировать несколько простых эффектов.
Статья
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
overlay-demo.gif
39.2 MB
Compose A11y Scanner - cканер доступности для Jetpack Compose
Compose A11y Scanner - рантайм сканер доступности, который отображает проблемы непосредственно в пользовательском интерфейсе Compose.
Compose A11y Scanner на GitHub: https://github.com/mohdaquib/ComposeA11yScanner
Платформа: Android
⭐️: 15
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Compose A11y Scanner - рантайм сканер доступности, который отображает проблемы непосредственно в пользовательском интерфейсе Compose.
:scanner-core отвечает за движок сканирования, модели, состояние результатов и контракт A11yRule. :scanner-rules содержит встроенные правила проверки. :scanner-ui читает дерево семантики Compose, извлекает цвета через ColorExtractor, запускает сканирование и рисует оверлеи с найденными проблемами поверх интерфейса приложения.Compose A11y Scanner на GitHub: https://github.com/mohdaquib/ComposeA11yScanner
Платформа: Android
⭐️: 15
Please open Telegram to view this post
VIEW IN TELEGRAM
DarkGram: как мы делаем power‑user Telegram‑клиент для iOS — и почему его нет в App Store
Мы небольшой командой развиваем DarkGram — неофициальный Telegram‑клиент для iOS на базе Swiftgram и Telegram‑iOS. Вдохновлялись мы прежде всего философией AyuGram: дать пользователю больше контроля над клиентом, приватностью и локальной историей. Но DarkGram не является попыткой буквально перенести AyuGram на iPhone. Проект постепенно развивается в самостоятельный клиент со своими функциями, интерфейсом и техническими решениями.
Статья: https://habr.com/ru/articles/1060956/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Мы небольшой командой развиваем DarkGram — неофициальный Telegram‑клиент для iOS на базе Swiftgram и Telegram‑iOS. Вдохновлялись мы прежде всего философией AyuGram: дать пользователю больше контроля над клиентом, приватностью и локальной историей. Но DarkGram не является попыткой буквально перенести AyuGram на iPhone. Проект постепенно развивается в самостоятельный клиент со своими функциями, интерфейсом и техническими решениями.
Статья: https://habr.com/ru/articles/1060956/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
🤮2
Отчеты пользователей с Diagnostics: более быстрое устранение ошибок с помощью ИИ
Diagnostics серьёзно меняет подход к поддержке пользователей внутри приложений. HTML-отчёт сразу отвечает на типичные вопросы и уменьшает количество лишней переписки.
Статья: https://apptractor.ru/info/articles/otchety-polzovateley-s-diagnostics-bolee-bystroe-ustranenie-oshibok-s-pomoschyu-ii.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Diagnostics серьёзно меняет подход к поддержке пользователей внутри приложений. HTML-отчёт сразу отвечает на типичные вопросы и уменьшает количество лишней переписки.
Статья: https://apptractor.ru/info/articles/otchety-polzovateley-s-diagnostics-bolee-bystroe-ustranenie-oshibok-s-pomoschyu-ii.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Simslim - уменьшение потребления памяти iOS-симулятором
Simslim позволяет запускать гораздо больше iOS-симуляторов на одном Mac, отключая фоновые процессы, которые симулятору не нужны.
Вновь запущенный iOS-симулятор запускает около 180 фоновых служб: Siri, индексирование Spotlight, анализ фотографий, новости, постановка обоев, синхронизация iCloud и так далее. Ничто из этого не имеет значения, когда вы используете симулятор для разработки, тестирования или CI. Simslim отключает эти службы, что сокращает объем памяти, потребляемой каждым симулятором, примерно в 4 раза.
Что вы теряете
Отключение служб подходит для большинства задач разработки, автоматизации UI и CI, но некоторые функции действительно перестают работать. Вот некоторые из них, о которых стоит знать:
• Spotlight и поиск в настройках ничего не выдают
• Для push-уведомлений нужен apsd, для тестирования StoreKit нужен storekitd
• Для универсальных ссылок нужен swcd
• Средство выбора контактов, фотографий и календаря может работать некорректно без категорий
Simslim на GitHub: https://github.com/MobAI-App/simslim
Платформа: iOS
⭐️: 98
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Simslim позволяет запускать гораздо больше iOS-симуляторов на одном Mac, отключая фоновые процессы, которые симулятору не нужны.
Вновь запущенный iOS-симулятор запускает около 180 фоновых служб: Siri, индексирование Spotlight, анализ фотографий, новости, постановка обоев, синхронизация iCloud и так далее. Ничто из этого не имеет значения, когда вы используете симулятор для разработки, тестирования или CI. Simslim отключает эти службы, что сокращает объем памяти, потребляемой каждым симулятором, примерно в 4 раза.
Что вы теряете
Отключение служб подходит для большинства задач разработки, автоматизации UI и CI, но некоторые функции действительно перестают работать. Вот некоторые из них, о которых стоит знать:
• Spotlight и поиск в настройках ничего не выдают
• Для push-уведомлений нужен apsd, для тестирования StoreKit нужен storekitd
• Для универсальных ссылок нужен swcd
• Средство выбора контактов, фотографий и календаря может работать некорректно без категорий
simslim profiles отображает все категории, поэтому вы можете сохранить категорию с помощью --except или отдельные демоны с помощью --keep.Simslim на GitHub: https://github.com/MobAI-App/simslim
Платформа: iOS
⭐️: 98
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Интеллектуальные приложения для Android: введение в Jetpacker
В этой серии публикаций Google поможет пройти через все эти варианты выбора. Мы начнём с базового мобильного приложения и постепенно превратим его в персонализированный, интеллектуальный и агентный пользовательский опыт.
Статья: https://apptractor.ru/info/articles/vvedenie-v-jetpacker.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В этой серии публикаций Google поможет пройти через все эти варианты выбора. Мы начнём с базового мобильного приложения и постепенно превратим его в персонализированный, интеллектуальный и агентный пользовательский опыт.
Статья: https://apptractor.ru/info/articles/vvedenie-v-jetpacker.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Как Netflix справляется с 260 миллионами одновременных потоков без буферизации
Несколько недель назад у меня Wi-Fi просел прямо посреди серии. Картинка стала мыльной примерно на десять секунд, а затем тихо снова стала чёткой. Без индикатора загрузки. Без остановки.
Этот маленький момент находится в конце длинной цепочки, и почти ни одна её часть не запускается в тот момент, когда вы нажимаете Play. В начале 2024 года Netflix превысил отметку в 260 миллионов домохозяйств с подпиской, а с тех пор вырос уже более чем до 300 миллионов. В один вечер ноября 2024 года 65 миллионов потоков одновременно смотрели один боксёрский матч.
То, как Netflix справляется с такой нагрузкой в 2026 году, в основном решается за часы до того, как запрос вообще покидает ваш дом. В этом вся суть, и это изменило мой взгляд на кэширование. Давайте разберёмся.
Статья: https://apptractor.ru/info/articles/kak-netflix-spravlyaetsya-s-260-millionami-odnovremennyh-potokov-bez-buferizatsii.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Несколько недель назад у меня Wi-Fi просел прямо посреди серии. Картинка стала мыльной примерно на десять секунд, а затем тихо снова стала чёткой. Без индикатора загрузки. Без остановки.
Этот маленький момент находится в конце длинной цепочки, и почти ни одна её часть не запускается в тот момент, когда вы нажимаете Play. В начале 2024 года Netflix превысил отметку в 260 миллионов домохозяйств с подпиской, а с тех пор вырос уже более чем до 300 миллионов. В один вечер ноября 2024 года 65 миллионов потоков одновременно смотрели один боксёрский матч.
То, как Netflix справляется с такой нагрузкой в 2026 году, в основном решается за часы до того, как запрос вообще покидает ваш дом. В этом вся суть, и это изменило мой взгляд на кэширование. Давайте разберёмся.
Статья: https://apptractor.ru/info/articles/kak-netflix-spravlyaetsya-s-260-millionami-odnovremennyh-potokov-bez-buferizatsii.html
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
AI-centric архитектура Flutter-приложения (и не только) для небольших стартапов
Мысли о масштабируемой архитектуре приложений через кодовую структуру и философии «developer as a user»; подходит для indie-разработчиков и стартапов на ранних стадиях.
Хотя статья была написана в начале 25 года, за исключением некоторых вещей на мой взгляд, архитектурные паттерны не потеряли актуальности, и поэтому, многие паттерну все ещё также актуальны и это то, что использую на практике.
В этой статье я хотел бы поделиться своими мыслями о том, как структурировать код и использовать различные подходы на разных этапах роста продукта.
Статья: https://habr.com/ru/articles/1061508/
Платформа: архитектура
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Мысли о масштабируемой архитектуре приложений через кодовую структуру и философии «developer as a user»; подходит для indie-разработчиков и стартапов на ранних стадиях.
Хотя статья была написана в начале 25 года, за исключением некоторых вещей на мой взгляд, архитектурные паттерны не потеряли актуальности, и поэтому, многие паттерну все ещё также актуальны и это то, что использую на практике.
В этой статье я хотел бы поделиться своими мыслями о том, как структурировать код и использовать различные подходы на разных этапах роста продукта.
Статья: https://habr.com/ru/articles/1061508/
Платформа: архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
Разработка системы автоматической синхронизации фотографий: Android System Design
Представьте: вы проходите собеседование на позицию Staff Android Engineer, и интервьюер наклоняется вперёд и говорит:
«Расскажите, как бы вы спроектировали систему автоматической синхронизации, похожую на Google Photos. Меня интересует всё: обнаружение новых фотографий, загрузка, работа без сети, влияние на батарею и серверная часть».
Это один из лучших вопросов по системному дизайну для Staff Android Engineer, потому что он затрагивает каждый уровень системы. Здесь недостаточно просто написать фоновый сервис — нужно одновременно учитывать постоянно меняющиеся ограничения Android, надёжность распределённых систем, особенности энергопотребления и доверие пользователей.
В этой статье я приведу ответ, который дал бы сам. Разберём систему уровень за уровнем.
Статья: https://apptractor.ru/info/articles/razrabotka-sistemy-avtomaticheskoy-sinhronizatsii-fotografiy-android-system-design.html
Платформа: Android/архитектура
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Представьте: вы проходите собеседование на позицию Staff Android Engineer, и интервьюер наклоняется вперёд и говорит:
«Расскажите, как бы вы спроектировали систему автоматической синхронизации, похожую на Google Photos. Меня интересует всё: обнаружение новых фотографий, загрузка, работа без сети, влияние на батарею и серверная часть».
Это один из лучших вопросов по системному дизайну для Staff Android Engineer, потому что он затрагивает каждый уровень системы. Здесь недостаточно просто написать фоновый сервис — нужно одновременно учитывать постоянно меняющиеся ограничения Android, надёжность распределённых систем, особенности энергопотребления и доверие пользователей.
В этой статье я приведу ответ, который дал бы сам. Разберём систему уровень за уровнем.
Статья: https://apptractor.ru/info/articles/razrabotka-sistemy-avtomaticheskoy-sinhronizatsii-fotografiy-android-system-design.html
Платформа: Android/архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Serve-avd - трансляция Android-эмулятора в веб
Serve-avd транслирует Android Emulator на веб-страницу. Он захватывает экран эмулятора через
Фичи:
• Плавный видеопоток H.264 в браузере (WebCodecs) с мгновенной отрисовкой при подключении — без ожидания следующего кадра
• Полное взаимодействие: касание, перетаскивание и перемещение мышью, прокрутка колесиком
• Навигация Android из браузера: Назад, Домой, Недавние, питание, громкость, переключение тем, скриншот
• Переадресация клавиатуры — ввод текста непосредственно в эмулятор, клавиша Escape — «Назад», ⌘⇧H — «Домой»
• logcat перенаправляется в браузер (и отображается в консоли браузера для чтения инструментами MCP, используемыми в браузере)
• Недавние действия доступны на панели инструментов браузера и в журнале событий serve-avd
• Вывод иерархии пользовательского интерфейса для агентов: serve-avd ax (uiautomator → JSON)
• Несколько эмуляторов одновременно — загрузка и подключение AVD прямо с панели «Устройства»
• Работает в headless режиме через тот же HTTP API, если браузер не подключен
Размещенные эмуляторы сложно тестировать. serve-avd позволяет сначала протестировать размещенную инфраструктуру локально для более быстрой итерации. Когда вы будете готовы разместить эмулятор удаленно, просто туннелируйте обслуживаемый URL-адрес, и пользователи смогут взаимодействовать с эмулятором, как если бы он работал локально на их устройстве. Это также отличный способ передать эмулятор агенту ИИ: всё управляется по протоколу HTTP + WebSocket, скриншоты и дампы пользовательского интерфейса создаются одной командой, а журнал событий показывает, что сделал агент.
Serve-avd на GitHub: https://github.com/hsandhu/serve-avd
Платформа: Android
⭐️: 4
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Serve-avd транслирует Android Emulator на веб-страницу. Он захватывает экран эмулятора через
adb screenrecord, предоставляет его в виде потока H.264 WebCodecs (с резервным вариантом MJPEG) плюс канал управления WebSocket и отображает в браузере. Он работает с любым запущенным эмулятором Android (и большинством физических устройств через adb) — без root-прав, без плагинов, без инструментов в вашем приложении.Фичи:
• Плавный видеопоток H.264 в браузере (WebCodecs) с мгновенной отрисовкой при подключении — без ожидания следующего кадра
• Полное взаимодействие: касание, перетаскивание и перемещение мышью, прокрутка колесиком
• Навигация Android из браузера: Назад, Домой, Недавние, питание, громкость, переключение тем, скриншот
• Переадресация клавиатуры — ввод текста непосредственно в эмулятор, клавиша Escape — «Назад», ⌘⇧H — «Домой»
• logcat перенаправляется в браузер (и отображается в консоли браузера для чтения инструментами MCP, используемыми в браузере)
• Недавние действия доступны на панели инструментов браузера и в журнале событий serve-avd
• Вывод иерархии пользовательского интерфейса для агентов: serve-avd ax (uiautomator → JSON)
• Несколько эмуляторов одновременно — загрузка и подключение AVD прямо с панели «Устройства»
• Работает в headless режиме через тот же HTTP API, если браузер не подключен
Размещенные эмуляторы сложно тестировать. serve-avd позволяет сначала протестировать размещенную инфраструктуру локально для более быстрой итерации. Когда вы будете готовы разместить эмулятор удаленно, просто туннелируйте обслуживаемый URL-адрес, и пользователи смогут взаимодействовать с эмулятором, как если бы он работал локально на их устройстве. Это также отличный способ передать эмулятор агенту ИИ: всё управляется по протоколу HTTP + WebSocket, скриншоты и дампы пользовательского интерфейса создаются одной командой, а журнал событий показывает, что сделал агент.
Serve-avd на GitHub: https://github.com/hsandhu/serve-avd
Платформа: Android
⭐️: 4
Please open Telegram to view this post
VIEW IN TELEGRAM
50 вопросов о System Design, ответы на которые должен знать каждый Senior iOS-разработчик: часть 3
Вопрос 11. Когда вы бы использовали Core Data?
Вопрос 12. Когда вы бы выбрали SQLite вместо Core Data?
Вопрос 13. Как спроектировать Offline First iOS-приложение?
Вопрос 14. Как синхронизировать локальные и серверные данные?
Вопрос 15. Как разрешать конфликты синхронизации?
Первая часть, про архитектуру приложения. Вторая про сетевой слой.
Статья: https://apptractor.ru/info/articles/50-voprosov-o-system-design-otvety-na-kotorye-dolzhen-znat-kazhdyy-senior-ios-razrabotchik-chast-3.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Вопрос 11. Когда вы бы использовали Core Data?
Вопрос 12. Когда вы бы выбрали SQLite вместо Core Data?
Вопрос 13. Как спроектировать Offline First iOS-приложение?
Вопрос 14. Как синхронизировать локальные и серверные данные?
Вопрос 15. Как разрешать конфликты синхронизации?
Первая часть, про архитектуру приложения. Вторая про сетевой слой.
Статья: https://apptractor.ru/info/articles/50-voprosov-o-system-design-otvety-na-kotorye-dolzhen-znat-kazhdyy-senior-ios-razrabotchik-chast-3.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Как Apple в iOS 27 удалось сократить время запуска на 30%
Каждые несколько лет Apple выводит системных инженеров из спячки, чтобы они немного улучшили динамический компоновщик, планирование процессора или предварительную загрузку данных.
В результате компании удаётся выжать из времени запуска очередное двукратное ускорение, постепенно уменьшающиеся до 1,3 раза или, что более вероятно, зафиксированные мной 1,2 раза.
Это хорошо. Однако ответственность за архитектуру критического пути запуска по-прежнему лежит на разработчике.
Статья: https://apptractor.ru/info/articles/kak-apple-v-ios-27-udalos-sokratit-vremya-zapuska-na-30.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Каждые несколько лет Apple выводит системных инженеров из спячки, чтобы они немного улучшили динамический компоновщик, планирование процессора или предварительную загрузку данных.
В результате компании удаётся выжать из времени запуска очередное двукратное ускорение, постепенно уменьшающиеся до 1,3 раза или, что более вероятно, зафиксированные мной 1,2 раза.
Это хорошо. Однако ответственность за архитектуру критического пути запуска по-прежнему лежит на разработчике.
Статья: https://apptractor.ru/info/articles/kak-apple-v-ios-27-udalos-sokratit-vremya-zapuska-na-30.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM