Chère de Prince

Un recueil collaboratif d'énoncés mathématiques

a marqué ce sujet comme résolu.

Merci beaucoup victor, j'ai commencé à indenter un fichier, j'aimerais savoir ce que tu en penses.

C'est vraiment pas top. Je suis pas un utilisateur d'emacs, mais je sais qu'emacs peut indenter automatiquement du JavaScript, n'importe quel éditeur de code peut faire ça, que ce soit emacs, vim, sublime, atom, ou vraiment n'importe quel autre éditeur.

Regarde: 1, 2, 3. C'est que quelques exemples, vraiment c'est pas lisible.

Normalement en une commande emacs tu peux régler ça pour tout le fichier sans t'embêter. Aussi, ne mélange pas les tabs et les espaces.

Je vais continuer à corriger l'indentation sur les autres fichiers, il y avait un problème entre le nombre d'espaces d'une tabulation sur Github et emacs.

Généralement en JavaScript on indente avec 2 espaces, jamais de tabs. Aussi, généralement on met des ;. C'est pas obligatoire, mais vu que t'es pas expert en JavaScript je te recommande vraiment de mettre des ;. Tu peux te permettre de programmer en JavaScript sans ;, mais ça demande de bien connaitre le langage.

  • Le temps de chargement est très long, mais le serveur est chez moi et la connexion est plutôt mauvaise. Je pense que le problème vient principalement de là. Après les fichiers statiques sont effectivement servis par le serveur node.js, mais production.min.js prend 135ms à charger en local sans le cache. Je ne sais pas, si on peut en déduire quelque chose.

Non, on ne peut pas en déduire grand chose. Effectivement si le serveur est chez toi et que ta bande passante montante est pas top, servir les assets statiques avec nginx va pas résoudre grand chose.

  • Tu pointes un problème, que je n'avais pas encore considéré. Tu as raison le graphe est chargé à travers une websocket et c'est lent, même en local. Mais le graphe n'est pas statique, il suit l'évolution de la base de données. Si une entrée est ajoutée, un sommet apparaîtra sur le graphe.

D'accord, du coup je ne comprends pas bien. Quand je regarde ton site, le graphe ne change pas, rien n'apparait ou disparait. La base de donnée est modifiée à quelle fréquence ? Est-ce que des actions utilisateur peuvent modifier la DB ? Seulement toi ?

Si le graphe en base de donnée n'est pas modifié en permanence, générer le graphe à chaque visite n'a pas de sens. Tu peux simplement le garder en cache côté serveur et invalider le cache dès que la base de donnée change. Regarde :

  1. Un visiteur A va sur ton site
  2. Node regarde si le cache est valide et contient le graphe, c'est pas le cas donc il génère le graphe, le met dans le cache et l'envoie à A.
  3. B va sur le site
  4. Node regarde si le cache est valide et contient le graphe, c'est le cas dont il fout la paix à la base de donnée et envoie le graphe depuis le cache (super rapide).
  5. Un utilisateur modifie le graphe, ça appelle la fonction modifierGraphe(), qui change le contenu de la base de donnée et indique que le cache n'est plus valide.
  6. C va sur le site
  7. Node regarde si le cache est valide et contient le graphe, c'est pas le cas, etc, t'as compris l'histoire

Mais il pourrait être chargée par une autre voie que les sockets, et être mis à jour par eux. Et il pourrait être placé dans une variable, mais est-ce que ça change quelque chose par rapport à un appel à la base de données ?

Oui.

Là où je sens que MongoDb n'en peux plus, ce n'est au chargement de la page, mais lorsqu'un élément est mis à jour. Il peut mettre jusqu'à plusieurs secondes, uniquement pour la commande update, sans le traitement des données.

Peux-tu montrer le code qui fait cet update ? Aussi, peux-tu m'expliquer la différence que tu fais entre mettre à jour un élément et traitement des données ?

+0 -0

@saroupille

Si j'ai un peu de temps, j'irai regarder. Le truc, c'est que lorsque tu souhaites formaliser complètement les mathématiques, tu te retrouves à devoir démontrer beaucoup plus de lemmes que ce qui serait fait dans la littérature habituelle.

Je me doute bien, qu'il faut avoir plein de raisonnements enregistrés. Et je trouve ça, plutôt technique et peu intéressant en soi. Donc un assistant de preuve serait franchement utile ! :)

