Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Vie communautaire


Index du Forum » Vie communautaire » [v5] Écriture des spécifications
Dark stormHors ligneMembre d'honneurPoints: 10824 Défis: 176 Message

[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 !


Pages : Précédente1, 2, 3, 4
LephenixnoirHors ligneAdministrateurPoints: 15524 Défis: 136 Message

Citer : Posté le 16/11/2018 07:10 | #


Voici ma version.

import operator

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

Avatar     Texte du nouveau PP
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

Avatar     Texte du nouveau PP
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 ?
EragonHors ligneMembrePoints: 180 Défis: 0 Message

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é
Venez soutenir la liberté du net, venez soutenir La Quadrature Du Net.
www.laquadrature.net
Venez rejoindre la secte communauté.
LephenixnoirHors ligneAdministrateurPoints: 15524 Défis: 136 Message

Citer : Posté le 17/11/2018 10:31 | #


Voilà une petite explication.

import operator

# 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))
EragonHors ligneMembrePoints: 180 Défis: 0 Message

Citer : Posté le 17/11/2018 10:35 | #


Ah! Avec les commentaires dans le code c'est plus clair, merci!
Venez soutenir la liberté du net, venez soutenir La Quadrature Du Net.
www.laquadrature.net
Venez rejoindre la secte communauté.
LephenixnoirHors ligneAdministrateurPoints: 15524 Défis: 136 Message

Citer : Posté le 24/11/2018 23:11 | #


Petit ping ici, ce système convient-il à tout le monde ?
Dark stormHors ligneMembre d'honneurPoints: 10824 Défis: 176 Message

Citer : Posté le 25/11/2018 23:44 | #


Oui, très bien.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Dark stormHors ligneMembre d'honneurPoints: 10824 Défis: 176 Message

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.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirHors ligneAdministrateurPoints: 15524 Défis: 136 Message

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.
MassenaHors ligneRédacteurPoints: 842 Défis: 3 Message

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 !
Now, Luke. A true gentleman suscribe to Planet Casio. This reminds me of a puzzle...
LephenixnoirHors ligneAdministrateurPoints: 15524 Défis: 136 Message

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.

Ne0tuxHors ligneMembre d'honneurPoints: 3270 Défis: 261 Message

Citer : Posté le 14/08/2019 17:43 | #


Tu dors quand Lephé' ?
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
MassenaHors ligneRédacteurPoints: 842 Défis: 3 Message

Citer : Posté le 14/08/2019 17:53 | #


Ce mec cumule toutes les qualités d'un programmeur
Now, Luke. A true gentleman suscribe to Planet Casio. This reminds me of a puzzle...
Dark stormHors ligneMembre d'honneurPoints: 10824 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirHors ligneAdministrateurPoints: 15524 Défis: 136 Message

Citer : Posté le 15/08/2019 15:55 | #


Dark storm a écrit :
Va pour shooter les conditions sur les programmes.

Super, merci.

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

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
Dark stormHors ligneMembre d'honneurPoints: 10824 Défis: 176 Message

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.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirHors ligneAdministrateurPoints: 15524 Défis: 136 Message

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.
Pages : Précédente1, 2, 3, 4

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 44 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd