PROJET AUTOBLOG


le hollandais volant links

Site original : le hollandais volant links

⇐ retour index

35% Faster Than The Filesystem

dimanche 2 septembre 2018 à 19:38

Utiliser SQLite permet de gagner ~35 % de performances (en moyenne) pour stocker des fichiers, par rapport à un système de fichier normal.

Le gain de perfs est le plus impressionnant sur W10.


— (permalink)

Trois ans après, le bilan des cars Macron

dimanche 2 septembre 2018 à 13:26

Selon l’article, pour être rentables ils doivent augmenter les prix.

C’est con, leur prix bas est le seul avantage qu’ils ont. S’ils montent les prix, il n’y aura plus aucune raison de monter dedans : ça va faire comme les trains.

Mais bon, vu que Macron est en train de tuer le rail, les cars seront la seule solution pour se déplacer (hors voiture). Sauf que ça sera aussi cher que le train, en plus lent, et avec des horaires approximatifs (avec le train, hors problèmes, l’heure d’arrivée est précise, ce qui est pratique pour les correspondances, avec le bus, l’heure est floue).

Comme d’hab, donc, les riches voyageront et les pauvres restent chez eux. Perso j’y vois un retour au XVIIIe siècle.

Ajoute à ça que le seul autre moyen pour se déplacer c’est la voiture, voilà qui va très nettement jouer en faveur de l’écologie.

Si on résume :
– moins de trains
– cars plus chers (donc les pauvres ne peuvent plus voyager)
– davantage de voiture (donc plus de pollution et bouchons)

Vous le voyez, ou pas, l’intérêt d’un moyen de transport national dont le coût est assuré par l’État ?

Le train (comme l’avion) c’est un truc qui vend le même service à des prix différents selon que t’es pauvre mais prévoyant (billet 2e classe pris à l’avance) ou riche (billet 1ère classe pris au moment du départ). On paye ce qu’on peut se permettre de payer et ça, ça permet à tout le monde de voyager.

Supprimer ça, c’est condamner les pauvres à rester chez eux.

(PS : les vidéos de la chaîne dont j’ai parlé récemment traitent massivement des transports : avion, trains… et pourquoi il existe des lignes absolument pas rentables mais imposées par l’État aux exploitants, et pourquoi le train est si cher, même par rapport à l’avion).


— (permalink)

Wikipédia — Wikipédia

samedi 1 septembre 2018 à 22:08

URL normale :
https://fr.wikipedia.org/wiki/Wikipédia

URL plus légère :
https://fr.wikipedia.org/wiki/Wikipédia?printable=yes

Ajoutez « ?printable=yes » à une URL de Wikipédia et vous obtenez une page avec un minimum de CSS, des liens décolorés et divers autres modifs qui favorisent le rendu imprimé sur papier.


— (permalink)

Partager des dépenses de groupe - le hollandais volant

jeudi 30 août 2018 à 19:44

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. »)


— (permalink)

JavaScript Clone Array

jeudi 30 août 2018 à 16:30

(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.


— (permalink)

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"

jeudi 30 août 2018 à 16:06

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.)


— (permalink)

Listen and create ambient sounds easily

mercredi 29 août 2018 à 19:54

Un site qui produit des bruits ambiants.

Il y a évidement un bruit de tempête, celui d’une route, d’un navire en mer… et plusieurs à propos de Harry Potter : salle commune, grande salle, le train, la bibliothèque…


— (permalink)

for...of - JavaScript | MDN

mercredi 29 août 2018 à 18:23

Si je comprends bien, en JS, la différence entre for..in et for..of c’est un comme la différence entre foreach ($table => $element) et foreach ($table as $element) du PHP.

L’un place dans $element la clé, et l’autre la valeur.
En PHP, on peut même faire $table => $key as $value, où l’on obtient la clé et la valeur en même temps.

Sauf qu’en JS, on a aussi le for, forEach, .each(), et bien d’autres trucs…


— (permalink)

Suicide assisté : Jacqueline est heureuse mais veut mourir - YouTube

mercredi 29 août 2018 à 17:02

Au delà du côté "buzz", je pense que c’est une vidéo à voir.

Effectivement, elle a quelques bons arguments, mais à mon avis ça traduit un autre truc : quand elle dit « je ne veux pas me retrouver infantilisé dans un mouroir », ça en dit long sur les conditions de vie dans un EPHAD. Le problème est peut-être là, aussi, non ?

Elle dit que son geste est également militant (pro-euthanasie, pro-suicide assisté). La vidéo termine sur ce qu’elle dirait à Macron sur le sujet : en particulier sur les raisons qui empêchent Macron de légaliser ça : lobbies religieux ? pharma ?

Et puis elle tacle les religions aussi, qui sont là à dire « le suicide C mal ».

Bref, j’aime bien, finalement.


— (permalink)

Le remboursement de votre système d'exploitation (OS) - Conseils d'experts Fnac

mercredi 29 août 2018 à 16:27

Tiens, la Fnac propose cette page sur le remboursement de son OS.

Ils expliquent en quoi ça consiste, quels sont les avantages/inconvénients à ça et par dessus le marché, une bonne liste de liens vers les pages des constructeurs (HP, Apple, Asus, Acer…).

