## À propos Le but de ce document est de détailler quelques idées de petits projets que Greg pourrait faire en C++. ## NASA En se basant sur les données présentées par l'API de la NASA (Astronomic picture of the day), créer un programme qui : - récupère les données pour le jour actuel - ou pour un jour donné - ou pour une période donnée - les stoquent dans un fichier, permettant de créer un « cache » - ou les stoquent dans une base de données « [embeded](https://en.wikipedia.org/wiki/Embedded_database) » (Berkley DB, SQLite) - ou les stoquent dans une base de données « [relationelle](https://en.wikipedia.org/wiki/Relational_database) » (MariaDB, PostgreSQL) - puis, pour chaque jour, créée un fichier HTML statique, nommé « YYYY-MM-DD_APOD.html » présentant les données de manière libre mais avec au moins : - La date - Le titre de l'image - L'image (et evt. la vidéo) - La description de l'image (avec si possible la licence et le copyright) - Des liens vers la date précédente et suivante - Une autre opération permet de lister, dans le terminal, la liste des « APOD » déjà récupérés - La liste présente la date et le titre (et evt. d'autres éléments avec des options) - L'utilisateur à la possibilité (toujours avec des arguments) de trier la liste sur la date de manière ascendante ou descendante. - (optionel) paramètre de filtre pour le tri - Un argument permet de générer un PDF pour - Le jour actuel - Un jour donné - Une période donnée (un « APOD » par page) Il est recommandé que le programme en ligne de commande prenne des arguments pour chacune de ces étapes. Il va de soi que si les données sont présentent dans le cache (et qu'il n'y a pas de tag pour forcer la mise à jour), alors les données sont prisent du cache. Sans arguments, le programme liste les données du jour dans le terminal. ### Objectif de formation - exercer la programmation en C++, en particulier : - les requêtes HTTP - les accès au système de fichier - les connections à des bases de données - découverte de la définition, lecture et organisation des arguments et de leurs paramètres dans un programme en ligne de commande - le templating de fichier pour la génération du HTML (à découvrir soi-même et/ou/puis utiliser une librairie comme mustache (https://mustache.github.io/ et pour le C++ https://github.com/no1msd/mstch)) - initiation aux bases de données (fichiers, embarquées et relationnelles) - la gestion d'un système de cache et les problématiques qui en découlent - la génération de PDF en ligne de commande ## WP-Veritas Une alternative ou évolution potentielle de ce projet serait de partir sur l'API de wp-veritas. La proposition serait de faire quelques chose de similaire avec en plus une étape de récupération de l'HTML des home pages afin de parser les balises meta et open graph. Le programme pourrait générer des rapports de page avec la preview et un score « SEO » basé sur les balises méta. On pourrait alors lancer une campagne de sensibilisation au référencement à l'EPFL et améliorer notre visibilité.