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

Scripts

Quand j'ai été obligé de reprendre un VPS, suite à l'incendie à SBG2 d'OVH, j'ai de suite créé certains scripts de sauvegarde dont certains sont utilisés de manière automatisés avec des tâches cron.

Ces scripts sont assez basique et fait en sh, qui est bien plus limité que le bash ; sauf que le bash n'est pas forcément présent sur toutes les distributions linux ; Debian et Ubuntu l'utilisent en standard, mais d'autres vont utiliser ksh par exemple ou dash ou d'autres interpréteurs de commandes avec une syntaxe qui peut différer.

Du coup j'ai choisi de refaire ces scripts, mais il me fallait quelque chose de commun à toutes les distributions Linux. Au départ j'ai pensé le faire en PHP avec le système de console de Symfony, mais il faut pour cela installer PHP et je dois me conformer au PHP 5.6 pour être sûr que le script soit utilisable sur le plus de linux possible, car les version de PHP 7 ne sont pas toujours disponible.

Il m'est venu alors l'idée, de réutiliser mon projet de système de console pour Python (équivalent légers de la console Symfony en PHP). Python 3 est présent dans les packages de toutes les distributions, et parfois même déjà installé de base ; la mise à disposition donc du script, peut se faire pour le plus grand nombre.

J'ai donc commencé à recréer certains des scripts, pour l'instant j'ai commencé à bosser sur le script de gestion MySQL, qui permet de réaliser une sauvegarde de la BDD ou de créer, modifier et supprimer un utilisateur MySQL ou une database. Actuellement, se sont deux scripts sh, celui pour la gestion de l'utilisateur et de la base, date de presque un an maintenant et c'était un script bash justement et non sh.

Ces scripts donc, permettant de faciliter la gestion d'un serveur : sauvegarde DB, créer un dépôt git sur le serveur (ou la machine locale ^^), sauvegarde du home de l'utilisateur etc., vont être recrée en Python. Ainsi, je bénéficie de toute la puissance du Python, tout en gardant le côté pratique d'un système de console comme si nous utilisions un script sh/bash avec des paramètres.

Le projet sur le script MySQL (fusion de deux scripts de gestion MySQL), a déjà démarré mais mis en pause pour l'instant car j'ai commencé à bosser sur AskaCSS dont j'ai parlé dans une autre news. Je pense mettre ce dernier en pause, et revenir sur ces scripts car j'en ai besoin, que se soit pour le VPS ou pour ma VM qui me sert à coder.

Comme toujours, se sera disponible sur Github sous licence MIT.

AskaCSS : Site internet

Suite de la news précédente sur mon projet AskaCSS. Brièvement : AskaCSS est un framework CSS, reposant sur les flexbox. Le but : déchargé au maximum l'HTML et permettre de modifier le comportement en assez peu de lignes CSS en surchargeant AskaCSS.

Même si ce framework est avant tout pour moi-même, afin ma propre solution pour concevoir le visuel de mes sites internet, je ne souhaite pas garder jalousement le projet. Ce dernier possède donc un dépôt Github et est sous licence Open-Source (MIT).

Le site internet est développé en PHP, afin de garder le système de template Twig et ne pas refaire tout l'en-tête HTML à chaque page, ce qui me permet aussi de faire évoluer le site rapidement et facilement, tout en pouvant n'importe quand lui apporter de nouvelles fonctionnalités.

Le site utilise bien entendu AskaCSS pour le visuel. Le but de ce site internet, est d'une part de présenter ce projet, d'autre part de fournir une documentation complète avec exemples d'utilisation de chaque parties du framework, que se soit le rendu visuel ou le code HTML/CSS à utiliser.

Pour sa première version en tout cas, le site ne proposera pas plus, mais dans ses versions suivantes, je verrais pour peut-être y développer un module d'apprentissage reposant sur de petits exercices afin d'apprendre à utiliser le framework. Ces derniers reposeraient sur le principe : je présente le résultat attendu, l'utilisateur saisie ensuite dans le champ texte, le code HTML correspondant d'après lui, et après validation, constate le résultat et le compare au visuel proposé afin de voir s'il a réussi ou non l'exercice.

Bien entendu c'est une évolution à venir, pour l'instant le site est en développement au fur et à mesure que je travaille sur le framework, je fais donc les deux en parallèle.

