14,90 € TTC
p.10 Les impacts fiscaux des cryptomonnaies
p.24 Introduction au dossier
p.26 À la base des cryptomonnaies : la blockchain
p.50 À la découverte d'Ethereum
p.68 Créez votre propre blockchain privée
p.88 Tester des stratégies d’investissement dans les cryptomonnaies à l’aide d’un bot
p.106 Petit glossaire des cryptomonnaies
Qui n’a jamais été confronté à des mises à jour silencieuses ? Si l’on ne prend pas garde à la configuration du système sur lequel on déploie une application ou plus simplement si l’on comment l’erreur d’utiliser une librairie en ligne, il est possible que du jour au lendemain votre application cesse de fonctionner. Dans ce cas-là, la logique veut que l’on s’interroge sur le cas particulier qui n’aurait pas été traité et qui aurait fait dérailler le programme. Le message d’erreur paraîtra complètement obscur, signalant des paramètres manquants ou un mauvais type de paramètre... mais non, nous continuerons à chercher vainement la faute du côté de notre travail, de notre réflexion. Après des heures de recherches infructueuses, il faudra se rendre à l’évidence : non ce n’est pas de notre faute ! La correction en elle-même prendra cinq minutes, le temps de consulter la documentation de l’API (en supposant qu’elle ait été mise à jour quand même) et de modifier le passage de paramètres.
J’ai été confronté de nombreuses fois à cette situation et j’avoue que maintenant je considère le problème à l’envers : lorsqu’une erreur survient après des mois en production, je commence par regarder les mises à jour des bibliothèques.
Les développeurs ne jurant que par les langages de bas niveau trouvent souvent détestable le fait de signaler explicitement les numéros de version des librairies employées dans une application. C’est le cas en Python par exemple avec la gestion des dépendances de Pip indiquant les versions des modules : == pour indiquer précisément la version à employer, <= pour la version maximale, etc. On retrouve le même système pour NodeJS avec NPM. Pourtant, ce mécanisme permet de s’assurer que si vous utilisez la fonction fct(param_1 : int) de la bibliothèque A en version 1.2.5 et que celle-ci passe en version 1.3 où l’appel à fct est désormais fct(param_1 : int, param_2 : str), tout continuera à fonctionner correctement. Bien entendu, il n’est pas possible de mettre en place cette méthode avec tous les langages, mais a minima, lorsqu’elle est disponible, il ne faut surtout pas la négliger ! D’autant plus lorsque les développeurs de librairies font fi de la compatibilité ascendante...
Ce numéro de GNU/Linux Magazine, même hors-série, restant compatible avec le précédent, vous trouverez le sommaire en page suivante... Bonne lecture !
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...

Soyons clairs, je ne suis pas fan de Lua en tant que langage de programmation. Le simple fait que les tableaux débutent à l'indice 1 me perturbe totalement et constitue pour moi une véritable aberration. Mais, d'un autre côté, Lua est aussi le langage par excellence lorsqu'il s'agit d'embarquer des fonctionnalités de scripting au sein d'une application ou d'un outil. Du moins, c'est ce que tend à montrer sa popularité dans ce domaine et, si l'on n’a jamais tenté l'expérience, on peut se demander pourquoi. La réponse est évidente après quelques lignes de code et on se surprend soi-même à dire, à haute voix qui plus est, « Ah ! Mais c'est excellent, en fait ! ».
Dans un précédent article [1] paru dans le numéro 260, nous avions fait connaissance avec le développement noyau du côté de NetBSD. Remettons le couvert aujourd'hui, mais en nous penchant sur OpenBSD qui, de bien des manières et sur bien des plans est drastiquement différent des autres systèmes de la famille des héritiers de l'historique BSD que sont NetBSD, FreeBSD ou en encore DragonFly BSD. À commencer par le fait qu'il n'y a pas de modules kernel (LKM) dans OpenBSD...
Au détour d'un petit projet incluant des échanges USB avec un adaptateur série utilisant une puce FTDI FT232R, j'ai rencontré un problème susceptible de survenir dans diverses situations. Même si aujourd'hui UTF-8 semble avoir toujours été présent dans nos terminaux, éditeurs, codes et que sais-je encore, les utilisateurs et programmeurs les plus aguerris se souviennent sans peine de la souffrance vécue lors de la transition depuis le bon vieux Latin1 (alias iso-8859-1). Mais la dure réalité est la suivante : UTF-8 n'est pas partout !