[v5] Écriture des spécifications
Posté le 03/07/2018 15:57
Les besoins ont été validés, on passe maintenant à la rédaction des spécifications techniques.
Mémo rapide pour les contributeurs :
–
Besoins validés
–
Pad des specs
–
Règles de contributions sur les pads
Les spécifications sont là pour détailler la manière d'implémenter les besoins. On est pas dans les détails vraiment techniques, mais on s'en rapproche.
Exemple sur du front-end :
– Besoin : affichage clair des notifications
– Spec : pastille en bas à droite de l'avatar dans le menu
– Conception : mettre un
:after dynamique sur l'avatar
Exemple sur du back-end :
– Besoin : utilisateurs répondants aux points listés
– Spec : classe
Member héritant de la classe
User avec les attributs et fonctions suivantes
– Conception architecturale : détail des fonctions à implémenter dans la classe
– Conception détaillée : détail de l'algo pour sécuriser le code qui sera produit
La séparation de la conception en deux parties (architecturale et détaillée) n'est pas forcément pertinente pour toutes les specs, mais de toute façon c'est pas le sujet aujourd'hui.
Vous êtes invités à contribuer sur les specs ! Dans un premier temps, ça se passe
sur le pad correspondant..
La deadline pour la validation est reportée au 5 août (pour cause de vacances du patron
)
Règles de contribution sur les pads
– On se choisi une couleur et un pseudo
avant d'écrire
– La couleur respecte les yeux de chacun, j'ai pas un stock infini de collyre
– On efface la couleur de ce qui est écrit que lorsque c'est validé
– Si un truc n'a plus de couleur, quelqu'un se charge de mettre le point au propre sur le wiki
– Le plus important :
tous les membres peuvent participer !
Citer : Posté le 16/11/2018 07:10 | #
Voici ma version.
def classes(c):
return [1, c.islower(), c.isupper(), c.isdigit()]
counts = map(sum, zip(*map(classes, password)))
required = [12, 1, 1, 1]
return all(map(operator.ge, counts, required))
C'est un peu obfusqué comme résultat, mais c'est pas l'intention, je voulais juste faire un peu de programmation fonctionnelle. -_-"
L'idée c'est que classes(c) vous donne les classes auxquelles le caractère c appartient, ensuite vous calculez ça pour toutes les lettres, vous sommez, et vous vérifiez que c'est supérieur terme-à-terme au vecteur des minimums, qui est 12 lettres, 1 minuscule, 1 majuscule et un chiffre.
Ajouté le 17/11/2018 à 08:29 :
J'aimerais proposer quelque chose par rapport aux posts principaux des topics. Actuellement on a un problème assez casse-pieds, qui est que quand le post principal est réécrit, toutes les premières réponses sortent complètement de leur contexte.
Je propose de faire différemment de la méthode actuelle. Il faut voir ça comme si chaque topic ne contient que des commentaires, et pas de PP mais l'un des commentaires est affiché en haut de la page. Lorsqu'on veut réécrire substantiellement le PP, on poste un nouveau commentaire, et on le désigne comme PP. Ainsi l'ancien PP reste dans la liste des commentaires, à un endroit contextuellement parlant.
Je propose de l'afficher comme ceci :
Cas 1 : le PP est le premier commentaire du topic
Comme d'habitude.
Cas 2 : le PP est un commentaire de la page 4, et on visite la page 1
Posteur La v5 est quasi-prête !
==================================
[Le com' suivant est un ancien PP]
Avatar Je lance la v5!
Darks
------------------------------
Avatar Chaud!
Lephe
------------------------------
Avatar +1
Eragon
Cas 3 : le PP est un commentaire de la page 4, et on visite la page 4
Posteur La v5 est quasi-prête !
==================================
Avatar Tu as mis en prod' on
Lephe dirait ?
----------------------------------
[Le com' suivant est en PP]
Avatar La v5 est quasi-prête !
Darks
----------------------------------
Avatar :bounce:
Random
Là on peut décider d'afficher ou pas le texte du PP, on peut se contenter de mettre une petite ligne disant "Le PP actuel a été posté à ce moment-là".
Qu'est-ce que vous en dites ?
Citer : Posté le 17/11/2018 10:21 | #
Excellente idée Lephé pour les topics, par conter je t'avouerais ne pas avoir très bien compris ton code pour la validation du mdp.
Cake... j'ai un doute sur ton idée d'un mot de passe sécurisé
Citer : Posté le 17/11/2018 10:31 | #
Voilà une petite explication.
# On a 4 classes de caractères à valider :
# - Au moins 12 caractères en tout
# - Au moins une minuscule
# - Au moins une majuscule
# - Au moins un chiffre
# Cette fonction renvoie une liste dans laquelle il y 1 si c
# appartient à chaque classe et 0 sinon
def classes(c):
return [1, c.islower(), c.isupper(), c.isdigit()]
# Cette ligne calcule classes(c) pour tous les caractères
# du mot de passe, et somme.
# On obtient donc une liste :
# [nb de caractères, nb de majuscules, nb de minuscules,
# nb de chiffres]
counts = map(sum, zip(*map(classes, password)))
# Minimum à satisfaire pour que le mot de passe soit valide
required = [12, 1, 1, 1]
# Compare terme à terme et renvoie True si
# nb de caractères >= 12
# nb de majuscules >= 1
# nb de minuscules >= 1
# nb de chiffres >= 1
# Sinon renvoie False.
return all(map(operator.ge, counts, required))
Citer : Posté le 17/11/2018 10:35 | #
Ah! Avec les commentaires dans le code c'est plus clair, merci!
Citer : Posté le 24/11/2018 23:11 | #
Petit ping ici, ce système convient-il à tout le monde ?
Citer : Posté le 25/11/2018 23:44 | #
Oui, très bien.
Citer : Posté le 10/02/2019 23:25 | # | Fichier joint
Pas sûr que ce topic soit encore correctement nommé, mais bon.
J'ai ajouté le tag Facile sur le gestionnaire de tickets de la v5 : si vous souhaitez contribuer mais pensez ne pas avoir le temps ou les compétences pour faire des trucs "compliqués", ces tickets sont pour vous.
Tout est ici.
J'en profite pour ajouter que ça avance depuis une ou deux semaines à un rythme intéressant. On a pas encore grand chose pour le moment, mais ça se construit au fur et à mesure. À l'heure actuelle, on peut :
– créer un compte (gestion des pseudos autorisés à revoir toutefois)
– se (dé)connecter
– modifier les paramètres de son compte
– lancer une recherche (envoi du formulaire uniquement, pas de recherche effectuée dans le backend)
[si on a les bons droits]
– accéder au panel ci-dessous
– modifier les paramètres d'un utilisateur (y compris ceux auxquels lui-même n'a pas accès, comme le pseudo)
– supprimer un compte utilisateur
Il n'y a pas encore de forum ou quoi que ce soit, mais on avance par étapes : une fois que les bonnes briques sont posées – gestion des comptes, droits, etc. – on peut débloquer la suite.
Nota bene : ça serait peut-être pas mal de mettre en post-it un des topics dédiés à la v5, le plus généraliste par exemple…
Ajouté le 10/02/2019 à 23:59 :
J'en profite pour vous dire que j'utilise beaucoup le gestionnaire de tickets pour noter les détails à corriger. Du coup vous avez une idée de l'avancement du projet en parcourant la liste des tickets, ouverts ou fermés.
Et je rappelle que la liste des commits sur la branche master est aussi intéressante pour suivre l'avancement du projet.
Citer : Posté le 11/02/2019 08:47 | #
Et abonnez-vous au flux RSS du dépôt (en haut à droite) si vous voulez être notifiés de tous les commits, commentaires, issues, etc.
Ajouté le 13/08/2019 à 16:13 :
Il y a eu un peu de discussion mais pas d'accord sur les trophées... j'ai coupé la poire en deux dans mon dernier commit, en ajoutant des éléments de Drak en préservant le 3 titres par catégorie et pas trop d'abondance de Darks.
Voici les modifications que je propose par rapport à la version actuellement documentée sur le wiki :
- Premier mots : 20 posts
- Jeune écrivain » Plume infaillible
- Apprenti instructeur, Pédagogue averti, Encyclopédie vivante » Pédagogue, Encyclopédie vivante, Guerrier du savoir
- Nouveau » Initié
- Vétéran mythique : compte de 10 ans
- Examinateur » Grand joueur
- Participant avéré » Participant
- Designer en herbe » Dessinateur en herbe placé à 5 soumissions
- Graphisme expérimenté » Open pixel placé à 30 soumissions
Et je propose de virer carrément les conditions de notes pour trophées sur le nombre de programmes.
Vu que ça a pas déclenché beaucoup de débats non plus, je ne m'attends pas à beaucoup de controverse. Ce qui serait pas mal parce que j'aimerais implémenter le forum.
Citer : Posté le 13/08/2019 16:33 | #
Mais... c'est génial tout ça !
J'ai vraiment hâte que la v5 soit disponible !
Citer : Posté le 14/08/2019 17:30 | # | Fichier joint
J'en profite pour lâcher quelques icônes que j'ai faites pour ces trophées.
Citer : Posté le 14/08/2019 17:43 | #
Tu dors quand Lephé' ?
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 14/08/2019 17:53 | #
Ce mec cumule toutes les qualités d'un programmeur
Citer : Posté le 15/08/2019 15:26 | #
Va pour shooter les conditions sur les programmes.
Pour le reste, le wiki a l'air d'être à jour, ça me va bien.
Je redirai sur le ticket en question, mais ta modif pour virer les trophées si on supprime des posts est pas bonne.
Ce que je ferai, c'est au choix :
– supprimer les trophées à chaque fois qu'on en ajoute un du niveau en dessous
– faire un contexte "deletion" qui supprime tout les trophées automatiques et recalcule tout ensuite (contexte de type None)
Actuellement si un compte passe de 100 à 10000 posts pour spam, ton code ne retire aucun des trophées une fois les messages de spam supprimés
Citer : Posté le 15/08/2019 15:55 | #
Va pour shooter les conditions sur les programmes.
Super, merci.
Ce que je ferai, c'est au choix :
– supprimer les trophées à chaque fois qu'on en ajoute un du niveau en dessous
– faire un contexte "deletion" qui supprime tout les trophées automatiques et recalcule tout ensuite (contexte de type None)
Actuellement si un compte passe de 100 à 10000 posts pour spam, ton code ne retire aucun des trophées une fois les messages de spam supprimés
C'est exactement ce que mon code fait, il suffit d'appeller update-trophies("new-post") lorsqu'on en supprime un et ensuite la première option est effectuée. Chaque attribution d'un trophée de niveau inférieur supprime celui du dessus (car c'est comme ça que les catégories marchent).
Je veux bien savoir ce que tu penses que mon code fait du coup :o
Citer : Posté le 15/08/2019 16:07 | #
Au temps pour moi, j'avais pas vu que tu avais modifié la méthode "add_trophy"
En l'occurence je suis pas fan de ce système pour deux raisons : add_trophy est une primitive qui selon moi doit rester basique. On s'en fout de savoir si y'a des trophées ou non, si je l'appelle je m'attends à ce que le trophée x, y ou z (j'ai fait du duck programming) soit ajouté. Idem pour del_trophy.
La seconde, c'est que pour moi les trophées se cumulent. C'est d'ailleurs ce qui est fait dans l'intégralité des sites/jeux que je connais qui ont un système de trophées.
Ajouté le 15/08/2019 à 16:11 :
En plus d'apporter des catégories qui n'ont finalement aucune utilitée si ce n'est gérer le système en question.
Je pense qu'on peut s'en passer et avoir un comportement globalement intéressant.
Citer : Posté le 15/08/2019 16:12 | #
Raah je me suis bien cassé les pieds pour que ça marche en plus.
Whatever. Je m'occupe de faire ça, n'y touchez pas s'il vous plaît.
Ajouté le 19/08/2019 à 18:07 :
Fait.