Устаревшая "проверка...", восс... Заметка
DEV Community на русском

Устаревшая "проверка...", восстановленная с диска, — это ложь, поэтому в одном из наших шести хранилищ нет файла.

Notifio — это настольное приложение, предназначенное для мониторинга страниц поиска аренды и оповещения пользователей о новых объявлениях. Оно управляет шестью различными частями состояния приложения, каждая из которых имеет уникальные правила для своего жизненного цикла. Эти правила выводятся из фундаментального вопроса о том, что представляет собой каждое состояние.Настройки конфигурации, такие как поиски, электронная почта и лицензия, хранятся в config.json и сохраняются при всех операциях. Базовая версия страницы поиска сохраняется на диск, но ей нельзя доверять после перезапуска приложения, она переоценивается при следующей проверке. Недавние находки хранятся в finds.json и предназначены для сохранения после перезапусков приложения и перенаправления поиска, выступая в качестве важной истории.Журнал ответов, хранящийся в ledger/replies.ndjson, отслеживает исходящие сообщения и является только добавляемым, чтобы обеспечить целостность данных после сбоев, а его рост обрабатывается сжатием. Право на обновление сохраняется в entitlement.json и включает флаг устаревания, указывающий на его действительность. Состояние выполнения поиска в реальном времени, которое отслеживает текущие проверки и статусы, намеренно хранится только в памяти, чтобы избежать представления устаревшей информации.Это состояние в памяти критически важно; его сохранение после сбоя исказило бы текущую активность приложения. Кнопка «Стоп» очищает это живое состояние, потому что описанный запуск завершен. Изменения этого живого состояния объединяются перед отправкой в рендерер, чтобы избежать его перегрузки.Базовая версия страницы каждого поиска идентифицируется хешем ее URL-адреса, а не ее позицией в списке, что предотвращает ошибки, связанные с редактированием списка. Возраст базовой версии определяется меткой времени изменения файла, что устраняет необходимость в отдельном поле lastCheckedAt. Находки и журнал ответов — это истории, которые не должны удаляться действиями, не связанными с ними.История находок хранится отдельно от снимков для каждого поиска, потому что перенаправление поиска в противном случае стерло бы ценные исторические данные. Только добавляемый характер журнала ответов с сжатием обеспечивает безопасность при сбоях и обрабатывает отслеживание сообщений. Наконец, срок службы каждого состояния определяется его основной целью: намерением пользователя, произошедшими событиями, информацией из внешнего мира или временными данными в реальном времени.