🍏⚙️⚙️ 8 советов по оптимизации приложения для iOS
Ведущий со спикером дают практические советы и разбирают способы повышения производительности в видео.
01:48 – Удаление двоичных символов
05:18 – Совместное использование кода и ассетов
08:55 – Оптимизация ассетов
13:23 – Keep the Main Thread Light
17:37 – Предпочитайте Static Dispatch
22:20 – Понимание вашего менеджера пакетов
26:54 – Оптимизация моделей CoreML
30:36 – Никогда не прекращайте совершенствоваться
#видео
Ведущий со спикером дают практические советы и разбирают способы повышения производительности в видео.
01:48 – Удаление двоичных символов
05:18 – Совместное использование кода и ассетов
08:55 – Оптимизация ассетов
13:23 – Keep the Main Thread Light
17:37 – Предпочитайте Static Dispatch
22:20 – Понимание вашего менеджера пакетов
26:54 – Оптимизация моделей CoreML
30:36 – Никогда не прекращайте совершенствоваться
#видео
👍11❤2
🧑🍳🧑🍳 Kotlin Multiplatform и плагины компилятора на практике
О докладе:
Плагины компилятора Kotlin — мощный инструмент для оптимизации кода приложения, автоматизации решения ряда задач. Их достоинством является легковесность и гибкость использования. Также плагины компилятора Kotlin поддерживают различные таргеты и подходят для Kotlin Multiplatform, в том числе и для решения проблем общего кода.
Спикер покажет и расскажет, как с помощью данного инструментария решать практические задачи в приложениях Kotlin Multiplatform, учитывать различные нюансы и подводные камни. Доклад будет полезен всем разработчикам, интересующимся плагинами компилятора Kotlin, а также разработкой эффективных решений под Kotlin Multiplatform.
Смотреть видео
#видео
О докладе:
Плагины компилятора Kotlin — мощный инструмент для оптимизации кода приложения, автоматизации решения ряда задач. Их достоинством является легковесность и гибкость использования. Также плагины компилятора Kotlin поддерживают различные таргеты и подходят для Kotlin Multiplatform, в том числе и для решения проблем общего кода.
Спикер покажет и расскажет, как с помощью данного инструментария решать практические задачи в приложениях Kotlin Multiplatform, учитывать различные нюансы и подводные камни. Доклад будет полезен всем разработчикам, интересующимся плагинами компилятора Kotlin, а также разработкой эффективных решений под Kotlin Multiplatform.
Смотреть видео
#видео
❤9👍3
🤔 #дайджест полезностей для мобильного разработчика
❇️ API Level ниже 19 больше не поддерживаются библиотеками Jetpack
❇️ ЗАБУДЬ про UITableView — DiffableDataSource упростит код, отобразит таблицу на основе сделанных снимков и анимирует ячейки
❇️ Русификация китайских авто — о наборе инструментов, которые смогут облегчить путь, если вы собираетесь заняться кастомизацией Android в машине
❇️ ОС Аврора. Статус поддержки фреймворка Flutter — вы узнаете, почему команда операционной системы «Аврора» решила задуматься над адаптацией популярных кроссплатформенных фреймворков
❇️ SwiftUI: Adaptable Stack — динамическое переключение между HStack и VStack на основе пользовательских настроек размера текста
❇️ API Level ниже 19 больше не поддерживаются библиотеками Jetpack
❇️ ЗАБУДЬ про UITableView — DiffableDataSource упростит код, отобразит таблицу на основе сделанных снимков и анимирует ячейки
❇️ Русификация китайских авто — о наборе инструментов, которые смогут облегчить путь, если вы собираетесь заняться кастомизацией Android в машине
❇️ ОС Аврора. Статус поддержки фреймворка Flutter — вы узнаете, почему команда операционной системы «Аврора» решила задуматься над адаптацией популярных кроссплатформенных фреймворков
❇️ SwiftUI: Adaptable Stack — динамическое переключение между HStack и VStack на основе пользовательских настроек размера текста
❤6🔥3👍1
#вопросы_с_собеседования
Какие ограничения есть для протоколов, у которых есть associated type?
Так как протоколы с assotiated type не являются достаточно конкретными, объявить переменную данного типа или передать напрямик подобный тип как параметр функции невозможно.
Здесь на помощь нам приходят ключевые слова any и some. Данные два ключевых слова решают одну и ту же проблему, но немного по-разному.
any - создает коробку вокруг конкретного типа, который удовлетворяет данному протоколу. some - указывает, что пусть это не известно заранее, но на момент компиляции программы конкретный тип переменной будет известен точно.
Какие ограничения есть для протоколов, у которых есть associated type?
🤔7❤5
🌍📌 Обновление местоположения пользователя с помощью 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
}
}
Подробнее читайте здесь
#гайд
Создание 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
}
}
Подробнее читайте здесь
#гайд
👍21❤7
😎😎 Новые подходы к работе с регулярными выражениями в Swift
Спикер сравнит преимущества нового фреймворка RegexBuilder с устоявшимися подходами в использовании класса NSRegularExpression из библиотеки Foundation. Все это на примерах и с разбором практик его применения.
Он начнет с разговора о трендах Apple: что привело к появлению RegexBuilder. Почему инструменты из Foundation оказались недостаточными для решения задач работы с регулярными выражениями. Была ли неэффективность в «старом» подходе, что потребовало его замены? Были ли иные пути модификации NSRegularExpression?
Далее спикер расскажет, что внутри RegexBuilder, в чем отличие одного компонента от другого, какие есть случаи его применения и так ли он лучше предшественника.
Затем перейдет к практической реализации использования нового подхода. Сравнит на кейсах, как одни и те же задачи применения регулярных выражений решаются с использованием нового фреймворка.
В завершении выступления он ответит на вопрос: зачем Apple очередной декларативный фреймворк и к чему этот тренд идет.
Смотреть
#видео
Спикер сравнит преимущества нового фреймворка RegexBuilder с устоявшимися подходами в использовании класса NSRegularExpression из библиотеки Foundation. Все это на примерах и с разбором практик его применения.
Он начнет с разговора о трендах Apple: что привело к появлению RegexBuilder. Почему инструменты из Foundation оказались недостаточными для решения задач работы с регулярными выражениями. Была ли неэффективность в «старом» подходе, что потребовало его замены? Были ли иные пути модификации NSRegularExpression?
Далее спикер расскажет, что внутри RegexBuilder, в чем отличие одного компонента от другого, какие есть случаи его применения и так ли он лучше предшественника.
Затем перейдет к практической реализации использования нового подхода. Сравнит на кейсах, как одни и те же задачи применения регулярных выражений решаются с использованием нового фреймворка.
В завершении выступления он ответит на вопрос: зачем Apple очередной декларативный фреймворк и к чему этот тренд идет.
Смотреть
#видео
👍6❤2
Особенности диспетчеризации потоков и выполнение акторов
Акторы гарантируют, что ваш код выполняется в определенном потоке, например, в основном или фоновом потоке. Они помогают вам синхронизировать доступ к mutable состояниям и предотвращать гонку данных. Однако разработчики обычно неправильно понимают, как акторы диспетчерезуют потоки в несинхронных контекстах. Это очень важно понимать, чтобы избежать неожиданных сбоев.
Диспетчеризация потоков в асинхронных контекстах
Наиболее распространенной диспетчеризации при работе с акторами является их использование в асинхронных средах. В случае, если ваш вызывающий код обращается к методам, приписываемым субъекту, вам придется использовать задачу или использовать тот же глобальный субъект.
Подробнее изучить работу в асинхронных и синхронных средах, а также Strict Concurrency Checking можно здесь
#туториал
Акторы гарантируют, что ваш код выполняется в определенном потоке, например, в основном или фоновом потоке. Они помогают вам синхронизировать доступ к mutable состояниям и предотвращать гонку данных. Однако разработчики обычно неправильно понимают, как акторы диспетчерезуют потоки в несинхронных контекстах. Это очень важно понимать, чтобы избежать неожиданных сбоев.
Диспетчеризация потоков в асинхронных контекстах
Наиболее распространенной диспетчеризации при работе с акторами является их использование в асинхронных средах. В случае, если ваш вызывающий код обращается к методам, приписываемым субъекту, вам придется использовать задачу или использовать тот же глобальный субъект.
Подробнее изучить работу в асинхронных и синхронных средах, а также Strict Concurrency Checking можно здесь
#туториал
🔥19👍5❤2
#вопросы_с_собеседований
Как работают SAM-conversions?
Single Abstract Method (SAM) интерфейсы — это интерфейсы только с одним абстрактным методом (функциональные интерфейсы). Kotlin поддерживает соглашение SAM — автоматическую конвертацию функций и lambda между Kotlin и Java.
SAM-conversions позволяют использовать Java-интерфейсы с единственным абстрактным методом в Kotlin, как если бы это были функциональные типы. В Kotlin вы можете использовать такие интерфейсы для создания лямбда-выражений без явного определения функционального типа.
При использовании интерфейса с единственным абстрактным методом в качестве функционального интерфейса в Java, вы можете передавать его экземпляры вместо лямбда-выражений. Это тоже возможно в Kotlin, но на самом деле Kotlin предоставляет более простой синтаксис для этого. Когда вам нужно использовать функциональный интерфейс в Kotlin, вы можете передать lambda-выражение, которое соответствует сигнатуре единственного метода интерфейса, вместо экземпляра интерфейса. Компилятор сам преобразует лямбда-выражение в экземпляр интерфейса, используя функцию-расширение метода invoke интерфейса.
Как работают SAM-conversions?
🔥22👍5❤1🤔1
🤔 #дайджест полезностей для мобильного разработчика
🔹 Стоит ли нанимать сверхквалифицированных инженеров в ИТ? — повышать свою квалификацию, когда на рынке уже нет места для твоих глубоких знаний или расширять свои навыки в смежных областях
🔹 Продвинутые анимации в SwiftUI — разбор новых штук для адаптивного и приятного интерфейса
🔹 Почему IT не сделает тебя богатым — как все работает на самом деле
🔹 Комбинирование разных типов диаграмм для создания уникального дизайна — платформа визуализации данных для создания кастомных диаграмм с минимальным количеством кода
🔹 Android Studio for Platform — версия IDE на основе AOSP с использованием Soong
🔹 Стоит ли нанимать сверхквалифицированных инженеров в ИТ? — повышать свою квалификацию, когда на рынке уже нет места для твоих глубоких знаний или расширять свои навыки в смежных областях
🔹 Продвинутые анимации в SwiftUI — разбор новых штук для адаптивного и приятного интерфейса
🔹 Почему IT не сделает тебя богатым — как все работает на самом деле
🔹 Комбинирование разных типов диаграмм для создания уникального дизайна — платформа визуализации данных для создания кастомных диаграмм с минимальным количеством кода
🔹 Android Studio for Platform — версия IDE на основе AOSP с использованием Soong
👍9🎉8❤5🤩4🔥3
😎📱 Mobile Team Meetup
Открытый диалог с командами мобильной разработки Яндекса про технологии, сервисы и карьерные возможности.
Расскажут как всё устроено под капотом, почему всем нравится то, что они делают и какие возможности предлагают. Можно участвовать онлайн из любого города России.
Доклады
🔹 Движение вверх: альтернативные пути развития для мобильных разработчиков и тимлидов. Правда ли, что у мобильного разработчика всего 2 пути: становиться экспертом в своей области или уходить в тимлиды? А какие варианты у мобильного тимлида? Попробуем ответить на эти вопросы и в процессе поделимся опытом нашего бизнес юнита.
🔹 Подводные камни Live Activities. Live Activities — это современный способ уведомлять пользователей, который стал более актуальным с выходом iPhone 15. Расскажут про особенности и распространённые ошибки в реализации данной функции.
🔹 Как мы сделали дизайн-систему Яндекс Go на SwiftUI. Как сохранить единый UI в огромном приложении и при этом значительно ускорить скорость разработки? В докладе вы узнаете, как устроена дизайн-система Яндекс Go и как ее реализовали на SwiftUI.
🔹 Управление шиммерами с бекенда — опыт Маркета. Почему иногда нужно делать свои велосипеды, когда питон лучше КММ’а
#мероприятие
Открытый диалог с командами мобильной разработки Яндекса про технологии, сервисы и карьерные возможности.
Расскажут как всё устроено под капотом, почему всем нравится то, что они делают и какие возможности предлагают. Можно участвовать онлайн из любого города России.
Доклады
🔹 Движение вверх: альтернативные пути развития для мобильных разработчиков и тимлидов. Правда ли, что у мобильного разработчика всего 2 пути: становиться экспертом в своей области или уходить в тимлиды? А какие варианты у мобильного тимлида? Попробуем ответить на эти вопросы и в процессе поделимся опытом нашего бизнес юнита.
🔹 Подводные камни Live Activities. Live Activities — это современный способ уведомлять пользователей, который стал более актуальным с выходом iPhone 15. Расскажут про особенности и распространённые ошибки в реализации данной функции.
🔹 Как мы сделали дизайн-систему Яндекс Go на SwiftUI. Как сохранить единый UI в огромном приложении и при этом значительно ускорить скорость разработки? В докладе вы узнаете, как устроена дизайн-система Яндекс Go и как ее реализовали на SwiftUI.
🔹 Управление шиммерами с бекенда — опыт Маркета. Почему иногда нужно делать свои велосипеды, когда питон лучше КММ’а
#мероприятие
👍5❤4
🥢🥢 Разделение данных с помощью .chunked()
Swift Algorithms — это пакет алгоритмов с открытым исходным кодом, содержащий множество универсальных алгоритмов, найденных в других популярных языках программирования.
Он был создан инженерами Apple, чтобы помочь разработчикам улучшить код. Если вы пишете много длинных необработанных циклов, которые часто бывает трудно читать и понимать, очень вероятно, что в пакете есть алгоритм, который вы можете использовать вместо этого.
В этой статье рассматривается, как реализовать алгоритм .chunked() для фрагментации массива данных и отображения его в UI.
Пакет Swift Algorithms можно добавить в проект с помощью Swift Package Manager и импортирован с помощью import Algorithms.
Подробнее
#туториал
Swift Algorithms — это пакет алгоритмов с открытым исходным кодом, содержащий множество универсальных алгоритмов, найденных в других популярных языках программирования.
Он был создан инженерами Apple, чтобы помочь разработчикам улучшить код. Если вы пишете много длинных необработанных циклов, которые часто бывает трудно читать и понимать, очень вероятно, что в пакете есть алгоритм, который вы можете использовать вместо этого.
В этой статье рассматривается, как реализовать алгоритм .chunked() для фрагментации массива данных и отображения его в UI.
Пакет Swift Algorithms можно добавить в проект с помощью Swift Package Manager и импортирован с помощью import Algorithms.
Подробнее
#туториал
❤6👍1
💪🔥 Пишем свой рендеринг графики на SwiftUI и запускаем на нем Doom
В видосе расскажут, как можно скрещивать старое и новое, как несовместимые технологии живут вместе — соберут Doom и запустят на iOS с использованием в качестве пикселей все, начиная от квадратов и заканчивая UI-элементами из библиотеки SwiftUI.
Сессия в формате исследования, получение удовольствия от процесса и результата. Плюс рефлексия на тему качества кода, которому уже 30 лет, и он по-прежнему собирается. Будет C, SwiftUI, капелька математики и много фана.
Смотреть
#видео
В видосе расскажут, как можно скрещивать старое и новое, как несовместимые технологии живут вместе — соберут Doom и запустят на iOS с использованием в качестве пикселей все, начиная от квадратов и заканчивая UI-элементами из библиотеки SwiftUI.
Сессия в формате исследования, получение удовольствия от процесса и результата. Плюс рефлексия на тему качества кода, которому уже 30 лет, и он по-прежнему собирается. Будет C, SwiftUI, капелька математики и много фана.
Смотреть
#видео
👍7❤1🔥1
Ищем IT-специалистов, желающих поговорить o SQL
Заполните анкету – https://forms.gle/7X6kuAbE93ckBYcX7
Мы напишем вам, чтобы договориться о времени😉
Кого ищем?
Специалистов, которые учатся SQL самостоятельно и планируют углубить свои знания.
Зачем нам это нужно?
Мы собираемся запускать новый продукт по SQL, хотим сделать его максимально полезным и отвечающим потребностям клиентов.
Как будет проходить?
Длительность до 30 минут в формате онлайн, в удобное для вас время.
Мы пообщаемся про реальные задачи связанные с базами данных и вариантах обучения.
Чего точно не будет:
Никаких продаж с нашей стороны.
Благодарность:
Всем участникам интервью мы дадим в подарок курс по Machine learning c практикующим преподавателем из Stripe.
Приходите, будет уютно🙌
Заполните анкету – 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
#мероприятие
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: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍7❤3