Posté le 17/11/2017 à 16:26 Membre depuis le 30/06/2001, 70987 messages
Vu par mmu_man:

avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
Posté le 18/11/2017 à 09:56 Membre depuis le 10/09/2002, 10853 messages
Epilogue (parce qu'ils sont trop forts) :

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

Mais bon, comme j'étais couché, je ne me suis pas relevé avant ce matin, alors, en continuant la lecture de mes mails...

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

Bref, soit mon cerveau est connecté en 4G, soit des fonctionnaires ont travaillé la nuit. Je ne saurais dire lequel des deux est le plus probable...

Pour la petite histoire, je me suis quand même connecté au compte ce matin pour vérifier l'état sur le site.

Le premier message faisait état d'un paiement en attente que j'ai fait hier après midi en CB
avatarpedrolane stoppe la chute des chevaux

La DNC-Team : un club plein de mystères
Posté le 20/11/2017 à 06:18 Membre depuis le 11/01/2003, 22299 messages
j'aurai dit que le premier mail est un bug lié à une mauvaise implémentation dans leur outil (Outil qui a coûté des bras)
avatarHEROKI DE SEGA, LE JEU SUR IPHONE ET IPAD : DIX EXEMPLAIRES À GAGNER !
Pour tenter de gagner un exemplaire de Heroki sur iPhone/iPad, c'est très simple : abonnez-vous à notre page Facebook/Twitter et aimez/partagez le message qui annonce le concours. Le tirage au sort des dix gagnants aura lieu le 2 août à minuit. Ils seront contactés par les réseaux sociaux pour recevoir leur lot.

https://twitter.com/Airgamingpocket

https://www.facebook.com/airgamingmobile
Posté le 25/11/2017 à 14:15 Membre depuis le 16/01/2005, 1337 messages
voilà ce que j'ai vu comme magnifique code cette semaine :

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
}

je ne comprend même pas comment on peut arriver écrire ça...

avatar
Posté le 25/11/2017 à 14:17 Membre depuis le 27/04/2006, 59885 messages
C'est effectivement crade, mais ça reste compréhensible, et ça fait ce que c'est sensé faire. On a déjà vu bien pire ^^
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
Posté le 25/11/2017 à 14:22 Membre depuis le 13/06/2002, 42560 messages
Tiens, la CSS des résultats des sondage est pas terrible, le texte augmente la taille des cellules qui ne sont plus du tout proportionnelles aux nombres de votes, je vais corriger ça.

(sinon je ne comprends pas trop le rapport avec le fait d'avoir fait du Java ou non ?)
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Posté le 25/11/2017 à 14:47 Membre depuis le 13/06/2001, 72810 messages
Comme dit 0², c'est du code moche mais lisible. Mais moche (et pas du tout optimisé). Je ne fais pas jeter la pierre, il doit bien y avoir 2/3 trucs comme ça (bon, peut-être pas aussi crade grin) dans des programmes que j'ai pu faire, essentiellement parce qu'il a fallu ajouter un contrôle à l'arrache.
avatar
Posté le 25/11/2017 à 14:53 Membre depuis le 27/04/2006, 59885 messages
Zeph (./2405) :
(sinon je ne comprends pas trop le rapport avec le fait d'avoir fait du Java ou non ?)
Ç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).
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
Posté le 25/11/2017 à 15:11 Membre depuis le 16/06/2001, 69511 messages
il est surtout débilissime ce code puis qu'on ne fait qu'ajouter des trucs a la liste pour les compter, ce qui est deja fait via le compteur...
Posté le 25/11/2017 à 15:15 Membre depuis le 13/06/2001, 72810 messages
Voilà, c'est surtout ça : ça ressemble à un truc ajouté à l'arrache sans réaliser que l'info est déjà présente.
avatar
Posté le 25/11/2017 à 15:21 Membre depuis le 16/01/2005, 1337 messages
j'ai volontairement rendu plus lisible le code : en vrai il y a des "instanceof" et des cast partout rendant le code très difficile à lire (en vrai ça fait 50 lignes).

Ce qui me choquait surtout c'est l'algorithme.
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.
avatar
Posté le 25/11/2017 à 15:36 Membre depuis le 13/06/2002, 42560 messages
Zerosquare (./2407) :
Ç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).
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 ?

En revanche l'algo est atroce, rien à redire à ça ^^
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Posté le 25/11/2017 à 18:30 Membre depuis le 27/04/2006, 59885 messages
SCPCD (./2410) :
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.
Ah, c'est seulement ça que c'est censé faire ? Effectivement c'est du foutage de gueule dans ce cas grin

