Умение признавать свои ошибки — современная вежливость больших корпораций. Бывают непопулярные у народа решения, которые продиктованы бизнесом (например, Фейсбук забит визуальным мусором и не собирается это менять). Бывают решения, которые изначально приняты сознательно, потому что думали, что так будет лучше, но когда стало понятно, что решение плохое, компания не захотела показаться глупой и выдала проблемы за особую идеологию (отсутствие возможности редактировать твиты в Twitter; отсутствие возможности адекватно прикреплять картинку к посту в Telegram). Бывают решения от лени, когда какой-то момент вообще не продумывали (неправильный визуальный акцент на номера телефонов вместо имён в групповых чатах WhatsApp; отсутствие возможности отправить альбом отложенным сообщением в Telegram). Бывают решения от незнания, когда люди некомпетентны или не очень понимают, что делают (бардак на вкладке «сервисы» ВКонтакте). А бывают решения, про которые стало понятно, что они плохие, и компания их откатывает. Это большая редкость. Подумать только: компания признаёт ошибку и делает обратно как удобнее.
Вы, наверное, помните ситуацию с Кинопоиском: всем включили новый интерфейс, люди стали жаловаться, и компания вернула старый интерфейс, а в новый начала перерабатывать его постепенно. Но тут глобальное изменение вызвало глобальное недовольство, был реальный риск снижения пользовательской базы. А вот вчера на WWDC показали, что Apple возвращает в iOS 15 карусель выбора времени для будильника. Изменение интерфейса этой карусели — одно из худших дизайнерских решений Apple за всё время. Выбирать время стало значительно неудобнее. В то же время это мелочь, из-за которой никто не перестал бы пользоваться айфоном. Особенно когда речь идёт об оголтелых Apple-фанатах: им можно продать даже куда более абсурдные и корявые вещи, всё стерпят. Однако же компания решила вернуть предыдущий вид карусели, очевидно более дружественный и понятный. Кажется, такие случаи в наше время — большая редкость.
#gadgets
Как мы ускорили работу с базой данных в Android-приложении (11м)
Разработчик поделился опытом, какие практики применялись для ускорения работы с SQLite в Android: неоптимальные обращения к БД в циклах и их последствия. Также не стоит хранить JSON-объекты в виде строк в БД (это кажется слишком очевидным).
Команда столкнулась с этими проблемами, объяснила, почему это плохо, и как можно исправить ситуацию, чтобы производительность приложения не снижалась из-за обращений к БД.
#android#sqlite#производительность
🤖Скрытые угрозы Room: почему база тормозит и как это исправить
Важные советы всем кто используют Room, чтобы база работала быстро:
👉Индексы — ваши лучшие друзья: без них запросы деградируют до O(n)
👉Транзакции важны: SQLite разработан для эффективной пакетной обработки
👉Разбиение на страницы крайне важно: никогда не пытайтесь одновременно обрабатывать тысячи строк
👉Режим Write-Ahead Logging (WAL) критически важен, особенно для параллельных операций чтения и записи
👉Настраивайте схему БД для практической производительности, а не только для академической нормализации
Больше полезных советов в статье
#android#room#sqlite
Выполнение запросов SQLite на множестве потоков может привести к замедлению вашего приложения🤯
Разработчик делает классный разбор того, как работают запросы SQLite в Android и как их оптимизировать. Статья - параллельность в Android SQLite (EN,11м)
Основные выводы:
👉 Используйте забандленную версию SQLite (добавит около 1 Мб за каждый ABI)
👉 Если работает с несколькими БД через ROOM, то задавайте CoroutineContext или Executor для выполнения запросов
👉Больше полезного в статье, почитай. Она того стоит
#android#room#sqlite#jetpack
📹 В Jetpack Room есть возможность использовать не встроенный в Android ОС SQLite, а вместо этого использовать самую свежую версию (вес около 1 МБ для каждого ABI).
Это позволит использовать единую версию SQLite на всех устройствах и получать преимущества в скорости работы от новых функций. Причем эта возможность доступна для всех поддерживаемых платформ, которые поддерживает Room: Android, iOS, Desktop.
📹Доклад с Droidcon от гуглера о том, как это сделать (EN, 15м)
🔗Подробности в документации
#android#sqlite#room#jetpack
🚀 Вышел Room 2.7.0-alpha13
Библиотека мигрирует на Kotlin 2.0+ и весь проект должен будет тоже использовать её. Хотите KMP - точно надо будет мигрировать на Kotlin 2.0
Это последний альфа релиз и дальше будет Beta и уже совсем скоро релиз.
#android#kmp#jetpack#jetpackupdate#sqlite
🗜 In search of a faster SQLite - ребята взяли и переписали SQLite на Rust и утверждают, что смогли добиться серьёзного прироста в производительности при сохранении совместимости с SQLite непосредственно.
Проект называется Limbo, вот здесь о нём можно почитать подробнее...
- Статья: https://avi.im/blag/2024/faster-sqlite/
- Github: https://github.com/tursodatabase/limbo
#sqlite#напочитать#limbo
🚀 Вышла первая Beta версия Room 2.7.0. Самое важное нововведение - переход на KMP с поддержкой Android, iOS и Desktop 🔥🔥🔥. Также на Android теперь можно использовать SQLite из артефакта, а не только тот что в Android ОС
#android#kmp#jetpack#room#sqlite
🚀 Вышел Jetpack Sqlite 2.5.0 с поддержкой KMP и добавлением абстракция над реализация SQLite в платформе или вовсе поставлять реализацию SQLite вместе с вашим приложением, чтобы всегда иметь самую свежую версий движка БД.
#sqlite#jetpack#android#ios#desktop