Tous les articles par jbnahan

Retrospective de l’année 2018

L’année 2018 a été riche en évènements autant dans l’actualité que dans mes domaines préférés tels que la sécurité de l’information et mon langage de programmation préféré ; qui est PHP.

Ainsi la documentation française de PHP a connu une nette amélioration dont toute la communauté francophone profite !

Merci aux nombreux contributeurs traducteurs et relecteurs qui soumettent chaque semaine de nouvelles traductions et corrections.

Je vous invite à nous rejoindre pour mettre à jour la traduction, corriger les fautes pour améliorer en permanence la qualité de la documentation française.

Pour cela, un petit tutoriel vidéo avait été réalisé :

Pour ce qui est de la sécurité de l’information, la mise en application du Réglement Général pour la Protection des Données (RGPD) fût l’évènement majeur de cette année et pour certain une prise de conscience sur les traitements réalisés par les entreprises.

Je me rends compte tous les jours qu’en question de sécurité de l’information, personne n’est épargné. Même la petite association qui dispose d’un site internet peut être victime des pirates.

La rétrospective réalisée par Zataz doit servir à prendre conscience des dangers d’internet et à se poser les bonnes questions. Ai-je réellement besoin d’étaler ma vie sur les réseaux sociaux ? Et par conséquent la vie des personnes qui m’entoure ?

Je vous souhaite en cette nouvelle année une bonne protection de vos données personnelles et une prise de conscience sur le contrôle de vos données.

Tous mes meilleurs voeux pour 2019 !

La sécurité informatique n’est pas pour vous ?

« De toute façon, mes données n’intéressent personne »… FAUX ! Vos données intéressent toujours quelqu’un pour soutirer de l’argent !

D’autre part, le titre de cet article est faux, voici le titre corrigé :
« La sécurité informatique de vos informations personnelles n’est pas pour vous ? »

Voici deux vidéos qui pourraient bien vous faire changer d’avis :

Com’Infinie – Et si un voyant vous révélait les dangers d’Internet
Campagne Hack Academy – JENNY

Comment se prémunir ? En adoptant une hygiène informatique pour se prémunir des risques majeurs.

Pour tout le monde, ce guide est utile à la maison comme au travail :

https://www.ssi.gouv.fr/particulier/guide/guide-des-bonnes-pratiques-de-linformatique/

Pour ceux qui voyagent (même occasionnellement) :

https://www.ssi.gouv.fr/particulier/guide/partir-en-mission-avec-son-telephone-sa-tablette-ou-son-ordinateur-portable/

Vous souhaitez aller plus loin ? Formez-vous ! Je vous recommande cette formation en ligne gratuite ne nécessitant aucune connaissance technique (disponible jusqu’en avril 2019).

Et vous ? Faites-vous réellement attention à ce genre de chose pour vous, vos enfants, vos ainés ?

[Vidéo] Comment corriger une faute dans la documentation de PHP

Pour faire suite à mon précédent article, voici une courte vidéo (4min) tutoriel sur la façon de proposer une correction à une faute ou une erreur présente dans la documentation de PHP.

Dans cette vidéo, j’utilise un exemple. La page de documentation de la fonction « openssl_decrypt » contient une erreur et je vous montre comment la modifier pour proposer un patch de correction.

La vidéo est disponible sur YouTube.

 

Comment corriger une erreur dans la documentation de PHP

Depuis que je développe des logiciels, je prends toujours du temps pour écrire la documentation de mes applications. Qu’elle soit technique ou qu’elle soit pour l’utilisateur, j’écris la documentation en plus des lignes de code. Depuis novembre 2017, je contribue plus activement à la documentation française de PHP.

Pour ceux qui ne connaissent pas, PHP est un langage de programmation informatique très utilisé sur Internet pour écrire des sites web. Environ 80% des sites sont écrits en PHP.

En effet, pour un projet comme PHP, la documentation est primordiale. C’est le point d’entrée de tout nouvel utilisateur. La documentation est consultée chaque jour par de nombreux développeurs amateurs ou professionnels. Disposer d’une documentation dans la langue natale de l’utilisateur est un atout pour PHP.

Cependant, il est possible que lors de votre navigation, dans la documentation vous rencontriez des fautes de français, des erreurs de traduction. Sachez que vous pouvez soumettre une demande de correction.

Pour proposer une correction, cliquer sur le lien « edit » placé sous le menu de sélection de la langue.

Vous serez redirigé vers l’éditeur en ligne de la documentation de PHP. Clique alors sur le bouton « anonymous login » pour vous connecter sans avoir besoin d’un compte.

L’éditeur se charge et ouvre la page sur laquelle vous étiez.

La documentation de PHP est écrite dans des fichiers textes structurés grâce au langage XML. Vous le reconnaîtrez rapidement dans l’éditeur, car le XML est en couleur (vert, bleu, rouge, marron …).

Dans la page, qui s’est ouverte, recherchez la faute puis corrigez-la. Enregistrer votre modification en cliquant sur la disquette  située en haut de la zone de modification.

Maintenant, votre travail est dans la section « travaux en cours ». Cette section est présente dans la colonne de gauche de l’éditeur. Cliquer sur son titre pour afficher son contenu.

Maintenant que la correction est effectuée. Il est nécessaire de la soumettre aux relecteur et traducteur de la documentation française. Pour cela, il est nécessaire d’ajouter le fichier modifié dans un « patch » (équivalent à une « pull request »). Tant que vous ne soumettez pas vos modifications via un patch, elles ne peuvent pas être validées et les relecteurs ne savent pas si vous avez terminé votre travail.

Pour ajouter le fichier dans un patch, réaliser un clic-droit sur le fichier visible dans la section « Travaux en cours » de l’éditeur en ligne puis choisir « Ajouter ce fichier dans un patch » dans le menu qui c’est affiché, puis cliqué sur « Ajouter dans un nouveau patch ».

Une fenêtre s’ouvre pour vous demander des informations complémentaires à la modification.

Saisissez un nom pour votre patch, une courte description, et pour finir une adresse courriel. Cette adresse est utilisée pour vous prévenir lors de l’application du patch ou de son rejet, mais aussi pour vous contacter pour vous remercier ou demander plus d’information sur votre patch.

Maintenant que tout est saisi, cliquez sur le bouton « Créer » pour soumettre votre patch.

Le fichier ainsi soumis disparaît de la section « Travaux en cours ». Le patch est maintenant disponible dans la section « Patch en attente de relecture » également présent dans la colonne de gauche de l’éditeur en ligne. En cliquant sur le titre, le contenu de la section s’affichera et votre patch y sera présent.

La communauté de PHP, et tout particulièrement la communauté française de PHP vous remercie pour votre aide.

Pour ma part, j’espère lire vos patchs ou vos commentaires prochainement.

La documentation !

Lors de nombreuse conférence et très souvent au travail, un point important revient tout le temps :

Les tests et la documentation !

Je m’attarde ici sur la seconde partie. En effet, nous passons beaucoup de temps à coder… Mais sans une bonne documentation, notre code n’est pas facilement compréhensible par les autres. Pour une bibliothèque, son utilisation sera faible si la documentation est faible. Pour une application, le code devient legacy très rapidement et personne ne voudra plus le modifier.

Mais que dire de la documentation du langage de programmation utilisé ? Je mets le langage dans la catégorie des bibliothèques. Ceux qui me connaissent un peu sauront que je parle de PHP et plus particulièrement de la traduction de la documentation en français.

Il y a quelque temps, j’ai posté un twit pour inviter les bonnes volontés à venir traduire la documentation.

Après 31 Re-Twit (merci à eux) et 12 j’aime, il y a eu 2 contributions. Le résultat n’est pas si mal !

Au fil de la pérégrination de mon twit, Antoile Bellion a posé une question à laquelle je m’attendais.

La réponse fut pertinente de la part de l’un des traducteurs de la documentation PHP :

Pour ma part, je me suis attaché à réaliser un peu de ménage dans les fichiers à mettre à jour. En effet, certains fichiers à mettre à jour ne comportaient aucune (ou très peux de) modification. Il en reste encore beaucoup, mais le compteur est aujourd’hui à 913.

Pour les nouveaux fichiers à traduire, il reste 1258 fichiers en attente d’une première traduction.

