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.
Dans la nouvelle entreprise que j'ai intégrée, je suis étonné de voir que des requêtes SQL qui devraient normalement être assez simples, font des kilomètres et sont bourrées de "UNION". Forcément, elles sont lentes à s'exécuter, je crée donc une requête bien plus courte avec deux jointures simples.
On vient me voir pour m'indiquer que l'utilisation des jointures est interdite. Surpris par une telle interdiction, je demande : "Pourquoi ?". On me répond : "C'est comme ça...".
Je vois. PEBKAC.
PEBKAC #6048 proposé par xavden80 le 05/11/2012 | 27 commentaires | 👍🏽 👎🏽 +307
Pourquoi faire simple quand on peut faire compliqué...
Commentaire #64545 écrit par Banon le 05/11/2012 à 12h34 | 👍🏽 👎🏽
Il voulait dire interdite par l'entreprise ? (wtf..) ou par une convention genre w3c alternatif ? (double-wtf)
Commentaire #64548 écrit par dish le 05/11/2012 à 12h43 | 👍🏽 👎🏽
http://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_du_singe dans toute sa splendeur !
Commentaire #64549 écrit par Loutre le 05/11/2012 à 12h43 | 👍🏽 👎🏽
Et les baffes, c'est interdit? Non? *SPAF*

EDIT : Ah, on me signale dans l'oreillette que dans ce cas c'est disproportionné.
Commentaire #64550 écrit par ROB le 05/11/2012 à 13h00 | 👍🏽 👎🏽
Ça arrive souvent ce genre aberration dans de grandes sociétés avec des "développeurs" qui ne sont pas capables d'utiliser un "switch case".
Commentaire #64553 écrit par Obvious le 05/11/2012 à 13h27 | 👍🏽 👎🏽
Disproportionné ? Tu en es certain ? Je ne crois pas moi...
Commentaire #64554 écrit par Deck le 05/11/2012 à 13h35 | 👍🏽 👎🏽
"C'est comme ça..."
Commentaire #64555 écrit par juu le 05/11/2012 à 13h36 | 👍🏽 👎🏽
27 if imbriqués ?
Commentaire #64556 écrit par neeko le 05/11/2012 à 14h14 | 👍🏽 👎🏽
Parce qu'utiliser un "switch case", une résurgence de l'antique "goto" et "label" c'est moins dégueu que faire "if else if else if" ? Perso, je trouve les 2 manières bien crades de toute façon.
Commentaire #64557 écrit par Loutre le 05/11/2012 à 14h23 | 👍🏽 👎🏽
Et comment faire une sélection sans utiliser ni switch si else if ?
Commentaire #64559 écrit par Epok__ le 05/11/2012 à 14h31 | 👍🏽 👎🏽
Ah ben il faut faire un choix évidemment, mais à moins d'un compilateur optimisé, le choix d'un switch ou if-else if n'est pas forcément un choix primordial en terme de performance.
Commentaire #64560 écrit par Loutre le 05/11/2012 à 14h37 | 👍🏽 👎🏽
J'ai justement posté un PEBKAC dans ce goût là, je l'ai loupé ou il est pas encore validé ?
Commentaire #64563 écrit par iFrancois le 05/11/2012 à 14h53 | 👍🏽 👎🏽
Le "switch case", une résurgence du "goto label" ? La, je suis vraiment pas sûr... Le "goto label" était dangereux en plus d'être crade, le "switch case", hormis son appel à "break" est quand même plus clean
Commentaire #64564 écrit par Mat+1 le 05/11/2012 à 14h53 | 👍🏽 👎🏽
@iFrancois Si je m'en réfère au statut actuel de la file de modération, ton PEBKAC sera en ligne demain ou mercredi.
Commentaire #64565 écrit par Clem le 05/11/2012 à 14h56 | 👍🏽 👎🏽
Je ne connaissais pas l'histoire du Théorème du singe, mais j'aime beaucoup. Surtout quand on le transpose à la "moyenne et grande entreprise".

