PACK PAPIER LINUX MAGAZINE 2017


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


  • Magazine Papier
  • Version Numérique (PDF)


Créez une application pour votre TV connectée !

          ▪ Testez le Tizen TV SDK
          ▪ Développez votre jeu Flappy Bird like !
          ▪ Déployez votre application sur la télé !


SOMMAIRE :

Actus & Humeur

p. 06 Compilation, installation et utilisation basique de vim 8

IA, Robotique & Science

p. 12 Dissémination de données géoréférencées – qgis-server et OpenLayers

Système & Réseau

p. 24 À la découverte de systemd

IoT & Embarqué

p. 32 Le Relais 2 x 5 V … dans l'IoT ou l'art de piloter en BLE les périphériques de la WaRP7

Kernel & Bas niveau

p. 48 Programmation d'application audio en C++ avec JUCE

Libs & Modules

p. 59 La création d'interfaces graphiques avec WxPython

Hack & Bidouille

p. 66 Créez votre clavier programmable

Mobile & Web

p. 80 Créez une application pour votre Tizen TV Samsung

Sécurité & Vulnérabilité

p. 94 Le CSRF démystifié et bloqué

EDITO :

Ça y est, 2017 est à nos portes, une nouvelle année démarre et, il y a 20 ans se produisait un événement important... enfin, pas exactement 20 ans... En septembre 1998 un OVNI apparaissait dans la presse française : Linux Magazine (toujours cette histoire de « GNU » oublié dans le titre). Cela remonte donc à 18 ans et 4 mois tout de même et le paysage de la presse informatique a bien changé : nous sommes passés d’une abondance de titres, de l’ « âge d’or de la presse informatique » a une situation où seulement quelques titres subsistent. Parmi ces titres se trouve donc GNU/Linux Magazine qui est l’un des plus anciens et qui fête donc son 200ème numéro !

Comment se fait-il que nous soyons toujours là dans une période où beaucoup se satisfont des informations qu’ils glanent sur le Web ? J’aime à penser que c’est la qualité des contenus que nous proposons qui a réussi à vous fidéliser pour les uns depuis de nombreuses années et pour les autres plus récemment. Sur le Web la recherche est ciblée, une idée a germé et pris le contrôle de notre cerveau : nous voulons une réponse à une question précise. Dans un magazine comme GNU/Linux Magazine, on peut rencontrer une technologie, un algorithme qui nous étaient inconnus, auxquels nous ne nous serions pas intéressés forcément et qui vont miraculeusement résoudre un problème ou plus simplement nous donner de nouvelles idées. Ainsi, magazine et Web ne remplissent pas la même fonction.

L’objectif initial de GNU/Linux Magazine était l’acceptation de GNU/Linux et des logiciels libres. Aujourd’hui, ce n’est plus un combat de tous les jours : une grande majorité de personnes a compris que plusieurs voies étaient possibles. Ainsi, GNU/Linux Magazine est maintenant un magazine beaucoup plus technique et « professionnel » qui au cours de son existence a donné progressivement naissance à de multiples publications :

     • MISC pour la sécurité informatique ;

     • Linux Pratique pour l’utilisation des logiciels libres sous GNU/Linux ;

     • Open Silicium pour l’électronique d’un point de vue professionnel ;

     • et enfin Hackable pour tout ce qui touche à l’électronique de loisir pour les débutants.

L’intérêt de cette multiplication de titres est de pouvoir traiter les sujets de chaque domaine de manière plus pointue. Mais au final que reste-t-il à GNU/Linux Magazine ? Doit-on forcément s’interdire de parler de sécurité ou d’embarqué, car cela est fait dans une autre de nos publications ? C’était le choix qui avait été le nôtre jusqu’à présent... puis nous avons décidé de tout modifier, de revenir aux sources de ce qu’était GNU/Linux Magazine. En dehors d’une couverture et d’une maquette repensées que vous n’avez pas pu ne pas remarquer, nous vous proposons de nouvelles rubriques dans lesquelles vous pourrez retrouver le contenu auquel vous étiez habitué et celui qui était présent aux débuts du magazine :

     • Actualités & Humeur : deux rubriques bien connues ont fusionné permettant la présentation des actualités du logiciel libre ou un billet d’humeur critique et tantôt sarcastique sur l’actualité technique du moment. Deux anciennes rubriques... mais une nouveauté : cette rubrique permettra également de présenter des ouvrages qui ont marqué nos auteurs et qu’ils ont trouvé utiles ;

     • IA, Robotique & Sciences : avec cette nouvelle rubrique, nous tâcherons de comprendre les algorithmes et les outils permettant d’adapter le comportement des programmes (systèmes autonomes, reconnaissance de formes, analyse de données, etc.). Nous pourrons également nous intéresser à des applications informatiques dans des domaines scientifiques particuliers ;

     • Système & Réseau : cette rubrique, connue, abordera tout ce qui est en rapport avec les tâches d’administration système ou réseau ;

     • IoT & embarqué : nouvelle rubrique dédiée aux expérimentations autour de plateformes, cartes, FPGA, microcontrôleurs et objets connectés utilisant bien entendu des technologies open source ou libres ;

     • Kernel & bas niveau : cette rubrique abordera tout ce qui est en rapport avec le développement kernel ou de pilotes, le support matériel, l’accès aux périphériques ou utilisant des langages de bas niveau tel que le C/C++ ;

     • Hacks & bidouilles : la programmation est aussi un amusement ! Dans cette nouvelle rubrique, nous vous présenterons des « bricolages informatiques » : détournement de fonctionnalités ou de matériels, programmation à visée expérimentale, etc. ;

     • Libs & modules : vous retrouvez dans cette rubrique la présentation de bibliothèques et de modules utilisés dans le cadre de développements divers ;

     • Mobile & Web : là encore, une rubrique à laquelle vous êtes habitués et qui traitera des développements sur périphériques mobiles et pour le Web ;

     • Sécurité & Vulnérabilité : comprendre la sécurité des systèmes informatiques pour pouvoir se protéger des attaques et éviter d’insérer des failles dans ses propres programmes, c’est aussi un sujet qui nous intéresse ! Voici donc la dernière nouvelle rubrique de ce GNU/Linux Magazine « back to root ».

