Forwarded from Мобильная разработка
Приложение Now in Android от Google, совмещающее в себе несколько полезных практик разработки
Now in Android — серия материалов от команды Android, в которых рассказывают о новостях, интересных статьях и крутых инструментах для Android-разработчиков.
Google опубликовала исходный код приложения Now in Android. В репозитории на GitHub вы можете познакомиться с примером реализации дизайна на Material3, а также с передовыми практиками разработки.
Репозиторий: https://github.com/android/nowinandroid
#android
Now in Android — серия материалов от команды Android, в которых рассказывают о новостях, интересных статьях и крутых инструментах для Android-разработчиков.
Google опубликовала исходный код приложения Now in Android. В репозитории на GitHub вы можете познакомиться с примером реализации дизайна на Material3, а также с передовыми практиками разработки.
Репозиторий: https://github.com/android/nowinandroid
#android
👍2
Forwarded from Стой под стрелой (Nikita Prokopov)
В истории программирования много раз брали на лозунги шаблон Everything is a X:
- Everything is a string (TCL)
- Everything is a list (Lisp)
- Everything is a file (Unix)
- Everything is an object (OOP)
- Everything is a function (FP)
И знаете что? Каждый раз эта абстрация протекала сразу с момента ее создания. Медленно/неудобно/все равно нужно различать и т.п.
Когда нам в школе рассказывали про «everything is a file» я очень удивлялся: очевидно же, что, например, с сокетом, или с процессом, или с принтером ты хочешь делать совсем не те операции, что с файлом. Оказалось, что имеелось в виду, что в виде файла доступна какая-то ненужная тривиальщина типа пида процесса, я для нормальной работы есть нормальные специальные методы, которые не притворяются, что «все есть файл». И чего было заморачиваться, спрашивается?
Есть мнение, что и в будущем next big thing которая выберет своим лозунгом Everything is X окажется такой же дырявой еще на этапе создания. Потому что мир разный, работает по-разному и хотят от разных вещей разного. Засовывать круглое в квадратное так же логично, как носить кастрюлю в качестве головного убора. А притворяться, что это еще и удобно — ну это только программисты так могут.
Nothing is everything, короче.
- Everything is a string (TCL)
- Everything is a list (Lisp)
- Everything is a file (Unix)
- Everything is an object (OOP)
- Everything is a function (FP)
И знаете что? Каждый раз эта абстрация протекала сразу с момента ее создания. Медленно/неудобно/все равно нужно различать и т.п.
Когда нам в школе рассказывали про «everything is a file» я очень удивлялся: очевидно же, что, например, с сокетом, или с процессом, или с принтером ты хочешь делать совсем не те операции, что с файлом. Оказалось, что имеелось в виду, что в виде файла доступна какая-то ненужная тривиальщина типа пида процесса, я для нормальной работы есть нормальные специальные методы, которые не притворяются, что «все есть файл». И чего было заморачиваться, спрашивается?
Есть мнение, что и в будущем next big thing которая выберет своим лозунгом Everything is X окажется такой же дырявой еще на этапе создания. Потому что мир разный, работает по-разному и хотят от разных вещей разного. Засовывать круглое в квадратное так же логично, как носить кастрюлю в качестве головного убора. А притворяться, что это еще и удобно — ну это только программисты так могут.
Nothing is everything, короче.
👍1
Новое поделие:
https://www.youtube.com/watch?v=Z6iFhczA3NY
Media3 (от создателей ViewPager2, Camera2 и CameraX)https://www.youtube.com/watch?v=Z6iFhczA3NY
😁1🤬1
Forwarded from Mobile Compose
#Video #Youtube #GoogleIO
Performance best practices for Jetpack Compose
Доклад с прошедшего Google I/O 2022, в котором спикеры рассказывают о лучших практиках Jetpack Compose в отношении производительности, а также о связанных с этим распространённых ошибках и способах их избежать.
Performance best practices for Jetpack Compose
Доклад с прошедшего Google I/O 2022, в котором спикеры рассказывают о лучших практиках Jetpack Compose в отношении производительности, а также о связанных с этим распространённых ошибках и способах их избежать.
YouTube
Performance best practices for Jetpack Compose
Jetpack Compose can feel like magic, but what do you do when the magic isn't as performant as you want? Discover best practices in Jetpack Compose with regards to performance, common mistakes, and how to avoid them.
Resources:
JetPack Compose Performance…
Resources:
JetPack Compose Performance…
Forwarded from Android Good Reads (Egor Tolstoy)
Поддержка MotionLayout в Jetpack Compose все еще в экспериментальном состоянии, но работать с ней вполне можно. В гайде разбирается, как с помощью MotionLayout анимировать несколько связанных между собой компонентов.
Mobile Dev Notes
Using MotionLayout in Compose — Mobile Dev Notes
A demo of using MotionLayout with Jetpack Compose with motion scene set up as a JSON5
Forwarded from Mobile AppSec World (Yury Shabalin)
Доклады о мобильной безопасности с Positive Hack Days
Как вы знаете, на неделе прошла конференция Positive Hack Days и на ней были доклады про безопасность мобильных приложений.
Я ещё не все разобрал, но вот парочка достаточно интересных, которые можно посмотреть уже сейчас:
- Интервью эксперта о безопасности мобильных приложений
Достаточно интересный разговор про безопасность мобилок, текущую ситуацию с магазинами, основные вектора угроз и всякое такое. Послушать, как подкаст вполне.
- Уязвимое мобильное приложение AllSafe глазами аналитика
Доклад от аналитиков Appscreener (статический анализатор), про уязвимое приложение и разбор нескольких уязвимостей в нем, как искать и как эксплуатировать:
* Sql Injection
* Arbitrary code execution
* Insecure Content Provider
А вот и сам код приложения. Что приятно, автор на каждый «флаг» дает ссылки на статьи/репорты о реально найденных подобных багах.
По мере просмотра, если найду что-то интересное из докладов, обязательно расскажу :)
#phd #video #mobile
Как вы знаете, на неделе прошла конференция Positive Hack Days и на ней были доклады про безопасность мобильных приложений.
Я ещё не все разобрал, но вот парочка достаточно интересных, которые можно посмотреть уже сейчас:
- Интервью эксперта о безопасности мобильных приложений
Достаточно интересный разговор про безопасность мобилок, текущую ситуацию с магазинами, основные вектора угроз и всякое такое. Послушать, как подкаст вполне.
- Уязвимое мобильное приложение AllSafe глазами аналитика
Доклад от аналитиков Appscreener (статический анализатор), про уязвимое приложение и разбор нескольких уязвимостей в нем, как искать и как эксплуатировать:
* Sql Injection
* Arbitrary code execution
* Insecure Content Provider
А вот и сам код приложения. Что приятно, автор на каждый «флаг» дает ссылки на статьи/репорты о реально найденных подобных багах.
По мере просмотра, если найду что-то интересное из докладов, обязательно расскажу :)
#phd #video #mobile
YouTube
Безопасность мобильных приложений
Forwarded from Android Good Reads (Egor Tolstoy)
Mosaic – библиотека от Джейка Уортона для создания консольных интерфейсов поверх компилятора и рантайма Compose. Это – интересный кейс, потому что на его примере хорошо видно, что потенциальная сфера применения Compose намного шире, чем просто работа с UI. В статье разбирается, как библиотека устроена под капотом и как она взаимодействует с рантаймом Compose.
GitHub
GitHub - JakeWharton/mosaic: Build terminal UI in Kotlin using Jetpack Compose
Build terminal UI in Kotlin using Jetpack Compose. Contribute to JakeWharton/mosaic development by creating an account on GitHub.
👍3
Forwarded from Мобильная разработка
Первый взгляд на Privacy Sandbox для Android
В апреле вышла первая Developer Preview версия Privacy Sandbox — набора инструментов, которые позволят улучшить конфиденциальность пользователей Android-устройств.
Разработчик протестировал один из элементов «песочницы» — SDK Runtime — и рассказал, как работает среда выполнения, а также поделился своими впечатлениями:
https://proandroiddev.com/a-first-look-googles-privacy-sandbox-and-its-effect-on-sdks-93b781470df9
#android
В апреле вышла первая Developer Preview версия Privacy Sandbox — набора инструментов, которые позволят улучшить конфиденциальность пользователей Android-устройств.
Разработчик протестировал один из элементов «песочницы» — SDK Runtime — и рассказал, как работает среда выполнения, а также поделился своими впечатлениями:
https://proandroiddev.com/a-first-look-googles-privacy-sandbox-and-its-effect-on-sdks-93b781470df9
#android
Forwarded from Mobile Developer (Алексей Гладков)
Тут человек разработал тулзу, которая позволяет на компоузе делать презентации в павер поинте) и это очень интересно, что компоуз всеми силами продвигают как инструмент не только для программистов
Ссылка тут - https://github.com/fgiris/composePPT
Ссылка тут - https://github.com/fgiris/composePPT
🤔1
Forwarded from Android Good Reads (Egor Tolstoy)
Роман Елизаров написал лонгрид про то, с какими проблемами сталкиваются дизайнеры Kotlin и как они оптимизируют язык с учетом реальных потребностей его пользователей:
0️⃣Поиск компромисса между null safety и интеропом с Java
🧱 Дизайн корутин с учетом необходимости интеграции их с уже написанными библиотеками
🤝Трейдоффы в системе вывода типов, усложняющие язык, но упрощающие частые юзкейсы разработчиков
🤏Как небольшие улучшения в языке тащат за собой много сложностей
0️⃣Поиск компромисса между null safety и интеропом с Java
🧱 Дизайн корутин с учетом необходимости интеграции их с уже написанными библиотеками
🤝Трейдоффы в системе вывода типов, усложняющие язык, но упрощающие частые юзкейсы разработчиков
🤏Как небольшие улучшения в языке тащат за собой много сложностей
SIGPLAN Blog
Language Design in the Real World
Real programming languages are living things, changing and evolving. As with any production code, most of their designer’s time is spent on bug fixing and small improvements, rather than on the rad…
👍1
Теоретические аспекты и советы по использованию свойства Lazy в Kotlin.
https://proglib.io/w/dae0b47d
https://proglib.io/w/dae0b47d
Medium
Kotlin — Lazy Thread-safety modes explained
We will dive deep into the Lazy property thread-safety modes, and understand the different bettewn them
Forwarded from Android Good Reads (Egor Tolstoy)
Контекстные ресиверы – это новая языковая фича, прототип которой был выпущен в Kotlin 1.6.20. С ее помощью можно неявно передавать в функцию дополнительные параметры. В статье разбирается пример того, как контекстные ресиверы помогают сделать запутанную бизнес-логику более понятной и корректной.
A Java geek
Toying with Kotlin's context receivers
Kotlin added the idea of Context Receivers in version 1.6.20. In this post, I’d like to toy with them to understand how useful they can be. If you want to play along, you’ll need to compile with the -Xcontext-receivers flag. The main idea behind context receivers…
Forwarded from Android Guards
Сколько было разговоров о том, что Fuchsia OS заменит Android и начнется новая эра? И где теперь эта Fuchsia OS? Оказалось, что она все еще активно разрабатывается и похоже не собирается умирать. Чтобы не прозозохать все на свете и быть готовым, когда Fuchsia OS придет в ваш дом - рекомендую прочитать этот серьезный материал. Из статьи вы узнаете:
- Что из себя представлет Fuchsia OS и как выглядит ее модель безопасности
- Как собрать ОС из исходников и написать приложение для нее
- Как выглядит ядро ОС и как его подебажить с помощью GDB и QEMU
- Как разрабатывать эксплойты для ядра Fuchsia OS (Zirocon)
Под чай с печеньками прочитать не выйдет. Придется включать мозги 👨🔬
- Что из себя представлет Fuchsia OS и как выглядит ее модель безопасности
- Как собрать ОС из исходников и написать приложение для нее
- Как выглядит ядро ОС и как его подебажить с помощью GDB и QEMU
- Как разрабатывать эксплойты для ядра Fuchsia OS (Zirocon)
Под чай с печеньками прочитать не выйдет. Придется включать мозги 👨🔬
PT SWARM
A Kernel Hacker Meets Fuchsia OS
Fuchsia is a general-purpose open-source operating system created by Google. It is based on the Zircon microkernel written in C++ and is currently under active development. The developers say that Fuchsia is designed with a focus on security, updatability…
😁1
Forwarded from Mobile Native ️️
Многомодульный BDSM: стоит ли внедрять Gradle модули и какие типы модулей бывают?
Достаточно полезная статья про многомодульность, в которой рассматриваются актуальные вопросы и проблемы: стоит ли внедрять Gradle модули, для чего это нужно, какие типы модулей бывают, связи и зависимости модулей и т.д.
Читать (Ru)
Достаточно полезная статья про многомодульность, в которой рассматриваются актуальные вопросы и проблемы: стоит ли внедрять Gradle модули, для чего это нужно, какие типы модулей бывают, связи и зависимости модулей и т.д.
Читать (Ru)
Forwarded from Android Live 🤖
Как мы уменьшили ANR в 3 раза
#android
Ошибка "Приложение не отвечает" — весьма неприятное событие для пользователя, ведь в этом случае он вынужден закрывать приложение и делать незавершённое действие с начала.
Кроме этого, эти ошибки довольно непросто повторить и поправить, ведь они могут то появляться, то исчезать, а также иметь зависимость от устройств.
Вот неплохая статья, которая описывает то, откуда вообще появляются ANR и то, как с ними бороться.
Автор говорит, что они ощутимо снизили процент этих ошибок в своём приложении, а также значительно улучшили время старта приложения.
#android
Ошибка "Приложение не отвечает" — весьма неприятное событие для пользователя, ведь в этом случае он вынужден закрывать приложение и делать незавершённое действие с начала.
Кроме этого, эти ошибки довольно непросто повторить и поправить, ведь они могут то появляться, то исчезать, а также иметь зависимость от устройств.
Вот неплохая статья, которая описывает то, откуда вообще появляются ANR и то, как с ними бороться.
Автор говорит, что они ощутимо снизили процент этих ошибок в своём приложении, а также значительно улучшили время старта приложения.
Forwarded from Android Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
#compose
Lazy Grid layouts in Compose
Примеры настройки LazyGrid в различных вариациях, будет полезно если не знали о возможностях
Lazy Grid layouts in Compose
Примеры настройки LazyGrid в различных вариациях, будет полезно если не знали о возможностях
Forwarded from Mobile Native ️️
19 Things to Know About Kotlin Flow — A Quick Note
Статья-заметка, 19 пунктов о которых нужно знать про Kotlin Flow.
Читать (En)
Статья-заметка, 19 пунктов о которых нужно знать про Kotlin Flow.
Читать (En)
Mobile Native ️️
19 Things to Know About Kotlin Flow — A Quick Note Статья-заметка, 19 пунктов о которых нужно знать про Kotlin Flow. Читать (En)
This media is not supported in your browser
VIEW IN TELEGRAM
разбираемся с тем, как Flow эмитит события наглядно
😁3
Пример анимации нескольких виджетов по отношению друг к другу с использованием
https://proglib.io/w/d3a57cdc
MotionLayout в Jetpack Compose.https://proglib.io/w/d3a57cdc
Mobile Dev Notes
Using MotionLayout in Compose — Mobile Dev Notes
A demo of using MotionLayout with Jetpack Compose with motion scene set up as a JSON5
Forwarded from Android Live 🤖
Parallax Effect в Jetpack Compose
#compose
Попалась красивая реализация эффекта параллакса, которая написана на Jetpack Compose.
Не уверен на 100%, что вам есть где использовать этот эффект в приложении, но любопытно посмотреть на саму реализацию. Тем более, на столь популярном в последнее время Compose.
Автор добавил немного модификаторов для тени и карточки. В итоге получился приятный и красивый эффект.
Чуть больше деталей реализации, ну и, конечно, примеры кода можно найти тут. 🤓
#compose
Попалась красивая реализация эффекта параллакса, которая написана на Jetpack Compose.
Не уверен на 100%, что вам есть где использовать этот эффект в приложении, но любопытно посмотреть на саму реализацию. Тем более, на столь популярном в последнее время Compose.
@Composable элементы меняют своё положение на основе ориентации устройства и приходящих данных с SensorManager. Далее, создаётся DisposableEffect, который используется для репозиционирования Image.Автор добавил немного модификаторов для тени и карточки. В итоге получился приятный и красивый эффект.
Чуть больше деталей реализации, ну и, конечно, примеры кода можно найти тут. 🤓
👍1
Forwarded from Android Good Reads (Egor Tolstoy)
Uber рассказывают, как они используют ApplicationExitInfo API, чтобы детектить Application Not Responding события. По сравнению с другими способами, таким образом получается детектить больше ANR и получать полную информацию о стектрейсах.
Speaker Deck
ANR overview at Uber + Leveraging ApplicationExitInfo API
Basic patterns how ANR occurs, how we detect ANR at Uber, and how you can manage your app's ANR
Presented at Droidcon San Francisco 2022 by <a href="…
Presented at Droidcon San Francisco 2022 by <a href="…