477ème édition des LIDD : Liens Idiots Du Dimanche

Du mauvais code, du GoT, du tower defense et d'excellentes fictions

477ème édition des LIDD : Liens Idiots Du Dimanche

Le 12 avril 2014 à 22h00

Commentaires (50)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar







youri_1er a écrit :



Après je pense que tu le fout pas en prod’!





euh…. <img data-src=" />


votre avatar







Jarodd a écrit :



Code de porc <img data-src=" />





Avec un peu de moutarde, le code de porc :)

En général ce qui accompagne le code de porc, c’est le navet. ;)


votre avatar







LAlbert11 a écrit :



<img data-src=" />







fixed <img data-src=" />


votre avatar

Game of Thrones à la TV française.

Tellement vrai !

<img data-src=" />

votre avatar

J’adore la musique sur “Fuck you internet” <img data-src=" />

votre avatar

La frame avec scrollbar de la semaine <img data-src=" />

votre avatar

Bon LIDD à tous mais je suis le seul où youtube n’est pas accessible ??

votre avatar

“Hardventure Into The Duat”, je crois pas que ce soit une vidéo, mais plutôt un jeu. Du coup ça marche pas &gt;_&lt;

votre avatar







LAlbert11 a écrit :



<img data-src=" />







Avec Alexandre Astier je pense qu’on aurait quelque chose de très bon également, mais c’est bien le seul <img data-src=" />



Enfin vu la qualité de la série, le risque était trop grand <img data-src=" />







calahan59 a écrit :



TF1 a toujours tort <img data-src=" />



TF1 cay le mal <img data-src=" /><img data-src=" />

<img data-src=" />


votre avatar







the_frogkiller a écrit :



mdr pour le code de porc on n’est pas loin dans certains cas :







Le best c’est, pour moi, le tout premier “Ha count(*) amatata”



Bon le code est crade ok, mais j’aime par dessus tout le commentaire du posteur “Sinon on peut utiliser count() en sql”….



Pourquoi modifier une requête dont on ne sait rien dans le contexte quand existe une fonction qui sert justement à renvoyer le nombre de résultats d’une requête <img data-src=" />



Bref, je suis loin d’avoir tout lu mais à mon avis, paille poutre tout ça <img data-src=" />


votre avatar







nktrs a écrit :



Plus d’excuses pour ne pas manger de fruits <img data-src=" />





ben c’est nul, j’y suis allé, j’ai cliqué mur et pas mur, meme pas une video de pommes, rien. Que de la page noire…

<img data-src=" />

‘vais manger une pizza du coup!


votre avatar







barlav a écrit :



ben c’est nul, j’y suis allé, j’ai cliqué mur et pas mur, meme pas une video de pommes, rien. Que de la page noire…

<img data-src=" />

‘vais manger une pizza du coup!





+1, page noire aussi…


votre avatar







Highmac87 a écrit :



Game of Thrones à la TV française.

Tellement vrai !

<img data-src=" />









+1



Même les séries Anglaises dépassent les Françaises :(



La honte, franchement la honte.


votre avatar







Yzokras a écrit :



La frame avec scrollbar de la semaine <img data-src=" />







oui


votre avatar







Fuinril a écrit :



Le best c’est, pour moi, le tout premier “Ha count(*) amatata”



Bon le code est crade ok, mais j’aime par dessus tout le commentaire du posteur “Sinon on peut utiliser count() en sql”….



Pourquoi modifier une requête dont on ne sait rien dans le contexte quand existe une fonction qui sert justement à renvoyer le nombre de résultats d’une requête <img data-src=" />



Bref, je suis loin d’avoir tout lu mais à mon avis, paille poutre tout ça <img data-src=" />





il a raison dans sa méthode ne fait que compter le nombre de résultats et ne se sert pas des résultats retournés. ça ne fait pas grandes différences si la requête retourne qu’une 10ène de résultats mais si on en a 1 millions… on consomme de la bande puissance et de la puissance coté bdd et client. le mieux est de faire faire le count par la bdd qui est plus optimisée pour faire ça


votre avatar







the_frogkiller a écrit :



il a raison dans sa méthode ne fait que compter le nombre de résultats et ne se sert pas des résultats retournés. ça ne fait pas grandes différences si la requête retourne qu’une 10ène de résultats mais si on en a 1 millions… on consomme de la bande puissance et de la puissance coté bdd et client. le mieux est de faire faire le count par la bdd qui est plus optimisée pour faire ça







Ou pas.



Je ne critique pas le fait que ce soit effectivement un code atroce… juste qu’on ne modifie une requête gratuitement sans en comprendre le contexte.

Et faire la même requête en count c’est d’abord pas forcément possible dans le cas d’une requête générée… et c’est surtout parfaitement inutile !



il existe une magnifique fonction en php qui s’appelle mysql_num_rows (et qui a son équivalent en pdo ou en mysqli) qui sert justement à ça et qui est parfaitement optimisée (bien plus que de refaire une requête count).



Donc, le mec critique un code dégueulasse, ok. Mais sa “‘solution” est presque aussi crade que le code qu’il critique <img data-src=" />


votre avatar







Fuinril a écrit :



Oulà…. je viens de retourner voir le site pris d’un gros doute. Il me semblait que le paramètre passé était une ressource et non une string (j’avais pas vu le mysql_query).



Ok, je raconte que de la merde. Désolé <img data-src=" />







Ahah pas grave ;)


