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.
Il y a quelque temps, j'ai passé un entretien d'embauche dans une PME. Après une discussion avec le chef d'entreprise, je discute un peu avec un développeur qui me propose de jeter un œil au code de leur projet en cours. C'est alors que je vois tout un tas de fonctions de ce style, donc celle-ci qui m'avait fortement marqué :

function convertitEnMinuscule($texte)
{
   $texte = str_replace('A', 'a', $texte);
   $texte = str_replace('B', 'b', $texte);
   [...]
}
PEBKAC.
PEBKAC #5758 proposé par kibou le 04/10/2012 | 25 commentaires | 👍🏽 👎🏽 +341
le tolower() (enfin un truc du genre, je suis pas dev non plus, mais j'ai fais de l'algo...) est pas très connu, c'est pour ça! :D
Commentaire #60834 écrit par geek85 le 04/10/2012 à 12h42 | 👍🏽 👎🏽
function convertitEnMinuscule($texte){
return strtolower($text);
}
Si cette fonction n'existe pas, c'est couillons d'utiliser replace 26 fois. Il est plus simple de faire pour chaque caractère, s'il est compris entre 'A' et 'Z' tu enlèves la différence entre 'A' et 'a'. Puis en avant en avant Guingamp !
Commentaire #60836 écrit par but2ene le 04/10/2012 à 12h47 | 👍🏽 👎🏽
Et en + du fait que ce soit inutile, un nom de fonction en francais... A MORT !
Commentaire #60843 écrit par TuXiC69 le 04/10/2012 à 12h54 | 👍🏽 👎🏽
Il a pas eu le temps de te montrer sa fonction pour convertir des string en nombre?

function conversionDeChaineEnNombreEntierMaisPasAVirgule($texte){
if(!strcmp($texte, "0")
return 0;
else if(!strcmp($texte, "1")
return 1;
...
else if(!strcmp($texte, "4294967296")
return 4294967296;
}

Une fonction de ce genre sert tous les jours, spécialement en PHP
Commentaire #60844 écrit par Link le 04/10/2012 à 13h04 | 👍🏽 👎🏽
Je ne suis pas dev, mais quand je faisais du C en iut, on procédait comme ceci:

- lecture du caractère
- si (valeur int) comprise entre 64 et 90 alors ajouter 32
- répéter jusqu'a fin de chaine

bon, je sais qu'il y a des fonctions qui le font très bien, mais c'était dans un but d'apprentissage.
Commentaire #60850 écrit par Bourriks le 04/10/2012 à 13h21 | 👍🏽 👎🏽
francisons nos programmes !!! :-)
Commentaire #60852 écrit par juu le 04/10/2012 à 13h29 | 👍🏽 👎🏽
Faut continuer, pour les systèmes 64bits :-)
Commentaire #60854 écrit par juu le 04/10/2012 à 13h31 | 👍🏽 👎🏽
Et pour l'unicode à partir de U+0100 ? :-)

Bon, pour apprendre oui c'est bien, mais faut pas utiliser ça dans une entreprise, surtout que là c'est mal fait, vraiment pas au top.
Commentaire #60855 écrit par juu le 04/10/2012 à 13h37 | 👍🏽 👎🏽
100 francs et un berlingot aussi ?
Commentaire #60857 écrit par mini le 04/10/2012 à 13h43 | 👍🏽 👎🏽
C'est pas un truc "récent" le tolowercase ?
Commentaire #60868 écrit par Hum. le 04/10/2012 à 15h20 | 👍🏽 👎🏽
A tout hasard c'était en quel langage ? Si ça se trouve il ne possède pas de fonction pour mettre une chaine en minuscules/majuscules.
Commentaire #60877 écrit par Acorah le 04/10/2012 à 17h26 | 👍🏽 👎🏽
le langage était le php
ne pas connaitre le strtolower c'est vraiment pas possible
Commentaire #60879 écrit par kibou le 04/10/2012 à 17h34 | 👍🏽 👎🏽
Surtout qu'il ne va pas pouvoir gérer les encodages ni les caractères spéciaux ou accentués en faisait 26 str_replace()... Sans compter la perte de performance, qui dans certains cas pourrait être désastreuse.

On devrait obliger les développeurs qui apprennent un nouveau langage à lire la documentation des bibliothèques et fonctions internes. Ca fait gagner un temps fou et elles font le travail beaucoup mieux que tout ce que vous pourrez imaginer comme bidouillage en remplacement.
Commentaire #60881 écrit par OzoneGrif le 04/10/2012 à 17h42 | 👍🏽 👎🏽
Un jour je suis tombé sur une fonction avec un Switch-case dans notre programme. En lisant le code, j'ai compris rapidement que le développeur voulait, à l'origine, traiter toutes les possibilités de deux booléens.

case ( !A && !B)
case ( A && !B )
case ( !A && B )
case ( A && B )

Bon, pourquoi pas... sauf que ça, c'était à l'origine. Entre temps, il avait rajouté cinq autres booléens.
Et oui, il a fait toutes les combinaisons. Des pages et des pages de combinaison.

Je devais trouver un bug dans ce bordel. Autant dire que j'ai tout réécrit. L'algorithme final faisait une quinzaine de ligne, faisait la même chose, et sans bug.
Commentaire #60884 écrit par OzoneGrif le 04/10/2012 à 17h48 | 👍🏽 👎🏽
Récent peut-être pour toi, mais dans la réalité ça existe depuis 2000 avec PHP 4.
http://php.net/manual/fr/function.strtolower.php
Commentaire #60886 écrit par OzoneGrif le 04/10/2012 à 17h55 | 👍🏽 👎🏽
Ouais enfin la javadoc elle est un peu longue à lire... Et tellement passionnante ;)
Commentaire #60888 écrit par but2ene le 04/10/2012 à 17h58 | 👍🏽 👎🏽
lol même si l'on ne connait pas le nom de fonctions par coeur, on va chercher sur la doc une fonction de traitement de chaîne qui correspond à nos besoin :p avec certains IDE, et l'intellisense on peut même s'éviter de quitter momentanément l'éditeur ;)
Commentaire #60900 écrit par ploup le 04/10/2012 à 19h03 | 👍🏽 👎🏽
d'ailleurs j'aimerai bien travailler dans ce genre de boîte, pas besoin de se fouler à fond pour respecter les deadlines :)
Commentaire #60901 écrit par ploup le 04/10/2012 à 19h05 | 👍🏽 👎🏽
Ça marche pas en EBCDIC ton truc.

