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.
En branche complémentaire informatique au lycée, nous devions développer un projet avancé en JavaScript, par équipes de trois.
Je charge mes deux collègues de faire quelques modifications pour ajouter les fonctions sur lesquelles ils travaillent, et les intégrer au code. Bien entendu, le lendemain plus rien ne fonctionne (et le fichier source a été écrasé, réenregistré).

Après une lecture rapide du code, il ne semble pas y avoir de problème flagrant. Mais une heure plus tard, ayant parcouru les 650 lignes de code de long en large, je comprends que le script est envahi par des caractères spéciaux invisibles (tabulations, etc.) en lieu et place des espaces "normaux". PEBKAC.
PEBKAC #6861 proposé par [Guigui575] le 04/02/2013 | 34 commentaires | 👍🏽 👎🏽 -145
C'est toi le PEBKAC :
1. Indenter avec des tabulations n'a jamais posé de problème, y compris en Javascript.
2. Si tu avais utilisé la console de debug Javascript de ton navigateur, il t'aurait fallu moins d'une heure pour localiser le problème !

Et je ne vois toujours pas où est la cause du non-fonctionnement du script, soit dit en passant...
Commentaire #77456 écrit par sebyx le 04/02/2013 à 17h37 | 👍🏽 👎🏽
"(tabulations, etc.)"
On peux avoir plus d'infos sur le "etc"? Car c'est pas les tabulations qui poseront problèmes...
Commentaire #77458 écrit par Sihn le 04/02/2013 à 17h41 | 👍🏽 👎🏽
Les caractères non imprimables ne sont pas interprétés...
Donc oui comme sebyx je vois pas pourquoi le script ne fonctionnerait pas.
Commentaire #77459 écrit par xTG le 04/02/2013 à 17h42 | 👍🏽 👎🏽
Il y avait des Espaces Sans chasse etc. en plus des Tabulations mais à cause d'une conversion de format de fichier (UTF-8 vers autre chose que je ne me souviens plus), ça avait mis le bordel (Possible qu'ils soient passés par un truc comme Microsoft Expression Web qui est une grosse bouse en soi pour les Conversions xD)

Mais effectivement, le Debug javascript m'aurait bien aidé, encore faut-il préciser que on ne nous explique pas tout au Lycée et que c'est parfois difficile de comprendre xD C'est pas une Ecole d'Informatique hein ^^

Et j'ai mis "tabulations" car je ne sais pas trop comment expliquer cela autrement, la dernière opération que j'ai faite avant que le Script marche c'est d'effacer du "vide" :P
Me demandez pas comment ils ont fait ^^
Commentaire #77465 écrit par [Guigui575] le 04/02/2013 à 17h59 | 👍🏽 👎🏽
ils ont peut-être mis des espaces insécables comme dans ce commentaire...
Commentaire #77466 écrit par pbx le 04/02/2013 à 18h10 | 👍🏽 👎🏽
Je valide, j'ai déjà eu le même problème. Certains éditeurs insèrent des caractères invisibles qui font déconner le script.
Commentaire #77481 écrit par Rudloff le 04/02/2013 à 18h57 | 👍🏽 👎🏽
Heu Belle bande de pebkac. Il ne faut pas utiliser n'importe quel éditeur ;)
Et ce Il n'y a pas de sauvegarde (garder une copie de ce qui marche) ou pas versionné (git, svn, on peut rêver)?
Commentaire #77484 écrit par but2ene le 04/02/2013 à 19h06 | 👍🏽 👎🏽
@[Guigui575] : Tu lances un dés pour chaque mot pour savoir si tu lui mets une majuscule ?

Édit : j'pensais être encore co avec le compte GN, bref, je mets son masque.
Commentaire #77487 écrit par X3N le 04/02/2013 à 19h12 | 👍🏽 👎🏽
GN qui met un s à dé au singulier ? Ma vie s'écroule.
Commentaire #77494 écrit par FBM le 04/02/2013 à 19h30 | 👍🏽 👎🏽
J'ai aussi eu ce problème assez souvent lors de mon DUT : En copiant/collant des lignes de code d'un PDF, si on ne fait pas un rechercher/remplacer pour les "espaces", ça ne veut pas compiler : caractères invalides...
Commentaire #77496 écrit par tony83 le 04/02/2013 à 19h38 | 👍🏽 👎🏽
ça me rappelle un pote qui avait passé une heure à essayer de débugger un bout de code en C à cause d'une virgule là où il aurait du y avoir un point...
Commentaire #77499 écrit par Pyrhan le 04/02/2013 à 19h43 | 👍🏽 👎🏽
En YAML, 1 tabulation != 4 espaces, c'est bien relou.

Mais sinon, en Javascript, ouais, je vois pas trop.
Commentaire #77500 écrit par neeko le 04/02/2013 à 19h46 | 👍🏽 👎🏽
En plus, selon l'éditeur utilisé, on peut décider d'interpréter les tabulations par des espaces (dont on peut préciser le nombre d'ailleurs). À part en Python ça ne devrait pas poser de problèmes ...
Commentaire #77502 écrit par Noname le 04/02/2013 à 20h13 | 👍🏽 👎🏽
Les espaces et les tabulations c'est pas compatible avec tout les charsets normalement?
Commentaire #77505 écrit par Hum. le 04/02/2013 à 20h31 | 👍🏽 👎🏽
Quant à l'écrasement du fichier, tu veux dire pas de gestion de version, exact ?
Commentaire #77507 écrit par mini le 04/02/2013 à 20h35 | 👍🏽 👎🏽
D'accord, mais à la rigueur, pebkac pour eux de pas avoir testé ptet, mais bon, sinon c'est pas comme si ça pouvait être fait exprès, et au lycée, c'est pas non plus votre domaine d'expertise alors vous pouviez pas tout savoir.
Commentaire #77509 écrit par D le 04/02/2013 à 20h38 | 👍🏽 👎🏽
En fait le soft en JS était un leurre. Le vrai code était écris en whitespace. :)
Commentaire #77511 écrit par cpn42 le 04/02/2013 à 20h38 | 👍🏽 👎🏽
Ca ressemble à un problème d'encodage votre histoire. Quand vous envoyez un fichier depuis un serveur, vous devez spécifier l'encodage de celui-ci. Sinon le navigateur ne sera pas apte à le lire.

Ce n'est pas en "supprimant du vide" que vous avez résolu le problème, c'est en utilisant un éditeur de texte qui a reconverti votre fichier dans le bon encodage.
Commentaire #77521 écrit par OzoneGrif le 04/02/2013 à 21h09 | 👍🏽 👎🏽
Heureusement que tu n'as pas utilisé ce compte, du coup.

Au fait, c'est ton compte, ou bien c'est un compte commun que chacun peut utiliser en trouvant le mot de passe planqué sur le site ?
Commentaire #77527 écrit par Psychosophe le 04/02/2013 à 22h47 | 👍🏽 👎🏽
C'est aussi ce qui m'a choqué, ce "fichier source a été écrasé, réenregistré"
Mais bon, c'est comme ça qu'on apprend
Commentaire #77530 écrit par lycanth le 04/02/2013 à 23h07 | 👍🏽 👎🏽
Ce n'est surtout pas leur spécialité ... et en branche annexe des cours, il est difficile de tout aborder. Mais bon, SVN n'est pas si compliqué à comprendre, et rien qu'un poly sur le sujet et 2/3 mots de la part d'un prof peuvent lancer les curieux.
Commentaire #77533 écrit par mini le 05/02/2013 à 00h20 | 👍🏽 👎🏽
Un gestionnaire de version au lycée ? Même en école d'ingé (pas spécialisé en info, mais j'en ai fait quand même pas mal) j'en ai jamais entendu parler...
Commentaire #77543 écrit par contrebasse le 05/02/2013 à 09h17 | 👍🏽 👎🏽
Au lycée, les gars ! La sauvegarde, ok, mais le gestionnaire de version...
Commentaire #77544 écrit par contrebasse le 05/02/2013 à 09h18 | 👍🏽 👎🏽
@Psychosophe, qui a repris l'avatar de GN : c'est un compte commun ! Le mdp est ichbinadolf

*je ne mets jamais de . quand je termine une phrase avec un mdp, de peur que le type ne le tape ensuite.
Commentaire #77622 écrit par Aaargh!!! le 05/02/2013 à 14h49 | 👍🏽 👎🏽
http://lite.framapad.org/p/pebkac ;)
Commentaire #77679 écrit par X3N le 05/02/2013 à 17h50 | 👍🏽 👎🏽
Ben, la plupart du temps non plus. Par convention, une tabulation vaut 8 espaces.

Après, certains éditeurs permettent de régler cette largeur librement à l'affichage. Et je vois assez souvent du code indenté à coup de 4 espaces, sans jamais comprendre pourquoi ils n'ont pas utilisé le caractère "tabulation" à la place.

