Рубрика «sqlite»

Копия базы открылась, проверка целостности ответила ok. После копирования SHA-256 файла raw.db совпадал с SHA-256 основного live.db. При этом соединение SQLite видело два заказа, а отдельная копия — один. Справка о здоровье выдана, пациент недоукомплектован.

Я получил этот результат при проверке на отдельной локальной базе. Создал две контрольные записи, сохранил изменения и сделал две копии разными способами. Рабочих клиентских данных в этой проверке не было. Зато были настоящие файлы, зафиксированные транзакции и вполне настоящий результат: второй заказ в копию одного основного файла не попал.

Читать полностью »

Представим: в отчёт добавили новые регистрации, и общий D30 retention снизился с 20% до 10%. При этом ни один из пользователей, для которых D30 уже наступил, не изменил своё поведение. Ошибка может оказаться в знаменателе: туда попали люди, чей тридцатый день ещё впереди.

Разберём эту ситуацию на условных данных и воспроизведём расчёт в SQLite. Отдельно проверим три случая: пользователь вернулся, пользователь не вернулся и результат пока нельзя измерить.

Что именно будем считать

Читать полностью »

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

Из этого раздражения и вырос KINO PARTY (partykino.comЧитать полностью »

Привет.

Мне нужно было открыть страницу и увидеть, что происходит на удалённых серверах: нагрузка, процессы, диски, логи. Всё, что я находил, делилось на два лагеря. В первом система, под которую поднимаешь несколько сервисов и потом живёшь с их конфигами. Во втором простая штука, которая выглядит как из прошлого десятилетия и под себя почти не настраивается. Красивого, простого и гибкого одновременно я не нашёл. Мне это надоело, и я написал своё.

Читать полностью »

Мы с друзьями несколько лет сидели в Discord: вечером голосовая комната, кто-то стримит игру, кто-то просто фоном что-то делает. Потом захотелось своего. Без чужих правил, без подписок, без того, что в один день тебе скажут подтвердить возраст селфи (Discord, кстати, с 23 сентября именно это и раскатывает).

Готовые варианты я смотрел, но везде что-то не сходилось: то сервер нужен потяжелее, то голос и чат живут в разных программах, то установка рассчитана на человека, который сам админит серверы. А мне нужно было, чтобы всё было в одном окне, как в Discord, и чтобы сервер мог поднять любой из компании.

Читать полностью »

Казалось бы, написать простого Telegram‑бота в 2 026 году — задача на один вечер. Но как только пет‑проект вырастает из «эхо‑бота» во что‑то с сохранением состояния, базой данных и тем более полноценным Telegram Mini App, начинается классическая инфраструктурная рутина: арендовать VPS, настроить веб‑сервер и SSL‑сертификаты для вебхуков, поднять базу данных, настроить деплой статики для фронтенда и следить, чтобы всё это не упало в самый неподходящий момент.

Недавно команда Telegram выкатила решение, которое закрывает все эти вопросы разом — нативную платформу Serverless (beta) прямо внутри @BotFatherЧитать полностью »

В плане локального менеджера закладок появилась SQLite. Сам выбор выглядит разумно: один пользователь, небольшая база, ничего не нужно разворачивать на сервере. Но по названию базы ещё нельзя понять, что произойдёт при повторном сохранении ссылки и переживут ли изменения перезапуск приложения.

Читать полностью »

Сейчас у меня регулярно занимаются четыре ученика. Для четырёх человек CRM звучит как избыточное решение. Но проблема оказалась не в числе контактов: один диалог жил в Telegram, другой — в WhatsApp, ещё два канала были VK и MAX. Перед уроком я вручную вспоминал, где написать ученику, отправлял напоминание и искал ссылку на встречу.

Я собрал рабочее место на базе Chatwoot и дописал небольшой сервис, который связывает календарь с конкретным диалогом. Ниже — как устроена эта цепочка, почему в событии хранится именно номер диалога, а не номер контакта, и какую гарантию доставки в действительности даёт SQLite.

Читать полностью »

https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js