мультиплатформа: cron или что-то еще?
От: c-smile Канада http://terrainformatica.com
Дата: 17.09.17 02:43
Оценка:
Это для Sciter Notes если что...
И я не знаю в каком разделе вопросы по мультиплатформе уместны поэтому задаю здесь.

Делаю scheduled events (планнер событий ?) фичу:

Юзер имеет возможность задать время-дату некоего события — программа должна предупредить перед тем как наступит событие (за сколько — конфигурируемо).

У меня две опции:

1. заставить программу работать в background постоянно и проверять время самому. Но это представляется лишним оверкилом поэтому:
2. Использовать что-то типа cron — т.е. просить систему запустить мой exe по наступлению времени. Что явно представляется гуманнее ...

В связи с #2 возникают следующие вопросы:

a. Есть ли мультиплатформенное решение (Win,Lin,Mac) для cron-alike schedulers ?
a.1 Если "нет" то я правильно ли понимаю что в Windows оно известно как Task Scheduler

b. Существует ли способ разбудить спящую машину с помощью этих самых cron/schedulers. Или таки мне еще рано хотеть запретного?

Ну и вообще я в правильном направлении смотрю или это как-то по другому можно сделать?
Re: мультиплатформа: cron или что-то еще?
От: m2l  
Дата: 17.09.17 10:08
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>1. заставить программу работать в background постоянно и проверять время самому. Но это представляется лишним оверкилом поэтому:

Вариант самый простой и работоспособный.

CS>2. Использовать что-то типа cron — т.е. просить систему запустить мой exe по наступлению времени. Что явно представляется гуманнее ...

Я может отстал от жизни, но cron — это прерагатива root-а. Не суперпользователь там ничего редактировать не может. И универасльной замены cron-у, доступный по умолчанию в разных дистрибутивах и простым поьзователям вроде бы нет.

CS>a. Есть ли мультиплатформенное решение (Win,Lin,Mac) для cron-alike schedulers ?

На вскидку не припоминаю подобного api для linux-а вообще (root-овый cron не считаем, да и демон это а не api).

CS>a.1 Если "нет" то я правильно ли понимаю что в Windows оно известно как Task Scheduler

Ты уверен, что Task Scheduler может рулить пользователь, которого нет в группе "администраторы"? Не так критично, как с рутом, но неприятно.

CS>b. Существует ли способ разбудить спящую машину с помощью этих самых cron/schedulers. Или таки мне еще рано хотеть запретного?

По cron точно никак. В остальных случаях это зависит от самой машины, настроек bios, установленных дров и настроек электропитания в ос.
Если в прямую такой задачи нет, то лучше не связываться — работать будет только в ограниченом числе случаев.

CS>Ну и вообще я в правильном направлении смотрю или это как-то по другому можно сделать?

Либо основную программу оставляй в фоне. Либо простой демон/служба в сотню килобайт, которые будут waitabled висеть и стартовать её когда надо.
Re[2]: мультиплатформа: cron или что-то еще?
От: Zhendos  
Дата: 17.09.17 11:24
Оценка:
Здравствуйте, m2l, Вы писали:

m2l>Здравствуйте, c-smile, Вы писали:


CS>>2. Использовать что-то типа cron — т.е. просить систему запустить мой exe по наступлению времени. Что явно представляется гуманнее ...

m2l>Я может отстал от жизни, но cron — это прерагатива root-а. Не суперпользователь там ничего редактировать не может. И универасльной замены cron-у, доступный по умолчанию в разных дистрибутивах и простым поьзователям вроде бы нет.

Вообще-то есть, systemd timers. И systemd рулит как системными процессами, так и пользовательскими.
Re: мультиплатформа: cron или что-то еще?
От: Zhendos  
Дата: 17.09.17 11:30
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Это для Sciter Notes если что...

CS>И я не знаю в каком разделе вопросы по мультиплатформе уместны поэтому задаю здесь.

CS>Делаю scheduled events (планнер событий ?) фичу:


CS>Юзер имеет возможность задать время-дату некоего события — программа должна предупредить перед тем как наступит событие (за сколько — конфигурируемо).


CS>У меня две опции:


CS>1. заставить программу работать в background постоянно и проверять время самому. Но это представляется лишним оверкилом поэтому:

CS>2. Использовать что-то типа cron — т.е. просить систему запустить мой exe по наступлению времени. Что явно представляется гуманнее ...

ИМХО, обе опции бесполезны. С одной стороны вероятность того что пользователь отойдет от компьютера в самый нужный
момент и получит напоминание слишком поздно очень велика,
с другой стороны у пользователя с собой есть другой компьютер (на котором в 90% Android/iOS),
который он носит всегда с собой. Поэтому, ИМХО, нужно напоминать пользователю либо с помощью
API календарей, или ставить свое приложение на эти устройства и отправлять им push уведомления.
Re: мультиплатформа: cron или что-то еще?
От: MTD https://github.com/mtrempoltsev
Дата: 17.09.17 11:46
Оценка: +1 -1
Здравствуйте, c-smile, Вы писали:

