Liste d'erreurs de programmation à la con sur lesquelles on passe des heurs quand on est un peu fatigués
par
, 07/03/2015 à 02h46 (512 Affichages)
Bonjour,
Dans ce ticket, je vais lister les petites erreurs vraiment à la con qui m'ont fait perdre du temps à un moment...
Effectivement, quand il est 3h du mat, que vous êtes crevés, que vous avez un projet à rendre pour le lendemain (car évidemment, vous vous y êtes mis au dernier moment, grand classique...), Il y a parfois ces saletés de bugs que vous ne pouvez pas localiser. Premièrement à cause de la fatigue, ensuite à cause du stress et enfin parce que vos yeux PIQUENT et que vous voyez à peine l'écran.
Bref... c'est la galère, ça ne marche pas alors que tout semble ok.
Je vais vous lister là quelques-unes de mes perles en la matière :
TOP 4 :
L'erreur est dans lib :
Si votre code est clean, n'hésitez pas à jeter un coup d'œil dans celui de la bibliothèque...
2 jours de perdus en développement embarqué à cause d'un c-c/c-v foireux dans les sources d'une lib Texas Instrument. Un caractère à modifier, mais qui nécessitait de nombreuse heurs de recherche dans les specs (surtout c'était lors d'un stage, et que c'était mes premier pas dans la programmation de microcontrôleurs)
TOP 3:
Les options du context ssl ne marche pas dans python :
Celle qui m'a fait perdre 30 minutes ce soir (et qui m'a motivé à écrire ce post), le paramétrage du context ssl qui ne marche pas :
Le problème étant que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) context.load_verify_locations(cafile=settings.ca_cert) context.check_hostname = False context.verify_mode = ssl.CERT_REQUIRED context.verify_flags = ssl.VERIFY_DEFAULT print(context.get_ca_certs()) s = ssl.wrap_socket(socket.socket(socket.AF_INET))renvoyait
Code : Sélectionner tout - Visualiser dans une fenêtre à part s.geteercert(), dont les causes peuvent être multiples...
Code : Sélectionner tout - Visualiser dans une fenêtre à part {}
Sauf que si on appelle wrap_context depuis le module... tout le code du dessus ne sert à rien...
TOP 2:
Le if toujours vrai :
Lors d'un concours de programmation (Prologin, quand j'étais un peu plus jeune), codant en C, je suis tombé sur cette curiosité : le if toujours vrai :
Ok, ça paraît évident, mais quand la condition est plus longue, qu'on a pas dormi depuis 32h, on ne voit pas forcément le ';'... 1h de perdue, et même des admins du concours y ont passé pas mal de temps... (eux n'ayant pas dormi depuis 40h)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if( 0 ); { print("true"); }
TOP 1:
À 1 pixel et des poussières près... :
Enfin, mon erreur la plus vicieuse... encore à Prologin (demi-finale), le code passe tous les tests sauf le dernier. En réalité, l'algorithme et le code était bel et bien fonctionnels. Cependant, j'ai cette habitude d'utiliser la font la plus petite possible quand je code pour avoir plus de ligne sous les yeux... (l'horible "[Fixed misc]" en taille 8 disponible dans Kate). Cette font ainsi réglée est si petite qu'un 'c' diffère d'un 'o' par seulement 1 pixel (véridique). Or, il y avait une poussière juste où était mon c. En plus de cela, un c n'était pas totalement absurde à cette endroit (Au passage, toujours utiliser des noms de variable comportant plus d'une seule lettre ).
2h de débogage (et quand même qualifié pour la finale où je perdrai du temps avec le if toujours vrai)
Je compléterai ce poste au rythme de mes mauvaises expériences et vos commentaire
N'hésitez donc pas à partager vos erreurs cocaces ^^