В книге и фильме «Чарли и шоколадная фабрика» владелец фабрики Вилли Вонка решает найти себе преемника, поэтому приглашает нескольких детей на экскурсию, где они подвергаются разного рода проверкам на соответствие нужным человеческим качествам: отсутствие жадности, эгоизма, честолюбия, гордыни итд.
Но есть проблема. Изначально дети должны были быть выбраны случайно: в выпускаемых фабрикой шоколадках спрятали 5 билетов. Но по факту такой способ как раз приводит к отбору наиболее нерелевантных кандидатов: один билет получает мальчик-обжора из-за того, что ест слишком много шоколада, другой билет попадает к избалованной дочке миллиардера, потому что он просто покупает ей очень много пачек, третий достается самовлюблённой тщеславной спортсменке, помешанной на победах по всём, четвертый вычисляет геймер, который не любит шоколад.
На мой взгляд это хорошая задачка для собеседования HR-специалисту: каждая итерация отбора должна приближать выборку к цели, а не отдалять. Что мог сделать Вонка, чтобы изначально к нему попала пятерка добрых и честных детей?
Второй важный момент это разница между гипотетическим и реальным функционированием той или иной системы. Такого в жизни очень много: например, в голосованиях на каких-нибудь конкурсах теоретически предполагается, что люди не будут накручивать, а ПДД не предполагают, что на слишком широкой полосе люди будут ехать в два ряда абсолютно всегда (см. Выборгское шоссе). Бюрократия так вообще вся построена на отрицании реальности, что приводит, например, к существованию понятия «Итальянская забастовка».
Считаю, что способность адекватно дозировать формализм с поправкой на реальность это ценное свойство, например, для руководителя.
#life
Как мы ускорили работу с базой данных в 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