Dans un premier temps, le site sera proposé uniquement en anglais, car même si je suis mauvais avec l'anglais (désolé donc par avance pour le site dont l'anglais sera sans doute pas terrible), c'est la langue communément utilisé en développement informatique, il est donc important que le site la propose afin de permettre au plus grand nombre, de pouvoir utiliser le framework.

En revanche, lors des mises à jours suivante du site, je proposerais le français. L'anglais restera la langue par défaut, mais l'URL permettra de basculer sur le français à tout moment.

AskaCSS

J'avais parlé dans une précédente news, que je souhaite réaliser mes CCP2 et 3 de la formation Concepteur Développeur d'Application, afin de compléter le titre. J'avais donc pour l'occasion, parlé de YTChanel, un projet de site internet de gestion d'une chaîne Youtube (projet qui sera réalisé en PHP).

Pour l'occasion, je souhaite m'affranchir de certains éléments que j'utilise habituellement. Ici, je vais vous parler CSS. Depuis quelques temps déjà, j'utilise beaucoup Bootstrap (depuis la version 3). Bootstrap est très puissant et permet beaucoup de choses, merci d'ailleurs aux développeurs qui y font un sacré boulot.
En revanche, il devient d'une part une véritable usine à gaz, d'autre part il est lourd au niveau du code HTML. Sa lourdeur provient de l'usage de la grille.

Pour YTChanel, je vais utiliser mon propre framework CSS que j'ai baptisé "AskaCSS". Son développement a déjà démarré, mais il n'en est qu'au tout début. Dans ce framework, et c'est un peu la nouveauté par rapport à Bootstrap, je souhaite m'affranchir du système de grilles et reposer sur le système de flexbox pour le positionnement. Ainsi, pas de "12 colonnes" ou autres, on utilise nos div comme habituellement et les éléments se placent tout seuls sur la ligne à intervalle régulier.

Le but ici, est de décharger le travail du framework. En effet, Bootstrap a cet avantage de presque tout faire pour nous, on utilise le système et grille et on fait presque pas de CSS. L'idée est intéressante, mais pour l'avoir vécu avec le projet sur lequel nous avons bossé à l'AFPA pendant la formation Développeur PYTHON/JAVA, dès qu'on va vouloir gérer les résolutions inférieurs (smartphone, tablettes, TV...), c'est vite le boxon intégral, on se retrouve avec des fois 4 voir 5 classes CSS.

De plus, le résultat n'est pas parfait, et si on veut gérer d'autres résolutions, par exemple du 1080p et au-delà, on doit créer des media-query intermédiaire ou supplémentaire pour un résultat qui n'est parfait dans tout les cas, que dans le cas où on est sur la résolution indiquée ; dès que la fenêtre est entre deux media-query, les positionnements sont loin d'être idéaux.

La philosophie derrière AskaCSS est bien différente. Le but est que les éléments se positionnent tout seuls et ce quelque la taille du navigateur ou de l'écran. Si maintenant le développeur souhaite restreindre la taille du conteneur et donc que la disposition soit un peu différente, il doit pouvoir le faire très simplement en CSS sans devoir rajouter des classes CSS à foisons dans son code HTML ou écrire beaucoup de CSS pour le faire.

Je prends l'exemple de la barre de navigation. Si on ne donne aucune restriction, les éléments qui sont des listes au sein de la navbar, vont prendre toute la largeur. S'il y a beaucoup d'éléments OK, sinon l'espacement sera très grands et pas agréable. Le développeur, peut très bien souhaité que les éléments se regroupent tous à droite par exemple. En surchargeant la classe il peut modifier le justify-centent de space-around à flex-end par exemple. S'il trouve que les éléments sont trop collé, rien ne l'empêche ensuite de surcharger l'élément de liste enfant de cette classe CSS, en ajoutant un margin à l'intérieur.

Dans cet exemple, on peut donc en juste deux lignes de CSS, modifier le comportement et l'adapter, sans devoir rajouter de nouvelles classes HTML ou taper des dizaines de lignes de CSS pour un peu tout modifier. Ainsi, le développeur est parfaitement libre de ses choix, il n'a presque aucune contrainte alors que Bootstrap en impose de par son fonctionnement, dû fait que les développeurs du framework, ont souhaités permettre d'établir un visuel en quelques minutes sans rien faire et modifier le visuel facilement.

