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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
🌍📌 Обновление местоположения пользователя с помощью Core Location и Swift Concurrency в SwiftUI

Создание Location Manager

Создадим класс LocationManager, который наследуется от класса NSObject и соответствует протоколу CLLocationManagerDelegate. Добавим private свойство с именем LocationManager, объект CLLocationManager, который предоставит доступ к службам определения местоположения устройства.

Переопределим инициализатор по умолчанию, чтобы назначить объекту locationManager класс LocationManager.

class LocationManager: NSObject, CLLocationManagerDelegate {
private let locationManager = CLLocationManager()

//Назначим Location Manager
override init() {
super.init()
locationManager.delegate = self
}
}

Подробнее читайте здесь

#гайд
👍217
😎😎 Новые подходы к работе с регулярными выражениями в Swift

Спикер сравнит преимущества нового фреймворка RegexBuilder с устоявшимися подходами в использовании класса NSRegularExpression из библиотеки Foundation. Все это на примерах и с разбором практик его применения.

Он начнет с разговора о трендах Apple: что привело к появлению RegexBuilder. Почему инструменты из Foundation оказались недостаточными для решения задач работы с регулярными выражениями. Была ли неэффективность в «старом» подходе, что потребовало его замены? Были ли иные пути модификации NSRegularExpression?

Далее спикер расскажет, что внутри RegexBuilder, в чем отличие одного компонента от другого, какие есть случаи его применения и так ли он лучше предшественника.

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

В завершении выступления он ответит на вопрос: зачем Apple очередной декларативный фреймворк и к чему этот тренд идет.

Смотреть

#видео
👍62
Особенности диспетчеризации потоков и выполнение акторов

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

Диспетчеризация потоков в асинхронных контекстах

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

Подробнее изучить работу в асинхронных и синхронных средах, а также Strict Concurrency Checking можно здесь

#туториал
🔥19👍52
#вопросы_с_собеседований

Как работают SAM-conversions?

Single Abstract Method (SAM) интерфейсы — это интерфейсы только с одним абстрактным методом (функциональные интерфейсы). Kotlin поддерживает соглашение SAM — автоматическую конвертацию функций и lambda между Kotlin и Java.

SAM-conversions позволяют использовать Java-интерфейсы с единственным абстрактным методом в Kotlin, как если бы это были функциональные типы. В Kotlin вы можете использовать такие интерфейсы для создания лямбда-выражений без явного определения функционального типа.

При использовании интерфейса с единственным абстрактным методом в качестве функционального интерфейса в Java, вы можете передавать его экземпляры вместо лямбда-выражений. Это тоже возможно в Kotlin, но на самом деле Kotlin предоставляет более простой синтаксис для этого. Когда вам нужно использовать функциональный интерфейс в Kotlin, вы можете передать lambda-выражение, которое соответствует сигнатуре единственного метода интерфейса, вместо экземпляра интерфейса. Компилятор сам преобразует лямбда-выражение в экземпляр интерфейса, используя функцию-расширение метода invoke интерфейса.
🔥22👍51🤔1
Краткое пособие по эффективному мотивационному менеджменту в картинках.

#memes
😁194
🤔 #дайджест полезностей для мобильного разработчика

🔹 Стоит ли нанимать сверхквалифицированных инженеров в ИТ? — повышать свою квалификацию, когда на рынке уже нет места для твоих глубоких знаний или расширять свои навыки в смежных областях

🔹 Продвинутые анимации в SwiftUI — разбор новых штук для адаптивного и приятного интерфейса

🔹 Почему IT не сделает тебя богатым — как все работает на самом деле

🔹 Комбинирование разных типов диаграмм для создания уникального дизайна — платформа визуализации данных для создания кастомных диаграмм с минимальным количеством кода

🔹 Android Studio for Platform — версия IDE на основе AOSP с использованием Soong
👍9🎉85🤩4🔥3
😎📱 Mobile Team Meetup

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

Доклады

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

🔹 Подводные камни Live Activities. Live Activities — это современный способ уведомлять пользователей, который стал более актуальным с выходом iPhone 15. Расскажут про особенности и распространённые ошибки в реализации данной функции.

🔹 Как мы сделали дизайн-систему Яндекс Go на SwiftUI. Как сохранить единый UI в огромном приложении и при этом значительно ускорить скорость разработки? В докладе вы узнаете, как устроена дизайн-система Яндекс Go и как ее реализовали на SwiftUI.

