J’ai un petit soucis de mémoire, je peux retenir/apprendre des choses très rapidement, mais aussi les oublier très rapidement et en ce qui concerne la vie courante c’est encore pire.


Il m’est arrivé plusieurs fois d’oublier (ou presque) des anniversaires ou des fêtes de mes proches (honte sur moi).


Pour palier à ma défaillance (humaine) j’ai donc cherché un moyen technique, sous la forme d’un programme m’avertissant (par mail) des anniversaires et autres rappels.


Mon choix s’est porté sur Remind qui est un outil en ligne de commande qui peut donc être installé sur mon serveur (sweetBox).


Installation

La solution la plus simple consiste à faire :

sudo aptitude install remind


Cependant avec cet installation vous aurez Remind en anglais (ce qui n’ai pas un problème en soi), si vous êtres joueur ou que vous voulez absolument Remind en français il va falloir le recompiler, en effet le paramétrage de la langue se fait à la compilation (pas top)


Installation à partir des sources (en FR)

On télécharge et décompresse les sources :

wget  http://www.roaringpenguin.com/files/download/remind-03.01.07.tar.gz
tar -xvf remind-03.01.07.tar.gz


Tant qu’on y est on peut éditer le fichier de configuration src/custom.h, pour ajouter sa position géographique (utile si vous faite des rappels en rapport avec les heures de levé couché du soleil) :

#define LAT_DEG 47
#define LAT_MIN 13
#define LAT_SEC  5
#define LON_DEG  1
#define LON_MIN 33
#define LON_SEC 10
#define LOCATION "Nantes"
#define DATESEP '/'


Rque : pour trouver ces coordonnées je suis allé sur Wikipédia


On compile puis on installe le programme (à noter le passage de la langue lors du make) :

./configure
make "LANGDEF=-DLANG=FRENCH"
sudo make install


Création des fichiers de rappel

Je ne vais pas rentrer ici en détail dans la syntaxe Remind, les possibilités sont énormes et je penses que l’on peut y passer pas mal de temps avant de la maitriser.


Remind se paramètre via un/des fichiers de configuration passé en paramètre.

Rque : si vous utilisez la commande rem en lieu et place de remind il essaiera de trouver un fichier .reminders dans le home de votre utilisateur.


Simplement un rappel à la syntaxe suivante :

REM [mois abrégé] [jour] MSG [texte libre]


Par exemple :

REM Mar 27 MSG Anniversaire du blog


Le mois abrégé est en anglais ou en français si vous avez compilé le programme en français, mais même dans ce cas il est conseillé d’utiliser l’abréviation anglaise (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)


En lisant les divers tutoriels (référencés en fin d’article) et le man vous pourrez voir qu’il existe des tonnes de possibilités de rappel cyclique (tous les lundi, tous les 2ème mardi du mois), d’omission/exception (faire un rappel à une date donnée sauf si c’est un jour férié), de formule de calcul, etc.


Pour mon cas personnel (rappel pour les anniversaires et fêtes) j’utilise les « astuces » suivantes :

Formule de calcul qui permet de calculer un age en fonction de l’année de naissance :

FSET _yr_num(yr)         YEAR(TRIGDATE()) - yr


Dès lors tous mes rappels d’anniversaire se font ainsi :

REM Mar 27 MSG Anniversaire de ce blog ([_yr_num(2009)] ans)


Ce qui donnera le 27 mars prochain :

Anniversaire de ce blog (1 ans)



Rappel pour la fête des mères :

La fête des mère à lieu en France le dernier dimanche de mai, sauf si elle coïncide avec le jour de la Pentecôte. Dans ce cas, elle a lieu le premier dimanche de juin. (Source Wikipédia), ce qui donne avec Remind :

REM SUN 1 Jun --7 OMIT MON TUE WED THU FRI SAT AFTER MSG Fête des mères


On voit ici la puissance de l’outil, j’avoue ce n’est pas moi qui ait créé ce rappel (je ne le comprend même pas) mais je l’ai trouvé sur ce thread.



