Informations

Bienvenue sur le portfolio de Christophe Daloz - De Los Rios. Vous pouvez retrouver mes créations, avec des screenshots ou des vidéos. En vous inscrivant sur le site, vous pouvez poster des commentaires sur les différents éléments : article, screenshots, vidéos et news.
Si vous êtes recruteur, mon CV est à votre disposition en version web, via la section concernée.

News

Certification Docker

Une petite news pour informer que je viens de réaliser la certification Docker sur OpenClassrooms. J'ai mis à jour mon CV en conséquence. J'ai obtenu la certification OpenClassrooms.

tty-utility

Au travers de cette news, je souhaite présenter un projet sur lequel je suis entrain de travailler sur le document Word pour le développer.

Tty-utility, est un système de console développé en Python. Après avoir cherché sur pypi.org, je n'ai hélas pas trouvé grand chose. On retrouve plusieurs systèmes de consoles, mais aucun de réellement utile : se sont en général des outils spécifiques et non générique comme Symfony/Console en PHP.

Le but ici, c'est de développer un outil fournissant une base pour nos outils consoles. Un équivalent de la console de Symfony en PHP, c'est à dire que le programme fournira une classe de base pour instancier la console, une classe de base à héritée pour ajouter une commande au sein de la console.

Pour le moment je suis en train d'écrire le document Word, listant les classes et methods nécessaire pour faire fonctionner le tout. Il me reste encore deux ou trois choses à noter, ainsi que la classe d'instanciation de la console.

Je pourrais ensuite passer au développement. Ayant déjà développe tty-color, un outil Python pour gérer la couleur en mode console (norme ANSI standard et étendue pour les terminaux qui gère la norme étendue, c'est à dire la plupart maintenant dont le PowerShell et cmd.exe) ; le système l'utilisera, afin de proposer la gestion de la couleur.

Une fois le développement entamé, je proposerais ici des screenshots du développement et du résultat. Une vidéo tutoriel sera aussi réalisée sur ma chaîne Youtube Kurisu-Dev, afin d'expliquer son fonctionnement, quand l'outil sera prêt.

YTChannel - Gestion Youtube

Voici le second projet dont je souhaite parler, il est important car je souhaite le développer pour valider les CCP2 et CCP3 de la formation CDA (Concepteur Développeur d'Application).

Au départ prévu en JAVA Spring pour compléter la formation faite à l'AFPA où nous n'avons que très peu bosser avec le JAVA, mais le PHP me manque beaucoup et j'ai d'autres projets en tête, donc je pourrais en faire un en JAVA sans soucis. Ce projet sera donc en PHP 7.3.

YTChannel, sera un site internet permettant d'apporter une aide à la gestion d'une chaîne Youtube. Ainsi, à partir du site, il sera possible d'automatiser l'upload des vidéos sur la chaîne, envoi d'un message Facebook ou encore Twitter (à terme, non prévu au départ) etc.

L'idée m'est venue car je suis en ADSL2+, donc un très faible upload et utiliser la connexion du smartphone c'est pas terrible (même si 150 Go/mois me suffit pour l'instant ^^). Mon but derrière ce projet, est de pouvoir gérer l'upload sur mes chaînes Youtube : quand j'ai monté les vidéos, je prends le temps que je veux pour uploader sur le serveur, je configure tout : date de l'upload, si la vidéo doit apparaître en différée ou non etc.

Ensuite, c'est des tâches cron qui vont automatiquement exécuter un script qui va réaliser le travail suivant une priorité (date d'upload souhaitée) ; le serveur ayant une très bonne connexion, je n'ai pas à m'inquiéter sur ce point là, et je pourrais en plus faire une configuration spécifique par catégorie de vidéos.

Le projet est déjà assez mûr dans ma tête, mais il me faut tout mettre au propre, et voir avec le formateur de l'AFPA, si le projet cadre pour le CCP3 ; pour le CCP2 oui car ce n'est que de la BDD, donc juste penser à prévoir quelques procédures stockées et trigger c'est tout. Pour le CCP3 c'est autre chose : application n-tiers et je ne sais pas s'il y a d'autres "obligations" pour le passage du CCP, donc il me faut me renseigner pour adapter le projet au niveau technique.

Le fait aussi de le réaliser en PHP, qui est un langage que je maîtrise, me permettra de rester dans le temps impartis pour réaliser le travail + le DP + le rapport + la présentation PowerPoint.

YTChannel sera sur un dépôt github, et permettra à toute personne possédant une chaîne Youtube, d'installer le site s'il le souhaite pour gérer sa chaîne. Comme pour la plupart de mes projets, je les fais au départ pour moi, mais dans un soucis d'accès au plus grand nombre de personnes.

Script gitrepos

Dans la news où je parle du VPS, je disais revenir dans une autre news sur le script gérant les dépôts git. Commençons d'abord par le début.

En plus d'être développeur cherchant du travail et faisant aussi bien de la prog web qu'applicative pendant ce temps, je suis aussi Youtuber avec trois chaînes, une sur les jeux vidéos en général, l'autre sur Minecraft spécifiquement suite aux modifications de la loi COPPA par la FAA qui nous laisse toujours dans un flou total pour l'instant, et une chaîne orienté sur la programmation.

Pour les besoins de cette chaîne de programmation, j'ai besoin de dépôts git pour la préparation des tutoriels que je fais sur la chaîne ; mais aller créer un dépôt privé sur github, c'est pas pratique quand on a déjà 30 dépôts à notre actif dessus.

J'ai donc décidé et cela m'a permis d'apprendre, à déployer un serveur git avec Apache2 sur le serveur. Le script gitrepos.sh dont je parlais plus tôt, me permet d'automatiser cette tâche.

Sur l'ensemble des tutoriels que nous voyons sur internet sur comment faire, tous utilisent un seul et unique fichier de gestion des utilisateurs (similaire à /etc/passwd des utilisateurs systèmes) ou ils travaillent directement avec les utilisateurs systèmes. Dans les deux cas, cela veut dire qu'un utilisateur à accès à l'ensemble des dépôts en lecture ET écriture, ce qui n'est pas le but recherché même si d'un côté on s'en fiche car je suis tout seul sur mon VPS.

J'ai donc eu l'idée suivante : stocké le fichier équivalent à /etc/passwd que j'ai appelé git.passwd, au sein même du répertoire du dépôt. Mais il me fallait alors, créer une configuration Apache par dépôt, ce qui n'est pas super pratique.

Voici donc la solution que je propose : dans le fichier de configuration globale ou dans le VirtualHost si on passe par un DNS spécifique pour l'accès à git (ce n'est pas mon cas),à la fin on lui donne la directive Include et on lui donne un répertoire (j'ai choisi /etc/apache2/conf-git) ; dedans il y prendra alors tout les fichiers de configuration pour les inclure à la volée dans la configuration globale.

J'en viens enfin à mon script : en premier lieu, il va demander le nom du dépôt git à créer (sans le .git, il le rajoute par la suite), puis il va aller créer le répertoire du dépôt, l'initialiser et réaliser sa configuration, mettre à jour les informations pour le serveur (git update-server-info) et enfin affecter les droits pour Apache dessus.

Ensuite, il nous demande le nom de l'utilisateur à créer, c'est le premier, les suivants nous devons taper nous même la ligne de commande htpasswd. Il va donc créer cet utilisateur dans le fichier git.passwd dans le dépôt git directement. Pour terminer, il va alors créer le fichier de configuration spécifique au dépôt et redémarrer Apache2.

Ainsi, j'ai un script pour automatiser la création d'un nouveau dépôt git sur mon serveur, ce qui me permet de travailler comme je le veux sans perdre de temps : je me connecte au VPS, j'exécute le script avec les droits root (sudo ou connexion root, chacun sa préférence ^^), et hop tout est fait en quelques secondes et sans risque de se planter.

Nouveau VPS

Revenons un peu en arrière avant de parler du présent : 2015, je commence à travailler sur un projet appelé ETS2Routes, apportant une gestion d'entreprise plus poussée au jeu, au travers d'un site internet.

A cette époque, j'avais pris un hébergement mutualisé, sans accès SSH complet (très limité dans ce qu'on pouvait faire), et avec un DNS fournis. Puis j'ai réalisé un stage au sein de l'entreprise Eoxia, où j'ai découvert le principe des VPS OVH, que je ne connaissais pas auparavant.

Pendant le stage, je découvrais alors, que le prix du VPS + le renouvellement annuel du DNS, me coûterai pas beaucoup plus que mon hébergement mutualisé, mais avec un total accès à la machine et la possibilité d'héberger d'autres sites par la suite ou faire tout autre chose sur le serveur.

J'ai donc passé le pas à la fin de mon second stage chez eux en 2016.

Revenons au présent :
Depuis 2016 que j'avais mon VPS chez OVH dans le datacenter de Strasbourg (certains doivent me voir venir ^^), j'avais toujours reporté la mise en place d'un système de sauvegarde et l'offre que j'avais prise, ne permettait pas d'accès à un backup automatisé par OVH.

Jusqu'à la nuit du 10 mars 2021, où malheureusement le datacenter a pris feu, SBG2 à été totalement ravagé, 4 salles sur 12 de SBG1 ont été très endommagées aussi ; SBG3 & 4 ayant survécu sans problèmes.

Suite à ça, j'ai donc perdu le serveur, il était dans une des salles de SBG2, vous imaginez donc qu'il n'en reste que de la poussière.

Cette mésaventure m'aura servis : j'ai repris un nouveau VPS il y a peut, avec l'offre juste au-dessus pour une backup automatisé (a payé en plus). Le jour même j'ai commencé alors la mise en place de scripts de sauvegardes du serveur : un qui s'exécute chaque jour pour chaque site que j'héberge, et qui réalise une sauvegarde des fichiers de la DB et un dump SQL (7 sont gardés sur le serveur, ceux plus anciens que 7 jours sont automatiquement supprimés par le script journalier), l'autre chaque semaine pour m'envoyer par e-mail, une copie zippé du dernier dump de la base du site (donc celui du jour, au pire celui du jour précédent).

Ainsi, je ne risque plus de perdre toutes les données comme les nombreux tutoriels que j'avais écrits sur codedev.fr (heureusement, je n'avais rien d'autres, donc plus de peur que de mal ^^).

Dans la foulée, et c'est presque quotidien au fil de la réinstallation des éléments dont j'ai besoin, je me suis fait des scripts d'automatisation : sauvegarde manuelle des fichiers de configuration avec un envoi par e-mail, création automatisée d'un certificat SSL avec Let's Encrypt ou encore création d'un dépôt git automatisé, mais j'en parlerai dans une autre news de celui-ci.

Du coup, j'ai la chance d'avoir terminé le développement de ce portfolio, il y a quelques jours seulement, je n'ai donc pas été retardé pour sa mise en ligne, même si j'aurais eu quelques difficultés aujourd'hui pour le faire.