🔹 Управление шиммерами с бекенда — опыт Маркета. Почему иногда нужно делать свои велосипеды, когда питон лучше КММ’а

#мероприятие
👍54
🥢🥢 Разделение данных с помощью .chunked()

Swift Algorithms — это пакет алгоритмов с открытым исходным кодом, содержащий множество универсальных алгоритмов, найденных в других популярных языках программирования.

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

В этой статье рассматривается, как реализовать алгоритм .chunked() для фрагментации массива данных и отображения его в UI.

Пакет Swift Algorithms можно добавить в проект с помощью Swift Package Manager и импортирован с помощью import Algorithms.

Подробнее

#туториал
6👍1
💪🔥 Пишем свой рендеринг графики на SwiftUI и запускаем на нем Doom

В видосе расскажут, как можно скрещивать старое и новое, как несовместимые технологии живут вместе — соберут Doom и запустят на iOS с использованием в качестве пикселей все, начиная от квадратов и заканчивая UI-элементами из библиотеки SwiftUI.

Сессия в формате исследования, получение удовольствия от процесса и результата. Плюс рефлексия на тему качества кода, которому уже 30 лет, и он по-прежнему собирается. Будет C, SwiftUI, капелька математики и много фана.

Смотреть

#видео
👍71🔥1
Ищем IT-специалистов, желающих поговорить o SQL

Заполните анкету – https://forms.gle/7X6kuAbE93ckBYcX7
Мы напишем вам, чтобы договориться о времени😉

Кого ищем?
Специалистов, которые учатся SQL самостоятельно и планируют углубить свои знания.

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

Как будет проходить?
Длительность до 30 минут в формате онлайн, в удобное для вас время.
Мы пообщаемся про реальные задачи связанные с базами данных и вариантах обучения.

Чего точно не будет:
Никаких продаж с нашей стороны.

Благодарность:
Всем участникам интервью мы дадим в подарок курс по Machine learning c практикующим преподавателем из Stripe.

Приходите, будет уютно🙌
4
Avito iOS meetup

10 октября в московском офисе Авито прошёл Avito iOS meetup. Спикеры из Авито, МТС и Тинькофф Страхования рассказали про подход async/await, фреймворк SwiftUI и mergeable libraries. В докладах разобрали теорию и реальные кейсы из опыта, которые гости обсудили с докладчиками после выступлений.

Программа

8:02 — Вступление
10:05 — Async / Await. Лучшие практики, советы и особенности
33:23 — SwiftUI — уже пора?
01:39:08 — Гармония статики и динамики: погружаемся в mergeable libraries

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

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍73
🤔 #дайджест полезностей для мобильного разработчика

🔹 Собеседование в Яндекс — собеседование на позицию Android разработчика проводит техлид Яндекса

🔹 KAPT и KSP в Android — о различиях между Kapt и Ksp

🔹 Скриншот-тесты — польза тестирования скриншотов на практике

🔹 Flappy Musk.eter — создание аркадной игры на Jetpack Compose

🔹 Kermit — логирование Kotlin Multiplatform
👍71🥰1
#вопросы_с_собеседования

Вопрос по Kotlin

Расскажите о Data классах. Какие преимущества они имеют?

Data класс предназначен исключительно для хранения каких-либо данных.

Основное преимущество: для параметров, переданных в основном конструкторе автоматически будут переопределены методы toString(), equals(), hashCode(), copy().

Также для каждой переменной, объявленной в основном конструкторе, автоматически генерируются функции componentN(), где N — номер позиции переменной в конструкторе.
7👍3🥰1
👨‍💻 9 трендов в найме айтишников в 2023 году

Рассказываем, что интересного происходит в найме IT-специалистов.

По данным Хабр Карьеры, бэкендеры и фронтендеры испытывают трудности с поиском работы — спрос на них уменьшился на 4% и 15% соответственно.

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

Читать статью
👍6🥰1
🧑‍🍳🧑‍🍳 Полный курс по QA. Как правильно писать тесты

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

00:02:37 — Терминология
00:09:29 — Unit Testing
00:22:51 — Зачем писать тесты
00:28:32 — Инструментальные тесты
00:30:29 — End-to-End тестирование
00:43:25 — Code Coverage
00:48:27 — Blackbox Testing
00:52:36 — Performance Testing
01:02:13 — Test-driven development
01:08:43 — Инфраструктура
01:19:07 — Что такое QA

#видео
4