Mock Generator Development With Using Mockolo Library
https://medium.com/trendyol-tech/mock-generator-development-with-using-mockolo-library-c8c273f77d1b
#ios
👉 @developer_mobila
https://medium.com/trendyol-tech/mock-generator-development-with-using-mockolo-library-c8c273f77d1b
#ios
👉 @developer_mobila
👍1
Gradle Review Show, LIVE.
Гость: ведущий эксперт в области градловедения, разработчик из JetBrains и просто отличный парень — Константин Цховребов!
https://www.youtube.com/watch?v=YVz1ZuNR1rQ
#Android
👉 @developer_mobila
Гость: ведущий эксперт в области градловедения, разработчик из JetBrains и просто отличный парень — Константин Цховребов!
https://www.youtube.com/watch?v=YVz1ZuNR1rQ
#Android
👉 @developer_mobila
YouTube
Gradle Review Show, LIVE. 12/05/2023
Поддержать качество стрима
https://www.donationalerts.com/r/mobiledeveloper
The boys are back! Мы соберемся с вами еще раз, чтобы посмотреть интересные вещи в Gradle и поотвечать на какие-то вопросы. Поэтому готовьтесь заранее и ставьте колокольчик, чтобы…
https://www.donationalerts.com/r/mobiledeveloper
The boys are back! Мы соберемся с вами еще раз, чтобы посмотреть интересные вещи в Gradle и поотвечать на какие-то вопросы. Поэтому готовьтесь заранее и ставьте колокольчик, чтобы…
Forwarded from GitHub Сообщество
30DaysofSwift
Самостоятельный проект по изучению языка Swift.
Этот проект был полностью вдохновлен проектом Сэма Лу "100 дней Swift", после прочтения его сообщения на Medium я принял решение посвятить каждый свой день написанию Swift, это финальный код 30 маленьких Swift-проектов.
https://github.com/allenwong/30DaysofSwift
👉 @Githublib
Самостоятельный проект по изучению языка Swift.
Этот проект был полностью вдохновлен проектом Сэма Лу "100 дней Swift", после прочтения его сообщения на Medium я принял решение посвятить каждый свой день написанию Swift, это финальный код 30 маленьких Swift-проектов.
https://github.com/allenwong/30DaysofSwift
👉 @Githublib
👍3
Measuring Ping in iOS Apps: A Simple Solution
Сегодня я хочу поделиться с вами простым способом измерения пинга до выбранного сервера в iOS-приложении. Этот код отображает фактический пинг до сервера.
https://medium.com/@onlyapps/measuring-ping-in-ios-apps-a-simple-solution-13be82a15bf3
#ios
👉 @developer_mobila
Сегодня я хочу поделиться с вами простым способом измерения пинга до выбранного сервера в iOS-приложении. Этот код отображает фактический пинг до сервера.
https://medium.com/@onlyapps/measuring-ping-in-ios-apps-a-simple-solution-13be82a15bf3
#ios
👉 @developer_mobila
👍2
Stable vs Immutable и анимации на Compose
Какую анимацию выбрать: Composable или Suspend? Возможна ли анимация за 0 рекомпозиций? А что будет, если «обмануть» Compose и поставить Immutable на мутабельное значение? Об этом и многом другом рассказал Android-разработчик red_mad_robot Серёжа Чумиков.
00:00 Везде ли ставить Immutable
04:27 Immmutable vs Stable - что выбрать?
07:36 Передача примитивов vs целых объектов
08:28 Stable для параметров composable функций
09:24 Анимация на Compose
10:22 Composable-анимации
18:16 Suspend-анимации
21:14 Бесконечная анимация
25:20 Вопросы
https://www.youtube.com/watch?v=kcYa9xg8WAE
#Android
👉 @developer_mobila
Какую анимацию выбрать: Composable или Suspend? Возможна ли анимация за 0 рекомпозиций? А что будет, если «обмануть» Compose и поставить Immutable на мутабельное значение? Об этом и многом другом рассказал Android-разработчик red_mad_robot Серёжа Чумиков.
00:00 Везде ли ставить Immutable
04:27 Immmutable vs Stable - что выбрать?
07:36 Передача примитивов vs целых объектов
08:28 Stable для параметров composable функций
09:24 Анимация на Compose
10:22 Composable-анимации
18:16 Suspend-анимации
21:14 Бесконечная анимация
25:20 Вопросы
https://www.youtube.com/watch?v=kcYa9xg8WAE
#Android
👉 @developer_mobila
Как увеличить время сборки iOS с помощью модуляризации
Большинство мобильных команд понимают и ценят преимущества быстрой сборки. Возможность быстро компилировать и тестировать код означает ускорение разработки и итераций, что, в свою очередь, позволяет команде более регулярно и эффективно осуществлять поставки. Однако реальное достижение быстрого времени сборки и реализация долгосрочного решения, позволяющего поддерживать скорость сборки по мере роста кодовой базы, может оказаться сложной задачей. Существует целый ряд различных тактик, и если некоторые из них относительно просты - например, уменьшение размера поставляемых ресурсов, - то другие могут быть гораздо более сложными и даже опасными (например, сомнительные трюки с компилятором)!
https://www.runway.team/blog/how-to-improve-ios-build-times-with-modularization
#ios
👉 @developer_mobila
Большинство мобильных команд понимают и ценят преимущества быстрой сборки. Возможность быстро компилировать и тестировать код означает ускорение разработки и итераций, что, в свою очередь, позволяет команде более регулярно и эффективно осуществлять поставки. Однако реальное достижение быстрого времени сборки и реализация долгосрочного решения, позволяющего поддерживать скорость сборки по мере роста кодовой базы, может оказаться сложной задачей. Существует целый ряд различных тактик, и если некоторые из них относительно просты - например, уменьшение размера поставляемых ресурсов, - то другие могут быть гораздо более сложными и даже опасными (например, сомнительные трюки с компилятором)!
https://www.runway.team/blog/how-to-improve-ios-build-times-with-modularization
#ios
👉 @developer_mobila
🤔2
Android, MVVM with Clean Code
https://medium.com/@nicola.caferra/android-mvvm-with-clean-code-63995578253e
#Android
👉 @developer_mobila
https://medium.com/@nicola.caferra/android-mvvm-with-clean-code-63995578253e
#Android
👉 @developer_mobila
A complete failure of MVVM+C in SwiftUI
Как обычно, я собираюсь разглагольствовать на эту тему. По крайней мере, это должно дать вам возможность взглянуть на ситуацию с другой стороны, вне рамок MVVM.
Давайте оценим этот культовый дизайн MVVM+C:
#ios
👉 @developer_mobila
Как обычно, я собираюсь разглагольствовать на эту тему. По крайней мере, это должно дать вам возможность взглянуть на ситуацию с другой стороны, вне рамок MVVM.
Давайте оценим этот культовый дизайн MVVM+C:
final class UserFlowCoordinator: ObservableObject, Hashable {
// ...
private func usersListView() -> some View { // create a view
let viewModel = UsersListViewModel()
let usersListView = UsersListView(viewModel: viewModel)
bind(view: usersListView)
return usersListView
}
// ...
}
https://swift2931.medium.com/a-complete-failure-of-mvvm-c-in-swiftui-e62bdf20057c#ios
👉 @developer_mobila
This media is not supported in your browser
VIEW IN TELEGRAM
Picture in Picture Mode в android. Показываем видео в мини-окне
https://habr.com/ru/articles/734890/
#Android
👉 @developer_mobila
https://habr.com/ru/articles/734890/
#Android
👉 @developer_mobila
👍1
Как сделать свой сервер мобильному разработчику, если он никогда такого не делал?
У меня ушел один месяц на создание сервера. Две недели ушло на понимание функционала и сборку прототипа. Одну неделю я писал Ktor-сервер на Kotlin и визуал в приложении на Flutter. И еще одну неделю тестировал. И я хочу, чтобы вы сэкономили две недели, когда решите создать ваш бэкэнд.
Зачем мне свой сервер?
Два месяца назад я писал статью, о том что делаю приложение для изучения английских слов нейрокартинками «Как запомнить что-нибудь навсегда?» и она вас заинтересовала. Для приложения мне понадобился бэкэнд. Стало нужно уметь сохранять прогресс аккаунтов, отправлять пуши и на перспективу уметь делать обмен статистикой, достижения и соревнования. Нужно было выбрать как это сделать.
А чего не Firebase?
Я люблю Firebase, он удобный, хорошо-известный и масштабируемый. Но он не контролируется, его стало сложнее оплачивать из РФ, гипотетически его могут отключить совсем и если делать что-то сложнее удаленного хранилища он не подходит, а что-то не может.
https://habr.com/ru/articles/764790/
#Android
👉 @developer_mobila
У меня ушел один месяц на создание сервера. Две недели ушло на понимание функционала и сборку прототипа. Одну неделю я писал Ktor-сервер на Kotlin и визуал в приложении на Flutter. И еще одну неделю тестировал. И я хочу, чтобы вы сэкономили две недели, когда решите создать ваш бэкэнд.
Зачем мне свой сервер?
Два месяца назад я писал статью, о том что делаю приложение для изучения английских слов нейрокартинками «Как запомнить что-нибудь навсегда?» и она вас заинтересовала. Для приложения мне понадобился бэкэнд. Стало нужно уметь сохранять прогресс аккаунтов, отправлять пуши и на перспективу уметь делать обмен статистикой, достижения и соревнования. Нужно было выбрать как это сделать.
А чего не Firebase?
Я люблю Firebase, он удобный, хорошо-известный и масштабируемый. Но он не контролируется, его стало сложнее оплачивать из РФ, гипотетически его могут отключить совсем и если делать что-то сложнее удаленного хранилища он не подходит, а что-то не может.
https://habr.com/ru/articles/764790/
#Android
👉 @developer_mobila
👍2
Handling Android Permissions in Repository
В настоящее время существует два предпочтительных подхода к построению архитектуры Android. Первый - это Google Android Architecture, а второй - Clean Architecture.
Важнейшей частью архитектуры является слой данных, который включает в себя репозитории, предоставляющие данные остальным частям приложения. Репозитории содержат логику получения данных, например, получение текущего местоположения, получение данных с других устройств через Bluetooth и т.д. Однако начиная с Android 6 все стало сложнее. Было введено усовершенствование системы безопасности, предполагающее мелкозернистый контроль доступа, требующий запрашивать разрешения пользователя на доступ к важной информации или функциям. Этот механизм неудобен, так как предполагает запрос разрешений на уровне представления, через Activities или Fragments, а затем получение данных из хранилищ, что приводит к разбросу логики по разным уровням.
https://medium.com/@vuert/handling-android-permissions-in-repository-9c062b4ea85e
#Android
👉 @developer_mobila
В настоящее время существует два предпочтительных подхода к построению архитектуры Android. Первый - это Google Android Architecture, а второй - Clean Architecture.
Важнейшей частью архитектуры является слой данных, который включает в себя репозитории, предоставляющие данные остальным частям приложения. Репозитории содержат логику получения данных, например, получение текущего местоположения, получение данных с других устройств через Bluetooth и т.д. Однако начиная с Android 6 все стало сложнее. Было введено усовершенствование системы безопасности, предполагающее мелкозернистый контроль доступа, требующий запрашивать разрешения пользователя на доступ к важной информации или функциям. Этот механизм неудобен, так как предполагает запрос разрешений на уровне представления, через Activities или Fragments, а затем получение данных из хранилищ, что приводит к разбросу логики по разным уровням.
https://medium.com/@vuert/handling-android-permissions-in-repository-9c062b4ea85e
#Android
👉 @developer_mobila
👍2
Purr: просмотр и поиск в логах на Android
Purr — это инструмент командной строки zsh для просмотра и поиска в логах Android. Он использует fzf для обеспечения простого, но мощного пользовательского интерфейса, возможностей нечеткого поиска и многого другого.
Хотя logcat в Android Studio достаточен для большинства приложений, он ломается в таких ситуациях, как доступ только через терминал или когда требуется быстрый доступ к нескольким устройствам. При выполнении разработки на самой операционной системе Android разработчики возвращаются к использованию сырого adb logcat в shell.
Это неоптимально и уходит много времени на написание grep-запросов и копание в сплошном нефильтрованном сером тексте с плохим пользовательским опытом. Purr предназначен для решения этой проблемы — это мощная программа просмотра логов, работающая полностью в shell, способная быстро просматривать миллионы логов.
https://github.com/google/purr
#Android
👉 @developer_mobila
Purr — это инструмент командной строки zsh для просмотра и поиска в логах Android. Он использует fzf для обеспечения простого, но мощного пользовательского интерфейса, возможностей нечеткого поиска и многого другого.
Хотя logcat в Android Studio достаточен для большинства приложений, он ломается в таких ситуациях, как доступ только через терминал или когда требуется быстрый доступ к нескольким устройствам. При выполнении разработки на самой операционной системе Android разработчики возвращаются к использованию сырого adb logcat в shell.
Это неоптимально и уходит много времени на написание grep-запросов и копание в сплошном нефильтрованном сером тексте с плохим пользовательским опытом. Purr предназначен для решения этой проблемы — это мощная программа просмотра логов, работающая полностью в shell, способная быстро просматривать миллионы логов.
https://github.com/google/purr
#Android
👉 @developer_mobila
👍2
Измерение задержки старта iOS-приложений в масштабе Uber
Изменив архитектуру измерения задержки запуска, мы можем более надежно измерять эту метрику в мире предварительного прогрева.
В Uber мы одержимы идеей обеспечения высокой производительности и надежности для наших партнеров и клиентов. Мы относимся к снижению производительности приложения так же, как и к любым другим функциональным регрессиям.
Прежде чем вкладывать усилия в повышение производительности и надежности, мы должны понять, как работает наше приложение в реальных условиях. Мы используем различные инструменты для получения показателей, которые позволяют нам измерить производительность и надежность приложения. Мы также устанавливаем базовые показатели, чтобы гарантировать, что разработка новых функций будет соответствовать высокой планке производительности и надежности.
https://www.uber.com/en-LB/blog/measuring-performance-for-ios-apps-at-uber-scale/
#ios
👉 @developer_mobila
Изменив архитектуру измерения задержки запуска, мы можем более надежно измерять эту метрику в мире предварительного прогрева.
В Uber мы одержимы идеей обеспечения высокой производительности и надежности для наших партнеров и клиентов. Мы относимся к снижению производительности приложения так же, как и к любым другим функциональным регрессиям.
Прежде чем вкладывать усилия в повышение производительности и надежности, мы должны понять, как работает наше приложение в реальных условиях. Мы используем различные инструменты для получения показателей, которые позволяют нам измерить производительность и надежность приложения. Мы также устанавливаем базовые показатели, чтобы гарантировать, что разработка новых функций будет соответствовать высокой планке производительности и надежности.
https://www.uber.com/en-LB/blog/measuring-performance-for-ios-apps-at-uber-scale/
#ios
👉 @developer_mobila
👍1
12 ошибок при публикации приложения в RuStore — и как их избежать
Разработка приложения — трудоёмкий процесс, который требует множества усилий и времени. Но, как только заканчивается кодинг, необходимо опубликовать созданный продукт на цифровой витрине, чтобы пользователи могли его скачать и использовать. В статье рассмотрим 12 наиболее распространённых ошибок, которые допускают разработчики при публикации приложений в RuStore.
https://habr.com/ru/companies/vk/articles/737864/
#Android
👉 @developer_mobila
Разработка приложения — трудоёмкий процесс, который требует множества усилий и времени. Но, как только заканчивается кодинг, необходимо опубликовать созданный продукт на цифровой витрине, чтобы пользователи могли его скачать и использовать. В статье рассмотрим 12 наиболее распространённых ошибок, которые допускают разработчики при публикации приложений в RuStore.
https://habr.com/ru/companies/vk/articles/737864/
#Android
👉 @developer_mobila
👍2
О многообразии форм однонаправленных архитектур в Swift
Как SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет
Я уже писал о концепции “контейнеров состояний” в 2017 году. Шесть лет спустя мне все еще нравится строить на их основе большинство своих приложений, используя эту концепцию для двух главных слоев внутри моих приложений:
Слой представления: модель представления — это «контейнер состояния представления» (view state container), моделирующий состояние представления и бизнес-логику.
Доменный слой: обычно агрегирует корневые модели (или репозитории/сервисы данных), представляющие бизнес-правила и сохраняющие целостность и согласованность в рамках определенного ограниченного контекста (или сущности) в приложении.
Однако с 2017 года многое изменилось. В 2019 году Apple представила миру SwiftUI. И два года спустя появился async/await. Хоть мы и склонны думать, что хорошие архитектуры не должны зависеть от специфик фреймворков, хорошие архитектуры все-таки являются лояльными гражданами тех же самых фреймворков и общей экосистемы. Так… как же SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет? Давайте посмотрим.
https://jobandtalent.engineering/ios-architecture-an-state-container-based-approach-4f1a9b00b82e
#ios
👉 @developer_mobila
Как SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет
Я уже писал о концепции “контейнеров состояний” в 2017 году. Шесть лет спустя мне все еще нравится строить на их основе большинство своих приложений, используя эту концепцию для двух главных слоев внутри моих приложений:
Слой представления: модель представления — это «контейнер состояния представления» (view state container), моделирующий состояние представления и бизнес-логику.
Доменный слой: обычно агрегирует корневые модели (или репозитории/сервисы данных), представляющие бизнес-правила и сохраняющие целостность и согласованность в рамках определенного ограниченного контекста (или сущности) в приложении.
Однако с 2017 года многое изменилось. В 2019 году Apple представила миру SwiftUI. И два года спустя появился async/await. Хоть мы и склонны думать, что хорошие архитектуры не должны зависеть от специфик фреймворков, хорошие архитектуры все-таки являются лояльными гражданами тех же самых фреймворков и общей экосистемы. Так… как же SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет? Давайте посмотрим.
https://jobandtalent.engineering/ios-architecture-an-state-container-based-approach-4f1a9b00b82e
#ios
👉 @developer_mobila
Medium
iOS Architecture: A State Container based approach
iOS Architecture: A State Container based approach This article is the first in a three-part series. You can find the second one here and the third, and final one here. A warning about architecture …
👍2
Media is too big
VIEW IN TELEGRAM
Ускоряем написание кода
Делюсь популярными утилитами и фичами IDE, которые вы можете использовать, чтобы писать меньше кода == меньше багов
0:00 Вступление
0:44 Annotation Processing
2:46 Kotlin Symbol Processing
4:09 AvitoTech
4:37 Генерация кода из Gradle
5:08 Плагины Kotlin компилятора
6:20 Возможности IDE
7:50 Плагины IDE
8:43 Шаблоны Android Studio
9:18 Geminio
11:13 AI помощники
14:00 Заключение
источник
#Android
👉 @developer_mobila
Делюсь популярными утилитами и фичами IDE, которые вы можете использовать, чтобы писать меньше кода == меньше багов
0:00 Вступление
0:44 Annotation Processing
2:46 Kotlin Symbol Processing
4:09 AvitoTech
4:37 Генерация кода из Gradle
5:08 Плагины Kotlin компилятора
6:20 Возможности IDE
7:50 Плагины IDE
8:43 Шаблоны Android Studio
9:18 Geminio
11:13 AI помощники
14:00 Заключение
источник
#Android
👉 @developer_mobila
Как не писать сетевой слой в Android-приложениях с помощью автоматической генерации OpenAPI
Разрабатываемые приложения со временем имеют свойство увеличиваться и обрастать новой функциональностью. Как правило, сетевой слой при этом также разрастается, порой до немыслимых размеров. Поддерживать все это руками в какой-то момент становится довольно сложно. Мы отлично прочувствовали на себе все «прелести» такого подхода и в определенный момент решили обратить взор на возможности автоматической генерации. Поиски увенчались успехом, и теперь при разработке мы не пишем ни строчки сетевого кода сами.
Я Сергей Шевцов, Android-разработчик в компании KODE. В статье расскажу, как мы работаем с сетевым слоем в наших приложениях. Возможно, это поможет вам сэкономить многие часы написания сетевого кода.
https://habr.com/ru/articles/737010/
#Android
👉 @developer_mobila
Разрабатываемые приложения со временем имеют свойство увеличиваться и обрастать новой функциональностью. Как правило, сетевой слой при этом также разрастается, порой до немыслимых размеров. Поддерживать все это руками в какой-то момент становится довольно сложно. Мы отлично прочувствовали на себе все «прелести» такого подхода и в определенный момент решили обратить взор на возможности автоматической генерации. Поиски увенчались успехом, и теперь при разработке мы не пишем ни строчки сетевого кода сами.
Я Сергей Шевцов, Android-разработчик в компании KODE. В статье расскажу, как мы работаем с сетевым слоем в наших приложениях. Возможно, это поможет вам сэкономить многие часы написания сетевого кода.
https://habr.com/ru/articles/737010/
#Android
👉 @developer_mobila
👍2
Android 14: что появилось нового и что изменилось? Возможности новой версии мобильной ОС
Несколько дней назад появилась новость о выходе новой версии мобильной операционной системы Android 14. На данный момент исходники прошивки готовы для серии смартфонов Pixel, а чуть позже выйдут обновления для Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo и Xiaomi. Кроме того, готовы и универсальные сборки для разных устройств на базе архитектур ARM64 и x86_64. Давайте внимательно посмотрим на улучшения и дополнения, которые появились в новой версии.
https://habr.com/ru/companies/ru_mts/articles/766792/
#Android
👉 @developer_mobila
Несколько дней назад появилась новость о выходе новой версии мобильной операционной системы Android 14. На данный момент исходники прошивки готовы для серии смартфонов Pixel, а чуть позже выйдут обновления для Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo и Xiaomi. Кроме того, готовы и универсальные сборки для разных устройств на базе архитектур ARM64 и x86_64. Давайте внимательно посмотрим на улучшения и дополнения, которые появились в новой версии.
https://habr.com/ru/companies/ru_mts/articles/766792/
#Android
👉 @developer_mobila
👍3
Swift Concurrency Instrument: чем он полезен iOS-разработчику
При работе со Swift Concurrency часто хочется посмотреть, как работают созданные асинхронные задачи в приложении: узнать количество задач, время создания и длительность их выполнения. Посмотреть, на каких потоках и с какими приоритетами они выполняются.
В Xcode 14 появился специальный шаблон профилирования в Xcode Instruments — Swift Concurrency. Он позволяет наглядно визуализировать работу с асинхронным кодом.
Я — Светлана Гладышева, iOS-разработчик компании Surf. Давайте разберёмся, что нам может показать Swift Concurrency шаблон и как его использовать. А также на простых примерах посмотрим, какие ошибки можно обнаружить с его помощью.
https://habr.com/ru/companies/surfstudio/articles/737578/
#ios
👉 @developer_mobila
При работе со Swift Concurrency часто хочется посмотреть, как работают созданные асинхронные задачи в приложении: узнать количество задач, время создания и длительность их выполнения. Посмотреть, на каких потоках и с какими приоритетами они выполняются.
В Xcode 14 появился специальный шаблон профилирования в Xcode Instruments — Swift Concurrency. Он позволяет наглядно визуализировать работу с асинхронным кодом.
Я — Светлана Гладышева, iOS-разработчик компании Surf. Давайте разберёмся, что нам может показать Swift Concurrency шаблон и как его использовать. А также на простых примерах посмотрим, какие ошибки можно обнаружить с его помощью.
https://habr.com/ru/companies/surfstudio/articles/737578/
#ios
👉 @developer_mobila
Как подключить Lombok к Android Studio
Введение
Для тех, кто еще не перешел на Kotlin, или работает с легаси, код которого в ближайшее время не будет переведен на него, использование Lombok сильно уменьшает количество шаблонного кода. Он скрывает геттеры, сеттеры, конструкторы и другие шаблонные методы за аннотациями.
Например, вместо кода:
Мы просто укажем нужные аннотации, остальное Lombok сгенерирует под капотом:
https://habr.com/ru/articles/737698/
#Android
👉 @developer_mobila
Введение
Для тех, кто еще не перешел на Kotlin, или работает с легаси, код которого в ближайшее время не будет переведен на него, использование Lombok сильно уменьшает количество шаблонного кода. Он скрывает геттеры, сеттеры, конструкторы и другие шаблонные методы за аннотациями.
Например, вместо кода:
public class UserDto {
private String name;
public HumanDto(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
Мы просто укажем нужные аннотации, остальное Lombok сгенерирует под капотом:
@Data
@AllArgsConstructor
public class UserDto {
private String name;
}https://habr.com/ru/articles/737698/
#Android
👉 @developer_mobila
👍1
Мгновенное взаимодействие с жестами панорамирования
Apple выпустила потрясающий видеоролик для WWDC 2018 под названием Designing Fluid Interfaces, и один из ключевых выводов из него, который сделал один из докладчиков, Чан Карунамуни, звучит так: "Ищите задержки повсюду. Все должно реагировать мгновенно". (6:28)
Отличным примером этого является вид прокрутки в iOS. Если вы пролистываете контакты и касаетесь пальцем экрана, то прокрутка мгновенно останавливается и позволяет вам изменить ее положение. Подобное мгновенное поведение очень важно для наших собственных представлений, взаимодействий и анимаций.
https://christianselig.com/2023/05/instant-pan-gesture-interactions/
#ios
👉 @developer_mobila
Apple выпустила потрясающий видеоролик для WWDC 2018 под названием Designing Fluid Interfaces, и один из ключевых выводов из него, который сделал один из докладчиков, Чан Карунамуни, звучит так: "Ищите задержки повсюду. Все должно реагировать мгновенно". (6:28)
Отличным примером этого является вид прокрутки в iOS. Если вы пролистываете контакты и касаетесь пальцем экрана, то прокрутка мгновенно останавливается и позволяет вам изменить ее положение. Подобное мгновенное поведение очень важно для наших собственных представлений, взаимодействий и анимаций.
https://christianselig.com/2023/05/instant-pan-gesture-interactions/
#ios
👉 @developer_mobila
👍2