[EDIT] Je balance : pspman80 est un ancien collègue à moi qui travaille maintenant dans une entreprise différente.
T'as l'air de bien t'amuser ! ;-)
Commentaire #64566 écrit par Clem le 05/11/2012 à 15h00 | 👍🏽 👎🏽
@Clem Super merci pour l'info :)
Commentaire #64567 écrit par iFrancois le 05/11/2012 à 15h00 | 👍🏽 👎🏽
@Mat+1
1- La manière dont on déclare un label en C est la suivante : "nom_du_label:"
2- Le fait qu'à la fin de chaque case il faille mettre un "break;" du plus bel effet sinon le code du/des case(s) suivant(s) est/sont interprété(s) aussi (ce qui accrédite l'idée que le case X: n'agisse que comme un label en somme.
J'admets que cela peut rendre le code plus lisible (critère subjectif) (et visiblement, sous certaines conditions, plus optimisé), mais l'utilisation massive de "break;" peut rendre le code plus crade (critère subjectif).
Commentaire #64571 écrit par Loutre le 05/11/2012 à 15h43 | 👍🏽 👎🏽
Lorsque c'est éducatif, c'est jamais disproportionné.

ET PAF !!! Ça c'est de l'éducationnage.
Commentaire #64573 écrit par Vordano le 05/11/2012 à 15h50 | 👍🏽 👎🏽
Au tout début de MySql, il ne supportait pas les requêtes imbriquées. Peut-être que la personne à l'origine de cette règle est restée bloquée à cette étape.

Il y a aussi le mec qui "ne croît pas aux bases de données" (sic) et donc sauve tout dans des fichiers. Mais bien sûr...
Commentaire #64575 écrit par Eric D le 05/11/2012 à 16h02 | 👍🏽 👎🏽
Le théorème du singe que je ne connaissait pas résume bien la situation j'imagine. Ca coupe court à tout progrès et toute évolution possible mais "c'est comme ça!"
Commentaire #64576 écrit par pspman80 le 05/11/2012 à 16h15 | 👍🏽 👎🏽
@Loutre :
1 - Certes l'écriture ressemble fortement, mais pour la machine, ça n'a rien à voir (cf 2)
2 - Dans le cas d'un "switch case", on utilise les instructions de tests de la machine pour vérifier le point de branchement (comme pour un if). Dans le cas du "goto", on branche directement en laissant la pile telle quelle, les registres dans leur état avant le "jump" (sauf le pointeur d'instructions). Si le goto est maintenant fortement déconseillé, c'est à cause de ce point qui peut provoquer des surprises à l'exécution : http://en.wikipedia.org/wiki/Goto (Par contre, c'est vrai que pour nettoyer en cas de crash, c'est plus simple d'avoir des points de branchements rapides...)
Commentaire #64582 écrit par Mat+1 le 05/11/2012 à 17h00 | 👍🏽 👎🏽
c'est triste...
Commentaire #64584 écrit par X3N le 05/11/2012 à 17h29 | 👍🏽 👎🏽
Suivant le langage le switch n'est pas forcément équivalent au "if ... else if ...". Certains langages t'obligent à mettre un break sinon ils ne compilent pas (le C# par exemple il me semble) mais je me souviens en avoir vu où ce n'était pas obligatoire. Dans ce cas sans le break le programme continue à évaluer les conditions suivantes. En mettant des break dans certains case et pas dans d'autres on peut donner de jolis maux de tête à la maintenance...
Commentaire #64600 écrit par Acorah le 05/11/2012 à 18h29 | 👍🏽 👎🏽
Tiens on dirait une ancienne prof de dev là ^^
Commentaire #64640 écrit par graou! le 05/11/2012 à 21h56 | 👍🏽 👎🏽
Et le pire, c'est qu'il repasse à l'avant-garde avec le mouvement NoSQL... Un visionnaire, cet homme ;)
Commentaire #64688 écrit par Mat+1 le 06/11/2012 à 10h26 | 👍🏽 👎🏽
Le break est justement là pour laisser la possibilité d'exécuter plusieurs case à la suite. Exemple :

case 1:
case 2:
instuctions
break;
case 3:

Ce qui évite de dupliquer le code du 2 dans 1.

Et sinon, cette alternative à switch et if...then...else ?
Commentaire #64769 écrit par Epok le 06/11/2012 à 18h29 | 👍🏽 👎🏽
Remarque, on peut toujours faire un truc du style :

While (A == 1) {}
While (A == 2) {}
Etc...

Ça a bien le même comportement...
Commentaire #64770 écrit par Epok__ le 06/11/2012 à 18h31 | 👍🏽 👎🏽