À la une de SQLPAC

InfluxDB v2, le langage Flux et les bases de données SQL

influxdbGrande nouveauté de la base de données time series InfluxDB v2 et de son langage Flux : les passerelles vers les moteurs de bases de données SQL (PostgreSQL, MySQL, Microsoft SQL Server…). Pour interagir avec des bases de données SQL, 2 fonctions simples : sql.from et sql.to. Cas d’utilisation et considérations spécifiques sur les conversions des types de données.

InfluxDB v2, le langage Flux et les bases de données SQL

InfluxDB - Langage Flux, fonctionnalités avancées

influxdbLe nouveau langage Flux dans InfluxDB v2 résout un bon nombre de limitations du langage InfluxQL. Tour d’horizon des fonctionnalités avancées du langage Flux : jointures, pivots, histogrammes, colonnes calculées (map), fonctions d’agrégat personnalisées (reduce). Dans la plupart des sujets, des cas d’utilisation réels sont abordés : joindre des données lorsque les horodatages diffèrent de quelques secondes, simuler une jointure externe en attendant les nouvelles méthodes de jointure à venir (left, right…), construire des histogrammes sans données cumulatives mais la différence…

InfluxDB - Langage Flux, fonctionnalités avancées

InfluxDB v2 : langage Flux, aide-mémoire

influxdbLangage Flux d’InfluxDB v2, guide rapide et aide-mémoire (cheat sheet). Interrogation des données, filtres, windowing, jointures, pivots, histogrammes, map, reduce, sources de données SQL…

InfluxDB v2 : langage Flux, aide-mémoire

Ubuntu - Certificats self-signed avec sa propre autorité de certification

ubuntuAvec les certificats auto-signés (self-signed), sans autorité de certificats, les erreurs "x509: certificate signed by unknown authority" tombent dès utilisation de lignes commandes pour des besoins très spécifiques (curl…). Il est tout à fait possible de créer sa propre petite autorité de certificats (CA) pour des certificats auto signés afin de ne pas devoir utiliser les options qui désactivent la vérification complète de la chaîne SSL jusqu’à l’autorité de certificats (curl --insecure, influx --skip-verify…).

Ubuntu - Certificats self-signed avec sa propre autorité de certification

InfluxDB - Passer du langage InfluxQL au langage Flux

influxdbPasser du langage InfluxQL (SQL-Like) au langage Flux d’InfluxDB v2 est un petit peu déroutant au tout premier abord, mais on acquiert très vite la mécanique. Un tour d’horizon sur la migration des requêtes InfluxQL existantes vers Flux (filtres, windowing, copie de données…) avec dans la mesure du possible une mise en parallèle des syntaxes.

InfluxDB - Passer du langage InfluxQL au langage Flux

InfluxDB : Migration vers la version 2, procédure

influxdbInfluxDB v2 est sorti officiellement en novembre 2020. La migration d’un serveur InfluxDB v1.8 vers InfluxDB v2 est assez simple. Ce qu’il faut retenir :
  • Une base de données + politique de rétention devient un bucket.
  • La rétro compatibilité avec les API 1.x est garantie, mais uniquement pour des users 1.x authentifiés.
  • Les continuous queries doivent être migrées en tâches Flux.
  • InfluQL est remplacé par le langage Flux.
  • Le support natif des protocoles OpenTSDB, Graphite… est retiré, Telegraf doit être mis en œuvre.
Un tour d’horizon de la migration avant de pouvoir profiter au mieux ultérieurement des fonctionnalités du langage Flux (jointures, pivots, packages SQL…)

InfluxDB : Migration vers la version 2, procédure

MySQL 8, clônage d’instances pour la réplication avec la commande CLONE

mysqlLe nombre d’étapes manuelles pour configurer une réplication est élevé en particulier lorsque l’instantané des bases de données du serveur source est effectué. À partir de MySQL 8.0.17, le nouveau plugin CLONE simplifie le provisionnement des replica. Quelques limitations à noter, sinon son utilisation est simple et l’opération de clônage peut même être monitorée. Bien pratique pour dupliquer des environnements, au delà de la réplication.

