PROJET AUTOBLOG


le hollandais volant

Site original : le hollandais volant

⇐ retour index

MySQL, SQLite ou fichiers texte ?

mercredi 11 octobre 2017 à 20:54

Le moteur de blog sur lequel tourne ce site, Blogotext, était à l’origine basé sur un stockage en fichiers XML (un sorte de balisage à la XML, plutôt).
Aujourd’hui j’utilise à la fois SQLite et le stockage sous forme de fichier contenant des données sérialisées.

En relisant l’article de Matronix sur Pluxml qui devient un peu plus lent quand le nombre d’articles s’accumulent, je me suis décidé à dresser un petit comparatif et un retour sur les formats de stockage pour un moteur de blog : XML, base64-serialisé, SQLite, MySQL.

XML, texte Base64-sérialisé

Ces deux formats reposent sur de simples fichiers texte : il est donc plutôt passe partout, y compris sur les rares hébergeurs qui ne proposent aucun système de base de donnée (mais parfois interdits par les hébergeurs car assez gourmands en ressources).

Le format est également adapté quand la quantité de données reste limitée : pour un blog avec des articles longs, il est préférable de s’abstenir.

Pour des liens partagés courts, force est de constater que ça reste rapide, mais je suis quand même curieux de connaître la limite de ce système. Tous les systèmes ont tendances à s’embourber quand la quantité de données devient importante, mais certains résistent mieux que d’autres (et surtout, passer de 1 ms à 2 ms pour une requête, c’est doubler le temps mais ça reste totalement invisible, alors que passer de 1 s à 2 s, ça l’est beaucoup moins).

Ces formats conviennent très bien pour les petits blogs sans commentaires, et pour tout autre gestion de donnée sans associativité entre les données (les commentaires sont en effet associés à un article et nécessitent un tri — spécifique et très long — à cause de ça).

En revanche, pour un moteur de blog, avec fonction de listage des articles, commentaires associés ou fonction de recherche, ça devient rapidement très lent au fur et à mesure que le nombre d’articles augmente.
Quand j’utilisais les fichiers XML sur ce site, avec 5000 commentaires, le temps de génération d’une page prenait jusqu’à 500 millisecondes. Ça semble rien, mais c’est énorme (c’est 20 à 100 fois la durée actuelle de génération d’une page, alors que le nombre d’articles et commentaires à triplé).

J’avais un jour testé l’utilisation d’un fichier sérialisé pour le blog : la page prenait 800 millisecondes à charger. Là aussi, c’est bien trop long, pour le visiteur qui doit attendre et pour le serveur qui est trop sollicité. C’était impensable.

SQLite & MySQL

Ces systèmes contiennent une véritable gestion des données : ils les stockent bien-sûr, mais ils peuvent aussi les trier, ordonner, rechercher et créer des liaisons (articles/commentaires) : SQL est spécifiquement fait pour ça. C’est donc parfait pour le stockage de données qui sont susceptibles de changer, d’être triées ou d’êtres liées à d’autres données de façon dynamique.

Mon blog a tourné sous MySQL à un moment, mais je suis très vite revenu à SQLite, après avoir appris à optimiser quelques trucs.
Le résultat est celui que vous voyez là : ce site tourne avec 1100 articles, 16 000 commentaires et 16 000 liens partagés, et je suis en mutualisé (donc le serveur gère également plein d’autres sites en parallèle).

Tout a été ici une question d’optimisation : choix des indexes, gestion du cache et de la mémoire, et de la façon dont on l’utilise. En PHP par exemple : une bonne gestion des boucles fait beaucoup de choses. Le nombre de requêtes SQL est également à prendre en compte : une requête pour sortir 50 articles sera largement plus rapide que 50 requêtes.

SQLite est pratique car il très simple à utiliser : pas de mot de passe, pas d’installation, pas de système client/serveur (contrairement à MySQL) : la bibliothèque logicielle pour utiliser SQLite peut être incluse dans les logiciels et être utilisée à la volée (Firefox le fait, par exemple). Il suffit de l’utiliser comme n’importe quelle fonction.
MySQL a la réputation d’être un peu plus rapide et plus complet.

