Bienvenue sur PEBKAC.fr, le site qui recense les anecdotes où l’on se moque des utilisateurs ne maîtrisant pas l’outil informatique. PEBKAC est un acronyme signifiant « Problem Exists Between Keyboard And Chair ».
Le problème se situe entre la chaise et le clavier : soumettez vos histoires, donnez votre avis !
Ce site n'est pas le site original pebkac.fr. Je publie ici la liste des PEBKAC que j'ai pu sauvegarder avant que le site original ne soit mis hors ligne.
Un client m'appelle : « Je ne comprends pas, les statistiques de mes utilisateurs ne sont pas les bonnes, j'en ai un à 0 au lieu de 6, et un autre à 56 au lieu de 7 ».

Ayant ajouté récemment une fonctionnalité sur ce projet, je vérifie naturellement mes modifications, mais sans succès. Après avoir fouillé dans la base de données, les envois AJAX et tout le tralala, je me rappelle que pour cette amélioration, mon responsable m'avait gentiment « préparé le terrain », grâce à un magnifique if ($a = xxx) (où xxx identifie un utilisateur). Évidemment, quand j'avais vu ça, je m'étais empressé d'ajouter un = supplémentaire, sans réfléchir.

Le problème : je n'ai fait cela que fin janvier… Et qu'ai-je fini par remarquer un peu plus bas ? ajouterStat($a, […]). En effet, cela faisait deux mois que ces stats étaient enregistrées sur le même compte utilisateur. Pour mon (ir)responsable : PEBKAC.
PEBKAC #9532 proposé par aDev le 22/02/2014 | 16 commentaires | 👍🏽 👎🏽 +99
Lapin.
Commentaire #131151 écrit par BaLenBo5s lE vRa! le 22/02/2014 à 12h42 | 👍🏽 👎🏽
La variable a concerne visiblement directement un des utilisateurs.
Commentaire #131156 écrit par H. Finch le 22/02/2014 à 12h48 | 👍🏽 👎🏽
Malgré mes faibles compétences en matière de développement, c'est également ce que j'ai compris.
Commentaire #131160 écrit par Fox le 22/02/2014 à 12h51 | 👍🏽 👎🏽
Merci.
Commentaire #131165 écrit par BaLenBo5s lE vRa! le 22/02/2014 à 12h57 | 👍🏽 👎🏽
Il me semble que les extraits de code n'illustrent pas du tout le propos, et rendent le tout plus difficile à comprendre ^^
Commentaire #131201 écrit par Hep le 22/02/2014 à 14h52 | 👍🏽 👎🏽
Le code du responsable fonctionne, même si le if est de trop
if ( $a = xxx) renseigne a avec la valeur xxx et donc ajouterStat($ a va bien calculer les stats de l'utilisateur xxx
Commentaire #131202 écrit par spidermoon le 22/02/2014 à 14h57 | 👍🏽 👎🏽
ajouter un = supplémentaire, sans réfléchir.
Il est là le PEBKAC.
Commentaire #131232 écrit par juu le 22/02/2014 à 19h15 | 👍🏽 👎🏽
Je plussoie. Toujours étudier l'algorithme avant de le modifier.
Et ce même s'il est absolument horrible à lire.
Modifier un code sans tenter de le comprendre c'est manquer de respect à son rédacteur.
Et quand en plus on ose le rendre inopérant...
Commentaire #131258 écrit par xTG le 22/02/2014 à 20h31 | 👍🏽 👎🏽
Euh, j'ai l'impression que ce code était déjà "inopérant" avant la modif. Moi ce que je comprend c'est qu'avant l'ajout du = les stats étaient enregistrées sur le compte de XXX. Donc le Pebkac est bien pour le responsable.
Commentaire #131265 écrit par LapinouDesCarpates le 22/02/2014 à 20h47 | 👍🏽 👎🏽
Si xxx vaut 0, la condition sera fausse, du moins c'est comme ça en C. Du coup peut être que ce if est bel et bien util.
Commentaire #131272 écrit par f le 22/02/2014 à 21h48 | 👍🏽 👎🏽
Pas sûr d'avoir tout compris vu comment c'est clair, mais je dirais aussi CTLP...

a moins d'une pitite précision?
Commentaire #131281 écrit par ben_kenobi le 23/02/2014 à 00h05 | 👍🏽 👎🏽
Je confirme, il suffit de bien lire le PEBKAC pour se rendre compte que le code était inopérant avant la modif, et que c'est l'auteur qui l'a corrigé, mais qu'il l'a fait trop tard, laissant ainsi le temps aux fausses stats de se répandre.

Et pour ceux qui ne l'ont pas compris, if($a = xxx) va affecter xxx à $a, alors qu'ici, de façon logique, c'était un teste d'égalité qui voulait être fait, et donc if($a == xxx) voire if($a === xxx) selon les cas.

Le PEBKAC est donc bien au patron.
Commentaire #131321 écrit par caus909 le 23/02/2014 à 17h42 | 👍🏽 👎🏽
D'après ce que j'en comprends :
- aDev bosse sur une webapp avec des comptes utilisateurs et des stats spécifiques à ces comptes.
- À un moment, la valeur de l'identifiant user est comparée à une valeur spéciale pour une raison que l'on ne connaît pas (par exemple, comparée à l'UID admin pour lequel l'appli enregistre des stats spéciales ? on peut faire plein de suppositions, ça dépend de l'appli).
- Sauf que le resp d'aDev a mal codé la fonction d'enregistrement des stats : if ($a = spécial) au lieu de if ($a == spécial), ce qui fait qu'au lieu de vérifier si on est dans le cas spécial, l'appli enregistre toutes les stats en croyant que ce sont celles du compte spécial.

En images avec mes suppositions :
$a = "user"
 
 //stuff
 
 if ($a = "admin" )  // Condition toujours vraie
     enregistrerStatsAdmin($a, $user_data)  //Donc l'appli enregistre toujours les stats sur le compte de root
 else
     enregistrerStatsUser($a, $user_data)


au lieu de
$a = "user"
 
 //stuff
 
 if ($a == "admin" )  // Condition fausse en l'occurence
     enregistrerStatsAdmin($a, $user_data)
 else
     enregistrerStatsUser($a, $user_data)  //Donc l'appli enregistre les stats pour user
Commentaire #131329 écrit par Geist le 23/02/2014 à 19h39 | 👍🏽 👎🏽
Geist, redonne sa cape au Captain, il a froid sans celle-ci!

Au passage, merci pour ton exemple :)
Commentaire #131389 écrit par Moot le 24/02/2014 à 13h06 | 👍🏽 👎🏽
Merci Geist, il s'agit bien de cela, toutes les stats étaient toutes enregistrées sur le compte xxx.
Pour plus d'infos il s'agit plutôt de cela :
if ($a="xxx") { // $a vaut donc "xxx"
 // traitement spécifique à ce compte
 }
 enregistrerStats($a); // traitement général


Le fait que ce if mal formé se soit retrouvé en production avant que j'ai implémenté le traitement spécifique au compte est de surcroît un second pebkac.
Commentaire #131390 écrit par aDev le 24/02/2014 à 13h07 | 👍🏽 👎🏽
@juu : oui, j'aurais du tout vérifier sur le coup et appeler le client pour l'avertir, au lieu que ce soit le client qui m'appelle bien plus tard.
Il n'empêche que ce bout de code n'avait pas sa place sur le serveur de production.
Commentaire #131403 écrit par aDev le 24/02/2014 à 13h19 | 👍🏽 👎🏽