Avec AskaCSS, je souhaite disposer d'un comportement similaire mais en laissant plus de champ libre aux développeurs et un HTML plus simple à lire et a comprendre. Alors que Bootstrap mise tout sur l'HTML, je prends de mon côté le parti pris, d'imposer un peu de CSS si on souhaite personnaliser un peu les comportements, sans toutefois apporter de la lourdeur au code CSS qui doit être écrit.

Bootstrap repose aussi sur la multitude de classes CSS, AskACSS reposera sur les sélecteurs CSS. Ainsi, AskaCSS peut réaliser en automatique certains comportements, par exemple si on est en présence du premier élément, du dernier, un élément sur deux etc. et ce de manière complètement automatique, sans classes CSS supplémentaire et sans travail supplémentaire de la part du développeur.

Je m'arrête là, car j'ai en tête pleins de choses pour se projet. Au niveau des noms des classes CSS, j'ai décidé de reprendre autant que possible, les noms de classes de Bootstrap (pas le code), afin de limiter l'apprentissage pour quelqu'un ayant déjà travaillé avec ce dernier.

Le développement du projet a déjà démarré, mais j'avoue ne pas avoir eu le temps de travailler dessus depuis une bonne semaine. En parallèle, je travaille sur le site présentant le framework et fournissant (comme le fait Bootstrap) une documentation complète. Ainsi, au fur et à mesure que je crée les briques de AskaCSS, je répercute cela sur le site qui va alors se construire tout doucement avec le framework.

Mais je vais pas parler du site ici, je vous donne RDV donc dans la news qui y est consacrée, juste après cette dernière.

Portfolio V1.2.0 Adminstration

Dans la droite ligne des mises à jour prévues, la 1.2.0 baptisée "Administration", viendra modifier le système d'administration actuel.

Actuellement, c'est le système fournis par Django, qui est certes pratique mais assez limité. Par exemple, les champs de type textarea (champ de texte), sont classique et on ne peut pas le modifier (ou alors je n'ai pas encore trouvé). Du coup, cette mise à jour, apportera un nouveau système d'administration. L'accès à l'administration de Django sera conservée et accessible via une autre URL (/django en lieu et place de /admin), et l'URL actuelle fournira la nouvelle administration.

Cette dernière sera certes moins évolutive (dans un premier temps en tout cas), mais sera moins limitée. Ainsi, d'une part cela me permet de voir comment faire une interface d'administration en Python/Django, ce qui me permet d'apprendre de nouvelles choses, mais en plus j'aurais quelque chose de correspondant à mes besoins. Certes je perdrais en automatisme avec par exemple les boutons intégrés d'un formulaire lié à une table, utilisant une autre table et permettant à partir de là et sans rechargement de la page, d'ajouter quelque chose dans cette table ; mais au moins mes textarea permettront la mise à jour en forme par exemple ; je pourrais aussi réaliser d'autres fonctionnalités plus évoluée comme la possibilité de changer l'ordre d'affichage de certaines choses.

Cette mise à jour sera un gros travail sur ce projet, mais je pourrais répercuté cette nouvelle connaissance, sur les prochains développements Django.

Portfolio V1.1.0 Pratique

Bonsoir,

Je me dis qu'il est temps de faire une mise à jour du portfolio. Pour l'occasion je vais faire quelque chose que je fais jamais et que j'ai envie de faire sur ce projet : utiliser des noms de code pour les mises à jour de contenu.

Ici donc, la mise à jour 1.1.0 baptisée "Pratique", ajoutera entre autres une chose que j'ai oublié : la possibilité de rajouter sur le CV les projets personnels, ce qui permet de présenter aux recruteurs même l'expérience non réalisée en entreprise mais à côté.

Actuellement, les informations sont affichées directement, dans l'ordre qu'elles sont ajoutées sur le CV, je vais changer cela pour qu'il classe par rapport aux dates, ce qui sera bien plus logique et évitera pas mal de soucis.

Un lien vers l'administration aussi (si on a le statut), permettra un accès plus simplifié. En dehors de ça, il est prévu de corriger quelques bugs au niveau de l'affichage de l'administration Django.

Je n'ai pas encore commencé le développement de cette mise à jour, mais je vais m'y atteler dans les prochains jours.
Ce sera tout pour cette mise à jour, mais j'ai déjà du travail devant moi.