Как 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
This media is not supported in your browser
VIEW IN TELEGRAM
LNPopupController - всплывающие окна поверх других контроллеров представлений
LNPopupController — это фреймворк для отображения контроллеров представлений в виде всплывающих окон для других контроллеров представлений, аналогично мини-плеерам Apple Music и Podcasts.
Фреймворк спроектирован как универсальное решение, подходящее для большинства сценариев, поэтому он реализован в виде категории для
Для
Фичи:
• Поддержка стеклянного дизайна iOS 26 с сохранением подходящего внешнего вида на предыдущих версиях iOS.
• Поддержка iOS 13 и новее.
• Распространение в виде Swift Package Manager-пакета для проектов на Swift и Objective-C.
• Корректная интеграция с современным UIKit.
• Есть реализация SwiftUI
LNPopupController на GitHub: https://github.com/LeoNatan/LNPopupController
Платформа: iOS
⭐️: 3.1K
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
LNPopupController — это фреймворк для отображения контроллеров представлений в виде всплывающих окон для других контроллеров представлений, аналогично мини-плеерам Apple Music и Podcasts.
Фреймворк спроектирован как универсальное решение, подходящее для большинства сценариев, поэтому он реализован в виде категории для
UIViewController. Каждый контроллер представления может отображать всплывающую панель, закреплённую относительно нижнего элемента интерфейса.Для
UITabBarController и его подклассов панель по умолчанию закрепляется над панелью вкладок. Для UINavigationController и его подклассов — над панелью инструментов. В остальных контроллерах всплывающая панель отображается в нижней части экрана. Подклассы контроллеров представления также могут предоставлять собственные элементы для закрепления панели.Фичи:
• Поддержка стеклянного дизайна iOS 26 с сохранением подходящего внешнего вида на предыдущих версиях iOS.
• Поддержка iOS 13 и новее.
• Распространение в виде Swift Package Manager-пакета для проектов на Swift и Objective-C.
• Корректная интеграция с современным UIKit.
• Есть реализация SwiftUI
LNPopupController на GitHub: https://github.com/LeoNatan/LNPopupController
Платформа: iOS
⭐️: 3.1K
Please open Telegram to view this post
VIEW IN TELEGRAM
•
(iOS En) Complex UI: Recreating iOS Lock Screen UI Animations Using SwiftUI•
(iOS En) SwiftUI Network Reachability with NWPathMonitor and Observation•
(iOS En) Elastic Custom Segmented Control - SwiftUI•
(And En) Android XR fireside talk: Building the future of spatial experiences•
(And En) Beginner's Guide to Analytics Logging on Android With Firebase Analytics•
(And En) Tiny Models, Big Impact: On-Device AI for Real Apps •
(And En) The State of Amper•
(And En) Run, Kotlin, Run!•
(Crs En) How You Get the REAL Liquid Glass Effect In Compose Multiplatform•
(Crs En) Full-Stack Kotlin AI: Powering Compose Multiplatform apps with Koog & MCP•
(Crs En) What Nobody Told Us About Shipping Kotlin to iOS•
(Dev Ru) Spec-Driven Development: теория, инструменты, практика•
(Dev Ru) Как за три дня собрать прототип продукта и сократить месяцы согласований•
(Dev Ru) Зачем учить Kotlin, если есть ИИ?•
(Dev Ru) Spec-Driven Development на практике — SDD, BMAD, OpenSpec, вайб кодинг•
(iOS Ru) Инструменты для мониторинга производительности iOS-приложений•
(iOS Ru) Разбор SwiftUI проекта стартапа с AI на борту•
(iOS Ru) Вам не нужно хранилище в приложении•
(And Ru) Navigation 3 для Compose: что нового и зачем это нужно?•
(And Ru) Роман Елизаров про Kotlin, корутины и работу в JetbrainsPlease open Telegram to view this post
VIEW IN TELEGRAM
Измеряя незримое: что и как измерять в мобильной разработке
Этой статьёй я открываю цикл материалов, в которых будут собраны мысли, советы и инструкции о том, как сделать приложение и процессы его разработки измеримыми, как находить «узкие места», диагностировать проблемы и причины их возникновения, а также фиксировать их наличие. Минимум кода, сложных терминов и «rocket science» — только практический опыт и наработки по различным метрикам.
Эта тема далеко не новая, и многие моменты могут показаться очевидными. Однако, чтобы разобраться в нюансах, необходимо начать с базы. Вовсе не обязательно делать именно так. Буду рад узнать, как вы работаете с теми или иными метриками.
Статья: https://habr.com/ru/companies/domclick/articles/1059144/
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Этой статьёй я открываю цикл материалов, в которых будут собраны мысли, советы и инструкции о том, как сделать приложение и процессы его разработки измеримыми, как находить «узкие места», диагностировать проблемы и причины их возникновения, а также фиксировать их наличие. Минимум кода, сложных терминов и «rocket science» — только практический опыт и наработки по различным метрикам.
Эта тема далеко не новая, и многие моменты могут показаться очевидными. Однако, чтобы разобраться в нюансах, необходимо начать с базы. Вовсе не обязательно делать именно так. Буду рад узнать, как вы работаете с теми или иными метриками.
Статья: https://habr.com/ru/companies/domclick/articles/1059144/
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Flighty KMP - UI для трекера полетов
Flighty KMP - трекер полетов в стиле Flighty, созданный с помощью Compose Multiplatform, ориентирован на Android, iOS, десктопы (JVM) и веб-версии (Kotlin/Wasm) из единой кодовой базы. Все данные имитируются — замороженный снепшот "Пн, 20 июля" с одним рейсом в воздухе.
Есть демонстрация: luca992.github.io/flighty-cmp — веб-версия (Kotlin/Wasm), которая загружается прямо из папки docs/ этого репозитория через GitHub Pages (
Автор пишет, что это приложение было создано практически полностью агентом с минимальным контролем со стороны разработчиков. Он не одобряет создание приложений таким способом, не проверял код и не советует его использовать. Это всего лишь демонстрация концепции, показывающая, что можно создавать нативные многоплатформенные приложения так же быстро, а может быть, даже быстрее, на Kotlin.
Flighty KMP на GitHub: https://github.com/luca992/flighty-cmp
Платформа: Android/кроссплатформа
⭐️: 20
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Flighty KMP - трекер полетов в стиле Flighty, созданный с помощью Compose Multiplatform, ориентирован на Android, iOS, десктопы (JVM) и веб-версии (Kotlin/Wasm) из единой кодовой базы. Все данные имитируются — замороженный снепшот "Пн, 20 июля" с одним рейсом в воздухе.
Есть демонстрация: luca992.github.io/flighty-cmp — веб-версия (Kotlin/Wasm), которая загружается прямо из папки docs/ этого репозитория через GitHub Pages (
scripts/publish-web.sh генерирует её заново).Автор пишет, что это приложение было создано практически полностью агентом с минимальным контролем со стороны разработчиков. Он не одобряет создание приложений таким способом, не проверял код и не советует его использовать. Это всего лишь демонстрация концепции, показывающая, что можно создавать нативные многоплатформенные приложения так же быстро, а может быть, даже быстрее, на Kotlin.
Flighty KMP на GitHub: https://github.com/luca992/flighty-cmp
Платформа: Android/кроссплатформа
⭐️: 20
Please open Telegram to view this post
VIEW IN TELEGRAM
Как стать 10x-разработчиком с помощью проговаривания мыслей
Андрей Карпати недавно написал в X о своём новом любимом способе работы с LLM — «хорошей длинной сессии бесцельного проговаривания мыслей», как он сам это назвал.
Мы с моим кофаундером занимаемся этим уже несколько месяцев. По сравнению с обычным текстовым вайб-кодингом это настолько большой шаг вперёд, что я уже не помню, когда в последний раз использовал клавиатуру, чтобы написать промпт агенту. На нас тревожно смотрели люди за соседними столиками в кофейнях. Соседи закрывали окна, пытаясь уснуть, пока мы в час ночи вслух излагали свои мысли Codex. Было и множество других неловких ситуаций, о которых мне лучше не вспоминать.
Но дело в том, что это чертовски хорошо работает. Мы просто не можем остановиться.
Сначала я постараюсь объяснить, почему считаю такой подход будущим взаимодействия с агентами. Затем поделюсь несколькими советами, которые помогут получить максимум пользы от подобных монологов. Прошу только об одном: попробуйте. Обещаю, возвращаться к прежнему способу вам уже не захочется.
Статья: https://apptractor.ru/info/articles/10x-ramble-coder.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Андрей Карпати недавно написал в X о своём новом любимом способе работы с LLM — «хорошей длинной сессии бесцельного проговаривания мыслей», как он сам это назвал.
Мы с моим кофаундером занимаемся этим уже несколько месяцев. По сравнению с обычным текстовым вайб-кодингом это настолько большой шаг вперёд, что я уже не помню, когда в последний раз использовал клавиатуру, чтобы написать промпт агенту. На нас тревожно смотрели люди за соседними столиками в кофейнях. Соседи закрывали окна, пытаясь уснуть, пока мы в час ночи вслух излагали свои мысли Codex. Было и множество других неловких ситуаций, о которых мне лучше не вспоминать.
Но дело в том, что это чертовски хорошо работает. Мы просто не можем остановиться.
Сначала я постараюсь объяснить, почему считаю такой подход будущим взаимодействия с агентами. Затем поделюсь несколькими советами, которые помогут получить максимум пользы от подобных монологов. Прошу только об одном: попробуйте. Обещаю, возвращаться к прежнему способу вам уже не захочется.
Статья: https://apptractor.ru/info/articles/10x-ramble-coder.html
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Flare - фреймворк для работы с IAP
Flare — это современный и легковесный фреймворк на Swift, упрощающий работу со встроенными покупками и подписками. Построенный на базе StoreKit и StoreKit 2, он предоставляет чистый унифицированный API с поддержкой async/await и включает готовые UI-компоненты для бесшовной интеграции на всех платформах Apple.
Фичи:
• Полная поддержка покупок — расходуемые (consumable) и нерасходуемые (non-consumable) товары, а также подписки
• Промоакции — поддержка промо-предложений и вводных (introductory) предложений
• Современный Swift — использование async/await для чистого и читабельного кода
• StoreKit 1 и 2 — унифицированный API, поддерживающий обе версии StoreKit
• UI-компоненты — готовые представления на SwiftUI и UIKit для отображения продуктов
• Кроссплатформенность — совместимость с iOS, tvOS, watchOS, macOS и visionOS
• Тщательное тестирование — полное покрытие модульными (unit), интеграционными и snapshot-тестами
Flare на GitHub: https://github.com/space-code/flare
Платформа: iOS
⭐️: 68
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Flare — это современный и легковесный фреймворк на Swift, упрощающий работу со встроенными покупками и подписками. Построенный на базе StoreKit и StoreKit 2, он предоставляет чистый унифицированный API с поддержкой async/await и включает готовые UI-компоненты для бесшовной интеграции на всех платформах Apple.
Фичи:
• Полная поддержка покупок — расходуемые (consumable) и нерасходуемые (non-consumable) товары, а также подписки
• Промоакции — поддержка промо-предложений и вводных (introductory) предложений
• Современный Swift — использование async/await для чистого и читабельного кода
• StoreKit 1 и 2 — унифицированный API, поддерживающий обе версии StoreKit
• UI-компоненты — готовые представления на SwiftUI и UIKit для отображения продуктов
• Кроссплатформенность — совместимость с iOS, tvOS, watchOS, macOS и visionOS
• Тщательное тестирование — полное покрытие модульными (unit), интеграционными и snapshot-тестами
Flare на GitHub: https://github.com/space-code/flare
Платформа: iOS
⭐️: 68
Please open Telegram to view this post
VIEW IN TELEGRAM
Как R8 в два раза ускорил работу корутин Kotlin на Android
Когда команда Compose начала исследовать производительность, выяснилось, что корутины являются узким местом для многих операций, выполняемых вне композиции. Например, 80% времени, затрачиваемого на создание и обновление
Статья: https://apptractor.ru/info/articles/kak-r8-v-dva-raza-uskoril-rabotu-korutin-kotlin-na-android.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Когда команда Compose начала исследовать производительность, выяснилось, что корутины являются узким местом для многих операций, выполняемых вне композиции. Например, 80% времени, затрачиваемого на создание и обновление
Modifier.clickable, уходило на запуск и отмену внутренних корутин, обрабатывающих обновления InteractionSource. На основании этих наблюдений значительная часть первых работ по оптимизации была направлена на исключение корутин из стандартного пути выполнения и откладывание инициализации до момента, когда она действительно понадобится.Статья: https://apptractor.ru/info/articles/kak-r8-v-dva-raza-uskoril-rabotu-korutin-kotlin-na-android.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
TextKit - rich text редактор для Compose Multiplatform
TextKit — это редактор форматированного текста с поддержкой таблиц и верстки, предназначенный для многоплатформенной работы с Compose (Android, iOS, Desktop/JVM и Web — Wasm и JS). В комплект входят контейнер состояния
В отличие от редакторов, которые обрабатывают HTML или Markdown, TextKit сохраняет структурированный JSON-документ (тип: "doc" → блочные узлы → встроенные блоки с метками), поэтому стили, списки, ссылки и встроенные токены (упоминания, хэштеги) сохраняются в течение всего цикла загрузки → редактирования → экспорта. Когда вам нужно поделиться контентом, функции toHtml() и toMarkdown() генерируют эти форматы по запросу.
TextKit на GitHub: https://github.com/jjrodcast/TextKit
Платформа: Android/кроссплатформа
⭐️: 60
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
TextKit — это редактор форматированного текста с поддержкой таблиц и верстки, предназначенный для многоплатформенной работы с Compose (Android, iOS, Desktop/JVM и Web — Wasm и JS). В комплект входят контейнер состояния
TextKitState, готовые композабл редактора, панель форматирования, всплывающие окна для ссылок, выравнивание абзацев по левому краю, по центру, по правому краю и по ширине, а также универсальная система триггеров для упоминаний, хэштегов и команд через косую черту. TextKit также поддерживает встроенные блоки: изображения и другое содержимое, которое нельзя отрисовать напрямую, отображаются как кликабельные заполнители, а таблицы остаются полностью редактируемыми. Кроме того, движок предоставляет полноценную отмену и повтор действий с объединением последовательных операций, сериализацию и десериализацию без потери данных в документ JSON, похожий по структуре на формат ProseMirror, а также экспорт в HTML и Markdown в варианте GitHub.В отличие от редакторов, которые обрабатывают HTML или Markdown, TextKit сохраняет структурированный JSON-документ (тип: "doc" → блочные узлы → встроенные блоки с метками), поэтому стили, списки, ссылки и встроенные токены (упоминания, хэштеги) сохраняются в течение всего цикла загрузки → редактирования → экспорта. Когда вам нужно поделиться контентом, функции toHtml() и toMarkdown() генерируют эти форматы по запросу.
TextKit на GitHub: https://github.com/jjrodcast/TextKit
Платформа: Android/кроссплатформа
⭐️: 60
Please open Telegram to view this post
VIEW IN TELEGRAM
Публикуем iOS‑приложение без Мака и без Visa: пошаговый разбор
Собрать и опубликовать iOS-приложение без macOS нельзя — точка. Xcode, подпись, нотарификация, выгрузка в App Store Connect — всё это живёт только на маке. Флаттерщики и React Native-разработчики упираются в это на последнем шаге: код пишется где угодно, а
Для разработчика из РФ/СНГ к этому добавляются два специфических барьера:
Железо. Apple официально ушла, Mac — параллельный импорт. Гарантии Apple нет (гарантию обязан обеспечить продавец по закону о защите прав потребителей), цены зависят от того, где смотреть — подробнее в варианте 1.
Оплата. Российские карты не работают в зарубежных сервисах. MacStadium, MacinCloud, Codemagic, да и сам Apple Developer Program ($99/год) — всё требует работающую международную карту.
Разберём варианты по-честному, с ценами.
Статья: https://habr.com/ru/articles/1064144/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Собрать и опубликовать iOS-приложение без macOS нельзя — точка. Xcode, подпись, нотарификация, выгрузка в App Store Connect — всё это живёт только на маке. Флаттерщики и React Native-разработчики упираются в это на последнем шаге: код пишется где угодно, а
.ipa собирается только на технике Apple.Для разработчика из РФ/СНГ к этому добавляются два специфических барьера:
Железо. Apple официально ушла, Mac — параллельный импорт. Гарантии Apple нет (гарантию обязан обеспечить продавец по закону о защите прав потребителей), цены зависят от того, где смотреть — подробнее в варианте 1.
Оплата. Российские карты не работают в зарубежных сервисах. MacStadium, MacinCloud, Codemagic, да и сам Apple Developer Program ($99/год) — всё требует работающую международную карту.
Разберём варианты по-честному, с ценами.
Статья: https://habr.com/ru/articles/1064144/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
50 вопросов о System Design, ответы на которые должен знать каждый Senior iOS-разработчик: часть 4
Первая часть, про архитектуру приложения. Вторая про сетевой слой. Третья — локальное хранилище и Offline-First архитектура.
Производительность — один из самых простых критериев, по которым пользователи оценивают качество приложения.
Они могут не знать, какую архитектуру вы используете и соответствует ли ваш код принципам SOLID, но сразу заметят, если приложение долго запускается, дёргается при прокрутке, потребляет слишком много памяти или быстро разряжает аккумулятор.
Именно поэтому оптимизация производительности — одна из любимых тем на собеседованиях senior iOS-разработчиков.
Интервьюеры не ожидают, что вы выучите Instruments наизусть или дословно перескажете документацию Apple. Им нужны инженеры, способные находить узкие места, правильно расставлять приоритеты при оптимизации и принимать обоснованные компромиссные решения на основе реальных производственных сценариев.
В этой статье мы рассмотрим пять вопросов, которые часто встречаются на собеседованиях по архитектуре и системному проектированию iOS-приложений.
Статья: https://apptractor.ru/info/articles/50-voprosov-o-system-design-otvety-na-kotorye-dolzhen-znat-kazhdyy-senior-ios-razrabotchik-chast-4.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Первая часть, про архитектуру приложения. Вторая про сетевой слой. Третья — локальное хранилище и Offline-First архитектура.
Производительность — один из самых простых критериев, по которым пользователи оценивают качество приложения.
Они могут не знать, какую архитектуру вы используете и соответствует ли ваш код принципам SOLID, но сразу заметят, если приложение долго запускается, дёргается при прокрутке, потребляет слишком много памяти или быстро разряжает аккумулятор.
Именно поэтому оптимизация производительности — одна из любимых тем на собеседованиях senior iOS-разработчиков.
Интервьюеры не ожидают, что вы выучите Instruments наизусть или дословно перескажете документацию Apple. Им нужны инженеры, способные находить узкие места, правильно расставлять приоритеты при оптимизации и принимать обоснованные компромиссные решения на основе реальных производственных сценариев.
В этой статье мы рассмотрим пять вопросов, которые часто встречаются на собеседованиях по архитектуре и системному проектированию iOS-приложений.
Статья: https://apptractor.ru/info/articles/50-voprosov-o-system-design-otvety-na-kotorye-dolzhen-znat-kazhdyy-senior-ios-razrabotchik-chast-4.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Как DoorDash, Instacart и Uber Eats интегрировали LLM в поисковую выдачу тремя разными способами
За последние несколько лет три крупнейшие компании по доставке еды перестроили свои поисковые системы вокруг больших языковых моделей. DoorDash, Instacart и Uber Eats решали одну и ту же задачу: пытались понять намерение пользователя, когда он вводит запрос в строку поиска. Они также опирались примерно на одну и ту же исследовательскую базу. И всё же архитектуры, которые они внедрили, заметно отличаются друг от друга.
Это расхождение — один из самых интересных аспектов современной разработки с применением больших языковых моделей. Поняв, почему каждая компания пришла именно к своему решению, мы получим полезную модель мышления для интеграции искусственного интеллекта в любые производственные системы.
Статья: https://apptractor.ru/info/articles/kak-doordash-instacart-i-uber-eats-integrirovali-llm-v-poiskovuyu-vydachu-tremya-raznymi-sposobami.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
За последние несколько лет три крупнейшие компании по доставке еды перестроили свои поисковые системы вокруг больших языковых моделей. DoorDash, Instacart и Uber Eats решали одну и ту же задачу: пытались понять намерение пользователя, когда он вводит запрос в строку поиска. Они также опирались примерно на одну и ту же исследовательскую базу. И всё же архитектуры, которые они внедрили, заметно отличаются друг от друга.
Это расхождение — один из самых интересных аспектов современной разработки с применением больших языковых моделей. Поняв, почему каждая компания пришла именно к своему решению, мы получим полезную модель мышления для интеграции искусственного интеллекта в любые производственные системы.
Статья: https://apptractor.ru/info/articles/kak-doordash-instacart-i-uber-eats-integrirovali-llm-v-poiskovuyu-vydachu-tremya-raznymi-sposobami.html
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
xclocSmith - линтер и редактор Xcode String Catalogs
xclocSmith - линтер и редактор для каталога строк локализации Xcode. Он находит все проблемы с переводами, редактирует файлы .xcstrings, не разрушая структуру и данные, добавленные Xcode, и замыкает весь процесс: передаёт ИИ-модели точный список недостающих переводов, а затем проверяет полученный результат. Инструмент занимается только локализацией Xcode и ничем больше.
xclocSmith на GitHub: https://github.com/asutekku/xclocsmith
Платформа: iOS
⭐️: 1
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
xclocSmith - линтер и редактор для каталога строк локализации Xcode. Он находит все проблемы с переводами, редактирует файлы .xcstrings, не разрушая структуру и данные, добавленные Xcode, и замыкает весь процесс: передаёт ИИ-модели точный список недостающих переводов, а затем проверяет полученный результат. Инструмент занимается только локализацией Xcode и ничем больше.
xclocSmith на GitHub: https://github.com/asutekku/xclocsmith
Платформа: iOS
⭐️: 1
Please open Telegram to view this post
VIEW IN TELEGRAM
•
(iOS En) X App's New Scrollable Tabbar Using SwiftUI•
(iOS En) Instagram App's Minimizable Tab Bar Using SwiftUI•
(And Ru) Code Review эталонного Android приложения с AI фичами от Google•
(And En) •
(And En) •
(And En) 10 Behavioral Tips That Make You CRUSH Your Next Android Interview•
(And En) Moments When Things Go Wrong•
(And En) Breaking Frozen Frames: Phased Rendering for Feature Rich UIs•
(And En) Opinionated Ktor Services•
(And En) Kotlin as a Safety Net Type Driven Reliability in the Finance Industry•
(And En) Setting Kotlin Free with Native Tooling•
(And En) 10 Gradle Best Practices Every Kotlin Developer Should Know•
(And En) The 3 Jetpack Compose Phases Every Developer Should Understand•
(Crs En) Why I'm Not Much Using Compose Multiplatform Anymore•
(Dev Ru) AI в QA: почему инструмент без культуры не работает•
(Dev Ru) VLM против регресса: опыт создания AI-агента, тестирующего интерфейсы как человек•
(Dev Ru) Разработчик из Apple теперь в Яндексе: что отличается внутри•
(Dev Ru) Взгляд на будущее разработки•
(Mrk Ru) Как понять, что мобильная игра готова к масштабированию? Вся продуктовая аналитика на реальном кейсеПрошлогодние видео:
•
(iOS Ru) Почему Metal перестал быть страшным•
(iOS Ru) Локализация iOS-приложения за 1$ в 2024 году•
(And Ru) Нюансы работы Android Runtime в сравнении с HotSpot VM•
(And Ru) Как Google тайно изменил Android на глазах у всех: Project Mainline•
(Dev Ru) Алгоритмическая сессия на собеседовании (все собеседования)•
(Dev Ru) Автоматическая генерация верстки под Server-driven UI из макетов FigmaPlease open Telegram to view this post
VIEW IN TELEGRAM
YouTube
X App's New Scrollable Tabbar Using SwiftUI | Swipeable Tabs | Xcode 27
Hello Guys 🖐🖐🖐
In this video, I’ll demonstrate how to recreate the X/Twitter App's New Swipeable Tab bar using SwiftUI | Scrollable Tabs SwiftUI | SwiftUI Scroll Synchronised Tab bar | SwiftUI Animations | SwiftUI 2026 | iOS 27 | SwiftUI Xcode 27 | SwiftUI…
In this video, I’ll demonstrate how to recreate the X/Twitter App's New Swipeable Tab bar using SwiftUI | Scrollable Tabs SwiftUI | SwiftUI Scroll Synchronised Tab bar | SwiftUI Animations | SwiftUI 2026 | iOS 27 | SwiftUI Xcode 27 | SwiftUI…
Верификация Android разработчиков: что будет с устройствами в России
Прошлым летом Google объявил, что на Android телефоны можно будет устанавливать приложения только от проверенных разработчиков. В этой статье SafeMobile рассказывает, что узнали - по мнению авторов статьи, в ближайшее время серьёзных изменений не ожидается:
• устройства без сервисов Google вообще не участвуют в проверке;
• Россия не входит в первую волну;
• Google заявляет об исключении для стран, находящихся под санкциями;
• приложения, устанавливаемые через корпоративные MDM-системы на управляемые устройства, не должны проходить такую верификацию.
Таким образом, российские устройства без Google Play и корпоративные устройства под управлением MDM должны продолжить работать как раньше. Однако разработчикам обычных приложений авторы рекомендуют заранее пройти полную регистрацию, особенно если APK распространяется напрямую или через сторонние магазины.
Статья: https://habr.com/ru/companies/safemobile/articles/1064658/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Прошлым летом Google объявил, что на Android телефоны можно будет устанавливать приложения только от проверенных разработчиков. В этой статье SafeMobile рассказывает, что узнали - по мнению авторов статьи, в ближайшее время серьёзных изменений не ожидается:
• устройства без сервисов Google вообще не участвуют в проверке;
• Россия не входит в первую волну;
• Google заявляет об исключении для стран, находящихся под санкциями;
• приложения, устанавливаемые через корпоративные MDM-системы на управляемые устройства, не должны проходить такую верификацию.
Таким образом, российские устройства без Google Play и корпоративные устройства под управлением MDM должны продолжить работать как раньше. Однако разработчикам обычных приложений авторы рекомендуют заранее пройти полную регистрацию, особенно если APK распространяется напрямую или через сторонние магазины.
Статья: https://habr.com/ru/companies/safemobile/articles/1064658/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM