À la une de SQLPAC

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

May 11, 2020
googleLa 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

April 24, 2020
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

April 20, 2020
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

April 17, 2020
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

April 15, 2020
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é, quand à 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

April 13, 2020
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

Javascript - Lister les event listeners actifs sur une page Web

April 10, 2020
javascriptLors du développement d'un site Web, des écouteurs d'événements, appelés event listeners par abus de langage en français, sont implémentés soit par des librairies tierces, soit par soi même. Dans certaines circonstances, lors du démarrage des tâches d'améliorations des performances ou lors du debug de problèmes de comportement avec les event listeners à cause d'une librairie tierce, il s'avère utile d'obtenir une cartographie de tous les event listeners. Comment obtenir cette liste complète : les événements définis avec addEventListener et ceux définis avec l'attribut correspondant ? Ce n'est pas aussi trivial que cela pourrait l'être. Javascript - Lister les event listeners actifs sur une page Web

Installation d'une instance standalone MariaDB ColumnStore 1.2.3 sur Ubuntu

March 9, 2020
mariadbL'installation d'un système MariaDB ColumnStore standalone sur Ubuntu, afin de découvrir le produit, est plutôt simple bien que la documentation officielle laisse penser le contraire. La prise en main est par ailleurs rapide avec la conjugaison des utilitaires mcsadmin et mcsmysql. Un point de départ technique sur cette base de données orientée stockage colonnes pour le traitement analytique temps réel de données distribuées et à très forte volumétrie. Installation d'une instance standalone MariaDB ColumnStore 1.2.3 sur Ubuntu

InfluxDB v2, prise en main. Préparation de la migration de la version 1.7

February 17, 2020
influxdbLa migration vers InfluxDB v2 nécessite des ajustements, de nombreuses fonctionnalités d'InfluxDB v1 sont remplacées dans la version 2. La procédure de migration des versions 1.x vers la version 2 n'est pas encore dévoilée, mais très probablement elle préconisera des méthodes d'export/import. La terminologie change quelque peu avec la version 2 : une base de données devient un bucket et une organisation est obligatoirement attachée à un bucket. Rien ne change en revanche pour le protocole Ligne InfluxDB. Une prise en main d'un serveur InfluxDB Server v2 est abordée dans cet article ainsi que les ruptures à prévoir lors des migrations des versions 1.x : - InfluQL est remplacé par le langage Flux, les Continuous queries par les Tasks. - Le support natif des protocoles Graphite, OpenTSDB... est supprimé, Telegraf devra être mis en place. - Le plugin Flux pour Grafana n'est pas tout à fait prêt. InfluxDB v2, prise en main. Préparation de la migration de la version 1.7

Protéger le port SSH sur Ubuntu avec Fail2ban - Installation et configuration

February 10, 2020
ubuntuSur les serveurs Ubuntu, ufw (Uncomplicated Firewall) est un bon outil pour appliquer des règles de parefeu sur les ports sans avoir à utiliser les commandes iptables qui sont assez difficiles, mais ce n'est pas suffisant pour protéger le port 22 des services SSH. Fail2Ban est l'outil complémentaire à ufw afin de protéger un système Ubuntu des attaques sur SSH. Fail2Ban est un package Python qui interagit comme ufw avec iptables et il peut être installé dans un environnement virtuel Python, c'est la cas dans cet article. Protéger le port SSH sur Ubuntu avec Fail2ban - Installation et configuration

Architecture, installation et utilisation d'une base de données Time Series InfluxDB 1.7

February 7, 2020
influxdbInfluxDB est une base de données Time Series performante proposant une compression de données efficace. L'architecture est simple et bien conçue (rétentions des mesures, fragments...) et l'ingestion des données facile à mettre en place, en natif ou via des protocoles Time Series standards (OpenTSDB, Graphite ...). Les requêtes sont de type SQL et le reporting est intuitif avec Grafana ou Chronograf. Cette présentation d'InfluxDB v 1.7 souligne également les ruptures à prévoir avec la prochaine version majeure 2.0. Architecture, installation et utilisation d'une base de données Time Series InfluxDB 1.7

Python - Comprendre et démystifier virtualenv

January 24, 2020
pythonAvec Python, lors de l'installation d'un produit, beaucoup de dépendances peuvent être aussi installées. Il devient fastidieux de gérer la pollution de la distribution globale Python: dépendances, conflits de versions de packages, binaires ... Les packages utilisés par la plupart des utilisateurs peuvent être installés dans la distribution système et les packages nécessaires à un seul utilisateur/produit dans un environnement virtuel avec virtualenv. Comment créer et utiliser des environnements virtuels avec virtualenv ? Comment les packages et versions sont gérés dans les distributions virtuelles et système ? C'est le sujet de cet article. Python - Comprendre et démystifier virtualenv

Procédures planifiées de bascules Failover - Failback avec la réplication en continu PostgreSQL (streaming replication)

January 6, 2020
postgresqlDe nombreux articles traitent de la promotion d'un serveur de secours PostgreSQL en serveur principal avec la commande pg_ctl promote. Beaucoup d'entre eux concluent que le serveur de secours doit être reconstruit lorsque le serveur principal est de retour. Qu'en est-il d'une maintenance programmée, maintenance incluant des arrêts, sur le serveur primaire ? Doit-on reconstruire le système primaire/standby ? Évidemment la réponse est : NON. En supposant qu'il y a suffisamment d'espace disque pour conserver les fichiers WAL pendant la tâche de maintenance, en gérant prudemment le point de réplication (replication slot) et l'option de récupération recovery_timeline_target durant les procédures failover/failback, il n'y a pas besoin de reconstruire le système standby impliquant des sauvegardes/restaurations de bases de données et/ou d'utiliser pg_rewind. Procédures planifiées de bascules Failover - Failback avec la réplication en continu PostgreSQL (streaming replication)

Réplication en continu avec PostgreSQL 9.6, 10 et 11 (Streaming replication) - Bases de données PostgreSQL Standby

November 22, 2019
postgresqlLa mise en route de la réplication en continu (streaming replication) avec PostgreSQL 9.6 sur des serveurs Linux Ubuntu 18.04 est très simple. Dans la réplication en continu, le serveur de standby se connecte au serveur primaire, lequel diffuse les enregistrements WAL (Write Ahead Log) au serveur de standby au fur et à mesure qu'ils sont générés, sans attendre que le fichier WAL soit rempli. La réplication en continu permet à un serveur de standby de rester plus à jour que ce qui est possible avec le transfert des journaux. Le serveur de standby peut être en lecture seule (read only) pour le reporting par exemple. Un point de replication (replication slot) garantit que les fichiers WAL nécessaires au serveur de standby ne sont pas supprimés dans le serveur primaire avant leur traitement par le serveur de standby. Plusieurs points de réplication peuvent être définis en fonction du nombre de serveurs standby. Réplication en continu avec PostgreSQL 9.6, 10 et 11 (Streaming replication) - Bases de données PostgreSQL Standby

Installation rapide de PostgreSQL 9.6 - Ubuntu 18.04

September 30, 2019
postgresqlUne instance PostgreSQL 9.6 est initiée ici sur Ubuntu 18.04 avec normalisation et personnalisation (port, répertoires des fichiers de configuration et de bases de données...). Un guide rapide pour créér une base PostgreSQL et gérer cette dernière avec pg_ctl (démarrage, arrêt, redémarrage...) Installation rapide de PostgreSQL 9.6 - Ubuntu 18.04

Microsoft SQL Server 2016, usages de dbcc clonedatabase

June 1, 2019
mssqlUne nouvelle fonctionnalité a été introduite avec SQL Server 2012 : dbcc clonedatabase. Cette nouveauté a été améliorée depuis SQL Server 2016 (objets supportés). Comment cela fonctionne et quel est le but de cette nouvelle fonctionnalité ? dbcc clonedatabase est très utile pour diagnostiquer l'impact du niveau de compatibilité (compatibility level) sur les requêtes dans un environnement de production avec des statistiques temps réel sans modifier directement et immédiatement le niveau de compatibilité de la base de données source, modification qui peut générer des effets de bord et qui doit être menée prudemment. Cette commande s'avère bien pratique aussi pour dupliquer une base de données avec uniquement les objets. Microsoft SQL Server 2016, usages de dbcc clonedatabase

Configuration SSL des connexions avec SQL Server 2019 sur Linux

June 1, 2019
mssqlModifier le port de SQL Server installé dans une zone WAN/DMZ n'est pas suffisant d'un point de vue sécurité, cela diminue les attaques potentielles mais n'empêche pas des outils de "snif" de lire les paquets TCP. Comment encrypter les paquets avec SSL / TLS 1.2 pour SQL Server sous Linux. Les étapes sont faciles avec openssl et l'utilitaire mssql-conf. L'encryption est initiée et forcée par le serveur SQL Server avec un certificat auto-signé (self-signed certificate). Configuration SSL des connexions avec SQL Server 2019 sur Linux

Modification du port de SQL Server 2019 sur Linux et utilisation des alias SQL Server sur les machines clientes

June 1, 2019
mssqlMicrosoft SQL Server installé dans une zone WAN/DMZ et utilisant son port par défaut 1433 est vulnérable aux attaques. Dans cet article, le port de SQL Server 2019, installé sur Linux Ubuntu, est modifié avec l'utilitaire mssql-conf. Le déploiement (automatisé) d'alias SQL Server sur les machines clientes lors du changement du port du serveur réduit considérablement les impacts négatifs. Modification du port de SQL Server 2019 sur Linux et utilisation des alias SQL Server sur les machines clientes

Dépanner un problème de démarrage de SQL Server 2019 sur Ubuntu lié à une erreur d'action avec root

May 31, 2019
mssqlTOUJOURS démarrer le moteur SQL Server sur Linux avec le compte mssql. NE JAMAIS EXÉCUTER directement le binaire sqlservr en tant que root. En effet, le moteur ne peut pas alors être ensuite redémarré normalement avec le compte mssql. Le diagnostic n'est pas aussi simple qu'à l'accoutumée dans ce genre de problème, des permissions sont altérées pour des fichiers systèmes binaires cachés de SQL Server (security.hiv,...). Dépanner un problème de démarrage de SQL Server 2019 sur Ubuntu lié à une erreur d'action avec root

Gestion du service SQL Server 2019 sur Ubuntu avec systemctl

May 31, 2019
mssqlDans l'architecture par défaut, SQL Server 2019 s'exécute avec le compte mssql. Lors de l'arrêt/démarrage/redémarrage du service mssql-server avec systemctl, le mot de passe est demandé. On souhaite autoriser mssql à gérer son propre service sans invites de saisie du mot de passe. 2 solutions sont possibles : définir mssql-server en tant que service utilisateur du compte mssql ou donner les droits avec aucun mot de passe sur le service système mssql-server au user mssql via sudo. Gestion du service SQL Server 2019 sur Ubuntu avec systemctl