9,90 € TTC
p. 06 Entre algorithmique et programmation
p. 24 Auto-encodeurs probabilistes
p. 36 Web scraping avec Puppeteer
p. 47 Créer une application React avec Recoil plutôt que Redux
p. 60 Jouons avec le bytecode Python !
p. 68 Un postier bien intentionné
p. 74 Création de modèles de documents LaTeX
Dans des temps anciens, les logiciels propriétaires et les logiciels open source se menaient une guerre sévère. Ces temps-là sont désormais révolus. On ne peut pas dire que l’un ou l’autre bord ait gagné, mais en tout cas, il n’existe plus de tension aussi forte entre les partisans des deux camps. On peut se dire que c’est l’open source qui a gagné, qui a finalement été accepté. Mais c’est sans doute oublier un peu vite que l’on peut établir une distinction entre logiciel open source et logiciel libre, le premier profitant de la philosophie du second à des fins purement pécuniaires. En effet, ne nous leurrons pas, qu’est devenu l’open source de nos jours ? Vous pensez que demander à un prestataire de réaliser un développement spécifique en utilisant exclusivement des solutions open source sera le garant de la liberté de votre système informatique ? Que nenni ! Après des milliers de lignes de code non documentées, commentées à la va-vite, vous vous retrouverez prisonnier de votre prestataire de la même manière que si vous aviez opté pour une solution propriétaire ! Il vous reviendra bien plus cher de changer de prestataire, car il faudra qu’il arrive à analyser un code qui n’est pas le sien et qui n’est surtout compréhensible que par son créateur, ou qu’il redéveloppe des éléments fonctionnels pour avoir la possibilité de les faire évoluer. La somme d’heures et donc le coût (en temps et en argent) ne seront pas rentables. La seule solution sera donc de rester prisonnier du prestataire en logiciel open source. Un comble !
Prenons un autre exemple avec une solution open source pour laquelle vous n’aurez qu’à payer les frais de maintenance et d’évolution en fonction du nombre de lignes de codes (oui, ça existe). Nous savons bien qu’il est tout à fait possible de grossir la quantité de code : tout d’abord en codant mal et en ne faisant aucune optimisation, ensuite en ajoutant délibérément des circonvolutions, du code inopérant. Voici un court exemple :
a = True b
= 12
# de nombreuses lignes de code
...
if not a or (a and b <=0):
# de nombreuses lignes de code
...
Quel client ira mettre le nez dans le code de façon suffisamment pointilleuse pour détecter ce genre de pratique ? Personne ! Et encore une fois, quelle est la différence avec un logiciel propriétaire ?
Les logiciels libres, ces logiciels open source codés avec amour, documentés à outrance, sont finalement très rares et ce sont les seuls qu’il faudrait opposer aux logiciels propriétaires. Mais c’est aussi cette rareté qui permet à votre magazine d’être particulièrement intéressant : vous proposer de combler les lacunes de documentation de différents projets. Bonne lecture !
Tristan Colombo
Le petit mot du chef des rédactions : Le lecteur aguerri que vous êtes aura sans doute noté un changement en couverture du présent numéro. Celui-ci est, en effet, daté janvier/février, marquant le passage de la publication à un rythme désormais bimestriel (tous les deux mois).
Cette baisse de fréquence ne doit pas être perçue comme une régression, mais plutôt comme une adaptation naturelle de la publication et, plus exactement, comme une première phase d'évolution que nous préparons d'arrache-pied. Ce n'est ni le lieu, ni le moment, de vous détailler tout cela, mais ce premier numéro de 2022 (le 255, 0xFF, ça ne s'invente pas), marque le début des nombreux changements que vous découvrirez cette année.
Toute la rédaction vous donne donc rendez-vous en mars, pour le n°0x0100, tout en vous souhaitant une fantastique année 2022 !
Denis Bodor
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...
Dans un précédent article [1], je vous avais montré comment scraper le contenu de pages HTML, grâce à NodeJS et à quelques packages complémentaires. La technique que j’avais utilisée fonctionnait très bien avec des pages statiques, mais elle se prêtait mal au scraping de pages générées dynamiquement. Pour régler ce problème, je vais vous présenter une alternative, reposant sur le projet Puppeteer, un package NPM très polyvalent.
Comment se passer d'outils « no code » bancals en écrivant sa propresolution de tri d'e-mails et de fichiers joints ? C’est ce que nous allons développer dans cet article...
Pour gérer nos states en React, nous utilisons depuis des années Redux, regardons du côté d’une alternative avec Recoil.