300

En provenance du DailyWTF, un bout de JS oh combien intelligent :function confirmMessage(msg) { if ( confirm(msg) ) return true; else return false; }
Pour ceux qui se demandent, confirm() ouvre une boîte de dialogue et retourne true si l'utilisateur clique sur "OK", false pour "Annuler".
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

301

j'ai déja vu des versions de cette horreur dans d'autres langages bien plus nobles. C'est un grand classique, dirais je. Laver plus bool que bool.

302

Tu te rends pas compte, des fois que confirm renvois True a la place de true ca pourrais tout faire foirer!
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

303

304

On ne sait jamais comment confirm() peut évoluer, peut-être qu'un jour ça renvoiera 0, 1 ou "cannibale" ; dans certains circonstances, ça peut être bien d'avoir une telle interface qui sera la seule à modifier en cas d'évolution de la méthode (mais bon, c'est quand même rare que ce soit pertinent ET crade).
avatar

305

Oui c'est inutile mais à priori, ce n'est pas non plus un souci de sécurité. Il y a topic pour le code crade, mais je n'arrive plus à le retrouver.
avatar

306

mais de toute facon la fonction teste confirm(), qui se fait caster en booléen, donc bon grin

307

squalyl (./301) :
Laver plus bool que bool.
triso J'adore, j'en ferais bien un slogan pour ce genre d'extrait.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

308