Rappel pour la fête des pères :

REM SUN Jun 15 MSG Fête des pères



Tester

Pour exécuter Remind de l’appeler avec le nom/chemin du fichier de configuration :

remind remindTest.txt


Ou si vous avez créé un fichier de configuration .reminders sous votre home, il existe un alias :

rem


Pour tester une date donnée, il suffit de l’ajouter à la ligne de commande au format AAAA-MM-JJ

remind remindTest.txt 2010-05-30


Enfin il est possible de voir tous la prochaine date de déclenchement de chacun des rappels :

remind -n remindTest.txt



Rediriger la sortie de Remind vers un mail

Remind à une option qui permet d’envoyer son résultat vers une commande définie

Cette option est le -k et on fait référence au résultat de Remind avec le pattern %s.

remind -k'echo %s | mail -s "Pense-bete" adresse@email.fr' remindTest.txt


Remind appelle la commande echo en lui faisant afficher le résultat (%s), la sortie de la commande echo est redirigé via le pipe vers la commande mail classique…

Remind lorsqu’il est appelé avec l’option -k échappe avec des \ tous les caractères spéciaux contenu dans %s, il n’est donc pas nécessaire de mettre %s entre quote/guillemet



Planification

J’ai planifié Remind afin qu’il s’exécute tous les jours durant la nuit (avec mes autres job) et au boot de l’ordinateur si jamais celui-ci n’était pas allumé la nuit

J’ai réalisé ceci avec une planification Cron/Anacron (voir Planificateurs de tâches Cron et Anacron et leurs interactions)


Création d’un script remind.sh :

#! /bin/bash
 
. $HOME/.profile
cd $(dirname "${0}")
 
remind -k'echo %s | mail -s "Pense-bete" adresse@email.fr' remindAnniversaires.txt



Création d’une entrée anacron dans /etc/anacrontab :

1       0       remind           /home/mon_user/bin/remind.sh


Création d’une entrée Cron dans la crontab de mon utilisateur, appelant le script puis anacron avec le paramètre -u pour qu’il mette a jour sont timestamp sans exécuter la tache

30 0  *  *  *       /home/svc/bin/remind.sh ; anacron -u remind



Sources :

Remind | Roaring Penguin : Le site du projet

Remind: The Ultimate Personal Calendar : Article généraliste survolant les possibilité de Remind, les interfaces graphiques qu’il est possible d’y adjoindre et les sorties (papier)

[Remind-Fans] Mother’s day in France : Thread où j’ai trouvé la formule pour la fête des mères

remind-oclug.pdf (Objet application/pdf) : Présentation très intéressante sur Remind


Remind – 43FoldersWiki : Pages Remind du Wiki du site de productivité 43Folders

Dont les pages suivantes :

User:JamesRifkin/defs.rem – 43FoldersWiki : Définition de constantes, de date de vacances, etc, bref à creuser

Remind FAQ – 43FoldersWiki : FAQ Remind, des trucs et astuces…


Guest: Mike Harris looks at « Remind » | 43 Folders : Article correspondant sur le site 43folders

Linux.com :: Manage your time with Remind

Geek to Live: Keep your calendar in plain text with Remind – Cygwin – Lifehacker : un article sur Lifehacker

$ cat blog: remind en français (Debian Etch) : un rare article en français avec un package remind pour debian etch (vieille version)

Remind + Ubuntu + Gmessage : Remind sous Gnome (popup)

HOWTO: One remind to rule them all [Archive] – Ubuntu Forums : le temoingnage d’un utilisateur de Remind (je lui ai piqué sa fonction pour calculer les ages)

remind – remind syntax : vim online : La coloration syntaxique de remind sous vim


Autres reminders :

The BDAY Handbook: Introduction

pal calendar

GBirthday : client graphique se basant sur evolution

Email-Reminder


Image par Balakov sous CC BY-NC : fleur de myosotis appelé forget-me-not en anglais

Les commentaires sont fermés.