D'ailleurs, quelqu'un a-t-il une idée sur le sujet ? Pourquoi des flopées d'espaces qui vous multiplient parfois la taille d'un fichier par 1,5 tant elles sont nombreuses ? Quel est l'intérêt de ce caractère comparé à la tabulation, lorsque utilisé dans le but d'indenter ?
Commentaire #77719 écrit par Hart le 05/02/2013 à 19h46 | 👍🏽 👎🏽
C'est justement pour éviter de casser l'indentation car le caractère TAB n'a pas une taille fixe dans les éditeurs de texte. J'ai déjà tout expliqué dans les commentaires d'un PEBKAC réçent. Fouilles un peu si tu veux plus de détails ;)
Commentaire #77752 écrit par OzoneGrif le 05/02/2013 à 22h20 | 👍🏽 👎🏽
Mais c'est bien de ça dont je parle, une p'tite sauvegarde des fichiers de temps en temps dans un dossier daté ça ne mange pas de pain.
Perso j'ai découvert le ctrl-s en fac quand ma copine a décidé de vérifier si le four pouvait fonctionner en même temps que la bouillotte électrique ; quand tu perds une heure de rapport ça vaccine.
Commentaire #77757 écrit par lycanth le 05/02/2013 à 23h27 | 👍🏽 👎🏽
Je vais essayer de retrouver ton explication. Mais là de prime abord, je suis vraiment curieux de savoir ce que ça va être parce qu'à moins d'indenter à la fois avec des tabulations et des espaces (ci après "indenter comme un chacal"), il n'y a aucune raison que ça brise quoi que ce soit, non ?

Mais je n'insiste pas sur les questions, retrouvons déjà cette explication !

EDIT: Ah bah je viens juste de la retrouver, en pensant que je n'y arriverai pas avant demain. Okay donc c'est bien dans le cas de mélanges que le problème survient. Mais je réplique avec d'autres solutions :

1. l'IDE qui détecte le caractère d'indentation et la taille du décalage autorisé pour chaque document ! Ça existe !

2. Et aussi, une convention au sein d'un groupe de travail sur ce qui doit être utilisé. Le dialogue et les conventions restent le meilleur moyen d'avoir du travail propre.

3. Ou encore, l'utilisation unique des tabulations plutôt que de convertir d'office en un nombre d'espaces, car il est bien plus simple de définir ses propres préférences pour la largeur d'une tabulation que d'être contraint de vérifier, accepter et adopter le nombre d'espace d'un autre pour chaque fichier qui nous passe sous la main.

Je le répète, si on utilise uniquement des espaces pour éviter de casser l'indentation, alors le même objectif peut être atteint avec des tabulations, plus légère et pratique pour tout le monde. Sauf bien sûr si vous indentez comme un chacal, que vous soyez seul ou en groupe.
Commentaire #77762 écrit par Hart le 06/02/2013 à 01h31 | 👍🏽 👎🏽
Ca, c'est typique des gens qui copient-collent du code indenté dans Skype. Skype remplace les tabulations au début par des caractères bizarres et du coup, ça ne marche plus. Je l'ai déjà eu avec du SQL et du Java mais j'imagine que le problème est le même en JS.
Commentaire #77822 écrit par Eric D le 06/02/2013 à 11h52 | 👍🏽 👎🏽
Il se passera quoi en Python ?

Python oblige à indenter, mais chacun est libre d'utiliser ce qu'il souhaite, espace ou tabulation, et dans le nombre de son choix.
Commentaire #77954 écrit par Hart le 06/02/2013 à 19h16 | 👍🏽 👎🏽
Merci, c'est sympa! (J'ai finalement trouvé la page des clés 24h après avoir posé la question ici, mais j'avais cherché avant au moins le minimum syndical, je n'ai donc pas à en rougir.)

Ô grande confrérie des nazis de la grammaire! Je jure de servir fidèlement sous cet avatar et d'en être toujours digne!
Commentaire #77996 écrit par Psychosophe le 07/02/2013 à 07h10 | 👍🏽 👎🏽
Le groupe de travail qui a les mêmes conventions, c'est bien gentil, mais ça vaut pour les codes qui ont une courte durée de vie, ou qui ne sont pas supposés maintenables par quelqu'un d'autre, longtemps après que tu sois parti. On ne peut pas s'attendre à ce qu'un code qui a 20 ans (c'est le cas du logiciel sur lequel je travaille en ce moment) ai été développé sur les mêmes machines et les mêmes environnements que ceux que va posséder un informaticien en 2013.
Partant de là, pour respecter une indentation cohérente, qui ne variera pas d'une machine à l'autre, quelque que soit son OS, son éditeur de texte et j'en passe, l'entreprise pour laquelle je travaille a comme stricte consigne de ne laisser que des espaces dans nos codes. (Et en fait, d'indenter systématiquement avec 3 espaces). Ça va de pair avec la consigne de ne jamais dépasser 60 caractères par ligne : quelque soit la machine et la taille de l'écran, le code est compacte et lisible.
Après, bien sûr, libre à nous de configurer les éditeurs de texte pour qu'une tabulation soit convertie en 3 espaces..
Commentaire #78135 écrit par Ayanimea le 07/02/2013 à 20h51 | 👍🏽 👎🏽
Et donc, ton entreprise fait quoi à part précisément définir une convention ?
Commentaire #78591 écrit par Hart le 13/02/2013 à 12h18 | 👍🏽 👎🏽