Как автоматически сохранять изображение Pharo каждый час? - PullRequest
9 голосов
/ 11 января 2011

Я хочу сохранять свое изображение Pharo каждый час в час автоматически.

Как бы вы сделали это автоматически в изображении?

Я видел, как проект Pier сделал это.Но я не уверен, как они это делают.

TIA

Ответы [ 3 ]

5 голосов
/ 12 января 2011

На SqueakSource есть проект планировщика , который выглядит как cron для Smalltalk. Из обзора:

"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.

Вы можете комбинировать это с кодом блокировки или с сохраненным в OSProcess saveImageInBackgroundNicely, упомянутым выше, и получить хорошее простое решение.

5 голосов
/ 11 января 2011

Результат обсуждения в списке рассылки, с небольшим налетом, чтобы запустить его только ежечасно:

[[self blockUI.
  self doUpdate.
  SmalltalkImage current snapshot: true andQuit: false.
  self unblockUI.
  (Delay forDuration: (Duration hours: 1)) wait] repeat] fork
1 голос
/ 17 января 2011

Вы можете сделать это, и это может работать просто отлично.

Но я бы не стал это делать.

Не для сохранения в производстве.

Почему?

Потому что изображения похожи на ваш сеанс на вашем ноутбуке.Сохранение вашего изображения - это все равно, что перевести ноутбук в спящий режим: оно сохраняет все.

И в конечном счете, в каком-то состоянии будет какое-то необъяснимое дерьмо, которое может что-то усложнить, и вам потребуется выполнить полную перезагрузку.*

Это не помогает пытаться быть перфекционистом в этом (или, может быть, это так, но, безусловно, не экономично).Это просто произойдет, и перезагрузка вашего ноутбука - дешевое решение, чтобы иметь свежее состояние.Но это для вашего приложения на smalltalk может быть не таким уж дешевым.

Сложная перезагрузка в smalltalk будет означать, что вам нужно взять новое изображение и снова загрузить весь ваш код (это может быть автоматизировано, но опыт подсказывает, что это может бытьмного времени).

...