Get X & Y coordinates point in PDF document with Inkscape

How to know the X and Y coordinates point in a PDF document

If you work with PDF-lib.js you may need to know the X and Y coordinates point in a PDF document.

There is a tip to show the coordinates with InkScape for Windows. Inkscape is also available for Linux.

Download at https://inkscape.org/fr.

  1. Open your PDF file with InkScape
  2. On the popup screen Check Import Poppler/Cairo

3. In File > Document Properties .. > Verify that pt is selected in Format and Display units. And scale must be set to 1,000000

4. Now you can see at the bottom right of the screen the X and Y coordinates.

OVH ajouter un domaine externe à votre hébergement et activer la connexion sécurisée SSL sur ce domaine

Activer le certificat SSL Let’s Encrypt gratuit de votre hébergement avec un nom de domaine externe.

Exemple avec domaineexterne.fr :

  1. Rendez-vous dans la console OVH
  2. Ajouter le domaine domaineexterne.fr dans l’onglet “Multisite” de l’hébergement
  3. Activer l’option SSL sur le domaine domaineexterne.fr
  4. Lancer la régénération du certificat SSL dans l’onglet “Informations général”
  5. Ceci devrait permettre d’obtenir un certificat SSL et activer la connexion sécurisée HTTPS sur le domaine domaineexterne.fr

Voir les captures d’écrans ci-dessous :

OVH – activer SSL sur un domaine
OVH - regénérer le certificat SSL sur votre hébergement
OVH – régénérer le certificat SSL sur votre hébergement

Laragon & XDebug- Debug PHP with VSCode on Windows

A configuration that finally works ! A free alternative to PHPStorm.

Prerequisite :

Chrome Extension : XDebug helper

Install XDebug helper Chrome extension and enable the Debug mode.

XDebug

Download and copy the xdebug-3.1.6-7.4-vc15-x86_64.dll in the PHP ext folder.

C:\laragon\bin\php\php-7.4.33-Win32-vc15-x64\ext\

Verify XDebug is properly installed by follow the instructions at : https://xdebug.org/wizard

Laragon

This line is added automatically by Laragon when activating the extension by clicking it :

Laragon > Menu > PHP > Extensions > xdebug-3.1.6-7.4-vc15-x86_64

zend_extension=xdebug-3.1.6-7.4-vc15-x86_64
; Manually added
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host=localhost
xdebug.idekey = VSCODE
xdebug.port=9003
xdebug.mode=debug

VSCode

VSCode > Run and Debug > Modify/Add the “Listen for Xdebug” configuration.

{
    // ...
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003
        },
				//...
    ]
}

Dolibarr – Ne pas autoriser de valeur décimale dans le champ quantité stock

Par défaut il est possible d’entrer un nombre décimal dans la valeur de quantité de stock dans Dolibarr > Produits > (Onglet) Stock > (Section) Corriger le stock > (Formulaire Input) Nombre de pièces .

Solution

Il semblerait que l’ajout d’un attribut type="number" HTML sur le tag input permet d’empêcher d’entrer une valeur décimale.

Implémentation

Ajouter la constante STOCK_QUANTITY_ALLOW_DECIMAL_VALUE dans la table llx_const . Depuis le backoffice Accueil > Configuration > Divers .

  • Nom de la constante : STOCK_QUANTITY_ALLOW_DECIMAL_VALUE
  • Commentaire : Autoriser un nombre décimal dans le champ quantité stock.
  • Valeurs possibles : 0 => ne pas autoriser | 1 => autoriser

Modification du fichier : htdocs\product\stock\tpl\stockcorrection.tpl.php L115

// BEFORE
print '<input name="nbpiece" id="nbpiece" class="center valignmiddle maxwidth75" value="'.GETPOST("nbpiece").'">';

// AFTER
print '<input name="nbpiece" id="nbpiece" class="center valignmiddle maxwidth75" '.($conf->global->STOCK_QUANTITY_ALLOW_DECIMAL_VALUE === '0' ? 'type="number"' : '').' value="'.GETPOST("nbpiece").'">';

Coding session 11 : Scraping du site lesilesdeguadeloupe.com

Intro

Je suis tombé sur un nouveau candidat pour explorer les possibilités du scraping. C’est un site de type annuaire listant des hébergements en location, des activités et des restaurants en Guadeloupe.

Lire l’article les étapes pour le scraping de site internet de type annuaire.

