logo

Bienvenue visiteur,

ETS2Routes est un site consacré au jeu Euro Truck Simulator 2. Pour plus d'informations, toute l'équipe te propose d'aller lire la FAQ, où tu trouveras réponses aux questions que tu te pose.

Joyeux no?l
Catégorie : G?n?ral
Auteur : christophedlr
Bonjour,

Je vous souhaite ? tous un joyeux no?l. Malheureusement la nouvelle version du site n'est pas encore sous le sapin. Le travail reprendra dessus apr?s les f?tes, sur un tout nouvel ordinateur plus puissant, plus efficace et qui va me permettre d'aller plus vite.
ETS2Routes "2.0" - Son avancement
Catégorie : Mise ? jour
Auteur : christophedlr
Bonjour,

Cela fait un moment que je n'ai pas donn? de nouvelles ici sur le site, en effet tout est sur la page Facebook mais je pense pas ? en donner ici.

La nouvelle version du site que l'on pourrait appeler une version 2.0 est toujours en cours de d?veloppement. En effet, j'ai eu plusieurs difficult?s notamment avec l'usage de Symfony qui ne correspond pas ? mes besoins pour le coup.

Je suis entrain donc de refaire tout le site avec mon propre framework. Tout ce que je reprends de Symfony c'est Twig le moteur de template, le reste ? savoir : moteur de routing, gestion des entit?s, g?n?rateur de requ?tes (QueryBuilder), g?n?rateur de formulaire, services etc. tout est fait int?gralement par moi.

Pourquoi cela ? Montrer aux employeurs (car oui de Janvier ? Juillet j'?tais en poste, ce n'est plus le cas donc il faut bien trouver un boulot ;) ) ce que je sais faire et les d?fis que je suis capable de relever.
De plus, concevoir mon propre framework me permettra lors de mes autres projets (certains seront avec Symfony tout de m?me), de les d?velopper bien plus vite avec une solution que je connais tr?s bien et qui s'am?liorera au fil des projets et donc des besoins.

Pour l'instant, pas grand chose de d?j? programm?, en effet pour g?rer les news (syst?me de module ? cr?er et premier donc module qui sera fait), je dois d?j? disposer d'utilisateurs. Hors la gestion utilisateur, implique de g?rer la base de donn?es.

Pour g?rer la base de donn?es, j'ai plusieurs solutions : les mod?les, c'est ? dire une classe qui ex?cute les requ?tes et renvoi le r?sultat. Mon syst?me d'entit?, ? la base ?tait capable de r?cup?rer le r?sultat des requ?tes et de placer cela dans une classe ? exploiter, ce qui est donc relativement bien.

Sauf que j'en arrive ? des besoins particuliers dont la cr?ation de la base de donn?es en automatique. Le syst?me de mod?les correspond donc pas ? mon besoin avec un syst?me d'entit?s (une classe contenant toutes les informations d'une table ou d'un fichier). Du coup je dois cr?er mon g?n?rateur de requ?tes (un QueryBuilder).


Ainsi, je repars sur un principe de Symfony ? savoir les entit?s (c'?tait pr?vu), et les "repository". Les entit?s sont g?r?s par mon outil Entiter (c'est son nom, pas tr?s original lol), qui prend donc un tableau fournis par le repository (qui ex?cute les requ?tes et bient?t les fera ex?cuter ;) ) et remplis donc l'entit?.
Le repository est g?r? par Entiter, c'est donc lui qui appel les m?thodes que l'on demande d'appeler du repository.

Pour l'instant ?a va pour la lecture, l'?criture ou la mise ? jour de donn?es. Mais la cr?ation d'une table par exemple, ne rel?ve pas du repository puisque ne relevant pas directement d'une classe d'entit?.
Ca en rel?ve en partie car l'entit? dispose d'un fichier de d?finition de la table listant les correspondance entre les deux et la structure donc de la table SQL.

Sauf que ce n'est pas un retour d'entit?, donc le repository ne doit pas s'en occuper mais directement le coeur : Entiter. Je me rends compte avec les tests pour cr?er les tables, que c'est tr?s tr?s lourd. Du coup, il me faut un g?n?rateur de requ?tes (QueryBuilder).

Les QueryBuilder, sont des outils dont on appel diff?rentes m?thodes pour concevoir une requ?te SQL sans en conna?tre la syntaxe (les mots cl?s et la position). Tout ce qu'on a besoin de savoir, c'est qu'une requ?te de lecture par exemple, a besoin d'une (ou plusieurs) table de s?lection, d'une liste de champs ? s?lectionn?s ou un wildcard (*) pour tous les choisir sans en conna?tre la liste, sur quoi on se base (les champs et les valeurs), l'ordre de tri et ?ventuellement les diff?rentes jointures.

Quand on sait ?a, rien de plus simple, on dit au QueryBuilder de cr?er une requ?te de s?lection, de s?lectionner telles colonnes dans telle table suivant des crit?res et de nous retourner l'ensemble des lignes (ou que la premi?re ligne trouv?e).

On donne donc les instructions, il g?n?re donc le code SQL, l'ex?cute (avec PDO dans mon cas) et en retourne le r?sultat demand?.

