Lerno est en fin de phase de test. Les données saisies peuvent être perdues et divers bogues subsistent probablement. Le contenu qui suit est à l’état de brouillon.
Lerno est une application pour apprendre avec la méthode de la répétition espacée. « Lerno » signifie « Apprentissage » en espéranto.
Les données sont stockées dans le navigateur utilisé (via IndexedDB). Elles peuvent être gérées depuis l’application.
Un jeu contient des cartes. Lancer une session relative à un jeu permet de réviser aléatoirement les cartes à revoir de ce jeu.
Les jeux peuvent être groupés, grâce au champ « Groupe ». Un groupe permet de catégoriser des jeux et de lancer une session sur tous les jeux du groupe.
Grâce au champ « Style global des cartes », présent lors de la création ou de l’édition d’un jeu, les cartes d’un jeu sont personnalisables avec des règles CSS. Une règle CSS se compose d’un sélecteur (élément devant être stylé) et de paires clé:valeur, comme ceci :
sélecteurA {clé1: valeur1; clé2: valeur2; …}
sélecteurB {clé1: valeur1; clé2: valeur2; …}
Par exemple, ceci centre et agrandit le texte du recto et du verso :
.card {text-align: center; font-size: 1.3em;}
Voici les sélecteurs importants présents :
.card : recto et verso de la carte.front : recto de la carte.back : verso de la carteLe balisage léger insérable dans chaque carte génère du HTML ayant des sélecteurs, indiqués plus bas dans la section Balisage léger.
Le HTML aussi permet d’ajouter des sélecteurs pour la mise en forme du contenu.
L’écriture des cartes se fait en utilisant du texte brut, un balisage léger ou du HTML. Tout cela peut être mélangé au sein d’une même face. Malgré toutes les possibilités offertes, il faut garder à l’esprit que le but est de mémoriser, et non de perdre du temps à mettre en forme plus que nécessaire.
Le balisage met en forme rapidement sans connaissance du HTML. Lerno le convertit en HTML. C’est le moyen le plus simple et léger de créer des cartes. Entre parenthèses se trouve pour chaque balise le sélecteur HTML employé. Il peut être utilisé dans le champ « Style global des cartes » lors de la création ou de l’édition d’un jeu.
**texte gras**. Astérisques. (strong)//texte en italique//. Barres obliques. (em),,indice,,. Virgules. (sub)^^exposant^^. Accents circonflexes. (sup)||texte surligné||. Barres verticales. (mark)``code``. Accents graves. (code)L’humain possède ??? os. 3 points d’interrogation. (.cloze)++grand++. 2 plus. (.big)((url)) ou ((url|texte du lien)). Paires de parenthèses, ouvrantes puis fermantes, et barre verticale pour séparer le lien du texte à afficher. (a)((url)) ou ((url|largeur en pixels)). Paires de parenthèses, ouvrantes puis fermantes, et barre verticale pour séparer le média de sa largeur. Exemple : ((https://diatomee.name/code/lerno/welcome.svg|500)). La fin de l’URL doit se terminer par une de ces extensions, pour ne pas considérer le média comme un simple lien :
svg, jpg, jpeg, png, gif, webp, avif, tiff, bmp, heic (img),mp3, wav, ogg, oga, m4a, aac, flac (audio),mp4, webm, mov, avi, mkv, flv (video).[[formule]] ou [[[formule]]]. Paires de 2 crochets, ou 3 pour un affichage en bloc. Lerno utilise KaTeX, une superbe bibliothèque de composition de mathématiques. Les formules s’écrivent en LaTeX (.katex ou .katex-display).{{{code}}}. Paires de 3 accolades. Lerno utilise Nomnoml, un très bon outil pour générer des diagrammes UML à partir de texte (.nomnoml).Comme il est impossible de tout faire avec le balisage léger, le HTML peut parfois servir. Voici les principaux cas d’usage du HTML.
cjk. Exemple : <cjk>水曜日</cjk>.Pour aller plus loin en HTML, voici un guide rapide et pratique.
Le HTML rendu par Lerno est purifié de tout code potentiellement dangereux, grâce à DOMPurify, qui semble extrêmement fiable. Il enlève notamment le JavaScript et les <iframe>. Cela permet le partage de jeux entre utilisateurs, sans faille de sécurité à l’import. Cependant, des styles « abusifs » peuvent casser l’interface et rendre l’application difficilement utilisable. Ce problème peut être résolu en éditant ou en supprimant les cartes problématiques (dans Lerno si possible, sinon via le fichier de données).
Lerno propose d’évaluer chaque carte.
Suite à l’évaluation, les valeurs suivantes sont recalculées :
Lorsqu’une carte est revue en retard, deux valeurs supplémentaires sont utilisées :
R = temps écoulé depuis la dernière revue ÷ I (R = 1 quand la carte est revue à temps).
Voici les formules appliquées en fonction de l’évaluation faite, pour obtenir le nouvel intervalle (I') :
I' = I × 0.15, avec I' arrondi et borné entre 1 et 14
I' = 1 (la carte revient demain)
I' = 3 (la carte revient dans 3 jours)
I' = I × e × B, avec I' arrondi et borné à 365 jours (le calcul utilise la facilité actuelle, avant sa mise à jour en e')
La nouvelle facilité (e') évolue aussi en fonction de l’évaluation. Elle reste bornée entre 1.3 et 3 :
e' = e − 0.2e' = e − 0.05e' = e + 0.1Le bonus de retard (B) dépend progressivement du retard. Il est nul lorsque la carte est revue à temps et augmente jusqu’à son maximum lorsque le retard atteint deux fois l’intervalle prévu.
La formule dépend de l’évaluation :
B = 1 + 0.03 × (R − 1)B = 1 + 0.10 × (R − 1)Par exemple, pour un intervalle prévu de 15 jours :
Il ne convient pas de chercher à obtenir le bonus. Il n’est là que pour rendre compte d’une réalité : si je trouve une carte facile alors que je la vois en retard, c’est que je peux espacer sa prochaine revue un peu plus.
Le code source de Lerno est téléchargeable (code source). En ayant Node.js installé, il faut ouvrir un terminal à la racine du dossier et lancer :
node gen.mjs
Un dossier public sera généré. Il contiendra l’application utilisable. Ce dossier peut être mis n’importe où dans l’ordinateur. Il suffit ensuite d’ouvrir index.html dans un navigateur et de marquer la page (favoris) pour y accéder facilement.
Installer Lerno permet d’utiliser des médias locaux dans les cartes et de ne pas recevoir les éventuelles mises à jour du logiciel, ce qui peut être pratique s’il te convient en l’état.
Lerno approche la fin de la phase de tests. Pour toutes suggestions ou problèmes, écris-moi.