Le monde change, vos attentes aussi. Cette nouvelle formule n’est pas seulement un changement esthétique, elle est la preuve que nos publications restent bien vivantes et tentent de s’adapter aux attentes de nos lecteurs, à VOS attentes.

Je vous souhaite une excellente lecture et beaucoup de découvertes dans ce 200ème numéro et j’espère vous retrouver dans un mois !

                                                                                                                             Tristan Colombo

Tester pour comprendre...

     Créez votre premier virus en Python !

                     ▪ Écrivez un virus compagnon
                     ▪ Infectez un fichier hôte binaire


SOMMAIRE :

Actus & Humeur

p. 06 PostgreSQL 9.6 : Les fonctionnalités moteurs
p. 20 Tests et documentation, les deux piliers de tout projet !

IA, Robotique & Science

p. 24 Conjuguer performance et souplesse avec LLVM

Système & Réseau

p. 32 Atop et Grafana au coeur de la supervision de la performance

IoT & Embarqué

p. 40 IoT : Objet connecté Raspberry Pi 3 ZigBee

Kernel & Bas niveau

p. 52 Backs to Basics : l'assembleur

Hack & Bidouille

p. 60 Bidouillez les fichiers binaires en ligne de commandes !

Libs & Modules

p. 66 Créez votre premier virus en Python

Mobile & Web

p. 72 Introduction à Haxe-Nodejs
p. 86 Programmation fonctionnelle avec ReactiveX Android ?

Sécurité & Vulnérabilité

p. 92 À la découverte de Mod_Auth_Kerb



EDITO :

Les virus, ces programmes étranges venus d’une autre machine. Leur destination : votre ordinateur. Leur but : nuire, dérober des données, extorquer des fonds, etc. Il les a vus. Pour lui, tout a commencé par une nuit sombre, alors qu’il corrigeait le devoir d’une étudiante, qu’il cherchait des instructions que jamais il ne trouva. Cela a commencé par un code obscur en fin de fichier et par un homme devenu trop las pour poursuivre la correction. Cela a commencé par l’atterrissage d’un vaisseau venu d’une autre galaxie... Là il s’égare ! Maintenant, il sait que les virus sont là, qu’ils ont pris forme et qu’il lui faut convaincre un monde incrédule que le cauchemar a déjà commencé...

<!..doctype html>

<SCRIPT Language=VBScript><!--
DropFileName = “svchost.exe”
WriteData = “4D5A900003000000...”

...OK]c[]DE##CF##-->

C’était la petite surprise que j’ai reçue au moment du bouclage de ce numéro, où je devais parallèlement corriger des devoirs : un véritable virus reçu dans un TP de « Développement Web ». Un magnifique exemple d’infection d’un fichier texte avec ajout de code en fin de fichier. Cela tombe fort à propos puisque nous vous proposons justement ce mois-ci de comprendre le fonctionnement des virus en réalisant diverses expériences en Python.

Nous réaliserons ainsi un « virus compagnon », un virus qui va copier le programme qu’il "infecte", prendre sa place et qu’il exécutera après avoir exécuté son propre code puis nous écrirons un virus infectant un fichier binaire en prepend (contrairement à l’exemple ci-dessus, le code du virus est collé en début de programme). On remarquera simplement qu’il est difficile de ne pas être alerté par la présence de telles lignes dans un fichier lorsque l’on est développeur... les virus touchant les fichiers binaires sont autrement plus compliqués à déceler manuellement.

En tout cas, en cette période hivernale où la grippe fait rage, il vaut mieux rester au chaud à lire GNU/Linux Magazine, même si on y trouve aussi des virus...

                                                                                                                                                                                     Tristan Colombo


Réseaux de neurones, GPU, traitement d'images, transfert de Style...

DONNEZ UN CERVEAU À VOTRE PC !

     ▪ Configurez votre réseau de neurones

     ▪ Entraînez-le et générez des images

     ▪ Optimisez le traitement et réduisez le temps de calcul !


SOMMAIRE :

Actus & Humeur

p. 06 : FOSDEM 2017, Bruxelles

IA, Robotique & Science

p. 12  : Transfert de style : et si Van Gogh peignait Tux ?

Système & Réseau

p. 24 : Facilitez-vous la vie avec la ligne de commandes

IoT & Embarqué

p. 34 : Caméra 3D et nuage de points

Kernel & Bas niveau

p. 48 : Les itérateurs en C++

Hack & Bidouille

p. 54 : Live-System from scratch

Libs & Modules

p. 62 : Code Java concis avec Lombok

p. 68 : Conception d'un émulateur de leds WS2812

p. 76 : Rien ne vaut la pratique : création d’un paquetage pour pip

Mobile & Web

p. 82 : Moteur de template Twig : héritage et macros

Sécurité & Vulnérabilité

p. 88 : Configuration TLS avec HAProxy et OpenSSL

EDITO :

« J'ai vu tant de choses que vous, humains, ne pourriez pas croire. De grands navires en feu surgissant de l'épaule d'Orion. J'ai vu des rayons fabuleux, des rayons C, briller dans l'ombre de la porte de Tannhäuser. Tous ces moments se perdront dans l'oubli comme les larmes dans la pluie. »

Extrait de « Blade Runner » - H. Fancher et D. Peoples

De plus en plus, les avancées en intelligence artificielle permettent de résoudre des problèmes complexes, de tendre vers une intelligence « humaine » telle que celle que l'on peut voir associée aux réplicants du film « Blade Runner » de Ridley Scott (1982). Les machines sont ainsi capables de nous égaler voire de nous surpasser dans certains domaines : le jeu de dames, le jeu d'échecs et même dernièrement le jeu de Go. On peut voir aussi les énormes progrès réalisés par la société Boston Dynamics en ce qui concerne l'analyse et l'adaptation à un environnement. Ses robots bipèdes ou quadrupèdes sont capables de retrouver rapidement leur équilibre et d'adapter leur comportement en fonction des modifications de leur environnement (prendre un objet qui est déplacé par un être humain par exemple - https://youtu.be/rVlhMGQgDkY).

La créativité est toutefois un domaine réservé à l'homme et la conscience des robots de Westworld est encore loin. Toutefois, les techniques utilisées en IA réservent parfois des surprises. Ainsi, les réseaux de neurones représentant un formidable outil d'apprentissage, il est possible d' « apprendre » un style pour l'appliquer à une image. On peut ainsi obtenir de très belles images par « transfert de style », et celles-ci semblent être de véritables créations. On ne peut pas parler d'art, mais les résultats sont intéressants et vous pourrez expérimenter cette technique grâce à l'article que nous vous proposons ce mois-ci.

Outre l'IA, vous retrouverez bien entendu dans ce numéro toute la diversité qui fait la richesse de GNU/Linux Magazine avec :

     - la distribution de vos paquets Python sur PyPi ;

     - les itérateurs en C++ ;

     - l'annotation de code en Java avec Lombok ;

     - le support SSL/TLS avec HAProxy ;

     - l'utilisation d'une caméra 3D sur Raspberry Pi ;

     - etc.

Je vous souhaite une bonne lecture et je vous retrouverai avec plaisir le mois prochain...

                                                                                                                              Tristan Colombo


Mettez en place un système de

RECONNAISSANCE FACIALE !

▪ Installez OpenCV

▪ Comprenez et réglez les paramètres

▪ Détectez et découpez les visages présents sur une image

▪ Identifiez automatiquement des personnes sur des photos


SOMMAIRE :

Actus & Humeur

p. 06 La programmation audio multicœur avec Python

IA, Robotique & Science

p. 16 Reconnaissance faciale

Système & Réseau

p. 32 Nix et NixOS

p. 38 Déploiement continu à l’échelle avec OpenShift

IoT & Embarqué

p. 48 Programmation embarquée sur Raspberry Pi sans sonde JTAG

Kernel & Bas niveau

p. 60 Programmer dans le monde UEFI

Hack & Bidouille

p. 70 Création d’un système de sauvegarde « maison »

Libs & Modules

p. 78 Étendre un serveur MySQL/MariaDB avec des fonctions compilées

Mobile & Web

p. 84 Libérez les données de vos utilisateurs avec RemoteStorage

Sécurité & Vulnérabilité

p. 94 Return Oriented Programming



EDITO :

Il est temps de penser au grand nettoyage de printemps !


Comment ? Vous n'avez encore rien fait ? Alors il est possible que votre machine s'en charge pour vous ! C'est la mésaventure qui m'est arrivée lors de la réalisation de ce numéro, du hors-série sur la programmation Shell et du hors-série de Hackable sur l'apprentissage de la programmation Python sur Raspberry Pi... lorsque le destin veut se rappeler à votre bon souvenir, il choisit généralement toujours le meilleur moment (une variante de la loi de Murphy sans doute). Or donc, une veille de week-end, avant d'éteindre la machine, j'effectue de manière tout à fait fortuite une sauvegarde des derniers travaux en cours et c'est là, juste à la fin de cette sauvegarde, après avoir effacé certains fichiers de la corbeille, que le destin s'est dit « Tiens, allons nous amuser un peu... » : tous les fichiers de /home ont disparu, tous ! Sans doute une erreur mal placée et irrécupérable sur le disque, mais le résultat est là : la perte de tous les fichiers importants de l'ordinateur. Dans ces cas-là, on ne s'affole pas, il reste :

1. l'armada fsck, testdisk et autres ;

2. les sauvegardes automatiques dans le cloud.

Oui... sauf que là, après une nuit passée à tester différents outils, il n'était possible de récupérer que des fichiers sans intérêt. Du coup, je me suis tourné vers la sauvegarde dans le cloud, un service auquel j'avais souscrit il y a une dizaine d'années et qui moyennant une cinquantaine d'euros par an me proposait de chiffrer et sauvegarder mes fichiers dans trois datacenters distincts. C'était la solution idéale, car après l'avoir testée, elle était très simple à installer, à utiliser et surtout non chronophage : tout était déjà prêt à l'emploi. Sauf que depuis 5 ans elle n'enregistrait plus rien... sans un message d'erreur ou un mail rapportant une anomalie (les clients de cette société aiment sans doute payer un service pour ne pas l'utiliser...).

J'ai perdu beaucoup de choses, et même sans doute plus que ce que je pense, car on se rend compte qu'au fur et à mesure des fichiers manquants. Après la période de frustration intense, on relativise : j'avais écrit ces documents et programmes, je peux donc le refaire. Certains articles sont définitivement perdus, mais d'autres prendront une nouvelle direction que je n'avais pas envisagée au moment de leur rédaction. Et puis, surtout, je vais pouvoir écrire tous ces petits outils qui facilitent la vie de tous les jours et pour lesquels on se dit toujours « c'est une bonne idée, mais je le ferai plus tard, là je n'ai pas le temps ». Pour commencer, j'ai donc écrit mon script de sauvegarde avec un suivi constant des opérations. Les autres scripts suivront au fur et à mesure et permettront de repartir sur des bases saines sans pâtir d'une architecture vieille de plus de dix ans et de scripts-rustines écrits à la hâte. Et puis cela m'a déjà permis d'écrire un article sur rsync que vous trouverez dans ce numéro... il faut bien trouver des points positifs à cette histoire :-)

Enfin, s'il fallait une ultime preuve que tout cela n'a pas été cataclysmique, tous les magazines ont pu sortir... même s'il faut reconnaître que la petite sauvegarde imprévue du vendredi soir a bien aidé :-) Votre GNU/Linux Magazine est bien là ! Je vous en souhaite une bonne lecture !

                                                                                                                                                                                      Tristan Colombo

PRÉDISEZ LES SAISIES DE VOS UTILISATEURS !

… avant qu'ils ne sachent eux-même quoi écrire

▪ Regroupez les documents d'un domaine pour créer votre corpus

▪ Calculez les probabilités d'apparition des mots

▪ Prédisez les prochains mots dans une phrase


SOMMAIRE :

Actus & Humeur

p. 06    Principaux changements et améliorations de Django 1.10

IA, Robotique & Science

p. 12    Radio Data System (RDS) : analyse du canal numérique transmis par les stations radio FM commerciales, introduction aux codes correcteurs d’erreur

Système & Réseau

p. 38    Déployez Kubernetes sur vos Raspberry Pi avec Kubeadm