Étape 1 : récupérer les URLs des pages

Les informations qui m’intéressent sur le site lesilesdeguadeloupe.com. Le nom, l’adresse, le numéro de téléphone, l’adresse mail, la description de ces 3 domaines :

  • Hébergements
  • Activités
  • Restaurants

S’il existe une page qui liste l’ensemble des pages d’hébergements, l’ensemble des pages activités et l’ensemble des pages de restaurant le travail sera facilité. Surtout, si il n’y a pas de pagination.

Dans un premier temps, je vérifie si une API est appelée par le Frontend, pour récupérer la liste des pages, il n’y en a pas, ce sont des pages qui sont générés sur le serveur.

Pas D’API ! Mais nous avons une information importante, le nombre total d’éléments est affiché sur la page, pour les hébergements, nous savons qu’il y a 881 éléments répertoriés sur le site. 502 activités et 301 restaurants. Cela nous donne une idée précise du nombre de pages au total à parcourir.

Les hébergeurs

Il y a 10 éléments par pages, on pourrait créer un script pour parcourir une page, ensuite passer à la suivante pour récupérer l’ensemble des URLs. Mais il y a une méthode plus simple avec un tableau Excel ou Google Sheets.

Récupérer l’URL de la premiere page https://www.lesilesdeguadeloupe.com/tourisme/fr-fr/hebergements?page=1 et générer les URLs suivantes dans Excel.

Une fois notre fichier CSV contenant la liste des pages paginées établis, on récupère les liens vers les pages de détails de l’hébergement.

Sur chaque page, on exécutera le code JavaScript suivant, il récupère les URLs des pages de chaque hébergement :

let results = [...document.querySelectorAll('[itemprop="url"]')].map(e=>e.href)

Étape 2 : récupérer les informations

Le numéro de téléphone et l’adresse mail s’affichent lorsque l’on clique sur le bouton “réserver”. Ce bouton est présent dans les pages des hébergements des restaurants, et des activités. Si les classes CSS utilisées sont les mêmes on pourra utiliser le même code d’extraction des informations. Cependant ce bouton n’apparaît que sur mobile, sur ordinateur les données sont affichés par défaut.

Le code pour extraire les données :

let name = '';
let address = '';
let tel  = '';
let mail  = ''; 

let nameTag = document.querySelector('.offer-recap-selection-partner-name')
if(nameTag) name = nameTag.textContent;
let addressTag = document.querySelector('.offer-recap-selection-partner-address')
if(addressTag) address = addressTag.textContent;
let telTag = document.querySelector('.offer-recap-selection-partner-tel')
if(telTag) tel = telTag.textContent;
let mailTag = document.querySelector('.offer-recap-selection-partner-email')
if(mailTag) mail = mailTag.textContent;
// name.replace(/\\s/g, '');
// address.replace(/\\s/g, '');
tel.replace(/\\s/g, '');
mail.replace(/\\s/g, '');

Les mêmes classes CSS sont utilisées dans les pages hébergements, activités, restaurants. Le code d’extraction peut donc être réutilisé.

Étape 3 : récupérer les adresses mails des utilisateurs

S’il s’agit d’un site WordPress, on peut extraire les adresses mails des utilisateurs via l’API REST.

Mais visiblement, le site tourne avec ASP.NET. J’arrête mes investigations ici.

Non Regression Test on Spring Boot microservices and Kafka

Présentation d’outils pour implémenter une solution de test de non régression dans une architecture microservices avec les technologies, Spring Boot, Kafka, PostgreSQL, MongoDB, et ElasticSearch.

Schéma de l’architecture
Schéma de l’architecture

Certains de ces microservices communiquent avec une base de données. Parfois, un microservice est responsable de publier un message sur un topic, un autre est responsable d’écouter et réagir face au message reçu sur un topic.

Les problématiques soulevées avant de pouvoir tester le bon fonctionnement d’une fonctionnalité au sein de cette architecture :

  • Comment tester l’existence d’un objet sur un topic Kafka ?
  • Comment tester l’existence d’un enregistrement dans une base de données PostgresSQL, MongoDB, Elastic Search ?

Les outils pour tester cette architecture

Postman Newman : Exécuter le scénario de recette

PostgREST : Interagir avec la base de données PostgreSQL via API REST

Kafka REST Proxy : Interagir avec un topic via API REST

