Обновить
8K+

SQLite *

Компактная встраиваемая реляционная база данных

8,89
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности
Формат публикации

Асинхронный OSINT против WAF: Как я дорабатывал свой сканер периметра до стандартов Kali Linux

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.2K

«Мы не можем упаковывать каждый скрипт в мире, покажите нам реальный интерес комьюнити» — именно такой вежливый отказ прилетел мне от майнтейнеров Kali Linux в ответ на заявку добавить мою утилиту Web-Recon в официальный дистрибутив.

Вызов был принят. За последние недели простой скрипт эволюционировал в зрелый open-source продукт по гайдам Debian Policy: с переходом на src-layout, сборкой .whl колес через pyproject.toml и автоматическими CI/CD пайплайнами в облаке GitHub Actions.

Но главное — я полностью переписал сетевой движок. В этой статье я расскажу, как укрощал реактивную асинхронную мощность asyncio, защищал целевые хосты от случайного DoS-атаки с помощью семафоров и проектировал трехуровневый каскадный конвейер веерной ротации User-Agent для обхода жестких блокировок WAF и Cloudflare. Под капотом — разбор архитектуры стелс-сканирования периметра и инструкция по локальной установке пакета одной командой.

Далее

Как повредить файл базы данных SQLite

Уровень сложностиПростой
Время на прочтение21 мин
Охват и читатели6.9K

База данных SQLite обладает высокой устойчивостью к повреждениям. В случае вылета приложения или операционной системы и даже при потере питания посередине транзакции частично записанная транзакция будет автоматически откачена при следующем доступе к файлу базы данных. Процесс восстановления происходит полностью автоматически и не требует никаких действий со стороны пользователя или приложения.

Однако, несмотря на устойчивость SQLite к повреждениям баз данных, абсолютной защиты она обеспечить не может. В этом документе мы расскажем о различных способах повреждения базы данных SQLite.

Читать далее

Бэкап SQLite прошёл проверку. Второй заказ в него не попал

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели5.3K

Копия SQLite открывается, контрольная сумма совпадает, integrity_check отвечает ok. А подтверждённого заказа в ней нет. Разбираю результат десяти локальных прогонов: где осталась запись, почему проверки её не заметили и как принять резервную копию по содержимому. Полный проверенный скрипт — внутри.

Читать далее

Сколько миллисекунд без читателей нужно SQLite, чтобы файл -wal перестал расти

Время на прочтение6 мин
Охват и читатели6K

Документация SQLite говорит, что -wal перестаёт расти, только если у читателей, которые видят кадры из -wal, бывают общие паузы, но не говорит, какой длины. Я замерил в контейнере на SQLite 3.46.1: на моём стенде хватало единиц миллисекунд — 2 мс при 50 коммитах/с, 5 мс при 1000/с, и быстрой записи понадобилась пауза шире. Без паузы три читателя по 50 мс раздувают -wal так же, как один на 20 секунд, а случайные запросы по 5 мс почти не мешали, пока база была свободна хотя бы 13% времени.

Читать далее

Anthropic заблокировала меня и я потерял подписку за $100, но сохранил год работы и собрал личную RAG-базу

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5.3K

Привет, Хабр!

Кто нибудь уже получал такие письма счастья? Причина - страна, оно и понятно, я вообще почитал что они начали массово банить за подключение через VPN и даже не разбираются что стоит за этим туннелем. Китай много так же банят. Я активно пользовался (около 5 часов в сутки) больше года активно и тут еще сгорела подписка за 100$.

Деньги - это неприятно, конечно... Но для меня более важно: проекты, переписки, решения, объяснения, почему мы выбрали именно такой вариант, где уже обкакались. Конкретный объем контекста меня в широком смысле: и работы, и личных вопросов.

Читать далее

После комментариев на Хабре я ограничил чтение SQLite и перевёл Docker-модуль в WASI

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели4.4K

После прошлой статьи о Pulse читатели Хабра обратили внимание на вещи, которые я не учёл: долгий запрос истории может мешать очистке SQLite WAL, успешное выполнение команды ещё не означает, что контейнер поднялся, а разрешения модуля сами по себе не изолируют его от файлов сервера.

Я пошёл проверять эти замечания и разбирать реализацию. В статье — что получилось: тест чтения истории одновременно с записью отчётов, ограничение времени запросов и наблюдение за WAL, проверка состояния Docker-контейнера после команды и перевод модуля в WASI с доступом к Docker через ограниченный API-посредник.

Покажу, что теперь проверяется, какие ограничения появились и почему даже после этих изменений нельзя обещать выполнение команд «ровно один раз» или считать запущенный контейнер готовым к работе.

Читать далее

Семь строк в SQL — ещё не семь дней. Как пропуски дат меняют скользящую сумму Для показателя «за последние семь дней»...

Охват и читатели2.4K

Семь строк в SQL — ещё не семь дней. Как пропуски дат меняют скользящую сумму