votre avatar







montecristo a écrit :



Zavez rien compris le if(this==null) fait sens en physique quantique…C’est de la métaphysique,z’êtes trop terre à terre <img data-src=" />





bha tu peu faire aussi un

if(this){

/rien la!/

}

else

{



}



Juste histoire d’être sur de faire un truc bien lourd!


votre avatar

<img data-src=" />

votre avatar

Edit : Deuzzz !!

votre avatar

<img data-src=" />

votre avatar

LIDD !



Fantôme de Merde &lt;3

votre avatar

<img data-src=" />

votre avatar

<img data-src=" />

votre avatar

Interview du photographe qui a pris, sans doute, une des photos les plus connues du monde.(en anglais)

votre avatar
votre avatar







Reznor26 a écrit :



&gt; TROLL &lt;





Et la brève pour comprendre <img data-src=" />





Les cons. <img data-src=" />


votre avatar

Plus d’excuses pour ne pas manger de fruits <img data-src=" />

votre avatar

Code de porc <img data-src=" />

votre avatar







Reznor26 a écrit :



&gt; TROLL &lt;

Et la brève pour comprendre <img data-src=" />





Pour être tout à fait honnête, les explications de TF1 dans cette histoire. <img data-src=" />


votre avatar







Reznor26 a écrit :



Pour être tout à fait honnête, les explications de TF1 dans cette histoire. <img data-src=" />







TF1 a toujours tort <img data-src=" />


votre avatar

mdr pour le code de porc on n’est pas loin dans certains cas :



if(this==null){

….}

votre avatar



Et si le scénariste de Game of Thrones (Le Trône de Fer) avait présenté son projet à des producteurs français, la série aurait-elle était équivalente ? La réponse est aisée à deviner.



<img data-src=" />

votre avatar







the_frogkiller a écrit :



mdr pour le code de porc on n’est pas loin dans certains cas :





J’avoue quand tu débute en code et que tu le fait en autodidacte tout seul dans ton coins et que tu comprend pas pourquoi un if(!this) {…} ne marche pas tu le tente le if(this == null) {…} … juste pour voir si ça marche pas mieux! <img data-src=" />



Après je pense que tu le fout pas en prod’!


votre avatar







Fuinril a écrit :



Donc, le mec critique un code dégueulasse, ok. Mais sa “‘solution” est presque aussi crade que le code qu’il critique <img data-src=" />







<img data-src=" /> ??



Comment savoir combien il y a de pages dans un livre ?



A: en regardant le numero de la dernière page

B: en lisant toutes les pages et en ajoutant 1 à chaque page lue

C: je ne sais pas lire ni compter


votre avatar







127.0.0.1 a écrit :



<img data-src=" /> ??



Comment savoir combien il y a de pages dans un livre ?



A: en regardant le numero de la dernière page

B: en lisant toutes les pages et en ajoutant 1 à chaque page lue

C: je ne sais pas lire ni compter

D: obiwan kenobi





<img data-src=" />


votre avatar







127.0.0.1 a écrit :



<img data-src=" /> ??



Comment savoir combien il y a de pages dans un livre ?



A: en regardant le numero de la dernière page

B: en lisant toutes les pages et en ajoutant 1 à chaque page lue

C: je ne sais pas lire ni compter







Bon, petit court de programmation pour les nuls.



Pourquoi la solution critiquée est mauvaise ? the_frogkiller a déjà répondu, rien à redire dessus.



Pourquoi faire une deuxième requête en count est une (très) mauvaise idée ? Trois raisons :




  1. Ca peut être assez lourd de regénérer une requête count avec les mêmes paramètres que la première. Encore une fois, en milieu pro, la grande, que dis-je ?, l’immense majorité des requêtes sont générées ce qui peut nécessiter un traitement assez lourd (pour peu que ça soit possible - ce qui est loin d’être toujours le cas).

  2. Une deuxième requête en count sera très rapide dans le cas d’une requête simple, dans celui d’une requête complexe avec jointures multiples c’est pas gagné.

  3. Absolument rien ne dit qu’entre les deux requêtes (le select simple et le count) il n’y ait pas eu de nouveaux enregistrements…. donc qui donneraient deux réponses différentes (ah, oui, la requête a déjà été exécuté dans le cas donné en critique).



    Conclusion :

    Utiliser les outils mis à disposition est toujours le meilleur choix possible. Même effet sans les 3 problèmes cités plus haut. Réinventer la roue ça marche rarement vraiment bien….





    Sinon je vote pour la réponse A… que fait la que je donne solution mais que ne font pas les autres.





    Bref, je ne vais pas ergoter, le code est cradingue au possible, mais la solution n’est pas mieux, d’où mon histoire de poutre et de paille. Quand on rapporte un code pour que le monde entier puisse rire de son auteur, la moindre des choses est d’être irréprochable (d’ailleurs j’ai lu 2-3 autres exemples assez drôles du même genre).


votre avatar







127.0.0.1 a écrit :



<img data-src=" /> ??



Comment savoir combien il y a de pages dans un livre ?



A: en regardant le numero de la dernière page

B: en lisant toutes les pages et en ajoutant 1 à chaque page lue

C: je ne sais pas lire ni compter





surtout ne pas oublier le marque’t’apage!!!!


votre avatar







barlav a écrit :



??



Comment savoir combien il y a de pages dans un livre ?



A: en regardant le numero de la dernière page

B: en lisant toutes les pages et en ajoutant 1 à chaque page lue

C: je ne sais pas lire ni compter

D: la réponse D

E: obiwan kenobi





<img data-src=" />



<img data-src=" />


votre avatar







Fuinril a écrit :



Bon, petit court de programmation pour les nuls.



Pourquoi la solution critiquée est mauvaise ? the_frogkiller a déjà répondu, rien à redire dessus.



Pourquoi faire une deuxième requête en count est une (très) mauvaise idée ? Trois raisons :











Fuinril a écrit :





  1. Ca peut être assez lourd de regénérer une requête count avec les mêmes paramètres que la première. Encore une fois, en milieu pro, la grande, que dis-je ?, l’immense majorité des requêtes sont générées ce qui peut nécessiter un traitement assez lourd (pour peu que ça soit possible - ce qui est loin d’être toujours le cas).







    Qu’est-ce qui te fait pensé que le code est issue du milieux pro ? Que l’application où tourne le code nécessite des requêtes générées ? Que les traitements sont assez lourds ? Si t’es capable de dire tout ça en regardant 10 lignes de codes félicitation, je pense que tu peux lancer une nouvelle activité : La voyance pour le code.







    Fuinril a écrit :



  2. Une deuxième requête en count sera très rapide dans le cas d’une requête simple, dans celui d’une requête complexe avec jointures multiples c’est pas gagné.







    Même remarque que plus haut. Rien ne te permet d’affirmer que l’application ne se contente pas uniquement de petit SELECT sans jointures.



    Et la solution préconise d’utiliser count, pas forcement en l’utilisant dans la fonction donnée, mais peut être directement dans la requête d’origine. Encore une fois, t’extrapole dans le sens qui t’arrange, mais ce n’est peut être pas le bon sens.







    Fuinril a écrit :



  3. Absolument rien ne dit qu’entre les deux requêtes (le select simple et le count) il n’y ait pas eu de nouveaux enregistrements…. donc qui donneraient deux réponses différentes (ah, oui, la requête a déjà été exécuté dans le cas donné en critique).







    Comme tu le dis si bien, la fonction “de porc” exécute déjà la requête, donc refaire un count n’est pas pire.







    Fuinril a écrit :



    Bref, je ne vais pas ergoter, le code est cradingue au possible, mais la solution n’est pas mieux, d’où mon histoire de poutre et de paille. Quand on rapporte un code pour que le monde entier puisse rire de son auteur, la moindre des choses est d’être irréprochable (d’ailleurs j’ai lu 2-3 autres exemples assez drôles du même genre).







    Ah, je pense que t’as pas bien compris l’esprit du blog : montrer des bouts de code un peu dégueulasses pour se marrer, mais pas pour “rire de l’auteur”.



    Tous les développeurs écrivent un jour ou l’autre du code dégueulasse, pour des milliers de raisons : manque de temps, manque de formation sur une techno, obligation d’utiliser une librairie pourrie, refactoring (trop) rapide qui laisse du code mort ou des aberrations dans le code, reprise de vieux code horrible et pas le temps de tout réécrire, …



    Bref, l’idée c’est de rire de tout ça, parce que tous les développeurs connaissent ça pas de montrer du doigts les auteurs en les traitants de sous-merde.



    Les “corrections” ne sont peut être pas toujours les plus optimisés / propre tout ce que tu veux, mais sans connaitre le contexte et le reste du code c’est impossible de juger si la “solution” est la meilleur ou pas à moins de faire comme toi, pleins d’hypothèses qui sont peut être totalement fausses…


