Zest Writer un éditeur hors-ligne pour vos contenus ZdS

sortie de la 2.0.0 (03 aout 2020)

a marqué ce sujet comme résolu.

La prévisualisation en "temps réel" pour de vrai et sans surconsommation de votre CPU. Pour le coup, ça va plus vite que Atom

Cela pose vraiment un problème de performance ?

Je pose la question car sur mon éditeur que je suis en train de bidouiller j'ai aussi un affichage en temps réel via angular.js qui détecte les modifications du texte et appel la fonction de rendu (conversion du markdown en html+appel de mathjax). Et je n'ai jamais remarqué le moindre lag ou problème de performance, et je ne crois pas que ça puisse en poser à priori. Un test rapide me dit que je consomme entre 0% et 0.4% du processeur (I5 4200 U donc pas une foudre de guerre non plus…) ce qui me semble vraiment négligeable.

Est-ce que en python c'est vraiment différent et sur-consommateur de ressources ? Du coup comment tu fais ? Un rafraichissement à chaque fois que l'utilisateur presse une touche ?

J'ai hâte de tester la nouvelle version :)

+0 -0

Comment ?

En utilisant simplement une librairie qui fait le travail :) Je passe une chaine markdown à la fonction qui retourne une chaine html que je n'ai plus qu'a afficher dans une div.

On a parlé de debounce un peu plus haut.

Mais ce deboune pose un réel problème de performance ? Car j'avais cru comprendre que le rafraichissement toute les 5s était fait pour éviter de surcharger le CPU. En faire un 2 fois par seconde serait vraiment visible d'un point de vue performances ?

+0 -1

En utilisant simplement une librairie qui fait le travail

Du coup c'est pas du zmarkdown, OK, j'avais pas saisi.

Mais ce deboune pose un réel problème de performance ? Car j'avais cru comprendre que le rafraichissement toute les 5s était fait pour éviter de surcharger le CPU. En faire un 2 fois par seconde serait vraiment visible d'un point de vue performances ?

Pas pigé. Un "debounce" ça sert à ne pas invoquer plusieurs fois un même appel de fonction dans un temps donné, considérant que (fonctionnellement) ça n'a strictement aucun intérêt. Dans ce cas précis, si une autre touche a été pressé dans les 200ms (par exemple) qui suivent l'appui de la touche précédente, on attend que l'utilisateur ait "fini de taper" pour afficher la preview.

Ensuite pour les perfs ça dépend :

  • des perfs de Jython ou Py4j qui j'imagine doit être utilisé pour générer le rendu
  • des perfs de python-zmarkdown
  • du code (exemple : si on réinstancie un objet Jython à chaque appel de rendu, ça va pas le faire)
+0 -0

Pour répondre rapidement à Demandred, il faut savoir que le parseur que j'utilise est le même que celui du site (qui est codé en python) pour ne pas avoir de différence avec le rendu sur le site. Ce qui me coute quand même quelque chose d'embarquer un interpréteur python dans mon programme. Et donc je me dois de composer finement pour ne pas avoir de consommation CPU/Ram trop élevée.

Sinon, comme promis, aujourd'hui on a une nouvelle version : 0.2.0

Système d'exploitation Lien de téléchargement
Tous les systèmes Exécutable Jar (73 Mo)
Windows Exécutable 32 bits (176 Mo)
Windows Exécutable 64 bits (178 Mo)
Debian/Ubuntu/… Exécutables Deb (159 Mo)
Fedora/CentOS/etc Exécutables Rpm (182 Mo)
Linux Exécutables Linux (182 Mo)

Les apports de cette version par rapport à la précédente sont les suivants :

Correctifs
  • La correction bug du rendu des citations
Évolutions
  • Prévisualisation en "vrai" temps réel tout en minimisant la consommation
  • Nouveaux raccourcis clavier :
    • Navigation entre les onglets (Ctrl+Tab, Ctrl+Maj+Tab)
    • Mise en page : Ctrl+G (Gras), Ctrl+I (Italic), Ctrl+B(Barré), etc.
    • Action locales : Ctrl+S (sauvegarde)
    • Actions distantes : Ctrl+D (Download), Ctrl+U (Upload)
  • Rendu des formules mathématiques, physiques, chimiques,… grâce à Mathjax
  • Réduction du nombre de clic nécessaire pour télécharger ses contenus
  • Un easter egg

Vous avez bien lu, ce n'est pas encore Paques, mais un easter egg se cache dans cette version … saurez vous le trouver ?

Bonsoir firm1,

Très beau boulot que tu as fait là !

Plusieurs remarques :

  • Lorsque j'ai essayé de lancer le jar :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$ java -jar zest-writer-0.2.0.jar
Exception in Application constructor
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
        at com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Unable to construct Application instance: class com.zestedesavoir.zestwriter.MainApp
        at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(Unknown Source)
        at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(Unknown Source)
        at com.sun.javafx.application.PlatformImpl.lambda$null$173(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(Unknown Source)
        at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at com.sun.glass.ui.win.WinApplication.lambda$null$148(Unknown Source)
        ... 1 more
Caused by: java.lang.NoClassDefFoundError: org/apache/http/protocol/HttpContext
        at com.zestedesavoir.zestwriter.MainApp.<init>(MainApp.java:51)
        ... 13 more
Caused by: java.lang.ClassNotFoundException: org.apache.http.protocol.HttpContext
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 14 more
Exception running application com.zestedesavoir.zestwriter.MainApp

  • Pour les indices de difficulté, ce serait bien de savoir à quoi ça correspond, en l'état on ne sait pas ce qu'il faudrait corriger. Aussi, les sections apparaissent en désordre dans le rapport.

  • Petit souci d'encodage avec certains dialogues chez moi :

Image utilisateur

  • Le menu contextuel ne fonctionne que sur les sections et pas sur les sous-sections.

  • Je pense que ça a déjà été dit, mais pouvoir ouvrir plusieurs contenus à la fois serait un plus.

  • Lors du drag'ndrop, l'affichage se comporte parfois bizarrement.

Image utilisateur

  • Si je clique 2 fois sur la section complète, j'arrive à ouvrir un nouvel onglet (qui ne correspond à priori à rien).

  • Pour le type de bloc, inutile d'ouvrir un nouveau dialogue, une liste déroulante devrait suffire.

  • Lorsque je saisis du texte, si j'appuie sur Alt+Gr pendant la saisie pour accéder à certains caractères, je perd le focus qui passe sur le menu, ou je me retrouve avec des caractères parasites (par ex. ~~ pour avoir voulu refermer une accolade).

+3 -0

Bonsoir firm1,

Très beau boulot que tu as fait là !

yoch

Merci.

Lorsque j'ai essayé de lancer le jar : […]

Un peu problématique ça. Et pourtant toutes les libs sont dans le fatJar, je vais voir d'ou vient le souci en journée.

Pour les indices de difficulté, ce serait bien de savoir à quoi ça correspond, en l'état on ne sait pas ce qu'il faudrait corriger.

Ce sont des indices de lisibilité d'un texte mis en place par des linguistes pour dire à l'auteur d'un contenu si la construction de ses phrases est un peu trop complexe. Ce qu'il faut corriger n'est jamais très explicite dans ce cas. Si on écrit par exemple un contenu à destination d'un public Lycéen, il faut éviter des phrases trop longues, éviter d'utiliser trop de mot avec beaucoup de syllabes, bref, je te renvoi sur la page wikipédia.

Pou le moment je réfléchi encore à comment l'indiquer à l'utilisateur de l'application. Une définition suffira t-elle ?

Pour le reste de tes remarques, j'en fais des issues sur le dépôt du projet (comme pour toutes les autres remarques). Je vais en profiter pour définir tout ce qui doit rentrer dans la release de dimanche prochain.

Si on écrit par exemple un contenu à destination d'un public Lycéen, il faut éviter des phrases trop longues, éviter d'utiliser trop de mot avec beaucoup de syllabes, bref, je te renvoi sur la page wikipédia.

Collégien, plutôt. Un public lycéen n'a pas besoin de restrictions de styles particulières par rapport à un public adulte.

Si on écrit par exemple un contenu à destination d'un public Lycéen, il faut éviter des phrases trop longues, éviter d'utiliser trop de mot avec beaucoup de syllabes, bref, je te renvoi sur la page wikipédia.

Collégien, plutôt. Un public lycéen n'a pas besoin de restrictions de styles particulières par rapport à un public adulte.

SpaceFox

C'est pourtant bien le cas, si on en crois le résultat des recherches sur le sujet. Certains indices de lisibilité associe une tranche à un certain niveau scolaire (certes Américain, mais l'idée est là), tandis que d'autres vont associer la tranche à un type de littérature (discours politique, journaux, Magazine style Voici/Elle/Qui/…, etc.)