MySQL 8, clônage d’instances pour la réplication avec la commande CLONE

Réplication MySQL 8, binary log file position. Prise en main, démarrage rapide

mysqlPrise en main et installation rapide d’une réplication MySQL 8 par position dans les fichiers de logs binaires. Quelques spécificités MySQL 8 sont abordées :
  • changement de terminologie en cours dans les produits MySQL, changement qui impacte gradement la réplication.
  • effet de bord du nouveau nouveau plugin d’authentification caching_sha2_password.
  • nouveauté mode "read only" par base de données.

Réplication MySQL 8, binary log file position. Prise en main, démarrage rapide

Paramètres régionaux sur Ubuntu (locales), configuration des langues

ubuntuDans la plupart des langages de programmation, il est pratique d’utiliser les paramètres régionaux (locales) pour afficher des nombres, des dates… Les paramètres régionaux évitent le développement de fonctions pour formater les données. L’inconvénient majeur : les paramètres régionaux disponibles dépendent de l’OS. Si le paramètre régional demandé n’est pas installé sur l’OS hébergeant le programme, le formatage échoue ou revient à des paramètres par défaut. Un rapide survol des paramètres régionaux sur Ubuntu : installation, modification temporaire ou permanente.

Paramètres régionaux sur Ubuntu (locales), configuration des langues

Python - Comprendre args, kwargs dans les fonctions

pythonEn débutant en Python, on rencontre des exemples de code avec les syntaxes *args, **kwargs en arguments de fonctions. Habitué à d’autres langages, premier réflexe : c’est quoi ça ? des pointeurs en Python ? *args et **kwargs permettent de passer de multiples arguments et des arguments nommés à une fonction. Rien de bien sorcier. Dans cet article, *args et **kwargs expliqués à travers des exemples simples, et par la même occasion, un mot rapide sur les opérateurs * et **.

Python - Comprendre args, kwargs dans les fonctions

Python - Guide pratique, aide-mémoire

pythonUn aide mémoire Python sur quelques packages, aide mémoire à compléter au fil du temps :
  • Traitement des données JSON
  • Arguments des programmes (argparse)
  • Fichiers ini (configparser), fichiers yaml (PyYAML)
  • Requêtes HTTP (packages requests et httplib2) …

Python - Guide pratique, aide-mémoire

MathJax - Tex : guide pratique, aide-mémoire

mathjaxPlus efficace qu’un long tutoriel, des exemples d’équations MathJax / Tex mettant en œuvre les situations les plus courantes.
  • Matrices
  • Fractions
  • Fonctions par morceaux
  • Tableaux
  • Centrer des équations sur le signe =
  • Numéroter des équations, appliquer des signets
  • Styles
  • Et plus à venir au fil du temps…

MathJax - Tex : guide pratique, aide-mémoire

Utiliser les variables CSS pour changer un style de page sans rechargement

cssLors de la conception d’un site, éviter les rechargements des pages pour mettre à jour des données ou des styles est souvent un prérequis. Les variables CSS sont très utiles pour changer un style de page sans recharger la page. Pour développer un bouton bascule (toggle) qui permet de passer du style "jour" au style "nuit" sans recharger la page : une variable cookie, un peu de Javascript et principalement des variables CSS.

Utiliser les variables CSS pour changer un style de page sans rechargement

Google PageSpeed - LightHouse 6, nouveautés CLS (Cumulative Layout Shift) et LCP (Largest Contentful Paint)

