Un pré-requis pour maintenir ce blog était le suivant: publier un article ne doit pas me prendre plus que quelques minutes. Une fois que j’ai le texte, tout le reste doit se faire automatiquement. Je ne veux pas m’encombrer de détails techniques, coder plus que le strict nécessaire, ou gérer du “front-end”; bref, optimiser mon agenda vu que je gère ce blog sur mon temps libre.
Du coup j’ai monté une pipeline simple et entièrement automatisée que je décris ci-dessous et qui fait parfaitement l’affaire 😄
Ma “stack” 🧘
Ce blog est construit grâce à :
- Joplin, une excellente app de prise de notes que j’ai adoptée il y a 6 mois environ pour arrêter d’utiliser Evernote & Google Keep pour mes notes personnelles. Elle est open-source, dispo sur toutes les plateformes, et permet de stocker ses notes de manière chiffrée de bout en bout. Elle a surtout un des meilleurs éditeurs Markdown qui soient avec plein de raccourcis super ! c’est souvent sur Joplin mobile que je rédige mes articles, en petit bouts dès que j’ai 5min de battement.
- RStudio, un IDE pour le langage R. Me permet de maintenir le projet, et de push les modifications de code sur Git.
- blogdown, un package R qui permet la création facile et pratique de sites statiques grâce au Markdown, compatible avec l’intégration de code R & Python et des sorties.
- Github, qui host le code et le sert pour le build & deploy en continu chez Netlify :)
- Netlify, en hébergement gratuit et compatible avec le déploiement automatique depuis Gitgub. J’aimerai bien migrer sur un hébergement IPFS, pour le côté décentralisation, je dois pour cela installer un noeud IPFS chez moi ou utiliser un service comme Pinata Cloud. Pour le moment, je garde Netlify car il me simplifie grandement la tâche côté “DevOps”, la gestion du SSL et de du nom de domaine :) Il faudra aussi voir la fluidité et la vitesse que permet le réseau IPFS.
- Hugo, le générateur de sites statiques avec le thème Stack. Il est chargé de construire les pages HTML du site à partir de fichiers Markdown ou Rmarkdown
Mon compte Netlify surveille donc un repo Github, et déploie mon blog dès que je push des modifications. Je n’ai rien à gérer !
Pourquoi R ?
J’ai commencé à utiliser R pendant mes études, en 2011-2012, dans le cadre de cours de statistiques et d’analyse des données au sein du de Laboratoire de Mathématiques Appliquées d’Agrocampus Ouest. Même si je l’utilise beaucoup moins aujourd’hui au profit d’autres langages, c’est le tout premier que j’ai appris, et je le trouve vraiment cool (si vous n’êtes pas d’accord avec cette affirmation, voir ici).
J’aime particulièrement sa capacité à fournir des interfaces simples vers tout et n’importe quoi, et à rendre faciles des tâches normalement assez lourdes, comme la création d’app web interactives. J’ai par exemple gagné beaucoup de temps grâce :
- Au célèbre Shiny, qui permet de faire des apps interactives avec un serveur R derrière qui permet d’avoir beaucoup de fonctionnalité. On reproche souvent à R d’être trop limité en performance, ou d’être peu “scalable”, mais moyennant de la maîtrise et les bons d’outils, il est possible d’opérer en production avec.
- flexdashboard, plus simple, mais tellement puissant et facile à prendre en main
- htmlwidgets, une collection de librairies qui facilitent l’usage de librairies de visualisation de données comme leaflet, networkD3 ou encore webGL
Petit exemple simple avec le package de cartographie leaflet :
if (!require('leaflet'))
{
install.packages('leaflet');
library(leaflet);
}
library(leaflet)
m <- leaflet() %>%
addProviderTiles(providers$Esri.WorldImagery) %>% # Je choisis un fournisseur de cartes
setView(lng = 103.958992, lat = 10.216590, zoom = 10) # Je choisis le point sur lequel je veux centrer la carte
m # Afficher la carte
Facile ! et la carte est bien-sûr interactive :)
- Merci pour votre lecture ! 😊👋
Anas EL KHALOUI