votre avatar







Yzokras a écrit :



La frame avec scrollbar de la semaine <img data-src=" />





Le problème a l’air réglé avec FF28 <img data-src=" />


votre avatar







Bug a écrit :



Le problème a l’air réglé avec FF28 <img data-src=" />







Ben non, j’ai FF28 et j’ai bien les 2 scrollbars là (mais plus après avoir posté un commentaire).


votre avatar







youri_1er a écrit :



J’avoue quand tu débute en code et que tu le fait en autodidacte tout seul dans ton coins et que tu comprend pas pourquoi un if(!this) {…} ne marche pas tu le tente le if(this == null) {…} … juste pour voir si ça marche pas mieux! <img data-src=" />



Après je pense que tu le fout pas en prod’!







Zavez rien compris le if(this==null) fait sens en physique quantique…C’est de la métaphysique,z’êtes trop terre à terre <img data-src=" />


votre avatar







Yzokras a écrit :



Ben non, j’ai FF28 et j’ai bien les 2 scrollbars là (mais plus après avoir posté un commentaire).





Ah bein moi aussi elles sont revenues <img data-src=" />


votre avatar







Virtual_Spirit a écrit :



Qu’est-ce qui te fait pensé que le code est issue du milieux pro ? Que l’application où tourne le code nécessite des requêtes générées ? Que les traitements sont assez lourds ? Si t’es capable de dire tout ça en regardant 10 lignes de codes félicitation, je pense que tu peux lancer une nouvelle activité : La voyance pour le code.







Si c’est du code de garage le gars fait ce qu’il veut, du moment que ça marche (et son code, pour être très crade) fonctionne.





Pour le reste, rien. Mais rien n’interdit les bonnes pratiques, surtout dans le cas d’une “correction”.







Virtual_Spirit a écrit :



Ah, je pense que t’as pas bien compris l’esprit du blog : montrer des bouts de code un peu dégueulasses pour se marrer, mais pas pour “rire de l’auteur”.



Tous les développeurs écrivent un jour ou l’autre du code dégueulasse, pour des milliers de raisons : manque de temps, manque de formation sur une techno, obligation d’utiliser une librairie pourrie, refactoring (trop) rapide qui laisse du code mort ou des aberrations dans le code, reprise de vieux code horrible et pas le temps de tout réécrire, …



Bref, l’idée c’est de rire de tout ça, parce que tous les développeurs connaissent ça pas de montrer du doigts les auteurs en les traitants de sous-merde.



Les “corrections” ne sont peut être pas toujours les plus optimisés / propre tout ce que tu veux, mais sans connaitre le contexte et le reste du code c’est impossible de juger si la “solution” est la meilleur ou pas à moins de faire comme toi, pleins d’hypothèses qui sont peut être totalement fausses…







Bah, pour moi c’est quand même très axé “Ouh le vilain code ! Riez ! Voilà comment il faudrait faire”.



Et y a pas besoin de connaitre le contexte pour savoir que la solution proposée est presque aussi crade que le code exposé dans ce cas précis.


votre avatar







Fuinril a écrit :



Si c’est du code de garage le gars fait ce qu’il veut, du moment que ça marche (et son code, pour être très crade) fonctionne.







Dans l’absolue, même du code réalisé dans une grosse boite, peut importe si c’est crade, du moment que ça marche…







Fuinril a écrit :



Pour le reste, rien. Mais rien n’interdit les bonnes pratiques, surtout dans le cas d’une “correction”.







Un count() c’est forcement une mauvaise pratique ? Je ne pense pas.



Parfois un code dégueulasse peut se corriger en modifiant uniquement la fonction, parfois c’est tout l’architecture qui est en cause. Donc encore une fois, difficile de juger sans voir tous le code.