lighthouseLes métriques de performances des pages Web sont modifiées avec LightHouse 6, elles sont plus réalistes et proches de l’expérience utilisateur. Une métrique particulièrement intéressante est introduite : CLS (Cumulative Layout Shift). La statistique CLS quantifie la stabilité visuelle des pages Web pour éviter les mauvaises expériences utilisateur. Tous les outils sont à disposition avec Chrome et LightHouse pour diagnostiquer les éléments concernés dans l’instabilité visuelle d’une page et en peu d’étapes, le score CLS peut être optimisé, mais tout va dépendre bien entendu de la complexité des pages et du code.

Google PageSpeed - LightHouse 6, nouveautés CLS (Cumulative Layout Shift) et LCP (Largest Contentful Paint)

Mesurer et stocker les métriques des performances des pages avec les API Google PageSpeed Insights et Python

lighthouseLa vitesse des pages est un des critères clés dans les algorithmes de classement des moteurs de recherche Google. Les API Google PageSpeed Insights donnent la possibilité d’extraire par programmation les résultats des audits LightHouse exécutés sur des pages Web depuis les laboratoires Google. Avec très peu de lignes de code Python, les statistiques principales peuvent être récupérées et stockées dans une table pour historisation : utile lorsqu’on planifie des benchmarks avant/après migrations, mises à jour.

Mesurer et stocker les métriques des performances des pages avec les API Google PageSpeed Insights et Python

Python, configuration applicative - variables d’environnement, fichiers ini et YAML

pythonBien entendu, aucune configuration applicative codée en dur dans des programmes, programmes Python ou non. Comment lire (écrire) des données de configuration avec Python à partir de variables d’environnement, de fichiers INI ou de fichiers YAML ? Les packages os, configparser et PyYAML répondent très simplement à ces besoins. configparser pour les fichiers INI et yaml pour les fichiers YAML ont leurs avantages et inconvénients si on se hasarde à les comparer pour faire un choix. Le format JSON n’est pas abordé ici, il fait l’objet d’une publication dédiée.

Python, configuration applicative - variables d’environnement, fichiers ini et YAML

Python, manipuler les dictionnaires avec la notation dot

pythonPython n’est pas Javascript. Habitudes, difficile de les éradiquer. Comment utiliser la notation dot avec Python sur un dictionnaire ? Cela peut être réalisé nativement avec une classe ou SimpleNamespace mais quand les dictionnaires sont imbriqués, cela devient fastidieux sans avoir à développer sa propre bibliothèque. Des packages de la communauté Python existent pour faire le job : Prodict, python-box.

Python, manipuler les dictionnaires avec la notation dot

Python, gestion des requêtes HTTP avec les packages requests et httplib2

pythonDans les échanges entre applications via des API, des requêtes HTTP avec la méthode GET ou POST sont de plus en plus utilisées. Avec Python, 2 packages très intéressants pour exécuter des requêtes HTTP : requests et httplib2. Le package requests est le plus simple syntaxiquement et intègre en natif un décodeur JSON, quant au package httplib2, une fonctionnalité très intéressante : la mise en cache pour éviter les appels réseaux non nécessaires dans certains contextes applicatifs avec des données relativement statiques.

Python, gestion des requêtes HTTP avec les packages requests et httplib2

Python, parsing des arguments avec les packages argparse and getopt

python2 packages natifs sont disponibles avec Python pour gérer efficacement les lignes de commandes et arguments d’un programme Python : argparse et getopt. argparse est de loin le package le plus évolué et offre le plus de productivité, quant à getopt une ressemblance très forte à ses habitudes de gestion des arguments en shell ou en C.

Python, parsing des arguments avec les packages argparse and getopt

Python, lire et écrire des données JSON avec le package natif json

pythonUne des premières choses à savoir quand on aborde le langage Python dans le contexte technologique actuel (échange de données, API…) : comment lire et écrire des données JSON dans un programme Python ? Python intègre le package json en natif pour ces opérations avec les méthodes load, loads, dump et dumps. Si on vient du monde Javascript, quelques habitudes de programmation avec les données Json non utilisables directement en Python (dot notation…).

Python, lire et écrire des données JSON avec le package natif json