Je ne suis pas super convaincu, pour 2 raisons :

  1. Ces indices de lisibilité sont à peu près inutilisés en France, donc on peut se poser la question de leur fiabilité avec la langue française.
  2. C'est une question de pédagogie : les lycéens ont quand même un bon niveau de lecture et de compréhension écrite (cf le bac en France, tout ça). Si ton texte est écrit dans un style (parce que c'est ça que l'indice mesure) si compliqué que les lycéens ont des difficulté à le comprendre (et ce quel que soit le niveau du contenu), c'est probablement que ton style, c'est de la merde. Parce qu'il est compliqué au point de parasiter le message ; et dans un contenu sur ZdS l'important est le message1.

  1. Bien que personnellement je pense que ça s'applique aussi aux textes littéraires : un texte au style compliqué ( ce qui est différent de riche est généralement lourd à lire et tient souvent de la branlette intellectuelle, parfois de l'incompétance. 

Si ton texte est écrit dans un style (parce que c'est ça que l'indice mesure) si compliqué que les lycéens ont des difficulté à le comprendre (et ce quel que soit le niveau du contenu), c'est probablement que ton style, c'est de la merde.

Tout dépend du public cible. Je rappelle la définition du test de lisibilité utilisée ici : "l'évaluation du degré de difficulté éprouvé par un lecteur essayant de comprendre un texte"

On peut avoir un niveau Bac (et donc un bon niveau de lecture et de compréhension écrite), mais avoir plus de mal avec une article de loi tel que celui-ci :

Le régime d'assurance prévue à l'article L. 143-11-1 est mis en œuvre par une association créée par les organisations nationales professionnelles d'employeurs les plus représentatives et agréée par le ministre chargé du travail.

Je rappelle que c'est un indice, basé sur des études statistiques. Comme n'importe quel indice, il donne une tendance. Pour info il y a des travaux qui ont été menés pour l'adaptation de l'indice de Flesch aux population Française.

Typiquement la citation de l'article ci-dessous, a un indice de Flesch de 44, identifié comme d'un niveau stylistique "Complexe", associé à un type de magazine "Pédagogique" et d'un niveau scolaire "1er cycle universitaire en France".

Yep, je viens d'essayer ton outil. Selon lui, un texte de Balzac est trop compliqué pour un lycéen (3 premiers paragraphes de « La comédie humaine, tome 1 » trouvés sur gutenberg.org, Indice de Flesch : 43.9 / Nombre moyen de mots par phrase : 30.34 / Nombre moyen de syllabes par mot : 1.56). Par contre, le chapitre 1 des Misérables de Victor Hugo, a un Indice de Flesch : 62 (c'est donc de la presse magasine et donc pas de la littérature de qualité, semble-t-il). Pire encore pour « Le rouge et le noir) (Indice de Flesch : 64.4).

Bref, c'est un peu de la blague ces indices. Mon point de vue, c'est que tu te fatigues pour rien à implémenter ça parce que c'est inutile.

Je ne serais pas aussi catégorique que toi, mais oui, il y a clairement des cas ou on peut se poser des questions. C'est pour ça que j'ai implémenté juste deux indices (dont l'un est celui que l'on retrouve dans Microsoft Office ) basé sur deux notions différentes.

firm1

Ce test est encore plus faux, puisque les constantes utilisées dans le calcul de l'indice n'ont pas été mises à jour pour le cas spécifique du français, si j'en crois la doc. Or, le français n'a ni les mêmes structures de phrases, ni les mêmes tailles de mots que l'anglais.

Personnellement je trouve ça bien les indices. Il ne faut simplement pas les prendre au pied de la lettre mais simplement comme un indicateur. Si votre texte se veut pédagogique et accessible, un indice médiocre devrait vous indiquer que votre style est à revoir.

C'est un indice sur la forme, il ne garantie en rien de la qualité littéraire ou de la compréhension du texte. C'est juste que toutes choses égales par ailleurs un texte avec un bon indice sera plus facile à lire.

Personnellement et pour parler de ce que je connais, en économie les livres de cours traduit en français et écris par des américains sont toujours agréable à lire et composé de phrases courtes et simples. Alors que les livres français (écrit par des français) vont être plus lourd, utiliser des effets de style et des tournures compliquées. Ce qui rend la lecture moins facile. Ces indices ont donc à mon sens une certaine validité.

+5 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte