arthur.bebou

Le site arthur.bebou.netlib.re - retour accueil

git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |

commit d55d9088db2aca7bd3f2902184477745f8cae3b0
parent 4a28eaf998fff46fcb17ac5b8dd12c6edb92e9a0
Auterice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Mon, 10 Jun 2024 13:07:29 +0200

Maj conjugaison

Parce qu'on dépend plus du site

Diffstat:
Mcontents/conjugaison/index.sh | 146+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 94 insertions(+), 52 deletions(-)

diff --git a/contents/conjugaison/index.sh b/contents/conjugaison/index.sh @@ -5,7 +5,6 @@ description: [Insérer nom ici] est une interface sobre pour consulter les conju publication: 2023-02-25 sectionmd: main - > Cet outil ne dispose pas encore d'un nom. Si vous avez une idée je suis > preneur. @@ -24,7 +23,7 @@ différente à chaque fois. Bref, c'est compliqué. Quelqu'un du projet Bitreich avait pour projet d'interfacer tout un tas de site web. L'idée est de pouvoir obtenir un service similaire voir équivalent mais à -travers des interfaces plus sobres, plus respectueuses de la vie privée , plus +travers des interfaces plus sobres, plus respectueuses de la vie privée, plus performantes, plus accessibles. Un exemple est le site [idiotbox](https://codemadness.org/idiotbox) qui interface la recherche youtube. @@ -36,28 +35,44 @@ bon exemple pour écrire un article. ### Interface web -TODO, installer le cgi et faire un formulaire web +Il n'y en a pas. + +### Interface cli via internet + +L'outil est disponible sur le port 2222 du serveur bebou.netlib.re. Si vous +vous y connectez avec netcat en faisant `nc bebou.netlib.re 2222` vous +obtiendrez un prompt depuis lequel vous pouvez lancer la commande `conjuguer` +ou `c` : -### Interface cli + nc bebou.netlib.re 2222 + help ou h pour obtenir de l'aide + c manger + Indicatif Présent je mange + Indicatif Présent tu manges + Indicatif Présent il mange + Indicatif Présent nous mangeons -TODO, installer le cgi sur le serveur +Plus de détails dans [cet article](/services-sobres/). ### En local -Pour diverses raisons (ne pas dépendre de la disponibilité du service, parce -que vous utilisez plus les cli que les gui, que vous voulez l'interfacer avec -un éditeur de texte etc) il pourrait être souhaitable d'avoir le même usage via -une interface en ligne de commande. Pour cela vous pouvez télécharger les -sources qui permettent de faire fonctionner l'interface web +Pour ne pas dépendre de la disponibilité du service ou le modifier à votre +sauce il pourrait être souhaitable d'avoir le même usage via en local. Pour +cela vous pouvez télécharger les sources qui permettent de faire fonctionner +l'interface web - git clone git://katzele.netlib.re/conjugaison-light + git clone git://bebou.netlib.re/conjugaison-light + +Les fichiers contentant les terminaisons sont disponibles dans [cette archive +(2,2Mo)](/conjugaison/verbes.tar.gz)[^1]. L'usage de l'outil est détaillé dans le README du projet. -Avec le script cgi nous pouvons, dans une interface en ligne de commande, -écrire : +Après avoir modifier le script `cgi` pour y renseigner l'endroit où se trouvent +les fichiers des terminaisons nous pouvons, dans une interface en ligne de +commande, écrire : - cgi [verbe] [mode] [temps] [personne] + ./cgi [verbe] [mode] [temps] [personne] et ne récupérer que l'information que l'on souhaite. Aucun clique inutile, pas besoin de scanner un trop plein d'information. Par exemple : @@ -65,14 +80,11 @@ pas besoin de scanner un trop plein d'information. Par exemple : cgi prendre subjonctif présent je Subjonctif Présent que je prenne -Vous pouvez aussi faire tourner un serveur web sur votre pc et utiliser le -CGI. - ## Fonctionnement -Cet outil dépend du site [conjugaisonfrancaise](https://conjugaisonfrancaise.com). -Il parse la page de ce site correspondant au verbe demandé pour stocker -le résultat sous une forme +Le site [conjugaisonfrancaise](https://conjugaisonfrancaise.com) a été utilisé +pour récupérer les données. J'ai scrapé la totalité des verbes. +Le format qui en résulte est sous la forme : Prendre Indicatif @@ -82,44 +94,74 @@ le résultat sous une forme il pr{end} ... -Il tabule ensuite ces données pour en faire un TSV +Ce format a le mérite d'être assez peu redondant. Pour pouvoir le filtrer plus +facilement et obtenir un affichage plus lisible le script `cgi` inclu une +fonction qui le tabule : Indicatif Présent je pr{ends} Indicatif Présent tu pr{ends} Indicatif Présent il pr{end} ... -Qui peut être facilement filtré si l'on précise les valeur des champs comme vu -précédemment avec les interfaces +Ce peut être facilement filtré si l'on précise les valeur des champs comme vu +précédemment avec les interfaces : Subjonctif Présent que nous pr{enions} -Puis imprimé dans le console ou servi sous forme d'HTML. Dans la console il est -possible d'ajouter une étape pour colorier la terminaison. Chacune de ces -étapes est le résultat de l'ingestion de l'étape précédente par un nouveau -script. L'outil est donc assez modulaire si vous avez les sources. Vous pouvez -ne pas filtrer, conserver la version non tabulée ou faire votre propre script de -mise en page. - -### Impact sur la consommation de données - -Les pages du site que l'on a choisi sont relativement petites pour les standards -du web moderne. Elles vont de 150Ko à 200Ko. Le premier format de donnée que l'on -génère avec nos scripts pèse entre 1,6Ko et 2,5Ko. Nous sommes donc sur une diminution -de la quantité de donnée d'un facteur 100. Le format tabulé tourne autour du double ou -du quadruple entre 3,5Ko et 4Ko. Finalement, le format filtré peut descendre jusqu'à -quelques octets selon la finesse de la recherche. Si l'on veut servir les données -en HTML cela rajoutera environ 1Ko sur un retour non filtré. Pour la console -les séquences d'échappement pour colorier les terminaisons ajouteront 1Ko également. - -Que ce soit la version web ou cli, il est possible d'enregistrer le premier -format de donnée pour ne plus avoir à requêter le site source si l'on a à -nouveau besoin du même verbe. La première requête fera donc transiter au plus -`200Ko + 5Ko = 205Ko` soit plus qu'une visite directe sur le site source. -Cependant toutes demandes successives du même verbe ne transféreront plus que -5Ko ou moins soit au plus 2,5% de la quantité de donnée initiale. Simplement en -retirant les données inutiles, en permettant le filtrage et avec un système de -cache rudimentaire. Si suffisamment de personnes utilisent le service en ligne, -l'économie de donnée peut s'avérer assez conséquente. A défaut ce rapide calcul -démontre qu'en repensant les interfaces, sans même forcément sortir du web, -nous pouvons obtenir le meilleur de plusieurs mondes. +Dans la console il est possible d'ajouter une étape pour colorier la +terminaison. Chacune de ces étapes est le résultat de l'ingestion de l'étape +précédente par un nouveau script. L'outil est donc assez modulaire si vous avez +les sources. Vous pouvez ne pas filtrer, conserver la version non tabulée ou +faire votre propre script de mise en page. + +### Sobriété numérique + +#### La taille des pages et la bande passante + +Les pages du site que l'on a choisi sont relativement petites pour les +standards du web moderne. Elles vont de 150Ko à 200Ko. Le premier format de +donnée que l'on génère avec nos scripts pèse entre 1,6Ko et 2,5Ko. Nous sommes +donc sur une diminution de la quantité de donnée d'un facteur 100. Le format +tabulé tourne autour du double ou du quadruple entre 3,5Ko et 4Ko. Finalement, +le format filtré peut descendre jusqu'à quelques octets selon la finesse de la +recherche. Si l'on veut servir les données en HTML cela rajoutera environ 1Ko +sur un retour non filtré. Pour la console les séquences d'échappement pour +colorier les terminaisons ajouteront 1Ko également. + +La totalité de la base de donnée stockées sous forme de texte au format +précédemment décrit comprend 7370 fichiers (verbes), 935991 lignes pour un +total de 16Mo. Sa forme compressée dans un tarball avec gzip prend 2,2Mo. +Compressée la totalité des données de ce site prennent donc la place de 10/15 +pages HTML de conjugaisonfrancaise.com. Autrement dit en téléchargeant la +totalité de la base en local on amorti notre téléchargement en max 15 requêtes. + +A noter qu'il est possible de faire beaucoup mieux en utilisant l'idée de +verbes "modèles". Il suffirait de stockers ces modèles et d'appliquer +leurs terminaisons aux radicaux des verbes demandés. Cela dit du développement +serait nécessaire. Cette approche pourrait être pertinente dans ces contextes +où le stockage est extrêmement contraint et les 16Mo de notre base excessifs. + +#### Soutenabilité et maintenance + +Je trouve ce point plus intéressant que les calculs comptables d'octets. Je ne +vais pas rentrer dans les détails ici, je liste donc simplement les points qui +me semble pertinents pour cette discussion : + + * nécessite internet ou pas + * nombre de dépendances + * stabilité de ces dépendances + * nombre de lignes de codes de l'outil et des dépendances + * nombre de personnes dans les projets de ces dépendances + +En l'occurence le script cgi requiert : + + * un système unix + * les versions gnu de : sed, awk, cat, grep, column, tr + * dash + * netcat-openbsd pour sa version en ligne + +Sans me lancer dedans j'imagine aisément que ma solution performe bien mieux +sur l'ensemble des critères que les sites de conjugaison habituels. A voir +maintenant ce que cela implique pour un exemple aussi trivial. + +[^1]: `tar xvzf verbes.tar.gz` créera un dossier `verbes` avec tous les fichiers dedans. Attention ça fait 50Mo et 7370 fichiers.