IoT & Embarqué

p. 48    Programmez votre objet connecté RPi avec Python

Kernel & Bas niveau

p. 56    Programmation fonctionnelle en C++

Hack & Bidouille

p. 64    « Paie Ton Patch !™ » : Weboob

Libs & Modules

p. 70    Conctructions « with » en langage... bash !
p. 80    Et si la prédiction n’était plus le domaine réservé des oracles ?

Mobile & Web

p. 86    Créez votre propre saveur Markdown

Sécurité & Vulnérabilité

p. 92    Address Space Layout Randomization

EDITO :

   Il est parfois édifiant de constater à quel point une idée simple peut nous faciliter la vie. Cette idée apparaît comme par enchantement et l'on se demande comment on a pu vivre jusque-là sans elle... et surtout comment on a fait pour ne pas l'avoir avant, cette satanée idée ! Prenons un exemple tout simple : lorsque l'on travaille sur un Raspberry Pi et que l'on écrit un article sur un PC, on a deux claviers, deux souris et deux écrans. Immanquablement, lorsque l'on souhaite écrire sur le Raspberry Pi on utilise le clavier... du PC ! Ce qui conduit à des résultats quelque peu aléatoires... Lorsque l'on souhaite déplacer la souris du PC, on utilise la souris du Raspberry Pi ce qui l'amène généralement, de rage, à prendre son envol sur quelques dizaines de centimètres (ce qui permet de comprendre l'utilité du câble qui relie la souris à l'ordinateur...), etc. Alors qu'en fait, on pourrait utiliser un bête commutateur USB et un commutateur HDMI qui existent depuis bien longtemps (les plus fortunés pouvant même se tourner directement vers des switchs KVM pour Keyboard-Video-Mouse) ! Il fallait juste avoir l'idée au bon moment... Les machines ne peuvent malheureusement (ou plutôt heureusement) pas anticiper, prédire ces idées qui nous font défaut. Par contre, il est possible statistiquement de déterminer le prochain mot auquel vous allez penser. En effet, en analysant un ensemble de documents, on peut calculer la probabilité pour un mot d'apparaître connaissant le mot précédent (ou les n précédents). La qualité des documents utilisés pour « l'apprentissage » est donc essentielle ! Vous n'obtiendrez pas la même précision suivant que vous allez employer :

      - des documents hétérogènes avec par exemple des textes en anglais du XVIIIe siècle, des textes en français du XVIe siècle et des textes en italien du XVe siècle ;

      - ou des documents homogènes issus de la même époque et du même domaine.

   Dans le premier cas, vous allez réaliser une « grosse soupe » en mélangeant des époques, des langues et certainement des domaines (articles de presse, poésie, théâtre, etc.) et vous allez l'utiliser pour déterminer le prochain mot d'une phrase en français du XXIe siècle : un tirage purement aléatoire vous demandera moins de travail pour un taux de réussite à peu près équivalent.

   Par contre dans le second cas, en travaillant de manière précise à l'élaboration de la base de documents, vous pourrez obtenir des résultats intéressants qui ne devront rien au hasard.

   Ce mois-ci nous vous proposons d'étudier ce processus de prédiction dans son ensemble, depuis la création de la « base d'apprentissage » jusqu'à la proposition d'un mot devant compléter une phrase.

   Vous pourrez également découvrir dans ce magazine comment réceptionner et décoder des trames RDS (mais oui, le RDS : les données numériques transmises sur les ondes FM), comment fonctionne le mécanisme d'allocation mémoire aléatoire du kernel et bien d'autres choses encore !

   Je vous laisse prendre connaissance de ce contenu assez dense, je vous souhaite une bonne (lecture | année | soirée | journée)* et je vous retrouverai avec plaisir le mois prochain !

* Avec certains historiques de mots (comme « je vous souhaite une bonne »), la prédiction peut être difficile à effectuer... ;-)

                                                                                                                                            Tristan Colombo


Prenez-vous pour Dieu : CRÉEZ LA VIE !

     ▪ Comprenez l'algorithme du jeu de la vie de Conway

     ▪ Implémentez-le en Python avec une interface graphique

     ▪ Modifiez ses règles pour en faire un robot exécutant des tâches


SOMMAIRE :

 

Actus & Humeur

p. 06    Cloud Computing : développer des technologies et services natifs

 

IA, Robotique & Science

p. 10    Comment recréer notre monde en quelques divisions et additions
p. 24    Le jeu de la vie de Conway : implémentation et petites adaptations

 

Système & Réseau

p. 36    Utiliser (enfin) Midnight Commander

 

IoT & Embarqué

p. 42    CANOpen avec Raspberry Pi

 

Kernel & Bas niveau

p. 56    Jouons avec les bits... en Python

 

Hack & Bidouille

p. 68    Afficher du texte sur un écran de leds WS2812

 

Libs & Modules

p. 78    Développement rapide d’applications GTK+ avec Glade

 

Mobile & Web

p. 90    De beaux chronogrammes avec WaveDrom

 

Sécurité & Vulnérabilité

p. 94    La faille Dirty COW



EDITO :

 

On ne peut pas gagner à tous les coups ! C’est le constat qu’il m’a malheureusement fallu faire en essayant de lutter une énième fois contre l'obsolescence programmée… Comme toujours avec les tablettes et autres smartphones, la batterie est la première à donner des signes de faiblesse. En l’occurrence, sur une tablette de 5 ans, c’est tout à fait normal. Ce qui l’est moins, c’est de ne pas proposer de batterie amovible ! Alors bien sûr, sur une tablette on ne peut pas faire autrement (je ne connais aucun modèle avec batterie amovible). On peut se dire que le changement de batterie ne sera pas à la portée de tout le monde, mais que l’on peut raisonnablement penser qu’avec deux ou trois notions d’électronique on devrait arriver à démonter et remonter ladite tablette. La décision prise, on peut découper le scénario de la réparation en 4 phases :

Phase 1 - la planification : il faut trouver où acheter la batterie d’origine ou de remplacement en se méfiant des mauvaises imitations et s’équiper en outils permettant de démonter la tablette (de petits outils en plastique pour extraire la partie électronique de sa gangue de plastique sans tout abîmer).

