diff --git a/Images/nextcloud_cookbook.png b/Images/nextcloud_cookbook.png new file mode 100644 index 0000000..0c845a0 Binary files /dev/null and b/Images/nextcloud_cookbook.png differ diff --git a/Images/nextcloud_fichiers_mobile_images.png b/Images/nextcloud_fichiers_mobile_images.png new file mode 100644 index 0000000..423d950 Binary files /dev/null and b/Images/nextcloud_fichiers_mobile_images.png differ diff --git a/Images/nextcloud_fichiers_partage.png b/Images/nextcloud_fichiers_partage.png new file mode 100644 index 0000000..d98295e Binary files /dev/null and b/Images/nextcloud_fichiers_partage.png differ diff --git a/Images/nextcloud_fichiers_tag.png b/Images/nextcloud_fichiers_tag.png new file mode 100644 index 0000000..1134147 Binary files /dev/null and b/Images/nextcloud_fichiers_tag.png differ diff --git a/markdown/chapitre_1_1.md b/chapitre_1_1.md similarity index 66% rename from markdown/chapitre_1_1.md rename to chapitre_1_1.md index 4180822..355739d 100644 --- a/markdown/chapitre_1_1.md +++ b/chapitre_1_1.md @@ -112,73 +112,3 @@ cd markdown # je reviens au repertoire d'origine ``` Note: [Pandoc](https://pandoc.org/) est un logiciel vraiment utile pour les créateurs de contenu, il permet de tout faire en Markdown (qui est facile à maîtriser), puis de publier sous une multitude de formats. Je vous conseille fortement d'y jeter un oeil. - -## Programmer l'exécution de scripts - -Nous avons maintenant créé le script parfait qui exécute les tâches ennuyantes que nous faisions auparavant manuellement. Maintenant, puisque nous planifions partir en vacances, il faut dire à notre système quand exécuter le script et à quelle fréquence. C'est ce que `cron` permet de faire sur GNU/Linux et macOS. Sur Windows, c'est le planificateur de tâches `schtasks.exe`. - -Notez qu'il existe aussi des applications graphiques pour chacun de ces systèmes. Mais, vous êtes ici pour voir un peu de code non ? - -### cron sur Linux et macOS - -Le logiciel cron est inclus par défaut sur la majorité des systèmes macOS et GNU/Linux. Il n'y a donc rien à faire pour l'obtenir. Cependant, il est possible qu'il nécessite des accès additionnels pour bien fonctionner sur macOS. - -Les instructions pour cron sont inscrites dans un fichier spécial au format `crontab` dans le répertoire `/etc/cron.d`. Il est aussi possible de mettre le script à exécuter dans un des 4 répertoires suivants - -```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} -/etc/cron.daily -/etc/cron.hourly -/etc/cron.monthly -/etc/cron.weekly -``` - -Le format des instructions dans un fichier `crontab` est défini comme dans cette illustration: - -```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} -* * * * * * script_a_executer.sh -| | | | | | -| | | | | +--- nom utilisateur -| | | | +----- jour de la semaine (0-6) (Dimanche=0) -| | | +------- mois (1-12) -| | +--------- jour du mois (1-31) -| +----------- heure (0-23) -+------------- minutes (0-59) -``` - -Le comportement par défaut est d'exécuter le script à chaque minute. Ensuite, si on veut réduire la fréquence, on spécifie à quel moment exécuter le script. - -Par exemple, pour exécuter un script `cocktail_aleatoire.sh` qui nous envoie une recette de cocktail au hasard à 16h30 chaque vendredi, on configure comme suit. - -```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} -30 16 * * 5 jevalideca /home/jevalideca/cocktail_aleatoire.sh -``` - -### Planificateur de tâches sur Windows - -Sur Windows, l'ensemble des tâches peuvent être planifiées depuis le Planificateur de tâches. En exécutant une commande PowerShell, il est possible de configurer une tâche similaire à la précédente. - -À partir d'une session PowerShell, la séquence de commandes suivante configurera l'exécution du programme `cocktail_aleatoire.bat` à 16:30 chaque vendredi. - -```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} -$action = New-ScheduledTaskAction -Execute 'C:\Users\jevalideca\scripts\cocktail_aleatoire.bat' -$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Friday -At 4:30pm -Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "cocktail-aleatoire" -``` - -Une fois la commande exécutée, nous obtenons cette réponse: - -```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} -TaskPath TaskName State --------- -------- ----- -\ cocktail-aleatoire Ready -``` - -Nous pouvons valider le résultat dans la fenêtre du Planificateur de tâches. - -![Capture d'écran du planificateur de tâches](capture_schtasks_cocktail.png) - -## Conclusion - -J'ai présenté deux techniques qui permettent de scripter et de configurer l'exécution automatique de tâches. - -Il est maintenant possible de faire travailler ton ordinateur durant tes vacances ! diff --git a/chapitre_1_2.md b/chapitre_1_2.md new file mode 100644 index 0000000..a911d0f --- /dev/null +++ b/chapitre_1_2.md @@ -0,0 +1,69 @@ +# Programmer l'exécution de scripts + +Nous avons maintenant créé le script parfait qui exécute les tâches ennuyantes que nous faisions auparavant manuellement. Maintenant, puisque nous planifions partir en vacances, il faut dire à notre système quand exécuter le script et à quelle fréquence. C'est ce que `cron` permet de faire sur GNU/Linux et macOS. Sur Windows, c'est le planificateur de tâches `schtasks.exe`. + +Notez qu'il existe aussi des applications graphiques pour chacun de ces systèmes. Mais, vous êtes ici pour voir un peu de code non ? + +### cron sur Linux et macOS + +Le logiciel cron est inclus par défaut sur la majorité des systèmes macOS et GNU/Linux. Il n'y a donc rien à faire pour l'obtenir. Cependant, il est possible qu'il nécessite des accès additionnels pour bien fonctionner sur macOS. + +Les instructions pour cron sont inscrites dans un fichier spécial au format `crontab` dans le répertoire `/etc/cron.d`. Il est aussi possible de mettre le script à exécuter dans un des 4 répertoires suivants + +```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} +/etc/cron.daily +/etc/cron.hourly +/etc/cron.monthly +/etc/cron.weekly +``` + +Le format des instructions dans un fichier `crontab` est défini comme dans cette illustration: + +```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} +* * * * * * script_a_executer.sh +| | | | | | +| | | | | +--- nom utilisateur +| | | | +----- jour de la semaine (0-6) (Dimanche=0) +| | | +------- mois (1-12) +| | +--------- jour du mois (1-31) +| +----------- heure (0-23) ++------------- minutes (0-59) +``` + +Le comportement par défaut est d'exécuter le script à chaque minute. Ensuite, si on veut réduire la fréquence, on spécifie à quel moment exécuter le script. + +Par exemple, pour exécuter un script `cocktail_aleatoire.sh` qui nous envoie une recette de cocktail au hasard à 16h30 chaque vendredi, on configure comme suit. + +```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} +30 16 * * 5 jevalideca /home/jevalideca/cocktail_aleatoire.sh +``` + +### Planificateur de tâches sur Windows + +Sur Windows, l'ensemble des tâches peuvent être planifiées depuis le Planificateur de tâches. En exécutant une commande PowerShell, il est possible de configurer une tâche similaire à la précédente. + +À partir d'une session PowerShell, la séquence de commandes suivante configurera l'exécution du programme `cocktail_aleatoire.bat` à 16:30 chaque vendredi. + +```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} +$action = New-ScheduledTaskAction -Execute 'C:\Users\jevalideca\scripts\cocktail_aleatoire.bat' +$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Friday -At 4:30pm +Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "cocktail-aleatoire" +``` + +Une fois la commande exécutée, nous obtenons cette réponse: + +```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} +TaskPath TaskName State +-------- -------- ----- +\ cocktail-aleatoire Ready +``` + +Nous pouvons valider le résultat dans la fenêtre du Planificateur de tâches. + +![Capture d'écran du planificateur de tâches](capture_schtasks_cocktail.png) + +## Conclusion + +J'ai présenté deux techniques qui permettent de scripter et de configurer l'exécution automatique de tâches. + +Il est maintenant possible de faire travailler ton ordinateur durant tes vacances ! diff --git a/markdown/chapitre_1_3.md b/chapitre_1_3.md similarity index 100% rename from markdown/chapitre_1_3.md rename to chapitre_1_3.md diff --git a/markdown/chapitre_1_4.md b/chapitre_1_4.md similarity index 85% rename from markdown/chapitre_1_4.md rename to chapitre_1_4.md index f329315..37992cc 100644 --- a/markdown/chapitre_1_4.md +++ b/chapitre_1_4.md @@ -6,23 +6,22 @@ Pour ne pas oublier et garder un système frais et dispos, il est possible de le ## Sur GNU/Linux -Sur GNU/Linux, il n'y a pas de mécanisme uniforme pour effectuer les mises à jour. Chaque famille de distribution a son propre système de gestion de paquetages. Mais, pour simplifier les choses, je vais vous en montrer 3: Debian, RedHat et Arch. La majorité des distributions sont basées sur une de celles-ci. +Sur GNU/Linux, il n'y a pas de mécanisme uniforme pour effectuer les mises à jour. Chaque famille de distribution a son propre système de gestion de paquetages. Mais, pour simplifier les choses, je vais vous en montrer 2: Debian et Arch. ### Debian -Sur Debian, les mises à jour sont effectuées avec cette commande: +Sur Debian, les mises à jour sont effectuées en deux étapes: + +- mettre à jour l'index des paquetages +- installer les nouvelles versions disponibles des paquetages + +Il est possible de combiner ces deux actions avec cette commande: ```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} sudo apt update && sudo apt upgrade ``` -Il est possible d'automatiser les mises à jour de sécurité avec UnattendedUpgrades - -~~TODO~~ - -### RedHat - -~~TODO~~ +Si on veut aller plus loin dans l'automatisation, il est possible de programmer les mises à jour de sécurité avec UnattendedUpgrades pour qu'elles s'effectuent en arrière-plan selon un calendrier précis sans avoir à s'en occuper. ### Arch @@ -41,7 +40,7 @@ yay -Syyu ## Sur macOS -~~TODO~~ +Il est possible d'activer les mises à jour automatiques dans les préférences du App Store. Aussi simple que ça ! ## Sur Windows diff --git a/chapitre_2_1.md b/chapitre_2_1.md new file mode 100644 index 0000000..cc00441 --- /dev/null +++ b/chapitre_2_1.md @@ -0,0 +1,15 @@ +# Classer ses photos de voyage avec Nextcloud + +Nextcloud est un système d'autohébergement qui peut être installé à la maison, chez un hébergeur web, sur un serveur ou même chez un ami ! Il fonctionne à l'aide d'un système de fichiers similaire à Dropbox qui est disponible à la fois sur le web, sur mobile et sur PC, avec une synchronisation quasi instantanée. + +![Capture d'écran de fichiers images en mode aperçu dans Nextcloud Fichiers](Images/nextcloud_fichiers_mobile_images.png) + +Il comprend aussi un système d'étiquettes de fichiers qui permettent, en plus de faire une organisation par répertoires, de créer de nouvelles catégories. Chaque fichier peut avoir un nombre variable d'étiquettes. Il est aussi possible de créer des règles d'étiquetage automatique. + +![Capture d'écran de l'utilisation des étiquettes dans Nextcloud Fichiers](Images/nextcloud_fichiers_tag.png) + +Dans Nextcloud Photos, il est possible d'exploiter ces deux modes de classification. Tout est privé tant qu'on ne décide pas de le partager, mais en un clic, il est possible de partager un répertoire ou une étiquette à l'aide d'un lien public. C'est très pratique pour limiter l'accès à du contenu à des amis, des collègues ou des membres de la famille. Il est aussi possible de partager du contenu protégé par mot de passe ou pour une durée limitée. + +![Capture d'écran du partage dans Nextcloud Fichiers](Images/nextcloud_fichiers_partage.png) + +Nextcloud inclus un mode de visualisation par diaporama, qui peut être très pratique en déplacement. Tout ceci est aussi disponible autant sur mobile que sur poste de travail. diff --git a/chapitre_2_2.md b/chapitre_2_2.md new file mode 100644 index 0000000..ae4517a --- /dev/null +++ b/chapitre_2_2.md @@ -0,0 +1,5 @@ +# Cuisiner des recettes exotiques + +Une fonctionnalité surprenante de Nextcloud est la capacité, via le module Cookbook, de composer un répertoire de recettes privé. Il comprend un formulaire qui permet la saisie de la description, des ingrédients et des instructions. Mais, de plus, il permet aussi d'importer des recettes depuis de nombreux sites qui respectent le standard ouvert [Recipe de schema.org](https://schema.org/Recipe). Un bel exemple d'utilisation du [web sémantique](https://fr.wikipedia.org/wiki/Web_s%C3%A9mantique). Selon mes tests, les sites web Zeste, Marmiton et Trois fois par jour fonctionne entièrement avec le module d'importation. Le site Ricardo fonctionne partiellement, tout comme l'Érable du Québec. Les sites Coup de Pouce et Recettes du Québec ne fonctionnent pas actuellement. + +![Capture d'écran de Nextcloud Cookbook](Images/nextcloud_cookbook.png) \ No newline at end of file diff --git a/chapitre_2_3.md b/chapitre_2_3.md new file mode 100644 index 0000000..46e2fc8 --- /dev/null +++ b/chapitre_2_3.md @@ -0,0 +1,3 @@ +# Enregistrer un parcours touristique + +En utilisant l'application GpxPod sur Android \ No newline at end of file diff --git a/markdown/chapitre_2_4.md b/chapitre_2_4.md similarity index 100% rename from markdown/chapitre_2_4.md rename to chapitre_2_4.md diff --git a/markdown/chapitre_3_1.md b/chapitre_3_1.md similarity index 100% rename from markdown/chapitre_3_1.md rename to chapitre_3_1.md diff --git a/markdown/chapitre_3_2.md b/chapitre_3_2.md similarity index 100% rename from markdown/chapitre_3_2.md rename to chapitre_3_2.md diff --git a/markdown/chapitre_3_3.md b/chapitre_3_3.md similarity index 100% rename from markdown/chapitre_3_3.md rename to chapitre_3_3.md diff --git a/markdown/chapitre_3_4.md b/chapitre_3_4.md similarity index 100% rename from markdown/chapitre_3_4.md rename to chapitre_3_4.md diff --git a/markdown/creer-chapitres-markdown.sh b/creer-chapitres-markdown.sh similarity index 100% rename from markdown/creer-chapitres-markdown.sh rename to creer-chapitres-markdown.sh diff --git a/markdown/creer-fichiers-tex.sh b/creer-fichiers-tex.sh old mode 100644 new mode 100755 similarity index 56% rename from markdown/creer-fichiers-tex.sh rename to creer-fichiers-tex.sh index 9d5fae3..6fa918c --- a/markdown/creer-fichiers-tex.sh +++ b/creer-fichiers-tex.sh @@ -1,14 +1,14 @@ #!/bin/bash +mkdir -p ./chapitres + for section in {1..3} do for chapitre in {1..4} do - pandoc -F pandoc-minted -f markdown+fenced_code_attributes -t latex --listings --top-level-division=chapter -i chapitre_${section}_${chapitre}.md -o ../chapitres/chapitre_${section}_${chapitre}.tex + pandoc -F pandoc-minted -f markdown+fenced_code_attributes -t latex --listings --top-level-division=chapter -i "chapitre_${section}_${chapitre}.md" -o "./chapitres/chapitre_${section}_${chapitre}.tex" done done -cd ../ pdflatex --shell-escape -synctex=1 -interaction=nonstopmode main.tex -cd markdown diff --git a/markdown/chapitre_1_2.md b/markdown/chapitre_1_2.md deleted file mode 100644 index bbafe47..0000000 --- a/markdown/chapitre_1_2.md +++ /dev/null @@ -1 +0,0 @@ -# Rediriger ses alertes courriel diff --git a/markdown/chapitre_2_1.md b/markdown/chapitre_2_1.md deleted file mode 100644 index 5de6f5d..0000000 --- a/markdown/chapitre_2_1.md +++ /dev/null @@ -1 +0,0 @@ -# Classer ses photos de voyage diff --git a/markdown/chapitre_2_2.md b/markdown/chapitre_2_2.md deleted file mode 100644 index e5e179c..0000000 --- a/markdown/chapitre_2_2.md +++ /dev/null @@ -1 +0,0 @@ -# Cuisiner des recettes exotiques diff --git a/markdown/chapitre_2_3.md b/markdown/chapitre_2_3.md deleted file mode 100644 index 81c231a..0000000 --- a/markdown/chapitre_2_3.md +++ /dev/null @@ -1 +0,0 @@ -# Définir un parcours touristique