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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
🆕 Опенсорс-библиотека Implicits от Яндекс Браузера

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

Эту проблему решают в разных языках: Scala, Kotlin, Android. В Swift же встроенного решения нет. Поэтому команда Яндекс Браузере сделала open-source библиотеку Implicits — механизм неявной передачи зависимостей с проверкой на этапе компиляции.

В статье автор расскажет о поиске собственного подхода. Внедрение Implicits сокращает boilerplate, ускоряет рефакторинг и улучшает читаемость кода — зависимости объявляются локально там, где реально используются. Также покажет примеры из продакшен-кода Яндекс Браузера.

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

📌 Лучшие вакансии для мобильных разработчиков

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

#свежак #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Быстрое ревью без запуска Android Studio и Xcode

Мобильные проекты часто отличаются глубокой вложенностью и сложными зависимостями. Чтобы качественно отревьюить PR, приходится запускать тяжелые IDE, ждать индексации Gradle или сборки проекта. Это убивает время.

SourceCraft предлагает альтернативу: умная навигация доступна прямо в браузере. Платформа понимает контекст, позволяет переходить к декларациям классов и методов, смотреть использования и типы переменных. Всё это работает мгновенно, не требуя локальной настройки окружения автора кода.

Оцените скорость работы инструмента → https://sourcecraft.dev/code-navigation-demo/uikit/pr/2040
👍2
🦢 Вопрос с собеседования по Swift

Можете ли вы определить перечисление с такими значениями? Почему?

enum Edges : (Double, Double) {
case TopLeft = (0.0, 0.0)
case TopRight = (1.0, 0.0)
case BottomLeft = (0.0, 1.0)
case BottomRight = (1.0, 1.0)
}


👇 Правильный ответ:

Нет, не можем. Тип значения должен:

• Соответствовать протоколу Equatable.
• Литерально преобразовываться из типов: Int, String, Character.

В приведенном выше коде это не соблюдено.


➡️ Щелкаешь такие задачи как орешки? Найди проект с достойной зарплатой тут

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🎓 Твой опыт стоит дорого — стань экспертом Proglib Academy

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

Мы ищем сильных практиков, которые хотят попробовать себя в роли:

— преподавателей;
— авторов курсов;
— наставников.

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

👉 Заполни короткую анкету
👍1
Представьте: ваше приложение работает, пока пользователь спит

Не просто шлёт пуши, а реально решает задачи. Заказывает билеты, планирует встречи, анализирует расходы. Это работа для AI-агентов.

Чтобы вы могли внедрять фичи уровня 2026 года, мы кардинально обновили курс «Разработка AI-агентов».

Чем это круче старой версии?

📱 Гибкость: Два трека. Можно пройти «Обзорный», чтобы понимать архитектуру, или «Продвинутый», чтобы писать агентов самому.
📱 Стек: Вы научитесь работать с LangGraph и AutoGen — стандартами индустрии.
📱 Инфраструктура: Даем доступ к мощностям, чтобы обучать агентов, не перегревая локальную машину.

Это не просто «подключить ChatGPT». Это про создание автономных ассистентов внутри iOS и Android экосистем.

🎁 Акция 3 по цене 1:

Оплачиваете курс по агентам — выбираете еще два курса в подарок (хоть алгоритмы, хоть математику).

Подробности тут
👏1
🤖🔎 Подборка AI-инструментов для поиска работы в IT за рубежом

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

📌 Лучшие вакансии для мобильных разработчиков

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

#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
🗓 Новости недели

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

🔵 Ускорение CI сборок в Xcode с кэшированием слотов

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

🔵 Улучшение доступности в Android-приложениях

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

🔵 Нейминг в Dart: полезные примеры из документации

Если вы и так являетесь приверженцем более декларативного и информативного нейминга в вашем коде, то эта статья покажет прям небольшие мелочи из официальной доки dart, которые позволят выкрутить читаемость на максимум.

📌 Лучшие вакансии для мобильных разработчиков

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Объявление объекта (object declaration), object как Singleton

Объявляется объект при помощи ключевого слова object, после которого следует имя объекта.

Файл, содержащий только object представляет из себя Singleton, т.е. будет создан только один экземпляр этого класса. Пример:

object One {
val cats = arrayListOf<Cat>()

fun callCat() {
for (cat in cats) {
...
}
}
}


Можно обращаться к методам и свойствам класса через имя объекта:

One.cats.add(Cat(...))
One.callCat()


Инициализация объявления объекта потокобезопасна и выполняется при первом доступе (лениво).

📌 Лучшие вакансии для мобильных разработчиков

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

#буст #JuniorKit #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔴 Как распознать нажатие на произвольную фигуру в Jetpack Compose

В Android-разработке определение нажатия на сложную нестандартную фигуру — нетривиальная задача. Класс Path не предоставляет готового API, а распространённые решения с проверкой пересечения маленького прямоугольника и фигуры — медленные и не всегда точные.

В Jetpack Compose есть простое и эффективное решение: PathHitTester.

🔹 Как это работает

1. Создайте хит-тестер, передав ему ваш Path:

val hitTester = PathHitTester(imagePath)


2. Проверяйте координаты нажатия с помощью метода contains(). Важно привести координаты касания к той же системе координат, что и путь:

val tap = down.position - imagePosition // Применяем обратное преобразование
val isTapped = tap in hitTester // Вызывает hitTester.contains(tap)


🔹 Ключевые особенности и преимущества

🔘 Точность: Определяет нажатие с точностью до пикселя.

🔘 Производительность: Использует специальную структуру данных для быстрой проверки, что позволяет использовать PathHitTester даже для обработки событий перетаскивания (drag) с высокой частотой.

🔘 Переиспользование: Чтобы обновить тестируемый путь, используйте метод update(newPath) вместо создания нового объекта.

🔹 Получение пути из изображения

В демонстрационном видео используется библиотека pathway. Её основная функция — генерация Path из Bitmap:

val contour = bitmap.toPath().asComposePath()


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

🔹 Итог

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

📌 Лучшие вакансии для мобильных разработчиков

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

#PixelPerfect #MiddlePath #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM