Abonnement à ma liste de contacts

Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives
 
Aujourd'hui, je vais vous narrer la manière avec laquelle je me suis sorti de la problématique de nom évolutifs de fichier. En effet, dans le cadre de ma documentation technique que j'avais mise en place avec le CMS Jooma, je suis arrivé sur un point bloquant, relativement simple, que je devais impérativement résoudre.

La problématique.

 Sur mon serveur Web, sont hébergés à la fois le logiciel Joomla ainsi que l'ensemble des documents, à partir desquels quel je dois fabriquer des liens hypertextes "temporellement figés" à partir de mes articles Joomla.
Une fois ces fichiers mis en place sur le serveur, des liens hypertextes en découlent, donnant un accès direct au téléchargement du fichier. J'entends par téléchargement, la possibilité d'afficher le fichier dans le navigateur.
Cependant, pour beaucoup d'entre eux, une contrainte fonctionnelle imposée par une organisation, nous demande de notifier des collègues, pour chacun des fichiers mis à jours, leur nouvelles URL (puisque le nom du fichier contient ... la date de mise à jour).
Pour beaucoup d'entre eux, des mises à jour sont très régulières, parfois même plusieurs fois dans la même journée. À chacune de ces mises à jour, vous l'aurez compris, si cette mise à jour n'a pas été effectuée au cours de cette journée, la date change dans le nom du fichier. Et comme cette date évolue au fil du temps, l'URL d'accès vers le fichier devient caduque.
Un nom de fichhier est de la forle : 20220901-PHOTOGRAPHIE-12354-place-stanislas-aux-couleurs-du-ciel-chaudes.pdf
  • 20220901 : date sous la forme aaaammjj
  • PHOTOGRAPHIE : type fonctionnel contenu au sein du fichier (tous nos fichiers sont au format PDF !)
  • 123456 : identifiant de l'objet (ici la statue du roy Stanislas)
  • place-stanislas-aux-couleurs-du-ciel-chaudes : libelle libre dans lequel nous pouvons apporter des précisions
  • .pdf : extension du fichier
Cette URL vers ce fichier doit aussi être référencée dans une application métier de manière à ce que nos utilisateurs utilisant cette application métier, puisse cliquer sur un lien hypertexte dans l'application pour accéder directement au document.
Vous l'aurez compris, à chacune des mises à jour des documents (contenant la date), l'URL stockée dans l'application métier doit être mise à jour. Nous allons voir une des possibilités que j'ai imaginé pour éviter cette correction.

Fonctionnement

La constitution du nom du fichier