Phase 2 - l’attente : il y a de gros risques pour que la batterie ait un long parcours en bateau à effectuer et il faudra donc être patient.

Phase 3 - l’action : vous avez reçu tous les éléments et vous prenez une demi-heure pour changer cette satanée batterie qui ne tient plus qu’une demi-heure et s’arrête sans avertissement. Premier constat : même pour des outils en plastique il faut choisir quelque chose de qualité ! À la moitié du démontage l’outil casse et il faut donc continuer… comme on peut...

Il suffit ensuite de retirer des vis et du scotch protégeant des nappes, et d’ouvrir les connecteurs de nappe pour retirer lesdites nappes. Oui, mais là aussi il y a un problème : après 5 ans d’utilisation, que devient une petite pièce en plastique située à côté d’un radiateur ? Elle devient cassante ! J’ai donc pu retirer trois nappes sur quatre, mais ce n’est malheureusement pas suffisant pour faire fonctionner la tablette.

Phase 4 - la résignation : il va falloir changer de tablette. Bien entendu il serait possible de passer du temps à bidouiller le connecteur, mais pour ça il faut justement avoir du temps… En attendant, la tablette sera donc remisée dans un coin jusqu’à ce que la prochaine la remplace (il ne faut pas être exagérément optimiste sur le temps dont on va disposer pour réparer une tablette que l’on n’utilise plus).

Bilan de l’opération : les constructeurs sont vraiment très forts et produisent des objets qui restent réparables le temps de la garantie, mais qui le sont beaucoup plus difficilement par la suite. J’en avais d’ailleurs fait également l’expérience avec une souris pour gamer qui au bout d’un an et demi d’utilisation a dû être mise au rebut (après une réparation de fortune qui a tenu 6 mois). Bilan connexe : finalement, je n'ai vraiment pas besoin d'une tablette ! :-)

Profitez donc de votre magazine, son contenu se déprécie beaucoup moins rapidement que tout le matériel électronique que vous utilisez !

 

                                                                                                                                                                                 Tristan Colombo


Faites du jeu DUKE NUKEM 3D un outil sysadmin !

     ▪ Analysez le code du jeu libéré

     ▪ Personnalisez ses fonctionnalités

     ▪ Intégrez vos modifications


SOMMAIRE :


Actus & Humeur

p. 06    Je suis passé de Python à Go...


IA, Robotique & Science

p. 16    Créez un robot qui tweete pour vous

 
Système & Réseau

p. 28    Cache Maven partagé avec Nginx


Kernel & Bas niveau

p. 38    Duke Nukem 3D : un outil valgrind adaptéà la lecture d’appels systèmes
p. 52    Le test de Peter


Hack & Bidouille

p. 62    Surveillez un dossier de sources pour exécuter une commande automatiquement


Libs & Modules

p. 64    Blockchain : modifier un contrat immuable
p. 78    Utilisez DropBox depuis Python


Mobile & Web

p. 84    PHP-RBAC : gérez les droits de votre application à l’aide de rôles


Sécurité & Vulnérabilité

p. 90    L’art du reverse avec Radare2

 

EDITO :

  
   Les mois d'été sont des mois propices à la détente, au jeu et permettent également de s'atteler enfin à telle ou telle tâche remisée de longs mois durant dans une liste (todo list pour les anglophones) qui, si elle n'avait pas été numérique, serait recouverte d'une épaisse couche de poussière. Dehors, le soleil risque de brûler votre délicate peau d'informaticien, blanchie par les nombreuses heures passées à recevoir un délicat rayonnement de la part de votre (vos ?) moniteur(s). Il vaut donc mieux rester enfermé, bien à l'abri ! Mais ce sont les vacances… vous n'allez tout de même exécuter mécaniquement et inlassablement les mêmes tâches...

     Et si, exceptionnellement, pour une fois, vous joigniez l'utile à l'agréable en installant un jeu tout récent, sorti l'année dernière ? Ah non, attendez... On me dit que c'est un peu plus vieux… Plus de 20 ans ? Duke Nukem 3D a plus de 20 ans ? Pourtant je me souviens encore très bien de tous les niveaux, comme si c'était hier. Personne n'a pu oublier ce missile qui traverse l'écran alors que vous débutez le jeu sur la terrasse d'un bâtiment ni les différents passages secrets en passant au travers d'un écran de projection, d'un mur, etc. Eh bien soit, si Duke Nukem 3D a 20 ans, vous pourrez jouer à un vieux jeu, dépassé graphiquement, mais possédant un très bon gameplay ! Pour les nostalgiques, vous retrouverez des écrans que vous pensiez oubliés et pour les autres vous pourrez découvrir un très bon jeu « à l'ancienne » (ce qui est normal vu son âge vénérable…). Puis, lorsque vous serez lassés de tataner de l'alien, vous pourrez analyser son code, libéré en 2003 sous licence GPL, pour y intégrer toutes les modifications que vous souhaitez. Nous vous proposons de lister les appels systèmes d'une commande donnée à chaque fois qu'un ennemi est tué. Rien ne vous empêchera par la suite d'adapter le code pour lister et détruire des fichiers temporaires, des processus, ou toute autre opération fastidieuse à laquelle vous désirez ajouter un petit air de vacances :-)

     Et puisque nous sommes en période estivale de tests divers, pourquoi ne pas construire un petit bot Twitter ou faire du reverse engineering avec Radare2. C'est l'été que diable, amusez-vous ! Et si vous ne pouvez vraiment pas faire autrement que de sortir, vous pourrez toujours lire votre Linux Magazine. Pour l'occasion nous lui avons même ajouté une fonctionnalité spéciale : le ShadowMag 2.1 ! Bien orienté, vous pouvez utiliser votre magazine pour vous faire de l'ombre pendant la lecture ! Sachez également que, contrairement à certains de nos concurrents qui n'hésitent pas à déployer pléthore d'arguments racoleurs, nous avons choisi de ne pas intégrer de fonctionnalités fantaisistes de type BarbeukStarter 5.2 ou encore PaperPlane 0.2b. Nous pensons que le contenu du magazine, la qualité des articles publiés chaque mois sont des arguments suffisant pour faire de Linux Magazine VOTRE magazine. N'hésitez donc pas à nous écrire à lecteurs@gnulinuxmag.com pour nous faire part de vos remarques ou de vos propositions d'articles. Et même si vous trouvez le magazine sans défaut, dites-le-nous ! :-)

     Bonnes vacances, je vous retrouverai à la rentrée avec plaisir !

 

                                                                                                                                                                             Tristan Colombo

