Как сохранить изображение Pharo автоматически каждый час?
-
09-10-2019 - |
Вопрос
Я хочу сохранить свой образ Pharo каждый час на час автоматически.
Как бы вы сделали этот автоматический в рамках изображения?
Я видел проект пирса сделать это. Но я не уверен, как они это делают.
TIA
Решение
Здесь Планированный проект на Squeaksource Это похоже на Cron для SoldTalk. Из обзора:
"Start a new task scheduler and keep it around" scheduler := TaskScheduler new. scheduler start. "Let's save the image every hour" scheduler do: [Smalltalk snapshot: true andQuit: false] every: 60 minutes.
Вы можете комбинировать это с блокирующим кодом или ASPROCSESSIMAGEINBACKGLENGENGENGING, упомянутой выше, и приятное простое решение.
Другие советы
Результат обсуждения в списке рассылки, С какой глазурью, чтобы запустить его только почасовой:
[[self blockUI.
self doUpdate.
SmalltalkImage current snapshot: true andQuit: false.
self unblockUI.
(Delay forDuration: (Duration hours: 1)) wait] repeat] fork
Вы можете сделать это, и это может работать просто хорошо.
Но я бы не сделал это.
Не настойчивость в производстве.
Почему?
Потому что изображения похожи на вашу сессию на вашем ноутбуке. Сохранение вашего изображения - это как надеть ноутбук спать: все сохраняется.
И в долгосрочной перспективе некоторое состояние будет иметь некоторое необъяснимое дерьмо, которое может что-то усложнить, и вам нужно будет сделать жесткую перезагрузку.
Это не помогает попытаться быть перфекционистом об этом (или, может быть, это, конечно, не является экономическим). Это просто произойдет и перезагрузка вашего ноутбука - это дешевое решение для свежего состояния. Но это для вашего приложения SmallTalk может не быть таким дешевым.
Трудная перезагрузка в SmallTalk будет означать, что вы должны сделать свежее изображение и снова загружать весь ваш код (его можно автоматизировать, но опыт говорит, что может быть потребляющим время).