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.
Au cours de la migration de l'Intranet (qui gère entre autres l'emploi du temps, les notes des étudiants, absences, etc.), je me dis que j'allais regarder comment il est monté (plus de six mois que ma demande de documentation n'a plus aucun écho). J'ai donc eu la joie de découvrir :

– Des tables en swedish, d'autre en latin, certaines en utf8.
– Une base sans gestion de clés étrangères.
– Les mots de passe stockés en simple MD5.
– Le mot de passe root identique pour tous les campus.
– Une table contenant tous les jours de l'année (lundi 01 janvier 2014, semaine 1), qui d'ailleurs au vu des erreurs, a certainement été tapée à la main.
PEBKAC.
PEBKAC #9774 proposé par nucl3arsnake le 15/04/2014 | 36 commentaires | 👍🏽 👎🏽 +236
Qu'appelles-tu Intranet`?
Parce que pour moi, c'est un réseau interne, sur lequel on va trouver des serveurs qui peuvent héberger des applis de gestion de notes, des bdd...
A la lecture de la contribution, on a un peu l'impression d'un mélange d'un peut tout.
Commentaire #137625 écrit par chipeauteur le 15/04/2014 à 08h40 | 👍🏽 👎🏽
Fait par des étudiants, pour des étudiants, what else :)
Commentaire #137626 écrit par spidermoon le 15/04/2014 à 08h48 | 👍🏽 👎🏽
Ça désigne aussi souvent - par extension/abus de langage - l'ensemble des services accessibles uniquement depuis le réseau interne.
Commentaire #137631 écrit par Asdf le 15/04/2014 à 09h26 | 👍🏽 👎🏽
Pas besoin que ce soit fait par des étudiants pour avoir ce genre de résultats. Certains "professionnels" sont des pros de ce genre de boulettes...

Tu verrais la tête des bouses utilisées par mon ancien IUT (et la fac de ma copine) : de vieilles applis Java pas optimisées qui génèrent des images mappées pour les calendriers, le tout inaccessible sur mobile (et limite sur tablettes)...
Commentaire #137633 écrit par viki53 le 15/04/2014 à 09h39 | 👍🏽 👎🏽
Avec swedish par défaut, ça sent le MySQL de loin, non ?

