PROJET AUTOBLOG


Korben

source: Korben

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Transformez vos commandes curl en Python, JavaScript, PHP, R, Go et bien d’autres avec CurlConverter

jeudi 2 février 2023 à 09:00

Si vous codez des outils qui utilisent des APIs ou d’autres services en ligne pour récupérer de la donnée ou en envoyer, j’imagine que vous adorez vous plonger dans leur documentation. En général, on y trouve des exemples de code qui expliquent comment « discuter » avec l’API, et ces exemples utilisent le plus souvent la commande curl. Quand on a de la chance, il y a aussi des exemples en python ou en JS voire JavaScript, mais ça ne va pas chercher plus loin.

Alors, comment faire pour gagner du temps si vous devez écrire du R, Go, C#, Ruby, Rust, Elixir, Java, MATLAB, Dart, CFML, Ansible URI ou encore du JSON ?

Et bien avec le site CurlConverter, vous allez pouvoir convertir toutes ces commandes curl dans le langage de votre choix. Il est également disponible avec la commande curlconverter que vous pouvez installer sur votre machine.

Par exemple, cette commande curl d’authentification :

curl "https://example.com/" -u "some_username:some_password"

Devient en DART le code suivant :

import 'dart:convert';
import 'package:http/http.dart' as http;

void main() async {
  var uname = 'some_username';
  var pword = 'some_password';
  var authn = 'Basic ' + base64Encode(utf8.encode('$uname:$pword'));

  var url = Uri.parse('https://example.com/');
  var res = await http.get(url, headers: {'Authorization': authn});
  if (res.statusCode != 200) throw Exception('http.get error: statusCode= ${res.statusCode}');
  print(res.body);
}

Ou en C# :

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://example.com/");

request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("some_username:some_password")));

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();

CurlConverter sait interpréter la syntaxe Bash, tels que les chaînes de caractères ANSI-C et les fichiers pipés. Il connaît également tous les arguments de curl (il y en a plus de 300 !!), y compris ceux qui ont été supprimés des versions récentes (et donc ignorés la plupart du temps). Il peut également convertir les données JSON en objets natifs et génère le code capable de le lire soit à partir d’un fichier ou d’un flux en entrée.

Malheureusement, seul le protocole HTTP est pris en charge, et les générateurs de code pour d’autres langages sont moins complets que le générateur pour Python.

Pour utiliser curlconverter, vous pouvez l’installer en tant que bibliothèque JavaScript avec la commande

npm install curlconverter

Ou comme outil utilisable en ligne de commande comme ceci :

npm install --global curlconverter

Voici un exemple de code généré à partir de cette commande :

$ curlconverter --data "hello=world" example.com
import requests

data = {
    'hello': 'world',
}

response = requests.post('http://example.com', data=data)

Bref, super pratique pour ceux qui veulent se simplifier le processus de création de requêtes HTTP dans leur langage favori, tout en se reposant sur des commandes curl plus familières.

Mesurez les performances de votre code ou de vos outils grâce à Hyperfine

mercredi 1 février 2023 à 09:00

On vit dans un monde où on nous incite sans cesse à être plus performants. Il faut en faire plus, plus vite et mieux. Tout le temps. C’est épuisant. Et surtout très con.

D’ailleurs, on n’en demande pas tant à nos outils. On les développe ou on les utilise sans vraiment se poser de question sur leurs performances réelles. Et c’est dommage car en tant que développeur, vous aimeriez peut être mesurer le temps d’exécution d’un script shell pour savoir s’il est plus rapide qu’une version précédente. Ou pouvoir comparer la rapidité d’exécution de différents programmes afin de sélectionner le meilleur !

Pas de souci, j’ai ce qu’il vous faut. Cela s’appelle Hyperfine et c’est un outil de benchmarking qui s’utilise en ligne de commande et qui permet de comparer les temps d’exécution de différents programmes.

C’est très utile pour mesurer par exemple les performances des programmes qui effectuent beaucoup d’écritures et de lectures sur un disque afin de voir comment ils se comportent avec ou sans cache, ou sur un disque dur ou un SSD.