Un QueryBuilder bien construit, permet de g?n?rer la plupart des requ?tes : s?lection, ajout, suppression, mise ? jour de donn?es, cr?ation, vidage, suppression ou modification de tables et m?me cr?er ou supprimer carr?ment une base de donn?es. En prime, un QB (QueryBuilder) bien fait, devrait ?tre capable de pouvoir g?rer les jointures, que se soit interne, gauche ou droite et les s?lection distinctes (un seul exemplaire de chaque donn?es).


Je suis donc ? cr?er ?a, quand se sera fait, il sera capable de g?rer tout les types de requ?tes que j'ai cit?s et donc concevoir m?me des requ?tes complexe par ce biais (on pourrait par exemple g?n?rer une premi?re requ?te, r?cup?rer que le code SQL, que l'on fournirais en tan que valeur d'un champ d'une autre requ?te, faisant donc une requ?te imbriqu?).

Ainsi, Entiter sera d?gag? de tout travail : il se r?f?rera ? l'outil indiqu? (injection de d?pendances), en appelant uniquement les m?thodes de ce dernier. Si entre temps je souhaite utiliser un nouveau QueryBuilder pour pas exemple g?rer SQLite (dont la structure des tables est un peu diff?rentes) ou g?rer des fichiers comme si on ex?cutais des requ?tes, il suffirait alors de fournir ? Entiter le nouvel outil ? la place.

Le syst?me ?tant pr?vu (via des Interface), pour que chaque QueryBuilder est obligatoirement la m?me structure, c'est ? dire la structure que va utiliser Entiter ; ? partir de l?, l'outil lui fait son travail derri?re. Ainsi, pas d?pendance ? un QueryBuilder particulier, on injecte la d?pendance d?j? plut?t que l'initialiser soit m?me, ensuite les m?thodes ?tant toujours les m?mes, on change pas les appels.
Quelques nouvelles du projet
Catégorie : G?n?ral
Auteur : christophedlr
Je viens vous apporter des nouvelles de ce projet. Je viens tout juste de terminer ce qu'il manquait de l'administration : les news et leurs cat?gories.

Dans les prochains jours (? partir de lundi je pense), je vais faire ce qu'il manque : modifier son profil, g?rer l'envoi du mal ? l'inscription, la page de contact, l'avatar du compte utilisateur et l'ic?ne pour les cat?gories de news.

A partir de demain et ce jusqu'? lundi, je vais commencer ? faire des tests sur ce qui est d?j? en place, ? savoir regarder ce qui est en place, noter dans un document Excel le comportement de chaque parties en pensant ? ce qu'il doit faire mais aussi ce qui ne doit pas appara?tre (par exemple modifier le cr?ateur de la news par exemple) etc.
Chaque ?l?ments ainsi not?s dans ce tableau Excel, me servira pour des "tests unitaires" faits ? la main (sans l'aide d'outils qui teste le code pour moi type PHPUnit/Khalan).

Je pense que ce tableau sera pr?t pour lundi, et j'y ajouterais au fur et ? mesure (j'aurais du le faire d?s le d?but) au d?veloppement, les diff?rents tests.
D?s la fin de ce qu'il manque, je ferais une batterie de tests suivant ce document Excel donc, dans lequel sera not? la version test?e, la date du test et si le point v?rifi? est bon ou non.

Chaque point qui n'est pas bon, fera l'objet d'un rapport de bug et d'une correction une fois tout les tests r?alis?s. La correction de bugs sera aussi l'occasion pour moi, de revenir sur certains ?l?ments visuels comme les ic?nes de crayons et de croix (qui respectivement symbolisent l'?dition et la suppression) qui sont en bleus et soulign?s, comme pour tout les liens.

A l'issu des dites corrections, je referais tout les tests en totalit?s. Le d?veloppement ne reprendra pas tan que tout les bugs identifi?s ne seront pas corrig?s.
Plus tard, lors des autres d?veloppements, d?s qu'une partie sera compl?te, elle sera test?e par ce biais et corrig?e au besoin avant de s'attaquer ? un autre morceau.

R?guli?rement, des tests globaux (donc m?me des parties d?j? test?es et fonctionnelles) seront r?alis?s, l? encore pour v?rifier que le d?veloppement n'a pas cr?e de r?gression.


J'ai ? coeur que ce projet soit le plus exempte de bugs possibles, aussi faire tout ces tests de mani?re r?guli?res, permettent d'?viter un bon nombre de probl?mes. Les autres, ceux auxquels je n'aurais pas pens?s (impossible de penser ? tout ^^), seront corrig?s au fur et ? mesure de l'utilisation en production quand ils seront identifi?s et la fa?on de les reproduire, ajouter ? la liste des tests.

Faire tout ces tests prend beaucoup de temps, lors de mon stage par exemple, il m'a fallut 2j pour d'une part mettre au point les tests (penser ? tout et noter) puis faire les tests et identifi?s les probl?mes (de plus j'avais pas acc?s au code, donc j'identifiais d'apr?s le comportement actuel et celui attendu).
Ce que je veux dire par l?, c'est que le travail est tr?s important, en particulier pour un site tel que ETS2Routes, dont les fonctionnalit?s sont multiples et le fonctionnement rendu complexe par l'utilisation d'un framework.

Le site accuse beaucoup de retard sur la dur?e de d?veloppement initialement pr?vue, mais au moins je sais qu'? la fin se sera un produit, qui je l'esp?re vous comblera.