FreshRSS

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Comment envoyer des emails avec du JavaScript ?

4 juillet 2022 à 09:00
Par : Korben

Si vous avez déjà envoyé un email à partir d’une application web, vous savez que ce n’est pas forcément très naturel et que vous devez installer en plus des outils comme sendmail…etc.

Le projet libre SMTPJS propose de contourner ce problème en envoyant directement vos emails via SMTP à l’aide d’un simple script JavaScript insérable dans vos pages web et bien sûr de récupérer des callbacks pour savoir si les messages ont été correctement transmis.

Gain de temps et accessible aux débutants.

Pour cela, intégrez ce code dans le header de votre page :

<script src="https://smtpjs.com/v3/smtp.js"></script>

Puis envoyez un email comme ceci :

Email.send({
    Host : "smtp.yourisp.com",
    Username : "username",
    Password : "password",
    To : '[email protected]',
    From : "[email protected]",
    Subject : "This is the subject",
    Body : "And this is the body"
}).then(
  message => alert(message)
);

Vous devrez évidemment disposer d’accès SMTP accessibles. Et cela ne vous aura pas échappé, si le code est mis dans une page web, on verra le mot de passe que vous utilisez pour le SMTP, ce qui n’est pas cool du tout.

C’est pourquoi SmtpJS passe par le service ElasticMail qui propose un token d’authentification permettant d’exploiter le script sans pour autant dévoiler un couple login/password. Ce qui donnerait ceci par exemple :

Email.send({
    SecureToken : "C973D7AD-F097-4B95-91F4-40ABC5567812",
    To : '[email protected]',
    From : "[email protected]",
    Subject : "This is the subject",
    Body : "And this is the body",
	Attachments : [
	{
		name : "smtpjs.png",
		path : "https://networkprogramming.files.wordpress.com/2017/11/smtpjs.png"
	}]
}).then(
  message => alert(message)
);

Cela ne conviendra pas à tous les besoins évidemment, mais dans certains cas, c’est quand même beaucoup plus simple d’envoyer du mail avec SMTP JS.

Les avantages merveilleux du CI / CD pour les dev

21 juillet 2022 à 09:00
Par : Korben

— Article en partenariat avec Talent.io —

Aujourd’hui les amis, nous allons parler d’un sujet très cher au Devops : Le CI/CD !

Pour ceux qui auraient zappé ces 10 dernières années, le CI/CD est une méthode de développement qui permet de publier des mises à jour de votre code à tout moment sans impacter ce qui est en production. C’est donc parfait lorsqu’on a besoin de mettre en place des cycles de développement plus rapide avec des modifications de code quotidiennes.

En ce qui concerne la signification, CI veut dire « Intégration Continue » et CD, « Déploiement Continu ». C’est très demandé dans les entreprises actuelles et en tant que développeur ou devops, c’est un sujet que vous devez connaître surtout si vous avez prévu de changer de travail pour quelque chose qui vous correspond plus.

Si vous souhaitez être plus proche de chez vous voire en télétravail, avoir un meilleur salaire ou tout simplement travailler sur des projets plus intéressants, je vous invite à vous créer un compte sur la plateforme talent.io. Ça se fait en quelques clics et vous recevrez ensuite des offres de la part d’entreprises qui correspondent à vos critères et qui affichent le salaire d’entrée de jeu ! talent.io c’est LE moyen le plus simple et le plus rapide de trouver votre prochain job tech. Les inscrits trouvent leur emploi en 20 jours en moyenne.

L’intégration Continue

Ce qu’on appelle Intégration Continue (CI) consiste pour les développeurs à tout simplement fusionner avec la branche master, l’ensemble de leurs modifications et cela autant de fois qu’ils le souhaitent

Ainsi, une équipe de développeurs peut travailler simultanément sur le même projet. Le fait d’intégrer une équipe de développeur dans un processus CI/CD permet de s’assurer que le code est testé, correctement formaté et compatible avec l’existant avant de le déployer.

Chacune de ces fusions de code va alors déclencher automatiquement une séquence qui « construire » (build) et tester le code. Ainsi, à chaque ouverture d’une pull request ou à chaque modification du code, le serveur git envoie une notification au serveur d’intégration continue. Ce dernier va alors cloner le dépôt, effectuer les checkouts nécessaires sur la branche source pour enfin la fusionner avec la branche master. Puis le script de build est alors lancé. Cette étape permet ainsi de valider que le code est sûr et respecte les bonnes pratiques, mais également d’automatiser le chargement des dépendances, l’installation des outils nécessaires à l’application et bien sûr la compilation si besoin.

Exemple de script dans l’éditeur de pipeline de Gitlab

La phase de build

Cette phase de build vérifie que l’application, selon le code qui a été commité, peut se qualifier pour les tests ultérieurs.

Cela consiste à « construire » l’application. Avec des langages compilés, ça signifie obtenir un binaire opérationnel alors que sur les langages interprétés, cela consiste à valider la présence des dépendances et des outils nécessaires pour construire l’application. L’objectif ici est d’avoir quelque chose qu’on puisse lancer et tester. Cela peut donc être un binaire, un programme d’install, une image docker, un site web…etc.

La phase de test

La seconde étape consiste à analyser le code sous différents aspects à l’aide d’outils de tests automatisés. C’est une étape qui lorsqu’elle est faite manuellement, est boudée par les développeurs qui la trouvent chronophage et ennuyeuse. On pourrait bien sûr déléguer les tests à d’autres personnes, mais cela déconnecte les développeurs de l’ensemble du projet sans parler du fait que les testeurs vont passer leur temps à les déranger.

Les étapes de validation

Ainsi durant cette phase de test, le linting qui consiste à vérifier le code pour détecter les erreurs programmatiques et stylistiques. Cela permet de s’assurer une certaine homogénéité dans le code.

La qualité du code et de ses fonctions est également évaluée et de nombreuses mesures comme le nombre de lignes, la documentation ou la complexité du code sont prises en compte pour déterminer les endroits dans le projet où le code peut être amélioré.

La sécurité du code est également prise en compte à l’aide d’outils d’analyses qui partent à la recherche des risques de vulnérabilités dans le code lui-même et ses dépendances.

L’accès aux logs

Tout cela se fait durant un laps de temps assez rapide (moins d’une dizaine de minutes) selon les ressources machines disponibles et une fois que la séquence est terminée avec succès, cela signifie que la Pull Request est autorisée et on peut alors passer à la phase de déploiement.

Évidemment, si la séquence est stoppée à cause d’une erreur, la fusion du code est stoppée et un rapport est généré pour permettre aux développeurs de résoudre rapidement le souci. Le CI permet ainsi de travailler par petites itérations et les bugs peuvent ainsi être corrigés plus rapidement.

Vient ensuite une phase « release » qui consiste à packager l’application pour son déploiement ou sa distribution en y intégrant le code de l’application, les scripts d’installation, les dépendances et autres bibliothèques, la documentation, les métadonnées et bien sûr la licence.

Cette version packagée de l’application est alors disponible pour être distribuée ou publiée sur le serveur et servir de point de départ à une configuration des éléments tiers comme la base de données. Si on s’arrêtait à cette étape, on parlerait alors de « livraison continue » (Continuous Delivery), c’est à dire s’assurer que le code est en permanence déployable.

Mais avec le déploiement continu, comme avec talent.io, on va un peu plus loin. D’ailleurs pensez bien lorsque vous renseignerez votre profil talent.io à vous démarquer en faisant ressortir vos points forts comme la maîtrise des concepts CI/CD et vos éléments différenciant pour que les entreprises qui recrutent s’arrêtent sur votre profil.

Le déploiement continu

La phase CD (Déploiement Continue) permet de déployer cette release sur le serveur de destination soit directement après chaque pull request, soit en respectant un calendrier de mise en prod ou sur action humaine uniquement. Ainsi, chaque changement qui arriver à passer toutes les étapes de validation (CI) peut alors finir en production, et cela sans aucune intervention humaine.

C’est donc un excellent moyen d’accélérer la mise en production des nouveautés et permet aux développeurs de se concentrer sur l’écriture de code plutôt que d’organiser des journées de mises en production après des mois de travail à l’aveugle.

Lorsque vous aurez trouvé l’entreprise de vos rêves grâce à talent.io, je compte sur vous pour mettre du CI/CD en place afin de soulager votre équipe ou vous même.

Les outils

Pour faire du CI/CD, il existe des dizaines de solutions commerciales dont voici les plus connues et utilisées :

  • Jenkins est super populaire, car totalement libre et gratuit et permet de décrire des pipelines de construction avec le langage Groovy. Il offre ainsi plus de flexibilité, mais demande un peu plus de compétences techniques.
  • GitHub Actions, cet outil de CI/CD proposé sur le site GitHub et son équivalent pour les entreprises, permet de construire ses pipelines à l’aide d’une configuration YAML.
  • Gitlab CI/CD est semblable à Github Actions. Il est capable de pointer de manière assez spécifique vers les tests qui ont échoué, ce qui permet un debug plus rapide.
  • Enfin, Travis CI totalement dans le cloud permet de monter ses routines CI/CD sans aucune configuration complexe. Et comme il est compatible gratuitement avec Github, Bitbucket ou encore Gitlab, vous pouvez également l’utiliser pour vos projets open source ouvert.

Conclusion

Vous l’aurez compris, il y a de nombreux avantages à mettre en place une procédure CI / CD. En procédant par petites étapes, et en multipliant le nombre d’itérations, on réduit ainsi la probabilité d’erreur et la quantité de travail nécessaire à l’intégration des changements dans l’application. Au contraire, travailler dans de longues boucles de rétroaction est beaucoup plus risqué pour le projet et le temps de travail est plus difficile à estimer.

Le fait d’automatiser toutes ces étapes d’intégration soulage fortement les développeurs des tâches répétitives et permet d’éviter bon nombre d’erreurs humaines à l’aide des tests automatisés effectués à chaque livraison de code. Cela se fait d’ailleurs en toute transparence avec un accès rapide aux logs et il devient très simple de comprendre d’où provient l’erreur.

Il y a donc une meilleure productivité de la part des développeurs, des releases plus fréquentes et une augmentation de la qualité et de la sécurité de ce qui est produit grâce à la standardisation des tests.

Si vous ne l’avez pas encore mis en place dans votre entreprise, je vous recommande vivement d’essayer l’approche CI/CD. Cela vous soulagera sur bien des aspects, notamment en ce qui concerne les tests et l’ensemble des tâches rébarbatives et vous pourrez enchaîner les déploiements dans la joie.

Pensez également à vous créer un profil gratuitement sur la plateforme talent.io, que ce soit pour trouver votre nouvel emploi ou simplement rester à l’écoute du marché. Déjà plus 6 000 développeurs, devops et autres profils tech ont été recrutés grâce à talent.io, alors pour quoi ne pas tenter ?

VS Look – Pour personnaliser les couleurs de votre Visual Studio Code

23 juillet 2022 à 09:00
Par : Korben

Je sais qu’en général, les développeurs aiment bien personnaliser des trucs… Genre en mettant des autocollants sur leur laptop, sur leur voiture, sur leur torse glabre et leur ventre de bière, ou encore sur leurs enfants.

Si c’est votre cas, que vous avez beaucoup de temps devant vous, il existe une extension pour Visual Studio Code qui permet de modifier la couleur de TOUS les éléments de VS Code.

Pour l’installer, rendez-vous sur la marketplace ici puis choisissez VS Look comme thème par défaut. Ensuite, via l’outil de lancement de commande, cherchez VSLook:Edit.

Basiquement, l’outil est un peu pénible à prendre en main, car il existe de très nombreux paramètres à changer, mais les développeurs de ce plugin ont réalisé une doc pour vous guider.

Bien débuter avec Git : installation et prise en main !

17 août 2022 à 10:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à utiliser Git, un logiciel open source de gestion de versions qui est très populaire chez les personnes amenées à manipuler du code : les développeurs, les personnes DevOps, mais également les personnes adeptes de scripting (comme moi).

Sans un outil adapté, la gestion des versions pour un projet de développement ou même un script, cela peut vite devenir compliqué sur la durée... D'autant plus si l'on travaille à plusieurs sur ce projet. Par exemple, cela oblige à créer soi-même des copies de ses fichiers afin de pouvoir revenir en arrière si cela ne se passe pas bien. Git apporte une réponse à cette problématique, car il va assurer un suivi sur tous les fichiers de votre projet afin de permettre une gestion des versions. Git est ce que l'on appelle un système de contrôle de version décentralisé (DVCS - Distributed Version Control System).

Git s'utilise aussi bien sur Linux, Windows que macOS et pour le stockage des données des différents projets, il y a plusieurs manières de voir les choses. Tout d'abord, on peut utiliser Git en local, c'est-à-dire que l'on installe l'outil sur sa machine et on stocke le code en local pour gérer les versions de son projet. Ensuite, on peut utiliser Git au travers des services en ligne comme GitHub ou GitLab.

GitHub est idéal pour les projets publics tandis que pour des projets privés, privilégiez plutôt GitLab et Bitbucket. Il est également possible de créer son propre serveur Git sur une machine Linux, ou sur un NAS comme sur Synology où il y a un paquet "Git Server". Pour les utilisateurs du Cloud Azure de Microsoft, sachez qu'Azure DevOps intègre une fonctionnalité nommée "Azure Repos" qui sert à gérer des dépôts Git privés.

Au sein de cette introduction à Git, je vais manipuler à partir d'une machine Windows mais le fonctionnement est le même sur Linux ou macOS. A vous de choisir la plateforme que vous préférez.

II. Git : le vocabulaire à connaître !

Quand on commence à s'intéresser à Git, il y a certains termes à connaître pour bien comprendre le fonctionnement de Git, mais aussi être capable de bien interpréter la documentation, d'orienter ses recherches sur le Web, et être capable d'utiliser les bons termes au bon moment quand on en parle avec ses collègues. Avant de rentrer dans la phase de mise en pratique, je souhaitais vous lister quelques termes que vous devez connaître absolument pour travailler avec Git.

  • Repository

En français, un repository est un dépôt et il correspond à un espace de stockage sur lequel vous allez venir stocker les fichiers de votre projet. Autrement dit, c'est un dossier connecté à Git, car Git va surveiller ce dossier notamment pour identifier les changements, l'historique, etc. Un dépôt peut être local ou distant (GitHub, GitLab, etc.).

  • Master / Main

Lorsque l'on travaille sur un projet, il y a toujours (en principe) une branche principale nommée "Master" c'est-à-dire "maître" (cette branche peut aussi s'appeler main) : il s’agit de la branche principale du projet qui correspond toujours à la dernière version d'une application (ou d'un script, etc.). Néanmoins, il est possible d'utiliser un autre nom !

  • Branch

L'une des forces de Git, c'est de permettre la création et la gestion de plusieurs branches qui vont venir s'ajouter à la branche "Master" évoquée précédemment. Ainsi, on peut créer une nouvelle branche correspondante à un nouvel axe de développement pour travailler sur une nouvelle fonctionnalité, la correction d'un bug, etc... Cela va permettre de bénéficier de plusieurs versions des fichiers.

Pour manipuler le dépôt et les branches avec Git, on a différentes actions à notre disposition, dont :

  • Merge

Merge, ou fusionner en français est l'action que l'on utilise pour fusionner une branche annexe (par exemple, une branche utilisée pour développer une nouvelle fonctionnalité) avec la branche principale "Master" pour intégrer les modifications à la version principale via une action de fusion.

  • Commit

Quand on travaille sur un ou plusieurs fichiers associés à un dépôt Git, il faut synchroniser les modifications vers le dépôt afin qu'elles soient publiées en quelque sorte. L'action "commit" permet de valider les modifications avant de les envoyer au serveur où se situe le dépôt. C'est une action de contrôle.

  • Push

À la suite d'un commit, on effectue une action de type "push" pour envoyer les fichiers modifiés sur le serveur.

  • Pull

À l'inverse, on peut télécharger des fichiers à partir du dépôt distant sur notre machine en local pour travailler dessus. On parle d'une action "pull" qui se traduit par "tirer" en français, car on tire les fichiers du dépôt vers l'hôte local.

  • Clone

Quand on copie un projet situé sur un dépôt distant en local pour la première fois, on parle d'un clone du projet. Si l'on effectue des mises à jour par la suite, pour récupérer les derniers fichiers modifiés, on effectuera une action "pull". Cette action est aussi un moyen de télécharger une copie locale d'un projet complet pour lancer l'installation de l'application (par exemple un projet hébergé sur GitHub).

III. Installation de Git sous Windows

Git est officiellement pris en charge sur Windows et les binaires sont disponible sur le site officiel, à l'adresse suivante : git-scm.com/download/win. Je vous invite à télécharger l'installeur complet plutôt que la version portable, en 64 bits si votre machine le permet.

Installer Git sous Windows

L'installation prend un peu de temps si l'on s'intéresse aux différentes options. Ces choix sont modifiables ultérieurement, et vous pouvez vous contenter de laisser les valeurs par défaut. Par exemple, Git offre la possibilité de définir un éditeur de code par défaut lorsque vous ouvrez un fichier de votre projet via Git.

Quand on installe Git, il est livré avec Git Bash c'est-à-dire une console permettant d'utiliser Git. Néanmoins, on peut aussi l'utiliser au travers des autres consoles, notamment PowerShell et d'outils tiers, ce qui est recommandé. De ce fait, il faut bien ajuster la variable d'environnement PATH en choisissant "Git from the command line and also from 3rd-party software".

La commande "git pull" sert à pousser le contenu local vers le dépôt distant. Plusieurs comportements sont possibles, notamment l'utilisation du mode "rebase", mais pour commencer utilisez le mode par défaut. À mon sens, c'est important d'y aller progressivement dans l'apprentissage de Git.

Veillez à ce que l'option "Enable file system caching" soit cochée pour bénéficier du cache et avoir de meilleures performances.

Patientez un instant pendant l'installation, le plus dur est fait concernant l'installation ! 🙂

L'installation est terminée, passons à l'utilisation de Git ! Que les choses sérieuses commencent !

IV. Premiers pas avec Git

A. Configurer votre profil utilisateur

Pour commencer, avant même de créer un nouveau projet, nous allons définir deux options dans la configuration de Git : le nom d'utilisateur et l'adresse e-mail. Ainsi, les différentes actions, notamment les "commit" sur les fichiers seront associés à cet utilisateur, ce qui est important pour le suivi même si pour le moment vous travaillez seul sur ce projet.

git config --global user.name "Florian Burnel"
git config --global user.email "[email protected]"

git config

Une fois que c'est fait, vous pouvez afficher la configuration actuelle avec la commande ci-dessous pour valider que c'est bien pris en compte.

git config --global --list

B. Initialiser un nouveau projet Git

Désormais, nous devons indiquer à Git où se situe notre projet sur notre espace de stockage local (ici, nous travaillons sur un projet local). Il peut s'agit d'un répertoire existant qui contient déjà les fichiers de votre projet, ou d'un nouveau répertoire créé pour l'occasion. Pour ma part, je crée un projet nommé "demo-git" dans le dossier "C:\Git" de mon ordinateur.

Vous pouvez le faire via l'interface graphique de votre système, sinon à partir de la ligne de commande. En PowerShell, cela donne :

cd "C:\Git"
New-Item -ItemType Directory -Name "demo-git"

Une fois que ce répertoire est créé, je me positionne à l'intérieur. C'est important de vous positionner à la racine de votre projet pour l'initialiser. Pour initialiser ce nouveau projet et le connecter à Git, il faut exécuter la seconde commande ci-dessous.

cd "C:\Git\demo-git\"
git init

Un message indique que le répertoire est bien initialisé, ce qui donne lieu à un nouveau dossier nommé ".git" (masqué) à la racine de notre projet. C'est un répertoire caché qui contient différents fichiers permettant à Git de stocker des informations sur les branches, les modifications de fichiers, etc...

Initialized empty Git repository in C:/Git/demo-git/.git/

git init

Suite à l'initialisation de ce dossier, on peut voir que l'on est actuellement sur la branche "master", générée automatiquement. On peut voir également qu'il n'y a pas encore eu de commit via la phrase "No commits yet". Désormais, il va falloir ajouter des données à notre projet, mais peut-être que vous en avez déjà.

git status

C. Ajouter un fichier à notre projet Git

Ce nouveau projet nommé "demo-git", je vais l'alimenter avec un script nommé "Windows-Install-FSRM.ps1" que je déplace à la racine du projet (vous pouvez aussi faire des sous-dossiers). À partir de là, si l'on relance la commande "git status", on voit qu'il y a un message "Untracked files". Ce message signifie que Git a bien repéré notre fichier mais qu'il n'est pas encore suivi, c'est-à-dire que Git ne suivra pas les modifications sur ce fichier, etc.

git status

git status

La commande "git add" sert à ajouter le fichier dans Git, simplement en précisant son nom. Pour mon script, cela donne :

git add Windows-Install-FSRM.ps1

Vous allez me dire si j'ai 300 fichiers à ajouter, je n'ai pas très envie de devoir ajouter chaque fichier un par un. Pour ajouter l'ensemble des fichiers présents dans le dossier de notre projet, on utilise cette syntaxe :

git add .

Dans le même esprit, vous pouvez ajouter tous les fichiers avec l'extension ".ps1" par exemple :

git add *.ps1

Toujours avec la commande "git status", on peut constater que le nouveau fichier est bien ajouté.

git status

git add

D. Effectuer l'action de commit

Le fichier de notre projet étant ajouté à Git, il est temps de réaliser un premier commit. En fait, en déclenchant un commit on va effectuer en quelque sorte un snapshot de notre code à instant t. Ainsi, si l'on effectue des modifications mais que finalement on souhaite revenir en arrière, il sera possible de restaurer le fichier dans l'état qu'il était au moment du commit (snapshot).

Avec l'option "-m", on peut ajouter un commentaire qui sera associé à ce commit. C'est très important pour apporter des précisions et être capable de s'y retrouver dans tous les commits.

git commit -m "Version initiale"

git commit

À ce moment-là, la commande "git status" retourne :

On branch master
nothing to commit, working tree clean

Nous venons d'enregistrer la première version de ce script PowerShell. Sachez que vous ne pouvez pas envoyer des commits en boucle sans effectuer de modifications à votre projet. Git détecte les changements au sein du répertoire de votre projet, et pour effectuer un commit, il faut qu'il y ait eu un changement à minima.

E. Voir l'historique des commits

Pour visualiser un historique des commits, avec notamment le nom de l'auteur, la date et l'heure, et le commentaire, on peut utiliser cette commande :

git log

git log

Le terme "commit" est suivi par un identifiant propre à ce commit, c'est une information utile lorsque l'on souhaite manipuler les données de différentes commits. La commande ci-dessous sert à visualiser les logs de façon plus synthétique, pour une branche spécifique, ici "master".

git log --oneline master

F. Basculer d'une branche à une autre

Pour le moment, nous travaillons sur une branche unique nommée "master". Imaginons que l'on souhaite travailler sur de nouvelles fonctionnalités à inclure à notre script, et que l'on ait besoin de rentrer en phase de développement, tout en gardant de côté la branche principale. Dans ce cas, on peut créer une nouvelle branche nommée "dev" (ou avec un autre nom) qui sera utilisée pour développer les nouvelles fonctionnalités.

Pour créer une nouvelle branche "dev", on peut utiliser cette commande :

git branch dev

Ou, directement la commande ci-dessous qui va créer la branche et basculer dessus, tandis que la commande précédente crée seulement la branche.

git switch -c dev

Pour basculer d'une branche à une autre, c'est simple il suffit d'utiliser "git switch" et de spécifier le nom de la branche.

git switch <nom de la branche>
git switch master

La commande "git switch" est une commande qui remplace "git checkout" même si cette dernière fonctionne toujours. Si vous souhaitez obtenir la liste de vos branches, utilisez cette commande :

git branch

La branche actuelle est mise en évidence, comme c'est le cas ici avec la branche "master".

git branch

Le sujet des branches est vaste et mérite un article dédié, mais sachez qu'il est possible de supprimer une branche (git branch -d <nom de la branche>), de fusionner des branches  (git merge <nom de la branche>), etc.

G. Restaurer un fichier

Dans le cas où l'on travaille sur notre fichier "Windows-Install-FSRM.ps1" mais que l'on a cassé une partie du code et que l'on souhaite revenir en arrière, à l'état tel qu'était le fichier lors du dernier commit, il suffit d'utiliser la commande "git restore" de cette façon :

git restore Windows-Install-FSRM.ps1

Cette commande va restaurer le fichier immédiatement, sans même que l'on ait besoin de confirmer. A utiliser avec prudence, donc.

V. Conclusion

Cet article d'introduction à Git touche à sa fin ! D'autres articles sur Git seront mis en ligne prochainement, notamment les interactions avec GitLab et GitHub, car dans cet exemple nous avons travaillé uniquement en local. C'est déjà bien pour un début. Pour apprendre de nouvelles commandes Git, je vous recommande de regarder le site "Git Explorer" qui est une sorte de cheatsheet interactive ! Je vous encourage également à consulter la documentation officielle de Git, car elle est complète.

Git Command Explorer - Exemple
Git Command Explorer - Exemple
The post Bien débuter avec Git : installation et prise en main ! first appeared on IT-Connect.

Git et .gitignore pour ignorer certains types de fichiers dans un projet

18 août 2022 à 09:50

I. Présentation

Dans ce tutoriel, nous allons apprendre à configurer un projet Git afin d'ignorer certains fichiers pourtant situés dans le répertoire tracké par Git. Lorsqu'un fichier est présent dans un répertoire d'un projet Git, ce fichier peut avoir plusieurs états. En effet, soit le fichier n'est pas surveillé (ou non tracké, si vous préférez), soit le fichier est surveillé (ajouté au projet via un git add) donc Git va suivre les changements apportés à ce fichier, soit le fichier est ignoré, car Git a reçu la consigne de ne pas le surveiller.

Pour indiquer à Git qu'il doit ignorer certains fichiers, il est nécessaire de créer et maintenir un fichier nommé ".gitignore" dans le répertoire du projet. Bien souvent, ce fichier sert à indiquer à Git qu'il ne doit pas tenir compte des fichiers avec l'extension ".log", à certains fichiers de cache, des fichiers système comme ".DS_Store", ou encore à des fichiers temporaires avec l'extension ".tmp". Certains langages ou logiciels de développement peuvent créer leurs propres fichiers et venir polluer, en quelque sorte, votre projet.

Si vous êtes en train de lire ce tutoriel, il y a des chances que vous cherchiez à exclure certains fichiers du périmètre de votre projet Git : c'est peut-être pour l'une des raisons citées précédemment ou pour une autre raison.

Dans cet exemple, je vais chercher à exclure les fichiers ".log" de mon projet "demo-git" mais je vais en profiter pour vous donner d'autres exemples.

II. Créer le fichier .gitignore

Le fichier .gitignore doit être créé manuellement, car il n'existe pas de commande pour le générer et il n'est pas présent par défaut. Pour cela, créez simplement le fichier avec l'interface graphique ou la ligne de commande à la racine de votre projet Git.

Sous Linux :

touch .gitignore

Sous Windows :

New-Item .gitignore

Ce fichier et les exclusions qu'il va contenir vont s'appliquer uniquement à ce projet Git. Si vous avez besoin d'appliquer des règles communes à tout vos projets Git, vous pouvez définir un fichier .gitignore global. Attention, ce fichier global reste en local alors il ne sera pas partagé avec les autres personnes qui travaillent sur ce projet, ce qui peut être un inconvénient.

git config --global core.excludesfile ~/.gitignore_global

III. Editer et tester le fichier .gitignore

À partir d'un éditeur de texte, le fichier .gitignore que l'on vient de créer doit être édité. Je vous recommande d'ajouter un commentaire avant chaque règle pour assurer un bon suivi de ce fichier. Pour ajouter un commentaire, il faut ajouter le symbole "#" en début de ligne. Ensuite, l'astérisque permet de remplacer tous les caractères X fois donc pour ignorer tous les fichiers ".log", on va ajouter "*.log" comme ceci :

# Ignorer tous les fichiers .log
*.log

Ensuite, il faut ajouter ce nouveau fichier à Git :

git add .gitignore

Pour tester, il suffit de créer un fichier ".log" dans le répertoire du projet. Si l'on effectue un "git status", on peut voir qu'il ne demande pas à ce que ce nouveau fichier soit tracké car il a compris qu'il devait l'ignorer.

git status

Voici un exemple :

Si vous souhaitez ignorer tous les fichiers de logs du répertoire "logs" situé à la racine de votre projet, la syntaxe est différente :

# Ignorer tous les fichiers .log sous le répertoire "/logs/"
/logs/*.log

Ainsi, on considère qu'un fichier "test.log" à la racine du projet doit être tracké par Git.

Dans le même esprit, on peut ignorer un fichier avec un nom spécifique :

# Ignorer le fichier test.log
test.log

Il est également possible de créer des filtres un peu plus avancé....

test[123].log

Ce filtre va permettre d'exclure les fichiers "test1.log", "test2.log" et "test3.log" mais pas "test4.log", ni même "test123.log". Une condition que l'on peut inverser en ajoutant "!", comme ceci :

test[!123].log

Ainsi, on exclue "test4.log" et "test123.log" mais pas "test1.log", "test2.log" et "test3.log".

Pour exclure un répertoire, par exemple le répertoire "/logs" situé à la racine du projet :

/logs

Si l'on n'indique pas le "/" au début, cela va exclure tous les répertoires nommés "logs" (/logs, /sous-dossier1/logs, etc.) en utilisant ce filtre

logs/

Remarque : si vous souhaitez exclure du tracking Git un fichier qui était jusqu'ici pris en compte, vous pouvez le faire avec cette commande (exemple avec test.log) :

git rm --cached test.log

Il conviendra ensuite de réaliser un commit pour appliquer ce changement. Si le fichier .gitignore exclue ce fichier, Git ne cherchera plus à le surveiller.

IV. Conclusion

Suite à la lecture de ce tutoriel, vous êtes en mesure de créer un fichier .gitignore afin des filtres simples pour exclure un dossier, un fichier ou un ensemble de fichiers de la surveillance Git. Pour aller plus loin et trouver le fichier .gitignore de vos rêves, vous pouvez vous inspirer de ces deux sites :

The post Git et .gitignore pour ignorer certains types de fichiers dans un projet first appeared on IT-Connect.

DevToys – Le couteau suisse des développeurs

24 août 2022 à 09:00
Par : Korben

Quand on est développeur, il y a parfois certains trucs dont on a besoin qui nécessite de chercher un site web ou un petit outil pour le faire rapidement. Cela peut-être générer un texte en lorem ipsum, formater un JSON, décoder un Base64, tester une regex et j’en passe.

Du coup, ça prend du temps.

Mais si je vous disais que tout cela et bien d’autres choses sont centralisés dans cet outil disponible sous Windows et nommé DevToys ?

DevToys simplifie votre quotidien en vous proposant des tas d’outils pour effectuer des tâches simples avec vos données. DevToys est également capable de détecter le meilleur outil capable de traiter les données que vous avez copiées dans le presse-papiers et vous pouvez même utiliser plusieurs instances du logiciel en même temps.

Voici les outils que vous trouverez dans ce couteau suisse à destination des développeurs :

  • Convertisseurs
    • JSON <> YAML
    • Horodatage
    • Base de nombres
    • Analyseur CRON
  • Encodeurs / Décodeurs
    • HTML
    • URL
    • Base64 (texte et images)
    • Gzip
    • Décodeur JWT
  • Formateurs
    • JSON
    • SQL
    • XML
  • Générateurs
    • Hash MD5, SHA1, SHA256, SHA512
    • UUID 1 / UUID 4
    • Lorem Ipsum
    • Somme de contrôle
  • Texte
    • Inspecteur de texte et convertisseur maj / min
    • Testeur de Regex
    • Comparateur de texte
    • Validateur XML
    • Markdown
  • Images
    • Simulateur de daltonisme
    • Color picker & constrastes
    • Compresseur PNG / JPG
    • Convertisseur d’images

Une interface graphique pour vos scripts Python + convertir un .py en .exe

3 septembre 2022 à 09:00
Par : Korben

Vous le savez, j’ai un merveilleux Patreon sur lequel les plus belles personnes que cette planète n’a jamais accueillies peuvent me soutenir !

Et c’est important pour la survie de Korben.info évidemment, mais surtout pour votre karma !

Dans le cadre de ce Patreon, j’envoie des newsletters chaque jours aux abonnés avec des contenus de ouf et je publie environ 1 vidéo tuto / vulgarisation Tech par semaine.

Et comme je suis un mec sympa et que les soutiens Patreons sont aussi des gens sympas, ils sont OK pour qu’on partage ça avec tout le monde de temps en temps. Donc aujourd’hui, dans cette vidéo libérée de mon Patreon, je vais vous montrer comment créer une interface graphique pour vos scripts Python en utilisant Tkinter et surtout comment en faire de jolis .exe pour faciliter leur diffusion auprès du grand public.

Bon visionnage à tous ! Et cliquez ici si vous voulez rejoindre la team des soutiens !

Twilio Lookup – Une API pour valider un numéro de téléphone et réduire la fraude

12 septembre 2022 à 08:16
Par : Korben

— Article en partenariat avec Twilio —

Dernièrement, vous avez eu le plaisir de découvrir certains des services de Twilio, notamment l’API Verify qui permet de valider des utilisateurs, un super tuto pour envoyer des SMS en Python, ou encore la merveilleuse application de double authentification Authy.

Cela vous a vraiment plu, du coup, je vous propose aujourd’hui de découvrir Lookup par Twilio

Qu’est-ce que Lookup ?

Enfin disponible dans sa version 2, Lookup est un service de Twilio qui se présente sous la forme d’un API et qui permet à ceux qui l’intègrent dans leurs projets de réduire les risques de fraude et de spam. Alors comment ça fonctionne ?

Et bien lorsqu’un utilisateur entre son numéro de téléphone, l’API Lookup est capable de déterminer si ce numéro est valide en identifiant le type de ligne (mobile, fixe, VoIP, numéro temporaire, etc.). Pour cela, Lookup croise les informations données par l’utilisateur avec les informations données par les opérateurs téléphoniques pour vérifier qu’elle concordent. Cela permet d’éviter les fraudes de type SIM Swapping, la création de faux comptes, le vol de comptes ou le spam, notamment en détectant l’usage de numéros virtuels par définition suspects.

Au-delà de cet aspect sécurité très important, le fait de pouvoir valider un numéro de téléphone permet d’éviter les erreurs de distribution de messages ou de payer pour des appels qui n’aboutiront jamais. Et comme cette vérification se fait de manière transparente sans solliciter l’utilisateur avec une validation de numéro de téléphone supplémentaire, les taux de conversion augmentent, car il y a moins de freins pour l’internaute.

Dans sa v1, Lookup fonctionnait uniquement pour des numéros aux États-Unis et au Canada, mais avec cette v2, c’est l’Europe et le monde entier qui sont couverts. Tout est évidemment réalisé dans le respect du RGPD et les données personnelles associées au numéro ne sont pas récupérables via l’API.

Pour cette démo, je vais vous montrer comment intégrer Lookup dans un script Python afin de faire :

  • De la validation simple de numéro
  • Obtenir la version internationalisée du numéro
  • Identifier l’opérateur et le type de ligne
  • Connaître le nom rattaché à un numéro

Comment valider un numéro de téléphone avec Lookup ?

J’ai écrit mes exemples en Python, en m’inspirant de la documentation officielle de Twilio, mais sachez qu’avec les libs disponibles, vous pouvez évidemment coder ce genre de choses dans le langage de votre choix (Ruby, C#, PHP, Java…etc.)

Admettons que vous ayez une page web sur laquelle un internaute doit saisir son numéro de téléphone. Comment savoir si ce numéro est valide au moins pour la France et comment l’avoir dans sa version locale (06 12 13 14 15) et dans sa version internationale ?

Et bien pour cela, vous devez vous munir de vos clés API Twilio pour la V2 de Lookup et appeler l’API Lookup comme ceci :

from twilio.rest import Client

account_sid = "XXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "XXXXXXXXXXXXXXXXXXXXXXXXX"

client = Client(account_sid, auth_token)

phone_number = client.lookups.v2.phone_numbers('0612131415').fetch(country_code='FR')

if phone_number.valid is True:
    print('Ce numéro est bien valide en France et sa version internationale est : ' + phone_number.phone_number)
else:
    print('Ce numéro n\'est pas valide en France')

Un bon moyen donc de contrôle que le numéro qui vous est transmis est le bon. D’ailleurs, pour identifier une erreur dans un numéro, vous pouvez également utiliser la propriété « validation_errors » comme ceci, qui vous renverra une de ces valeurs en cas d’erreur : TOO_SHORT, TOO_LONG, INVALID_BUT_POSSIBLE, INVALID_COUNTRY_CODE, INVALID_LENGTH, NOT_A_NUMBER.

from twilio.rest import Client

account_sid = "XXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "XXXXXXXXXXXXXXXXXXXXXXXXX"

client = Client(account_sid, auth_token)

phone_number = client.lookups.v2.phone_numbers('+33451083391').fetch(
    fields='validation')

print(phone_number.validation_errors)

Comment récupérer les différentes versions d’un numéro ?

En fonction du numéro saisi, vous pourriez avoir besoin soit de son code pays, soit du numéro international (code pays + numéro), soit de sa version locale :

from twilio.rest import Client

account_sid = "XXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "XXXXXXXXXXXXXXXXXXXXXXXXX"

client = Client(account_sid, auth_token)

phone_number = client.lookups.v2.phone_numbers(
    '0612131415').fetch(country_code='FR')

print('Le code indicatif : ' + phone_number.calling_country_code)
print('Le code pays : ' + phone_number.country_code)
print('Le numéro au format national : ' + phone_number.national_format)
print('Le numéro au format international :  ' + phone_number.phone_number)

Vous obtiendrez alors le résultat suivant :

Le code indicatif : 33
Le code pays : FR
Le numéro au format national : 06 12 13 14 15
Le numéro au format international :  +33612131415

Savoir identifier l’opérateur et le type de ligne liés à un numéro de téléphone ?

Un truc sympa avec l’API lookup de Twilio, c’est aussi la possibilité d’identifier l’opérateur et le type de ligne associé à un numéro. Ainsi, vous saurez si c’est un mobile, une ligne de fixe, un numéro VoIP…etc.

Pour cela, on va utiliser la propriété « line_type_intelligence comme ceci :

from twilio.rest import Client

account_sid = "XXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "XXXXXXXXXXXXXXXXXXXXXXXXX"

client = Client(account_sid, auth_token)

phone_number = client.lookups.v2.phone_numbers(
    '0612131415').fetch(country_code='FR', fields='line_type_intelligence')

print('Opérateur téléphonique : ' + phone_number.line_type_intelligence["carrier_name"])
print('Type de ligne : ' + phone_number.line_type_intelligence["type"])

Et voici le type de retour que vous obtiendrez :

Opérateur téléphonique : ORANGE FRANCE (01)
Type de ligne : mobile

D’autres fonctionnalités payantes ou encore en beta, permettent également de faire des choses très utiles comme la possibilité de savoir si la carte SIM a été swappé récemment (pour éviter les arnaques) ou tout simplement trouver le nom lié au numéro de téléphone. Mais ces options ne sont pas disponibles dans tous les pays. Je vous invite à consulter cette page pour les simswap.

Comment savoir à qui appartient un numéro ?

Cette possibilité ne fonctionne pas pour la France (Because RGPD), mais uniquement pour certains pays comme les États-Unis ou la Grande-Bretagne et uniquement pour certains numéros. Prenons par exemple ce numéro américain. En utilisant la propriété « caller_name », il est possible de savoir quel est le nom lié à ce numéro et savoir si c’est un numéro d’entreprise ou non.

from twilio.rest import Client

account_sid = "XXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "XXXXXXXXXXXXXXXXXXXXXXXXX"

client = Client(account_sid, auth_token)

phone_number = client.lookups.v2.phone_numbers(
    '+13475026441').fetch(fields='caller_name')

print("Nom : " + phone_number.caller_name["caller_name"])
print("Type de numéro : " +phone_number.caller_name["caller_type"])

Voici ce que j’obtiens, à savoir le nom d’une entreprise de plomberie localisé à New York.

Nom : RITE PLUMBING
Type de numéro : BUSINESS

Vous l’aurez compris, l’intégration de Lookup v2 dans vos applications est assez simple à mettre en œuvre et coûte très peu cher. Cela permet de vous assurer que les coordonnées téléphoniques saisies par un utilisateur sont correctes et qu’il ne s’agit pas d’un faux numéro ou d’un numéro qui fait l’objet d’une fraude notamment dans le cadre d’un SIM Swapping.

Vous éliminerez également des opérations de validation de numéro assez pénibles pour l’utilisateur, ce qui vous permettra d’augmenter vos taux de conversion et surtout de réduire vos coûts d’envoi de messages en cas de numéro invalide. Bref, un must pour tous les projets qui exigent une validation correcte du numéro de téléphone d’utilisateurs.

A la découverte de Bun, le futur remplaçant de NodeJS ?

19 septembre 2022 à 07:14
Par : Korben

— Article en partenariat avec talent.io —

Tout le monde en parle mais peu l’ont encore testé. Je vous propose qu’aujourd’hui, nous partions à la découverte de Bun.sh.

En effet, quand on travaille en tant que développeur, c’est important de se tenir informé de l’évolution des technologies comme Bun ou NodeJS. De la même manière, quand on cherche à évoluer dans son travail, il est bon de connaître la grille des salaires en France. Ça tombe bien puisque talent.io a mis en ligne une étude des salaires de la tech en 2022 pour que vous puissiez déterminer si votre salaire est correct ou sous évalué.

Mais revenons à nos moutons. Présenté comme le nouveau NodeJS, Bun est une plateforme javascript qui contrairement à NodeJS n’utilise pas le célèbre moteur Chromium V8 mais JavascriptCore. Il s’agit d’un framework dérivé de KJS (le moteur JS de KDE) utilisé pour les implémentations Webkit au sein de macOS.

La philosophie derrière Bun.sh c’est de fournir un runtime javascript qui démarre rapidement et qui dispose d’excellents niveau de performances. Beaucoup plus que NodeJS ou encore Deno. Cela n’est pas étonnant car en plus de l’utilisation de JavascriptCore, Bun est codé en Zig, un langage de programmation bas niveau qui offre de bonnes performances.

De plus, c’est un outil qui se veut complet puisqu’il est à la fois un gestionnaire de paquets (un client npm plus rapide que l’original ou que yarn), un bundler et un transpiler qui comprend à la fois le JSX et le Typescript. Il implémente des centaines d’API NodeJS et API Web ainsi que 90% des fonctions natives de NodeJS comme Node-API, fs, path, buffer…etc.

Même si Bun apporte un énorme gain en matière de performances pure mais également un gain de temps grâce à son aspect tout en un, il est encore très jeune puisque sa beta est sortie en juillet 2022.

Je vous propose quand même un petit tutoriel pour installer et tester Bun.sh.

Comment installer Bun.sh

Pour déployer Bun.sh sur votre machine, ouvrez un terminal sous macOS, Linux ou Windows WSL et entrez la commande suivante :

curl https://bun.sh/install | bash

En toute logique, le script d’install a ajouté la ligne suivante à votre $PATH dans le fichier ~/.zshrc :

~/.bun/bin

Dans votre terminal zsh (exec /bin/zsh), lancez alors la commande suivante pour vérifier que bun se lance correctement :

bun --version

En lançant la commande :

bun --help

Vous verrez également les commandes disponible au sein de Bun comme « run » pour lancer du JS, « dev » pour démarrer un serveur de développement, « create » pour créer un projet Bun à partir d’un template…etc

Votre premier script Bun

En guise de test, nous allons d’abord créer un serveur http qui diffusera notre hello world comme ceci dans un fichier .js :

export default {
    port: 3000,
    fetch(request) {
        return new Response("Hello World from Bun!");
    },
};

Puis on lance ce fichier .js avec la commande « bun run ». C’est la même commande qui permet d’exécuter des fichiers JavaScript et TypeScript ainsi que les scripts de package.json. En remplaçant « npm run » par « bun run », vos lancements seront 30 fois plus rapides.

Pour info, j’ai nommé mon script : buntest.js.

bun run buntest.js

Rendez-vous ensuite sur l’adresse localhost:3000 avec un navigateur et vous verrez le Hello World s’afficher :

Bun comme gestionnaire de paquets

On va maintenant s’intéresser à l’aspect gestionnaire de paquets de Bun, qui remplace yarn ou npm install et permet d’installer des paquets 20 fois plus rapidement. Par exemple, si je veux installer une lib et ses dépendances, je n’ai qu’à lancer la commande :

bun install nom_de_la_lib

Exactement comment on le ferait avec la commande npm.

Deployer une app avec Bun

Si dans votre terminal, vous tapez la commande suivante :

bun c

Vous verrez une liste de templates de projets que vous pouvez créer avec Bun. Par exemple, pour créer un projet react, il vous suffira d’entrer la commande :

bun create react ./react-app

Une fois le template déployé, faites un :

cd react-app

Puis lancez le serveur de dev :

bun dev

Puis en vous rendant sur l’url : http://localhost:3000, vous verrez la page d’accueil de votre nouveau projet React.

Conclusion

Voilà pour la mise en place et l’utilisation de Bun. Sur le fonctionnement, c’est très similaire à NodeJS mais c’est surtout très rapide. Toutefois, j’ai bien senti que c’était encore en beta car j’ai croisé quand même quelques bugs (également documentés sur leur github) et même un segfault. Donc Bun est encore loin de balayer NodeJS mais une fois que ces problèmes de jeunesse auront été résolus, ce sera un excellent runtime javascript.

Bun n’est donc pas à utiliser en production pour le moment car il y a encore quelques gros problèmes, sans parler de l’absence de minification du code dans le bundler. Ce n’est donc pas encore optimal. Mais c’est un projet à surveiller car il avance vite et se veut très prometteur.

Maintenant si vous pensez que techniquement, vous stagnez dans votre emploi actuel, vous avez peut-être envie de changer de job pour continuer à évoluer dans les technologies, ou obtenir un meilleur salaire. C’est une démarche qui peut s’avérer assez compliquée, stressante parfois, tant on a envie de trouver un travail qui nous corresponde. On peut souhaiter avoir un travail plus proche de chez soi voire en télétravail complet, un meilleur salaire, une meilleure ambiance au travail, ou même tout ça à la fois (mais ce n’est pas forcément facile à trouver).

Heureusement, talent.io est là pour vous aider. Il vous suffit de créer un compte sur la plateforme talent.io en quelques clics pour ensuite recevoir des offres de la part d’entreprises qui correspondent à vos critères précis et qui affichent un salaire d’entrée de jeu. talent.io est vraiment le moyen le plus simple de trouver son prochain job tech, d’ailleurs les inscrits trouvent leur emploi en 20 jours en moyenne.

Des emails qui arrivent à tous les coups avec Sendgrid

22 septembre 2022 à 06:39
Par : Korben

— Article en partenariat avec Twilio —

Qu’est-ce que Sendgrid ?

Sendgrid est une suite d’outils et de services proposés par Twilio qui permet d’envoyer des emails, de créer des scénarios, des newsletters et d’automatiser tout ce qui concerne l’envoi de messages.

Ainsi, plutôt que de configurer votre propre serveur pour envoyer des emails à partir de vos applications web, vous pouvez vous reposer sur Sendgrid pour faire le job. Les avantages sont nombreux : fiabilité, facilité d’implémentation, meilleure déliverabilité de vos messages et surtout vous ne risquez plus de vous faire blacklister votre serveur pour envoi de spams.

Sendgrid est un outil qui peut s’utiliser comme ça, sans compétences techniques grâce à une myriade d’outils no-code, mais il est également très simple d’utiliser les APIs ou les bibliothèques proposées par Sendgrid pour justement interagir avec le service 100% en code, peu importe le langage.

Sendgrid vous permet également de lier votre propre nom de domaine pour que vos adresses d’expéditeurs soient à vos couleurs, mais ce n’est pas une étape obligatoire.

Créer des campagnes en no code

Grâce à Sendgrid, vous pourrez bien sûr faire de l’envoi simple de newsletter sans rien à voir à coder ou à designer, simplement en choisissant un thème et en le modifiant avant de l’envoyer à votre liste de contact.

Mais la valeur ajoutée la plus forte du service réside dans la section « Automatisations » (Automations en anglais) qui permet de créer facilement en remplissant quelques formulaires, tout un scénario à chaque nouvelle personne qui vous donne son adresse email.

Par exemple, vous rentrez un nouvel abonné. Immédiatement vous lui envoyez un email de bienvenue. Puis quelques jours plus tard, vous renvoyez un message, et quelques jours ou semaines encore plus tard, vous pouvez lui envoyer d’autres messages…etc. L’idée c’est de préparer toute une suite d’emails qui sera envoyée au fur et à mesure du temps à votre nouvel inscrit. C’est très pratique pour fidéliser et communiquer de manière progressive avec vos abonnés sans avoir à envoyer la même chose à tout le monde.

Grâce à Sendgrid, vous pouvez mettre en place tout cela rapidement directement via leur site, sans avoir de compétences techniques.

Créer une campagne avec du code

Créer des campagnes avec du code c’est également très simple puisque le site Sendgrid va vous guider dans l’utilisation de ces APIs. Il suffit de choisir d’utiliser la web API (ou le SMTP relay) pour ensuite être guidé selon le langage choisi : Python, Ruby, JavaScript, Go, PHP…etc.

Ensuite, Sendgrid vous guidera étape par étape, de la création d’une clé API, à l’implémentation du code et vous permettra de valider que votre premier email de test a été correctement envoyé et que tout est OK.

Une fois cette première étape franchie, vous pourrez alors tout faire avec du code : Créer des listes de contacts, les alimenter, supprimer des contacts, gérer des scénarios d’envoi d’emails, créer et programmer des newsletters…etc. C’est le bonheur, car c’est simple à intégrer et la documentation est très riche.

Première connexion à Sendgrid avec Python

Avant toute chose, il faut installer la lib sendgrid comme ceci :

pip3 install sendgrid

Ensuite vous devez vous créer une clé API en vous rendant sur la page suivante. Vous pouvez régler les autorisations de cette clé pour qu’elle vous donne par exemple l’accès aux fonctionnalités marketing (création de listes…etc.), à l’envoi de mail, à l’utilisation des templates…etc. A vous de faire vos réglages selon ce dont vous avez envie.

À partir de là, il ne vous reste plus qu’à coder. Pour se brancher à l’API, il vous suffit donc d’utiliser le code suivant :

from sendgrid import SendGridAPIClient

sg = SendGridAPIClient('MA_CLÉ_API')

Par exemple, si je veux créer une nouvelle liste de contact, je peux ajouter en dessous le code suivant :

#create a list

data = {
    "name": "MA LISTE"
}
response = sg.client.marketing.lists.post(
    request_body=data
)
print(response.status_code)
print(response.body)
print(response.headers)

Et elle sera alors visible chez Sendgrid et je pourrais y ajouter des contacts.

Voici un code pour ajouter un contact dans ma nouvelle liste. J’ai récupéré son ID auparavant :

from sendgrid import SendGridAPIClient

sg = SendGridAPIClient('MA_CLÉ_API')

data = {
    "list_ids": ["a44be4a3-5cae-43f2-8ce5-cc32a042e54f"],
    "contacts": [
        {
            "email": "[email protected]",
            "first_name": "Korben",
            "last_name": "Manu",
            "country": "France"
        }
    ]
}

response = sg.client.marketing.contacts.put(request_body=data)

print(response.status_code)
print(response.body)
print(response.headers)

Ce qui est cool, c’est que si vous avez créé des champs personnalisés pour vos contacts, vous pouvez également les remplir directement via le code avec le champ « custom_fields ».

L’importation de contact peut aussi se faire en codant l’importation d’un CSV.

Si vous rencontrez des erreurs et que vous voulez obtenir un peu plus d’infos de la part de Sendgrid, je vous recommande d’ajouter l’importe suivant :

from python_http_client.exceptions import HTTPError

Et d’encapsuler le lancement de la requête comme ceci

try:
    response = sg.client.marketing.contacts.put(request_body=data)
except HTTPError as e:
    print(e.to_dict)

Alors évidemment, je ne l’ai pas précisé, mais vous pouvez ainsi ajouter, modifier, supprimer des contacts, leur envoyer des messages, créer, modifier ou supprimer des listes et j’en passe.

Il est également possible d’envoyer des emails directement à vos listes et je vais vous montrer comment.

Un envoi d’email avec Sendgrid en Python

Pour créer un envoi de mail, il suffit de le forger en respectant les spécifications de l’API.

On spécifie ainsi dans l’objet data, l’ensemble des informations du mail, à savoir l’expéditeur (sender_id), le sujet, le contenu HTML et texte, le lien pour se désabonner ou encore la liste à laquelle envoyer le message…etc. Tout est bien sûr expliqué dans la doc de l’API.

from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

sg = SendGridAPIClient('MA_CLÉ_API')

data = {
    "name": "Ma newsletter 2",
    "status": "active",
        "email_config": {
            "sender_id": 4441081,
            "subject": "Quoi de neuf ?",
            "html_content": "<html><body><p>Cette semaine voici les nouveaux sujets...</p></body></html>",
            "plain_content": "Cette semaine voici les nouveaux sujets...",
            "custom_unsubscribe_url": "http://www.example.com/unsubscribe",
        },
    
    "send_to": {
        "list_ids": [
            "a44be4a3-5cae-43f2-8ce5-cc32a042e54f"
        ],    
    },
}

try:
    response = sg.client.marketing.singlesends.post(request_body=data)
except HTTPError as e:
    print(e.to_dict)
else:
    print(response.status_code)
    print(response.body)
    print(response.headers)

Le coût de Sendgrid

Au niveau des coûts de Sendgrid, ça dépend de votre consommation d’emails, mais la bonne nouvelle c’est qu’en dessous de 2000 contacts et de 6000 emails envoyés par mois c’est totalement gratuit ! C’est donc super pour essayer et commencer à monter un service autour de ça, pour ensuite basculer sur une option payante dès que l’audience est là.

D’une manière générale, en comparant avec les prix de la concurrence, le prix au mail est assez équivalent à ce qu’on peut trouver ailleurs. Par contre, la vraie différence réside dans les outils et les services qui sont proposés sur Sendgrid. Avec Sendgrid, que vous soyez développeur confirmé ou simple amateur, vous pouvez en l’espace d’une journée mettre en place toute une automatisation d’emails ou créer votre newsletter.

C’est à portée de tous !

Découvrir Sendgrid

École O’clock : 5 préjugés sur les formations développeur qui n’ont plus lieu d’être [Sponso]

22 septembre 2022 à 11:46

Cet article a été réalisé en collaboration avec O'clock

« C’est cher », « c’est long », « le suivi est erratique », nombreux sont les clichés sur les formations en ligne. L'école O'clock s'en départit avec succès grâce à sa méthode d'apprentissage au développement web.  [Lire la suite]

Abonnez-vous aux newsletters Numerama pour recevoir l’essentiel de l’actualité https://www.numerama.com/newsletter/

Cet article a été réalisé en collaboration avec O'clock

Il s’agit d’un contenu créé par des rédacteurs indépendants au sein de l’entité Humanoid xp. L’équipe éditoriale de Numerama n’a pas participé à sa création. Nous nous engageons auprès de nos lecteurs pour que ces contenus soient intéressants, qualitatifs et correspondent à leurs intérêts.

En savoir plus

Hello – Le moteur de recherche préféré des développeurs

30 septembre 2022 à 09:00
Par : Korben

Si vous êtes développeur, vous devez probablement faire pas mal de recherche sur Google pour trouver un exemple d’implémentation ou un tuto vous expliquant comment arriver à vos fins. Et c’est cool, sauf que cela est souvent noyé dans de nombreux contenus qui sont soit assez pauvres, soit mal ciblés.

C’est là qu’entre en scène le moteur de recherche spécialisé Hello qui permet de trouver rapidement des réponses à toutes vos questions techniques concernant du code. Pour cela, Hello utilise du deep learning pour classer et trier l’information technique en provenance de nombreuses sources.

Cependant, pour utiliser correctement ce moteur de recherche, pensez à bien poser des questions complètes et détaillées en anglais, en précisant le langage ou la technologie employée.

Par exemple, plutôt que d’écrire « Récupérer une liste d’article depuis mon site », écrivez plutôt « Comment récupérer une liste d’articles WordPress en python » (en anglais de préférence, même s’il est possible d’avoir des résultats dans la langue de Booba).

Le moteur supporte également des filtres pour réduire les domaines de recherche et trouver précisément ce dont vous avez besoin.

Bref, de quoi gagner beaucoup de temps dans vos recherches techniques, en obtenant à la fois des explications simples, des bouts de code d’exemples et de nombreux liens détaillés.

A découvrir ici.

❌