Partager des dépenses de groupe - le hollandais volant

Un autre petit outil.

Si vous êtes en groupe, que chacun paye des frais différents, et si vous souhaitez rééquilibrer tout ça, ce genre d’outil est là pour ça.

Mon outil fonctionne mathématiquement, mais il n’est pas totalement optimisé.
Par exemple, dans certains cas il propose une solution de partage des frais avec un total de 4 transactions où 3 pourraient suffire. Ce n’est pas gênant, tout le monde retombe sur ses pattes quoi qu’il en soit.

Si j’avais voulu optimiser pour un nombre de transactions minimal, il m’aurait fallu ajouter une boucle relativement lourde (mathématiquement et programmatiquement), donc j’ai pas fait.

Mais pour 3 ou 4 personnes qui se partagent des frais, ça marche nickel. C’est avec beaucoup de personnes que le script n’est plus optimal.

(par contre, les autres outils en ligne du style (que j’ai testé en tout cas) ne sont pas optimisés non plus :p
On me signale Tricount, qui dans sa FAQ écrit « Tricount […] propose une solution pour équilibrer en minimisant le nombre de remboursements. »)

#17723  

https://lehollandaisvolant.net/tout/tools/pay-bill/

JavaScript Clone Array

(je_rale_contre_JS pour la 25436e fois)

Comment dupliquer un tableau en JS.

Ça ?

var new_table = old_table

Nope, car si on modifie old_table, alors le new_table s’en trouvera également modifié : ce n’est pas une duplication de la variable mais une référence à l’ancien tableau : c’est comme si les mêmes données sont accessibles sous deux noms.

Pour dupliquer un tableau à une seule dimension, il faut faire :

for (var i in table) {
    new_table[i] = table[i];
}

Mais si le tableau est un tableau d’objets, ou même un objet d’objets (donc de plus d’une dimension) ?
Ben la méthode précedente ne marche pas : si table[i] contient un objet, alors cet objet sera rendu accessible dans new_table[i], mais sans y être copié !

Modifier table[i] changera donc également new_table[i].

La seule méthode que j’ai trouvé (dans le lien) qui tienne en une ligne c’est ça :

var clone = JSON.parse( JSON.stringify( myArray ) );

On prend le tableau, on le transforme en une représentation textuelle JSON (à ce stade c’est juste du texte, sans objets, références, indexes…) puis on le retransforme entièrement en tableau. Là il sera dupliqué totalement, même si le tableau fait 15 dimensions.

C’est farfelu, oui.

#17722  

https://davidwalsh.name/javascript-clone-array

Doc TB sur Twitter : "La vache, j'ai failli me faire avoir par un phishing @OVH très très bien foutu. Le mail de renouvellement a passé l'antispam, le site est vraiment ressemblant et ils arrivent visiblement à exploiter une faille pour afficher l'URL correcte. Heureusement qu'il reste qques bugs. 😤… https://t.co/lkQrnSLlUu"

Z'avez vu l’URL de cette page ? Son domaine c’est « ovh.com ».

Le vrai donc y a pas de problème ?
Bah si, car c’est pas le vrai.

Les caractères ressemblent à un O, un V, un H, mais l’un des trois est un caractère unicode différent qui ressemble à s’y méprendre à ces lettres.

Merci qui ? Merci l’unicode dans les URL !

On avait déjà vu des démonstrations de ce problème :
– ici avec un spoof de l’URL d’apple : https://lehollandaisvolant.net/?mode=links&id=20170418170916
– et là avec Google : https://lehollandaisvolant.net/?id=20161122173444

Solution, dans Firefox : about:config + network.IDN_show_punycode = true (merci).

(Le pire c’est que quand tout le monde aura configuré son navigateur pour ne plus afficher l’unicode, mais le code correspondant à ces caractères (le code « punnycode »), et quand les navigateurs auront mis ça par défaut pour des raisons de sécurité, ben on se trouvera très con d’avoir juste eu l’idée de mettre l’unicode dans les URL, puisque personne ne les verra plus jamais.)

#17721  

https://twitter.com/d0cTB/status/1035132390182711296