Meewan me fait remarquer très justement que SQLite a un défaut par rapport au reste, c’est qu’on ne peut écrire qu’une seule chose à la fois dans la base de données SQLite. Une opération doit se terminer complètement avant que la suivante ne puisse se faire. Ceci concerne uniquement l’écriture dans la base de données (pas la lecture). En pratique, sur un blog comme le miens, ce n’est pas un problème du tout, mais sur les sites (beaucoup) plus gros où des dizaines de commentaires peuvent être écrits en même temps, cela pose problème. Il est ainsi impensable d’avoir un système similaire à Twitter, ou bien un tchat, utilisant SQLite.

Pour conclure

Je pense évidemment que chaque application a ses besoins spécifiques.

À mon niveau cependant, je n’ai pas encore eu de situations où SQLite ne suffisait pas (ceci mis à part car ça a été résolu depuis) : son avantage est d’être utilisable dans énormément de langages (que ce soit côté serveur (PHP), côté client (JS, HTML5?) et en local (Python, SH…)) et très simplement, sans gestion de mot de passe ou de nom de serveur, le tout avec une portabilité très simple puisqu’il s’agit d’un seul fichier à copier-coller.

Dans certains cas, où le nombre de données n’est pas emmené à varier beaucoup, les fichiers textes sérialisés ou le XML/Json (voire les fichiers de configuration INI ou INF) suffisent.

Note : cet article a été initialement écrit en 2015. Je l’ai déterré pour un lecteur qui m’avait demandé mon avis entre les différents formats. Les chiffres sont mis à jour et correspondent à ceux de la date de publication.

Pourquoi je souhaite une licence globale

mardi 10 octobre 2017 à 19:30

Quelques semaines après que l’UE a annoncé que le partage de fichiers protégés ne diminue en rien les ventes d’œuvres de façon légale, voilà que la Hadopi nous dit que la fermeture il y a quelques temps de Zone-Téléchargement n’avait rien changé : le partage de fichiers est toujours là et il n’a pas non plus diminué.

Vous voulez que je fasse une prédiction ?
Le téléchargement illégal ne s’effondrera que lorsque qu’acheter quelque chose soit plus simple qu’utiliser les sites de téléchargements.
Le problème c’est surtout que toutes les solutions « légales » sont une plaie à utiliser, ou alors qu’elles ne sont pas adaptées aux besoins des gens (elles sont juste une projection de ce que les « ayants-droits » souhaitent nous voir s’en contenter).

Et tout ça, ce n’est pas près de changer.

Du coup ben, on voit les artistes qui montent leur propres business (passant en dehors des circuits inadaptés), soit des sites de partage et de téléchargement de musique, financée par la pub et les abonnements.

Perso je vois deux solutions à tout ça.

La première, c’est que les « ayant droits » se sortent les doigts et montent eux-mêmes des sites de téléchargement financé par la pub : les gens veulent ce genre site, c’est pas compliqué à faire non plus et ça rapport pas mal de fric. Et du coup ce fric ira dans leurs poches. C’est pas ce qu’ils veulent ? Ça ne serait pas ce que tout le monde veut ?

Et la seconde, c’est un impôt facultatif appelée « licence globale ».
Dans ce cas, on paye une sorte de « redevance » qui nous permet de télécharger ce qu’on veut, autant qu’on veut, où on veut sans avoir à se soucier du fait que ce soit sur un site légal ou pas. De toute façon, empêcher les sites de partage et de téléchargement d’exister est voué à l’échec. Avec la licence globale : on paye genre 15€/mois et on peut télécharger autant qu’on veut. Ceux qui ne veulent pas payer, c’est pas grave, mais dans ce cas soit faut pas télécharger, soit faut assumer si on se fait prendre.

Je suis plutôt pro-licence globale : premièrement parce que cette idée est relativement simple à mettre en place administrativement (juste une case en plus sur le formulaire des impôts, et il suffira à Hadopi de regarder qui est abonné pour savoir si on chope son IP ou non) et techniquement : y a rien à faire, c’est peut-être ce qui est le plus déroutant, pour les spécialistes du brassage d’air les poches pleines dans l’hémicycle… Par ailleurs, l’argent de la licence globale sera ensuite redistribué aux artistes.

Quant à l’avantage d’une licence globale par rapport à des plateformes comme Google Play ou iTunes, c’est que l’on n’est pas prisonnier d’une plateforme précise. Si je vais chez Google Play et que que ce dernier ferme mon compte de façon arbitraire (comme écrit dans les conditions d’utilisations), alors je n’ai plus rien du tout. Alors qu’avec la licence globale, je paye et j’ai le droit d’aller où je veux tout en sachant qu’on ne viendra pas me faire chier.

Faire des « !bang » dans Firefox

mardi 3 octobre 2017 à 19:55

Les « !bang » sont des mots clés pour rechercher directement sur un site, depuis les moteurs de recherche comme DuckDuckGo ou Qwant. Ça permet par exemple de chercher Firefox sur wikipédia en tapant « !w firefox », qui ouvrira alors la page correspondante. Il y a des tonnes de « !bang » dans DuckDuckGo et c’est pratique (ils en ont même mis un pour mon site :p).

Le truc, c’est que cette fonction existe déjà, depuis toujours, dans Firefox (et même dans les autres navigateurs).
On peut les faire soi-même : il suffit de choisir le site que l’on veut et de faire un marque-page avec un mot clé et l’on a notre !bang. Ça se passe directement dans le navigateur, pas besoin d’extensions, et ça marche.

Ici je vais faire un exemple : faire un !bang pour mon site, avec le mot clé « lhv ».

Commencez par aller sur mon site et faites un clic droit dans le moteur de recherche puis « Ajouter un mot clé pour cette recherche » :

i

Dans la fenêtre qui surgit, ajoutez votre mot-clé (lhv) :

i
Puis cliquez sur Enregistrer.

Et c’est tout !

Maintenant, ouvrez un onglet, tapez « lhv » suivi de votre recherche, comme par exemple « lhv firefox » et vous trouverez tous les articles relatifs à « firefox » sur mon site !

Vous pouvez faire n’importe quel site disposant d’un champ de recherche comme ça.
Perso, j’ai fait youtube (y), wikipedia (w), google (g), flickr (f), wolfram-alpha (wa), google images (i), google images inversé (ii)…

Ce qui est bien, c’est que vous pouvez mettre n’importe quoi après votre mot clé : pas forcément une recherche, mais même une URL. Par exemple, pour la recherche inversée d’une image dans Google, j’affiche une image dans un onglet, je place mon curseur devant l’URL dans la barre d’adresse et je met « ii » suivie d’une espace puis je lance la recherche. Ça va chercher l’URL (l’image donc) dans le moteur inversé de Google.

Dans le même genre de chose pratiques, j’ai aussi mon !bang pour faire un QRcode : « qr », pour traduire du texte, ou le partager sur mon site, etc.

Quelle alternative à Firefox ? Firefox !

lundi 2 octobre 2017 à 20:20

Je réponds ici à l’article à la fois « question » et « coup de gueule » de Denis Szalkowski sur son blog :

La question fait référence au fait que Firefox est en train de changer. La prochaine version (v57) va être plus rapide. Beaucoup plus rapide.
Le hic, c’est que ça vient avec un énorme inconvénient : les anciennes extensions ne marcheront plus. Plus du tout.

Firefox 57 utilisera un nouveau système d’extensions, basé sur WebExtensions, donc quelque chose de similaire à ce qu’utilise Chrome, Opera et le reste.

En attendant que les éditeurs mettent à jour leur extensions vers la nouvelle API, ben il va effectivement falloir s’en passer.
Et ça va faire mal : aux utilisateurs, à la communauté, mais aussi à Mozilla : l’une des plus grandes forces de Firefox étaient les extensions, depuis 10~15 ans déjà.

Sauf que… Chrome est arrivé et dispose maintenant également d’un gros catalogue d’extensions, compatibles avec Opera et Vivaldi. Et aujourd’hui, la grande force de Firefox n’en est plus une, et son identité (ce que Denis Szalkowski appelle « ce que nous sommes ») non plus : tout le monde a la même.
Du coup Mozilla, Firefox, et le libre doivent innover. Et pour ça, je pense que c’est le bon choix qui a été fait par Mozilla. Il faut parfois renoncer à certaines choses pour pouvoir avancer.

Je crois que c’est dans le film Interstellar qu’il est dit que les fusées vont vers l’avant seulement s’ils jettent quelque chose en arrière (principe d’action-réaction). Et c’est vrai. Cette phrase telle qu’elle est dite dans le film prend une toute autre dimension cependant : pour que la fusée puisse avancer et sauver la personne qu’elle abrite d’un trou noir menaçant, un autre module doit s’en détacher et être propulsée vers l’arrière, directement sur le trou noir, et avec lui, l’autre personne qu’elle renferme. Cette dernière se sacrifie donc pour que la première puisse survivre.
Il faut jeter des choses pour avancer : en sciences, mais aussi dans la vie (au sens figuré, plus qu’au sens propre), ou bien comme ici, dans un projet comme Firefox.

Il est clair que Mozilla a fait les choses très vite : seulement 3 mois entre la première Nightly et la version finale, et donc pratiquement autant de temps pour tous les dévs d’extensions pour réagir (même si ça fait plus d’un an que certains se bougent, et ont réussis à avoir des extensions prêtes à la release de la Nightly 57, un grand bravo à eux, d’ailleurs <3).
Mais j’estime que vu les parts-de-marché de Firefox actuellement en chute libre et donc de sa force de frappe pour défendre un idéal de web libre, Mozilla devait réagir. Et ils l’ont fait. Des sacrifices ont été fait, mais au final ils ont réussi là où ils auraient également pu échouer, et ça, ça mérite juste un grand bravo.


En ce qui me concerne vis à vis de Firefox, j’étais lassé de la lenteur de Firefox à un moment, et j’étais à deux doigts de passer à Vivaldi. Mon Vivaldi est d’ailleurs toujours là, je l’ai entièrement configuré à ma sauce et je suis prêt à sauter dessus. Sauf que Vivaldi n’avait pas toutes les extensions que j’avais sous Firefox (Chrome ou Opera non plus, hein) et surtout ce n’est pas du libre.

Alors je me suis dit : quitte à perdre toutes mes extensions, entre passer sous Firefox 57 (en Nightly, à l’époque, et aujourd‘hui en bêta) et changer carrément pour me mettre à Vivaldi (qui n’est pas libre), autant essayer Firefox 57.

Et c’est ce que j’ai fait.

Et ça a fait mal.

De mes 11 extensions, aucune n’était directement compatible. Et après quelques recherches manuelles, seules 3 avaient des pré-versions compatibles avec Firefox 57+. Heureusement, se trouvaient parmi celle-là mon bloqueur de pub (µBlock Origin, qui fonctionne parfaitement actuellement). Aujourd’hui, un certain nombre sont déjà déjà traduites, et ça progresse de jour en jour !

Et du coup, ben, je me suis passé de tout le reste : vertical-toolbar, tab-wheel-scrool, greasemonkey, stylish, send-tab-to-device…

Aujourd’hui ? Je vais bien, merci :).

En fait, certaines extensions étaient là depuis plus de 10 ans. Or le web et Firefox ont changé :

Autrement dit : pourquoi installer des extensions devenues inutiles ? Je n’en ai plus que 3 aujourd’hui et ça me va : µBlock Origin, TextAreaCache Lite et I don't care about cookies.

Au final, je suis totalement satisfait de Firefox 57.

Ouais ça m’a forcé à changer des habitudes (j’ai dû me faire à l’usage de raccourcis claviers), j’ai subis des plantages d’extensions en phase de développement, j’ai du chercher des alternatives, j’ai dû surveiller des mises à jour. Mais tout ça n’est qu’un problème de jeunesse qui finiront par être résolus dans les mois qui viennent.

Ayant utilisé Nightly 57 (très instable), je suis aujourd’hui sur le canal Bêta (toujours en version 57) et je pense y rester.

Le navigateur Firefox Nightly bouge beaucoup et c’est effectivement très instable. La Bêta est également instable, mais largement moins (elle est instable « sur le papier » en fait), et elle permet d’avoir les choses nouvelles sans attendre la version stable normal. Je pense que c’est un bon compromis entre la stabilité et l’accès en avant-premières aux nouveautés dans le navigateur. Mais ça c’est à chacun d’en juger.