Je ne rentrerai pas en détail dans le nom de ce fichier, il faut simplement savoir que ce nom est constitué des différents éléments mentionnés au précédent paragraphe. Ce nom de fichier est constitué, d'un point de vue fonctionnel, de deux partie : 
  • une non figée au fil duu temps (la date)
  • l'autre qui n'évolue pas au fil du temps, et qui est UNIQUE (sinon l'outil ne peut pas fonctionner !)

C'est sur cette deuxieme partie que s'appuie mon algorithme ! 

La problématique précise

Si je fabrique un lien absolu vers ce fichier, à la prochaine mise à jour, tout sauf la date et restera fixe point ainsi, comme la date va changer, l'URL d'accès vers ce fichier devient Caduque. 
Afin de contourner ce problème, je me suis basé sur la partie fixe du nom de fichier. En effet, s'il était possible de fabriquer un micro moteur de recherche, permettant de rechercher sur le serveur FTP, un fichier dont le nom contient cette sous-chaine, correspondant à la sous-chaine du fichier sans la date, nous sommes sûrs et certains que ce fichier correspond à celui recherché. En effet, comme le nom du fichier comporte à l'intérieur, un identifiant, il est possible de trouver de manière sûre et sans aucune ambiguïté le bon fichier.

Ma réalisation

Je commence tout de suite à vous informer que je ne mettrai pas le code en ligne, pour la simple et bonne raison que, comme nous avons abandonné le projet Joomla, ce code était certes fonctionnel mais en mode debug. Il continue à renvoyer des tas d'informations totalement inutiles, c'est la raison pour l'accueil cet article est placé dans cette nouvelle rubrique analyse.

La manière de procéder.

Pour commencer mon analyse virgule je me suis rendu compte qui y avait deux grande méthode pour monnaie Amiens ce projet point la première, c'est de lycée l'ensemble des articles, au moyen d'une requête esprit par exemple, et de passer chacun des contenus de chaque article pour rechercher, au moyen d'une expression rationnelle, le contenu qui m'intéresse, c'est-à-dire le lien hypertexte vers le fichier. Ce lien est en un lien relatif, il a eu reconcatener au début, le domaine du serveur. Bien que cette méthode soit fonctionnel, je pense que elle se heurte à un souci : sa non optimisation du code.
La deuxième solution, c'est d'effectuer la recherche sur le serveur, dans le répertoire qui contient l'ensemble des documents, afin de générer une liste récursive des fichiers.  Cette liste, je la stock dans un tableau. Ce tableau a une dimension contient dans chacune des cellules, l'URL relative des fichiers. Ainsi, il suffit de parcourir ce tableau afin de retrouver la Souchez correspondant à la Souchez du nom de fichier, et d'afficher la cellule du tableau à l'utilisateur. 

Paramètres

Jusque-là, le principe théorique est fonctionnel. Mais alors, avez-vous me dire, à partir du nom de fichier que tu cherches, comment la donnes-tu en pâture à ton programme ?
La réponse est simple, mais surtout correspond aussi à un autre besoin qui tombe sous le sens, pouvoir donner une URL fixe pour ses fichiers à rechercher point ainsi, grâce aux fonctions de PHP ou au moyen d'API auu sein de Joomla. Les deux manières de faire fonctionnent. Il est possible d'extraire dans un module, le fragment de l'URL correspondant à un éventuel paramètre, vous savez ce qui se trouve après le point d'interrogation dans une URL... ainsi que le paramètre de l'élément recherché et réglé. Je ne peux que vous renvoyer vers la RFC 3986 qui aborde le sujet.

Cas de plusieurs fichiers trouvés

 Je suis donc passé sur cette recherche directe sur le serveur. Cependant, et cela une erreur de ma part dans la mesure où les fichiers de départ n'étaient pas du tout rangés, des doublons subsistaient. Je m'en suis d'ailleurs rendu compte au cours du développement de ce petit module. Ainsi, pour contourner la problématique d'avoir trouvé plusieurs fichiers, ma philosophie était extrêmement simple :  premier trouvé, premier affiché.

Affichage des résultats

Désormais, mon "micro moteur de recherche" d'un fichier sur le serveur est fonctionnel. Il ne reste plus qu'à produire un affichage du résultat, avec les informations qui vont bien, comme le nom du fichier en entier, la sous-chaÏne trouv2e dans le nom du fichier, et bien entendu l'adresse URL (relative) à laquelle le fichier est stocké sur le serveur Joomla.
Mais surtout, car la problématique était bien là, transmettre à mes collègues qui gèrent ces URL dans l'application métier, une URL sous la forme paramètrée. 
Ainsi, suite aux évolutions du fichier, les fichiers dont les noms évoluent chronologiquement sous la forme suivante
  1. 20200508_typeFonctionnel_ID_ce-fichier-contient-les-information-sur-les-CPU.doc
  2. 20200509_typeFonctionnel_ID_ce-fichier-contient-les-information-sur-les-CPU.doc
  3. 20210508_typeFonctionnel_ID_ce-fichier-contient-les-information-sur-les-CPU.doc
  4. 20220108_typeFonctionnel_ID_ce-fichier-contient-les-information-sur-les-CPU.doc
  5. ...
AInsi, en recherchant la sous chaine "_typeFonctionnel_ID_ce-fichier-contient-les-information-sur-les-CPU" , sous chaine contenant un ID, le résultat sera forcément trouvé (il n'est pas possible que je fichier ne soit pas en ligne); Un seul résultat sera retourné.
Si éventuellement le documentaliste (moi) a mal travaillé, plusieurs résultats sont trouvés. J'ai codé le programme de manière à compter le nombre de résultats retournés. Au nombre de 1, le lien de téléchargement + le telechargement se lance, si plusieurs fichier sont trouvés, je propose à l'utilisateur un affichage d'une page avec les résultats, avec pour chacun d'entre eux un lien hypertexte permettant un téléchargement à l'utilisateur
 

 

 

Vous retrouverez ici tous mes articles explicatifs de mes concepts, mes résultats d'analyses techniques m'ayant permi d'aboutir à un fonctionnement de mes applicatifs très fonctionnel

Rapport sondage marche

Voici le rapport statistique du sondage (auquel vous pouvez toujours répondre) que j'ai lancé sur le sujet