7,90 € TTC
p. 08 Le cerveau de Peter
p. 11 Script Shell de comparaison de deux arborescences
p. 30 Testez votre infrastructure comme vous testez votre code avec Test Kitchen
p. 35 Générer vos conteneurs et machines virtuelles de manière automatisée avec Packer
p. 40 Mise à jour d’un système Linux embarqué « Over The Air » : comment intégrer et utiliser « Mender » pour vos déploiements
p. 62 Comment démarrer manuellement le noyau Linux
p. 72 Votre chatbot peut-il passer pour un humain ?
p. 82 Qt on the Web
p. 92 PaSSHport, bastion SSH
Avez-vous remarqué comme, étrangement, de plus en plus d'applications et de sites en ligne dysfonctionnent ? Je pense avoir enfin trouvé un élément de réponse à ce phénomène qui se généralise… mais avant de vous exposer mon hypothèse, je vous propose de revenir sur deux exemples concrets auxquels j'ai été confronté au cours de la même semaine.
Tout d'abord, je reçus un appel de détresse de ma mère qui ne parvenait pas à acheter des places d'opéra sur Internet. Rien que de très habituel : elle n'avait sans doute pas vu où cliquer ou avait dû se tromper de champ de formulaire… Je pris donc le temps de refaire la manipulation avec elle en utilisant chacun un navigateur différent à savoir Chromium (Google Chrome) et Firefox. Nous obtînmes le même résultat et nous retrouvâmes dans l'impossibilité de sélectionner une place sur le plan qui s'affichait (le clic ne produisait aucun évènement). Trouvant cela vraiment étrange, je décidai de tester sur un autre navigateur. Sur iPad avec Safari le résultat fut le même… mais sous Android avec Chrome (version Mobile 67), je pus achever la réservation.
Quelques jours après, je voulus effectuer une commande sur un site marchand. Il ne s'agissait pas d'un de ces monstres de la vente par correspondance, mais d'une enseigne de taille moyenne aux États-Unis. La commande se déroula sans accroc, le paiement également et mon colis fut expédié. Jusque-là pas de problème. C'est après que les complications apparurent : la commande partant de Los Angeles et n'étant pas un envoi prioritaire, au bout de quelques jours, comme nous en avons tous pris l'habitude, je cliquai sur un lien me permettant de suivre mon colis et j'aboutis sur une page... blanche ! Un petit problème de serveur, ça peut arriver et je décidai donc d'attendre le lendemain… pour un résultat identique. Me souvenant de mon expérience précédente, je tentai sans trop y croire une visualisation sur mon smartphone. Et là, ô miracle, les informations apparurent comme par enchantement !
On ne peut bien entendu pas tirer de généralités de ces deux expériences, mais elles soulignent un point important : bien souvent les applications et services ne sont pas purement et simplement buggées, elles ne sont pas testées ! Dans ces deux cas, on peut facilement imaginer qu'un seul navigateur a été employé et que la validation en mise en production a pu se produire de la manière suivante :
Tester un programme n'est pas une activité plaisante, mais elle est nécessaire. Elle paraît pourtant être souvent négligée. Même lorsque j'indique à mes étudiants en développement web que les tests feront partie des critères de notation d'un projet, environ 50% d'entre eux ne teste absolument rien (que ce soient les saisies utilisateur ou l'exécution sur différents navigateurs). Pourtant, même lors de calculs basiques on peut s'assurer de la validité d'un résultat. En simplifiant à l'extrême, avec x + 1 = 2, on peut dire que x = 10… On s'aperçoit vite que 10 + 1 ne vaut pas 2, mais pour cela il faut prendre le temps de tester le résultat obtenu et peut-être encore plus important avoir l'humilité de se dire que l'on a pu faire une erreur : « Errare humanum est ».
La prochaine fois qu'une application dysfonctionne, pensez donc à tester des choses basiques puisque les tests ne sont plus à la mode. En attendant, vous pouvez toujours lire GNU/Linux Magazine et vous astreindre à tester TOUS vos codes...
Tristan Colombo
GNU/Linux Magazine s'adresse aux professionnels et aux particuliers désireux de mieux maîtriser les techniques et problématiques liées à la programmation et à l’utilisation de solutions open source. Tous les deux mois avec ses articles techniques, la publication couvre les thématiques suivantes : programmation système, algo, bas niveau, sécurité du code, développement web...
Pensez-vous que nous soyons capables de construire un chatbot, un agent conversationnel, qui soit capable d'interagir avec une personne au point de pouvoir passer (au moins un tout petit peu) pour un humain ? C'est ce que nous allons essayer de réaliser dans cet article.
Les nouvelles infrastructures sont désormais dans le Cloud, composées de conteneurs, machines virtuelles et autres images. Le nouveau mantra est « Infrastructure as Code » : votre infrastructure est « codée » dans des fichiers de configuration. « Code », car vous pouvez le développer, distribuer et versionner comme tout autre projet de développement. Il est donc logique que des systèmes de tests spécialisés pour ce type de développement particulier, comme Test Kitchen, aient vu le jour.
Cet article présente la réalisation d'un shell script dont la fonction est la comparaison de deux arborescences. L'affichage colorisé des résultats permet, entre autres, de distinguer instantanément les fichiers identiques, les fichiers différents, et pour ces derniers : les fichiers les plus récents. Les explications détaillées du fonctionnement permettront au lecteur de renforcer ses compétences en réalisation de shell scripts.