Au niveau des dépendances, une commande devrait pouvoir te les générer encore faut-il la trouver. Par contre, il faudra faire la correspondance à la main entre le nom des lemmes/théorèmes dans Coq, et ceux que tu veux avoir dans ton graphe. A voir vers quoi tu souhaites mener ton projet.

Tu veux dire qu'il y a déjà tout plein de théorèmes qui sont décrits formellement quelque part, dans un langage d'assistant de preuves ? Avec leur preuve ? Parce que si c'est le cas, ça m'intéresse énormément ! Le but du projet est de faire une plateforme avec des énoncés mathématiques pour les rattacher à du contenu en rapport, alors ça tomberai à pic ;).

@victor

C'est vraiment pas top. Je suis pas un utilisateur d'emacs, mais je sais qu'emacs peut indenter automatiquement du JavaScript, n'importe quel éditeur de code peut faire ça, que ce soit emacs, vim, sublime, atom, ou vraiment n'importe quel autre éditeur.

Ha oui, tu as clairement raison. J'ai fait une erreur, je t'ai envoyé un lien vers une ancienne branche, donc voici un lien vers la branche principale.

Non, on ne peut pas en déduire grand chose. Effectivement si le serveur est chez toi et que ta bande passante montante est pas top, servir les assets statiques avec nginx va pas résoudre grand chose.

Pour le moment, je compte rester dans cette situation un peu précaire. On verra si je migre vers quelque chose de plus rapide par la suite.

D'accord, du coup je ne comprends pas bien. Quand je regarde ton site, le graphe ne change pas, rien n'apparait ou disparait. La base de donnée est modifiée à quelle fréquence ? Est-ce que des actions utilisateur peuvent modifier la DB ? Seulement toi ?

La fréquence de modification est de quelques modifications par jour, plutôt faible. J'espère que ça ne le restera pas. Les utilisateurs inscrits peuvent ajouter, modifier du contenu dans le graphe. Tu peux d'ailleurs t'inscrire ici.

Si le graphe en base de donnée n'est pas modifié en permanence, générer le graphe à chaque visite n'a pas de sens. Tu peux simplement le garder en cache côté serveur et invalider le cache dès que la base de donnée change. Regarde :

  1. Un visiteur A va sur ton site
  2. Node regarde si le cache est valide et contient le graphe, c'est pas le cas donc il génère le graphe, le met dans le cache et l'envoie à A.
  3. B va sur le site
  4. Node regarde si le cache est valide et contient le graphe, c'est le cas dont il fout la paix à la base de donnée et envoie le graphe depuis le cache (super rapide).
  5. Un utilisateur modifie le graphe, ça appelle la fonction modifierGraphe(), qui change le contenu de la base de donnée et indique que le cache n'est plus valide.
  6. C va sur le site
  7. Node regarde si le cache est valide et contient le graphe, c'est pas le cas, etc, t'as compris l'histoire

Ok, le graphe est mis à jour sur la base de données à chaque fois qu'une modification est effectuée sur le graphe. Je vais essayer de mettre en place un cache pour le graphe.

Peux-tu montrer le code qui fait cet update ? Aussi, peux-tu m'expliquer la différence que tu fais entre mettre à jour un élément et traitement des données ?

Le code, qui fait l'update est ici. Quand je parle des traitements des données, ça concerne tout ce que je fais avant de sauvegarder les données dans la base de données. Par exemple, extraire les mots clés, déterminer les liens pertinents à ajouter dans le graphe. L'action de mise à jour, c'est le tout, entre le moment où l'utilisateur clique sur mettre à jour et la fin de l'exécution du code.

Merci Saroupille pour ton exemple. Ça donne une idée des briques de bases que l'on peut choisir de définir pour construire d'autres énoncés. Enfin, je me comprends.

Sinon j'ai eu une coupure d'internet ce week-end, donc le site était pas accessible, c'est bien triste. J'espère que ça ne recommencera plus. ;)

J'en ai profité pour améliorer un peu la lisibilité, de la navigation au sein du graphe. Lorsque l'on sélectionne des nœuds, les nœuds non voisins directs des sélectionnés s'assombrissent. Dite-moi ce que vous en pensez.

exemple d'éléments opacifiés

Lorsque l'on sélectionne des nœuds, les nœuds non voisins directs des sélectionnés s'assombrissent. Dite-moi ce que vous en pensez.

Je trouve que c'est une bonne idée, ça aide à mieux voir les liens directs !

+2 -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