Pandas

25/09/2024

Web, Ops, IoT et Time Series - Septembre 2024

Cloud Amazon S3 now supports conditional writes : Amazon S3 supporte les écritures conditionnelles (avec des conditions comme “si le fichier existe”, etc), ce qui peut supprimer une partie de votre code. Un exemple d’usage de ces écritures conditionnelles avec le billet Leader Election With S3 Conditional Writes qui montre comment gérer basiquement l’élection d’un leader dans un système distribué en se basant sur cette fonctionnalité. How to delete a versioned bucket in AWS S3 using the CLI? : Parce que pour supprimer un bucket avec versionning, il faut supprimer les fichiers, les versions du fichiers et les fichiers marqués comme effacés… Database Elasticsearch is Open Source, Again : Elasticsearch et Kibana se voient ajouter une licence AGPL en plus des licences (restrictives) existantes pour revenir dans le monde de l’OSS. La vision positive est de dire que c’est le témoin de la fin d’une époque et que les relations entre les communautés OSS et les CSP américains se sont civilisées. Une vision plus critique consiste à dire qu’il y a toujours les anciennes licences et que le retour à l’OSS est peut être plus symbolique d’autre chose du fait de l’empilement de licences. A voir comment cela évolue mais l’épisode Redis du printemps nuance le sujet… Valkey 8.0: Delivering Enhanced Performance and Reliability - Generally Available: Valkey 8.0.0 Valkey, le fork de Redis 7.2 sous l’égide de la Linux Foundation, a sorti sa version 8.0RC1 en aout et la version finale en septembre - Un point important est la sortie du “single thread model” qui pouvait devenir bloquant pour la scalabilité à force. Pas mal d’autres travaux sur les parties performance / réplication / résilience / observabilité. A ne pas confondre avec Redis 8 DuckDB, in-memory, mais pas totalement ! : En fonction de la taille de votre dataset, DuckDB peut être amené à créer (beaucoup) de fichiers temporaires. Utiliser le format interne de DuckDB semble être une bonne option pour éviter de créer ces fichiers temporaires et ne générer que les fichiers parquets ou autre qu’à la fin du process. Announcing DuckDB 1.1.0 : Version 1.1 de DuckDB Search on PostgreSQL, Building Extensions, and pg_analytics with Philippe Noël : Interview du fondateur de ParadeDB qui fait pg_lakehouse, pg_analytics et pg_search avec un retour sur les extensions Postgres. Middleware Kestra Secures $8 Million to Simplify and Unify Orchestration for All Engineers - How Kestra Raised $8M: Our Seed Deck, Now Public - Lessons Learned from Turning an Open-Source Project into a Viable Business: Kestra fait une seconde levée de fonds de 8M$ pour pousser plus loin son orchestrateur. Si vous avez des besoins d’orchestration, la solution est vraiment agréable à utiliser et l’équipe est top. Ils profitent de l’occasion pour partager différentes ressources et considération sur le projet et leur levée de fonds. Episode 205 : Kestra avec Ludovic Dehon : ma piste audio est partie dans les limbes mais il n’en reste pas moins que cette épisode vous permet d’avoir une présentation de Kestra, sa génèse, leurs choix et le futur. Python Farewell pandas, and thanks for all the fish. : DuckDB devient le backend par défaut du projet Ibis en lieu et place de Pandas. Le billet explique les raisons (NaN vs NULL, performances, etc) Rendez-vous à la fin du mois prochain pour une nouvelle édition.

valkey redis elasticsearch s3 postgres duckdb ibis pandas kestra
30/03/2022

Web, Ops, IoT et Time Series - Mars 2022

Conteneur et Orchestration Docker Engine 20.10.13 : Docker compose v2 arrive dans docker : ce qui permet de faire docker compose (au lieu de l’original docker-compose coté en python) COPY --chmod reduced the size of my container image by 35% : pour réduire la taille de vos images, plutôt que de faire un ADD ... puis un RUN chmod ..., faites directement un ADD/COPY --chmod. Marche aussi avec --chown. Docker Compose > depends > condition: ready : depends_on a une syntaxe longue qui permet de définir une condition sur l’état du service dépendant : démarré (valeur par défaut de la version courte), “sain” (en fonction du résultat d’un healthcheck) ou “terminé avec succès” (si votre service dépend du résultat d’un job ou d’une tâche). Numérique LCC 273 - Interview sur le darwinisme numérique avec Didier Girard - partie 1, LCC 274 - Interview le darwinisme numérique avec Didier Girard - partie 2 et LCC 275 - Interview sur le darwinisme numérique avec Didier Girard - partie 3 : interview en 3 volets de Didier Girard sur la notion de darwinisme numérique au niveau d’une nation, d’une entreprise et de l’individu. Open Data adresse.data.gouv.fr : le site national des adresses dont l’objectif est de référencer l’intégralité des adresses du territoire et les rendre utilisables par tous. Outils GitUI : si vous trouvez tig pas très intuitif/pratique, GitUI pourrait vous plaire. Prévu pour le terminal, il permet de se ballader facilement dans votre historique git & co. L’ outil en codé en Rust. igrep : un grep interactif qui permet d’ouvrir le fichier dans un éditeur et d’aller directement à la ligne contenant le motif recherché. Basé sur l’excellent ripgrep. Python Awesome AGSI : liste de ressources compatibles ASGI (Asynchronous Server Gateway Interface) Demystifying Python’s Async and Await Keywords : une intro à async/await avec asyncio. Python’s zipfile: Manipulate Your ZIP Files Efficiently : le module zipfile inclus dans la librairie standard Python permet de manipuler aisément des archives Zip. La page illustre les différentes méthodes et capacités du module. How to Write User-friendly Command Line Interfaces in Python : si le module argparse est assez connu et peut être aussi Fire, c’est l’occasion de découvrir Click (par l’équipe derrière Flask & co et à ne pas confondre avec clikt en Kotlin), Typer (par le fondateur de FastAPI). Build a User-Friendly CLI from Pure Python Functions : suite de l’article précédent avec la mise en place de DynaCLI dont le but est de générer des CLI depuis des fonctions pythons “pures”. Pass-by-value, reference, and assignment | Pydon’t 🐍 : Python passe-t-il ses variables par valeur ? par référence ou par assignement ? (Dajngo) Classy Class-Based Views : une représentation détaillée des méthodes, attributs et propriétés des “Class based views” de Django Fugue and DuckDB: Fast SQL Code in Python : Fugue permet de combiner du SQL et du code Python et DuckDB permet de faire tourner une base OLAP. De quoi accélérer le traitement de vos données en python ? RGPD & Privacy Shield “Privacy Shield 2.0”? - First Reaction by Max Schrems : La Commission Européenne et les USA ont annoncé une nouvelle version du Privacy Shield. Max Schrems est sceptique pour le moment… Google Analytics 4 (GA4) vs Universal Analytics (UA) : Matomo se livre à un comparatif et une analyse (forcément un peu biaisés) de Google Analytics 4 vs Universal Analytics. Dans tous les cas, la conclusion est de prendre une solution qui répond à vos critères et respectent les règles du jeu (GDPR, etc).

python asgi git grep docker zip cli django numérique rgpd privacy shield docker compose dockerfile google analytics matomo fugue duckdb pandas sql
27/02/2019

Web, Ops & Data - Février 2019

Container et orchestration The Journey to Traefik Enterprise Edition: Product Evaluation Docker Security Update: CVE-2019-5736 and Container Security Best Practices : Vous avez sans doute tous entendus parlé de la faille de runc, sous le doux nom de CVE-2019-5736. Le billet indique qu’il faut utiliser une version 18.06.2+ pour Docker CE et rappelle quelques bonnes pratiques de gestion de containers. Il n’y a pas que les serveurs à mettre à jour, il y a aussi les postes de développeurs, tout aussi exposés. rancher/runc-cve : Pour les gens qui ne peuvent pas mettre à jour le binaire docker, l’équipe de Rancher met à disposition des versions du binaire runc pour les versions depuis docker 1.12.6 jusqu’à 18.06.1 CVE 2019-5736 dans runC : l’article indique une façon d’exploiter la faille de RunC. Ansible Operator: What is it? Why it Matters? What can you do with it? : Ansible ne fournit pas un “oprator” en tant que tel pour Kubernetes mais de quoi permettre de créer un operator en se basant sur des playbooks/roles ansible. Ainsi, si votre ressource change d’état par exemple, alors le playbook associé est joué. Idem pour la gestion d’un upgrade, etc. Cela s’inscrit dans la logique de pouvoir développer ses propres Operator sans avoir à les écrire en Go. Mastering the KUBECONFIG file : différentes astuces autour de la gestion du fichier KUBECONFIG. KubeDB : KubeDB est un operator kubernetes qui vise à pouvoir déployer et gérer différentes bases sur un cluster kubernetes. Les bases supportées sont MySQL, Postgres, Elasticsearch, Redis, MongoDB et Memcached. Le niveau de fonctionnalités dépend beaucoup de la base de données retenus (la réplication semble être gérée pour Postgres mais pas pour MySQL par ex). La version 0.10 vient de sortir, apportant le support du cluster Redis Managed Kubernetes Service : OVH vient de lancer son offre kubernetes managé et pour l’utiliser depuis deux mois maintenant, elle fonctionne plutôt bien. DNS Attaques récentes contre les noms de domaine, que se passe-t-il ? et Détails techniques sur les récentes attaques contre les noms de domaine : deux articles autour de l’actualité autour des attaques DNS évoquée ces derniers jours. Cela permet de distinguer le vrai du faux et de mieux comprendre le fonctionnement de ces attaques dans la chaine DNS. (No)SQL Contrainte d’exclusion : nous connaissons tous les contraintes d’unicité mais parfois cela ne suffit pas. L’exmple montre comment mettre en place une contrainte d’exclusion sur la base de filtre de plage de réseaux : 192.168.122.0/28 est compris dans 192.168.122.0/24, donc si le 2nd est entré dans la base, le 1er ne pourra jamais être ajouté car il y a recouvrement. On retrouve un autre exemple de cette contrainte d’exclusion sur des dates dans l’astuce de la semaine de l’édition 289 de Posrgres Weekly. Understanding Database Sharding : un billet très explicite sur le partitionnement (sharding) de base de données, pourquoi et comment le faire. Il rappelle aussi les inconvénients à le faire et ce qu’il vaut mieux faire avant d’en arriver au sharding. TiDB: Distributed NewSQL with Kevin Xu : TIDB est une base qui se déploie sur Kubernetes et qui s’appuie sur RocksDB. Elle se veut “NewSQL” dans le sens où elle veut supporter à la fois des transactions et de l’analytique. Elle veut offrir notamment un support de MySQL mais dans les faits, le support reste encore limité. Pour ceux qui veulemnt déployer du MySQL sur Kubernetes avec du sharding, il vaut mieux aller voir du coté de Vitess Farewell to fsync(): 10× faster database tests with Docker : alors que l’actualité était plutôt sur le fait que Postgres gérait mieux les erreurs lors d’un fsync(), l’astuce consiste ici à désactiver fsync() et/ou à mettre le dossier des données de votre base en RAM pour accélérer les temps de déroiulement de tests. Testé chez un client, c’est un gain d’au moins 20s qui a été constaté sur une opération de quelques minutes (< 5). Timeseries Tutorial: Time Series Analysis with Pandas : un tutoriel assez progressif et didactique sur la manipulation de données temporelles avec Pandas. TSL: a developer-friendly Time Series query language for all our metrics : L’équipe d’OVH Metrics a crée son propre langage de requêtage orienté séries temporelles pour Prometheus et Warp10. Le billet raconte leur épopée dans le monde des base de données temporelles et comment ils en sont arrivés à créer TSL. On retrouve une syntaxe fonctionnelle et qui se retrouve assez proche de celle de Flux, qui lui supporte InfluxDB et Prometheus.

kubernetes traefik postgres pandas python docker runc operator ansible vitess tidb sharding timeseries kubedb fsync ovh dns

Besoin d'un C(P)TO / Architecte « hands-on » ?

On orchestre, on conçoit — et on code aussi. Parlons de votre plateforme, vos données ou votre projet IoT.

Contactez-nous