Le message que je veux faire passer ici, et principalement en réponse à l’article cité au début : quitte à changer de navigateur, autant passer de Firefox (56) à Firefox (57+) : l’effort à fournir sera le même (temps d’adaptation, etc.), mais on reste chez Mozilla, on reste sur du libre, et on retrouvera très largement ses marques d’ici quelques temps.

Je comprends totalement que Mozilla y est allé très vite entre les premières versions Nightly de 57 cet été et leur release finale dans un mois (laissant un temps extrêmement court aux dév d’extensions pour se mettre à jour), mais quand on voit que Firefox était devenu lent, que les parts-de-marchés sont devenues ridicules (et les PDM sont ici synonymes de force de frappe dans le monde du Web), il fallait agir, et très vite.

Firefox 57 est d’une vitesse incroyable, oui.
C’est un navigateur totalement refait, oui.
Mozilla a refait sa charte graphique aussi, oui.

Mais laisser tomber Mozilla et Firefox à un tournant de leur histoire et de celui du Web, l’abandonner au moment où il redevient enfin le meilleur, ça serait donner une victoire totale à Google et Chrome (avec ce que ça entraîne pour tous les webdev et sites du monde) et ça, je trouve ça vraiment très dommage et pas du tout mérité.

Donc si je peux me permettre, si vous souhaitez rester sous Firefox mais que vous avez peur, laissez-lui une chance : vous ne le regretterez pas, ça j'en suis absolument convaincu.

Le terreurisme, le terrorisme « nouveau » et gouvernemental

samedi 23 septembre 2017 à 12:08
On pointe une arme à tous les citoyens de cette planète et on appelle ça la protection ?
— Captain America à Nick Fury, dans « Captain America, le soldat de l’hiver »

Lire ça :

Ça fait un moment que l’on place des caméras partout, qu’on arme jusqu’à les policiers municipaux et même quand ils ne sont pas en service — rétablissant ainsi la peine de mort dont on place la gâchette entre leur mains, après l’avoir prise à ceux de la justice en 1981 — qu’on traite tout le monde comme un suspect potentiel, qu’on demande partout à tout le monde d’être vigilant : et si votre voisin était un terroriste ? et si la personne à côté de vous dans le train était un terroriste avec une bombe dans ses bagages ?

Ça fait des années qu’on change les termes « vidéo-surveillance » en «  vidéo-protection », pour nous faire croire que c’est une caméra qui va nous protéger d’un fou armée d’un semi-automatique ou d’une bombe artisanale conçue avec 5€ de produits ménagers.

L’on commence à faire des systèmes de reconnaissance faciale intégrée à ces-dits caméras. L’on parle également déjà de drones embarquant ces caméras pour surveiller des civils, et peut-être même des armes, bientôt, pour faire comme dans les jeux-vidéos où l’histoire se déroule dans un monde de dictature post-apocalyptique.

Si on résume, on se trouve dans une société où chacun de nos voisins est un potentiel suspect, que ce soit aux yeux de la police ou de chaque citoyen, et l’on devrait avoir peur de tout et de tout le monde. C’est beau, non ?
En fait, l’idée même derrière l’instauration d’une terreur permanente, et en particulier quand c’est le gouvernement qui orchestre tout ça, c’est ce que l’on appelle le terrorisme.

Alors, je sais, l’on va se demander « comment discerner les méchants qui utilisent des bombes pour tuer des innocents dans le métro, et ceux qui utilisent des armes normalisées pour faire la même chose mais sur ordre de ceux que nous avons élu par le biais des urnes ? » ?

Je propose qu’on utilise le terme de « terroriste » et de « terrorisme » comme on l’a toujours fait : pour les individus et les organisations de déséquilibrés mentaux en tout genre qui utilisent toute leur imagination pour perpétrer des crimes. Ceci ne change donc pas.

Par contre, j’aimerais utiliser le terme de « terreurisme » comme étant la peur instaurée par le gouvernement pour mieux régner sur les civiles.

Comme ça l’on sait de quoi on parle, tout en maintenant un sens relativement proche à ces deux termes, ce qui est normal quand leur définition est également très très proche.