Benjamin Geer

Créer une application hypermédia en Rust

Ceci est le troisième article d’une série : Créer des applications hypermédia sécurisées pour un monde aux ressources limitées, qui présente la série Créer une application hypermédia en Go l’article présent Aperçu de l’application # L’application qui sert d’exemple dans Hypermedia Systems est une application CRUD qui gère une liste de contacts. Le livre montrer comment créer une application hypermédia qui offre bonne interface utilisateur, en alternative aux applications monopages. Grâce à une minuscule bibliothèque JavaScript (htmx) et à quelques attributs déclaratifs sur les éléments HTML, toutes sortes d’interactions utilisateur peuvent récupérer des fragments de code HTML depuis le serveur et ne modifier que certaines parties de la page. Par exemple, quand on passe d’une page à une autre dans la liste des contacts ou qu’on supprime un contact, la liste affichée s’actualise sans que la page ne soit rechargée.

Créer une application hypermédia en Go

Ceci est le deuxième article d’une série : Créer des applications hypermédia sécurisées pour un monde aux ressources limitées, qui présente la série l’article présent Créer une application hypermédia en Rust Aperçu de l’application # L’application qui sert d’exemple dans Hypermedia Systems est une application CRUD qui gère une liste de contacts. Le livre montrer comment créer une application hypermédia qui offre une bonne interface utilisateur, en alternative aux applications monopages. Grâce à une minuscule bibliothèque JavaScript (htmx) et à quelques attributs déclaratifs sur les éléments HTML, toutes sortes d’interactions utilisateur peuvent récupérer des fragments de code HTML depuis le serveur et ne modifier que certaines parties de la page. Par exemple, quand on passe d’une page à une autre dans la liste des contacts ou qu’on supprime un contact, la liste affichée s’actualise sans que la page ne soit rechargée.

Créer des applications hypermédia sécurisées pour un monde aux ressources limitées

Quand je développais des applications web dans les années 1990, il était courant que le server génère des pages HTML à partir de templates, et beaucoup de moteurs de template ont été créés pour cela (y compris par moi). À partir du début des années 2000, les applications web monopages se sont répandues. Dans celles-ci, le serveur renvoie surtout des données au format JSON, alors qu’un framework JavaScript (ou TypeScript) génère le code HTML dans le navigateur. J’ai travaillé sur des applications de ce type et j’ai constaté qu’elles sont difficiles à maintenir, en partie parce que les frameworks JavaScript sont gigantesques et complexes et évoluent rapidement.

Optimiser des requêtes PostgreSQL avec un jeu de données ouvert

Aperçu # Ce billet illustre brièvement quelques techniques d’optimisation des bases de données, en utilisant la BRÉF (Base Révisée des Élu·es de France), qui contient des données sur les représentant·es élu·es en France de 1948 à 2020. La BRÉF est basée sur des données publiques, dans lesquelles une équipe de chercheurs a corrigé beaucoup d’erreurs et d’incohérences. Elle est publiée sous la forme d’une base de données PostgreSQL qui comprend plusieurs tables et offre beaucoup de possibilités de jointures et d’optimisations.

Comparer les performances de requêtes SQL

J’ai réalisé un petit programme en Rust, sqlstopwatch, pour comparer les performances de différentes requêtes SQL. J’ai été inspiré par l’article Benchmarking SQL publié par le projet jOOQ, dans lequel le code du test est implémenté en SQL. Je voulais quelque chose de semblable, mais j’avais quelques exigences supplémentaires : Un programme en ligne de commande avec une interface utilisateur simple en mode texte (TUI) qui affiche une barre de progression. Le programme devrait prendre en charge PostgreSQL, MySQL et SQLite. Il devrait lire les requêtes SQL et les paramètres du test dans un fichier de configuration indiqué sur la ligne de commande. Il devrait afficher les résultats sous forme de table dans le terminal ou les enregistrer dans un fichier au format CSV que je puisse utiliser pour générer un diagramme. L’interface utilisateur a été facile à réaliser avec Ratatui. Pour interagir avec la base de données, j’ai utilisé la bibliothèque asynchrone sqlx, qui fournit une bibliothèque SQLite embarquée.