Pas mal du tout !


— (permalink)

Firefox Nightly Secure DNS Experimental Results – Firefox Nightly News

mercredi 29 août 2018 à 12:18

Voilà donc en moyenne le truc dans Firefox Nightly qui utilise des DNS tiers sont 6 millisecondes plus lent que normalement par requête. On peut oublier l'idée maintenant ?

Le seul intérêt c'est qu'ils améliorent de 150 ms le résultat des requêtes déjà lentes (en gros là où il y a de la place pour de l'amélioration).

Par contre, les résultats sont absolus. On ne sait si on gagne 150 ms sur un score de 200 ms ou de 20 000 ms.

Ça me semble donc être une idée pour les connexions très lentes, pas pour l'internaute moyen occidental, pour qui cette idée n'est qu'un moyen pour Moz de se prendre pour Google.


— (permalink)

Quand Google vous prend pour un spammeur… ça va couper chérie… – voiprovider

mardi 28 août 2018 à 22:31

Un problème avec Google ? Vous n'avez plus rien.

En dehors de l'écosystème Google que c'est le mal parce que c'est Google, ce genre de chose est une chose de plus auquel il faut faire gaffe quand on souscrit à un service en ligne...


— (permalink)

EU Disinfolab et le RGPD : interview de Me Oriana Labruyère

mardi 28 août 2018 à 16:32

Une interview qui décrit un peu ce qui va se passer maintenant suite à cette affaire.


— (permalink)

La machine à inventer des mots - le hollandais volant

lundi 27 août 2018 à 19:52

Voilàààà.

J’ai enfin réussi à implémenter l’idée (géniale) de David Louapre (de Science-Étonnante).

C’est un générateur de mots.

Mais contrairement à un truc simple qui sort des lettres au hasard, ou même une simple alternance voyelle/consonne, ce script utilise une table de probabilités qu’ont les lettres de ses suivre les unes des autres.

C’est pour cette simple raison que les mots produits ici sonnent si bien (à noter par contre qu’il reste difficile de les lire : on hésite dessus, car ils sont inédits. Si cela montre une chose, c’est qu’à force de lire, on ne lit plus des lettres, mais vraiment des mots, ce qui est plus rapide).

Par exemple, en Français, le « q » est généralement suivi d’un « u » (à 99,005 % du temps sur certains tests – le reste du temps il est suivi d’un « a » (dans Qatar), d’un autre « q » (Saqqarah) ou d’un « n » (dans le sigle LQDN, présent dans mon dictionnaire !).

Je produits une table de probabilités pour toutes les lettres, suivies de toutes les autres.

Pour de meilleurs résultats, comme le conseille d’ailleurs David dans son article, le script analyse des séquences de 3 lettres, les lettres de début, et de fin.
Pour le Français, mon script utilise environ 80 000 mots pour construire cette table de probabilités.

Dans cet outil, le script qui produit la table n’est pas présente (elle sera publiée prochainement). Le script récupère juste la table puis construit des mots.

J’ai fait les tables pour diverses langues (français, allemand, islandais, suédois, norvégien, néerlandais, anglais, letton, italien, danois, espagnol, slovaque, portugais, albanais, ukrainien (ce dernier est en cyrillique)).

Notez que les diacritiques (éàèçâæ…) sont également pris en compte, ainsi que les caractères spécifiques à ces langues.

Je voulais ajouter d’autres langues (polonais, grec, tchèque…), mais JavaScript supporte mal l’unicode et en l’occurence… ces langues ne passent pas. D’ailleurs, certains caractères ne marchent tout simplement pas dans Unicode avec SublimeText ou Xed, donc je laisse tomber pour le moment.

J’aimerais aussi ajouter le japonais (katakanas) et le coréen (hangul). Les kana ça va être simple (si JS supporte), les hangeul un peu moins (il faudra décomposer les han, faire les tables, produire les mots, et reconstruire les han. On pourrait aussi supporter tous les han, mais le tableau serait beaucoup trop gros — là aussi, à condition que JS supporte ça).


— (permalink)

King Louis IX - WTF fun facts

lundi 27 août 2018 à 16:20

Ceux qui disent que Macron régresse la société de 50 ans ont tout faux. C’est de 800 ans qu’il la recule !


— (permalink)

VIDEO. Le pape recommande la psychiatrie pour l'homosexualité décelée à l'enfance

lundi 27 août 2018 à 12:37

Et pour ceux qui ont des amis imaginaire, c'est quoi ?


— (permalink)

La crème pare-balles n'a pas été un franc succès pour son inventeur

jeudi 23 août 2018 à 16:51

La version moderne, c’est l’homéophile qui veut guérrir d’une maladie grave : « mais siiii, ça va marcher, vous allez voir » et à la fin il meurt.


— (permalink)

Balance Ton Youtuber... - YouTube

jeudi 23 août 2018 à 16:15

Je ne connais pas ce youtubeur, et j’ai jamais vu une de ses vidéos, mais apparemment la presse française a encore frappée et diffamé. Je me permets de relayer.

Encore ? Ouais : https://lehollandaisvolant.net/?d=2015/11/09/18/40/37-a-propos-du-business-trouble-sur-youtube-selon-lemonde

Et après les journaux se plaignent que leur revenus baissent ? Qu’ils disparaissent.


— (permalink)

Kimetrak ? Le Figaro, Korben et Next INpact entre autres – Denis Szalkowski Formateur Consultant

jeudi 23 août 2018 à 09:38

Très amusant, de la part d'un site qui utilise AMP, par Google sur les mobile. Vraiment.
Mais bon, on a l'habitude avec DSFC.

Sinon, dans le cas de Next INpact, ils ont effectivement construit leur propre régie de pub. Libre à quiconque de la bloquer ou de leur faire confiance. On peut aussi s'abonner et là y'a plus aucun trackeur.

Enfin, et là où c'est drôle, c'est que personne n'a besoin d'un trackeur tiers pour vendre nos données. Le site peut très bien avoir son propre script, sur son domaine, qui va envoyer les données sur son serveur ; et c'est ensuite le serveur qui communique avec Google ou autre. Aucun Ad-block n'y verrait rien.


— (permalink)

Note : optimiser les boucles en programmation

mercredi 22 août 2018 à 23:59

J’ai décidé d’implémenter ça : https://sciencetonnante.wordpress.com/2015/11/06/la-machine-a-inventer-des-mots-version-ikea/ en javascript (pour un faire un petit générateur de mots dans une page web).

Y a une chose sur laquelle je reviens, et c’est pas la première fois, et ça semble trivial, mais ça change tout.

Dans ce script, en gros, j’ai 80 000 mots et je chercher les occurrences de triplets de lettres là-dedans. Donc en fait, j’ai 3 boucles imbriquées (de A à Z) sur chacun des 80 000 mots.

Question tout con : quel est le plus rapide,
– boucler sur les mots, puis sur les lettres ?
Comme ça :

for (w in words) {
    for (i in alphabet) {
        for (j in alphabet) {
            for (k in alphabet) {
                check(ijk, w)
            }
        }
    }
}

– boucler sur les lettres puis les mots ?
Comme ceci :

for (i in alphabet) {
    for (j in alphabet) {
        for (k in alphabet) {
            for (w in words) {
                check(ijk, w)
            }
        }
    }
}

Mathématiquement, dans les deux cas, on fait 80 000 × 26³ = 1,4 milliards de boucles.

Pourtant, avec une toute petite astuce, on peut rendre le premier code beaucoup plus rapide.
L’idée est qu’il y a 26 lettres dans l’alphabet. Mais les mots font rarement 26 lettres, et quand ils le font, c’est rarement avec toutes les lettres.

On va donc, à chaque boucle, commencer par vérifier si la lettre sur laquelle on est est contenue dans le mot.
Si il n’y est pas, c’est inutile de faire les deux autre boucles internes : la suite contenant la première lettre n’y sera pas non plus. Dans ce cas, on économise 26² boucles pour ce mot :

for (w in words) {
    for (i in alphabet) {
        if (check(i, w)) {
            for (j in alphabet) {
                if (check(ij, w)) {
                    for (k in alphabet) {
                        check(ijk, w)
                    }
                }
            }
        }
    }
}

Sachant que les mots font autour de ~8 lettres, ça représente (26-8)×26² = 12 168 boucles par mot !

Du coup, au lieu de 1,4 milliards de boucles, on réduit ça directement à 432 millions.
Ensuite, on économise encore sur le test de la chaîne "ij" (si la seconde lettre "j" ne se trouve pas dans le mot, alors on économise 26 boucles par mot : on passe en dessous des 400 millions.

La différence est grande : on a divisé le temps par 3~4 juste avec ça.
Et ça c’est juste une estimation grossière : en français, les mots — surtout les longs — ont plutôt des lettres en doubles que seulement des lettres différentes.

En pratique, je passe d’un temps d’éxécution de ~2 minutes à seulement 3 secondes… J’ai divisé le temps par 40.

Tout ceci est tout bête, tout con, mais pensez-y : parfois une ligne de code en plus, un simple "if" juste avant une fonction lourde peut tout changer.
Ok, fait un test « if » c’est une condition en plus et donc un calcul en plus. Mais si ça permet d’économiser sur une fonction qui prend 40 fois plus de temps… Alors ça en vaut la même. En l’occurrence, si ma fonction prend vraiment 40 fois plus de temps qu’un "if", alors je serait gagnant dès qu’on mot fait moins de 25 lettres différentes, ce qui est toujours le cas en français.

%%

Autre exemple dans mon code : pour faire le teste de présence d’un triple de lettres consécutifs dans un mot, j’utilisais les regex. C’est lourd et lent.
À la place, j’ai opté pour une fonction avec un simple "str.indexOf()", qui regarde si une souschaîne est contenue dans une chaîne. C’est bien plus rapide qu’un regex. Là, le temps a été divisé par un facteur 100 environ.

Sur une page normale, j’imagine qu’on n’aurait gagné que des micro-secondes. Mais quand on boucle 26³ fois sur chacun de 80 000 mots, le gain de temps est monstre.