Hyperfine dispose de nombreuses fonctionnalités pour vous aider à obtenir des résultats précis et fiables, notamment une analyse statistique sur plusieurs exécutions, la prise en charge de commandes shell arbitraires et un retour constant sur l’avancement du benchmark et les estimations en cours.

Pour l’utiliser, vous pouvez par exemple faire un benchmark de n’importe quelle commande comme ceci :

hyperfine COMMANDE_A_EVALUER

Pour tester la commande sleep par exemple, on fera comme ceci :

hyperfine 'sleep 0.3'

Ainsi, par défaut, Hyperfine effectuera au moins 10 exécutions du programme et prendra sa mesure à chaque fois pendant 3 secondes pendant au moins 3 secondes. Notez que vous pouvez changer cette durée de test en utilisant l’option -r ou --runs et en spécifiant la durée derrière.

Si vous souhaitez comparer les temps d’exécution de différents programmes, vous pouvez également passer plusieurs commandes à Hyperfine. Ainsi pour pour comparer les temps d’exécution de hexdump et xxd, vous pouvez appeler hyperfine comme ceci :

hyperfine 'hexdump VOTRE_FICHIER' 'xxd VOTRE_FICHIER'

Par exemple si vous avez un doute sur les performances d’une nouvelle version d’un outils, Hyperfine peut vous aider à la comparer avec une version précédente.

Hyperfine vous permet également de réaliser des benchmarks où un seul paramètre change à chaque exécutions. Ca permet de mesurer le comportement d’un programme en fonction des paramètres que vous lui faites digérer.

Au niveau des exports, c’es top puisque vous pouvez récupérer ensuite les résultats au format CSV, JSON, Markdown…etc afin d’analyser ensuite tout ça au calme.

Bref, c’est un petit outil en ligne de commande qui ne paye pas de mine mais qui vous sera d’une grande aide pour faire vos benchmarks et comparer le temps d’exécution de vos propres codes ou d’outils tiers.

Amusez-vous bien !

L’expérience Cinéma à la maison avec le projecteur XGIMI HORIZON Pro

mardi 31 janvier 2023 à 09:50

— Article rédigé en partenariat avec XGIMI

Ça fait longtemps que je me traine un vieux projecteur, acheté en 2015 et que j’ai déjà réparé plusieurs fois Honnêtement, même s’il est un peu bruyant, et qu’il n’est pas 4K, il fait le taf. Alors bien sûr quand XGIMI m’a proposé de tester le HORIZON Pro, j’ai évidemment accepté car j’étais très curieux de voir toutes les évolutions qu’il y a eu en matière de vidéo projecteur depuis toutes ces années, et je dois vous dire que je n’ai pas été déçu. Pour info, je vous ai également mis un code promo à la fin de l’article qui permet d’obtenir 200 euros de réduction sur l’appareil.

XGIMI est une marque qui a été lancé en 2013 et qui travaille pas mal de partenaires comme Google, Harman Kardon ou encore Texas Instruments. Leur coeur de métier, ce sont les « appareils de divertissement tout-en-un » et leur philosophie c’est « user-first », c’est à dire créer des produits simple à prendre en main et efficaces.

Je sais pas si vous avez un projecteur, alors je vais d’abord vous parler de mon expérience « projo ». J’ai un beau mur blanc à la maison, un chouette canapé, et c’est un grand plaisir de pouvoir voir un film « en grand, comme au cinéma ».

J’habite pas à côté d’un multiplex et le cinéma de quartier a un écran rikiki. Ajoutez à ça les sans gênes qui parlent, les grands mères qui éclairent la salle avec leur smartphone parce qu’elle cherchent un truc dans leur sac à main ou encore les boulets qui tapent dans les sièges avec leurs gros genoux, sans oublier le prix prohibitif du ticket et l’impossibilité de mettre en pause quand on veut faire une pause pipi…

Vous l’aurez compris, je suis plutôt guéri de « l’expérience cinéma » et j’adore mon projecteur à la maison, que j’utilise vraiment pour cette expérience (et pas pour mater la TV de la vie de tous les jours).

On passe au test !

Ça fait donc une petite semaine que j’ai troqué mon vieux coucou contre le XGIMI HORIZON Pro et je ne suis pas déçu de la qualité de l’expérience. C’est encore mieux. Ce projecteur dispose d’un moteur optique 4K, d’une résolution de 3840 x 2160, soit 8,29 millions de pixels.

Autant dire que les films sont encore plus sympa qu’avant même si j’ai découvert à cette occasion que Netflix voulait m’escroquer un forfait supérieur pour de la 4K. Non merci :-).

Habituellement, regarder un film sur un projo quand il fait jour dehors, c’est moyen. Mais avec sa luminosité de 2200 ANSI lumens, c’est parfaitement faisable et tout aussi agréable qu’en soirée. D’ailleurs si vous vous demandez à quelle taille d’écran le HORIZON Pro correspond avec sa résolution, c’est comme si vous aviez une TV de 200 pouces de diagonales (soit 4,42 mètres sur 2,52 mètres). Gigantesque non ?

Vous l’aurez compris, j’ai été impressionné par la qualité de l’image. J’ai fait quelques tests avec des vidéos 4K le HDR-10 (pour un max de contrastes) et X-VUE 2.0 qui permet d’avoir une qualité de fou en terme de rendu d’image, avec des couleurs vives, des noirs profond et même une réduction du « bruit » présent sur l’image (+ de clarté quoi).

La techno MEMC, que je ne connaissais pas avant, vient également améliorer la fluidité de l’image, réduisant la latence, faisant disparaitre les images fantômes et compensant la perte de détail sur l’image. C’est très sympa surtout pour les amateurs de films d’action ou les gamers qui voient ainsi leur expérience visuelle grandement améliorée (on évite la nausée).

Et même si j’ai déjà des lunettes qui filtrent la lumière bleue, et bien sachez que ce projecteur protégera vos petits yeux grâce à sa réduction native de la lumière bleue.

Il s’adapte à toutes les surfaces

Et surtout, au niveau des fonctionnalités de réglage, je me suis régalé. Avant je devais jouer avec les molettes pour régler la netteté de l’image, mais avec ce nouveau projecteur, c’est un autre délire. Comme il est équipé de la technologie d’Adaptation Intelligente de l’Ecran (ISA), il est capable de proposer une mise au pointe entièrement automatique ainsi qu’une correction de la distorsion trapézoïdale (si votre projo n’est pas pile poile en face de votre mur ou que votre mur n’est pas droit). Il dispose même d’un mode de contournement intelligent des obstacles, ce qui permet de régler l’affichage pour qu’il esquive un tableau sur le mur ou une plante verte.

Voici une démo où il esquive le fond vert et fait la mise au point tout seul. Puis je règle l’angle de la projection avec la télécommande.

Pour la hauteur d’affichage, pas de pied réglable par contre. Donc il faudra vous procurer un trépied réglable, un support ou tout simplement un meuble à la bonne hauteur. Moi j’ai juste calé un petit bouquin en dessous pour lui donner la bonne inclinaison.

Ensuite, ce que je peux vous dire qu’il est très silencieux. C’est pas une soufflerie comme d’autres vidéo projecteur de qualité moindre. Et il embarque un système audio Harman Kardon, soit 2 haut-parleurs large bande actifs de 8 W chacun, développés spécifiquement pour lui. Du coup, j’ai pas besoin de brancher d’enceintes ou de mettre un casque pour avoir un son de qualité cinéma DTS-HD et DTS Studio Sound, compatible Dolby Digital.

Et le logiciel ?

Au niveau du soft, c’est de l’Android TV avec bien sûr Google Play pour pouvoir installer toutes les applications que vous voulez (Molotov, Amazon Prime, Netflix, Disney Plus mais également des jeux ou des applications comme Spotify…etc). Comme Android TV embarque un système de commande vocale « OK Google », vous pouvez même piloter le projecteur à la voix. Et si ce n’est pas votre truc, il y a bien sûr une télécommande en plastique et métal avec une bonne prise en main (elle est suffisamment lourde pour ne pas faire toc) et est vraiment très agréable à utiliser.

Et évidemment pour les gamers, le projecteur dispose d’un mode « jeu » avec une latence basse de 35ms et également d’un mode « 3D » pour ceux qui veulent se repasser Avatar avec les lunettes. Enfin, en matière de connectivité, il y a tout ce qu’il faut à savoir un port DC, 2 ports USB, 2 HDMI, 1 port ethernet, 1 connecteur audio, un connecteur optique, le Bluetooth 5.0 et évidemment, il se connecte en Wifi à votre routeur.

Si ça vous intéresse, n’hésitez pas à vous renseigner davantage sur les fonctionnalités et les « spécificités » techniques pour vous faire une idée de tout ce que ce projecteur peut vous offrir.

200 € de réduction

Il est dispo au prix de 1 699 euros sur le site de XGIMI ou sur Amazon et avec le code promo « Korben« , vous pouvez économiser 200 euros et obtenir ce projecteur pour 1499 euros directement sur la page

HORIZON PRO de XGIMI

Offre valable jusqu’au 6 février.

Un outil en ligne de commande pour extraire des données depuis du HTML

mardi 31 janvier 2023 à 09:00

Par le passé, j’ai déjà évoqué la commande jq au détour d’un article. Pour rappel, jq permet de transformer des données textuelles provenant de commandes ou de scripts en données structurées de type JSON.

Et aujourd’hui, j’aimerais vous parler de htmlq qui reprend le principe de fonctionnement de jq sauf que là, on bosse sur de la donnée structurée en HTML. L’outil permet ainsi de sélectionner et extraire des éléments d’un fichier HTML en utilisant des sélecteurs CSS.

Histoire que vous captiez mieux, voici un exemple permettant de récupérer le HTML contenu dans un élément dont la classe est .post :

curl --silent https://korben.info/ | htmlq '.post'

Par exemple pour sortir tous les liens d’une page :

curl https://korben.info/ | htmlq --attribute href a

Ou encore pour récupérer uniquement un format textuel (sans les balises HTML) :

curl --silent https://korben.info | htmlq  --text .post

Cela permet de faire beaucoup de choses assez facilement sans forcément avoir à coder un truc pour jouer avec les XPath.

Maintenant pour install htmlq, ça dépend de votre OS :

Cargo :

cargo install htmlq

FreeBSD :

pkg install htmlq

Homebrew (macOS) :

brew install htmlq

Scoop (Windows) :

scoop install htmlq

Pour tous les détails, je vous invite à lire la doc sur Github.

BassoonTracker – un tracker de musique Amiga en JavaScript pour revivre les origines de la musique sur ordinateur

lundi 30 janvier 2023 à 09:00

BassoonTracker est une application de création musicale en ligne gratuite qui suit la longue tradition des trackers de musique. Si vous avez déjà entendu parler de Protracker ou de Fasttracker, vous savez comment ça marche. Sinon, vous êtes probablement trop jeune 🙂

Mais si les mots « Trackers », « Samples », « MOD » et « XM » ne vous disent rien mais que vous vous intéressez quand même aux origines de la musique sur ordinateur, je vous invite fortement à regarder cette vidéo :

BassoonTracker est donc un tracker de musique Amiga old-school qui a été entièrement codé en JavaScript pur. Il est capable de jouer et de modifier des fichiers Module Amiga (MOD) et des fichiers XM de FastTracker 2.

Si ça vous dit de le tester, cliquez ici.

Voici la liste des fonctionnalités de BassoonTracker :

Excellent non ? En tout cas, si vous vous sentez l’âme créative en ce moment, c’est peut-être un bon moyen de ressentir ce qu’on ressenti vos ancêtres en 1987 quand ils ont commencé à taquiner du clavier pour écrire leurs premiers morceaux 8 bits. Il y a même un petit jeu de Snake dedans :

Sérieusement, qui a le temps de faire un portage JavaScript super quali comme ça, alors que moi, j’ai même pas le temps d’aller pisser ?!

En tout cas, si vous êtes un fan de tracker ou si vous êtes simplement curieux de découvrir cette manière de faire de la musique, BassoonTracker est un excellent moyen de vous y mettre.

Les sources du projet sont ici.