Kafdrop : Interagir avec un topic via API REST et interface graphique

  • Fonctionnalités
    • Publier des messages sur un topic via API REST.
    • Récupérer des messages sur un topic via API REST.
    • Interface graphique pour consulter les messages présents sur un topic.
  • Lien

RestHeart MongoDB : Interagir avec une base de données via API REST

Astuces de productivité du DEV (the 10x developper rules)

10x developer rules 😅

Ce guide liste des astuces pour améliorer votre productivité en tant que développeur.

https://images.unsplash.com/photo-1511376777868-611b54f68947?ixlib=rb-1.2.1&q=85&fm=jpg&crop=entropy&cs=srgb

  1. Avoir une définition de ce qui est terminée akka Definition of Done et éventuellement un Definition of Ready (méthode agile).

    Cela t’obligera à être rigoureux. À partir de quel moment on peut considérer que ta tâche est terminée. Lorsque le client est satisfait ? Lorsque les critères d’acceptation sont validés. Lorsque le testeur à validé la recette ?

  2. Connaitre son rôle en tant que développeur

    Partons du principe que le rôle du développeur est d’apporter de la valeur à l’entreprise, c’est sa priorité numéro 1.

    Poses toi la question suivante dans chaque tâche que tu entames “Est-ce que je vais apporter de la valeur à mon entreprise en faisant cela ?” Si tu as un doute pose la question à ton collègue ou un supérieur.

  3. Résister au réfactoring quand ce n’est pas nécessaire

    On peut distinguer deux situations réfactoring :

    • Tu as besoin de refactorer du code pour faciliter l’implémentation d’une fonctionnalité.
    • Tu souhaites refactorer, car une partie du code n’est pas lisible (selon toi), ou n’est pas au goût du jour.

    C’est aussi une façon de te différencier en ne tombant pas dans le piège du refactoring. En effet beaucoup de développeurs auront pour réflexe de critiquer ce qui a été fait a telle endroit du code. Alors comment se différencier de ces développeurs de façon intelligente. Déjà avant de critiquer ouvertement ou même avec un collègue assures toi d’avoir déjà une solution, de comment améliorer la chose. Où sinon tournes ta phrase. En partant du principe que tu ne critiques pas, mais plutôt que tu demandes de l’aide à améliorer une partie du code.

  4. Tester son application

    • En la démarrant sur mon poste.
    • Je teste l’application une fois déployée sur l’environnement. (développement|recette) Cela me permet de :
      • Voir si je n’aurai pas oublié certains cas de test.
      • Vérifier mes logs, voir s’ils sont bien contextualisés. Même si mes tests s’exécutent correctement. Démarrer l’application sur mon poste
    • Je demande à une personne de tester mon application.
  5. Vérifier les logs une fois l’application déployée.

    Ok, j’ai pensé à mettre des logs dans mon implémentation, mais quand est-il vraiment lorsque j’exécute mon application ? Est-ce qu’ils sont suffisamment contextualisés ?

  6. Relire ma propre Merge|Pull Request

    À la recherche de faute d’orthographe.

    De TODO oublié dans le code source.

    S’il y a des parties du code dont je ne suis pas confiant, j’ajoute un commentaire pour attirer l’attention du relecteur et lui demander un avis.

  7. Éviter de faire du copier/coller de code source

    Ça peut paraître contre productif. Mais prendre le temps de réécrire un morceau de code trouvé sur Internet. Surtout si c’est du code qu’on ne connaît pas. D’une part permet de comprendre ligne après ligne ce que le code fait. Mais surtout ça me permet de le mémoriser.

  8. Utiliser les raccourcis clavier

  9. Quand je code, j’utilise régulièrement l’autocomplétion.

    C’est un moyen d’apprendre de nouvelles méthodes ou fonctionnalités. Également lire la documentation du code. Parfois, tu trouveras des informations pertinentes uniquement dans la documentation du code source et pas dans la documentation officielle du site web. Apprends à utiliser d’autres fonctionnalités comme "call hiérarchie".

    https://jetbrains.developpez.com/tutoriel/top-dix-plugins-intellij-idea/

  10. Réfléchir à haute voix (think Loud)

    Le principe est simple lorsque tu es bloqué pendant un certain temps, exprimes ton problème à haute voix sans pour autant demander de l’aide à un collègue. Peut-être un collègue aura l’oreille attentive et t’apportera une solution.

  11. Prendre le temps de connaître son IDE, navigateur, système d’exploitation

  12. Utiliser des générateurs en ligne

    Je dois générer un mot de passe, pour un énième site ou je souhaite m’inscrire. Vient le moment de s’inscrire et de choisir un mot passe, inutile de perdre du temps en trouvant la bonne combinaison, je cherche un générateur de mot de passe sur Google.

    Il en existe même pour générer sa signature de mail.

  13. Ne pas taper plus de 2 touches sur le clavier sans regarder son écran.

    L’autocomplétion est partout, je ne peux pas me permettre d’écrire un mot complet en regardant uniquement le clavier, Alors que l’autocomplétion suggère peut-être le mot que je souhaite taper.

  14. Cultiver sa passion pour son métier. Où apprendre ce qui nous passionnes dans les tâches du quotidien, si je n’éprouve pas encore de passion.

    Si tu n’es pas passionné, tu ne comprendras pas pourquoi un collègue sur le même poste est plus productif que toi. Tu n’essayeras même pas d’observer sa façon de travail, pour copier de bonnes idées. Aussi, tu n’auras pas recours à ton imagination pour essayer de t’améliorer.

  15. Développer son expertise technique.

    Je peux approfondir mes connaissances sur l’une des technos que j’utilises.

    • Travaille sur un Side Project

      C’est le premier élément de cette liste. C’est la façon la plus amusante d’apprendre.

    • Faire de la veille ciblée

      Pourquoi ciblé ? Rappel toi, tu dois apporter de la valeur dans le milieu dans lequel tu évolues. Ta veille doit donc cibler les technos/domaines avec lesquels tu interagis lors de ton travail.

    • Acheter un livre sur une technologie

      Les livres techniques, peuvent être difficiles à terminer. L’objectif ne sera pas forcément de lire ce livre de A à Z. En revanches, tu t’attarderas sur le sommaire, repère les sujets que tu ne maîtrises pas. Et concentre ta lecture sur ces parties du livre. En étant conscient de tous les sujets abordés dans ton livre. Le jour où tu auras besoin d’une solution à un problème technique, tu sauras où chercher dans ce livre.

    • Suivre une formation

      N’attends pas que ton entreprise te propose une formation. Suis une formation gratuite ou payante. Les formations ont aussi des sommaires. Cible lorsque cela est possible les parties de la formation les plus pertinentes. Tu peux suivre la formation en entier. Mais tu en tireras plus si tu commences tout de suite à mettre en pratique ce que tu apprends dans un mini projet POC ou en prenant des notes sur une feuille blanche.

    • Écouter des podcasts

  16. Je ne serai pas productif sans une bonne nuit de sommeil.

  17. Ne pas suivre à la lettre tout ce que tu lis.

Send multiple QueryParam with same name POST

The current behavior :

/users?hobbies=handball&hobbies=volley

A Solution :

<form action="/users" method="POST">
	<select class="form-control" name="hobbies[]">
    <option value="" selected disabled>Select Users</option>
    <option value="bread">Best bread available</option>
	</select>
</form>

Will generate a URL /users?hobbies[]=bread&name

In Laravel PHP, it will automatically create an array variable.

Héberger un site WordPress gratuitement, sans publicité

Hébergement Web Gratuit planethoster

Comment héberger un site WordPress gratuitement, sans publicité ? Avec la possibilité d’installer des extensions et le thème de son choix.

Avantages :

  • Certificat SSL gratuit
  • Nom de domaine personnalisé

Inconvénients :

  • Lenteur du site, dû aux faibles ressources allouées pour le site gratuit.

Tout cela est disponible dans l’offre World Lite de Planethoster gratuitement. Ce n’est pas l’offre qui est la plus mise en avant, mais en cherchant bien elle est bien présente sur le site.

Créer votre site WordPress sur PlanetHoster gratuitement

Aller sur le site avec ce lien https://www.planethoster.com/goph-deddy-saint-val

Comment utiliser WordPress. Créer un article.

https://openclassrooms.com/fr/courses/5489551-creez-un-site-moderne-et-professionnel-avec-wordpress-5

En 2021-2022 les outils no code et d’automatisation sont en vogues, Planethoster est l’un des seuls fournisseur d’hébergement qui propose des APIs pour gérer :

  • Domaine
  • FTP
  • Mail
  • Base de données
  • Gestion des comptes
  • Hébergement