Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.81K subscribers
1.47K photos
71 videos
52 files
4.23K links
Все самое полезное для мобильного разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
#memes

Понапридумывают своих драгонКрю, телеграмов, инстраграмов...
Учитесь! 💪
😁13🤔32
🤖🏞️ Автоматизируем тестирование скриншотов для Compose через reflection

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

Showkase

Одним из способов автоматизации тестирования скриншотов является использование Showkase, библиотеки Airbnb, созданной для создания браузера компонентов, который дополнительно позволяет автоматически тестировать все методы, помеченные @Preview, с помощью Paparazzi. Этот способ требует указания Showkase в качестве зависимости для каждого модуля, в котором есть любые превью, которые нужно покрыть тестами. Поскольку Showkase основан на генерации кода, это увеличит время сборки для всех этих модулей. Таким образом, использование его только для скриншот-тестов может оказаться не лучшим решением, поскольку это не его основная функция.

Reflection

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

Предлагаемое решение может работать с другими библиотеками тестирования скриншотов. Если вам интересны альтернативы — вот вам еще вариант.

Далее вас ждут реализация примера и немного кода.

#туториал
🥰11😁98👍8👏8
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍6
🧑‍🎓 Best Practices для Compose Navigation в мультимодульном проекте

В подопытном проекте есть Drawer navigation с экранами Articles, Settings и About. В многоэкранном проекте у каждого экрана должен быть свой отдельный модуль. В примере автор создал три отдельных модуля для каждого экрана и использовал их в модуле приложения для реализации базовой навигации.

Стартовый проект

Есть стартовый проект по ссылке Github, откуда можно загрузить код и получить проект из папки starter. Репозиторий Github также содержит final folder, который является окончательным проектом Navigation Compose.

Структура проекта

Чтобы получить общее представление о структуре модуля starter project: у него есть отдельный модуль для каждого экрана, и все эти модули добавляются как зависимости в app module.

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

#туториал
👍3👾21
🤔 #дайджест полезностей для мобильного разработчика

✳️ Миграция конфигурации сборки с Groovy на Kotlin — материал написан с акцентом на проекты Android на этапе перехода на Kotlin DSL

✳️ Unseen Dangers — скрытые угрозы безопасности мобильных приложений в библиотеках Android

✳️ Автоматизация сборок Android с помощью GitHub Actions — процесс настройки рабочего воркфлоу для создания отладочной версии приложения и релизной сборки

✳️ Добавляем кастомные Google Fonts в приложение — полный перечень действий для добавления шрифтов с использованием Jetpack Compose

✳️ Разбираемся с Ignite — что такое Ignite, почему его стоит выбирать и где применять
👍11🔥11🎉9👏86
Нужно вывести каждое число в отдельной строке с указанием ее порядкового номера. Какой метод без var или val допускает итерацию со значением и с его позицией?
Anonymous Quiz
66%
.forEachIndexed()
17%
.forEach()
6%
.forIndexes()
11%
.withIndex()
🥱65
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека devops’a
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook
🔸Instagram
6👍1
#memes

На собеседовании:
У нас отличная документация на проекте!

Документация на проекте:
😁192👍2🌚2
🚀🚀 Кастомные уведомления в приложении

В этом видео автор покажет, как создавать пользовательские уведомления в приложении, которые будут органично сочетаться с уведомлениями в приложении, всплывающие в Dynamic Island. Кода много, код понятный и интересный — рекомендуем 🔥👍

Смотреть

#видео
👍52🥰1
🏃🏃‍♂️ Как ускорить сборку проекта и не остановить разработку

Видос о том, как спикер применил в iOS-проектах предкомпилированные зависимости в виде XCFramework с использованием CocoaPods, fastlane, GitLab CI и ускорил холодную сборку до 2 раз.

Содержание:

6:59 XCFramework
11:46 Публикация XCFramework с CocoaPods
13:14 Builder
14:07 Deploy_xcframework
15:21 Alamofire:podspec
16:45 Transform_podspec
17:59 Интеграция
19:46 Семантическое версионирование
21:09 Обратная совместимость
26:46 Ограничения и советы
32:41 Практика
35:41 Готовый проект

#видео
7🥰2
🍭🍭 Улучшения в отладке Swift 5.9

Swift 5.9 ввел ряд новых функций отладки в компилятор и отладчик LLDB.
Вот три изменения, которые могут помочь в ваших повседневных рабочих процессах отладки.

🍕 Более быстрый контроль переменных с помощью p и po
LLDB предоставляет сокращенный псевдоним команды p для проверки переменных и po для вызова свойства debugDescription объектов.

🍕 Поддержка параметров generic в выражениях
LLDB теперь поддерживает обращение к параметрам generic при вычислении выражения. Например:
func use(_ t: T) {
print(t) // break here
}

use(5)
use("Hello!")

При запуске po T.self, когда он перестанет использоваться, выведет Int при входе через первый вызов и String во втором.

🍕 Fine-grained информация для скоупа

В Swift 5.9 компилятор теперь использует более точную информацию ASTScope для генерации иерархии лексического скоупа при дебаге, что приводит к некоторым изменениям поведения в отладчике.

#новость
👍53
🤔 #дайджест полезностей для мобильного разработчика

✳️ Kotlin и Virtual Threads — Kotlin на JDK 21 backend стал поддерживать виртуальные потоки

✳️ Flutter SDK с поддержкой платформы ОС Аврора — т. к. Flutter SDK для ОС Аврора не состоит в upstream, установка происходит отличным от основного метода установки

✳️ Async / Await Coroutines — как с помощью KMP-NativeCoroutines использовать собственные решения Swift (Async await, Combine или RxSwift) для асинхронного кода Kotlin

✳️ Gradle Release Notes — Java 21 теперь поддерживается для компиляции, тестирования и запуска таких проектов, а еще несколько полезных фиксов

✳️ Измеряем sequence — видос о том, насколько корректно правило CouldBeSequence, и в каких случаях использование sequence дает реальный выигрыш
🥰2214🔥11👏8👍4
👩‍💻 Женщины в ИТ: проблемы и преимущества сложной профессии

Айтишницы поделились профессиональным опытом и рассказали о стереотипах и сложностях, с которыми им пришлось столкнуться на карьерном пути.

Читать статью
🥱109🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
#memes

Когда разработчику говорят, что с удаленки нужно выйти в офис
👍17😁113
🍏📚 ТОП-7 книг по Swift и iOS-разработке в 2023 году

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

Читать статью

#книги
👍64😁2