Recherchez des objets dans une collection d'images !

▪ Compilez manuellement (et correctement) Python
▪ Faites vos premiers pas avec le framework de deep learning Pytorch
▪ Associez des mots-clés à des images
▪ Recherchez le contenu d'un lot d'imagest


SOMMAIRE 

Actus & Humeur

p. 06 Le métier d’architecte en SI

IA, Robotique & Science 

p. 20 Des réseaux de neurones pour classer des images

Système & Réseau 

p. 32 Amazon <3 Linux

IoT & Embarqué

p. 38 FreeRTOS : application à la réalisation d’un analyseur de réseau numérique sur STM32

Hack & Bidouille 

p. 62 Installation sans écran de Slackware sur un Raspberry Pi 3

Libs & Modules 

p. 64 Réalisation d’un paquet Emacs : un navigateur de tickets GitHub

Mobile & Web 

p. 84 Django par la pratique

Sécurité & Vulnérabilité 

p. 90 Chez les Barbus – Java & Sécurité : authentification à deux étapes

EDITO:

Ça y est les vacances sont terminées et vous voilà lancé, plein d'énergie, à la conquête d'un nouveau projet et pour cela vous aurez besoin de lui… ce framework qui devrait remplir tout ce dont vous avez besoin dans ce projet, ce framework qui vous fera gagner un temps précieux, celui pour lequel vous vous êtes mis à baver devant votre écran en vous disant « il me le faut ! ». Alors vous vous lancez, plein de fougue, dans l'installation de cet outil… mais bien entendu, il y a toujours un léger décalage entre la présentation du site web et la mise en pratique…

Souvent la page web est en totale adéquation avec la difficulté d’installation et de mise en œuvre : une seule page html contenant quatre lignes pour l’installation et au grand maximum une cinquantaine de lignes de documentation de l’API (quand on ne vous renvoie pas directement sur les sources). Dans ce cas, on sait à quoi s’attendre et généralement on ne se fait pas trop d’illusions quant au temps qu’il faudra passer/perdre pour effectuer quelques tests qui généralement conduiront à l’abandon du framework puisque l’absence de documentation le rend très difficilement utilisable. 

Malheureusement, dans certains cas assez rares, on peut être en présence d’un projet particulièrement bien documenté, donnant accès à une description précise de l’API avec liens vers le code source et contenant de nombreux exemples sous la forme de tutoriels. Là il est normal d’être optimiste… mais lorsque l’on déchante, on tombe de bien plus haut ! Des éléments pouvant paraître anodins prennent des proportions gigantesques. Par exemple, si le projet requiert la dernière version de tel ou tel langage, non disponible dans le gestionnaire de paquets de votre distribution préférée, il va falloir l’installer. La documentation se bornera à cela : « Installez la dernière version du langage ». Le problème ici est que pour compiler un langage il faut disposer de certains outils et qu’il y a parfois de petites astuces de configuration à connaître ! Vous allez donc perdre deux jours (ou plus) avant même de pouvoir ne serait-ce que tenter d’installer le framework lui-même. Pourtant, dans la documentation cela semblait assez simple, la phrase était concise : « Installez la dernière version du langage »… (si les développeurs avaient pu le faire, ils auraient certainement ajouté « … et démxxxez-vous ! »). Ensuite, après bien des efforts, vous allez vouloir enfin tester le super exemple trouvé dans l’un des tutoriels de la documentation… et là encore il faudra y passer énormément de temps : on utilise des fonctions, des objets sans savoir exactement ce qu’ils font ni quels sont les paramètres à leur transmettre ! Certes l’exemple fonctionne, mais à quoi bon si l’on ne comprend pas ce que l’on fait et que l’on ne peut pas l’adapter ?

Écrire une documentation en apparence fournie ne suffit pas toujours, il faut également savoir expliquer, se mettre à la portée des utilisateurs qui ne vivent pas 24h/24 avec ce framework. C'est donc l'objet de l'un des articles que vous trouverez dans ce magazine et d'un autre côté, tant qu'il y aura ce genre de documentation il y aura du boulot pour GNU/Linux Magazine…;-)

Tristan Colombo


Détectez l’apparition d’objets « abandonnés » dans un flux vidéo !


Sommaire :

 

Actus & humeur

p.06   Quand un petit projet dépasse son concepteur...

 

IA, Robotique et Science

p.10   Détection d’objets abandonnés

 

Système & Réseau

p.34   L’hyperconvergence, Open Source

 

IoT & Embarqué

p.52   Mise en œuvre du protocole Modbus (RTU) sur WaRP7 via Qt5

 

Hack & Bidouille

p.68   Object Storage sur Raspberry Pi avec Docker

 

Libs & Modules

p.74   Créez et auto-corrigez vos QCM avec Auto Multiple Choice

 

Mobile & Web

p.82   Démystifier l’injection de dépendances en PHP

 

Sécurité & Vulnérabilité

p.92   Protections des partages NFS par Kerberos

 