Dans un langage à typage faible comme le JavaScript, ce genre de code a sa justification, pour être sûr d'avoir un booléen comme résultat. Mais on le trouve aussi en C++ ou en Java, où c'est vraiment stupide. (En C, pour convertir un int en booléen (0 ou 1), passe encore, même si !! suffit.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

309

Ca m'arrive d'écrire des choses qui ressemblent à ça, comme dit Nil, quand je pense qu'il y aura une évolution par la suite. Pas besoin du modifier du code ici et là, retravailler une seule fonction suffit.

310

Encore TheDailyWTF, mais là c'est du lourd. Le langage est Cold Fusion, personnellement je n'ai pas eu de mal à comprendre le soucis :
<CFINCLUDE TEMPLATE="../../include_admin_security.cfm"/>
Contenu du fichier inclus :
<CFIF Not IsDefined('cookie.admin')> <script language="JavaScript"> alert("You do not have permissions to view this area"); window.open('index.cfm','_self') </script> <CFELSE> <CFIF cookie.admin is 'No'> <script language="JavaScript"> alert("You do not have permissions to view this area"); window.open('index.cfm','_self') </script> </CFIF> </CFIF>
Comme le dit l'article d'origine, à moins qu'un puissant hacker versé dans les obscures arcanes de la manipulation du code source, du changement de valeur d'un cookie, ou encore de la mystérieuse désactivation du JS, ce n'est pas demain la veille que l'espace admin se fera pirater.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

311

./308 ca aurait du sens si ils avaient écrit if(confirm(...) == something)

mais la ils font directement if(confirm(...)) donc la conversion implicite en bool est déja utilisée, ca ne fait aucun sens de vouloir l'éviter pour le retour de cette fonction.

ca ne ferait même pas de sens si la fonction appelante avait absolument besoin d'un bool. Puisque la conversion en bool se ferait au moment ou l'expression passée est évaluée, dans l'appelante.

312

squalyl (./311) :
./308 ca aurait du sens si ils avaient écrit if(confirm(...) == something)

mais la ils font directement if(confirm(...)) donc la conversion implicite en bool est déja utilisée, ca ne fait aucun sens de vouloir l'éviter pour le retour de cette fonction.
ca ne ferait même pas de sens si la fonction appelante avait absolument besoin d'un bool. Puisque la conversion en bool se ferait au moment ou l'expression passée est évaluée, dans l'appelante.
Pas forcément...
Exemple de base : confirm() peut très bien se mettre à envoyer
0 = timeout
1 = ok
-1 = nok
-2 = interruption par un événement extérieur
2 = validation par un événement extérieur

S'il y a une évolution des données de sortie de confirm(), tu as juste à changer if (confirm()) en if (confirm() > 0), ce qui te permet d'éviter d'avoir à te repalucher tout ton code.
avatar

313

Exemple de changement de ce type: CALCULATOR sous PreOs. (Historiquement: 0=TI-89, 1=TI-92+, 2=TI-92, 3=V200, les valeurs ≠0 sont toutes des modèles à écran large. Puis PreOs a rajouté -1=TI-89 Titanium.) La solution de TIGCC:
/* PreOs 0.70 says CALCULATOR is -1 on the Titanium. We don't. */
#define CALCULATOR ((signed char)_CALCULATOR[0]>0?_CALCULATOR[0]:0)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

314

Nil (./312) :
squalyl (./311) :
./308 ca aurait du sens si ils avaient écrit if(confirm(...) == something)

mais la ils font directement if(confirm(...)) donc la conversion implicite en bool est déja utilisée, ca ne fait aucun sens de vouloir l'éviter pour le retour de cette fonction.
ca ne ferait même pas de sens si la fonction appelante avait absolument besoin d'un bool. Puisque la conversion en bool se ferait au moment ou l'expression passée est évaluée, dans l'appelante.
Pas forcément...
Exemple de base : confirm() peut très bien se mettre à envoyer
0 = timeout
1 = ok
-1 = nok
-2 = interruption par un événement extérieur
2 = validation par un événement extérieur
S'il y a une évolution des données de sortie de confirm(), tu as juste à changer if (confirm()) en if (confirm() > 0), ce qui te permet d'éviter d'avoir à te repalucher tout ton code.

Enfin, dans ce cas, chaque programme est obligé de refaire une surcouche à toutes les API qu'il utilise. Puis pour éviter la répétition de code commun, on mettrait ce code dans une bibliothèque séparée, qu'il faudrait à nouveau mettre dans une surcouche pour être sûr qu'il n'y a pas de problème en cas de changement d'API de la surcouche …
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

315

Bah, lorsqu'une application reçoit des données d'une API, elle n'utilise pas directement mais reformate pour avoir un truc utilisable par le programme, donc oui, ça fait surcouche.

316

Arvi89 (./315) :
Bah, lorsqu'une application reçoit des données d'une API, elle n'utilise pas directement mais reformate pour avoir un truc utilisable par le programme, donc oui, ça fait surcouche.
Là on parle de changer les données renvoyées par confirm, qui peut tout à fait être utilisée directement…
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

317

flanker (./314) :
Enfin, dans ce cas, chaque programme est obligé de refaire une surcouche à toutes les API qu'il utilise. Puis pour éviter la répétition de code commun, on mettrait ce code dans une bibliothèque séparée, qu'il faudrait à nouveau mettre dans une surcouche pour être sûr qu'il n'y a pas de problème en cas de changement d'API de la surcouche …
Tout dépend de qui développe quoi... si tu n'as pas la main sur une API et que tu sais qu'elle est en bêta ou qu'elle évolue beaucoup, ça peut se défendre. Si tu développes toi-même l'API ou si celle-ci est stable/éprouvée/figée pour une version majeure donnée, tu n'as effectivement aucune raison de faire ça.
avatar

318

à la base, on parle de confirm(), quand même, le truc qui n'a pas bougé depuis 20 ans.
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

319

Oui, oui, je suis d'accord, on disait simplement qu'il y avait des situations ou de telles interfaces étaient justifiées smile
avatar

320

flanker (./318) :
à la base, on parle de confirm(), quand même, le truc qui n'a pas bougé depuis 20 ans.
d'ailleurs, vu que ça n'a pas changé, je me demande pourquoi on demande encore confirmation cheeky
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

321

Je viens de tomber là dessus à l'instant (pour vous situer "l'époque") en voulant afficher un site, cherchez l'erreur (enfin, les erreurs, mais surtout la plus absurde).

Cdyz
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

322

Peut-être le dernier Firefox de l'époque de Brendan Eich ? cheeky

323

Apparemment, l'homophobe a copié-collé le code de "Upgrade your Browser" ou semblable et remplacé le texte sans adapter la logique. roll
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

324

Homophobe? Tu devrait apprendre a lire..
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

325

(Brendan Eich s'est fait virer suite à des propos homophobes ; du coup Kevin pense implicitement que la personne qui a écrit ça sur son site web cautionne les propos d'Eich plutôt qu'une réelle volonté de soutenir la liberté d'expression).
avatar

326

(Pour le coup j'aurais tendance à penser comme Kevin…)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

327

Rien que le terme "dénaturation du mariage" est homophobe.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

328

Il y a un topic pour traiter de ce sujet, pas de troll ici svp.

329

330

bah il n'y a bien que KK pour le prétendre encore ^^
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant