arthur.bebou

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

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

index.sh (7047B)


      1 #! page
      2 title: Un outil pour la conjugaison
      3 author: Arthur Pons
      4 description: [Insérer nom ici] est une interface sobre pour consulter les conjugaisons d\'un verbe
      5 publication: 2023-02-25
      6 sectionmd: main
      7 
      8 > Cet outil ne dispose pas encore d'un nom. Si vous avez une idée je suis
      9 > preneur.
     10 
     11 Si vous êtes comme moi vous avez du mal avec les terminaisons des verbes en
     12 français. Est-ce qu'il y a un s silencieux, où est l'accent circonflexe,
     13 est-ce que ça prend un ou deux l ? Puisque je n'ai pas de Bescherelle sous
     14 la main (peut-être devrais-je), je cherche "[verbe] conjugaison" dans un
     15 moteur de recherche, je clique généralement sur le premier résultat, je
     16 refuse les cookies, la newsletter, je cherche le temps et la personne
     17 que je veux avec les yeux. C'est assez long et fastidieux, le site le
     18 mieux référencé n'est pas toujours le même et je dois soit chercher celui
     19 que je préfère dans la liste des résultats ou m'adapter à une interface
     20 différente à chaque fois. Bref, c'est compliqué.
     21 
     22 ## Des interfaces alternatives et leurs usages
     23 
     24 Quelqu'un du projet Bitreich avait pour projet d'interfacer tout un tas de site
     25 web. L'idée est de pouvoir obtenir un service similaire voir équivalent mais à
     26 travers des interfaces plus sobres, plus respectueuses de la vie privée, plus
     27 performantes, plus accessibles. Un exemple est le site
     28 [idiotbox](https://codemadness.org/idiotbox) qui interface la recherche youtube.
     29 
     30 J'ai conscience qu'avec une interface pour alléger et simplifier le cas d'usage
     31 décrit précédemment on ne s'attaque ni à un symbole du capitalisme de
     32 surveillance ni à un grand émetteur de carbone. Cela dit l'implémentation est
     33 relativement simple et m'est personnellement utile. Cela en fait, j'espère, un
     34 bon exemple pour écrire un article.
     35 
     36 ### Interface web
     37 
     38 Il n'y en a pas.
     39 
     40 ### Interface cli via internet
     41 
     42 L'outil est disponible sur le port 2222 du serveur bebou.netlib.re.  Si vous
     43 vous y connectez avec netcat en faisant `nc bebou.netlib.re 2222` vous
     44 obtiendrez un prompt depuis lequel vous pouvez lancer la commande `conjuguer`
     45 ou `c` :
     46 
     47     nc bebou.netlib.re 2222
     48     help ou h pour obtenir de l'aide
     49     c manger
     50     Indicatif     Présent           je mange
     51     Indicatif     Présent           tu manges
     52     Indicatif     Présent           il mange
     53     Indicatif     Présent           nous mangeons
     54 
     55 Plus de détails dans [cet article](/services-sobres/).
     56 
     57 ### En local
     58 
     59 Pour ne pas dépendre de la disponibilité du service ou le modifier à votre
     60 sauce il pourrait être souhaitable d'avoir le même usage via en local. Pour
     61 cela vous pouvez télécharger les sources qui permettent de faire fonctionner
     62 l'interface web
     63 
     64 	git clone git://bebou.netlib.re/conjugaison-light
     65 
     66 Les fichiers contentant les terminaisons sont disponibles dans [cette archive
     67 (2,2Mo)](/conjugaison/verbes.tar.gz)[^1].
     68 
     69 L'usage de l'outil est détaillé dans le README du projet.
     70 
     71 Après avoir modifier le script `cgi` pour y renseigner l'endroit où se trouvent
     72 les fichiers des terminaisons nous pouvons, dans une interface en ligne de
     73 commande, écrire :
     74 
     75 	./cgi [verbe] [mode] [temps] [personne]
     76 
     77 et ne récupérer que l'information que l'on souhaite. Aucun clique inutile,
     78 pas besoin de scanner un trop plein d'information. Par exemple :
     79 
     80 	cgi prendre subjonctif présent je
     81 	Subjonctif Présent que je prenne
     82 
     83 ## Fonctionnement
     84 
     85 Le site [conjugaisonfrancaise](https://conjugaisonfrancaise.com) a été utilisé
     86 pour récupérer les données. J'ai scrapé la totalité des verbes.
     87 Le format qui en résulte est sous la forme :
     88 
     89 	Prendre
     90 	Indicatif
     91 	Présent
     92 	je pr{ends}
     93 	tu pr{ends}
     94 	il pr{end}
     95 	...
     96 
     97 Ce format a le mérite d'être assez peu redondant. Pour pouvoir le filtrer plus
     98 facilement et obtenir un affichage plus lisible le script `cgi` inclu une
     99 fonction qui le tabule :
    100 
    101 	Indicatif	Présent	je pr{ends}
    102 	Indicatif	Présent	tu pr{ends}
    103 	Indicatif	Présent	il pr{end}
    104 	...
    105 
    106 Ce peut être facilement filtré si l'on précise les valeur des champs comme vu
    107 précédemment avec les interfaces :
    108 
    109 	Subjonctif	Présent	que nous pr{enions}
    110 
    111 Dans la console il est possible d'ajouter une étape pour colorier la
    112 terminaison. Chacune de ces étapes est le résultat de l'ingestion de l'étape
    113 précédente par un nouveau script. L'outil est donc assez modulaire si vous avez
    114 les sources. Vous pouvez ne pas filtrer, conserver la version non tabulée ou
    115 faire votre propre script de mise en page.
    116 
    117 ### Sobriété numérique
    118 
    119 #### La taille des pages et la bande passante
    120 
    121 Les pages du site que l'on a choisi sont relativement petites pour les
    122 standards du web moderne. Elles vont de 150Ko à 200Ko. Le premier format de
    123 donnée que l'on génère avec nos scripts pèse entre 1,6Ko et 2,5Ko. Nous sommes
    124 donc sur une diminution de la quantité de donnée d'un facteur 100. Le format
    125 tabulé tourne autour du double ou du quadruple entre 3,5Ko et 4Ko. Finalement,
    126 le format filtré peut descendre jusqu'à quelques octets selon la finesse de la
    127 recherche. Si l'on veut servir les données en HTML cela rajoutera environ 1Ko
    128 sur un retour non filtré. Pour la console les séquences d'échappement pour
    129 colorier les terminaisons ajouteront 1Ko également.
    130 
    131 La totalité de la base de donnée stockées sous forme de texte au format
    132 précédemment décrit comprend 7370 fichiers (verbes), 935991 lignes pour un
    133 total de 16Mo. Sa forme compressée dans un tarball avec gzip prend 2,2Mo.
    134 Compressée la totalité des données de ce site prennent donc la place de 10/15
    135 pages HTML de conjugaisonfrancaise.com. Autrement dit en téléchargeant la
    136 totalité de la base en local on amorti notre téléchargement en max 15 requêtes.
    137 
    138 A noter qu'il est possible de faire beaucoup mieux en utilisant l'idée de
    139 verbes "modèles". Il suffirait de stockers ces modèles et d'appliquer
    140 leurs terminaisons aux radicaux des verbes demandés. Cela dit du développement
    141 serait nécessaire. Cette approche pourrait être pertinente dans ces contextes
    142 où le stockage est extrêmement contraint et les 16Mo de notre base excessifs.
    143 
    144 #### Soutenabilité et maintenance
    145 
    146 Je trouve ce point plus intéressant que les calculs comptables d'octets. Je ne
    147 vais pas rentrer dans les détails ici, je liste donc simplement les points qui
    148 me semble pertinents pour cette discussion :
    149 
    150   * nécessite internet ou pas
    151   * nombre de dépendances
    152   * stabilité de ces dépendances
    153   * nombre de lignes de codes de l'outil et des dépendances
    154   * nombre de personnes dans les projets de ces dépendances
    155 
    156 En l'occurence le script cgi requiert :
    157 
    158   * un système unix
    159   * les versions gnu de : sed, awk, cat, grep, column, tr
    160   * dash
    161   * netcat-openbsd pour sa version en ligne
    162 
    163 Sans me lancer dedans j'imagine aisément que ma solution performe bien mieux
    164 sur l'ensemble des critères que les sites de conjugaison habituels. A voir
    165 maintenant ce que cela implique pour un exemple aussi trivial.
    166 
    167 [^1]: `tar xvzf verbes.tar.gz` créera un dossier `verbes` avec tous les fichiers dedans. Attention ça fait 50Mo et 7370 fichiers.