Guillaume Denry a écrit 2934 commentaires

  • [^] # Re: FTP aurait dû disparaitre il y a déjà bien longtemps...

    Posté par  (site web personnel) . En réponse au journal Firefox met fin au FTP. Évalué à 3.

    Le code côté serveur n'est pas le problème de Mozilla. Si qqn a envie de faire tourner un serveur FTP sur un PC sous MS DOS, en quoi est-ce le problème de Mozilla ?

    Je ne dis pas que tu as tort, mais je précise juste que la mission de Mozilla n'est pas juste d'être l'éditeur de Firefox.

  • [^] # Re: FTP aurait dû disparaitre il y a déjà bien longtemps...

    Posté par  (site web personnel) . En réponse au journal Firefox met fin au FTP. Évalué à 8.

    Et qu'en 2021, sa suppression dans un browser fasse débat me dépasse complètement…

    Y'a rien de surprenant, ça s'appelle l'inertie, beaucoup de gens ont un serveur FTP quelque part et n'ont pas envie de passer du temps à basculer sur autre chose, c'est aussi bête que ça…

  • [^] # Re: Dolphin est top.

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Plasma 5.21 . Évalué à 3.

    Yep, ça plus une utilisation savante de la boite "Ajuster le style d'affichage de la vue" et de l'option "Utiliser comme configuration de l'affichage par défaut".

  • [^] # Re: Dolphin est top.

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Plasma 5.21 . Évalué à 3.

    Trouvé !

    C'était pas hyper-hyper-trivial mais bon, ça marche impec.

  • [^] # Re: Dolphin est top.

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Plasma 5.21 . Évalué à 2.

    Dans un grand élan schizophrénique, je me répond à moi-même : il suffit d'invoquer le menu contextuel de la vue, de choisir "Trier par" -> "Modifié" et HOP, ça trie la vue et ça reste persistent.
    Seul bémol (et qui est de taille), ce trie s'applique maintenant à tous les dossiers :(

  • [^] # Re: Dolphin est top.

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Plasma 5.21 . Évalué à 2.

    Est-ce que Dolphin propose une vue par date de dernière modification ? Pour browser le répertoire de download de son navigateur et retrouver un fichier récemment téléchargé, je trouve ça ultra pratique sur l'explorer de windows par exemple.

  • [^] # Re: micro

    Posté par  (site web personnel) . En réponse au journal [bookmark] GNU nano 5.5 est sorti malgré le couvre-feu. Évalué à 3.

    d'être normal.

    C'est-à-dire ?

  • [^] # Re: Et aussi varier les adresses

    Posté par  (site web personnel) . En réponse au journal Résolution de l'année 2021 : changez votre mot de passe !. Évalué à 2.

    (Je ne leur jette pas la pierre je n'ai ni tv ni téléphone.)

    Pas de tv, c'est facile, mais pas de téléphone, chapeau bas

  • # Erlang/Elixir

    Posté par  (site web personnel) . En réponse au journal Retour d'expérience sur les langages de programmation. Évalué à 7.

    Je te recommande également de te pencher sur Elixir et Erlang qui proposent de puissants outils pour faire de la programmation concurrente (et fonctionnelle).

  • # C'est bon, je sais pas me servir d'un moteur de recherche mais c'est pas grave

    Posté par  (site web personnel) . En réponse au message raccourcis de commandes sous KDE. Évalué à 8.

  • [^] # Re: Note du journal

    Posté par  (site web personnel) . En réponse au journal Les distributions GNU/Linux, un petit monde en voie d’extinction ?. Évalué à 6.

    Le plus pitoyable dans ta démarche, c'est encore de catégoriser l'ensemble des intervenants de linuxfr, comme s'ils étaient faits du même moule.
    Y'a plein de gens d'horizons différents ici, mais manifestement, malgré leurs désaccords, ils arrivent globalement à voir que ton journal c'est de la merde, ainsi que l'article pointé.
    Mais j'imagine que comme on est tous des clones, on a tous tord et toi tu as raison.
    Et puis excuse-moi, mais un compte créé dans la foulée ici pour troller et pointer un article de fbezies, faut vraiment nous prendre pour des imbéciles : tu penses réellement qu'on ne sait pas qui tu es ?

  • [^] # Re: Sur le code

    Posté par  (site web personnel) . En réponse au journal Balance virtuelle, application éducative javascript. Évalué à 2. Dernière modification le 08 octobre 2019 à 11:22.

    Dans une boucle de 1 000 000 itérations, utiliser getElementById avoir avec le même id ne serait probablement pas très malin.

  • [^] # Re: Et toi, quel est ton avis ?

    Posté par  (site web personnel) . En réponse au journal Python pour la rentrée 2019 - Hors Série - Python revient dans la course face à Node.js. Évalué à 3.

    les objets sont gérés comme beaucoup d'autres langages.

    C'est-à-dire ? A part un peu de sucre syntaxique (le mot-clef class), je vois pas bien.

  • [^] # Re: Sur le code

    Posté par  (site web personnel) . En réponse au journal Balance virtuelle, application éducative javascript. Évalué à 2. Dernière modification le 04 octobre 2019 à 13:09.

    Est-il préférable d'ajouter des éléments dans le dom depuis le html, ou de les créer par javascript ? Pourquoi ? (performances ou autres) Quelles règles à respecter à ce niveau ?

    On va partir de l'hypothèse qu'on parle d'une application comme la tienne qui tourne entièrement sur le navigateur ou au moins qui délègue entièrement son rendu au navigateur.

    Dans ce cas là, la modification du DOM via JavaScript répond essentiellement à des besoins "dynamiques", par exemple, si je veux créer un ensemble de sprites qui correspondent à l'ensemble des objets que j'ai défini en interne dans mon programme JavaScript. Le bon sens veut en effet qu'on automatise le plus de choses pour éviter de se répéter un peu partout dans son programme et dans ce cas là, la page html de base ne devra pas contenir grand chose.
    C'est la tendance actuelle pour les "Web Single App" : on définit grosso modo une structure générale statique en HTML et on laisse ensuite le programme gérer le DOM de façon dynamique.
    Dans ton cas, tout l'"univers" de ton jeu devrait idéalement être généré par JavaScript, surtout que comme ça, on a pas à faire constamment l'aller/retour entre le code et la page pour avoir une idée de comment tout ça s'articule.

    Lorsque l'on utilise fréquemment une référence à un élément du DOM, est-il préférable de faire un appel à la fonction javascript lors de chaque appel, ou de créer une variable globale avec cette référence ?

    L'utilisation de variable pour stocker des résultats d'appels de fonction répond principalement à deux besoins :
    1/ avoir un cache pour le résultat d'appel de fonction (optimisation)
    2/ éviter de se répéter dans le code (maintenabilité)

    Dans la plupart des cas, la maintenabilité d'un code est pour moi plus important que son optimisation, et en tout cas, on ne devrait pas se soucier trop tôt de l'optimisation de son programme. Comme dirait Donald Knuth, "Premature optimization is the root of all evil (or at least most of it) in programming."

    Dans ton cas, récupérer un élément par son id est quelque chose d'ultra optimisé, surtout par les navigateurs actuels, cela dit, ça reste un appel de fonction.
    Dans une boucle de 1 000 000 itérations, utiliser getElementById avoir le même id ne serait probablement pas très malin.
    Cependant, dans la grosse majorité des cas, c'est l'élégance du code, la concision et le soucis de ne pas se répéter qui devrait primer, et c'est parfois aussi une question de goût.
    En gros, pour moi, dans ton contexte, il n'y a aucun soucis à utiliser getElementById() à chaque fois qu'on a besoin de travailler sur l'élément, si ce n'est que de voir 4 getElementById('toto') au sein du même bloc d'instructions sera pénible à relire/maintenir.

  • [^] # Re: Sur le code

    Posté par  (site web personnel) . En réponse au journal Balance virtuelle, application éducative javascript. Évalué à 2.

    Bien sûr, aucun soucis

  • [^] # Re: Sur le code

    Posté par  (site web personnel) . En réponse au journal Balance virtuelle, application éducative javascript. Évalué à 4.

    Si ça t'intéresse, je peux te proposer un patch ou pull request.

  • [^] # Re: Sur le code

    Posté par  (site web personnel) . En réponse au journal Balance virtuelle, application éducative javascript. Évalué à 2. Dernière modification le 10 septembre 2019 à 16:22.

    localement, let est limité au bloque tandis que var est limité à la fonction (globalement, il n’y a pas de différence)

    J'essaye au possible d'écrire des fonctions courtes donc effectivement, re-déclarer deux fois la même variable dans une même fonction ne m'arrive pas souvent. Mais il est possible que ça soit intéressant dans d'autres cadres. En tout cas, ça ne permet plus d'écrire ce genre d'horreur :

    function toto() {
      if (...) {
        var toto = 4;
      }
      console.log(toto);
    }

    Avec let, ça ne passe pas.

    en mode « strict », let définie des constantes.

    Non, en mode strict, ce qu'on ne peut pas faire, c'est redéclarer la même variable deux fois dans un même scope.

    Pour faire une "constante" (*), il faut utiliser const.

    Je parlais de "hoisting" plus haut, le var peut être piégeux à cause de ça, let et const ne te permettent pas d'utiliser les variables avant leur déclaration (oui ça semble idiot de faire ça, mais pas mal de développeurs JavaScript usaient et abusaient de ça), et donc, n'avaient pas forcément conscience qu'en déclarant un var toto en plein milieu d'une fonction, toto était en fait remonté en haut de la fonction par l'interpréteur.
    let est ce que var aurait dû être dès le départ.
    Comme === est ce que == aurait dû être dès le départ.
    On constate que de nombreuses améliorations des différentes moutures de JavaScript ont pour objectif de corriger les erreurs de jeunesses du langage.

    (*) en réalité, seule la valeur de variable est constante, on ne peut pas utiliser const pour faire réellement de l'immutabilité, par exemple.

    const obj = { a: 4 };
    obj.a = 5; // parfaitement autorisé

    En pratique, la "fausse" immutabilité de const fait que ce dernier est largement plus utilisé que let dans les programmes depuis ES6. A vue de pif, je dirais que j'utilise 15 fois plus de const que de let. (et plus aucun var)

  • # Sur le code

    Posté par  (site web personnel) . En réponse au journal Balance virtuelle, application éducative javascript. Évalué à 10. Dernière modification le 09 septembre 2019 à 17:40.

    Quelques remarques en vrac (sur le code) :

    • Ca pique un peu de voir autant de variables globales et aussi destructurées, je recommande vivement d'en faire le bilan et de distinguer celles dont tu as besoin pendant toute la vie de ton application (comme difficulte) de celles qui ont une durée de vie courte et localisée (comme PositionX) et qui pourront donc être déclarées au plus proches de l'endroit où elles sont utilisées. Tu peux organiser tes variables de façon hiérarchisée et en partant d'une seule variable globale etat et qui contiendrait l'ensemble des paramètres de ton application.

    Exemple :

        const etat = {
          difficulte: 1,
          objects: [], 
          masses: [],
          chargeGauche: 0,
          chargeDroite: 0,
          (...)  
        };
    • De manière générale, ne pas hésiter à écrire le plus possible de fonction "pures", c'est plus facile de raisonner dessus quand on relit le code par exemple : la plupart de tes fonctions lisent et écrivent des variables extérieures à elles, c'est difficile de suivre le fil quand on se plonge dedans => ne pas hésiter à utiliser des arguments dans les fonctions pour éviter ce phénomène. Si tu réorganises les variables de ton programme dans un "etat", tu pourrais passer cet "etat" en argument des fonctions pures.

    • Pas mal de variables sont déclinées en 4 catégories, si j'ai bien compris, ces catégories correspondent à la fois à des index de séries d'objets mais aussi au niveau de difficulté courant. Pour mieux s'y retrouver, je regrouperai toutes ces données de manière plus sémantique (c'est juste une façon d'organiser, y'en a plusieurs possibles) :

        const series = [
          {
            difficulte: 1
            objets: [
              ["img/boite-mais.png",413,116,132,"auto"],
              ["img/cahier.png",96,239,137,"152,38"],
              (...)
            ]
          },
          {
            difficulte: 1
            objets: [
              (...)
            ]
          },
          {
            difficulte: 2
            objets: [
              (...)
            ]
          },
          {
            difficulte: 2
            objets: [
              (...)
            ]
          }
        ];
    • Je ne sais pas pourquoi tu n'as pas utilisé le même système de déclaration statique des masses dans le jeu, au lieu d'écrire cette horrible fonction creeMassesBase() :-), ca permettrait de réduire pas mal le nombre de lignes de code et l'expressivité
    • la fonction estPresent est à la fois dans balance.js et dans outils.js
    • Cela dit, tu peux la remplacer par monTableau.indexOf(monElement) >= 0 ou bien monTableau.includes(monElement) si tu peux t'en ficher d'internet explorer.
    • Se tenir à une nomenclature cohérente au niveau du nommage : par exemple, en JavaScript, l'usage veut qu'on commence le nom d'une variable en minuscule (camelCase)
    • Tu utilises des var et des let, je te recommande de laisser tomber var et d'adopter const, tu éviteras le problème d'hoisting et bénéficieras également de la vérification de mutabilité de la constante
    • Je recommande l'usage de noms anglais dans le code source si tu souhaites partager ce code en dehors de la francosphere

    Y'aurait encore plein d'autres trucs à dire, mais j'arrête là.

    En tout cas, beau projet, et ça marche plutôt pas mal sur mon ordi. Je pense qu'une amélioration fonctionnelle serait de guider un peu plus le joueur lorsqu'il souhaite déposer des poids, en mettant par exemple en surbrillance la zone de dépôt, pendant le drag'n'drop.

  • [^] # Re: Bien fait!

    Posté par  (site web personnel) . En réponse au journal [HS][Nécrologie] Ariane, du Club Dorothée, est décédée/bronsonisée à 61 ans. Évalué à 5. Dernière modification le 05 septembre 2019 à 11:29.

    Je suis franchement plus partagé. Au moment de la mort de Jobs, ça faisait longtemps que son "oeuvre" (selon Stallman) était achevée. Est-ce que Stallman pense vraiment que la disparition de Jobs rendra le monde du logiciel meilleur ? Est-ce que ça n'était pas trop tard de toute façon ? C'est en cela que je trouve la sortie de Stallman assez mesquine et petite.

  • [^] # Re: Bien fait!

    Posté par  (site web personnel) . En réponse au journal [HS][Nécrologie] Ariane, du Club Dorothée, est décédée/bronsonisée à 61 ans. Évalué à 1.

    Je suis plutôt d'accord avec le contenu de ton message, mais le titre est à gerber, donc moinssage.

  • [^] # Re: Ha les gens disant aimer mais n'aimant pas le libre...

    Posté par  (site web personnel) . En réponse au journal un (non-)aperçu du libre . Évalué à 7.

    Les droits du libre… Je pensais que c'était de libérer l'utilisateur en lui offrant des outils de qualité ? :)

    Non, la qualité est éventuellement un effet de bord du libre, mais ça n'a rien à voir avec le libre.

    Plus je lis tes réponses à côté de la plaque, imprégnées du ton condescendant et hautain que tu adoptes, plus je me dis que les gens comme totof2000 ont bien du courage de te répondre de façon aussi argumentée.

  • [^] # Re: Euuuh ?

    Posté par  (site web personnel) . En réponse à la dépêche Ultracopier 2. Évalué à 0.

    TCP corrige les problèmes de perte ponctuelle de paquets ou d'arrivée dans le désordre de la couche IP.

    Ce ne sont pas des "problèmes" d'un point de vue IP, puisqu'IP ne garantie pas l'ordre des paquets ni que les paquets arrivent tous au destinataire, et c'est tout-à-fait délibéré.

  • [^] # Re: Oh purée…

    Posté par  (site web personnel) . En réponse au journal Bellard strikes again: QuickJs, un moteur JavaScript. Évalué à 4.

    NodeJS n'est pas qu'un moteur d'exécution JavaScript donc non.

  • [^] # Re: Franchement...

    Posté par  (site web personnel) . En réponse au journal Ultracopier 2 Beta. Évalué à 10. Dernière modification le 18 juin 2019 à 18:11.

    Je ne comprends pas pourquoi tu es surpris…

    Personnellement, j'ai moinssé parce que :
    - il s'agit ici d'un simple copier/coller d'un billet de blog
    - la forme est déplorable, le logiciel n'est pas présenté, on ne dit pas que c'est un logiciel libre, pas de lien explicite vers le site, vers le github, on n'explique pas clairement quelles sont les nouveautés du logiciel
    - On parle d'une version "ultimate" sans présenter ce que c'est, et ça n'est même pas sur le site
    - Petit lien de pub pour acheter des trucs

  • # Les sources ?

    Posté par  (site web personnel) . En réponse au journal Ultracopier 2 Beta. Évalué à 5.

    J'ai un mal de chien à trouver les sources sur le site…