Zeph (./2411) :
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 ?
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 :
switch (cell.type())
{
     case TRUC:
     case MACHIN:
     compteur++;
     if (cell.length() > 0)
     {     
          list.add(true);
     }    
     break;
}
) .
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
Posté le 25/11/2017 à 18:33 Membre depuis le 16/01/2005, 1337 messages
Zerosquare (./2412) :
Ah, c'est seulement ça que c'est censé faire ? Effectivement c'est du foutage de gueule dans ce cas grin
n'est-ce pas ? cheeky
avatar
Posté le 25/11/2017 à 18:34 Membre depuis le 13/06/2001, 72810 messages
Oui, c'est pour ça que je trouve que ça ressemble beaucoup à un truc rafistolé à l'arrache à partir d'un code déjà existant mais dont la finalité a changé.
avatar
Posté le 25/11/2017 à 20:59 Membre depuis le 16/06/2001, 69511 messages
nil : en fait l'info n'existe pas déja, mais il utilise une liste comme accumulateur au lieu d'une simple variable entière...
Posté le 25/11/2017 à 21:24 Membre depuis le 13/06/2001, 72810 messages
Ben si, il a déjà l'information dans compteur, pas besoin d'avoir une liste en plus ?
De l'extérieur, ça ressemble à une situation où on avait initialement deux listes permettant d'emmagasiner d'un côté toutes les valeurs dans une cellule de type TRUC, et d'un autre toutes les valeurs de type MACHIN. Sauf qu'à un moment donné, cette information n'a plus été pertinente donc c'est juste un booléen qui a été stocké de façon globale et fait double emploi avec l'accumulateur. Enfin, j'espère que c'est ça, la justification, parce que sinon c'est vraiment quelqu'un qui ne sait pas ce qu'il fait cheeky
avatar
Posté le 26/11/2017 à 09:50 Membre depuis le 30/06/2001, 70987 messages
Le compteur et la liste ne comptent pas le meme chose:

Compteur compte le nombre de cases de type MACHIN et TRUC
La liste compte le nombre de MACHIN et TRUC qui ont une valeur de rentré.
Je ne pense pas qu'il y ai deux listes, mais plutot une liste avec des elements qui peuvent avoir plusieurs genres qui sont défini par l'utilisateurs a l'utilisation. Peut etre qu'il y a un type SANS et BIDULE que ce code ignore parce qu'il s'en fout.
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
Posté le 26/11/2017 à 10:14Edité par Nil le 26/11/2017 à 14:08 Membre depuis le 13/06/2001, 72810 messages
Hm, soit, mais c'est quand-même mieux d'avoir (qui revient en gros à ce qu'a fait 0² [moins l'idée d'avoir une liste de booléens, parce que je n'en vois pas du tout l'intérêt], je laisse les gens comme PpHd calculer s'il vaut mieux un switch ou un if dans ce genre de situations en terme de cycles tongue )

if ((cell.type() == TRUC) || (cell.type() == MACHIN))
{
	compteur++;
	if (cell.length() > 0)
	{
		compteur2++;
	}
}

Après, en optimisant, on a :
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)/
avatar
Posté le 26/11/2017 à 10:33 Membre depuis le 30/06/2001, 70987 messages
L’optimisation des if est à vrai dire inutile, ça rends peu lisible et ton compilateur ferra aussi bien si ce n’est mieux.

Mais oui il est évident que deux compteur sont la solution, en tout cas avec le bout de code qu’on a à disposition.
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
Posté le 26/11/2017 à 12:59 Membre depuis le 13/06/2002, 42560 messages
Zerosquare (./2412) :
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
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 ^^
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Posté le 26/11/2017 à 13:01 Membre depuis le 11/07/2003, 54707 messages
je vote également pour la seconde solution de Nil
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Posté le 26/11/2017 à 13:02 Membre depuis le 13/06/2002, 42560 messages
(perso je parle du changement d'écriture, pas du changement d'algo qui vient avec ; on peut dissocier les deux)
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Posté le 26/11/2017 à 14:14 Membre depuis le 13/06/2001, 72810 messages
Après, pour un tableau à une dimension, j'aurais clairement fait le choix d'un while pour un arrêt plus propre (naturellement, je n'aime pas les break dans les if, que je trouve difficile à lire dès que le code est un peu long). Mais là, parcourir un tableau à deux dimensions juste avec des while me semble compliquer la lecture du code pour pas grand chose.
avatar
Posté le 26/11/2017 à 15:14 Membre depuis le 16/06/2001, 69511 messages
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.
Posté le 26/11/2017 à 15:34 Membre depuis le 10/06/2001, 40121 messages
flanker (./2421) :
je vote également pour la seconde solution de Nil
Idem, je vote moi aussi pour ça.

squalyl (./2424) :
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.
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.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 26/11/2017 à 15:40 Membre depuis le 18/06/2001, -26160 message
(il déconnait, t'inquiète grin)
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 26/11/2017 à 17:55 Membre depuis le 13/06/2001, 72810 messages
Ouais, si je dois me préoccuper des side channel attack dans mes programmes de gestion, je pense que je peux arrêter de bosser tout de suite grin
avatar
Posté le 26/11/2017 à 20:34 Membre depuis le 16/06/2001, 69511 messages
c'est un problème dès qu'un processus susceptible de manipulations cryptographiques tourne sur la machine.
Posté le 26/11/2017 à 20:50 Membre depuis le 13/06/2001, 72810 messages
Donc typiquement si tu proposes de l'https ?
avatar
Posté le 26/11/2017 à 22:05 Membre depuis le 16/06/2001, 69511 messages