CS>Юзер имеет возможность задать время-дату некоего события — программа должна предупредить перед тем как наступит событие (за сколько — конфигурируемо).


Сейчас на всех платформах есть для этого интерфейс, гуглить можно по словам push notification service. Увы, кроссплатформенного решения не знаю.

CS>b. Существует ли способ разбудить спящую машину


А вот так, пожалуйста не делай, для тех кто так делает есть отдельный котел в аду.
Re[2]: мультиплатформа: cron или что-то еще?
От: DenisCh Россия  
Дата: 17.09.17 13:32
Оценка: +2
Здравствуйте, m2l, Вы писали:

m2l> CS>2. Использовать что-то типа cron — т.е. просить систему запустить мой exe по наступлению времени. Что явно представляется гуманнее ...

m2l> Я может отстал от жизни, но cron — это прерагатива root-а. Не суперпользователь там ничего редактировать не может. И универасльной замены cron-у, доступный по умолчанию в разных дистрибутивах и простым поьзователям вроде бы нет.

Чаго? по умолчанию в этих ваших линухах crontab -e редактирует кронтабу именно для текущаего пользователя.
А чтобы рутовый — надо именно sudo su ; crontab -e
avalon/2.0.3
Re[2]: мультиплатформа: cron или что-то еще?
От: DenisCh Россия  
Дата: 17.09.17 13:32
Оценка:
Здравствуйте, MTD, Вы писали:

MTD> CS>b. Существует ли способ разбудить спящую машину

MTD> А вот так, пожалуйста не делай, для тех кто так делает есть отдельный котел в аду.

Минус за это. Я этим очень часто пользуюсь.
avalon/2.0.3
Re[2]: мультиплатформа: cron или что-то еще?
От: c-smile Канада http://terrainformatica.com
Дата: 17.09.17 16:25
Оценка:
Здравствуйте, Zhendos, Вы писали:

CS>>У меня две опции:


CS>>1. заставить программу работать в background постоянно и проверять время самому. Но это представляется лишним оверкилом поэтому:

CS>>2. Использовать что-то типа cron — т.е. просить систему запустить мой exe по наступлению времени. Что явно представляется гуманнее ...

Z>ИМХО, обе опции бесполезны. С одной стороны вероятность того что пользователь отойдет от компьютера в самый нужный

Z>момент и получит напоминание слишком поздно очень велика,

У меня немного другой use case. Событие это скажем заметка "затмение солнца [2017-08-21 -1w]"
"service purchased until [2018-08-21 -1m]" т.е. это как правило не на следующий день и не критичные события.

Чего не хочется — требовать у user: дай мне свой username / password для google скажем. Чтобы зайти через его API. И где-то его хранить и пр. головная боль.

Z>с другой стороны у пользователя с собой есть другой компьютер (на котором в 90% Android/iOS),

Z>который он носит всегда с собой. Поэтому, ИМХО, нужно напоминать пользователю либо с помощью
Z>API календарей, или ставить свое приложение на эти устройства и отправлять им push уведомления.

Опция с сервером понятна и очевидна. Использование CalDAV и все такое.

Хочется server-less решение.
Re[2]: мультиплатформа: cron или что-то еще?
От: c-smile Канада http://terrainformatica.com
Дата: 17.09.17 16:42
Оценка:
Здравствуйте, m2l, Вы писали:

m2l>Здравствуйте, c-smile, Вы писали:


CS>>1. заставить программу работать в background постоянно и проверять время самому. Но это представляется лишним оверкилом поэтому:

m2l>Вариант самый простой и работоспособный.

Но уж сильно избыточный.

CS>>2. Использовать что-то типа cron — т.е. просить систему запустить мой exe по наступлению времени. Что явно представляется гуманнее ...

m2l>Я может отстал от жизни, но cron — это прерагатива root-а. Не суперпользователь там ничего редактировать не может. И универасльной замены cron-у, доступный по умолчанию в разных дистрибутивах и простым поьзователям вроде бы нет.

CS>>a.1 Если "нет" то я правильно ли понимаю что в Windows оно известно как Task Scheduler

m2l>Ты уверен, что Task Scheduler может рулить пользователь, которого нет в группе "администраторы"? Не так критично, как с рутом, но неприятно.

И cron и Task Scheduler работают для залогиненого юзера — это не проблема.


CS>>b. Существует ли способ разбудить спящую машину с помощью этих самых cron/schedulers. Или таки мне еще рано хотеть запретного?

m2l>По cron точно никак. В остальных случаях это зависит от самой машины, настроек bios, установленных дров и настроек электропитания в ос.
m2l>Если в прямую такой задачи нет, то лучше не связываться — работать будет только в ограниченом числе случаев.

А как же это вот:
MSDN: Your application can restore a computer that is in a sleep state to the working state by using a scheduled timer or a device event. This is known as a wake-up event.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa373235(v=vs.85).aspx

Т.е. какой-то механизм есть...

CS>>Ну и вообще я в правильном направлении смотрю или это как-то по другому можно сделать?

