Глоссарий
Планировщик
Планировщик это часть программы, запускающая работу в выбранный вами час, а не в минуту нажатия кнопки.
На что указывает расписание
Расписание это не самостоятельный будильник. Оно называет сценарий, профили, по которым он пойдёт, частоту повтора и то, сколько идёт разом.
Сценарий
То, что будет исполнено. Без него расписание оказалось бы будильником, звонящим в пустоту.
Профили
По каким профилям оно работает, и каждый сверяется с теми, что у вас есть.
Правило повтора
Ежедневно в час, еженедельно по выбранным дням или через целое число часов.
Сколько разом
Небольшая горстка одновременно, и тридцать профилей превращаются в очередь, а не в тридцать входов за минуту.
Местное время это и есть суть
Девять утра это девять там, где вы сидите, и после перевода часов это по-прежнему девять. Следующий срок находится перебором календарных дней, потому что дважды в год сутки не равны вчерашним.
Каждое расписание помнит тот сдвиг, в котором срок посчитан, и другой сдвиг при запуске программы заставляет пересчитать время заново.
Ваша машина прямо сейчас
- Ваш часовой пояс
- измеряем на вашей машине
- Часов от UTC
- измеряем на вашей машине
Прочитано в вашем браузере и показано здесь. Никуда не отправляется.
Опоздавший срок и пропущенный
Только что прошедший срок это всё ещё тот самый прогон, поэтому короткий запас даёт ему состояться. Позже это уже другое время суток, и запуск тогда был бы ровно тем, чего расписание и избегает.
- 1
Вы открываете крышку
Ближайший тик приходит в пределах полуминуты после пробуждения программы.
- 2
Просроченное уходит вперёд
Всё, что опоздало быть собой, переводится в будущее.
- 3
Вам говорят о потерянном
Одно предупреждение на расписание, с именем сценария и числом несостоявшихся прогонов.
Где на самом деле идут часы
Аккаунт хранит расписания, чтобы они ездили между вашими машинами, и не исполняет ни одного. Прогону нужны печенье, отпечаток и прокси профиля, а всё это лежит на вашем компьютере.
Заведённое в программе работает здесь с минуты сохранения. Приехавшее из аккаунта ложится неработающим на этой машине, пока вы не решите иначе: две открытые копии запустили бы один прогон дважды.
Когда срок не превращается в прогон
Наступивший срок не всегда становится прогоном. Каждый такой случай поднимает уведомление сразу и оставляет строку, которую можно прочитать наутро.
Нет действующей подписки
Срок проходит мимо, и ничего не копится на потом.
Прошлый прогон ещё идёт
Длинный прогон переживает свой же следующий срок, и сценарий не запускают в его собственные профили.
Профили уже открыты
Живые окна остаются нетронутыми, а не переоткрываются поверх работы в них.
Профилей больше, чем даёт тариф
Список подрезается, и место среза идёт по кругу, чтобы обделённым был каждый раз другой конец.
Часто путают с этим
Расписание на сервере
Серверное расписание идёт без вас. Это идёт, пока открыта программа, потому что нужный ему браузер стоит у вас на столе.
Очередь
Очередь берёт работу, как только освободился работник. Расписание существует ради того, чтобы работа случилась в выбранный час и не раньше.
Дневной счётчик темпа
Тот считает открытые за день страницы и красит полосу, а ничего не запрещает: решение остаётся за вами.
Чего это не делает
- Ничто не идёт, пока программа закрыта или спит. Служб в системе не ставится, поэтому закрытый ноутбук свой срок пропускает.
- Пропущенные сроки никогда не догоняются. Вместо прогонов вы получаете их число и предупреждение: очередь догоняющих прогонов к завтраку это ровно тот всплеск, ради которого расписание и заводят.
- Правила повтора закреплены: ежедневно в час, еженедельно по выбранным дням или через целое число часов. Ни выражений в стиле cron, ни разовых дат, ни промежутка короче часа.
- Расписанию всегда нужен сценарий, а разносит старты оно только числом одновременных. Правила, которое просто открывает профили к часу и оставляет их стоять, здесь нет.
Проверить
Правила, файл, который их держит, и стенд, который их исполняет.
- Правила повтора, запас опоздания и перебор до следующего срока
- apps/desktop/src/lib/schedules.js
- Местное время переживает перевод часов, а пропущенное считается, а не догоняется
- apps/desktop/test/schedule-runs.js
- Тик, квота тарифа на весь тик и каждая причина пропуска срока
- apps/desktop/src/main/main.js
- Приехавшее из аккаунта ложится выключенным здесь и включается кнопкой
- apps/desktop/test/расписание-включается-здесь.js
Вопросы
- Могут ли два моих компьютера запустить одно расписание?
- Нет. Дошедшее до второй машины расписание ложится с пометкой «не здесь» и кнопкой включения: один аккаунт, пришедший дважды из двух мест, это ровно та примета, ради которой продукт и существует.
- Сдвигает ли ручной запуск ближайший срок?
- Нет. Он запускает сценарий сразу и оставляет расписание нетронутым, поэтому нажатие в восемь утра не отменяет девятичасовой прогон.
- Что будет при смене часового пояса?
- Ближайший срок пересчитывается в том поясе, где вы сейчас. Уже наступивший срок этот пересчёт переживает, поэтому переезд не съедает прогон, который должен случиться сию минуту.
- Как часто оно смотрит на часы?
- Дважды в минуту, внутри программы. Чаще значило бы тратить батарею там, где минута точности не значит ничего.
- Что записывается после прогона?
- Признак, а не фраза, и в слова он превращается на языке того, кто смотрит. Пропуск хранится отдельно от итога, потому что несостоявшийся срок это не прогон с плохим исходом.
Поставьте ночной прогон на часы
Соберите сценарий один раз, выберите профили и час. Остальное программа делает, пока открыта.