На днях Еврокомиссия предъявила компании Apple обвинения в нарушении антимонопольного законодательства. Если дело выгорит, то яблокам грозит по-настоящему серьёзный штраф — до 20% от всего оборота.
Нарушение как раз состоит в том, что Apple под флагом безопасности, как она это любит, запрещает сторонним приложениям использовать NFC-модуль для оплаты. Я уже об этом писал: на андроидах после блокировок можно платить телефоном через MirPay и аналоги, а вот айфоны вообще остались без инструмента оплаты в России.
Это, конечно, совпадение, что такие разборки идут нам — русским, оставшимся в стране — на руку. Начало сбора материалов для этого дела было задолго до текущих событий. Впрочем, окончательно текст нужного закона согласован в ЕС только 24 марта — и я уверен, что они одним глазком посматривали на происходящее в России. Так, на всякий случай.
Там в законе много интересного:
1. Компании обязаны давать пользователям возможность менять браузер по умолчанию и поисковый движок. Интересно, заставит ли это Apple разрешить использовать в сторонних браузерах какой-то иной движок, кроме Safari? Ведь из-за этого сам смысл альтернативных программ для просмотра web-страниц теряется почти полностью.
2. Платформам запрещается под угрозой исключения из магазина навязывать свои средства обработки платежей в приложениях. Судя по всему, здесь сыграл роль иск от Epic Games.
3. От встроенных средств обмена сообщениями требуют interoperability. Непонятно, означает ли это возможность работы между протоколами (например, отправлять из iMessage сообщения в WhatsApp), или всё-таки что-то не столь значительное.
4. Ну и да, разработчики смартфонов обязаны предоставить fair access to the supplementary functionalities, к которым относят и NFC. В теории это может означать ещё и, например, право для несистемных приложений выполнять на iOS фоновые процессы (сейчас это возможно только в качестве реакции на изменение координат).
Мне нравится этот процесс и с чисто практической точки зрения и с идеологической. Я уже писал о том, что монополии — один из наиболее значительных недостатков капитализма. В теории вроде бы всё честно: компания делает продукт и имеет право предоставлять его людям на удобных ей условиях, потому что это их продукт. Но в данном случае Европа пользуется правом сильного, потому что может. Иронично: крупные компании по праву сильного и благодаря наличию возможности вставляют палки в колёса обычным потребителям, которые из-за этого не полностью могут пользоваться собственными же смартфонами. А антимонопольные комиссии по праву сильного и благодаря наличию возможности вставляют палки в колёса компаниям, которые из-за этого не полностью могут определять условия продаже собственной же продукции.
#gadgets#web
Как мы ускорили работу с базой данных в 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