Mais sauf erreur, swedish et latin1 fonctionnent bien ensemble, c'est simplement que l'algorithme de classement alphabétique est un peu adapté (en suédois, Å, Ä et Ö sont des lettres à part qui se placent après Z dans l'alphabet).
Commentaire #137634 écrit par /etc/passwd le 15/04/2014 à 09h48 | 👍🏽 👎🏽
Là c'est moi qui refuse que ce soit accessible sur le net vu le truc dégueulasse.
Commentaire #137640 écrit par nucl3arsnake le 15/04/2014 à 10h01 | 👍🏽 👎🏽
J'ai appris y'a peu que c'est fait sur un wampp de 2008.
Commentaire #137641 écrit par nucl3arsnake le 15/04/2014 à 10h03 | 👍🏽 👎🏽
Swedish, c'est la collation, latin1 et utf8, c'est l'encodage.
La collation swedish est bien meilleure que general pour classer les caractères accentués français.
Le mélange des encodages fait super mal, ça fait peur. De toute façon, il faut avoir les mêmes encodage+collation pour utiliser les opérateurs de comparaisons, c'est super la merde.
Concernant les clef étrangères, si jamais la base est en MyIsam, ils n'avaient juste pas le choix, ça ne gère ni clef étrangère, ni transactions, mais InnoDB a ses limitations (notamment en termes de longueur maxi d'un enregistrement, et pas d'index fulltext) qui font que parfois, on est obligé de l'utiliser (mais ça me donne toujours envie de pleurer de l'utiliser).

Pour la table des jours, ça fait un peu mal, surtout les erreurs, mais mysql ne peut avoir de fonction renvoyant une collection, et du coup, ça tente toujours les gens de faire ça, bien que ce soit une grossière erreur de conception applicative.
Commentaire #137642 écrit par Blandin le 15/04/2014 à 10h05 | 👍🏽 👎🏽
Och det stör på något på svenska?

désolé
Commentaire #137654 écrit par val070 le 15/04/2014 à 10h31 | 👍🏽 👎🏽
Alerte, le site est en train d'être piraté par un chinois du FBI. Val070 est un espion au service de la NSA du KGB de la Corée du Nord.
Commentaire #137656 écrit par Anomine le 15/04/2014 à 11h01 | 👍🏽 👎🏽
J'imagine bien le stagiaire qui a tapé le calendrier à la main.

En plus si il y as jour + jj/mm/aaaa + semaines ça change chaque année.

Tuteur -"Vas jusqu'en 2030 comme ça on à pas besoin de réengager un stagiaire avant longtemps"
Stagiaire -"Mais Mr, mon stage ne dure que 3 mois je n'aurais pas le temps!!!"
Commentaire #137658 écrit par Millman le 15/04/2014 à 11h42 | 👍🏽 👎🏽
Non refait chaque année. Et comme on est trop con on a pas le droit de le faire nous même.
Commentaire #137660 écrit par nucl3arsnake le 15/04/2014 à 11h49 | 👍🏽 👎🏽
(plus de six mois que ma demande de documentation n'a plus aucun écho)

Evidemment, si tu oublies les balises PHP ...

/me est loin
Commentaire #137661 écrit par Clapiote le 15/04/2014 à 12h12 | 👍🏽 👎🏽
Au sujet des tables en swedish, est-ce que quelqu'un pourrait d'ailleurs m'expliquer /pourquoi/ MySQL sélectionne toujours l'interclassement latin1_swedish_ci alors que bon, à tout hasard, utf8_general semble quand même un peu plus adapté en 2014 ?
Commentaire #137665 écrit par apprenti_hackeur le 15/04/2014 à 12h45 | 👍🏽 👎🏽
A part le dernier point, ce sont des choses qu'on rencontre hélas très souvent. J'ai déjà rencontré des développeurs qui ne savaient pas que la "collation" correspond à l'encodage de la table ou du champ.

Mais le coup de la table avec les dates de l'année... chapeau !
Commentaire #137666 écrit par aDev le 15/04/2014 à 12h48 | 👍🏽 👎🏽
Ce superbe langage -le plus sécurisé d'entre tous- a été créé par un suédois.
Commentaire #137667 écrit par H. Finch le 15/04/2014 à 12h50 | 👍🏽 👎🏽
Arrêtez cette propagande ! Les chinois du FBI n'existent pas.

Maintenant que l'erreur est réparée, est-ce que quelqu'un connaîtrait-il les codes de lancement ?
Commentaire #137673 écrit par Noname le 15/04/2014 à 12h57 | 👍🏽 👎🏽
On a du bon dans ma boite ^^. Et pas qu'en informatique.
Commentaire #137675 écrit par nucl3arsnake le 15/04/2014 à 12h59 | 👍🏽 👎🏽
Et le fait que le 1er janvier 2014 ne soit pas un lundi, ça gène pas un peu pour les emploi du temps ?
Commentaire #137685 écrit par Siggy le 15/04/2014 à 13h34 | 👍🏽 👎🏽
La "collation" c'est l'encodage ou pas ? Vous êtes deux à affirmer deux choses différentes...
Commentaire #137689 écrit par Tharkun le 15/04/2014 à 13h41 | 👍🏽 👎🏽
Tu as aussi de meilleures de perfs avec MyISAM. l'absence de clés étrangères n'est pas un PEBKAC en soi. Je n'utilise moi même les bdd plus que pour stocker les données, le SGBD ne doit rien contrôler, vu que l'application contrôle elle même forcément tout.
Commentaire #137690 écrit par Cartman34 le 15/04/2014 à 13h44 | 👍🏽 👎🏽
j'arrive pas à déterminer si ton commentaire est ironique ou sérieux "-le plus sécurisé d'entre tous-" ?
Commentaire #137691 écrit par Cartman34 le 15/04/2014 à 13h47 | 👍🏽 👎🏽
Ah, bon, je ne savais pas que c'était de la propagande. Je suis donc désolé d'avoir lancé de telles accusations à l'encontre de Val070.

À moins que... Et si... Mais bon sang, c'est bien sur. Noname est également un espion. Au secours, nous sommes envahis. J'espère qu'il ne vont pas détruire le site tout entier pour effacer leurs traces sinon comment pourrons nous survivre sans lui ?
Commentaire #137694 écrit par Anomine le 15/04/2014 à 14h11 | 👍🏽 👎🏽
Plus depuis qu'ils ont rajouté les lignes suivantes :

if($annee == 2014){
 	//	correction des erreurs de Marcel, lol
 	$avant = array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche");
 	$apres = array("mercredi", "jeudi", "vendredi", "samedi", "dimanche", lundi", "mardi");
 	$dateAuFormatJourJourMoisAnneeVirguleSemaine = str_replace($avant, $apres, $dateAuFormatJourJourMoisAnneeVirguleSemaine);
 }
 
 
Commentaire #137698 écrit par Link le 15/04/2014 à 14h52 | 👍🏽 👎🏽
En 2016 il faudra aussi ajouter un

if ($bisextile ==1) {...}
Commentaire #137701 écrit par Millman le 15/04/2014 à 15h20 | 👍🏽 👎🏽
Si je ne me trompe pas, la collation est liée à la manière dont doivent être triés les champs textuels, et n'est donc pas directement liée à l'encodage (même si ensuite, le serveur doit tenir compte de l'encodage pour savoir comment déchiffrer les bits, puis trier). Par exemple, le tri ne se ferait pas de la même manière en suédois, où « é » est une lettre bien différente de « e », et en français.
Commentaire #137702 écrit par apprenti_hackeur le 15/04/2014 à 15h22 | 👍🏽 👎🏽
Parce que les scripts c'est pour les faibles de toute façon :)
Commentaire #137704 écrit par Asdf le 15/04/2014 à 15h58 | 👍🏽 👎🏽
http://dev.mysql.com/doc/refman/5.0/fr/charset-mysql.html
Commentaire #137705 écrit par aDev le 15/04/2014 à 16h00 | 👍🏽 👎🏽
Facile, c'est 0000
Commentaire #137707 écrit par ygnobl le 15/04/2014 à 16h21 | 👍🏽 👎🏽
En fait pour moi la collation comprend l'encodage et le jeu de caractère :
latin1_swedish est une collation, utf8_bin une autre

@Cartman : MyIsam n'a pas de si bonnes perfs que ça
http://www.jortk.nl/2008/12/mysql-performance-benchmark-myisam-versus-[...]

Et je ne suis pas d'accord avec ce que tu dis ensuite, ajouter des contraintes à une table permet justement de décharger l'application de certaines fonctions et d'améliorer les perfs (ex. tables liées avec action lors de la suppression ou l'update d'un champ).
Après l'application peut parfaitement piloter ces contraintes si besoin, c'est plutôt comme ça que je vois les choses.
Commentaire #137708 écrit par aDev le 15/04/2014 à 16h26 | 👍🏽 👎🏽
L'encodage, c'est la façon dont est codé les caractères.
En Latin-1 : 'A' = 41 ; 'é' = E9
En UTF8 : 'A' = 41 ; 'é' = C3A9
La collation, c'est l'ordre dans lequel sont triés les caractères ('A' avant 'é', ou 'é' avant 'A').

Techniquement, la collation est liée à l'encodage puisque le tri se ferra différemment suivant si on compare 41 avec E9 ou 41 avec C3A9.
Donc pour avoir le même ordre de tri, on doit avoir des collations différentes suivant l'encodage : latin1_patate et utf8_patate.

En conclusion, fonctionnellement la collation est différente de l'encodage, mais techniquement une collation ne fonctionne qu'avec un encodage particulier.
Pour répondre à la question "La "collation" c'est l'encodage ou pas ?" : Non, mais un peu quand même.
Commentaire #137709 écrit par Shirluban le 15/04/2014 à 17h47 | 👍🏽 👎🏽
En décisionnel, pour certains besoins, avoir une table de dates n'est pas si débile. Moi par exemple j'avais créé cette table (pas remplie à la main quand même, faut pas pousser mémé dans les ordis) avec certaines valeurs calculées (code du trimestre précédent, identifiant du mois précédent, suivant, numéro de semaine dans le trimestre/semestre) ce qui simplifiait les requêtes et augmentait les performances.
Commentaire #137710 écrit par ZeToaster le 15/04/2014 à 18h01 | 👍🏽 👎🏽
Si vous avez un doute, il y a probablement une bonne raison. Il se peut effectivement une ironie se soit glisser.
Commentaire #137714 écrit par H. Finch le 15/04/2014 à 18h47 | 👍🏽 👎🏽
Je confirme qu'une table des dates n'est absolument pas un pebkac voir
http://blog.developpez.com/elsuket/p7872/snippets/creer_une_table_de_d[...]

Parce que calculer 150 fois par minute que le 3/01 était un vendredi, ce n'est pas performant du tout.
Il y a même des puristes sur l'art de modéliser le temps :
http://sqlpro.developpez.com/cours/gestiontemps

En revanche ce qui est crétin et PEBKAC c'est de remplir la table à la main, on trouve plein d'exemple avec le remplissage de la table y compris les jours fériés déduit de la date de Paques.
Après un petit update manuel éventuel pour indiquer les jours qui sont des vacances, et le tour est joué.
Commentaire #137717 écrit par framboise le 15/04/2014 à 19h46 | 👍🏽 👎🏽
Cest vrai qu'une suédoise et un chaud latin, cela va bien ensemble
Commentaire #137719 écrit par spidermoon le 15/04/2014 à 20h41 | 👍🏽 👎🏽
Il n'y a pas de chinois au FBI, que des français. Les chinois sont tous à la CIA.

(un bonbon à celui qui voit de quoi je parle)
Commentaire #137730 écrit par Link le 16/04/2014 à 15h14 | 👍🏽 👎🏽