version finale

This commit is contained in:
François Pelletier 2021-07-13 19:49:31 -04:00
parent adbbc9e7a6
commit dcdcfc6134
17 changed files with 99 additions and 80 deletions

BIN
.gitignore vendored

Binary file not shown.

View file

@ -1,12 +1,16 @@
# Automatiser les tâches récurrentes
Quand nous étudions attentivement à notre usage de l'informatique, nous réalisons que bien des tâches sont répétitives et qu'il y a souvent peu de différence entre les actions que nous posons d'une itération à une autre.
En automatisant certaines tâches, nous libérons du temps pour effectuer celles qui nécessitent de la réflexion ou des interactions sociales, ou encore pour prendre du temps pour soi !
## Utiliser le langage de ligne de commande Bash
Nous préférons Bash pour automatiser des tâches à effectuer de façon récurrente[](https://fr.wikipedia.org/wiki/Bourne-Again_shell). C'est un langage de script qui est principalement utilisé sur les systèmes d'exploitation GNU/Linux et macOS.
Nous préférons [Bash](https://fr.wikipedia.org/wiki/Bourne-Again_shell) pour automatiser des tâches à effectuer de façon récurrente. C'est un langage de script qui est principalement utilisé sur les systèmes d'exploitation GNU/Linux et macOS.
Il est aussi possible d'installer [MSYS2](https://www.msys2.org/) sur Windows. Cet outil donne accès à une multitude de logiciels créés initialement pour GNU/Linux, dont Bash.
Voici des usages fréquents du langage de script Bash:
Voici des usages fréquents du langage de script Bash :
- Appeler des logiciels
- La manipulation de fichiers
@ -23,31 +27,33 @@ Un exemple d'appel de logiciels que nous utilisons souvent, c'est un court progr
### La manipulation de fichiers
Au lieu d'utiliser des fichiers binaires tels que ceux produits par les suites bureautiques tels que Microsoft Office, les environnements en ligne de commande préfèrent les fichiers simples au format texte. Ils excellent dans la manipulation de ceux-ci.
Au lieu d'utiliser des fichiers binaires tels que ceux produits par les suites bureautiques tels que Microsoft Office, les environnements en ligne de commande préfèrent le format texte. Ils excellent dans la manipulation de ceux-ci.
Souvent, les logiciels conçus pour la ligne de commande sont interfacés très simplement : ils reçoivent du texte, souvent d'un fichier, et retourneront du texte dans un fichier. Dans les autres cas, le texte voyage d'un programme à l'autre par les tubes ou parvenir à la sortie standard (ce qui est affiché à l'écran).
Souvent, les logiciels conçus pour la ligne de commande sont interfacés très simplement : ils reçoivent du texte, souvent d'un fichier, et retourneront du texte dans un fichier. Dans les autres cas, il voyage d'un programme à l'autre par les tubes ou parvenir à la sortie standard (ce qui est affiché à l'écran).
Un exemple fréquent de manipulation de fichiers: fusionner des fichiers PDF en un seul document. Le logiciel *pdftk* permet d'arriver à ce résultat.
Un exemple fréquent de manipulation: fusionner des fichiers PDF en un seul document. Le logiciel [pdftk](https://framalibre.org/content/pdftk) permet d'arriver à ce résultat. En passant, le lien pointe sur Framalibre, qui est un répertoire génial d'applications libres, toutes en français !
### Les tubes
Les tubes permettent d'utiliser la sortie d'un programme directement dans l'entrée d'un autre programme, sans devoir écrire un fichier. Ils sont représentés par la barre verticale`|`.
Les tubes permettent d'utiliser la sortie d'un programme directement dans l'entrée d'un autre programme, sans devoir écrire un fichier. Ils sont représentés par la barre verticale *|*.
Un exemple fréquent que nous utilisons est pour effectuer la recherche de fichiers.
Le logiciel le plus courant sur GNU/Linux qui permet de lister tous les fichiers d'un répertoire se nomme`find`. Il peut répondre à certaines conditions, par exemple une extension de fichier précise comme *.pdf* pour les fichiers PDF.
Le logiciel le plus courant sur GNU/Linux qui permet de lister tous les fichiers d'un répertoire se nomme *find*. Il peut répondre à certaines conditions, par exemple une extension de fichier précise comme *.pdf* pour les fichiers PDF.
Si nous voulons filtrer plus précisément cette liste de fichiers avec d'autres attributs, nous utiliserons le logiciel grep. Ce dernier utilise une **expression régulière**, une syntaxe fréquemment utilisée dans la recherche de texte.
Si nous voulons filtrer plus précisément cette liste de fichiers avec d'autres attributs, nous utiliserons le logiciel [grep](https://fr.wikipedia.org/wiki/Grep). Ce dernier recourt à une [expression régulière](https://fr.wikipedia.org/wiki/Expression_r%C3%A9guli%C3%A8re), une syntaxe fréquemment utilisée dans la recherche de texte.
### Les boucles
Les boucles permettent de contrôler l'exécution répérée d'une section de programme. Celles-ci permettent de répéter des tâches identiques ou très similaires pour de multiples valeurs en entrée. Par exemple, si nous voulons produire un document quasi identique pour chaque jour de la semaine, c'est possible. L'élément de code qui permet de répéter du code un nombre déterminé de fois est nommé *for*. Il existe aussi les boucles *while* et *until* qui sont basées sur une condition. Elles sont utilisées lorsque le nombre de répétitions n'est pas connu à l'avance.
Les boucles permettent de contrôler l'exécution répétée du code. Généralement, il s'agit d'une section d'un programme qui effectue une seule, ou ça le devrait ! Celles-ci permettent de répéter des tâches identiques ou très similaires pour de multiples valeurs en entrée. Par exemple, si nous voulons produire un rapport chaque jour de la semaine, c'est possible. L'élément de code qui permet de répéter du code un nombre déterminé de fois est nommé *for*. Il existe aussi les boucles *while* et *until* qui sont basées sur une condition. Elles sont utilisées lorsque le nombre de répétitions n'est pas connu à l'avance.
### Un exemple pratique
Pour créer ce guide, nous utilisons le langage [Markdown](https://www.markdownguide.org/) ainsi que le langage [\LaTeX](https://www.latex-project.org/), deux systèmes de conception de documents. Le premier est davantage utilisé pour le contenu texte et le code informatique; le second, pour la mise en page et les graphiques. Comme nous devons souvent convertir les fichiers Markdown au format \LaTeX, puis en PDF pour avoir un aperçu du document, alors nous utilisons Bash et les logiciels *Pandoc* et *pdflatex*.
Pour créer ce guide, nous utilisons le langage [Markdown](https://www.markdownguide.org/) ainsi que le langage [\LaTeX](https://www.latex-project.org/), deux systèmes de conception de documents. Le premier est davantage utilisé pour le contenu texte et le code informatique ; le second, pour la mise en page et les graphiques. Comme nous devons souvent convertir d'un à l'autre, puis en PDF pour la publication, alors nous écrirons un script Bash et les logiciels [Pandoc](https://pandoc.org/) et [pdflatex](https://www.tug.org/applications/pdftex/) pour automatiser cette tâche.
Ce guide comprend 3 sections composées chacune de 4 chapitres. Pour chaque chapitre, il y a un fichier Markdown distinct. Nous voulons convertir chacun d'eux vers le format \LaTeX. Nous allons donc itérer pour chacune des sections, puis à l'intérieur de celle-ci, pour chacun des chapitres. Notre code sera donc exécuté 12 fois.
**Conseil important**: Pandoc est sérieusement à considérer pour les créatrices et créateurs de contenu, il permet de produire ses textes avec la syntaxe Markdown, puis de publier sous une multitude de formats. Nous conseillons fortement d'y jeter un oeil.
Ce guide comprend 3 sections composées chacune de 4 chapitres. Pour chaque chapitre, il y a un fichier [Markdown](https://fr.wikipedia.org/wiki/Markdown) distinct. Nous voulons convertir chacun d'eux vers le format \LaTeX. Nous allons donc itérer pour chacune des sections, puis à l'intérieur de celle-ci, pour chacun des chapitres. Notre code sera exécuté 12 fois.
Ensuite, nous utilisons le logiciel *pdflatex* pour générer ce document PDF.
@ -64,5 +70,3 @@ done
pdflatex --shell-escape -synctex=1 -interaction=nonstopmode main.tex
```
Note : [Pandoc](https://pandoc.org/) est à considérer pour les créatrices et créateurs de contenu, il permet de produire ses textes avec la syntaxe Markdown, puis de publier sous une multitude de formats. Nous conseillons fortement d'y jeter un oeil.

View file

@ -1,6 +1,6 @@
# Programmer l'exécution de scripts
Nous avons créé le script parfait qui automatise les tâches monotones faites auparavant manuellement. Maintenant, puisque nous prévoyons partir en vacances, il faut dire à notre système quand exécuter celui-ci, 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*.
Nous avons créé le script parfait qui automatise les tâches monotones faites auparavant manuellement. Maintenant, puisque nous prévoyons partir en vacances, il faut dire à notre système quand exécuter celui-ci, et à quelle fréquence ! C'est ce que [cron](https://fr.wikipedia.org/wiki/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, nous sommes ici pour voir un peu de code non ?
@ -8,7 +8,7 @@ Notez qu'il existe aussi des applications graphiques pour chacun de ces système
La majorité des systèmes macOS et GNU/Linux incluent le logiciel *cron*. 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 `crontab` dans le répertoire`/etc/cron.d`.
Les instructions pour *cron* sont inscrites dans un fichier spécial *crontab* dans le répertoire */etc/cron.d*.
Leur format est défini dans cette illustration :
@ -31,7 +31,7 @@ Par exemple, pour exécuter un script `cocktail_aleatoire.sh` qui nous envoie un
## Planificateur de tâches sur Windows
Sur Windows, l'ensemble des tâches sont planifiées depuis le Planificateur de tâches. En exécutant une commande PowerShell, il est possible de configurer une tâche semblable à la précédente.
Sur Windows, l'ensemble des tâches sont planifiées depuis le Planificateur de tâches. En exécutant une [commande PowerShell](https://docs.microsoft.com/fr-fr/powershell/module/psscheduledjob/about/about_scheduled_jobs?view=powershell-5.1), il est possible de configurer une tâche semblable à 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 h 30 chaque vendredi.

View file

@ -4,7 +4,7 @@
Le contenu important de notre poste de travail est sauvegardé sur un disque dur externe. C'est une méthode abordable qui respecte un des principes d'une bonne sauvegarde : être hors-ligne.
Pour transférer nos fichiers vers ce disque, nous utilison un logiciel en ligne de commande qui fait exactement ça, des copies. C'est `rsync` (pour Remote Sync). Il est disponible sur macOS et sur GNU/Linux sans installation additionnelle.
Pour transférer nos fichiers vers ce disque, nous utilison un logiciel en ligne de commande qui fait exactement ça, des copies. C'est [rsync](https://fr.wikipedia.org/wiki/Rsync) (pour Remote Sync). Il est disponible sur macOS et sur GNU/Linux sans installation additionnelle.
### Installation sur Windows
@ -40,7 +40,7 @@ Voici le détail des options :
## Sauvegarder son contenu : Nextcloud
Pour garder des copies de sauvegarde de tous nos projets en cours et de nos contenus pour le web, nous utilisons Nextcloud, qui est installé sur notre serveur en auto-hébergement.
Pour garder des copies de sauvegarde de tous nos projets en cours et de nos contenus pour le web, nous utilisons [Nextcloud](https://fr.wikipedia.org/wiki/Nextcloud), qui est installé sur notre serveur en auto-hébergement.
![Capture d'écran de Nextcloud Fichiers](Images/nextcloud_fichiers_jevalideca.png)
@ -56,7 +56,7 @@ Nous ajoutons à cela le fait que notre répertoire local de Nextcloud est aussi
## Code et fichiers texte : git
Les fichiers qui changent rapidement, tels que ceux contenant du code, doivent avoir leur propre mécanisme de sauvegarde qui permet des retours arrière illimités, ainsi qu'une gestion des versions. Pour ce faire, nous utilisons un système qui est maintenant omniprésent chez les développeurs et développeuses : *git*.
Les fichiers qui changent rapidement, tels que ceux contenant du code, doivent avoir leur propre mécanisme de sauvegarde qui permet des retours arrière illimités, ainsi qu'une gestion des versions. Pour ce faire, nous utilisons un système qui est maintenant omniprésent chez les développeurs et développeuses : [git](https://fr.wikipedia.org/wiki/Git).
Ce logiciel fonctionne de manière autonome, mais peut être utilisé comme mécanisme de sauvegarde en mode client et serveur. Du côté serveur, les services GitHub et GitLab sont les plus populaires. Mais, pour ceux tentés par l'auto-hébergement, nos recommandons le logiciel [Gitea](https://gitea.io).

View file

@ -6,11 +6,11 @@ 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 vient avec son propre système de gestion de paquetages. Mais, pour simplifier les choses, nous en montrons deux : Debian et Arch.
Sur GNU/Linux, il n'y a pas de mécanisme uniforme pour effectuer les mises à jour. Chaque famille de distribution vient avec son propre système de gestion de paquetages. Mais, pour simplifier les choses, nous en montrons deux : Debian et Arch. Nous utilisons les deux chez Je valide ça !
### Debian
Sur Debian, les mises à jour sont effectuées en deux étapes :
Sur Debian, les mises à jour sont effectuées en [deux étapes](https://www.lecoindunet.com/difference-apt-update-upgrade-full-upgrade) :
- mettre à jour l'index des paquetages
- installer les nouvelles versions disponibles des paquetages
@ -25,10 +25,10 @@ Si nous désirons aller plus loin dans l'automatisation, il est envisageable de
### Arch
Sur Arch, il y a deux systèmes de gestion de paquetages :
Sur [Arch](https://archlinux.fr/), il y a deux systèmes de gestion de paquetages :
- *pacman*, pour ce qui est officiellement supporté. Nous avons déjà vu ce dernier précédemment, car *Pacman* est utilisé dans MSYS2 sur Windows.
- AUR, pour ce qui est développé par la communauté, avec le client *yay*, utilisé avec la même syntaxe que *Pacman*.
- AUR, pour ce qui est développé par la communauté, avec le client [yay](https://wiki.archlinux.org/title/AUR_helpers), utilisé avec la même syntaxe que *Pacman*.
Pour mettres à jour son système avec un de ces deux utilitaires, nous employons les commandes suivantes :
@ -43,7 +43,7 @@ Il est possible d'activer les mises à jour automatiques dans les préférences
## Sur Windows
Sur Windows, il faut installer l'extension *PSWindowsUpdate* à PowerShell. Elle permet d'interagir avec le système de mises à jour de Windows.
Sur Windows, il faut installer l'extension [PSWindowsUpdate](https://www.powershellgallery.com/packages/PSWindowsUpdate/2.0.0.4) à PowerShell. Elle permet d'interagir avec le système de mises à jour de Windows.
Nous pouvons obtenir la liste des mises à jour à effectuer :

View file

@ -1,6 +1,6 @@
# Classer ses photos de voyage
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'une arborescence de fichiers semblable à Dropbox qui est offert à la fois sur le navigateur, sur mobile et sur PC, avec une synchronisation quasi instantanée.
[Nextcloud](https://nextcloud.com/) 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'une arborescence de fichiers semblable à Dropbox qui est offert à la fois sur le navigateur, 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)

View file

@ -1,5 +1,5 @@
# Cuisiner des recettes exotiques
Une fonctionnalité surprenante de Nextcloud est la capacité, avec le composant Cookbook, de se créer un livre 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 nos tests, les sites 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.
Une fonctionnalité surprenante de Nextcloud est la capacité, avec le composant [Cookbook](https://apps.nextcloud.com/apps/cookbook), de se créer un livre 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 nos tests, les sites 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)

View file

@ -1,6 +1,6 @@
# Enregistrer un parcours touristique
En utilisant l'application GpxPod disponible dans Nextcloud, il est possible de lire les parcours recueillis depuis un appareil GPS ou depuis un téléphone intelligent au format GPX. Nous pouvons enregistrer avec OpenTracks sur Android ou avec une montre de sport et le copier directement dans Nextcloud via la fonction Partager. De plus, la plupart des systèmes d'entraînement tels que Garmin Connect, FitBit et MapMyRun permettent aussi d'exporter au format GPX.
En utilisant l'application [GpxPod](https://apps.nextcloud.com/apps/gpxpod) disponible dans Nextcloud, il est possible de lire les parcours recueillis depuis un appareil GPS ou depuis un téléphone intelligent au format GPX. Nous pouvons enregistrer avec OpenTracks sur Android ou avec une montre de sport et le copier directement dans Nextcloud via la fonction Partager. De plus, la plupart des systèmes d'entraînement tels que Garmin Connect, FitBit et MapMyRun permettent aussi d'exporter au format GPX.
C'est un bon moyen de pouvoir retracer son parcours.

View file

@ -1,13 +1,13 @@
# Planifier ses journées
Pour planifier ses journées, il est pratique d'utiliser un calendrier dans Nextcloud Agenda. Chaque visite peut se voir attribuer une date, une section de notes et des pièces jointes, comme les tickets pour l'entrée d'une attraction. Tout ce contenu est synchronisé par DAVx5. Ce dernier interagit avec l'application de calendrier de notre téléphone intelligent, qui nous envoie des rappels pour ne rien manquer !
Pour planifier ses journées, il est pratique d'utiliser un calendrier dans Nextcloud Agenda. Chaque visite peut se voir attribuer une date, une section de notes et des pièces jointes, comme les tickets pour l'entrée d'une attraction. Tout ce contenu est synchronisé par [DAVx5](https://www.davx5.com/). Ce dernier interagit avec l'application de calendrier de notre téléphone intelligent, qui nous envoie des rappels pour ne rien manquer !
![Capture d'écran d'un calendrier de Nextcloud Agenda](Images/nextcloud_agenda_mode_liste.png)
S'il y a des dates d'échéance pour se procurer des billets ou effectuer une réservation, alors un outil comme Nextcloud Deck s'impose. Il s'agit de tableaux basés sur la méthode Kanban qui se synchronise aussi avec Nextcloud Agenda. Il permet également de stocker des pièces jointes.
S'il y a des dates d'échéance pour se procurer des billets ou effectuer une réservation, alors un outil comme [Nextcloud Deck](https://apps.nextcloud.com/apps/deck) s'impose. Il s'agit de tableaux basés sur la méthode Kanban qui se synchronise aussi avec Nextcloud Agenda. Il permet également de stocker des pièces jointes.
![Capture d'écran d'une tâche de Nextcloud Deck](Images/nextcloud_deck_achat_billets.png)
L'application Notes est parfaite pour prendre des notes sur la route. Son interface simple utilise la syntaxe Markdown et permet la création de pages classées selon des catégories pour facilement s'y retrouver.
L'application [Notes](https://apps.nextcloud.com/apps/notes) est parfaite pour prendre des notes sur la route. Son interface simple utilise la syntaxe Markdown et permet la création de pages classées selon des catégories pour facilement s'y retrouver.
Pour stocker toutes les factures et les informations de qui a payé, et ne pas avoir à se soucier des comptes avant la fin du voyage, l'extension Cospend est là. Cette application offre de gérer le remboursement de dépenses justement pour tout projet où elles ont été assumées par un ou plusieurs membres.

View file

@ -2,37 +2,39 @@
Il existe plusieurs moyens d'optimiser ses dépenses en vacances ou en voyage.
Premièrement, on voudra économiser sur les déplacements. Est-ce qu'on voyage en voiture ou en transports publics ? Dans le premier cas, il faut considérer le coût de l'essence, du stationnement, et si vous allez dans une grande ville comme Montréal, prévoir un budget pour une contravention de stationnement (ils sont impitoyables).
Premièrement, nous voulons épargner sur les transports. Est-ce que nous nous déplaçons en voiture ou en transports publics ? Dans le premier cas, considérons le coût de l'essence et du stationnement, et si nous allons dans une grande ville comme Montréal, prévoir un budget pour une contravention (ils sont impitoyables).
Si vous utilisez le transport public, il faut examiner s'il y a des offres sur les billets, si nous sommes prêts à faire des transferts, et les horaires.
Si nous recourons au transport public, il faut examiner s'il y a des promos sur les billets, si nous sommes prêts à faire des transferts, et les horaires.
Ensuite, il faut penser à l'hébergement: Hôtel, AirBnB ou chez des amis ? Il faut considérer le coût, les services offerts ainsi que la proximité avec les attrations que l'on souhaite visiter.
Ensuite, pensons à l'hébergement : Hôtel, AirBnB ou chez des amis ? Tenons compte du coût de la nuitée, des services offerts ainsi que de la proximité avec les attractions que nous souhaitons visiter.
Bref, tout ça peut rapidement devenir un casse-tête.
C'est à ce moment là que l'analyse de données peut nous rendre service.
C'est à ce moment-là que l'analyse de données peut nous être utile.
## Exemple: Choisir le moyen de transport le moins cher
## Exemple : Choisir le moyen de transport le moins cher
Je souhaite savoir, selon le kilométrage à parcourir, s'il est mieux de me déplacer à pied, en transport en commun ou en voiture.
Nous souhaitons savoir, selon le kilométrage à parcourir, s'il est mieux de se déplacer à pied, en transport en commun ou en voiture.
Prenons la mise en situation suivante pour faire notre analyse:
Prenons la mise en situation suivante pour faire notre analyse :
- À vélo, le coût est nul
- En transport en commun, le coût est fixe à 3$
- En voiture, le coût de la voiture est 10\$ /heure et le stationnement est 8\$
- À vélo, le coût d'utilisation est nul
- En transport en commun, le coût du billet est fixé à 3 $
- En voiture, le coût d'utilisation est 10\$ /heure et le stationnement est 8\$
Le temps est calculé comme suit:
Le temps est calculé comme suit :
- En voiture, on va à 50km/h
- En transport, on va à 20 km/h et on doit attendre 6 minutes
- À vélo, on va à 10 km/h
- En voiture, notre vitesse est de 50 km/h
- En transport public, elle est de 20 km/h et nous devons attendre en moyenne 6 minutes
- À vélo, nous nous déplaçons à 10 km/h
De plus, nous sommes prêts à dépenser 10$ pour sauver 1h de déplacement. C'est notre coût d'option.
De plus, nous sommes prêts à dépenser 10 $ pour sauver une heure de déplacement. C'est notre coût d'option.
### Faisons un peu de mathématiques
Le coût total par kilomètre se calcule comme suit, où $K$ est le nombre de kilomètres:
Nous espérons ne pas faire peur à personne ici, même si l'algèbre c'est vraiment loin dans les tiroirs de notre cerveau. C'est important et je peux vous aider!
Le coût total par kilomètre se calcule comme suit, où $K$ est le nombre de kilomètres :
$$
P(K) = K*C_0 + (4+0.5*K)*C_1 + (8+0,4*K)*C_2
@ -45,7 +47,7 @@ C_0,C_1,C_2 \in \lbrace 0,1 \rbrace \\
C_0+C_1+C_2=1 \\
$$
On minimise donc la fonction suivante:
Nous minimisons donc la fonction suivante :
$$
argmin_{(C_0,C_1,C_2)} (P(K))
@ -53,11 +55,11 @@ $$
### À la recherche de solutions
À l'aide de la librairie `lpSolve` en R, on peut définir un problème d'optimisation de coût en quelques lignes et ensuite générer des scénarios.
À l'aide de la librairie [lpSolve](https://sourceforge.net/projects/lpsolve/) en R, nous pouvons définir un problème de coût minimum en quelques lignes et ensuite générer des scénarios.
En définissant le problème à optimiser sous la forme d'une équiation linéaire à minimiser et en calculant la solution pour toutes les distances de 1 à 50 kilomètres, nous apprendrons que:
Ce dernier s'exprime sous la forme d'une équation linéaire et, en calculant la solution pour toutes les distances de 1 à 50 kilomètres, nous apprenons que :
- Avec moins de 8 kilomètres, il est préférable de prendre le vélo que tout autre mode de transport.
- À partir de 40 kilomètres, il est recommandé de prendre la voiture au lieu du transport en commun.
- Avec moins de 8 kilomètres à parcourir, il est préférable de pédaler.
- À partir de 40 kilomètres, il est recommandé de prendre la voiture au lieu du transport public.
![Graphique du coût par kilomètre](Images/cout_moyen_transport.png)

View file

@ -1,16 +1,16 @@
# Localiser les nouveaux restaurants à Montréal
Le site web [RestoMontreal](https://www.restomontreal.ca/) permet de rechercher parmi les nouveaux restaurants qui sont ouverts dans cette ville. Les données apparaîssent sur la forme d'une liste ainsi que d'une carte. Cependant, la carte d'est pas exploitable, car elle est incluse dans la page. Afin d'utiliser ces données pour créer notre propre carte, nous allons extraire l'information de celle-ci qui est dissimulée dans le code JavaScript de la page.
Le site web [RestoMontreal](https://www.restomontreal.ca/) permet de chercher parmi les nouveaux restaurants qui sont ouverts dans cette ville. Les données apparaissent sur la forme d'une liste ainsi que d'une carte. Cependant, la carte n'est pas exploitable, car elle est incluse dans la page. Afin d'utiliser ces données pour créer notre propre carte, nous allons extraire l'information de celle-ci qui est dissimulée dans le code JavaScript de la page.
![Carte de RestoMontreal](Images/carte_restomontreal.png)
Pour ce faire, nous téléchargeons le code de la page web contenant la carte sur notre ordinateur depuis les outils de développement de notre navigateur (touche F12).
![Sélectionner le script depuis les outils de développement](Images/firefox_developper_copier_interieur_html.png)
![Sélectionner le code JavaScript depuis les outils de développement](Images/firefox_developper_copier_interieur_html.png)
Nous sauvegardons le contenu dans un fichier à l'aide d'un éditeur de texte (Bloc-notes). Puis, à l'aide de l'éditeur en ligne de commande `sed`, nous ajoutons des sauts de ligne dans le code afin de faciliter l'extraction des variables d'intérêt.
Nous sauvegardons le contenu dans un fichier à l'aide d'un éditeur de texte (Bloc-notes). Puis, à l'aide de l'éditeur [sed](https://www.gnu.org/software/sed/manual/sed.html), nous ajoutons des sauts dans le code afin de faciliter l'extraction des variables d'intérêt. Sinon, tout le code apparaît sur une seule ligne.
La variable `contentString` contient les informations sur le restaurant et la variable `popupOptions` contient les coordonnées géographiques du restaurant.
La variable *contentString* contient les informations sur le restaurant et la variable *popupOptions* contient les coordonnées géographiques du restaurant.
```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
sed 's/var/\n&/g' javascript-nouveaux-restos-montreal.js | \
@ -22,15 +22,15 @@ grep "popupOptions=" > \
javascript-nouveaux-restos-montreal-popupoptions.js
```
Astuce: Il n'est pas toujours facile d'extraire les coordonnées géographiques d'une page qui contient une carte, mais ces données sont d'une très grande utilité, alors ça vaut souvent la peine de s'y attarder. Les coordonnées prennent généralement la forme d'une paire latitude-longitude.
Astuce : Il n'est pas toujours évident d'extraire les coordonnées géographiques d'une page qui contient une carte, mais ces données sont d'une très grande utilité, alors ça vaut souvent la peine de s'y attarder. Les coordonnées prennent généralement la forme d'une paire latitude-longitude.
Ici, dans le contenu de la variable `popupOptions`, nous pouvons observer ceci:
Ici, dans le contenu de la variable *popupOptions*, nous pouvons observer ceci :
```{.js linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
L.marker([45.541091,-73.638153],{icon:restoIcon,alt:'La Quinta',bouncingExclusif:true})
```
Ce sont les informations que nous recherchons: le nom du restaurant et sa localisation. À l'aide des librairies stringr et sf, il est maintenant possible d'extraire celles-ci dans une table au format géospatial. Nous affichons ici les 5 premières lignes
Ce sont les informations que nous recherchons : le nom du restaurant et sa localisation. À l'aide des librairies *stringr* et *sf*, il est maintenant possible d'extraire celles-ci dans une table au format géospatial. Nous affichons ici les 5 premières lignes.
```{.r linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
Simple feature collection with 5 features and 1 field

View file

@ -1,12 +1,12 @@
# Identifier un bon endroit de baignade sur le fleuve
Le gouvernement du Québec rend disponible des données sur la qualité des sites de baignade le long du fleuve Saint-Laurent.
Le gouvernement du Québec rend disponibles des données sur la qualité des sites de baignade le long du fleuve Saint-Laurent.
Ces données sont situées sur le portail de [Données Québec](https://www.donneesquebec.ca/recherche/dataset/suivi-bacteriologique-fleuve-sites-potentiels-baignade/resource/0623e4c7-114c-4fa2-8125-a18b0a4e2e88)
Comme vous pourrez constater, le lien pour récupérer les données utilise le protocole FTP, qui est plutôt désuet et n'est plus supporté nativement par la plupart des navigateurs. L'outil `wget` permet de récupérer de fichier facilement.
Comme nous pouvons le constater, le lien pour récupérer les données utilise le protocole FTP. Ce dernier est plutôt désuet et n'est plus supporté nativement par la plupart des navigateurs web, tels que Firefox ou Google Chrome. L'outil en mode texte *wget* permet de télécharger ce fichier facilement. Sinon, sur Windows, un logiciel FTP tel que [Filezilla](https://filezilla-project.org/) est à privilégier. Nous rencontrons parfois des technologies qui ne sont plus au goût du jour auprès des instances publiques. Alors, nous devons apprendre à nous adapter. Heureusement, le logiciel libre a un long historique de compatibilité avec de nombreux systèmes.
Elles sont récupérables dans un format compressé, ce qui requiert de les décompresser avant de les utiliser. Comme elles sont déjà au format GeoJSON, elles sont directement utilisables dans les différents logiciels d'analyse géospatiale.
Elles sont récupérables dans un format Zip, ce qui requiert de les décompresser avant de les utiliser. Comme elles sont déjà au format GeoJSON, elles sont directement exploitables dans les différents logiciels d'analyse géospatiale.

View file

@ -1,11 +1,11 @@
# Éviter les travaux routiers
De plus en plus, les autorités gouvernementales en transport rendent disponibles des données ouvertes sur les travaux routiers et les entraves à la circulation sur leur site web.
Transports Québec partagent des données ouvertes sur les travaux routiers et les entraves à la circulation sur leur site web. Celles-ci sont souvent disponibles au format [GeoJSON](https://fr.wikipedia.org/wiki/GeoJSON).
Nous pouvons utiliser ces données, souvent disponibles au format GeoJSON, pour concevoir une carte personnalisée pour notre parcours de voyage et pouvoir les éviter le plus possible sur notre parcours. Le téléchargement peut aisément se faire sur une base quotidienne avec `bash`, tel que nous l'avons vu précédemment.
Nous pouvons exploiter ces données, pour concevoir une carte sur mesure pour notre parcours de voyage et pouvoir les éviter le plus possible. La mise à jour de celles-ci peut aisément se faire sur une base quotidienne avec *bash*, tel que nous l'avons vu précédemment.
Pour manipuler ces données, le langage de programmation R et sa puissante librairie géospatiale `sf` contiennent tout ce qu'il faut pour effectuer le traitement des données.
Pour manipuler ces données, le langage de programmation R et sa puissante librairie géospatiale *sf* contiennent tout ce qu'il faut pour effectuer leur traitement.
Ensuite, pour produire une carte, la librairie `leaflet` contient tout ce qu'il faut pour produire une carte interactive qui fonctionnera même hors-ligne !
Ensuite, nous utilisons la librairie *leaflet* pour produire une carte interactive autonome et imprimable !
![Une carte Leaflet personnalisée avec les travaux routiers du Québec créée avec R](Images/travaux_routiers_leaflet.png)
![Une carte Leaflet avec les travaux routiers du Québec créée avec R](Images/travaux_routiers_leaflet.png)

View file

@ -1,11 +1,20 @@
# Conclusion
J'espère de tout coeur que tu as apprécié ce guide de préparation de vacances. Je souhaite que ces différentes utilisations de la technologie pour augmenter son autonomie en informatique te rejoignent.
J'espère de tout coeur que tu as apprécié ce guide de préparation de vacances. Je souhaite que ces différentes utilisations de la technologie pour augmenter ton autonomie en informatique te rejoignent.
Tu souhaites obtenir davantage de contenu similaire ? N'hésite surtout pas à t'abonner à la liste de courriel de Je valide ça.
Tu veux obtenir davantage de contenu similaire ? N'hésite surtout pas à t'abonner à notre liste de courriel si ce n'est pas déjà fait.
[C'est ici pour s'abonner !](https://jevalide.ca/abonnement)
Bâtissons une communauté plus autonome et plus heureuse avec l'informatique grâce au logiciel libre. Nous invitons à partager ce lien d'abonnement sur les réseaux sociaux.
Pour en savoir plussur nous, visitez [notre site web](https://jevalide.ca/)
Merci et à la prochaine !
François
François Pelletier
Je valide ça

View file

@ -36,7 +36,7 @@
%section 2
\part{Nextcloud: un séjour en autohébergement, comme sur un nuage}
\part{Nextcloud: un séjour en auto-hébergement, comme sur un nuage}
\input{chapitres/chapitre_2_1}
\input{chapitres/chapitre_2_2}

View file

@ -1,7 +1,11 @@
# Introduction
L'objectif de ce guide de préparation de vacances est de données des exemples concrets, validés dans la vraie vie, d'utilisation des technologie de script, d'auto-hébergement et d'analyse de données. Mon objectif est d'attiser votre curiosité et vous inviter à vouloir en découvrir davantage. Tu retrouveras, tout au long du texte, de nombreux liens de référence vers les technologies que j'utilise.
L'autonomie en informatique est, selon nous, la clé pour être heureux dans son travail au quotidien. Trois thèmes peuvent mener à celle-ci: la programmation par script, l'auto-hébergement et l'analyse de données.
Ce guide de préparation de vacances sert à donner des exemples concrets, validés dans la vraie vie, d'utilisation de ces techniques, avec une thématique estivale ! Notre objectif est d'attiser la curiosité et vouloir en découvrir davantage. Nous partageons, tout au long du texte, de nombreux liens de référence vers les technologies que nous utilisons chez Je valide ça.
Bonne lecture !
François
François Pelletier
Je valide ça

View file

@ -24,12 +24,12 @@ conclusion.pdf \
cat output mon_ebook.pdf
```
- On lance le logiciel `pdftk`
- On lance le logiciel *pdftk*
- Ensuite, on énumère dans l'ordre tous les fichiers à concaténer
- On spécifie l'action. Le mot `cat` est souvent utilisé pour la concaténation.
- On spécifie le fichier de sortie après `output`. Ici, c'est `mon_ebook.pdf`
- On spécifie l'action. Le mot *cat* est souvent utilisé pour la concaténation.
- On spécifie le fichier de sortie après *output*. Ici, c'est *mon_ebook.pdf*
Petite note: la barre oblique `\` c'est pour couper les lignes pour les rendre plus faciles à lire !
Petite note: la barre oblique *\* c'est pour couper les lignes pour les rendre plus faciles à lire !
### Les tubes
@ -41,10 +41,10 @@ grep -i "voyage|travel"
```
- Le premier argument de find est le répertoire de recherche, ici c'est `nextcloud/Livres/Technical`.
- Le premier paramètre est `type`, avec comme valeur `f`, pour rechercher uniquement les fichiers.
- Ensuite, il y a un tube vers la commande `grep`
- `grep` a un paramètre, `-i` qui spécifie que ce qui suit n'est pas sensible à la casse (an anglais *case insentitive*)
- Enfin, il y a l'expression de recherche `voyage|travel` qui va retourner tous les noms de fichiers qui contiennent soit le mot `voyage`, soit le mot `travel`
- Le premier paramètre est *type*, avec comme valeur *f*, pour rechercher uniquement les fichiers.
- Ensuite, il y a un tube vers la commande *grep*
- *grep* a un paramètre, *-i* qui spécifie que ce qui suit n'est pas sensible à la casse (an anglais *case insentitive*)
- Enfin, il y a l'expression de recherche *voyage|travel* qui va retourner tous les noms de fichiers qui contiennent soit le mot *voyage*, soit le mot *travel*
### cron sur Linux et macOS