m2l>Либо основную программу оставляй в фоне. Либо простой демон/служба в сотню килобайт, которые будут waitabled висеть и стартовать её когда надо.

Это понятно.
Re[3]: мультиплатформа: cron или что-то еще?
От: m2l  
Дата: 17.09.17 17:48
Оценка:
Здравствуйте, DenisCh, Вы писали:

DC>Чаго? по умолчанию в этих ваших линухах crontab -e редактирует кронтабу именно для текущаего пользователя.

DC>А чтобы рутовый — надо именно sudo su ; crontab -e

Да, тут жестко промахнулся.
Re[3]: мультиплатформа: cron или что-то еще?
От: m2l  
Дата: 17.09.17 18:04
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>А как же это вот:

CS>MSDN: Your application can restore a computer that is in a sleep state to the working state by using a scheduled timer or a device event. This is known as a wake-up event.
CS>https://msdn.microsoft.com/en-us/library/windows/desktop/aa373235(v=vs.85).aspx

CS>Т.е. какой-то механизм есть...


Он есть, но с подводными камнями:
— должнать быть подержка со стороны bios материнской платы. Технически она есть, но по факту из-за багов может тупо не работать вообще или при определенных условиях (к примеру работать только если был сон или наоборот не срабатывать если была гибернация и т.д.).
— часть bios-ов в настройках имеет параметр, разрешать пробуждение компьютера по таймеру или нет. Как он настроен зависит от производителя, у кого то по умолчанию разрешено, у кого-то нет. Причем есть вариант, когда в настройках его нет и производителем по дефолту выставлен запрет.
— есть косяки в работе между виндой и биосом. В каких-то случаях что бы винда могла вообще установить таймер пробуждения нужны драва к материнке от производителя, которых по дефолту нет (стоят штатные виндовые).
— есть настройки электропитания (к примеру электропитание > дополнительные параметры > сон > разрешить таймеры пробуждения), которые регулируют будут ли устанавливаться или нет эти таймеры.

В итоге получаеться, что механизм есть, но у части пользователей он работать не будет. Насколько это большая часть я не скажу, но случаи будут не единичными.
Re[2]: мультиплатформа: cron или что-то еще?
От: c-smile Канада http://terrainformatica.com
Дата: 17.09.17 21:36
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Здравствуйте, c-smile, Вы писали:


CS>>Юзер имеет возможность задать время-дату некоего события — программа должна предупредить перед тем как наступит событие (за сколько — конфигурируемо).


MTD>Сейчас на всех платформах есть для этого интерфейс, гуглить можно по словам push notification service. Увы, кроссплатформенного решения не знаю.


CS>>b. Существует ли способ разбудить спящую машину


MTD>А вот так, пожалуйста не делай, для тех кто так делает есть отдельный котел в аду.


Ты говоришь что будить девайс штатными средствами типа плохо, но с помощью push notification это типа хорошо ...

Так что ли?

А вот как ты думаешь те push notification сделаны физически?
Re[3]: мультиплатформа: cron или что-то еще?
От: MTD https://github.com/mtrempoltsev
Дата: 18.09.17 04:36
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Ты говоришь что будить девайс штатными средствами типа плохо, но с помощью push notification это типа хорошо ...


Да, колхозить всегда плохо, надо использовать то, что предлагает система.

CS>А вот как ты думаешь те push notification сделаны физически?


Ты вроде взрослых человек, а обиделся как ребенок, что я восторга от твоей библиотеки не испытываю
Re[4]: мультиплатформа: cron или что-то еще?
От: c-smile Канада http://terrainformatica.com
Дата: 18.09.17 05:07
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Здравствуйте, c-smile, Вы писали:


CS>>Ты говоришь что будить девайс штатными средствами типа плохо, но с помощью push notification это типа хорошо ...


MTD>Да, колхозить всегда плохо, надо использовать то, что предлагает система.


CS>>А вот как ты думаешь те push notification сделаны физически?


MTD>Ты вроде взрослых человек, а обиделся как ребенок, что я восторга от твоей библиотеки не испытываю


Да ну обиделся... нормальная дискуссия, я много почерпнул. Т.е. польза есть.

Просто я не понял что имеется ввиду. Ты мне голову задурил с этим Qt так что я уже подумал что что-то модное про push notification я упустил...
Вот и спросил.
Re[2]: мультиплатформа: cron или что-то еще?
От: Masterspline  
Дата: 19.09.17 02:24
Оценка:
m2l>Я может отстал от жизни, но cron — это прерагатива root-а. Не суперпользователь там ничего редактировать не может.

Никогда такого не было. Любой пользователь может создать crontab файл из которого будут запускаться задачи (с привилегиями создавшего пользователя).

Для крона когда-то была необходимость поместить пользователя в нужную группу, так что, возможно, где-то использовали крон, не помещая по умолчанию пользователя в эту группу (сам я никогда с такими ограничениями не сталкивался).

Я бы для этой задачи разобрался с тем, какие планировщики используются по умолчанию в разных ОС (Lin, Win, Mac) и попробовал использовать их для решения своей задачи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.