Et vous, pourrez-vous nous aider à rattraper la documentation française de PHP ?

Le guide du traducteur (Anglais) et l’éditeur en ligne.

Compiler la doc de PHP

Travaillant actuellement sur la traduction française de la documentation de PHP, j’ai besoin d’appliquer les patchs que je produis sur la documentation actuelle pour me rendre compte du résultat.

Je vous partage les quelques commandes à réaliser pour extraire et générer la documentation.

Pour compiler la documentation française de PHP il est nécessaire d’avoir PHP, SVN et GIT d’installé sur la machine.

La première chose à faire est d’extraire le dépôt via le terminal :

L’accès est en lecture seul sur le dépôt, mais cela n’empêche pas de récupérer les sources.

Maintenant, entrer dans le dossier doc-fr puis récupérer l’outil PHD. Il permet la génération de la documentation en XHTML.

Il est possible de générer une première fois la documentation. Pour cela exécuter la commande configure suivante :

Enfin, pour générer les pages HTML, exécuter la commande suivante :

La génération de la documentation peut être lente, car il est nécessaire de tout indexer.

Afin de naviguer dans la documentation ainsi générée, il est possible d’utiliser le serveur intégré de PHP.

Ouvrez votre navigateur et saisir l’URL suivante http://127.0.0.1:8000

[POC] JWT Single Use client server

After some search and some investigating, I don’t have great results of one part of the JWT use cases.

The use case is: the client generates a JWT token by request on the API. Before the client can send the first request, it’s needed to register the client’s public key into the rights manager of API.

After the public-key exchange between the Client and API, the API allow the client’s queries because all JWT tokens are signed with the client’s private key and the API can verify the signature.

For this, I have written a proof of concept available here.

The branch master contains 2 parts:

  • The WebServer part, written with Silex and handle the JWT with a middleware before the controller.
  • The client part, written in flat PHP who send 3 queries. The first, get the list of objects, the second add an element into list and the third get the list with the new element.

The branch with_guard it’s same branch master but the middleware has been removed and replaced by a Guard Authenticator.

In this case, the client is the user and you can use the role system for check the client’s rights.

Have you some idea or API who can use this case ?

[POC] PHP Ext for use WiringPi

After using the wirigPi library in C to managing the RaspberryPi’s GPIO, I have written a first version of wrapper extension for PHP.

This version allows setup the library, set if pin is input or output, read and write the pin.

The first example blink a DEL and has a button for the exit of the infinite loop !

You can read and get the source code into my Github repository.

Are you interested by my work ?

Extension PHP pour réaliser des services Windows

Aujourd’hui, je vais parler d’une extension PHP exclusivement réservée à Windows sur laquelle j’ai travaillé. Il s’agit de l’extension PECL win32service écrite à l’origine par Wez Furlong et maintenue jusqu’à maintenant par Richard Quadling. Cette extension permet d’exécuter un script PHP en tant que service windows et a été mise à jour pour PHP 7.0 et 7.1. Elle est maintenant téléchargeable depuis le dépôt de code source GitHub.

Dans la dernière version 0.2.0 actuellement en beta, quelques nouveautés ont été ajoutées par rapport à la version pour PHP5. La plus importante est la possibilité de charger l’extension quelle que soit la façon d’utiliser PHP (ligne de commande, module apache, CGI, FastCGI). Si vous souhaitez retrouver le comportement de l’extension tel qu’il était en PHP 5, il faut utiliser la version 0.1.2 également disponible pour PHP 7.0 et 7.1.

Voyons maintenant comment l’utiliser. Le Zip téléchargé depuis GitHub contient l’extension pour une version de PHP et pour toutes les variantes (x86/x64 et NTS/TS). Il contient également des scripts qui sont utilisés pour tester l’extension lors du développement.

La première chose à faire est d’installer l’extension adéquate dans le dossier « ext » de votre installation PHP.

Une fois la copie terminée, il est nécessaire de modifier le fichier de configuration « php.ini » pour que l’extension soit chargée.

extension_dir = "ext"
Vérifier que cette valeur est correcte.

Vérifions maintenant que l’extension est bien chargée avec la commande php --ri win32service

