Oh ben mince alors. pic.twitter.com/gj0SxaRMqz
— François Revol (@mmu_man) November 17, 2017
Oh ben mince alors. pic.twitter.com/gj0SxaRMqz
— François Revol (@mmu_man) November 17, 2017
Mail reçu à 23:17
Bonjour,
Votre changement de titulaire n°1234567 nécessite une action de votre part.
Vous devez vous rendre sur votre espace personnel accessible en cliquant sur le lien suivant https://ants.gouv.fr/monespace/s-inscrire afin de compléter votre changement de titulaire n°1234567.
Étapes pour compléter votre demande :
> Cliquer sur « Mon espace véhicule »
> Dans le tableau « Mes demandes en cours », sélectionner « Reprise » au niveau de la demande n°1234567 afin de la compléter».
Cordialement,
Le ministère de l'Intérieur
Mail reçu à 23:30
Bonjour,
Nous vous informons que votre changement de titulaire n°1234567 est passée à l'état "Terminée".
Les différents états d'une demande :
Abandonnée : demande annulée à votre initiative
Analyse par le service instructeur : demande en cours d'analyse par le service instructeur. Cet état ne nécessite pas d'action de votre part.
Rejetée / Rejetée par le service instructeur : demande rejetée par le service instructeur.
Terminée : demande finalisée. Si votre demande concerne l'édition d’une carte grise (certificat d’immatriculation) ou d’une étiquette de changement d’adresse, vous pouvez suivre sa production et distribution, en cliquant sur ce lien https://immatriculation.ants.gouv.fr/Services-associes/Ou-en-est-ma-carte-grise.
Le service instructeur est en charge de la gestion des téléprocédures relatives au système d'immatriculation des véhicules
Vous pouvez consulter les messages et documents relatifs à votre demande n°1234567 depuis votre espace personnel en cliquant sur le lien suivant https://ants.gouv.fr/monespace/s-inscrire.
Étapes pour consulter ces informations :
> Cliquer sur « Mon espace véhicule »
> Cliquer sur le bouton « Mes documents » ou « Mes documents ».
Cordialement,
Le ministère de l'Intérieur
int compteur = 0;
ArrayList<Boolean> list;
for (int i=0; i<nblignes; i++)
{
for (int j=0; j<nbcolonnes; j++)
{
cell = tab[i][j];
if (cell.type() == TRUC)
{
compteur++;
if (cell.length() > 0)
{
list.add(true);
}
}
else if (cell.type() == MACHIN)
{
compteur++;
if (cell.length() > 0)
{
list.add(true);
}
}
}
}
if (list.size() == compteur)
{
...
// truc fait si toutes les cellules editables sont remplies
}
Zeph (./2405) :Ça ressemble à du code de quelqu'un qui n'a fait que du C bas-niveau, et qui ne sait pas qu'on peut faire la même chose de façon beaucoup plus concise dans un langage comme Java (mais ça n'explique pas toute la mocheté non plus).
(sinon je ne comprends pas trop le rapport avec le fait d'avoir fait du Java ou non ?)
Zerosquare (./2407) :Ah je n'avais pas l'impression que c'était si bas niveau que ça ou qu'il y avait moyen d'améliorer sensiblement la lisibilité du code sans toucher à l'algo, tu penses à quoi par exemple, remplacer les boucles par des iterateurs ou ce genre de choses ?
Ça ressemble à du code de quelqu'un qui n'a fait que du C bas-niveau, et qui ne sait pas qu'on peut faire la même chose de façon beaucoup plus concise dans un langage comme Java (mais ça n'explique pas toute la mocheté non plus).
SCPCD (./2410) :Ah, c'est seulement ça que c'est censé faire ? Effectivement c'est du foutage de gueule dans ce cas
Même un développeur ayant fait que du C, n'ira pas parcourir tout le tableau pour savoir si il est vide ou plein : dès là première cellule non rempli, c'est qu'il n'est pas plein, pas besoin de regarder toutes les autres, ni de compter le nombre de cellules, encore moins de créer une liste de booléen tous à true.
Zeph (./2411) :Je ne connais pas les langages comme Java, mais instinctivement, j'aurais dit qu'on pouvait utiliser au moins un foreach, et tester si le type fait partie d'une liste prédéfinie pour éliminer la duplication du code (même si en fait, rien qu'avec du C pur on peut déjà faire mieux que l'exemple :
Ah je n'avais pas l'impression que c'était si bas niveau que ça ou qu'il y avait moyen d'améliorer sensiblement la lisibilité du code sans toucher à l'algo, tu penses à quoi par exemple, remplacer les boucles par des iterateurs ou ce genre de choses ?
switch (cell.type())
{
case TRUC:
case MACHIN:
compteur++;
if (cell.length() > 0)
{
list.add(true);
}
break;
}
) .Zerosquare (./2412) :n'est-ce pas ?
Ah, c'est seulement ça que c'est censé faire ? Effectivement c'est du foutage de gueule dans ce cas
if ((cell.type() == TRUC) || (cell.type() == MACHIN)) { compteur++; if (cell.length() > 0) { compteur2++; } }
if (((cell.type() == TRUC) || (cell.type() == MACHIN)) && (cell.length() == 0)) { allCellsWithValues = false; break; }(Et il faut un contrôle supplémentaire sur allCellsWithValues dans la première boucle pour avoir un second break le cas échéant)/
Zerosquare (./2412) :Justement, comme il y a une condition dans la boucle remplacer par une écriture plus concise (genre tab[i].contains(cell => cell.type() == TRUC)) risquerait de transformer deux boucles en une. À part la factorisation dont tu parles je ne suis pas sûr qu'il y ait tellement de variantes tellement meilleures si on veut conserver l'algo initial. Mais même dans ce contexte ça m'intéresse de voir ce que chacun considère comme une amélioration, par exemple les propositions de Nil que je n'aurais pas tendance à suivre bien que je n'aie que des arguments de goûts et de couleurs dessus ^^
Je ne connais pas les langages comme Java, mais instinctivement, j'aurais dit qu'on pouvait utiliser au moins un foreach, et tester si le type fait partie d'une liste prédéfinie pour éliminer la duplication du code
flanker (./2421) :Idem, je vote moi aussi pour ça.
je vote également pour la seconde solution de Nil
squalyl (./2424) :Il n'y a que très peu de contextes où ce serait un problème (genre du code qui travaille avec des clés cryptographiques). Les side channel attacks ne doivent pas servir d'excuse pour du code inefficace.
moi j approuve pas ta 2e solution, elle n'est pas a temps constant, du coup elle a une vulnérabilité par side-channel de type timing attack qui permet de déterminer quel champ n'est pas rempli.