C'était un communiqué du comité pour la portabilité.
Commentaire #60903 écrit par Shirluban le 04/10/2012 à 19h24 | 👍🏽 👎🏽
de toute manière même si il ya une fonction qui le fait dans le langage utilisé elle fait pas le strtolower magiquement hein

elle applique des instruction plus bas niveau c'est tout. c'est ca qui est bien avec le PHP ta masse fonctions déjà toute faites.
Commentaire #60909 écrit par Glpl le 04/10/2012 à 20h03 | 👍🏽 👎🏽
Ou pas... Toutes les sources doivent être conventionnalisées en anglais.
Commentaire #60913 écrit par Cartman34 le 04/10/2012 à 20h46 | 👍🏽 👎🏽
Il y a aussi le coup du replace avec une expression régulière qui pourrait bien fonctionner (mais dans ce cas-là, le souci se trouve au niveau des diacritiques ... ces derniers sont d'ailleurs vachement souvent oubliés dans les "to upper" et "to lower").

Il faudrait lui demander comment sont gérés les caractères étrangers avec signes, ainsi que les majuscules accentuées (merci l'informatique pour nous faire oublier les signes sur les majuscules).
Commentaire #60944 écrit par Hizin le 05/10/2012 à 11h33 | 👍🏽 👎🏽
C'est français, ça, « conventionnaliser » ?
Commentaire #60979 écrit par Tharkun le 05/10/2012 à 15h58 | 👍🏽 👎🏽
Un entier non signé codé sur 32 bits peut représenter 2^32 valeurs, de 0 à 4294967295 !
Commentaire #61050 écrit par Nono le 06/10/2012 à 18h27 | 👍🏽 👎🏽
Bah là s'il ne connait pas strtolower, suffisait d'un str_replace(array('A','B','C','D',...),array('a','b','c','d',...),$texte) mais dans tout les cas 1 ligne de code suffit ^^
Commentaire #64460 écrit par graou! le 03/11/2012 à 17h10 | 👍🏽 👎🏽