Maintenant que l’extension est chargée, il est possible d’utiliser les scripts d’exemples présents dans le zip téléchargé. Pour les utiliser, ouvrez une fenêtre de ligne de commande en tant qu’administrateur et placez-vous dans le dossier des exemples.

Maintenant, installez le service de test avec la commande php.exe service.php create

Ouvrez le gestionnaire de service windows, le service « Windows service PHP test » est maintenant présent.

Vous pouvez le démarrer, l’arrêter et le désinstaller via la ligne de commande.

Propriétés du service Windows
Le service dans le gestionnaire de service windows.

L’arrêt du service depuis la ligne de commande met à jour le gestionnaire de service Windows

La suppression du service peut se faire uniquement via la ligne de commande.

La documentation officielle présente sur le site de PHP est toujours valable.

Vous avez maintenant toutes les cartes en main pour réaliser de beaux services Windows avec PHP 7. Si un plantage intervient, il est possible de rapporter l’incident directement sur GitHub.

Utilisez-vous PHP sur Windows pour développer ou sur votre serveur Windows ?

[Modification du 8 mars 2017]

L’extension est maintenant  suffisamment stable pour être utilisé en production. La version 0.2.0 stable est disponible.

Développer sur Raspberry PI en C

Voici bien longtemps que j’ai mis de côté l’électronique. Pour repartir dans ce domaine, il me semble intéressant d’utiliser le Raspberry Pi. Ce petit ordinateur à 40€ qui permet de brancher toute sorte de choses sur son port GPIO et d’expérimenter facilement.

Étant développeur, mon langage de prédilection est le PHP. Celui-ci étant plutôt de haut niveau, il est impossible de l’utiliser pour écrire un programme pour un microcontrôleur Microchip ou ATmega. Pour ces derniers, il faut se tourner vers l’assembleur, le basic ou le C pour Microchip.

Il y a quelques mois, j’ai réalisé un petit montage pour lire le télérelevé client de mon compteur EDF. Le programme qui réalise la lecture des données du compteur et qui gère le stockage de ces données est écrit en PHP. J’ai compilé la version 7.0 pour le Raspberry Pi modèle A, afin de bénéficier des améliorations de cette version. Cela se ressent très vite avec un processeur peu puissant.

Maintenant, je m’intéresse aux interactions possibles avec le Raspberry Pi via son port GPIO. Et je me lance le défi d’utiliser PHP 7.0 pour écrire des programmes qui utilise le GPIO du Raspberry PI.

Mais comment avoir accès au hardware via PHP ?
J’ai trouvé deux façons de faire. La première est un très gros bricolage. Il s’agit de passer par des commandes système pour exécuter un programme qui réalisera les actions. Il y a deux grosses limitations à cela, d’une part les temps sont mauvais et d’autre part piloter la ligne de commande et en interpréter les résultats reste complexe. C’est beaucoup de travail pour quelques choses qui semblent plutôt simples.
La seconde façon est de réaliser une extension à PHP. Ce dernier est écrit en C et Pascal Martin a écrit un livre en français sur “Développer une extension PHP”. Reste à trouver une librairie C qui gère le GPIO du Raspberry Pi. J’en ai trouvé deux, la première “pigpio” semble très complète, mais je me la garde sous le coude pour plus tard. La seconde est “wiringPi”. Elle est composée de deux librairies et d’un exécutable permettant l’interaction avec le GPIO via la ligne de commande.

Avant de me lancer dans l’écriture de l’extension, je vais commencer par jouer un peu avec la librairie et mon banc d’essai.

Quel accueil !
Quel accueil !

Voici ce que je compte tester avant d’écrire une extension pour PHP :

  • Faire clignoter une LED
  • Lire l’état d’un bouton (pull Up)
  • Écrire des informations sur un écran LCD 16×2 ou 20×4
  • Lire des informations via le bus i2c

Pour le moment, seul le dernier point n’est pas atteint. Le but de ces tests réalisés en langage C est simple : obtenir un étalon permettant la validation des tests de l’extension PHP et éliminer les problèmes matériels.

Voici une petite vidéo du programme écrit en C.

Mon projet vous intéresse, ou vous avez des questions ? Je me ferais une joie de vous répondre dans les commentaires.