This media is not supported in your browser
VIEW IN TELEGRAM
CatPawSwitch - переключатель с кошачьей лапкой
Компонент MaterialSwitch, который проактивно пытается отключиться, используя анимацию кошачьей лапы.
CatPawSwitch на GitHub: https://github.com/hearsilent/CatPawSwitch
Платформа: Android
⭐️: 11
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Компонент MaterialSwitch, который проактивно пытается отключиться, используя анимацию кошачьей лапы.
CatPawSwitch на GitHub: https://github.com/hearsilent/CatPawSwitch
Платформа: Android
⭐️: 11
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Не начинают ли мобильные разработчики сожалеть о выборе профессии в 2026?
Впервые за всю свою карьеру я заколебался, прежде чем сказать: «Я — разработчик мобильных приложений».
Не потому, что мне стыдно за это, а потому, что я больше не уверен, что это значит в 2026 году.
Индустрия не рухнула. Мобильные приложения не исчезли. Люди по-прежнему разрабатывают приложения, компании по-прежнему выпускают продукты, и приложения по-прежнему приносят деньги. Но что-то изменилось. Уверенность, которая раньше приносила эта профессия, уже не так сильна, как прежде. И дело не в том, что работа стала сложнее. Дело в том, что ценность этой работы подвергается сомнению так, как никогда раньше.
Статья: https://apptractor.ru/info/articles/ne-nachinayut-li-mobilnye-razrabotchiki-sozhalet-o-vybore-professii-v-2026.html
Платформа: разработка/карьера
Впервые за всю свою карьеру я заколебался, прежде чем сказать: «Я — разработчик мобильных приложений».
Не потому, что мне стыдно за это, а потому, что я больше не уверен, что это значит в 2026 году.
Индустрия не рухнула. Мобильные приложения не исчезли. Люди по-прежнему разрабатывают приложения, компании по-прежнему выпускают продукты, и приложения по-прежнему приносят деньги. Но что-то изменилось. Уверенность, которая раньше приносила эта профессия, уже не так сильна, как прежде. И дело не в том, что работа стала сложнее. Дело в том, что ценность этой работы подвергается сомнению так, как никогда раньше.
Статья: https://apptractor.ru/info/articles/ne-nachinayut-li-mobilnye-razrabotchiki-sozhalet-o-vybore-professii-v-2026.html
Платформа: разработка/карьера
Компилятор Kotlin 2.3: ускорение работы с большими кодовыми базами более чем на 40%
По данным из свежего разбора, на больших кодовых базах прирост может доходить до 40%+ за счёт трёх вещей:
• нормальной incremental compilation без лишних пересборок
• более зрелого K2 compiler
• улучшенного кэширования артефактов, что особенно полезно для CI/CD
Что важно: для перехода не нужно переписывать код — достаточно обновить версию Kotlin и сравнить метрики сборки до и после.
Статья: https://medium.com/@androidlab/kotlin-2-3-compiler-speed-up-large-codebases-by-40-841227042946🇺🇸
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
По данным из свежего разбора, на больших кодовых базах прирост может доходить до 40%+ за счёт трёх вещей:
• нормальной incremental compilation без лишних пересборок
• более зрелого K2 compiler
• улучшенного кэширования артефактов, что особенно полезно для CI/CD
Что важно: для перехода не нужно переписывать код — достаточно обновить версию Kotlin и сравнить метрики сборки до и после.
Статья: https://medium.com/@androidlab/kotlin-2-3-compiler-speed-up-large-codebases-by-40-841227042946
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Конвейер подготовки джунов сломан, и ни у кого нет плана по его исправлению
Средний срок работы разработчика в крупной tech-компании — 2–3 года. Среднее время, чтобы вырастить junior-а в надёжного самостоятельного middle-инженера — 2–4 года. Среднее время от middle до senior — ещё 3–5 лет. Эти цифры могут гулять, но порядок величин стабилен: чтобы вырастить senior-инженера из нового выпускника, нужно примерно 5–9 лет.
Если индустрия заметно сокращает junior-найм на протяжении трёх лет подряд — 2024, 2025 и 2026 годов, а именно это сейчас и происходит, — эффект проявится не сразу. Он проявится в 2029–2033 годах, когда истончится конвейер middle-инженеров, и в 2032–2036 годах, когда истончится конвейер senior-инженеров.
К тому моменту компании, которые сегодня режут junior-найм, будут конкурировать за ещё меньший пул опытных инженеров и жаловаться на «дефицит талантов». CEO будут винить кого угодно, кроме самих себя, за проблему, которую сами и создали тремя годами квартальной оптимизации.
Вопрос уже не в том, сломан ли конвейер подготовки junior-разработчиков. Он сломан. Данные говорят об этом громко и однозначно. Вопрос в другом: сделает ли кто-то, у кого есть возможности это исправить, хоть что-нибудь до того, как последствия станут необратимыми.
Прямо сейчас ответ такой: нет. Ни у кого нет плана.
Статья: https://apptractor.ru/info/articles/konveyer-podgotovki-dzhunov-sloman-i-ni-u-kogo-net-plana-po-ego-ispravleniyu.html
Платформа: разработка/карьера
Средний срок работы разработчика в крупной tech-компании — 2–3 года. Среднее время, чтобы вырастить junior-а в надёжного самостоятельного middle-инженера — 2–4 года. Среднее время от middle до senior — ещё 3–5 лет. Эти цифры могут гулять, но порядок величин стабилен: чтобы вырастить senior-инженера из нового выпускника, нужно примерно 5–9 лет.
Если индустрия заметно сокращает junior-найм на протяжении трёх лет подряд — 2024, 2025 и 2026 годов, а именно это сейчас и происходит, — эффект проявится не сразу. Он проявится в 2029–2033 годах, когда истончится конвейер middle-инженеров, и в 2032–2036 годах, когда истончится конвейер senior-инженеров.
К тому моменту компании, которые сегодня режут junior-найм, будут конкурировать за ещё меньший пул опытных инженеров и жаловаться на «дефицит талантов». CEO будут винить кого угодно, кроме самих себя, за проблему, которую сами и создали тремя годами квартальной оптимизации.
Вопрос уже не в том, сломан ли конвейер подготовки junior-разработчиков. Он сломан. Данные говорят об этом громко и однозначно. Вопрос в другом: сделает ли кто-то, у кого есть возможности это исправить, хоть что-нибудь до того, как последствия станут необратимыми.
Прямо сейчас ответ такой: нет. Ни у кого нет плана.
Статья: https://apptractor.ru/info/articles/konveyer-podgotovki-dzhunov-sloman-i-ni-u-kogo-net-plana-po-ego-ispravleniyu.html
Платформа: разработка/карьера
😭3😁1
10 ошибок, которые Android-разработчики до сих пор допускают при работе с Jetpack Compose
Как человек, который за последние два года проанализировал сотни кодовых баз Jetpack Compose, могу сказать, что одни и те же ошибки повторяются снова и снова, что и побудило меня написать этот пост. Даже опытные Android-разработчики, привыкшие к традиционным View-системам, сталкиваются с ними при переходе на Compose.
Статья: https://apptractor.ru/info/articles/10-oshibok-kotorye-android-razrabotchiki-do-sih-por-dopuskayut-pri-rabote-s-jetpack-compose.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Как человек, который за последние два года проанализировал сотни кодовых баз Jetpack Compose, могу сказать, что одни и те же ошибки повторяются снова и снова, что и побудило меня написать этот пост. Даже опытные Android-разработчики, привыкшие к традиционным View-системам, сталкиваются с ними при переходе на Compose.
Статья: https://apptractor.ru/info/articles/10-oshibok-kotorye-android-razrabotchiki-do-sih-por-dopuskayut-pri-rabote-s-jetpack-compose.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift Service - инъекция зависимостей для современного Swift
Swift Service - легковесный фреймворк внедрения зависимостей, созданный для Swift 6 Concurrency — с явными API для Sendable и MainActor, без внешних зависимостей и с изоляцией среды на основе TaskLocal.
Основные особенности:
• Дизайн, ориентированный на параллелизм — параллелизм в Swift является первоклассным элементом. Ограничения Sendable и MainActor являются частью API и обеспечиваются компилятором на каждом этапе вызова — они не скрыты за @unchecked Sendable.
• Нативная поддержка MainActor — выделенные функции registerMain() / @MainService / @MainProvider для типов, изолированных MainActor. Соответствует требованиям Swift 6.2 Approachable Concurrency.
• Нулевые зависимости — полностью построен на основе примитивов стандартной библиотеки Swift (Synchronization.Mutex, @TaskLocal).
• Изоляция среды TaskLocal — переключение среды для каждой задачи для параллельно-безопасного тестирования. Не требуется изменение глобального состояния.
• Гибкие области видимости — сколупы для синглтонов, временных объектов, графов и пользовательских имен для точного управления жизненным циклом.
• Знакомые шаблоны — API регистрации/разрешения, вдохновленный Swinject. Внедрение оберток свойств с модульной поддержкой Assembly.
Swift Service на GitHub: https://github.com/nslogmeng/swift-service
Платформа: iOS
⭐️: 22
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Swift Service - легковесный фреймворк внедрения зависимостей, созданный для Swift 6 Concurrency — с явными API для Sendable и MainActor, без внешних зависимостей и с изоляцией среды на основе TaskLocal.
Основные особенности:
• Дизайн, ориентированный на параллелизм — параллелизм в Swift является первоклассным элементом. Ограничения Sendable и MainActor являются частью API и обеспечиваются компилятором на каждом этапе вызова — они не скрыты за @unchecked Sendable.
• Нативная поддержка MainActor — выделенные функции registerMain() / @MainService / @MainProvider для типов, изолированных MainActor. Соответствует требованиям Swift 6.2 Approachable Concurrency.
• Нулевые зависимости — полностью построен на основе примитивов стандартной библиотеки Swift (Synchronization.Mutex, @TaskLocal).
• Изоляция среды TaskLocal — переключение среды для каждой задачи для параллельно-безопасного тестирования. Не требуется изменение глобального состояния.
• Гибкие области видимости — сколупы для синглтонов, временных объектов, графов и пользовательских имен для точного управления жизненным циклом.
• Знакомые шаблоны — API регистрации/разрешения, вдохновленный Swinject. Внедрение оберток свойств с модульной поддержкой Assembly.
Swift Service на GitHub: https://github.com/nslogmeng/swift-service
Платформа: iOS
⭐️: 22
Please open Telegram to view this post
VIEW IN TELEGRAM
•
(iOS En) Accelerate your machine learning workloads with the M5 and A19 GPUs•
(iOS En) Boost your graphics performance with the M5 and A19 GPUs•
(iOS En) SwiftUI Telegram Resizable Header | Scroll Effects | Animations•
(And En) Explicit Backing Fields are experimental in Kotlin 2.3•
(And En) Kotlin 2.3.20, Android Bench, and more•
(Crs Ru) Flutter — Dart, Impeller и реальные юзкейсы•
(Dev Ru) Путь инди-хакера•
(Dev En) How to build a full-stack app with Supabase and Stripe on Google AI Studio•
(Dev En) 1h Claude Code Crash Course For App Developers (Beginner Level)Прошлогодние видео:
•
(iOS Ru) Исследуем мир фото и видео редакторов•
(iOS Ru) Найди и исправь ошибки в коде — Задачи с собеседования•
(iOS Ru) Запускаем приложения на своем iOS-симуляторе•
(iOS Ru) Осторожно, Combine!•
(iOS Ru) Позаботимся о памяти при использовании value-типов•
(iOS Ru) Swift – больше, чем язык для iOS•
(And Ru) Почему вам стоит включить Gradle Configuration Cache•
(And Ru) Интеграция GeckoView в Dynamic Feature•
(And Ru) Последнее слово в Android-навигации•
(Dev Ru) Kotlin не для Android•
(Dev Ru) Пишем рекомендательную систему музыки на JavaPlease open Telegram to view this post
VIEW IN TELEGRAM
Я купил самый дешёвый MacBook от Apple и попробовал заняться настоящей разработкой
У меня уже есть MacBook Pro M3 Pro. Это просто зверь. Но мне хотелось посмотреть, что получится, если попробовать настоящую разработку на самом дешевом Mac от Apple.
Статья: https://apptractor.ru/info/articles/macbook-neo-dev.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
У меня уже есть MacBook Pro M3 Pro. Это просто зверь. Но мне хотелось посмотреть, что получится, если попробовать настоящую разработку на самом дешевом Mac от Apple.
Статья: https://apptractor.ru/info/articles/macbook-neo-dev.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
💩3❤1
Presently - дневник благодарности
Presently - открытый и бесплатный дневник благодарности с более чем 1 миллионом установок.
Технологический стек:
• MVVM с архитектурными компонентами
• ViewModel
• Room (с FTS и Paging v3)
• Mavericks
• CircleCI
• Отчеты о покрытии кода Jacoco (интегрированы с CI)
• Отчеты о сбоях Firebase Crashlytics
• Dagger + Hilt
• Espresso
• Firebase Test Lab
• WorkManager
• Dropbox Java SDK
Presently на GitHub: https://github.com/alisonthemonster/Presently
Платформа: Android
⭐️: 412
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Presently - открытый и бесплатный дневник благодарности с более чем 1 миллионом установок.
Технологический стек:
• MVVM с архитектурными компонентами
• ViewModel
• Room (с FTS и Paging v3)
• Mavericks
• CircleCI
• Отчеты о покрытии кода Jacoco (интегрированы с CI)
• Отчеты о сбоях Firebase Crashlytics
• Dagger + Hilt
• Espresso
• Firebase Test Lab
• WorkManager
• Dropbox Java SDK
Presently на GitHub: https://github.com/alisonthemonster/Presently
Платформа: Android
⭐️: 412
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
iOS network frameworks и HTTP TCP Server внутри приложения
В iOS разработке работа с сетью является одной из ключевых задач. Для этого существует целый арсенал инструментов: от высокоуровневого URLSession до работы с низкоуровневыми BSD сокетами.
В этой статье мы разберем список доступных инструментов, напишем и запустим сервер внутри iOS приложения, используя самый низкоуровневых инструмент (BSD sockets). И закрепим это небольшим проектом, который будет использовать наш сервер. Им будет небольшая админка, с помощью которой можно будет загружать файлы из файловой директории приложения через веб браузер (с других устройств в локальной сети).
Статья: https://habr.com/ru/articles/991366/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В iOS разработке работа с сетью является одной из ключевых задач. Для этого существует целый арсенал инструментов: от высокоуровневого URLSession до работы с низкоуровневыми BSD сокетами.
В этой статье мы разберем список доступных инструментов, напишем и запустим сервер внутри iOS приложения, используя самый низкоуровневых инструмент (BSD sockets). И закрепим это небольшим проектом, который будет использовать наш сервер. Им будет небольшая админка, с помощью которой можно будет загружать файлы из файловой директории приложения через веб браузер (с других устройств в локальной сети).
Статья: https://habr.com/ru/articles/991366/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Как настроить сериализацию Kotlin Any с поддержкой Parcelable и Serializable в Android
Тема сериализации данных является базой для любого мобильного разработчика, поскольку используется для работы с сетью, файловой системой и коммуникацией между основными компонентами. Но есть в этом вопросе особенность, с которой я столкнулся впервые за 7 лет.
Именно об этом открытии и пойдет речь в статье — о смеси двух методов сериализации, а так же почему для решения этой задачи важно разбираться в работе разных видов
Поскольку Parcelable не является общим механизмом сериализации (нельзя использовать для сохранения данных на диск или сетевых запросов), он не может полностью заменить Serializable, но остается более эффективным для Android среды. Два решения сериализации остаются в проекте с нами надолго, а это значит нам нужно уметь работать с ними правильно.
Статья: https://habr.com/ru/companies/alfa/articles/1013158/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Тема сериализации данных является базой для любого мобильного разработчика, поскольку используется для работы с сетью, файловой системой и коммуникацией между основными компонентами. Но есть в этом вопросе особенность, с которой я столкнулся впервые за 7 лет.
Именно об этом открытии и пойдет речь в статье — о смеси двух методов сериализации, а так же почему для решения этой задачи важно разбираться в работе разных видов
classLoader. Информация из статьи поможет вам постепенно мигрировать на Parcelable в нужных местах, не переписывая сразу все классы на новую технологию.Поскольку Parcelable не является общим механизмом сериализации (нельзя использовать для сохранения данных на диск или сетевых запросов), он не может полностью заменить Serializable, но остается более эффективным для Android среды. Два решения сериализации остаются в проекте с нами надолго, а это значит нам нужно уметь работать с ними правильно.
Статья: https://habr.com/ru/companies/alfa/articles/1013158/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как настроить сериализацию Kotlin Any с поддержкой Parcelable и Serializable в Android
Тема сериализации данных является базой для любого мобильного разработчика, поскольку используется для работы с сетью, файловой системой и коммуникацией между основными компонентами. Но есть в этом...
Почему вашим следующим приложением, вероятно, не будут пользоваться
Раньше мы ходили в конкретные места — на сайты и в приложения. Теперь нам всё чаще нужен не интерфейс, а результат: чтобы задача была просто выполнена. Само приложение по-прежнему существует где-то на сервере, но пользователь может вообще никогда его не открывать.
Это тот же сдвиг, который уже заметен на примере Google и Stack Overflow. Если уловить паттерн, то идею headless-приложений представить намного проще.
Статья: https://apptractor.ru/info/articles/pochemu-vashim-sleduyuschim-prilozheniem-veroyatno-ne-budut-polzovatsya.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Раньше мы ходили в конкретные места — на сайты и в приложения. Теперь нам всё чаще нужен не интерфейс, а результат: чтобы задача была просто выполнена. Само приложение по-прежнему существует где-то на сервере, но пользователь может вообще никогда его не открывать.
Это тот же сдвиг, который уже заметен на примере Google и Stack Overflow. Если уловить паттерн, то идею headless-приложений представить намного проще.
Статья: https://apptractor.ru/info/articles/pochemu-vashim-sleduyuschim-prilozheniem-veroyatno-ne-budut-polzovatsya.html
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Amgi - Anki-карточки
Amgi - открытый offline-first iOS-клиент с карточками для запоминания.
Amgi использует C FFI в качестве обертки над официальным бэкендом ankitects/anki на Rust, обеспечивая нативный интерфейс SwiftUI, работающий на том же проверенном движке, что и Anki Desktop и AnkiDroid. Синхронизируйте свои колоды с любым совместимым сервером синхронизации (включая собственный), занимайтесь с помощью интервального планирования FSRS и поддерживайте идеальную синхронизацию истории повторения на всех ваших устройствах.
Архитектура:
Amgi на GitHub: https://github.com/antigluten/amgi
Платформа: iOS
⭐️: 67
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Amgi - открытый offline-first iOS-клиент с карточками для запоминания.
Amgi использует C FFI в качестве обертки над официальным бэкендом ankitects/anki на Rust, обеспечивая нативный интерфейс SwiftUI, работающий на том же проверенном движке, что и Anki Desktop и AnkiDroid. Синхронизируйте свои колоды с любым совместимым сервером синхронизации (включая собственный), занимайтесь с помощью интервального планирования FSRS и поддерживайте идеальную синхронизацию истории повторения на всех ваших устройствах.
Архитектура:
SwiftUI Views
|
@DependencyClient structs
|
AnkiBackend (Swift wrapper)
|
C FFI (4 functions)
|
Rust static library (ankitects/anki)
Amgi на GitHub: https://github.com/antigluten/amgi
Платформа: iOS
⭐️: 67
Please open Telegram to view this post
VIEW IN TELEGRAM
Monzo повысил производительность на 35% благодаря простому обновлению R8
Полностью включив оптимизацию R8, Monzo добился огромного снижения на 35% показателя «Приложение не отвечает» (ANR). Это простое изменение доказало, что для эффективной оптимизации не всегда требуются сложные инженерные решения.
Статья: https://apptractor.ru/info/articles/monzo-35.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Полностью включив оптимизацию R8, Monzo добился огромного снижения на 35% показателя «Приложение не отвечает» (ANR). Это простое изменение доказало, что для эффективной оптимизации не всегда требуются сложные инженерные решения.
Статья: https://apptractor.ru/info/articles/monzo-35.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Наконец-то нашел Android Service своей мечты после того, как потерял его 13 лет назад
Изучая недра Android, я наткнулся на один Service, который привлек моё внимание. Класс, который я обнаружил, не только заинтриговал меня своим названием, но и снова удивил интересными возможностями, скрытыми внутри Android.
Ещё в 2012 году команда Android System UI представила в Android 4.2 новую функцию Daydream, которая позволяет показывать контент пользователю, пока телефон находится в спящем режиме. Вы можете просто отрисовать любой UI или анимацию для пользователя, пока его телефон заряжается. UI-элементы также могут содержать кнопки, так что в целом можно создать полноценный экран для продакшена. К сожалению, эту функцию нельзя включить автоматически. Пользователь должен включить её в настройках дисплея.
Статья: https://habr.com/ru/articles/1016662/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Изучая недра Android, я наткнулся на один Service, который привлек моё внимание. Класс, который я обнаружил, не только заинтриговал меня своим названием, но и снова удивил интересными возможностями, скрытыми внутри Android.
Ещё в 2012 году команда Android System UI представила в Android 4.2 новую функцию Daydream, которая позволяет показывать контент пользователю, пока телефон находится в спящем режиме. Вы можете просто отрисовать любой UI или анимацию для пользователя, пока его телефон заряжается. UI-элементы также могут содержать кнопки, так что в целом можно создать полноценный экран для продакшена. К сожалению, эту функцию нельзя включить автоматически. Пользователь должен включить её в настройках дисплея.
Статья: https://habr.com/ru/articles/1016662/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Felicity - функциональный музыкальный плеер для Android
Felicity - многофункциональный премиальный аудиофильский музыкальный плеер для Android с встроенным DSP, визуализатором, 10-полосным эквалайзером с предусилителем и поддержкой Milkdrop.
Felicity на GitHub: https://github.com/Hamza417/Felicity
Платформа: Android
⭐️: 82
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Felicity - многофункциональный премиальный аудиофильский музыкальный плеер для Android с встроенным DSP, визуализатором, 10-полосным эквалайзером с предусилителем и поддержкой Milkdrop.
Felicity на GitHub: https://github.com/Hamza417/Felicity
Платформа: Android
⭐️: 82
Please open Telegram to view this post
VIEW IN TELEGRAM
Kaspresso: cравниваем скриншоты и упрощаем проверку дизайна
Это наш фреймворк для тестирования пользовательских интерфейсов на Android, основанный на Kakao, Espresso и UI Automator.
Недавно в нем появилась новая функция: сравнение скриншотов. С ней можно записывать скриншоты приложения, а на последующих прогонах автотестов сравнивать их с новыми скриншотами и отслеживать изменения в интерфейсе. В статье я пошагово покажу, как с ней работать, со скриншотами и примерами кода.
Статья: https://habr.com/ru/companies/kaspersky/articles/1015854/
Платформа: Android/тестирование
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Это наш фреймворк для тестирования пользовательских интерфейсов на Android, основанный на Kakao, Espresso и UI Automator.
Недавно в нем появилась новая функция: сравнение скриншотов. С ней можно записывать скриншоты приложения, а на последующих прогонах автотестов сравнивать их с новыми скриншотами и отслеживать изменения в интерфейсе. В статье я пошагово покажу, как с ней работать, со скриншотами и примерами кода.
Статья: https://habr.com/ru/companies/kaspersky/articles/1015854/
Платформа: Android/тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Kaspresso: cравниваем скриншоты и упрощаем проверку дизайна
Хабр, привет! Меня зовут Никита Евдокимов, я работаю старшим разработчиком в «Лаборатории Касперского», а также являюсь мейнтейнером репозитория Kaspresso . Это наш фреймворк для тестирования...
👍1
Как Swift работает с памятью: подробный гайд для разработчиков. Часть 1
В этой статье последовательно разберем, как Swift управляет памятью: от базовых понятий вроде ARC, Copy‑on‑Write, экзистенциальных контейнеров до нетипичных задач с «зомби»-объектами и non-frozen типами. Материал основан на документации Swift, докладах WWDC и практических примерах. Статья рассчитана на middle- iOS‑разработчиков, которые хотят лучше понимать, что происходит с их кодом на уровне памяти и почему одни решения оказываются дороже других.
Эта статья выйдет в двух частях: в первой разберем теорию, а во второй — практические примеры с кодом.
Статья: https://habr.com/ru/companies/avito/articles/1017162/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В этой статье последовательно разберем, как Swift управляет памятью: от базовых понятий вроде ARC, Copy‑on‑Write, экзистенциальных контейнеров до нетипичных задач с «зомби»-объектами и non-frozen типами. Материал основан на документации Swift, докладах WWDC и практических примерах. Статья рассчитана на middle- iOS‑разработчиков, которые хотят лучше понимать, что происходит с их кодом на уровне памяти и почему одни решения оказываются дороже других.
Эта статья выйдет в двух частях: в первой разберем теорию, а во второй — практические примеры с кодом.
Статья: https://habr.com/ru/companies/avito/articles/1017162/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Запретная сторона Swift, которую мы, как правило, вообще не видим
Я пишу код на Swift ежедневно уже почти 10 лет. Синдром самозванца меня не пугает. Я всё повидал.
Но иногда… не знаю.
Может быть, я делаю опечатку в Xcode, которая вытаскивает из Марианской впадины автозаполнения забытых существ. Может быть, я покупаю шимпанзе в даркнете и случайно натыкаюсь на пост в блоге с архаичным синтаксисом.
Сегодня мы откопаем кое-что из того, что Apple хранит в шкафу под лестницей. Мы выясним, есть ли у этих ключевых слов и функций какое-либо реальное применение, и прольем на них немного света.
Статья: https://apptractor.ru/info/articles/zapretnaya-storona-swift-kotoruyu-my-kak-pravilo-voobsche-ne-vidim.html
Платформа: iOS/Swift
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я пишу код на Swift ежедневно уже почти 10 лет. Синдром самозванца меня не пугает. Я всё повидал.
Но иногда… не знаю.
Может быть, я делаю опечатку в Xcode, которая вытаскивает из Марианской впадины автозаполнения забытых существ. Может быть, я покупаю шимпанзе в даркнете и случайно натыкаюсь на пост в блоге с архаичным синтаксисом.
Сегодня мы откопаем кое-что из того, что Apple хранит в шкафу под лестницей. Мы выясним, есть ли у этих ключевых слов и функций какое-либо реальное применение, и прольем на них немного света.
Статья: https://apptractor.ru/info/articles/zapretnaya-storona-swift-kotoruyu-my-kak-pravilo-voobsche-ne-vidim.html
Платформа: iOS/Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
AdaEngine - игровой движок на Swift
AdaEngine — это игровой движок, полностью написанный на Swift. Предлагает полный набор функций для 2D-графики, основан на data-oriented парадигме и использует собственную ECS-инфраструктуру, вдохновлен фреймворком RealityKit от Apple.
AdaEngine прост в использовании, и главная цель — обеспечить быстрый старт и быстрый результат.
AdaEngine на GitHub: https://github.com/AdaEngine/AdaEngine
Платформа: iOS
⭐️: 113
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
AdaEngine — это игровой движок, полностью написанный на Swift. Предлагает полный набор функций для 2D-графики, основан на data-oriented парадигме и использует собственную ECS-инфраструктуру, вдохновлен фреймворком RealityKit от Apple.
AdaEngine прост в использовании, и главная цель — обеспечить быстрый старт и быстрый результат.
AdaEngine на GitHub: https://github.com/AdaEngine/AdaEngine
Платформа: iOS
⭐️: 113
Please open Telegram to view this post
VIEW IN TELEGRAM
Как автор книг по Kotlin проверял мой проект: разбор ошибок в Coroutines и архитектуре
Я хочу поделиться историей о том, как обычное желание разобраться в корутинах привело к детальному аудиту проекта Марчином Москалой, по итогам которого архитектурные решения в GeminiAI были отмечены как качественный пример реализации Structured Concurrency.
Статья: https://habr.com/ru/articles/1018040/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я хочу поделиться историей о том, как обычное желание разобраться в корутинах привело к детальному аудиту проекта Марчином Москалой, по итогам которого архитектурные решения в GeminiAI были отмечены как качественный пример реализации Structured Concurrency.
Статья: https://habr.com/ru/articles/1018040/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM