Chez oim, forum libre

Débattre => Informatique, programmation, geek attitude... => Discussion démarrée par: Songbird le lundi 30 mai 2016, 06:58

Titre: Scheduler fait-maison :D
Posté par: Songbird le lundi 30 mai 2016, 06:58
Petit post pour laisser une trace d'un outil tout frais compilé que j'ai écrit récemment en Dart (il y a un repo github (https://github.com/Songbird0/Phaeris) dessus d'ailleurs), et puis si ça peut servir quelqu'un un de ces quatre... :)

Utilisation:
En tant qu'utilisateur, il n'y a qu'une seule classe qui nous intéresse: la classe Noxine.

Grâce à cette dernière, vous pouvez lui demander de programmer une tâche à une heure bien précise dans la journée:

Par défaut, la classe assume que vous voulez programmer votre tâche à l'heure où vous préparez la tâche. (Donc si vous demander d'exécution une tâche dans 5 heures et que l'instruction est exécutée à midi, la tâche sera exécutée à 17h.)

Code
var date = new DateTime.now();
var noxine = new Noxine(date.second, date.minute, date.hour);
noxine.setOffset(10); //La tâche sera effectuée dans 10 secondes

Maintenant, si vous souhaitez que la classe vérifie régulièrement si la tâche peut être exécutée, il vous suffit d'accrocher votre écouteur à une tâche redondante que l'utilisateur peut faire par exemple:
Code
class MyTester extends ReachedTimeListener
{
	MyTester()
	{

	}

	void whenOffsetHasBeenReached()
	{
		print("It's time ! :D");
	}
}
/* Vous créez une classe qui servira d'écouteur en implémentant l'interface appropriée */

var today = new DateTime.now();
	Noxine noxine = new Noxine(today.second, today.minute, today.hour);
	noxine.setOffset(10);
	noxine.addEventListener(new MyTester()); /* Vous renseignez l'écouteur à l'objet Noxine */
    Element elem = querySelector("#area"); /* Vous récupérez l'élément que vous voulez écouter */
    elem.onClick.listen((_) => 	noxine.computeTimeLeft().then((_){
            if(noxine.timeHasBeenReached)
            {
            	print("Time has been reached ! :D");
            }
            else
            {
            	print("Time hasn't been reached ! :'(");
            }
    		})); /* Puis vous rédigez les instructions que vous voulez exécuter en cas de succès */

Et voilà, la classe s'occupera du reste à votre place ! :)

Off-Topic:
Attention toutefois, la version actuelle de la classe ne gère pas le cas où l'heure, à laquelle la tâche est programmée, est différente ! Pour le moment, vous devrez faire ces tests vous-mêmes pour vous éviter des ennuis.
Titre: Scheduler fait-maison :D
Posté par: alex le lundi 30 mai 2016, 10:57
Aaaaah la cron. Si elle n'existait pas, faudrait l'inventer. :)


(https://static.chez-oim.org/uploads/member_1/stock1/1464598647.jpg)