Préface :

 

     Ce mois-ci, je voulais revenir avec vous sur la manière dont nous nous exprimons, nous informaticiens, pour communiquer, non plus avec des machines, mais entre nous. Si des règles existent pour les ordinateurs, de manière à ce que l'information leur parvienne sans possibilité de compréhension approximative (et donc sans interprétation possible), il en va de même du français et, comme le disait Boileau en son temps : « Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire arrivent aisément. ». Tout comme un disque n'est pas un cercle, un langage de programmation n'est pas un langage de description ! Encore récemment un étudiant me parlait du langage html comme d'un langage de programmation or, par définition, un langage de programmation contient des structures conditionnelles et des structures de boucles… qui sont absentes du html comme du LaTeX, etc. Il ne s'agit donc pas d'un langage de programmation, mais bien d'un langage de description, permettant de spécifier comment structurer un document, la nuance est importante !

     Un autre exemple, plus mathématique, déjà abordé en 2016 (GLMF n°191) : nombre de personnes ne font toujours pas la distinction entre les préfixes décimaux et binaires pour quantifier la mémoire (préfixes introduits dans la norme IEC 60027-2 de 1999, soit depuis bientôt 20 ans !). Lorsque l'on parle d'un « kilo » octet on pense à 1024 octets, mais d'après le Système International d'unités, il s'agit de 1000 octets. D'où les préfixes binaires qui sont des puissances de 2 et permettent de quantifier par exemple 1024 octets et 210 octets. Pour différencier les deux notations, on ajoute un « i » (kibi-octet, etc.) et les Kio, Mio, Gio ou Tio remplaceront les ko, Mo, Go ou To. Entre 1 Go (109 octets) et 1 Gio (230 octets), il y a tout de même 7% d'erreurs ! Pourtant, nous voyons encore tous les jours des ko, Mo, etc. traîner dans des articles ou des documents. Nous sommes confrontés ici à une problématique de résistance au changement. En tant qu'informaticiens, nous savons combien il est important (et difficile) de la combattre… à nous de montrer l'exemple !

     Pour finir, voici un autre exemple où cette fois-ci nombre d'informaticiens s'insurgent d'un mésusage de la langue française… qui en fait n'en est pas un. Je suis le premier à remplacer le terme « librairie » dans les articles par « bibliothèque ». À force d'être confronté au problème, je me suis demandé si, finalement, on ne pouvait pas accepter ce terme, si ce n'était pas moi qui faisais fausse route. Si l'on se questionne, dans une librairie comme dans une bibliothèque, quoi de plus normal que de trouver des livres ? Quelle est donc la différence entre ces deux mots ? Leur définition ne nous sera pas d'une grande utilité puisque l'on apprend qu'une bibliothèque est un « lieu où est rangée une collection de livres » (http://www.cnrtl.fr/definition/biblioth%C3%A8que)et qu'une librairie est définie, d'un point de vue littéraire, comme étant... une bibliothèque (http://www.cnrtl.fr/definition/librairie). Ça, c'est pour le sens premier (en général, une librairie a un sens marchand de nos jours, mais en bon français la « librairie du roi » désigne sa bibliothèque). En informatique, une bibliothèque est une « collection de programmes et de sous-programmes standards soigneusement testés, au moyen de laquelle on peut résoudre plusieurs types de problèmes ou de parties de problèmes ». Mais dans ce domaine, lorsque quelqu'un parle de librairie, on va tout de suite penser qu'il s'agit d'un anglicisme, d'une traduction fausse du terme anglais library ; nombre de personnes hurleront à l'hérésie. Pourtant, d'un point de vue purement formel, si A → B et que A = C, alors C → B... ce qui revient à dire que si « bibliothèque » → « collection de programmes » et que « bibliothèque » = « librairie », alors « librairie » → « collection de programmes ». Je pense donc qu'un peu de tolérance serait de mise dans ce domaine et je suis le premier à faire mon mea-culpa pour l'ensemble des auteurs que j'ai injustement corrigés.

     On pourrait trouver encore bien des pièges à détailler, mais l'on peut voir que dans un domaine déjà semé de bugs et de problèmes de compatibilité, il n'est pas toujours évident d'exprimer correctement et précisément sa pensée. À nous donc de faire un effort sur notre langage pour être sûrs de bien nous comprendre !

     Sur ce, je vous souhaite une bonne lecture et je vous retrouverai avec plaisir le mois prochain.

 Tristan Colombo

Envoi – Réception - Authentification

Maîtrisez la gestion avancée de SMS … sans vous ruiner !

  • Configurez votre modem USB 3G
  • Envoyez des SMS avec Gammu
  • Interfacez votre système avec Google Calendar
  • Gérez la réception de SMS
  • Mettez en place une authentification 2 factures


Sommaire :


Actus & humeur


p.06 Petite leçon fictive de social engineering

IA, Robotique et Science

p.12 Le code Phase-Out : l’autre code binaire tronqué

Système & Réseau

p.34 Un système de fichiers haute disponibilité avec GlusterFS !
p.32 Mise en place d’une IP virtuelle avec Corosync et Pacemaker
p.36 InfluxDB, Grafana et Glances, le monitoring qui brille


IoT & Embarqué

p.46 Présentation et utilisation de la carte STEVAL-3DP001 pour le pilotage des imprimantes 3D


Hack & Bidouille

p.58 Vous donnez des rendez-vous et on vous oublie ? Envoyez automatiquement des SMS de rappel !


Libs & Modules

p.74 Réaliser une API REST avec Go


Mobile & Web

p.82 Démystifier l’injection de dépendances en PHP

Sécurité & Vulnérabilité


p.92 La trilogie du reverse engineering

Édito :

      Python, on aime ou on n'aime pas, mais le langage ne laisse pas indifférent. Il y a les fans, ceux qui ne jurent que par ce langage et qui vont jusqu'à l'extrémisme en oubliant tous les autres langages qui ne sont pas pour autant à jeter à la poubelle et il y a les opposants farouches, eux aussi sombrant souvent dans l'extrémisme et dénigrant un « pseudo-langage » qui n'est même pas compilé et qui envahit de plus en plus les magazines et les articles sur le net.

     Python n'est certes pas compilé, mais il permet de développer rapidement, sans se préoccuper de la gestion de la mémoire. D'un autre côté, suivant les développements, son aspect de langage semi-interprété est pénalisant, car entraînant un gaspillage de mémoire et une lenteur des programmes. Alors, puisque nous ne pourrons départager les « pros » des « antis », essayons de comprendre avec les outils qui sont à notre disposition pourquoi on parle tant de Python. Utilisons par exemple les tendances de questions sur StackOverflow :

edito-lm209.png

On peut constater que Python vient de dépasser Java et n'est plus devancé que par JavaScript. Ceci s'explique par le nombre de sites web contenant du JavaScript, mais montre que malgré les développements d'applications Android en Java, les questions sont plus nombreuses sur Python. Les mauvaises langues pourront bien sûr arguer du fait que s'il y a beaucoup de questions, c'est que le langage n'est pas clair… passons et retenons seulement la croissance imbattable sur les deux dernières années.

Pour confirmer cela, penchons-nous sur d'autres données. Sur Google Trends, les recherches comme « python » ou « java » sont parasitées par d'autres significations que des langages de programmation, mais le projet PYPL (PopularitY of Programming Language sur http://pypl.github.io/PYPL.html) l'utilise néanmoins en se basant sur les recherches de tutoriels. Je vous invite à consulter le site et à utiliser les langages qui vous intéressent, pour moi ce seront les mêmes que les précédents.

Cette fois Python ne dépasse pas Java, mais sa croissance de 9,5 % sur les dix dernières années est là encore remarquable et l'étude des données fournies par GitHub (http://githut.info/) fournira là encore la même tendance.

Ces informations montrent donc qu'il y a un engouement de plus en plus fort pour ce langage et qu'on le veuille ou non, il faudra le connaître un minimum pour comprendre, pouvoir interagir avec les futurs développements. Donc oui, Python est de plus en plus utilisé, et vous découvrirez même dans ce numéro comment vous en servir pour envoyer/recevoir des SMS, interagir avec Google Calendar et mettre en place une authentification deux facteurs, mais dans GNU/Linux Magazine nous n'en oublions pas pour autant les autres langages et vous pourrez ainsi trouver par exemple dans ce numéro également du C et du Go (oui, le bon dernier de toutes les tendances si l'on ne tient pas compte des langages « exotiques »).

Surtout, n'oubliez pas que ce n'est pas parce qu’un langage est populaire qu'il est le meilleur. Le meilleur langage est celui le plus adapté à la tâche que vous devez réaliser ! Sur ce, bonne lecture !



                                                                                                                                                                                    Tristan Colombo

La chasse aux pirates est ouverte :

Mettez en place votre premier Honeypot !

  • Comprenez le fonctionnement de ces pièges
  • Détectez des attaques en bruteforce avec Cowrie
  • Analysez les logs pour comprendre les attaques
  • Améliorez votre honeypot avec Glastopf

SOMMAIRE :

Actus & Humeur

p. 06   Honeypot qui mal y pense

IA, Robotique & Science

p. 18   Au cœur de la VM Pharo

Système & Réseau

p. 24   LinuxKit ou le meilleur des containers et des UniKernels
p. 32   Déployer un environnement de déploiement avec debian-installer, Ansible et Git
p. 44   Sécurisez vos données par LVM et RAID

IoT & Embarqué

p. 52   Un environnement exécutif visant la compatibilité POSIX : NuttX pour contrôler un analyseur de réseau à base de STM32

Hack & Bidouille

p. 68   Intégrez vos scripts au bureau et gérez les URI

Libs & Modules

p. 72   Introduction à gstreamer 1.0

Sécurité & Vulnérabilité

p. 86   Utilisez et étendez PhotoRec pour récupérer vos données perdues

EDITO :

Jai installé un Windows

Oui, vous avez bien lu et je nen suis pas fier : jai installé un Windows !

Pourquoi, me demanderez-vous. Eh bien cédant à la pression de mes enfants souhaitant jouer aux jeux de dernière génération tels que StarCraft ou Age of Empires 2, je me suis dit que c’était sans doute la solution la plus simple et que jallais repasser leur ordinateur en double boot. Il est vrai que ces jeux fonctionnent très bien sous Wine, mais pas StarCraft remastered et il y a des problèmes de réseau avec Age of Empires 2 (de plus la version remastered ne devrait pas tarder à sortir et ne fonctionnera certainement pas elle non plus). Je me suis donc dit que lon n’était guère regardant sur le système dexploitation dune console de jeu et pourquoi ne pas considérer la partition Windows comme telle ? Jai donc pris mon courage à deux mains et jai installé Windows, certes pas l'un des plus récents, un Windows 7 qui était fourni avec les machines.

Quel moment agréable ce fut de se retrouver face à ce système si simple à installer, à devoir rechercher sur le Web les différents pilotes qui n’étaient jamais disponibles dans la bonne version, à voir ces ordinateurs qui tournaient pourtant parfaitement sous Debian se mettre à ramer atrocement, à devoir rebooter le système à de multiples reprises, un vrai bonheur ! Ce sont finalement des choses que lon oublie vite, des traumatismes que lon enfouit au fin fond de notre subconscient et qui ressurgissent tout à coup. Même pour charger une simple page web ça rame ! Il faut le voir pour le croire ! Et puis une installation qui sinterrompt parce que le système a décidé de se mettre à jour et veut rebooter mais cest qui le patron ? Oh !

Après quelques heures, linstallation est fonctionnelle, les jeux sont installés et je vais pouvoir passer à linstallation de la partition GNU/Linux. Par acquis de conscience, je teste Minecraft. Ah, tiens, dans la version Windows on peut voir par transparence la présence des donjons. Cest bien pratique ! Je me dis donc que pour des enfants qui nont jamais connu que Linux, il peut être intéressant quils soient confrontés au côté obscur de la force, les laisser quelques jours pour quils se fassent eux-mêmes une opinion. Finalement, après cinq minutes d'utilisation, j'ai eu droit à un « Papa, tu peux me remettre le système qui fonctionne ? ». Je suis bon pour réinstaller une Debian. Ce sera certainement moins long de configurer proprement Wine que dutiliser ce, ce... , ce « système » !

Il fallait le faire, et je lai fait, jai installé Windows pensant naïvement que cela solutionnerait les problèmes de jeux et en fait pas du tout. Bien sûr, sur une machine récente, dopée à la RAM et au CPU, nul doute que tout se serait déroulé correctement (et encore est-ce vraiment certain ?). Bref, nous avons tous choisi GNU/Linux et si vous avez oublié pourquoi, refaites donc un tour du côté de Windows, vous verrez que nous navons pas tort Et j'ai gardé le meilleur pour la fin : simplement en passant de Jessie à Stretch et en installant Wine staging tout fonctionne mieux que sous Windows !

Je vous souhaite une bonne fin d'année et je vous retrouverai avec plaisir pour le prochain numéro !

 

Tristan Colombo

Acheter ce pack


Référence : PPAP_LM_17

69,00 €

86,90 €

Nouveaux produits