Для показателя «за последние семь дней» легко написать:

Читать дальше →

database is locked. Что на самом деле блокирует SQLite в Telegram-боте и как я это чиню

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели4.5K

SQLite в небольшом боте выбирают за то, что не нужен отдельный сервер. А потом в логах раз в пару дней появляется sqlite3.OperationalError: database is locked, и непонятно, кто и что держит. Показываю на воспроизводимых примерах три причины, которые я встречал в заказах: забытый commit из-за неявных транзакций модуля sqlite3, транзакцию «прочитал, потом записал», которая падает мгновенно даже с timeout, и синхронный драйвер внутри asyncio. В конце обёртка на aiosqlite с WAL, busy_timeout и BEGIN IMMEDIATE, которую я теперь ставлю в каждый такой проект. Код проверен на Python 3.14 и SQLite 3.50.

Читать далее

Представлен выпуск СУБД DuckDB 2.0.0 LTS

Время на прочтение5 мин
Охват и читатели7.8K

21 октября 2026 года состоялся релиз СУБД DuckDB 2.0.0 LTS «Cinnamon Teal» (лат. Spatula cyanoptera - Коричневый чирок - утка с эффектным красновато-коричневым оперением, обитающей в западной части американского континента) с долгосрочной поддержкой до конца 2027 года. Исходный код проекта написан на языке С++ и распространяется под лицензией MIT. Выпуск СУБД DuckDB 1.0 произошёл в июне 2024 года.

Читать далее

Почему я собираю лидов в Airtable

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели9.1K

Больше миллиона строк, 161 таблица и гигабайт данных за пять лет. А потом форма просто перестала принимать ответы: база упёрлась в лимит записей по тарифу.

Читать далее

Opencode, история сессий и база данных

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели7.2K

Я обнаружил, что история работы с AI‑агентом может быть полезным источником информации. Поэтому создал инструмент, который позволяет проще исследовать эту историю и возвращаться к результатам прошлой работы.Представляю вам opencode-db — это CLI‑утилита для быстрого изучения, поиска и экспорта истории сессий OpenCode без необходимости вручную разбираться во внутреннем устройстве SQLite‑базы.

Подробности

Текучесть кадров персонала по журналу смен: считаем на SQL, когда никто не увольняется

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели4.6K

У сменного персонала нет даты увольнения. Грузчик или комплектовщик, который работает самозанятым по договору оказания услуг, не пишет заявление. Он просто перестаёт брать смены, а через месяц может снова появиться в приложении, как будто никуда не пропадал. Поэтому классическая формула, по которой считают текучесть кадров организации (уволившиеся за период, делённые на среднесписочную численность), здесь не работает: в числителе нечего считать.

Зато есть журнал событий: в нашем приложении у исполнителя на каждой смене четыре кнопки: «Выехал», «На месте», «Работа выполнена», «Оплата получена», и каждое нажатие ложится строкой в таблицу. Из такого журнала текучесть можно посчитать прямо в базе, без выгрузок в Excel и без Python: нужны две оконные функции и один честно выбранный параметр. Ниже разбор по шагам, с запросами и с тем, как сильно результат зависит от этого параметра: на одних и тех же данных месячная текучесть получается и 19%, и 213%.

Запросы написаны для SQLite (нужна версия 3.25 или новее, где появились оконные функции), в конце есть заметки про PostgreSQL.

Читать далее

Внутри Telegram Serverless: код, БД и Mini App из коробки

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели9.4K

Недавно команда Telegram выкатила решение, которое закрывает все эти вопросы разом — нативную платформу Serverless (beta) прямо внутри @BotFather. Теперь запускать серверную логику бота на JavaScript, хранить данные в реляционной БД и раздавать фронтенд для Mini App можно непосредственно в облаке Telegram без собственного сервера.

В этой статье разберём, как устроен tgcloud изнутри, почему его документация идеально заточена под разработку с помощью ИИ-агентов, и посмотрим на реальный кейс: как я поднял на этом стеке игру Wordle (wordslebot) с единым стейтом для чата и Mini App, системой друзей, лобби, мультиплеерными комнатами и внутриигровым чатом.

Читать далее

Ближайшие события

Биткорд мессенджер: как запустить собственный музыкальный HLS - сервис?

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели10K

В этой статье речь пойдёт о том, как разработать и запустить собственный аудиосервис на площадке Bitcord Open Network. Напомню, что Bitcord по сути, это небольшая открытая социальная платформа, выполненная в виде приложения для смартфонов и работающая на базе клиент-серверной архитектуры. Здесь можно общаться с друзьями и коллегами, создавать публичные и частные каналы и даже запускать сторонние сервисы.

