В 1996 году шведский программист Даниэль Стенберг опубликовал первую версию консольной программы для работы с удалёнными ресурсами (URL). Точнее, технически это была не первая версия, но первая под новым названием — cURL.
Тогда, наверное, мало кто мог подумать, что обращаться по URL-адресам, отправлять запросы и скачивать файлы станет настолько востребованным. Сегодня cURL (если точнее, то libcurl) присутствует фактически на любом устройстве, подключённом к интернету, а неделю назад Стенберг отпраздновал 25-летие своего проекта.
На Хабре очень интересный перевод авторского пересказа событий за все эти годы. Даниэлю было 27 лет, когда он написал простенькую консольную утилиту, которой пользовался едва ли десяток людей. А сейчас ему 52, в программе уже 155 тысяч строк кода, а пользуются ей миллиарды (хоть даже и не знают об этом). За это время он женился, сменил кучу работ, завёл двоих детей, заслужил титул второго лучшего разработчика Швеции и даже косвенно поучаствовал в посадке зонда на Марс (о чём в его профиле на Гитхабе есть специальная плашка). Стенберг даже получал угрозы убийством из-за того, что его софт применялся хакерами в атаках и краже денег.
Вот как вышло — шалость, можно сказать, удалась. Простенький хобби-проект молодого студента стал одним из столпов, на которых зиждется информационная эра. Не сказать, что в cURL есть что-то особенное, просто так вышло, что именно его автор первым задумался о необходимости удобной коммуникации с серверами в сети. Не написал бы он, написал бы кто-нибудь другой. Что не умаляет его заслуг и аккуратного подхода к разработке и улучшению программы на протяжении стольких лет.
Кто знает, может быть, кто-нибудь из вас сейчас сидит и пишет маленький хобби-проект, которым через четверть века станет пользоваться весь мир?
#dev
Как мы ускорили работу с базой данных в 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