Fuinril a écrit :



Bah, pour moi c’est quand même très axé “Ouh le vilain code ! Riez ! Voilà comment il faudrait faire”.







Oui, riez du mauvais code, parce qu’on en fait tous à un moment où à un autre.







Fuinril a écrit :



Et y a pas besoin de connaitre le contexte pour savoir que la solution proposée est presque aussi crade que le code exposé dans ce cas précis.







Si, mais bon, c’est pas grave, t’as l’air bien seul à soutenir le fait qu’utiliser un count est aussi dégueulasse que de faire une boucle en php pour compter les résultats renvoyés. <img data-src=" />


votre avatar







Virtual_Spirit a écrit :



La voyance pour le code.









Tiens d’ailleurs, monsieur je fais de la voyance de code.



Quelle est la problématique (ce que l’on sait) ?



Une requête mysql a été exécutée, on veut savoir combien de résultats elle a renvoyé.



C’est tout. On ne sait rien d’autre du contexte.





Comment répondre à cette question ?



1)Parcourir les résultats de la requête et incrémenter un nombre à chaque fois. C’est ce que fait l’auteur. Ca fonctionne à 100%, mais ça a effectivement le désavantage d’être lourd à l’exécution si il y a potentiellement beaucoup de résultats. Note que l’on en sait rien et que si c’est 10 résultats y a pas une différence énorme entre ça et les “best practice”.





  1. Générer une autre requête par la suite, en count celle-ci comme préconisé par le correcteur. Ouais, ça peut fonctionner. C’est moins dépendant du nombre de résultat pour le temps d’exécution mais ce n’est pas toujours possible. Et surtout : ça ne répond pas à la problématique, ce à quoi tu réponds c’est “A l’instant T+1, combien de résultat cette requête aurait-elle renvoyé ?”, pas “combien de résultats ma requête effectuée à l’instant T a-t-elle renvoyé ?”



  2. Utiliser les outils mis à disposition par php qui répondent à ta problématique et qui sont à la fois rapides et totalement indépendant du nombre de résultat.





    Fais ton choix ! A titre personnel, je préfère un code rapide et fonctionnel. Si je ne peux pas l’avoir je préfère encore un code lent mais fonctionnel à un code aux résultats aléatoires. Pour insérer des bugs super chiants à tracer et à débuguer dans un projet y a pas mieux <img data-src=" />


votre avatar







Virtual_Spirit a écrit :



Si, mais bon, c’est pas grave, t’as l’air bien seul à soutenir le fait qu’utiliser un count est aussi dégueulasse que de faire une boucle en php pour compter les résultats renvoyés. <img data-src=" />







Ca l’est ! Le count ça peut être utile avant, pas après.



La correction aurait du être “sinon on peut écrire \(nbResultats = mysql\_num\_rows(\)query)”


votre avatar







Fuinril a écrit :



Ca l’est ! Le count ça peut être utile avant, pas après.



La correction aurait du être “sinon on peut écrire \(nbResultats = mysql\_num\_rows(\)query)”







mysql_num_rows() a besoin d’une ressource, retourné par mysql_query(), mais la fonction prend en paramètre une requête et pas une ressource.



Donc même problème que de refaire un count() il peut y avoir une différence si il y’a eu des résultats modifiés entre le moment où la première requête est faite et le moment ou celle avec count() est exécuté.



Si on ne cherche qu’à modifier la fonction sans toucher au reste du code, faire une regex qui remplace



SELECT * FROM …



Par



SELECT COUNT(*) FROM …



Est celle qui semble le moins gourmande.


votre avatar







Virtual_Spirit a écrit :



mysql_num_rows() a besoin d’une ressource, retourné par mysql_query(), mais la fonction prend en paramètre une requête et pas une ressource.



Donc même problème que de refaire un count() il peut y avoir une différence si il y’a eu des résultats modifiés entre le moment où la première requête est faite et le moment ou celle avec count() est exécuté.



Si on ne cherche qu’à modifier la fonction sans toucher au reste du code, faire une regex qui remplace



SELECT * FROM …



Par



SELECT COUNT(*) FROM …



Est celle qui semble le moins gourmande.







Oulà…. je viens de retourner voir le site pris d’un gros doute. Il me semblait que le paramètre passé était une ressource et non une string (j’avais pas vu le mysql_query).



Ok, je raconte que de la merde. Désolé <img data-src=" />


477ème édition des LIDD : Liens Idiots Du Dimanche

Fermer