Приложение Bitcord занимает очень мало места. Размер его установочного пакета составляет чуть более 3 мегабайт (3.2 Мб. актуальный релиз). Оно не перегружено сложной графикой и не использует тяжёлые библиотеки или SDK. К примеру, реализованная в мессенджере видеосвязь, построенная по технологии WebRTC (P2P), задействует встроенные компоненты самой операционной системы, что позволяет сократить размер приложения на десятки мегабайт.

Читать далее

Три месяца pet‑проекта: 450 Telegram‑каналов стримеров, 20 тысяч строк PHP и 1 рубль в день

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.6K

Летом я сделал сайт, который собирает публичные Telegram‑каналы российских стримеров в одну ленту. Идея была простая: я подписан на десяток таких каналов и устал листать их по очереди, чтобы узнать, будет ли сегодня стрим.

Через три месяца у проекта 260 коммитов, 450 каналов, больше 60 тысяч постов в базе, около 4 тысяч страниц в поиске Яндекса и доход от рекламы — 1–2 рубля в день. Это честная ретроспектива: что сработало, на какие грабли я наступил и что показали данные про то, зачем люди на самом деле приходят на такой сайт. Спойлер: не за тем, для чего я его делал.

Читать далее

Вышла СУБД SQLite 3.54

Время на прочтение3 мин
Охват и читатели8.4K

9 октября 2026 года состоялся релиз легковесной СУБД SQLite 3.54, оформленной в виде подключаемой библиотеки. В этом обновлении прекращена поддержка Windows XP. Исходный код проекта SQLite написан на C, распространяется как общественное достояние (public domain) и может использоваться без ограничений и безвозмездно в любых целях.

Читать далее

Шестнадцать обещаний и две модели, которые пытались их нарушить: как мы выпускали skillmem 0.12

Время на прочтение5 мин
Охват и читатели8.1K

В 0.11 мы сорок раундов гоняли ИИ-ревьюеров по коду и нашли много багов. Но у каждого ревьюера было своё представление о том, что значит «правильно». В 0.12 мы начали с другого конца: записали шестнадцать инвариантов, которые обещает наша MCP-память, а затем две модели из разных лабораторий десять дней искали контрпримеры. Засчитывалась только находка с воспроизведением. Рассказываю, что они сломали (Windows посчитала NUL терминалом), во что это обошлось и что мы сознательно оставили в Known issues.

Читать далее

Одна папка вместо разбросанных файлов: как я сделал переносимое хранилище для офлайн-приложения на Flutter

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели4.6K

Прошлый раз я писал про то, как заложил в схему БД поля под синхронизацию, которой пока нет. Синхронизации до сих пор нет, зато вышли два обновления: 0.2.0 и 0.2.1. В этой статье про три вещи, на которых пришлось подумать: переносимую папку с данными, бэкапы и импорт из Notion и Obsidian. Nookly — локальное приложение для заметок на Flutter: страницы, блоки, таблицы, канбан, поиск. Данные лежат в SQLite на устройстве, без облака.

Читать далее

Как я спроектировал офлайн‑приложение для заметок под будущую синхронизацию — и собрал лендинг без единой сборки

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.2K

Полгода назад я в одиночку начал делать Nookly — локальное приложение для заметок на Flutter: страницы, блочный редактор, таблицы с канбан-видом, полнотекстовый поиск. Ключевое требование с самого начала: всё работает офлайн, данные не покидают устройство. В этом посте — не про сам продукт, а про два инженерных решения, которые могут быть полезны: как спроектировать схему БД так, чтобы синхронизация потом не потребовала переписывания половины кода, и как собрать лендинг вообще без шага сборки.

Читать далее

Как соцсеть для Егоров превратилась в автономный город на Node.js и SQLite

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели13K

11 недель назад я начал делать социальную сеть, в которой гражданство зависело только от имени.

Если тебя зовут Егор, Георгий или одной из форм имени, происходящего от Georgios, то это место для тебя, 100%! Остальные становятся Наблюдателями: могут читать, реагировать, писать в личку, жить в своих районах — что-то вроде ВНЖ.

На этом месте проект вполне мог закончиться хорошей шуткой, которой и являлся ИЗНАЧАЛЬНО. Но пользователи начали спрашивать, кто здесь главный.

Так в Егороде появился мэр. Потом люди спросили, кто выбирает мэра. Появились выборы.

Затем — партии, депутаты, кабинет, указы, вето и импичмент, а социальная сеть начала подозрительно напоминать государство, состоящее преимущественно из Node.js, SQLite и людей по имени Егор.

Сейчас в проекте около 11,9 тысячи регистраций, обычный DAU — примерно 30–35 человек, кодовая база выросла примерно до 210 тысяч строк, 176 таблиц и 2625 тестов.

И именно небольшой ежедневный онлайн в итоге сильнее всего повлиял на архитектуру, потому что город на 30 человек может позволить себе довольно простую инфраструктуру.

Но он не может позволить себе переставать существовать, когда эти 30 человек уходят спать.

Читать далее
1
23 ...