Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck – Telegram
Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.52K subscribers
1.7K photos
84 videos
52 files
4.53K links
Все самое полезное для мобильного разработчика в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
💰 Полный гайд по golden-тестам во Flutter

При создании интерфейса важно проверить, как он реально выглядит. Часто это проверяют все участники процесса — от разработчиков до менеджеров. И для автоматизации и упрощения процесса визуального тестирования приложения есть специальный инструмент — golden‑тесты.

Это методология тестирования, в которой текущий UI сравнивается с предварительно сгенерированным «золотым» эталоном. Если вы уже слышали про скриншот‑тесты — это примерно то же самое, но есть нюансы.

➡️ В этой статье автор:

🔘 Познакомит с методологией, рассмотрит её преимущества и недостатки, а также когда её стоит и не стоит применять.

🔘 Напишет базовый golden‑тест на примере стандартных инструментов библиотеки flutter_test.

🔘 Рассмотрит пакет alchemist, который решает проблему платформозависимости flutter_test.

🔘 Даст прикладные рекомендации по применению тестов и настройке IDE и CI.

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

🐸 Библиотека мобильного разработчика

#свежак #Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
🔍 Сompanion object (также Singleton)

Объекты можно объявлять внутри класса, при этом нет каких-либо ограничений по их количеству. Но только один объект можно пометить ключевым словом companion object в рамках одного класса.

Синглтон-свойство companion object достигается за счет того, что он создается внутри класса в качестве статического поля. Он будет инициализирован при первом обращении к нему или при создании первого экземпляра класса, в котором он объявлен.

Важно отметить, что companion object будет инициализирован первым, а затем уже будет создан экземпляр класса:

class MyClass {
init {
// Выполняется всегда после инициализации companion object
}

companion object {
init {
// Выполняется всегда перед блоком init содержащего класса
}
}
}

val myClass = MyClass()


Такому объекту можно не указывать свое имя, и обращаться к методам и свойствам объекта через имя содержащего его класса без явного указания имени объекта.

class SomeClass {

companion object {
fun create()
}
}

val someClass = SomeClass.create()


Компилируется в public static final class на Java. Работает подобно ключевому слову static в Java.

🐸 Библиотека мобильного разработчика

#буст #MiddlePath #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3
🤖 Лучшие нейросети для повышения уникальности текста в 2025 году

Топ-10 нейросетей для создания уникального контента. Обзор Arcy, ChatGPT, YandexGPT и других сервисов с ценами, функциями и советами по повышению оригинальности текстов.

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

🐸 Библиотека мобильного разработчика

#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👾 AI-агенты — настоящее, о котором все говорят!

Уже 3 октября стартует второй поток нашего нового курса «AI-агенты для DS-специалистов».

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

На обучении вы соберёте полноценные LLM-системы с учётом особенностей доменных областей, получите hands-on навыки RAG, Crew-AI / Autogen / LangGraph и агентов.

🎓 В рамках курса вы научитесь:

1️⃣ адаптировать LLM под разные предметные области и данные
2️⃣ собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
3️⃣ строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой

Научитесь применять похожие подходы в разных доменных областях, получите фундамент для уверенного прохождения NLP system design интервью и перехода на следующий грейд.

🗓️ Завтра первый вебинар, успевайте залететь в ряды ИИ-первопроходцев 👈🏻
🔒 Поймай меня, если сможешь: как обнаружить Root и Frida

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

Но эти меры не защитят от злоумышленника, который изучит логику работы приложения и использует полученные данные для атаки. Различные модификации Android, такие как root-права и кастомная прошивка, позволяют злоумышленнику быстрее и детальнее исследовать приложение.

Таисия рассказала об опыте решения проблемы по обнаружению эмуляторов, устройств с root-правами или кастомными прошивками. А еще познакомила нас с набором инструментов Frida, позволяющих внедрять код в другие приложения буквально на лету. Рассмотрела возможности и принцип работы этого тулкита и описала метод по его обнаружению, который можно использовать в проекте.

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

👀 Смотреть доклад

🐸 Библиотека мобильного разработчика

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21😁1
⚙️ Оптимизация времени запуска мобильного приложения

Заметили, что ваше приложение долго запускается? Этот промпт поможет найти и устранить узкие места в процессе старта.

📝 Промпт:

Analyze and optimize mobile app startup time that includes:

— Measure cold/warm/hot start durations
— Identify main thread blockers during launch
— Optimize application class initialization
— Reduce dynamic feature module loading time
— Implement lazy loading for heavy components
— Optimize dependency injection setup
— Improve splash screen and initial UI rendering


💡 Расширения:

— Добавьте Implement asynchronous resource loading для параллельной загрузки ресурсов
— Добавьте Add startup tracing and performance monitoring для постоянного отслеживания
— Добавьте Optimize pre-dexing and multidex configuration для больших приложений

🐸 Библиотека мобильного разработчика

#буст #MiddlePath
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🔔 Анонс: CrossConf 2025

📅 Когда: 17 октября 2025
📍 Где: Москва
🌐 Официальный сайт: crossconf.ru

📌 О событии

CrossConf — крупнейшая конференция в России и СНГ, посвящённая кроссплатформенным технологиям.

В фокусе:

🔘 Flutter и его развитие в больших проектах
🔘 Kotlin Multiplatform: кейсы компаний, которые уже внедрили KMM
🔘 React Native и современные подходы к работе с ним
🔘 Практика, архитектура, опыт внедрения в продакш

🐸 Библиотека мобильного разработчика

#МитапПоинт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
📱 UITableView с различными типами ячеек

Создание таблицы с различными типами ячеек достаточно стандартная задача. Конечно, можно использовать различное ветвление при помощи if, else или switch, но лучше и практичнее использовать Дженерики.

👀 Смотреть видео

🐸 Библиотека мобильного разработчика

#свежак #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🚀 Курс «ИИ-агенты для DS-специалистов» уже стартовал

Первый вебинар успешно прошёл, участники уже начали разбираться, как использовать ИИ-агентов в реальных проектах.

Но всё самое интересное только начинается!

🔥 Впереди 4 мощных занятия — с практикой, инсайтами и разбором кейсов от экспертов.

💸 Сейчас действует специальная цена → 69.000 ₽ вместо 79.000 ₽.

Осталось всего 4 места.

Не упустите шанс прокачаться в том, что будет определять будущее индустрии.

👉 Забронировать место на курсе
🎓 Как вайб-кодинг меняет рынок IT-образования

В карточках разобрали, как именно меняется обучение будущих айтишников и к чему это может привести.

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

🐸 Библиотека мобильного разработчика

#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Для чего используется Guard

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

Например, оператор guard используется для выхода из функции:

func myFun() {
guard false else {
print("This block is run")
return
}
print("This is never run")
}

myFun()


Вывод:

This block is run


👉 Узнайте больше о ключевом слове guard, прочитав эту статью

🐸 Библиотека мобильного разработчика

#буст #JuniorKit #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
2