Мобильные разработчики редко сталкиваются в работе со сложными структурами данных. Как правило, в рутинных задачах вполне достаточно уметь использовать Array, Dictionary и Set.
Наверное, вы слышали и о деревьях, графах, связанных списках Tree, Graph, Linked List, но в повседневной работе мобильного разработчика вряд ли вы с ними сталкиваетесь. Автор рассказывает о редких и недооцененных структурах данных. И самое главное, как впустить их в свою рутинную работу программиста.
Ознакомиться можно по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый способ оптимизации стабильности в Jetpack Compose
Новый strong skipping mode для управления стабильностью классов в Jetpack Compose меняет рекомпозиции в вашем приложении.
В этой статье речь идёт о том, какие случаи он решает за вас, а какие необходимо контролировать вручную. Также ответы на часто возникающие вопросы, например, нужно ли по-прежнему помнить о лямбда-функциях, нужны ли неизменяемые коллекции Kotlinx или даже как стабилизировать все классы вашей доменной модели.
Новый strong skipping mode для управления стабильностью классов в Jetpack Compose меняет рекомпозиции в вашем приложении.
В этой статье речь идёт о том, какие случаи он решает за вас, а какие необходимо контролировать вручную. Также ответы на часто возникающие вопросы, например, нужно ли по-прежнему помнить о лямбда-функциях, нужны ли неизменяемые коллекции Kotlinx или даже как стабилизировать все классы вашей доменной модели.
🥰2
Большинство багов уже пофиксили, так что можно обновляться. Кто уже протестировал?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3🔥1
→ Новый раздел «Диагностика системы» в меню «Настройки» → «Система». Здесь можно провести тесты дисплея и сенсорного слоя, а также узнать статистику использования аккумулятора и накопителя. Также можно провести диагностику другого устройства.
→ Функция «Оптимизация зарядки» в меню «Настройки» → «Батарея». При её включении аккумулятор смартфона будет заряжаться до 80%, что позволит продлить срок его службы.
→ Из системы исчез PNG-файл шрифта, отвечающий за эмодзи. Впервые векторные изображения эмодзи появились в Android 13, но до сих пор в системе оставался старый формат эмодзи для совместимости.
→ Исправлена проблема, из-за которой устройства Pixel могли «окирпичиться» (перестать загружаться) при сбросе к заводскому состоянию вскоре после установки обновления системы.
→ Устранены другие ошибки в разных элементах операционной системы.
Операционная система находится в фазе Platform Stability: сейчас вносятся лишь минорные изменения, тогда как основные программные интерфейсы и компоненты приближены к релизному состоянию. Это позволяет разработчикам проводить оптимизацию своих приложений.
#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉9
Кто хотел, но решился: как стать Android разработчиком
Крутая статья с описанием всех скиллов, которые должны быть у каждого разработчика на Android. Для каждого пункта есть подробный разбор, курсы, книги, материалы для изучения.
Также большим бонусом, внутри лежит roadmap — статья
Крутая статья с описанием всех скиллов, которые должны быть у каждого разработчика на Android. Для каждого пункта есть подробный разбор, курсы, книги, материалы для изучения.
Также большим бонусом, внутри лежит roadmap — статья
This media is not supported in your browser
VIEW IN TELEGRAM
Оставляете такие комменты? И возвращаетесь ли к ним потом?)
❤11😁9👏1😢1
Для создания нужного лэйаута в SwiftUI можно использовать LazyVGrid, если нужно вертикальное отображение, и LazyHGrid (если горизонтальное). Тем самым мы сможем добиться нужного эффекта, при этом адаптируемого к различным ориентациям и размерам экрана.
Бонусом интерактивное руководство, чтобы помочь вам получить представление о том, как работает система верстки SwiftUI.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Серверная реализация UI для Android
В Android можно создать динамически адаптируемый UI с помощью концепции Server Driven UI. Это позволяет определять UI на сервере, а затем передавать его на клиентское устройство, что обеспечивает гибкость и обновляемость UI без необходимости обновления приложения.
📖 В этой статье разбираются не только основы Server Driven UI, но и варианты реализации, включая использование JSON для описания компонентов интерфейса, обработку данных на клиенте и сервере, а также стратегию кэширования и оптимизации производительности.
Кстати, у «Яндекса» есть классная библиотека, которая отлично подходит под эту статью — сам DivKit и репозиторий GitHub.
В Android можно создать динамически адаптируемый UI с помощью концепции Server Driven UI. Это позволяет определять UI на сервере, а затем передавать его на клиентское устройство, что обеспечивает гибкость и обновляемость UI без необходимости обновления приложения.
📖 В этой статье разбираются не только основы Server Driven UI, но и варианты реализации, включая использование JSON для описания компонентов интерфейса, обработку данных на клиенте и сервере, а также стратегию кэширования и оптимизации производительности.
Кстати, у «Яндекса» есть классная библиотека, которая отлично подходит под эту статью — сам DivKit и репозиторий GitHub.
👍2
Практический пример:
Поиск является обычной функцией во многих приложениях. Когда пользователь вводит поисковый запрос, мы часто хотим избежать отправки нового запроса на сервер при каждом изменении запроса. Вместо этого мы могли бы отложить запрос и отправить его только после того, как пользователь перестанет печатать на определенное время.
Реализация поиска в SwiftUI
struct SearchView: View {
@State private var userSearchInput: String = «»
var body: some View {
VStack {
// Show loading indicator, error, or results
}
.searchable(text: $userSearchInput)
.onChange(of: userSearchInput) { _, newValue in
viewModel.updateSearch(userSearchInput: newValue)
}
}
}
1. Мы используем модификатор поиска SwiftUI для настройки отображения поля поиска.
2. Мы используем переменную @State для передачи в качестве привязки к модификатору, доступному для поиска. Она будет обновляться автоматически по мере изменения пользователем поискового запроса.
3. Мы подписываемся на изменения в поиске, чтобы уведомить нашу модель просмотра о том, что ей может потребоваться обновить результаты.
Реализация в ViewModel
Далее посмотрим, как может быть реализована ViewModel:
class SearchViewModel {
private var userSearchInputSubject = PassthroughSubject()
private var cancellables = Set()
init() {
userSearchInputSubject
.debounce(for: 0.5, scheduler: RunLoop.main)
.sink { [weak self] searchInput in
self?.reload(with: searchInput)
}
.store(in: &cancellables)
}
func updateSearch(userSearchInput: String?) {
userSearchInputSubject.send(userSearchInput)
}
}
Используя оператор debounce, мы гарантируем, что запросы на сервер будут отправляться только тогда, когда пользователь перестанет печатать на полсекунды, что сокращает количество ненужных запросов и повышает общую производительность нашего приложения.
#гайд #SwiftUI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
✍️ «Библиотека программиста» находится в поиске автора на написание книжных рецензий
Кто нужен?
● Энтузиасты (джуны и выше), которые которые разбираются в IT
● Любители книг, которые хотели бы получать деньги за чтение и написание рецензий
● Работаем с самозанятыми (компенсируем налог), ИП
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
✉️ Станьте частью нашей команды — присылайте резюме и примеры работ [email protected]
Кто нужен?
● Энтузиасты (джуны и выше), которые которые разбираются в IT
● Любители книг, которые хотели бы получать деньги за чтение и написание рецензий
● Работаем с самозанятыми (компенсируем налог), ИП
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
✉️ Станьте частью нашей команды — присылайте резюме и примеры работ [email protected]
👏3
Проекты с открытым исходным кодом — самое правильное место, где можно узнать о лучших практиках, стилях программирования и многих других темах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Конкурс года в «Библиотеке программиста»: смонтируйте короткий вертикальный ролик формата Shorts/Reels* на тему программирования и разработки — лучший автор получит 40 тысяч рублей
Подробные условия:
Какие ролики мы не принимаем:
Таймлайн:
2 августа — заканчиваем принимать видео
⬇️
3 августа — начинаем загружать лучшие видео в инстаграм
⬇️
9 августа — подводим итоги
*Организация Meta признана экстремистской в РФ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Как подружить iOS и векторную графику 🤝
Рано или поздно каждый разработчик столкнется с тем, что дизайнеры в его команде решат создать дизайн-систему. В этой дизайн-системе будут иконки и, может быть, какие-то иллюстрации. В рамках доклада спикер поговорил о том, как настроить экспорт этих картинок из Figma, разместить их на CDN и начать удобно с ними работать.
Спикер раскрыл некоторые секреты работы xcassets и показал, как, отказавшись от них, можно более эффективно хранить ассеты в пакете приложения.
Рано или поздно каждый разработчик столкнется с тем, что дизайнеры в его команде решат создать дизайн-систему. В этой дизайн-системе будут иконки и, может быть, какие-то иллюстрации. В рамках доклада спикер поговорил о том, как настроить экспорт этих картинок из Figma, разместить их на CDN и начать удобно с ними работать.
Спикер раскрыл некоторые секреты работы xcassets и показал, как, отказавшись от них, можно более эффективно хранить ассеты в пакете приложения.
😁2
Результаты опроса разработчиков Stack Overflow 2024
Обстановка такая: Erlang остается самой «дорогой» для разработчиков технологией. Swift и Objective-C идут почти вровень (причем по сравнению с прошлым годом Swift обогнал своего старого конкурента), а Kotlin заметно отстает по зарплате. Однако оплата у всех значительно снизилась.
Изменилась ваша ЗП за последние 2-3 месяца?
Обстановка такая: Erlang остается самой «дорогой» для разработчиков технологией. Swift и Objective-C идут почти вровень (причем по сравнению с прошлым годом Swift обогнал своего старого конкурента), а Kotlin заметно отстает по зарплате. Однако оплата у всех значительно снизилась.
Изменилась ваша ЗП за последние 2-3 месяца?
😢3👍1🎉1
🆕 JavaScript эволюционирует: новые методы и функции для эффективной разработки
Нововведения нацелены на повышение читаемости и эффективности кода. Рассмотрим, как Object.groupBy, регулярные выражения с V-флагом, Promise.withResolvers и методы мутации массивов решают актуальные задачи программирования.
🔗 Читать статью
🔗 Зеркало
Нововведения нацелены на повышение читаемости и эффективности кода. Рассмотрим, как Object.groupBy, регулярные выражения с V-флагом, Promise.withResolvers и методы мутации массивов решают актуальные задачи программирования.
🔗 Читать статью
🔗 Зеркало
😁4
⚙️ Микрооптимизация в разработке Android
Несмотря на современные мощные устройства, оптимизация по-прежнему необходима для повышения производительности и экономии заряда батареи.
В видео делятся историческими и современными подходами, подчеркивая важность баланса между читаемостью и эффективностью кода.
Из основного:
— Маленькие оптимизации, такие как установка начальных размеров коллекций, уменьшают накладные расходы и потребление энергии.
— Kotlin предоставляет эффективные языковые примитивы, но некоторые высокоуровневые конструкции могут снижать производительность.
— Инструмент Kotlin Explorer помогает анализировать байт-код для выявления узких мест.
— Специализированные структуры данных, такие как ScatterMap, улучшают локальность кэша и уменьшают накладные расходы.
Главное — всегда начинать с профилирования, чтобы понять, где именно применить оптимизации.
Ссылка на видео📺
Несмотря на современные мощные устройства, оптимизация по-прежнему необходима для повышения производительности и экономии заряда батареи.
В видео делятся историческими и современными подходами, подчеркивая важность баланса между читаемостью и эффективностью кода.
Из основного:
— Маленькие оптимизации, такие как установка начальных размеров коллекций, уменьшают накладные расходы и потребление энергии.
— Kotlin предоставляет эффективные языковые примитивы, но некоторые высокоуровневые конструкции могут снижать производительность.
— Инструмент Kotlin Explorer помогает анализировать байт-код для выявления узких мест.
— Специализированные структуры данных, такие как ScatterMap, улучшают локальность кэша и уменьшают накладные расходы.
Главное — всегда начинать с профилирования, чтобы понять, где именно применить оптимизации.
Ссылка на видео
Please open Telegram to view this post
VIEW IN TELEGRAM
📊 Загрузки падают, а доходы растут
В каком состоянии находится вся индустрия мобильных приложений? Это нелегко оценить, учитывая, что существует так много способов взглянуть на индустрию, но есть одна тенденция, о которой должен знать каждый, кто работает над приложением или игрой — будь вы инди-разработчик, маркетолог или руководитель, отвечающий за приложение.
Самый простой способ увидеть это на макроуровне (рынке) — использовать Индекс мобильных загрузок и Индекс мобильных доходов из AppFigures (смотрите график выше).
По состоянию на прошлую неделю индекс мобильных доходов для американского App Store составил 473.91. Показатель Google Play был намного ниже — 262.93, но все равно это высокий показатель.
А вот загрузки…
Индекс мобильных загрузок в американском App Store составил 70.96, а в Google Play — 61.24. Это очень низкие показатели.
Что это значит для вас
Если вы разработчик, маркетолог или просто человек, отвечающий за рост приложений, вам нужно следить именно за этой тенденцией. Меньше загрузок и больше приложений, чем когда-либо, означает, что вам придется работать еще усерднее, чтобы получить каждую загрузку. Оптимизация в App Store имеет значение, оптимизация рекламных расходов имеет значение, оптимизация онбординга имеет значение.
#аналитика
В каком состоянии находится вся индустрия мобильных приложений? Это нелегко оценить, учитывая, что существует так много способов взглянуть на индустрию, но есть одна тенденция, о которой должен знать каждый, кто работает над приложением или игрой — будь вы инди-разработчик, маркетолог или руководитель, отвечающий за приложение.
Самый простой способ увидеть это на макроуровне (рынке) — использовать Индекс мобильных загрузок и Индекс мобильных доходов из AppFigures (смотрите график выше).
По состоянию на прошлую неделю индекс мобильных доходов для американского App Store составил 473.91. Показатель Google Play был намного ниже — 262.93, но все равно это высокий показатель.
А вот загрузки…
Индекс мобильных загрузок в американском App Store составил 70.96, а в Google Play — 61.24. Это очень низкие показатели.
Что это значит для вас
Если вы разработчик, маркетолог или просто человек, отвечающий за рост приложений, вам нужно следить именно за этой тенденцией. Меньше загрузок и больше приложений, чем когда-либо, означает, что вам придется работать еще усерднее, чтобы получить каждую загрузку. Оптимизация в App Store имеет значение, оптимизация рекламных расходов имеет значение, оптимизация онбординга имеет значение.
#аналитика
❤1🔥1👾1
Пишем свой Swift макрос без лида, ИТ-курсов и кредитов
Сергей, iOS-разработчик в Альфа-Банке, в повседневной работе использует множество проверенных инструментов, а в свободное время исследует новые возможности и расширять свои горизонты.
В статье рассказал макросах в Swift 5.9, как их можно применять для избавление от бойлерплейта в коде, как их создавать, какие сложности есть с ними и куда всё это движется.
Сергей, iOS-разработчик в Альфа-Банке, в повседневной работе использует множество проверенных инструментов, а в свободное время исследует новые возможности и расширять свои горизонты.
В статье рассказал макросах в Swift 5.9, как их можно применять для избавление от бойлерплейта в коде, как их создавать, какие сложности есть с ними и куда всё это движется.
👍2🎉1