Transpiler SQL
Depuis 2023, je travaille sur la conversion de code SQL d’Oracle, MySQL et SQL Server vers PostgreSQL. Le problème est sérieux. Voici quelques exemples concrets : ...
Depuis 2023, je travaille sur la conversion de code SQL d’Oracle, MySQL et SQL Server vers PostgreSQL. Le problème est sérieux. Voici quelques exemples concrets : ...
En 2018, je partageais ici une configuration pour résoudre en DNS vos conteneurs sous le domaine local .docker. Depuis, la technologie et mes usages ont évolués. Voici une petite mise-à-jour ! resolved vs dnsmasq La solution était basé sur dnsmasq, or, depuis systemd 258, le service resolved permet de déléguer la résolution DNS d’une zone à un serveur spécifique. L’intérêt ? La simplicité d’administration et la performance. dnsmasq est aussi un serveur DHCP, un cache DNS. Ce n’est pas utile pour ce besoin. ...
powerline.bash reçoit peu de communication, alors que le projet est bien actif. powerline.bash est une invite de commande de la famille Powerline écrite en pure bash, en un seul fichier de 2K lignes. Le projet veille particulièrement à optimiser les performances pour garder votre terminal réactif. Nerd Font v3 Il y a du mouvement du côté des icônes pour terminal. icons-in-terminal n’a pas reçu de mise-à-jour depuis 2017, on peut le considérer comme abandonné. Notamment, Doom Emacs est passé à Nerd Fond. ...
Après l’asynchrone, le typage statique est la nouvelle tendance dans les langages de programmations : TypeScript, Ruby 3, etc. Python n’y échappe pas et voilà pourquoi ça m’agace. Ce que j’aime dans Python J’ai commencé à développer en Python en 2006. C’était avant les décorateurs, les générateurs, les gestionnaires de contextes, etc. Avant unittest et mock aussi. Le Python de l’époque peut paraître rudimentaire aujourd’hui. J’avais le sentiment d’écrire du code aussi simple qu’en C ou PHP, mais avec une syntaxe plus élégante, plus expressive. On pouvait facilement remplacer du C, PHP, Perl ou Java avec du Python avec moins de code et moins de bibliothèques tierces. ...
Lorsqu’il s’agit d’initialiser une machine virtuelle dans une infrastructure VMWare vSphere, les systèmes Linux sont le parent pauvre. En effet, VMWare a bien intégré SysPrep de Microsoft. Pour Linux, il y a VMWare Guest Tools qui permet un peu d’initialisation. C’est limité au nom d’hôte et aux interfaces réseaux essentiellement. Notamment, VMWare Guest Tools ne permet pas d’injecter une clef publique SSH. cloud-init cloud-init est un projet de configuration de système. C’est un agent déployé dans une image de machine virtuelle. Au démarrage du système, cloud-init cherche une configuration et l’applique. Cela inclue la définition du nom d’hôte, la configuration réseau, la création d’utilisateurs, l’injection de clef publique SSH, l’installation de paquets, etc. ...
Le monde des formats de fichier de configuration est foisonnant. C’est la course aux standards. ini, xml, json, yaml, toml et py tout court : il y a déjà pas mal de choix. Et pour combler le tout, je redécouvre json5. La version 1.0 datant de 2018. Fonctionnalités Les fonctionnalités de JSON5 sont très simples : Les commentaires sur une ou plusieurs lignes. Guillemets optionnels pour les clefs d’objet. Virgule finale pour les objets et les tableaux. Chaînes de caractères multilignes. Guillemets simple ou double pour les chaînes de caractères. Les nombres hexadécimaux avec 0xff. Et une poignée d’autres extensions que vous trouverez décrites sur la page du projet. Voici une illustration: ...
On ne présente plus l’intérêt d’un gestionnaire de mots-de-passe. C’est une solution élégante pour avoir les avantages de mots de passe compliqués, de les changer régulièrement sans l’inconvénient de devoir les retenir. Il y a beaucoup de solutions pour cela, libre comme propriétaire. Pour ma part, je viens seulement de faire le pas. Une raison qui m’a beaucoup retenu, c’est le stockage. Je ne veux pas envoyer tous mes mots de passe dans un site qui sera tôt ou tard compromis. J’ai aussi été déçu d’oublier le mot de passe maître de mon trousseau de clef Révélation, … (qui n’est plus maintenu). ...
J’en peut plus des tests soit-disant unitaires ! Tout le monde fait des “tests unitaires” . C’est devenu un mot magique. Et ça ne veut plus rien dire. C’est plutôt l’enfer des tests automatiques : lenteurs, invasion de mocks, faux-positifs, découragement, dénigrement des tests unitaires, etc. Qui n’a pas vécu ça au boulot ? Regardons ça de plus près. La jungle des tests automatiques Les tests automatiques ont des tas de variantes : test d’acceptation, test bout-en-bout (end to end), behaviour test, test fonctionnels, test de régression, test de performance, test d’intégration, smoke test, pen test, test de résilience, fuzzy test, etc. chaque année a sa nouvelle variante de test automatique. Un test unitaire peut être un test de régression. Mais un test d’intégration aussi. Parcontre, un test d’intégration ne peut pas être un test unitaire. Pas facile de s’y retrouver. ...
Dès qu’une application web a besoin de déléguer une tâche lourde ou critique en arrière-plan, on se retrouve avec Redis pour stocker le résultat des tâches et parfois RabbitMQ pour gérer la messagerie. La mode est maintenant d’utiliser Redis aussi pour la messagerie, grâce à une procédure stockée en lua, ça économise le gros bousin qu’est RabbitMQ. Postgres peut déjà remplacer Redis grâce à JSONb. Mais pour notifier, va-t-on bourriner Postgres avec des SELECT ? Heureusement non, grâce à LISTEN/NOTIFY ! ...
De temps en temps, on me demande des conseils d’articles et de tutoriels pour connaître l’état de l’art en Python sur tel ou tel sujet. Pas si facile quand on baigne dedans et qu’on a déjà digéré l’essentiel des bonnes pratiques depuis des années. Et puis ça bouge. Alors voici ma version 2019 ! Utiliser Python 3 Vous découvrez Python et on vous a pris la tête avec Python 2 vs Python 3 ? Pour 2019, c’est plus simple : partez directement sur Python 3, au minimum 3.4. Si vraiment on vous demande d’être compatible Python 2, le portage ne sera pas bien compliqué à faire après coup. ...