Tout (fr)

  • Migrer Windows 10 d'un disque BIOS/MBR, vers un SSD en mode UEFI/GPT avec des logiciels libres (Journaux LinuxFR)

    Sommaire

    Introduction

    Ce tutoriel vous guide pas à pas pour migrer votre installation de
    Windows qui est actuellement sur un disque dur de votre PC vers un
    nouveau disque, en l'occurrence un SSD. A vrai dire, vous pouvez aussi
    bien migrer vers un autre HDD.

    La spécificité de ce tutoriel est qu'elle utilise les outils fournis par
    Microsoft avec Windows ainsi que des logiciels libres (Clonezilla
    principalement, mais si quelque chose devait mal tourner vous pouvez avoir
    besoin d'utiliser fdisk, gdisk ou testdisk pour ne citer qu'eux). Quand
    j'ai voulu faire cette migration je n'ai pas trouvé de tutoriel
    expliquant de bout en bout comment faire cette migration juste avec les
    outils de Microsoft et des logiciels libres.

    Typiquement, vous pouvez avoir envie/besoin de faire cela car vous avez
    acheté un nouveau disque pour remplacer l'ancien (par exemple car
    l'ancien montre des signes de faiblesse, ou vous voulez améliorer la
    réactivité de votre système).

    En plus de la migration du système d'exploitation, ce tutoriel vous
    explique comment passer d'un démarrage en mode BIOS/MBR à un démarrage
    en mode UEFI/GPT.

    Succinctement la démarche est la suivante, d'abord installer le nouveau
    disque dans le PC, et initialiser la table de partition selon les normes
    Microsoft. Puis cloner/dupliquer la partition contenant le système
    d'exploitation à l'aide de Clonezilla. Ensuite et avant de redémarrer
    dans le clone de Windows sur le SSD, faire quelques modifications dans
    le registre pour que la lettre de lecteur C: pointe vers la bonne
    partition et éventuellement modifier le mode SATA en AHCI si vous le
    modifiez aussi dans le UEFI/BIOS. Après cela, on va préparer la
    partition système EFI/ESP pour que le PC puisse démarrer dessus et qu'il
    démarre sur le Windows du SSD. Finalement, une fois dans le Windows du
    SSD, on va réactiver l'"environnement de récupération de Windows".

    Mise en garde : Faites une sauvegarde de vos données avant toute
    opération. Personne n'est à l'abri d'une mauvaise manipulation ou d'une
    erreur.

    Prérequis

    Compétences

    Niveau de difficulté : Difficile.

    Vous devez être à l'aise au niveau de l'utilisation de la ligne de
    commande dans Windows, mais aussi assez à l'aise pour gérer les
    partitions de votre disque. Savoir modifier le paramétrage de votre
    Firmware UEFI/BIOS et aussi nécessaire. Ce tutoriel guide pas à pas pour
    la majorité des opérations. Certaines n'ont pas été détaillées par souci
    de simplicité et d'efficacité.

    Matériel

    Le PC où vous voulez installer le SSD. Il faut qu'il soit en état de
    marche. De plus il doit avoir un firmware UEFI. S'il n'a que un BIOS
    standard, sans UEFI, ce tutoriel n'est pas adapté.

    Clé(s) USB ou plusieurs CD/DVD sur lequel vous aurez mis
    Clonezilla, System rescue
    CD
    et un environnement de démarrage
    Windows PE, ou Windows RE, ou le DVD/Disque d'installation de Windows.

    Le disque SSD (testé avec Samsung SSD 860 EVO 250GB). Il doit avoir une
    taille suffisante pour contenir votre partition de Windows. Dans tous
    les cas, la taille de la partition qui contiendra Windows sur le SSD
    doit être au moins égale à la taille de la partition Windows du HDD que
    vous voulez cloner. Au besoin, pour remplir ce critère, réduisez la
    taille de votre partition Windows avec le gestionnaire de disque de
    Windows par exemple (ou un autre outil de gestion de partition, comme
    gparted, sur le System Rescue CD). Cherchez sur internet si vous ne
    savez pas comment faire.

    Logiciel

    Windows 10 installé (en version 64 bits) (testé avec Win10 v1709)

    Windows 10 PE ou support d'installation de Windows 10 (clé USB ou DVD) -
    En Version 64 bits (testé avec un support d'installation de Win10 v1804)

    System rescue CD (version 5.2.2 par
    exemple)

    Clonezilla installé sur une clé ou un CD.
    Bien vérifier avant que votre système arrive à démarrer dessus. (Testé
    avec Clonezilla 2.5.5-38)

    Nomenclature

    SSD : désigne le nouveau SSD

    HDD : désigne votre disque actuel, sur lequel est installé Windows

    WinPE : un environnement de démarrage Windows PE, ou Windows RE, ou le
    DVD/Disque d'installation de Windows. Il doit être sur un support
    amovible (USB, CD ou DVD)

    S: La lettre de lecteur affectée à la partition Système EFI qui sera sur
    le nouveau SSD (parfois appelée ESP, EFI_System_Partition ou encore
    SYSTEM, ou EFI)

    N: Le clone de Windows, sur le SSD

    O: Le Windows cloné, sur le HDD

    C: La partition dans laquelle est installée Windows, lorsqu'on est dans
    Windows (que ce soit le windows cloné, ou le clone)

    Les commandes doivent être lancées en tant qu'administrateur.

    Procédure de base

    • Fixer et brancher le SSD dans l’ordinateur

    • Désactiver Windows FastStart (cf votre moteur de recherche préféré)

    • Initialiser et partitionner le disque à l'aide de Windows

      • Démarrer sur le Windows installé ou WinPE
      • Pour initialiser le disque, d'abord créer une table de partition, puis partitionner le disque. Pour ce faire :
        • Suivre les instructions de partitionnement UEFI/GPT selon Microsoft. Ci-dessous mon exemple, mais peut-être avez-vous besoin d'une partition "recovery" aussi, ou votre configuration nécessite quelques aménagements. Dans ce cas, voir les instructions de Microsoft et adapter pour vos besoins.
        • Par exemple: une partition EFI de 260Mo, une partition Microsoft Reserved (MSR) de 16Mo, une partition pour Windows (taille au moins égale à la taille de la partition de Windows à cloner). Pour informations, dans diskpart, les tailles que vous donnez en MB/Mo sont en réalité des MiB/Mio (220 = 10242 octets).
          • Ouvrir une invite de commande en mode administrateur et lancer diskpart . Et une fois dans diskpart :
            • list disk pour lister les disques et connaître le n° du SSD.
            • select disk # avec le numéro du SSD à la place de #
            • clean Supprime le contenu du disque / l'initialise
            • convert gpt Définit que le disque aura une table de partition GPT
            • create partition efi size=260 Crée une partition EFI de 260MiB
            • format quick fs=fat32 label="System" Formater la partition EFI au format FAT32
            • assign letter="S" Lui donner la lettre S
            • create partition msr size=16 Créer une partition Microsoft Reserved de 16MiB
            • create partition primary Créer la partition pour Windows (l'équivalent du C: )
            • format quick fs=ntfs label="Windows" Formater la partition pour Windows au format NTFS
            • assign letter="N" Lui donner la lettre N
            • list volume Liste les volumes. Permet de voir la table de partition.
            • exit Quitte diskpart
    • Cloner le Windows installé sur le HDD. Ceci sera fait à l'aide de
      Clonezilla

      • Redémarrer dans Clonezilla
      • Une fois dans clonezilla, et si vous êtes confortable avec les lignes de commande Linux, éventuellement supprimer de la partition Windows du HDD les fichiers pagefile.sys , hyberfil.sys (désactiver windows faststart avant), swapfile.sys .
      • Cloner la partition Windows du HDD vers le SSD (de préférence, partition de même taille, et de toutes façons, la partition de destination doit être plus grande que la source. Si ce n'est pas le cas, réduisez d'abord la taille de votre partition Windows depuis Windows). Dans clonezilla, utiliser le mode Partition vers Partition, et en mode Export. Utiliser les options -e1 auto (automatically adjust file system geometry for a ntfs boot partition if exists) -e2 (sfdisk uses CHS of hard drive from EDD (for non grub loader) -r (resize filesystem to fit partition size of target) -m (do NOT clone boot loader) -v (verbose)
      • Optionnellement cacher la partition contenant le windows source de la table de partition du disque source (si vous ne savez pas à quoi ça sert, passez votre chemin). Pour cela modifier le type de partition de la partition NTFS de windows (en principe, NTFS a un id de « 7 ». On peut utiliser id 17 pour la partition cachée : 17 correspond à « IFS Hidden »). Utiliser cfdisk ou fdisk pour faire ce changement (ce sont des programmes linux).
    • Dans le Firmware UEFI (ou BIOS-UEFI), on peut en profiter pour passer
      du mode SATA "IDE" vers "AHCI". Windows n'aime pas ce changement et
      il faut donc faire une opération dans le registre qui est
      détaillée ci-dessous. Tant que vous ne le faites pas, vous aurez un
      écran de plantage bleu de windows au démarrage (BSOD).

    • Si vous voulez être sûr de ne pas faire de bêtise dans le Windows que
      vous venez de cloner, je vous conseille d'éteindre l’ordinateur & de
      débrancher l’ancien disque. Ainsi vous ne risquez pas de modifier le
      mauvais fichier de registre (en l'occurrence celui de votre Windows
      sur le HDD)

    • Effectuer quelques opérations sur le Windows de destination (celui
      sur le SSD) avant qu'on ne démarre dessus. En particulier corriger le
      registre pour affecter la lettre de lecteur C: à la bonne partition,
      et si le paramétrage du Firmware UEFI (BIOS-UEFI) a été modifié pour
      passer de SATA Mode PCI vers AHCI, on va aussi faire ce changement
      pour que ca fonctionne.

      • Redémarrer dans WinPE (en Mode UEFI, pas MBR !)
        • Tout d'abord déterminer la lettre de lecteur affectée au clone de Windows, celui qui est sur le SSD. Ou, s'il n'y a pas de lettre affectée, lui en donner une, par exemple N: (lettre utilisée dans les exemples qui suivent)
          • Pour cela, lancer dans diskpart
            • list volume
              Ce qui retourne la liste des volumes avec la lettre de lecteur qui a été affectée à chacun.
          • Si aucune lettre de lecteur n'est affectée, il faut alors lui en affecter une. Pour cela, lancer dans diskpart
            • select volume # (avec # étant le numéro du volume qui contient le nouveau windows)
            • assign letter=N
              S'il n'est pas possible d'utiliser select volume alors faire comme ceci
            • list disk
            • select disk # (# étant le numéro affecté au SSD)
            • list partition
            • select partition # (# étant le numéro affecté à la partition de Windows sur le SSD, probablement 3)
            • assign letter=N
        • Faire un CHKDSK /F sur la lettre du nouveau Win
        • Pour que la partition C: utilisée par Windows soit celle du SSD et pas celle de l’ancien disque, modifier une clé de registre du nouveau Windows :
          • Lancer REGEDIT et dans le registre HKEY_LOCAL_MACHINE monter la ruche N:\Windows\System32\Config\SYSTEM . Lui donner le nom "NewWin" On s’intéresse à HKEY_LOCAL_MACHINE\NewWin\MountedDevices . Ce sont là les valeurs qui sont dans le registre " HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices " lorsqu'on est dans l'installation de Windows.
            • Dans HKEY_LOCAL_MACHINE\NewWin\MountedDevices modifier la lettre de lecteur C: en renommant \DosDevices\C: par \DosDevices\O: (car la valeur fait référence à la partition de l'ancien Windows sur le HDD et on ne veut pas, en démarrant, utiliser cette partition mais celle de son clone qui est sur le SSD). Ainsi, lorsqu'on démarrera dans le nouveau Windows, la partition contenant le Windows sur le HDD aura la lettre O:, et la partition contenant le Windows sur le SSD aura la lettre C:
            • Créer une nouvelle valeur binaire nommée \DosDevices\C: et lui donner comme contenu celui de \DosDevices\N: qui est renseignée dans le registre WinPE, c'est-à-dire là HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices ( C: étant la lettre qu'utilisait le Windows du HDD comme partition où il y a le dossier \Windows )
            • ATTENTION: Bien vérifier que la copie a fonctionné et qu'il y a les bonnes valeurs, car dans mes essais, j'ai du m'y reprendre à 2 fois car le 1er "coller" ne collait pas ce que je voulais.
            • En principe c'est tout. Mais d'après certaines sources, il y aurait une clé \\?\Volume{GUID} ayant le même contenu que le \DosDevices\O: qu’on vient de modifier. Chez moi ce n'était pas le cas. Si vous avez une telle valeur, alors il faut lui donner le contenu de \DosDevices\N: depuis le registre WinPE
        • Si en même temps que la migration on veut aussi passer du mode SATA IDE vers AHCI alors il faut encore faire ceci. Cela a été repris du site tomshardware.co.uk
          • Toujours dans REGEDIT avec la ruche montée en HKEY_LOCAL_MACHINE\NewWin
          • Aller à HKEY_LOCAL_MACHINE\NewWin\ControlSet000\Services\storahci\StartOverride
          • Changer la valeur DWORD de 3 à 0.
          • Au redémarrage, si ça n'a pas été fait, changer la paramétrage du contrôleur SATA de IDE à AHCI. Au redémarrage, Windows devrait directement démarrer correctement et sans plantage (BSOD).
        • Rendre le disque bootable en installant les outils EFI de microsoft et configurant le Magasin BCD (BCD Store)
          • D'abord assigner une lettre de lecteur à la partition ESP
            • MOUNTVOL S: /S
              Si ca n'a pas fonctionné, faire comme ceci dans diskpart
            • list disk
            • select disk # (# est le numero du SSD retourné par list disk)
            • list partition
            • select partition # (# est probablement 1)
            • assign letter=S
          • Puis lancer bcdboot N:\windows /l fr-fr /s S: /f UEFI
            • N:\Windows est le répertoire contenant le clone de Windows sur le SSD)
            • S: = partition EFI
    • Redémarrer, et avant le lancement de Windows vérifier votre UEFI
      (ou BIOS-UEFI). Il faut qu'il soit configuré pour démarrer par défaut
      en mode UEFI et pas en mode BIOS. Penser aussi à corriger le
      paramétrage SATA si cela a été modifié dans le registre de Windows.

      Le paramétrage du démarrage avec
      bcdboot N:\windows /l fr-fr /s S: /f UEFI a normalement créé le
      magasin BCD, mis tous les fichiers EFI sur la partition SYSTEME (ESP,
      partiton EFI, la 1ère du SSD) et dit au firmware UEFI qu'il doit
      automatiquement démarrer avec le gestionnaire de démarrage
      (boot manager) de Windows.

    • Une fois qu’on a réussi à démarrer dans la copie de Windows

      • Réactiver le "FastBoot"
      • Réactiver l'environnement de récupération de Windows en lançant, depuis une ligne de commande avec les droits administrateur, la commande reagentc.exe /enable . Vérifier avec reagentc.exe /info . Et s'il y a une erreur essayer avec reagentc.exe /enable /setreimage /path C:\Recovery\WindowsREC:\Recovery\WindowsRE est le dossier où se trouve le fichier Winre.wim
      • Vérifier que tout est en ordre. Eventuellement donner un nouveau nom à votre partition C: (pour la différencier de celle sur le HDD) en lançant: LABEL [drive:][label]
      • Redémarrer encore une fois en laissant le processus de démarrage se faire tout seul pour vérifier que tout est ok.
    • Réinsérer l'ancien disque dur.

    • Normalement, il devrait être possible de redémarrer dans l'ancien
      Windows, du moment que vous savez comment booter en MBR, et sous
      réserve de ne pas avoir modifié le mode SATA dans le UEFI/BIOS. SI
      c'est le cas, vous pouvez envisager de modifier le registre du
      Windows du HDD, ou de modifier le paramétrage du UEFI/BIOS.

      Si vous avez aussi Linux d'installé sur le HDD, il devrait toujours
      être possible de le démarrer en mode BIOS

    • On peut diminuer/augmenter la taille de la partition C: du SSD (Pour
      un SSD TLC ou VNAND, on peut par exemple laisser de l’espace libre à
      la fin ~10 % de la capacité du disque d'après le logiciel Samsung
      Magician, pour un SSD 860 EVO)

    • En principe, puisqu’on boot en EFI on peut enlever sur le clone
      Windows sur le SSD les fichiers \bootmgr et \Boot\BCD puisque ce
      sont ceux qui étaient utilisés pour un boot en mode BIOS/MBR et que
      désormais on est en EFI. Vous pouvez d'abord les renommer et vérifier
      que ca ne change rien au prochain boot, plutôt que de les supprimer
      tout de suite.

    Quelques pistes si ça ne fonctionne pas…

    • Faire un chkdsk sur la nouvelle partition
    • Recréer le bootsector du NTFS avec testdisk (dispo sur System Rescue CD, mais peut être aussi dans Clonezilla ? Je n'ai pas vérifié)
    • Vérifier le BCD:
    • Vérifier que la partition EFI est bien initialisée (présence des fichiers \EFI , \EFI\Boot\ , \EFI\Microsoft\ …) Si ce n'est pas le cas, il y a eu un problème avec bcdboot N:\windows /l fr-fr /s S: /f UEFI
    • Vérifier le boot manager du bios (démarrage en UEFI ou MBR ? Gestionnaire de démarrage par défaut ? Présence du gestionnaire de démarrage de Windows ?)
    • A priori, pas utile : Commandes à lancer dans WinPE
      • Pour recréer le boot sector de la partition systeme (EFI): bootrec /fixboot
      • Pour chercher les OS sur le disque et les mettre dans le bootloader bootrec /scanos
    • Quelques commandes de bcdedit pour modiser la valeur de certains éléments du magasin BCD. Inutile car le BCD Store qui est utilisé lorsqu'on démarre en mode EFI n'est pas le même que celui utilisé dans un démarrage en mode MBR. Donc, pas besoin de chercher à modifier le BCD. Je garde pour info : les lettres sont celles telles que définies dans le système où on est (WinPE par ex). Doc BCDEDIT
      • bcdedit /set {bootmgr} device \Device\HarddiskVolume1
      • bcdedit /set {default} device \Device\HarddiskVolume3
      • bcdedit /set {default} osdevice \Device\HarddiskVolume3
      • Ou à la place de \Device\HarddiskVolume1 mettre les lettres de lecteur :
      • bcdedit /set {bootmgr} device partition=S:
      • bcdedit /set {default} device partition=C:
      • bcdedit /set {default} osdevice partition=C:

    Documentation, pour aller plus loin…

    A propos du EFI/UEFI:

    A propos de l'entrée MountedDevices du registre:
    http://diddy.boot-land.net/firadisk/files/mounteddevices.htm

    Si on veut y accéder, par défaut les fichiers du BCD sont cachés. Pour
    les rendre visibles:

    • attrib bcd -s -h -r
    • mv bcd bcd.bak
    • bootrec /rebuildbcd

    Documentation bcdedit:

    MBR Partition ID

    A propos des disk ID (=Disk signatures):

    Si besoin de supprimer du registre les entrées de disques qui ne sont
    pas connectés ou sans lettre assignée lancer: mountvol /R. Ce
    programme permet aussi de lister les lettres de volumes avec leur GUID
    (GUID pour ce système uniquement, il n’est pas stocké dans la partition,
    ni ailleurs sur le disque, il est assigné par windows pour un couple
    (signature de disque/partition offset) dans une instance de windows
    alors que dans une autre instance de windows la même partition sur le
    même disque aura ce GUID différent)

    Changer le label du volume: commande LABEL [drive:][label]

    Historique de révisions

    • Vous trouverez la dernière version de ce tutoriel sur ma page perso
      de tutoriels informatique
      .
      Vous y trouverez aussi la version HTML, PDF et TXT.

    • 2018-06-17 : Ajout d'une note indiquant que ce tutoriel utilise des
      logiciels libres

    • 2018-06-11 : Correction de la forme et de fautes d'orthographe

    • 2018-05-28

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Sortie de Qt 5.8 RC, qui apporte son lot de corrections avant une version finale en janvier (Développez.com)
  • Livre O'Reilly en téléchargement gratuit légal (Journaux LinuxFR)

    Journal bookmark : O'Reilly propose de télécharger gratuitement une centaine d'ouvrages, de tous domaines : IoT, Sécurité, Programmation, Management…

    C'est par ici : http://www.oreilly.com/free/reports.html

    Lire les commentaires

  • Apple se lance sur Twitter (MacBidouille)

    Apple continue à s'ouvrir au monde en communiquant de plus en plus que ce soit via ses dirigeants, ou maintenant via les réseaux sociaux. C'est la nouvelle orientation décidée par l'équipe dirigeante et elle a franchi jeudi un nouveau pas en lançant un compte Twitter "Apple Support".

    Le succès a été en rendez-vous et il est déjà suivi par 146000 personnes et Apple a déjà posté plus de 4000 messages, soit près d'une centaine par heure.

    Il est intéressant de voir que la société cherche à modifier son image en devenant plus proche de ses clients, plus "cool".

  • Internet des objets l'ESP8266 et ma porte de garage (Dépêches LinuxFR)

    Dans ma maison, j'ai un garage dont la porte est motorisée ; avec une petite télécommande (433MHz) on peut l' ouvrir ou la fermer depuis la voiture, ce qui est bien pratique en hiver. Mais il y a deux problèmes : le premier c'est que la télécommande fonctionne aléatoirement (ce qui n'est pas pratique), le second c'est la sécurité du 433MHz.

    Ayant un Arduino UNO qui traîne dans un coin, ma maison étant domotisée (serveur fait-maison tournant sur du Python, du PHP, des scripts shell et le tout reposant sur xpl-perl) je me suis dit que le serveur domotique pourrait piloter la porte.
    Il peut déjà lire l'état de la porte du garage avec un capteur d'ouverture.

    Le moteur de la porte fournit un contact sec. Il suffit de ponter deux fils raccordés à un bornier pour actionner la porte : ouvrir si elle est fermée ou fermer si elle est ouverte.

    Avec un Arduino et un relais on peut actionner sans problème la porte du garage. Je code vite fait un petit bout de script qui me permet d'activer un relais 1.5 seconde.
    Le problème : il faut donner les ordres par un câble USB à l'Arduino donc je pars en recherche d'une carte WI-FI pour l'Arduino et c'est là que je tombe sur l'ESP8266.

    Sommaire

    Présentation de l'ESP8266

    L'ESP8266 est un extraterrestre apparu dernièrement (vers 2014 me semble-t-il).
    C'est une toute petite carte (de la taille d'une pièce de 2€ approximativement) qui contient un processeur tournant à 80MHz, une puce WI-FI avec son antenne, un port série et deux gpio (pour la version ESP-01) ; il existe d'autres versions qui peuvent contenir beaucoup plus de gpio mais elles sont légèrement plus chères et plus grandes. Bref, dans notre cas, la version ESP-01 coûte dans les 5€ environ.

    ESP8266 version ESP-01

    Il est semble-t-il opensource, compatible Arduino, vous pouvez le reflasher à votre guise, lui changer le bootloader. Vous pouvez lui faire tourner un firmware à base de Lua, ou de micro-Python (expérimental). Par défaut il se programme avec l'IDE de l'Arduino (attention à utiliser la dernière version depuis le site d'arduino). Vous pouvez même si vous le voulez ne pas le programmer et le configurer avec des commandes AT.

    Premier essai avec l'ESP-01 (ESP8266)

    Donc après avoir passer de longues soirées à chercher sur Internet (il y a tellement de possibilités) comment cela fonctionnait, je me décide à en commander un (comme je suis en Suisse j'en ai trouvé chez Chipandlove), pour 8,5 CHF, je ne prends pas beaucoup de risques.

    La bête arrive le lendemain par la poste, le soir je le déballe et je commence à jouer avec.

    Premier constat, l'Arduino fonctionne en 5V et l'ESP en 3.3V, c'est chiant il va falloir gérer une double alim (la sortie 3.3v de l'Arduino ne fournit que 30mA et l'ESP a besoin de 300mA environ), donc un montage avec un LF33CV fera l'affaire (régulateur de 3.3V).

    Premier montage échec

    Je modifie mon programme Arduino, à la mise sous tension il programme l'ESP avec une série de commande AT, puis il écoute ce qu'il vient depuis l'ESP. Quand je fais une requête via le WI-FI sur l'ESP, il émet bien quelque chose sur l'Arduino mais ça ne marche pas toujours, peu concluant, surtout que le tout pour être opérationnel prend pas mal de temps (le temps que l'Arduino programme l'ESP avec les commandes AT).

    Deuxième essai concluant

    On garde le même câblage mais je remets mon logiciel d'origine dans l'Arduino, il ne s'occupe plus de l'ESP. Je programme avec l'IDE de l'Arduino, l'ESP je pars des exemples fournis. Quand je fais une requête http://IP/garage il envoie sur le port série la commande d'ouverture que l'Arduino exécute. Youpi ça marche.

    Montage commande garage avec arduino

    Génial, mais l'Arduino ne sert à rien vu que l'ESP-01 a deux GPIO il pourrait bien piloter lui-même le garage.

    Montage définitif

    Donc je supprime l'Arduino, je modifie le soft de l'ESP pour qu'il commande lui-même le garage

    Montage définitif

    Problèmes techniques

    L'ESP a au démarrage ses port gpio à +3.3V si vous l'utilisez pour la commande à niveau logique haut (+3.3V). Il suffirait d'une coupure de courant pour ouvrir le garage (sympa la sécurité). Donc j'utilise une commande inverse (mise à la masse).

    L'ESP ne peut pas démarrer si la gpio est à la masse (même au travers d'une résistance et d'une diode (Base-Emetteur d'un transistor par exemple)) de ce fait nous allons utiliser un optocoupleur et la patte de masse de l'entrée de l'opto sera reliée à notre gpio. La patte d'entrée de l'opto étant reliée au travers d'une résistance au 3.3v. Comme ça lorsque l'ESP démarre la gpio est reliée au +3.3V

    Schéma technique

    Je vous ai mis le schéma technique, j'utilise un opto-triac parce que j'avais pas d'opto-coupleur en stock mais un opto-coupleur fera bien l'affaire.

    Comme alimentation j'utilise une alim USB de 5V 2A. Pour alimenter l'ESP j'utilise un régulateur LF33CV qui me sort du +3.3V 500mA. Attention si vous faîtes votre 3.3V depuis une alim de 12V par exemple veuillez prévoir un refroidissement pour le LF33CV.

    Schéma

    Je travaille en +5V parce que j'ai une carte relais de +5V mais rien ne vous empêche d'utiliser d'autres relais sous d'autres tensions. Attention si vous attaquez un relais en direct n'oubliez pas de le piloter depuis un transistor (l'opto ne supportera pas le courant consommé par le relais) et de mettre une diode inverse sur votre relais pour éviter de bousiller votre électronique.

    Programme ESP-01

    Voici le programme que j'ai injecté dans l'ESP depuis l'IDE de l'Arduino (attention prenez la dernière version sur le site, celle contenue dans les dépôts d'ubuntu 14.04 est trop vieille).

    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>
    #include <ESP8266WebServer.h>
    #include <ESP8266mDNS.h>
    
    const char* ssid = "lereseauwifi";
    const char* password = "lacleewpa2";
    const int relais = 2;
    MDNSResponder mdns;
    
    ESP8266WebServer server(80);
    
    const int led = 13;
    
    void handleRoot() {
      digitalWrite(led, 1);
      server.send(200, "text/plain", "hello from esp8266!");
      digitalWrite(led, 0);
    }
    
    void handleNotFound(){
      digitalWrite(led, 1);
      String message = "File Not Found\n\n";
      message += "URI: ";
      message += server.uri();
      message += "\nMethod: ";
      message += (server.method() == HTTP_GET)?"GET":"POST";
      message += "\nArguments: ";
      message += server.args();
      message += "\n";
      for (uint8_t i=0; i<server.args(); i++){
        message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
      }
      server.send(404, "text/plain", message);
      digitalWrite(led, 0);
      Serial.println("10");
    }
    
    void setup(void){
      pinMode(led, OUTPUT);
      pinMode(relais, OUTPUT);
      digitalWrite(relais, 1);
      digitalWrite(led, 0);
      Serial.begin(9600);
      WiFi.begin(ssid, password);
      Serial.println("");
    
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
      Serial.print("Connected to ");
      Serial.println(ssid);
      Serial.print("IP address: ");
      Serial.println(WiFi.localIP());
    
      if (mdns.begin("esp8266", WiFi.localIP())) {
        Serial.println("MDNS responder started");
      }
    
      server.on("/", handleRoot);
    
      server.on("/garage", [](){
        server.send(200, "text/plain", "ok garage actionned");
        Serial.println("10");
        digitalWrite(relais, 0);
        delay(1500);
        digitalWrite(relais, 1);
      });
    
      server.onNotFound(handleNotFound);
    
      server.begin();
      Serial.println("HTTP server started");
    }
    
    void loop(void){
      server.handleClient();
    }

    intégration dans la domotique existante

    Mon serveur domotique (écrit en Python et PHP) utilise des scripts bash pour exécuter des actions (soit lancer depuis PHP pour la partie télécommande web ou depuis Python suite à une instruction reçue en xpl, voir depuis la crontab), voici mon script qui actionne la porte du garage:

    #!/bin/sh
    wget http://10.1.74.80/garage -O /dev/null

    En fait c'est une simple requête http, j'ai mis /garage c'est pour éviter si quelqu'un dans mon réseau se connecte dessus par erreur qu'il ouvre la porte du garage (moi en l’occurrence)

    Sécurité

    Alors c'est clair que la partie réseau est minimaliste, il n'y a aucune sécurité, donc la sécurité doit se faire en amont, par exemple en utilisant un réseau wifi dédié avec une clé wap2 longue.
    Ne pensez pas l'attaquer directement depuis Internet.

    Conclusion

    Voilà j’espère avoir réussi à vous donner l'envie d'essayer ce joli petit circuit. J'ai déjà plein d'idées pour la suite. Je vais à terme remplacer mon réseau 433 (intertechno, chacon, oregon…) par des montages faits avec des ESP. J'avais essayé enocean qui est prometteur mais affreusement cher.
    J’espère que mon petit article pourra donner des réponses à certains qui butent sur des problèmes techniques. J'ai mis des liens sur quelques ressources qui m'ont aidé.

    Lire les commentaires

  • Agenda du Libre pour la semaine 26 de l'année 2018 (Dépêches LinuxFR)

    Calendrier web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 30 événements (1 en Belgique, 29 en France, 0 au Luxembourg, 0 au Québec 0 en Suisse et 0 en Tunisie) est en seconde partie de dépêche.

    Sommaire

    [FR Nantes] Cycle café vie privée Protection de son trafic sur Internet (VPN) - Le lundi 25 juin 2018 de 18h00 à 21h00.

    Protection de son trafic sur Internet

    Pourquoi et comment chiffrer son trafic sur Internet avec un VPN (réseau privé virtuel) ?
    Présentation du fonctionnement d’un VPN, de son intérêt et de sa mise en place.

    Au bar associatif La Dérive https://lajavadesbonsenfantsblog.wordpress.com/

    [FR Grenoble] Contribuer à BANO, la base d’adresse nationale d’OSM - Le lundi 25 juin 2018 de 18h30 à 20h30.

    Le collectif OpenStreetMap Grenoble vous invite à son prochain atelier OSM, La Base Adresses Nationale Ouverte (BANO) est une initiative d’OpenStreetMap France.

    Elle a pour objet la constitution d’une base la plus complète possible de points d’adresse à l’échelle de la France.

    L’objectif est de proposer une couverture d’adresses la plus étendue possible et la plus homogène possible.

    Cela doit permettre de réaliser sur le plus largement possible des opérations de géocodage (Quelle position correspond à cette adresse) et de géocodage inversé (Quelle adresse correspond à cette position).

    Lors de ce mapathon, le collectif OpenStreetMap Grenoble vous propose d’apprendre à contribuer à la BANO.  

    À partir de 18h30 à La Coop-Infolab. 31 rue Gustave Eiffel – 38 000 Grenoble

    BANO ou BAN

    La BAN (Base Adresse Nationale) est la base de référence nationale issue d’une convention signée entre l’IGN, le Groupe La Poste, l’État et OpenStreetMap France.

    BANO est un projet initié par OpenStreetMap France début 2014 et n’a pas encore intégré de données issues de la BAN (chantier en cours). Le contenu de la BAN est plus complet (plus de 20 millions d’adresses) que BANO (15. 5M d’adresses), mais n’intègre(ra) pas de contributions faites sur OpenStreetMap et encore très peu de données opendata diffusées par certaines collectivités.

    C’est quoi OSM

    OpenStreetMap (OSM) est un projet international fondé en 2004 dans le but de créer une carte libre du monde.

    Nous collectons des données dans le monde entier sur les routes, voies ferrées, les rivières, les forêts, les bâtiments et bien plus encore

    Les données cartographiques collectées sont ré-utilisables sous licence libre ODbL (depuis le 12 septembre 2012). Pour plus d’information inscrivez-vous à la liste locale OSM de Grenoble

    [FR Gaillac] Atelier informatique libre - Le lundi 25 juin 2018 de 19h30 à 23h00.

    Un atelier d’informatique libre voit le jour au sein du chinabulle, pour créer un espace temps d’échange autour des solutions informatiques libres.

    [FR Marseille] PGDay France - Le mardi 26 juin 2018 de 08h30 à 17h30.

    Le PGDay France est un moment de rencontres et de conférences pour la communauté francophone de PostgreSQL.

    Les conférences s’adressent à tous les utilisateurs du logiciel étudiants, administrateurs systèmes, DBA, développeurs, chefs de Projets, décideurs.

    [FR Aiglun] Après-midi « Open data » et « Cartopartie » - Fête de l'été - Le mardi 26 juin 2018 de 15h00 à 19h00.

    Démarche participative et collaborative, il s’agit notamment de permettre aux associations, producteurs locaux, habitants et usagers de cartographier les services / activités qui constituent la richesse de notre territoire sur un outil libre (Openstreetmap).

    Les données publiques communales mises en ligne et la création d’un agenda partagé (à destination des associations) seront également valorisées.

    Les organisateurs du marché d’Aiglun proposeront de nombreuses animations à travers la fête l’été. Venez nombreux

    Tout l’après-midi marché bio et des producteurs locaux, animation musicale, balades avec les ânes, jeux, atelier de cartographie libre

    À 15 h, 16 h et 17 h visite du champ de lavande rendez-vous sur la place du marché

    À partir de 17 h dégustations des produits du marché préparés par le restaurant Le Pressoir Gourmand et grillades d’agneau

    À 18 h apéritif local offert par la mairie d’Aiglun, débat sur la cartographie et les données ouvertes

    [FR Quetigny] Découvrir, tester, installer Linux et d’autres logiciels libres - Le mardi 26 juin 2018 de 20h30 à 23h30.

    COAGUL est une association d’utilisateurs de logiciels libres et de GNU Linux en particulier.

    Nous utilisons toutes sortes de distributions GNU / Linux (Ubuntu, CentOs, Fedora, Debian, Arch…) et toutes sortes de logiciels pourvu qu’ils soient libres (VLC, LibreOffice, Firefox, Thunderbird, GPG, Tor, OpenNebula, LXC, Apache…).

    Nous partageons volontiers nos connaissances des logiciels libres et l’entraide est de mise dans nos réunions.

    Les permanences servent à se rencontrer et à partager nos expériences et notre savoir sur le logiciel libre.

    Vous souhaitez nous rencontrer nous vous accueillerons à notre permanence.

    On adore les gâteaux et les chocolats, vous pouvez donc en apporter-)

    [FR Le Mans] Permanence du mercredi après-midi - Le mercredi 27 juin 2018 de 12h00 à 17h00.

    Assistance technique et démonstration concernant les logiciels libres.

    [FR Rennes] Sécuriser son infrastructure - Le mercredi 27 juin 2018 de 18h30 à 21h00.

    La sécurité informatique ne repose pas que sur la qualité du code et le chiffrement (même s’ils sont essentiels), c’est aussi une question d’architecture.

    Vous (re)découvrirez quelques principes de sécurisation des infrastructures informatiques tels que la séparation des flux, la redondance et d’autres éléments pouvant améliorer la protection et la disponibilité des services.

    La conférence sera présentée par
      Thomas MICHEL
      Esprit Libre
      esprit-libre-conseil.com (link is external)

    mercredi 27 juin - 18h30

    FrenchTech Rennes - Saint-Malo
    2 rue de la Mabilais
    Rennes

    >>> S’inscrire

    [FR Montpellier] Rencontres des Groupes OpenStreetMap OSM - Le mercredi 27 juin 2018 de 19h00 à 22h00.

    Ces rencontres mensuelles se veulent être des instants conviviaux pour faire un compte-rendu des activités du mois précédent, mais aussi pour présenter les opérations et rendez-vous à venir que proposent les groupes HérOSM et le Collectif des Garrigues. Naturellement, elles sont également ouvertes à tout public.

    Si vous avez des propositions n’hésitez pas à compléter la page dédiée.

    Proposition de programme

    • En première partie de soirée, une initiation pour les débutants est prévue
    • Possibilité d’initiation à la contribution pour les débutants qui le désire
    • Préparation du dossier pour le budget de l’Opération Libre
    • Préparation de l’Opération Libre à Jacou
    • Travail sur les voies manquantes sur (enjeu évident de géocodage d’adresses, comme celles fournies par SIRENE ou FANTOIR par exemple
    • Petit topo sur la saisie des noms de rues à partir des données cadastre/fantoir par département
    • Propositions au sujet du calcul d’itinéraire multimodal (auto, vélo, piéton) dans les futures discussions

      • La pratique des cartoparties
      • Faut-il prioriser la cartographie de certains endroits (gares et arrêts de tram, par exemple) ?
    • Contributions libres

    Déroulement de la rencontre

    Nous vous présenterons les projets en cours, nous vous vous proposerons de contribuer, faire de la production de données, puis nous passerons à un instant convivial sur la terrasse.
    Comme d’habitude, chacun amène ce qu’il veut à manger et à boire pour un repas partagé.
    N’oubliez pas vos ordinateurs portables pour la séance de saisie

    Le dernier mercredi de chaque mois
    Mercredi 27 septembre 2017 de 19h00 à 22h00
    Mercredi 25 octobre 2017 de 19h00 à 22h00
    Mercredi 29 novembre 2017 de 19h00 à 22h00
    Mercredi 20 décembre 2017 de 19h00 à 22h00
    Mercredi 24 janvier 2018 de 19h00 à 22h00
    Mercredi 28 février 2018 de 19h00 à 22h00
    Mercredi 28 mars 2018 de 19h00 à 22h00
    Mercredi 25 avril 2018 de 19h00 à 22h00
    Mercredi 30 mai 2018 de 19h00 à 22h00
    Mercredi 27 juin 2018 de 19h00 à 22h00

    Mercredi 27 septembre 2017 de 19h00 à 22h00
    Le Faubourg - 15, rue du Faubourg de Nîmes, 34 000 Montpellier

    Tramway lignes 1, 2 et 4 arrêt Corum
    GPS Latitude 43.614186 | Longitude 3.881404
    Carte OpenStreetMap

    Le dernier mercredi de chaque mois.

    [FR Toulouse] Rencontres Tetalab - Le mercredi 27 juin 2018 de 20h30 à 23h30.

    Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

    Ouvert au public tous les mercredi soir.

    Venez nombreux.

    [FR Choisy-le-Roi] Pas Sage en Seine - Du jeudi 28 juin 2018 à 10h00 au dimanche 1 juillet 2018 à 20h00.

    Le festival auto-organisé par vous et l’équipe de Pas Sage En Seine se tiendra du 28 juin au 1er juillet 2017 à Choisy-le-Roi dans et aux abords de la Médiathèque Louis Aragon.

    Nous vous invitons à participer à PSES2018 et venir participer à ses ateliers et conférences bien sûr, mais aussi installations, discussions et autres formes d’interventions.

    Des thèmes sont proposés, pas imposés, pour laisser place à la manifestation d’idées originales.

    Le Festival sera un moment convivial et festif pour décrire nos modes d’organisation, nos outils, nos perspectives, évoquer les usages d’autodéfense numériques faces aux perpétuelles manipulations sécuritaires.

    Le vendredi sera une journée spéciale consacrée au RGPD, et le samedi soir (lors de la micro-nocturne jusqu’à 21h30) vous pourrez assister à un concert de chiptune réalisé par le collectif Chip Bangers.

    L’Hacktiviste naît de cette prise de conscience intégrale. Il ouvre, détourne, invente tous les possibles, ou presque… Être et faire politiquement ensemble sera notre prochaine étape

    Le trajet depuis le centre de Paris prend une petite vingtaine de minutes uniquement (Gare du RER C Choisy-le-Roi).

    [FR Rennes] Conseil d’administration de Gulliver - Le jeudi 28 juin 2018 de 12h00 à 14h00.

    Gulliver tiendra son conseil d’administration à la Maison de la Consommation et de l’Environnement (MCE) le jeudi 28 juin 2018 à partir de 12 h. L’ordre du jour est donné dans le lien ci-dessous.

    Ce conseil d’administration est ouvert à tous. Toute personne, membre ou non membre de Gulliver, peut y assister (sauf CA exceptionnel signalé à l’avance), voir comment fonctionne notre association et y donner son avis.

    La MCE est située 42 bd Magenta à Rennes (plan d’accès). La salle réservée est celle de l’accueil.

    [FR Martigues] Permanence du jeudi de l'ULLM - Le jeudi 28 juin 2018 de 16h30 à 18h30.

    Comment utiliser et les Logiciels Libres.

    avec l’association des Utilisateurs de Logiciels Libres du Pays de Martégal (ULLM).

    28 2018 de 16h30 à 18h30 à la (quai des Anglais).

    Entrée Libre. Tout public.

    [FR Challans] Permanence Linux - Le jeudi 28 juin 2018 de 18h00 à 20h00.

    Chaque dernier jeudi du mois, Linux Challans vous donne rendez-vous à l’Albanera Café, 17 rue du Général Leclerc 85 300 Challans.

    Nous vous proposons lors de ces rendez-vous mensuels d’échanger autour du Libre, des conseils ou une assistance technique.

    Vous pouvez venir pour vous faire aider, ou aider, à installer et paramétrer une distribution GNU/Linux de votre choix ou des logiciels libres sur votre ordinateur.

    Recommandations

    • Sauvegardez vos données avant de venir.
    • Libérez de la place sur le disque dur (20 Go minimum) et défragmentez Windows si vous voulez le conserver.
    • Nous prévenir de votre passage via la messagerie.

    Vous pouvez aussi venir pour une première prise d’informations et de contacts.

    Nous vous attendons toujours plus nombreux

    [FR Bordeaux] Jeudi Giroll - Le jeudi 28 juin 2018 de 18h30 à 20h30.

    Les membres du collectif Giroll, GIROnde Logiciels Libres, se retrouvent une fois par semaine, pour partager leurs  savoir-faire et expériences autour des logiciels libres.

    Le collectif réalise aussi une webradio mensuelle, tous les second mardis du mois, à retrouver en direct sur le site de Giroll.

     Ses rencontres sont ouvertes à tous.

    [FR Peymeinade] Install-Party GNU/Linux - Le jeudi 28 juin 2018 de 19h00 à 21h00.

    Désormais tous les 4ᵉˢ mercredi du mois, Clic Ordi et Linux Azur vous proposent une install-party ouverte à tous et gratuite.

    • Découvrez un monde rempli de Papillons, licornes, mais surtout de manchots
    • Plus besoin de se soucier des virus et autres logiciels malveillants.
    • Le support de Windows Vista s’arrête dans un an, et les principaux logiciels ont déjà arrêté leurs mise à jour, réagissez
    • Ramenez vos ordinateurs obsolètes et donnez leur une seconde vie.

    Nous aimerions développer autour de Handy-Linux (et de sa future mouture avec Debian-Facile) afin de répondre à des besoins simples pour des personnes difficiles à former et pouvant se retrouver en fracture numérique).

    Nous sommes ouverts à tout, y compris à la bidouille sur l’atelier avec le fer à souder.

    Organisé conjointement par http://clic-ordi.com/fr et https://www.linux-azur.org

    [FR Vesseaux] Projection-débat du film « Nothing to hide » - Le jeudi 28 juin 2018 de 19h00 à 22h00.

    Ouverture des portes à 19h pour partager un moment de convivialité, discuter des choses et d’autres comme les logiciels libres, les données personnelles, la vie privée

    Il y a une buvette sur place, et vous pouvez également apporter un plat à partager ou biscuits apéro

    La projection du film documentaire Nothing to Hide aura lieu à 20h30, et sera suivie d’un débat pour répondre à vos questions

    « Dire que votre droit à la vie privée importe peu, car vous n’avez rien à cacher revient à dire que votre liberté d’expression importe peu, car vous n’avez rien à dire. Car même si vous n’utilisez pas vos droits aujourd’hui, d’autres en ont besoin. Cela revient à dire les autres ne m’intéressent pas », Edward Snowden

    Ce documentaire aborde le thème de la vie privée et des données personnelles.

    L’entrée est à prix libre (adhésion à l’association Vesseaux-Mère).

    [FR Paris] Soirée de Contribution au Libre - Le jeudi 28 juin 2018 de 19h30 à 22h30.

    Parinux propose aux utilisateurs de logiciels libres de se réunir régulièrement afin de contribuer à des projets libres. En effet, un logiciel libre est souvent porté par une communauté de bénévoles et dépend d’eux pour que le logiciel évolue.

    Nous nous réunissons donc tous les dans un environnement propice au travail (pas de facebook, pas de télé, pas de jeux vidéos, pas de zombies).

    Vous aurez très probablement besoin d’un ordinateur portable, mais électricité et réseau fournis.

    En cas de difficulté, vous pouvez joindre un des responsables de la soirée, Emmanuel Seyman (emmanuel (at) seyman.fr), Paul Marques Mota mota (at) parinux.org, ou Magali Garnero (Bookynette) tresorier (at) parinux.org.

    Pour obtenir le code d’entrée de la porte cochère, envoyez un mail au responsable.

    On peut amener de quoi se restaurer (Franprix, 8 rue du Chemin Vert, ferme à 22h)

    Regazouillez sur Twitter - Wiki des soirées

    Programme non exhaustif

    • Fedora (sa traduction)
    • Parinux, ses bugs et son infrastructure
    • April, … y a toujours quelque chose à faire
    • Open Food Facts/ Open Beauty Facts, sa base de données, ses contributeurs, sa roadmap
    • Schema racktables, son code
    • Agenda du Libre, mise à jour et amélioration du code
    • Ubuntu-Fr, son orga, ses événements
    • En vente libre, maintenance et commandes
    • Open street map, une fois par mois
    • Linux-Fr sait faire
    • en vente libre

    tout nouveau projet est le bienvenu.

    [FR Montpellier] Atelier du Libre Ubuntu et Logiciels Libres - Le vendredi 29 juin 2018 de 18h00 à 23h00.

    L’équipe de Montpel’libre vous propose une permanence Logiciels Libres, discussions libres et accompagnements techniques aux systèmes d’exploitation libres, pour vous aider à vous familiariser avec votre système GNU/Linux au quotidien.

    Le contenu de l’atelier s’adapte aux problèmes des personnes présentes et permet ainsi l’acquisition de nouvelles compétences au rythme de chacun.

    Vous pourrez y aborder plusieurs thèmes

    • Discussions conviviales entre utilisateurs autour de Linux en général
    • Préinscription aux prochains Cafés Numériques et Install-Party
    • Premières explorations du système
    • Installations et configurations complémentaires
    • Mise à jour et installation de nouveaux logiciels
    • Prise en main, découverte et approfondissement du système

    Les Ateliers du Libre ont lieu à la Mpt Melina Mercouri de Montpellier, tous les derniers vendredis de chaque mois de 18h00 à 20h00, sauf période de vacances.

    Entrée libre et gratuite sur inscription. Une simple adhésion à l’association est possible et auprès de la Mpt.

    Cet événement est proposé par le partenariat qui lie la Mpt Melina Mercouri de Montpellier et Montpel’libre.

    Toute une équipe de passionnés, vous propose l’animation de l’Atelier du Libre par les membres de Montpel’libre. Permanence Logiciels Libres, discussions libres et accompagnements des utilisateurs aux systèmes exploitation libres, Linux, sur le cyberespace de consultations libres.

    En fin de soirée, l’atelier fera progressivement place à un instant très convivial, les RDVL sont des rendez-vous mensuels de discussions sur le thème des logiciels libres, des arts libres, de l’open source et plus généralement de la culture du libre et du numérique.

    Cette soirée, très conviviale, se passe autour d’un repas partagé, chacun porte un plat, entrée, spécialité, dessert, boisson… Ordinateurs et réseaux disponibles.

    Notre équipe vous attend pour répondre à vos questions et satisfaire votre curiosité.

    Maison pour tous Mélina Mercouri 842, rue de la vieille poste, 34 000 Montpellier

    Bus ligne 9, La Ronde arrêt Pinville
    GPS Latitude 43.61354 Longitude 3.908768
    Carte OpenStreetMap

    Rendez-vous mensuel, tous les derniers vendredis, salle jamais le dimanche

    [FR Paris] Apéro April - Le vendredi 29 juin 2018 de 19h00 à 22h00.

    Un apéro April consiste à se réunir physiquement afin de se rencontrer, de faire plus ample connaissance, d’échanger, de partager un verre et manger mais aussi de discuter sur le logiciel libre, les libertés informatiques, fondamentales, l’actualité et les actions de l’April…

    Un apéro April est ouvert à toute personne qui souhaite venir, membre de l’April ou pas.

    N’hésitez pas à venir nous rencontrer.

    Où et quand cela se passe-t-il

    L’apéro parisien aura lieu vendredi 29 juin 2018 à partir de 19h00 dans les locaux de l’April.

    L’adresse
    April, 44/46 rue de l’Ouest, bâtiment 8, 75 014 Paris (entrée possible par la place de la Catalogne, à gauche de la Biocoop, au niveau des Autolib).
    Métros Gaîté, Pernety, Montparnasse. Sonner à « April » sur l’interphone.
    Le téléphone du local 01 78 76 92 80.

    L’Apéro a lieu à Paris notamment parce que le local s’y trouve ainsi que les permanents et de nombreux actifs. Pour les apéros dans les autres villes voir sur le pad plus bas.

    En ouverture de l’apéro nous ferons un court point sur les dossiers/actions en cours.

    Le glou et le miam

    Vous pouvez apporter de quoi boire et manger afin de reprendre des forces régulièrement. Nous prévoirons bien sûr un minimum vital.

    Vous pouvez vous inscrire sur le pad.

    [FR Dijon] Atelier de création numérique et électronique - Le vendredi 29 juin 2018 de 20h30 à 23h59.

    Le fablab et hackerspace l’abscisse vous propose comme tous les vendredis soir un atelier de création numérique et électronique.

    L’atelier est équipé de différents outils perceuse, CNC, Arduino, Raspberry Pi, ordinateurs, oscilloscope, multimètre.

    Une ressourcerie est à disposition, vous y trouverez des composants électroniques et des pièces détachées à prix libre.

    Vous pouvez venir découvrir l’atelier et les usagers du fablab à partir de 20h30.

    Vous pouvez aussi venir pour participer aux travaux numériques en cours, partager vos connaissances et vos savoir-faire.

    Tous nos travaux sont libres et documentés sous licence libre.

    [FR Saint-Jean-de-Védas] Repair Café - Le samedi 30 juin 2018 de 09h00 à 13h00.

    Nous vous proposons ce rendez-vous, où, bricoleurs, acteurs, bénévoles, associations, vous attendent pour vous aider à donner une deuxième vie à vos objets.

    Réparer ensemble, c’est l’idée des Repair Cafés dont l’entrée est ouverte à tous. Outils et matériel sont disponibles à l’endroit où est organisé le Repair Café, pour faire toutes les réparations possibles et imaginables. Vêtements, meubles, appareils électriques, bicyclettes, vaisselle, objets utiles, jouets, et autres. D’autre part sont présents dans le Repair Café des experts bénévoles, qui ont une connaissance et une compétence de la réparation dans toutes sortes de domaines.

    On y apporte des objets en mauvais état qu’on a chez soi. Et on se met à l’ouvrage avec les gens du métier. Il y a toujours quelque chose à apprendre au Repair Café. Ceux qui n’ont rien à réparer prennent un café ou un thé, ou aident à réparer un objet appartenant à un autre. On peut aussi toujours y trouver des idées à la table de lecture qui propose des ouvrages sur la réparation et le bricolage.

    Repair Café est un atelier consacré à la réparation d’objets et organisé à un niveau local, entre des personnes qui habitent ou fréquentent un même endroit, par exemple un quartier ou un village. Ces personnes se rencontrent périodiquement en un lieu déterminé, dans un café, une salle des fêtes ou un local associatif où des outils sont mis à leur disposition et où ils peuvent réparer un objet qu’ils ont apporté, aidés par des volontaires.

    Les objectifs de cette démarche alternative sont divers

    • réduire les déchets
    • préserver l’art de réparer des objets
    • renforcer la cohésion sociale entre les habitants des environs

    Seront présents

    • Autour.com : On se rend des services entre voisins, on partage des infos, on prête, on loue, on donne…
    • L’Accorderie : Est un système d’échange de services entre habitants d’un même quartier ou d’une même ville.
    • La Gerbe : Contribuer à la formation de citoyens éveillés, engagés et solidaires en offrant aux enfants et aux jeunes un espace privilégié d’expression et d’épanouissement Crèche, Centre de loisirs, Scoutisme, Ateliers, chacun peut y trouver un cadre pour son développement grâce au travail d’une équipe de professionnels et de bénévoles.
    • Les Compagnons Bâtisseurs : Prévoient d’amener des outils
    • Les Petits Débrouillards : est un réseau national de culture scientifique et technique, ils viendront avec pleins de conseils et une imprimante 3D.
    • Le Faubourg : Hébergera le Repear Café.
    • Montpel’libre : Sera là avec des pièces informatiques, pour essayer de reconditionner des ordinateurs, dépanner ceux qui ne fonctionnent plus, expliquer comment ça marche, faire comprendre le choix judicieux du logiciel libre, contourner l’obsolescence programmée grâce à GNU/Linux, comment réparer et entretenir son matériel soi-même, nous porterons un jerry.
    • TechLabLR : Accompagne les projets à composantes technologiques afin de les amener au pré-prototype, puis les guider vers les structures d’accompagnements.
    • Violons Dingues : Passionnés de la vie, des autres, de la culture, de l’art, du sport, de la mécanique, de la moto, de la photo, de la musique, des animaux, des insectes, des plantes, de l’environnement, enfin de tout ce qui circule (au propre comme au figuré) sur notre planète.
    • Zéro Waste Montpellier : La démarche « Zéro Waste » est une démarche positive pour aller vers une société zéro déchet et zéro gaspillage.

    • Maison des Associations, 18 bis rue Fon de l’Hospital, Saint-Jean-de-Védas, Occitanie, France

    • Adresse web http://montpel-libre.fr

    • Tags
      montpel-libre, repair-cafe, atelier

    [FR Casseneuil] Install Partie GNU/Linux - Le samedi 30 juin 2018 de 10h00 à 17h00.

    Le Samedi 30 Juin les bénévoles d’aGeNUx sont invités dans les locaux d’Avec 2L pour une Install-party.

    Venez découvrir et partager le monde du logiciel libre en toute sérénité.

    Animation Libre et non payante.

    Auberge Espagnole le midi.

    Avec 2L se situe derrière la poste de Casseneuil

    [FR Wintzenheim] Réunion du Club Linux - Le samedi 30 juin 2018 de 13h00 à 19h00.

    Comme tous les 3 samedis, le Club Linux de la MJC du Cheval Blanc se réunit et accueille toutes les personnes qui souhaitent découvrir ou approfondir Linux et les Logiciels Libres. Aucune compétence n’est demandée.  

    Pendant ces rencontres, informelles,

    • nous accueillons celles et ceux qui cherchent une réponse ou souhaitent découvrir Linux et les Logiciels Libres,
    • nous installons Linux sur des ordinateurs, la plupart des fois en « dual boot »(*), ce qui permet de conserver l’ancien système (par exemple Windows) et d’utiliser quand même, en choisissant au démarrage,
    • nous partageons nos recherches et nos découvertes, les nouveautés.

    Le Club Linux est également impliqué dans une démarche de libération des GAFAM (Google Apple Facebook Amazon Microsoft) et de promotion de solutions libres comme, entre autres, Wikipedia, Openstreetmap, les Framatrucs (*), les Chatons (*) et beaucoup d’autres.

    (*) : mais on vous expliquera

    [FR Villefranche-sur-Saône] Repaircafé - Le samedi 30 juin 2018 de 13h30 à 17h30.

    Dernier Repaircafé caladois mensuel de la saison avant les vacances.

    Avec la participation habituelle de la CAGULL.

    [FR Marseille] Install Party GNU/Linux - Le samedi 30 juin 2018 de 14h00 à 19h00.

    L’association (CercLL d’Entraide et Réseau Coopératif autour des Logiciels Libres) vous invite à une install party GNU/Linux, le, dans la salle du Foyer du Peuple 50 rue Brandis 13 005 Marseille.

    Vous avez envie de découvrir un système d’exploitation libre, simple d’utilisation, stable, rapide et sécurisé. Une nouvelle façon d’utiliser votre ordinateur.

    Vous vous sentez une affection naissante pour le Gnou et le, les mascottes de

    Au programme

    DÉCOUVERTE de l’univers des logiciels libres.

    INSTALLATION d’un environnement GNU/ Linux, ainsi que le meilleur des logiciels libres.

    Venez avec votre ordinateur, nous installerons ensemble une distribution avec un ensemble de et pour une utilisation quotidienne.

    Ouvert à tous – accessible aux débutant-e-s

    Une participation de 2 euros est demandée.

    L’adhésion à l’association est de 20 euros annuelle.(L’adhésion n’est pas obligatoire).

    Plan d’accés

    [BE Liège] Linux Install Party - Le samedi 30 juin 2018 de 14h00 à 18h00.

    Une Linux Install Party a lieu tous les derniers samedis du mois de septembre à juin, dans les locaux du Cyber Seniors Énéo de Grivegnée, où je suis animateur.

    L’accès et la participation à l’Install Party est ouvert à tous et est gratuit.

    Vous venez avec votre ordinateur et on y installe le Linux que vous désirez.

    Les installations commencent à 14h et finissent à 18h.
    Prévoyez de venir avant 17h, parfois ça peut durer longtemps.

    [FR Ivry sur Seine] Cours de l’Ecole du Logiciel Libre - Le samedi 30 juin 2018 de 14h30 à 18h30.

    Présentation de l’E2L

    Quel est le rôle de l’école du logiciel libre

    Tout d’abord, ce n’est pas une école comme les autres. Elle n’a pas d’établissement fixe, pas de cours de récréation, pas de carte d’étudiant, ni de diplôme de fin d’année.

    Comme toutes les écoles, son rôle est d’apprendre à ses élèves les logiciels libres, c’est-à-dire

    • comment en trouver de bons parmi les nombreux sites qui en proposent,
    • comment en prendre possession en fonction des licences,
    • comment les installer en fonction de ses besoins,
    • comment les tester et les utiliser,
    • comment en comprendre le fonctionnement pour ensuite les modifier,
    • comment écrire ses propres logiciels libres.

    En fait, l’école du logiciel libre est une université populaire, comme celles qui ont vu le jour en France à partir du 19ᵉ siècle, et dont le but est de transmettre des connaissances théoriques ou pratiques à tous ceux qui le souhaitent. Et pour atteindre ce but, sa forme juridique est de type " association à but non lucratif ".

    Comment fonctionne l’école

    Cette école étant une association, elle possède, comme toutes les autres, un bureau, élu chaque année en assemblée générale, pour l’administrer. Mais elle a aussi des responsables pédagogiques dont le rôle est essentiel, car ce sont eux qui établissent les programmes des cours en fonction des souhaits des adhérents, valident les candidatures des enseignants et affectent les sessions.

    Les membres du bureau et les responsables pédagogiques forment « l’encadrement de l’école ». Tous les membres « encadrants » doivent être membres de l’association.

    Les locaux où se déroulent les cours seront ceux que l’on veut bien nous prêter une salle des fêtes, un théâtre, une salle de réunion publique, un amphi dans une école publique, ou autre.

    Les thèmes des cours sont définis par les adhérents en fonction de leurs envies, de leurs besoins. Les cours sont ensuite décidés par les responsables pédagogiques de l’école en fonction des enseignants disponibles.

    Afin de permettre au plus grand nombre de participer et d’assister aux cours, les sessions se tiennent essentiellement le samedi. Une première de 9h à 12h30, et une autre de 14h à 17h30.

    Programme détaillé sur le site http://e2li.org

    [FR Courbevoie] Assemblée Générale annuelle de l'association StarinuX - Le samedi 30 juin 2018 de 14h30 à 17h00.

    L'association GULL StarinuX vous invite à  son

    ASSEMBLÉE GÉNÉRALE annuelle

    le samedi 30 juin 2018 à 14h30,

    48 rue de Colombes 92 400 Courbevoie

    (SNCF Gare de Courbevoie,  Saint Lazare <=> La Défense).

    Seuls les adhérent(e)s peuvent voter, mais les discussions restent ouvertes à tous les présents.

    Un déjeuner facultatif aura lieu à 12h30.

    Au plaisir de nous rencontrer à l’AG 2018

    Le Bureau de StarinuX

    [FR Poucharramet] Festival AgitaTerre - Le dimanche 1 juillet 2018 de 09h30 à 23h00.

    L’association 3PA Formation vous invite à la cinquième édition du Festival AgitaTerre Nous vous donnons rendez-vous le dimanche 1er juillet au coeur du village de Poucharramet (31), entre la place des Marronniers et La Maison de la Terre

    Venez découvrir des alternatives durables, locales et citoyennes qui font vivre notre territoire. Cette année, le festival investit le thème des Communs venez en apprendre plus

    Un événement gratuit et tout public

    9h30-18h

    Marché de producteurs et artisans-créateurs locaux
    Forum associatif & Village des Communs

    Conférences
    Expositions « C’est quoi les Communs »
    Ateliers tous publics

    Expositions d’artistes sculpteurs sur bois
    Mur d’expression libre
    Vannerie géante collective

    Concerts
    Spectacles et animations

    Buvette & Restauration
    Espace enfants

    20h30 Grand concert en plein air avec notre partenaire La Maison de la Terre

    Programmation et exposants sur www.agitaterre.fr

    Infos agitaterre@3paformation.fr // 3PA 05.61.08.11.30

    Parking sur place
    Adapté aux personnes à mobilité réduite

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Rumeurs sur l'hyper-threading - TLBleed (Journaux LinuxFR)

    La peinture de la dépêche sur la faille Lazy FPU save restore n'étais pas encore sèche
    que je tombais sur de curieux messages conseillant de désactiver l'Hyper-threading.

    Suivis de conversations plus ou moins inquiétantes sur Twitter et dans les mailings list.

    Accroche toi au pinceau

    Un commit sur OpenBSD désactive l' Hyper-treading par défaut.
    Le message associé est explicite:

    « Since many modern machines no longer provide the ability to disable Hyper-threading in
    the BIOS setup, provide a way to disable the use of additional
    processor threads in our scheduler. And since we suspect there are
    serious risks, we disable them by default
     »
    Puisque les machines récentes ne donnent plus la possibilité de désactiver l' Hyper-threading depuis le BIOS, trouvez un moyen de désactiver l'utilisation des threads d'un processeur dans notre ordonnanceur.
    Et comme on suspecte que le risque est sérieux, désactivons le par défaut.

    Pour faire plus court, j'avais lu auparavant un laconique:

    ps deactivate Hyper-threading on your server
    Désactivez l'Hyper-threading sur vos serveurs !

    Venant des équipes OpenBSD, il y a de quoi s'interroger.

    J'enlève l'échelle

    La conférence Black Hat qui se déroulera en août prochain, propose au menu:

    « This therefore bypasses several proposed CPU cache side-channel protections. Our TLBleed exploit successfully leaks a 256-bit EdDSA key from libgcrypt (used in e.g. GPG) with a
    98% success rate after just a single observation of signing operation on a co-resident hyperthread and just 17 seconds of analysis time
     »
    En outre, ceci court-circuite plusieurs protections sur le cache. Notre exploit TLBeed a réussi à voler une clef 256-bit EdDSA depuis ligcrypt (utilisée par GPG ) dans 98% des tentatives, après une simple observation des opérations de signature depuis un thread tournant sur le même CPU en seulement 17 secondes d'analyse.

    Colin Percival, auteur en 2005 de:

    1. un papier sur les attaques via les caches, Cache Missing for Fun and Profit
    2. un article qui cible plus particulièrement les risques liés à l'Hyper-threading

    en remet une couche:

    « I think it's worth mentioning that one of the big lessons from 2005 is that side channel attacks become much easier if you're executing on the same core as your victim »
    Je pense qu'il est bon de rappeler cette grande leçon de 2005: une attaque en side channel est tellement plus facile si vous l'exécutez sur le même cœur que votre victime.

    Cuisine

    Intel n'est jamais clairement impliqué; mais je précise, comme ça, en passant, que l'Hyper-Threading est une implémentation Intel du Simultaneous Multi Threading.
    Il s'agit de faire exécuter en parallèle, sur un même cœur, plusieurs unités fonctionnelles ou de calcul.
    Et pour rendre cette technique efficace et moins gourmande en ressource, cette implémentation partage aussi les caches mémoires.

    Keep systems protected, efficient, and manageable while minimizing impact on productivity

    Conclusion

    Toutes les solutions de sécurité aujourd’hui ne sont que des châteaux forts construit sur du sable.

    Si encore une fois, la désactivation de l'Hyper-threading pourrait même avoir des effets positifs sur les performances, autant en finir une fois pour toute.

    Retour aux origines:

    • un partage complet sans protection des ressources
    • plus de mode protégé
    • pas même de segmentation mémoire

    Vos machines iront encore plus vite. Enfin, j'espère.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Le logiciel libre dont on ne peut utiliser les libertés (Journaux LinuxFR)

    Sommaire

    Dans mon entreprise, on utilise des logiciels libres. Il arrive qu'on aie besoin de modifier ces logiciels tiers, pour gérer un cas spécifique ou pour une meilleure intégration dans l'application.

    Et parfois, en se lançant dans ce genre de travaux, on tombe sur une surprise :

    Il existe des logiciels libres dont il est presque impossible d'utiliser les libertés sans une quantité déraisonnable de travail.

    Je ne parle pas d'openwashing ici, cette technique qui consiste à faire croire qu'un logiciel est libre mais ne l'est pas et dont on a récemment parlé ici. Non, je parle de programmes véritablement libres (sous licence Apache ou MIT généralement, notre code n'étant pas libre ça ne peut être des licences contaminantes comme la GPL) mais dont les subtilités font que… visiblement quelqu’un ne veut pas que les libertés soient trop utilisées. On notera déjà que c'est souvent des logiciels dont il existe une version avancée commerciale.

    Les libertés d'exécution et de redistribution sont généralement faciles à appliquer ; le problème survient souvent quand on veut étudier le programme et l'améliorer. Voici quelques exemples de techniques utilisées ; certaines peuvent être expliquées par un simple manque de volonté d'adhérer à l'esprit du logiciel libre ou par une mauvaise organisation interne ; d'autres s'approchent du sabotage. Dans tous les cas, la licence est respectée à la lettre.

    Toutes les techniques ci-dessous ont été croisées dans des cas réels (heureusement pas toutes sur le même projet) :

    Aucune documentation technique

    Il n'existe aucune documentation technique d'aucune sorte. Selon la taille du logiciel, ça peut être plus ou moins gênant (je vous laisse imaginer quand le workspace du projet fait plusieurs centaines de Mo).

    Parfois, rien qu'obtenir une version exécutable du logiciel à partir des sources est un calvaire.

    Une version avancée consiste à utiliser des frameworks, compilateurs ou réglages exotiques, sans que ce soit documenté publiquement.

    Les dépendances cachées

    Les dépendances du projet vont par défaut se télécharger depuis un serveur qui appartient à la même organisation que le projet, et pas depuis les dépôts standards. Et surprise, ce serveur ne contient (en public) que les dernières versions des dépendances.

    Au pire, ces dépendances sont elles-mêmes libres, on peut toujours aller les chercher et les compiler à la main, mais la quantité de travail pour obtenir une version fonctionnelle explose dès qu'on veut autre chose que la toute dernière version. Et je ne parle pas de la galère quand on veut mettre à jour un fork depuis l'origine.

    Le faux dépôt de sources

    Celle-ci est subtile : le dépôt des sources public n'est d'évidence pas un dépôt de travail, puisqu'il ne contient qu'un seul commit par version, sans le moindre commentaire. Ça n'est pas gênant tant qu'on essaie pas de maintenir un fork.

    La version avancée, qui consiste à ne fournir les sources que sous la forme d'un dossier compressé sans le moindre historique, semble avoir à peu près disparue, du moins dans mon domaine.

    Le tapis et le labyrinthe mouvant

    Deux variantes d'une même technique :

    1. Les sources peuvent être planquées à un endroit inaccessible, voire carrément absentes du site éditorial – rien, pas même un lien, pas même une mention claire de la licence : si tu ne sais pas déjà que le logiciel est libre… tu le découvres en lisant la licence après avoir donné toutes tes informations pour la fameuse « version de démonstration 30 jours ».
    2. Le site change tout le temps, et la manière d'accéder aux sources n'est jamais la même d'un mois sur l'autre.

    À noter que quelques entreprises ne fournissent les sources qu'aux clients de l'entreprise, ce qui est généralement autorisé.

    Une variante intéressante du point 2, c'est quand le logiciel change régulièrement de grands pans de son architecture.

    Le code qui fait des suppositions sur l'environnement de développement

    Généralement à base de chemins en dur dans le code ou de réglages spécifiques à un IDE. C'est rare, mais on en croise…

    La ressource libre-mais-déposée

    Ici ça s'applique plus aux ressources qu'au code, principalement aux logos : votre ressource est libre, mais est une marque déposée. Il y a plein de cas où on ne peut pas l'utiliser. Par exemple, le logo GNU n'illustre pas la version d'origine de cet article, parce que, je cite (le gras est d'origine) :

    Ce dessin est utilisable conformément à la GNU FDL v1.3, à la licence Art libre ou à la Creative Commons CC-BY-SA 2.0 (résumé en français ici). Toutefois, c'est aussi un logo déposé du projet GNU. Si vous voulez vous servir de cette tête de GNU pour mettre en lien un site web de la Free Software Foundation ou du projet GNU, n'hésitez pas ; de même, vous n'avez pas besoin de permission supplémentaire pour l'utiliser dans des contextes qui parlent de GNU de manière positive et exacte. Pour tout autre usage, veuillez au préalable demander la permission à licensing@fsf.org.
    Source: La page du logo GNU sur le site de la FSF

    Et donc ce logo est disponible sous 3 licences libres différentes, mais a des restrictions très fortes sur l'usage qui peut en être fait. C'est en fait valable avec à peu près tous les logos et toutes les marques – et les règles d'utilisations de logos et marques d'entreprises peuvent être bien plus restrictives.


    La conclusion de tout ceci ?

    Qu'un logiciel soit libre n'impose pas que son développeur doive vous faciliter l'application des libertés.

    C'est quelque chose qu'on croit trop souvent, de même qu'on mélange souvent « libre » et « gratuit ».


    Ce texte, placé sous licence CC BY 4.0, est une légère adaptation pour LinuxFR.org de l'original disponible sur Zeste de Savoir.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Faille Lazy FPU state restore (Dépêches LinuxFR)

    Intel est de nouveau confronté à la découverte d’une faille, le Lazy FPU State Restore flaw.
    Cette fois, seule la famille des Intel Core serait concernée.

    Sommaire

    Le FPU

    Le FPU, c’est le bordel, par Ingo Molnar

    L’unité de calcul en virgule flottante, le FPU, possède une série de registres qui lui permet de « définir » son état courant. Lors du basculement d’une tâche à une autre (context switching), cet état est alors restauré pour retrouver un contexte correspondant au processus en cours. Ces opérations peuvent être coûteuses car les registres du FPU sont plus gros que les autres, c’est pourquoi les FPU fournissent une option pour désactiver toute opération en virgule flottante (CR0:TS). Aussi, dès qu’un calcul en virgule flottante est appelé, une exception est lancée pour « réveiller » le FPU avant de lancer l’opération normalement.
    Lorsque cette exception (fpudna, FPU Device Not Available) se produit, un « gestionnaire de contexte FPU » vérifie quel processus a la main sur le FPU à ce moment‐là.
    S’il s’agit d’un autre processus, il procède à la sauvegarde puis la restauration des registres, ou s’il s’agit d’un nouveau contexte, la sauvegarde puis le nettoyage des registres ; sinon, il ne fait rien : c’est le mode « paresseux » (lazy). À la sortie du processus, il ne faut pas oublier de « nettoyer » ces tables et de (re)lever tous les drapeaux liés à cette exception.

    En mode eager (zélé, volontaire), la sauvegarde et restauration des registres associés au FPU est effectuée quoiqu’il advienne, au moment du changement de tâche et non durant l’exécution de la tâche qui vient de prendre la main.

    Le bâton

    Au fil des années, les processeurs ont multiplié les registres pour prendre en charge les instructions de type SIMD, soit une instruction capable de procéder au même calcul sur un ensemble de paires de données.

    Les registres SSE, AVX et MMX restent associés au FPU et seront donc intégrés au mécanisme de sauvegarde et restauration… et ils peuvent contenir jusqu’à 2 048 bits de données, rien que sur l’AVX.

    [    0.000000] Linux version 4.14.48-intel-pk-standard (oe-user@oe-host) (icc version 18.0.2 (gcc version 7.3.0 compatibility)) #2 SMP PREEMPT Wed Jun 20 13:21:48 UTC 2018                                                              
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'                               
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'                                              
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'                                       
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'                                                    
    [    0.000000] x86/fpu: xstate_offset[3]:  576, xstate_sizes[3]:   64                                                
    [    0.000000] x86/fpu: xstate_offset[4]:  640, xstate_sizes[4]:   64                                                
    [    0.000000] x86/fpu: Enabled xstate features 0x1b, context size is 704 bytes, using 'compacted' format.
    

    Pour se faire battre

    Par le biais désormais connu de l’exécution spéculative puis de l’analyse de cache, un attaquant pourra lire ces registres depuis un autre processus, voire depuis une machine virtuelle. En effet, en mode lazy la sauvegarde des registres d’une tâche s’effectue au cours de l’exécution d’une autre tâche. La spéculation ignorant le drapeau CR0:TS, tout est alors possible.

    Ces registres peuvent contenir des informations sensibles comme des clefs de chiffrement (AES), par le biais des instructions d’accélération matérielle AES-NI.

    Delivers Fast, Affordable Data Protection and Security. AHeum.

    Colin Percival, ex‐membre de l’équipe sécurité de FreeBSD, a codé un exploit en quelques heures et note, dans un tweet :

    « You need to be able to execute code on the same CPU as the target process in order to steal cryptographic keys this way. You also need to perform a specific sequence of operations before the CPU pipeline completes, so there’s a narrow window for execution. »

    « Vous devez être en mesure d’exécuter le code de [l’exploit] sur le même processeur que celui de la cible pour voler les clefs de cette manière. Vous devrez en outre appliquer une suite précise d’opérations avant que la chaîne de traitement du processeur ne se termine ; de fait, la fenêtre de tir est très étroite. »

    Ce qui semble vouloir dire que, pour l’instant, coder le vol de données depuis un script venu du Web n’est pas simple à réaliser. Le temps nécessaire au vol des données des registres est la clef de l’attaque. Il faut le terminer avant que le séquenceur ne préempte la victime et que les valeurs des registres ne soient modifiées.

    Pour y arriver, les chercheurs ont utilisé plusieurs méthodes :

    Exception

    Il s’agit de coder la fuite de données à l’ombre d’une exception, sciemment provoquée, tel un page fault, par exemple. Mais il s’avère que cette solution est trop lente pour récupérer tout un jeu de registres.

    Intel TSX

    Cette mécanique n’est disponible que sur les architectures récentes (à partir de Haswell), ce qui limite l’angle d’attaque. Cette technologie comporte un jeu d’instructions appelé RTM (Restricted Transactional Memory) qui permet d’annuler un bloc d’exécution en cas d’interruption ; il suffit d’y encadrer le code malicieux, qui va innocemment faire appel au FPU, pour lever l’exception fpudna… Ce serait presque « étudié pour ».

    Retpoline

    Il s’agit au départ d’une contre‐mesure pour Spectre. Elle vise à fourvoyer sciemment le processeur sur l’adresse de retour d’un RET en plaçant une « fausse » boucle et donc le forcer à exécuter de manière spéculative un code innocent. Le code malicieux sera donc placé à cet endroit.

    Les correctifs

    Le mode lazy semble moins pertinent aujourd’hui. Les gains en performance sont faibles avec les architectures récentes et, surtout, selon les usages actuels. Le FPU étant même beaucoup plus utilisé dans nos logiciels, son usage serait contre‐productif.
    En effet, les compilateurs choisissent d’appeler les instructions SIMD (i.e. -sse) pour optimiser le code des logiciels. De fait, ceux‐ci auront de toute façon sauvegardé et restauré les registres du FPU à chaque changement de contexte. La gestion de l’exception sera inutile et va juste alourdir le processus. En outre, l’empreinte d’une sauvegarde et restauration serait moindre que celle de la gestion des drapeaux, des registres et de leurs états suite à l’interruption, le transfert de registres FPU en mémoire étant plus rapide car optimisé.

    Il est donc préconisé d’éviter le mode lazy au profit du mode eager.

    • Linux propose le mode eager plutôt que le mode lazy depuis la version 3.7 et l’active par défaut depuis la version 4.9 ;
    • ajoutez eagerfpu=on sur la ligne de démarrage pour les versions antérieures à la 4.9 ;
    • FreeBSD a poussé un correctif pour la Release 11.2 ; c’est un FreeBSD 11.1 qui a servi de cobaye ;
    • DragonFly BSD a poussé un correctif dans la version 5.2.2 ;
    • Microsoft poussera un correctif en juillet ;
    • OpenBSD a poussé un correctif le 14 juin pour la version 6.3 ;
    • NetBSD a poussé un correctif le 16 juin sur MAIN ;
    • Illumos a poussé un correctif le 19 juin.

    Conclusion

    Ils ne sont pas à la fête cette année, chez Intel. Le point positif est que la correction de cette faille devrait conduire à une amélioration des performances, voire de la consommation d’énergie.

    Theo de Raadt avait prévenu 11 ans auparavant que l’architecture Intel Core 2 promettait ce genre de faille :

    « These processors are buggy as hell, and some of these bugs don’t just cause development/debugging problems, but will ASSUREDLY be exploitable from userland code. »

    « Ces processeurs sont bogués comme jamais et nombre de ces bogues ne provoquent pas seulement des soucis de développement et d’analyse, mais ils vont assurément être exploitables depuis l’espace utilisateur. »

    Pour la petite histoire, l’embargo s’est terminé le 6 juin. Colin Percival, qui assistait à une conférence de Théo de Raadt lors de la BSDCan 2018, a codé un exploit dans la foulée, qu’il n’a pas encore rendu public. Mais il a convaincu Intel de lever l’embargo au plus vite.
    Il est notable qu’aucun des deux n’avait été mis dans la confidence ; OpenBSD signale même qu’ils en ont fait la demande (des rumeurs circulaient autour d’une énième version de Spectre), mais sans obtenir de réponse.

    Invitation to Embargo? No.
    We asked.
    No reply.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Lazy FPU state restore (Dépêches LinuxFR)

    Intel est de nouveau confronté à la découverte d'une faille, le
    Lazy FPU State Restore flaw.
    Cette fois, seule la famille des intel core serait concernée.

    Sommaire

    Le FPU

    L'unité de calculs flottants, le FPU, possède une série de registres qui lui permet de définir son état courant.
    Lors du basculement d'une tâche à une autre ( context switch), cet état est alors restauré pour retrouver un contexte correspondant au processus en cours.

    Ces opérations peuvent être coûteuses car les registres sont plus gros que ceux du CPU, c'est pourquoi les FPU fournissent une option pour désactiver toute opération flottante (CR0:TS) ; aussi, dès qu'un calcul flottant est appelé une exception est lancée pour réveiller le FPU avant de lancer l'opération normalement.
    Lorsque cette exception (fpudna, FPU Device Not Available) se produit, un gestionnaire de contexte fpu vérifie quel processus a la main sur le FPU à ce moment-là.
    S'il s'agit d'un autre processus, il procède à la sauvegarde puis restauration des registres, ou s'il s'agit d'un nouveau contexte, la sauvegarde puis nettoyage des registres ; sinon, il ne fait rien : c'est le mode «paresseux» (lazy). À la sortie du processus, il ne faut pas oublier de nettoyer ces tables et de (re)lever tous les drapeaux liés à cette exception.

    En mode eager (zélé, volontaire), la sauvegarde/restauration des registres associés au FPU est effectuée quoiqu'il advienne, au moment du changement de tâche et non durant l'exécution de la tache qui vient de prendre la main.

    Le bâton

    Au fil des années, les processeurs ont multiplié les registres pour prendre en charge les instructions de type SIMD, soit une instruction capable de procéder au même calcul sur un ensemble de paires de données.

    Les registres SSE, AVX et MMX restent associés au FPU et seront donc intégrés au mécanisme de sauvegarde/restauration…
    … et ils peuvent contenir jusqu'à 2Kb de données, rien que sur l'AVX.

    [    0.000000] Linux version 4.14.48-intel-pk-standard (oe-user@oe-host) (icc version 18.0.2 (gcc version 7.3.0 compatibility)) #2 SMP PREEMPT Wed Jun 20 13:21:48 UTC 2018                                                              
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'                               
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'                                              
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'                                       
    [    0.000000] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'                                                    
    [    0.000000] x86/fpu: xstate_offset[3]:  576, xstate_sizes[3]:   64                                                
    [    0.000000] x86/fpu: xstate_offset[4]:  640, xstate_sizes[4]:   64                                                
    [    0.000000] x86/fpu: Enabled xstate features 0x1b, context size is 704 bytes, using 'compacted' format.
    

    Pour se faire battre

    Par le biais désormais connu de l’exécution spéculative puis de l'analyse de cache, un attaquant pourra lire ces registres depuis un autre processus, voire, depuis une machine virtuelle. En effet, en mode lazy la sauvegarde des registres d'une tâche s'effectue au cours de l'exécution d'une autre tâche. La spéculation ignorant le drapeau CR0:TS, tout est alors possible.

    Ces registres peuvent contenir des informations sensibles comme des clefs de chiffrement (AES), par le biais des instructions d'accélération matérielle AES-NI.

    Delivers Fast, Affordable Data Protection and Security. AHeum.

    Colin Percival, ex membre de l'équipe sécurité de FreeBSD, a codé un exploit en quelques heures et note, dans un tweet :

    You need to be able to execute code on the same CPU as the target process in order to steal cryptographic keys this way. You also need to perform a specific sequence of operations before the CPU pipeline completes, so there’s a narrow window for execution

    Vous devez être en mesure d'exécuter le code [de l'exploit] sur le même CPU que celui de la cible pour voler les clefs de cette manière. Vous devrez en outre appliquer une suite précise d'opérations avant que la chaîne de traitement du CPU ne se termine ; de fait, la fenêtre de tir est très étroite.

    Ce qui semble vouloir dire que, pour l'instant, coder le vol de données depuis un script venu du Web n'est pas simple à produire. Le temps nécessaire au vol des données des registres est la clef de l'attaque. Il faut le terminer avant que le séquenceur ne préempte la victime et que les valeurs des registres ne soient modifiées.

    Pour y arriver, les chercheurs ont utilisé plusieurs méthodes:

    • Exception

    Il s'agit de coder la fuite de données à l'ombre d'une exception, sciemment provoquée, tel un page fault par exemple. Mais il s'avère que cette solution est trop lente pour récupérer tout un jeu de registres.

    • Intel TSX

    Cette mécanique n'est disponible que sur les architectures récentes (à partir de Haswell) ce qui limite l'angle d'attaque. Cette technologie comporte un jeu d'instructions appelé RTM (Restricted Transactional Memory) qui permet d'annuler un bloc d'exécution en cas d'interruption ; il suffit d'y encadrer le code malicieux, qui va innocemment faire appel au FPU, pour lever l'exception fpudna… Ce serait presque « étudié pour ».

    • Retpoline

    Il s'agit au départ d'une contre-mesure pour spectre.
    Elle vise à fourvoyer sciemment le CPU sur l'adresse de retour d'un RET en plaçant une fausse boucle et donc le forcer à exécuter de manière spéculative un code innocent. Le code malicieux sera donc placé à cet endroit.

    Les correctifs

    Le mode lazy semble moins pertinent aujourd'hui. Les gains en performance sont faibles sous les architectures récentes et surtout selon les usages actuels ; voire, le FPU étant beaucoup plus utilisé dans nos logiciels, son usage serait contre-productif.
    En effet, les compilateurs choisissent d'appeler les instructions SIMD (i.e. -sse) pour optimiser le code des logiciels. De fait, ceux-ci auront de toute façon sauvegardé et restauré les registres du FPU à chaque changement de contexte. La gestion de l'exception sera inutile et va juste alourdir le processus.
    En outre, l'empreinte d'une sauvegarde/restauration serait moindre que celle de la gestion des drapeaux, des registres et de leurs états suite à l'interruption, le transfert de registres FPU en mémoire étant plus rapide car optimisé.

    Il est donc préconisé d'éviter le mode lazy au profit du mode eager.

    • Linux propose le mode eager plutôt que le mode lazy depuis la version 3.7 et l'active par défaut depuis la version 4.9.

      • Ajoutez eagerfpu=on sur la ligne de démarrage pour les versions antérieures à la 4.9.
    • FreeBSD a poussé un patch pour la Release 11.2. C'est un FreeBSD 11.1 qui a servi de cobaye ;

    • DragonFly BSD a poussé un patch dans la version 5.2.2 ;

    • Microsoft poussera un patch en juillet ;

    • OpenBSD a poussé un patch le 14 juin pour la version 6.3 ;

    • NetBSD a poussé un patch le 16 Juin sur MAIN .

    Conclusion

    Ils ne sont pas à la fête cette année, chez Intel. Le point positif est que la correction de cette faille devrait conduire à une amélioration des performances, voire de la consommation d'énergie.

    Theo de Raadt avait prévenu 11 ans auparavant que l'architecture Intel Core2 promettait ce genre de faille :

    These processors are buggy as hell, and some of these bugs don't just
    cause development/debugging problems, but will ASSUREDLY be
    exploitable from userland code.

    Ces processeurs sont bugués comme jamais et nombre de ces bugs ne provoquent pas seulement des soucis de développement et d'analyse, mais ils vont assurément être exploitables depuis l'espace utilisateur.

    Pour la petite histoire, l'embargo s'est terminé le 6 Juin.
    Colin Percival, qui assistait à une conférence de Théo de Raadt lors de la BSDCan 2018, a codé un exploit dans la foulée, qu'il n'a pas encore rendu public. Mais il a convaincu Intel de lever l'embargo au plus vite.
    Il est notable qu'aucun des deux n'avait été mis dans la confidence ; OpenBSD signale même qu'ils en ont fait la demande ( des rumeurs circulaient autour d'une énième version de spectre) mais sans obtenir de réponse.

    Invitation to Embargo? No.
    We asked.

    No reply.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Surface d'attaque des serveurs dans les nuages (cloud) (Journaux LinuxFR)

    Passionnant et très utile article sur le blog en anglais de James Bottomley (merci LWN.net pour le résumé) : il étudie la sécurité des solutions d'hébergement Cloud en se basant sur la solution retenue : serveurs dédiés, serveurs partagés, serveurs virtuels, conteneurs, et en comparant les profils d'attaques verticales et horizontales.

    Comme vous aimez les conclusions rapides, sachez déjà que la solution conteneurs l'emporte haut la main.

    Une attaque verticale c'est du code traversé : de la requête web à la base de donnée jusqu'à la réponse dans le navigateur ou l'application, et qui contient potentiellement des bugs, elle concerne uniquement votre hébergement :

    all code that is traversed to provide a service all the way from input web request to database update to output response potentially contains bugs; the bug density is variable for the different components but the more code you traverse the higher your chance of exposure to exploitable vulnerabilities. We’ll call this the Vertical Attack Profile (VAP) of the stack.

    Une attaque horizontale par contre peut se propager d'hébergement en hébergement :

    In an IaaS cloud, part of the vertical profile belongs to the tenant (The guest kernel, guest OS and application) and part (the hypervisor and host OS) belong to the CSP. However, the CSP vertical has the additional problem that any exploit in this piece of the stack can be used to jump into either the host itself or any of the other tenant virtual machines running on the host. We’ll call this exploit causing a failure of containment the Horizontal Attack Profile (HAP).

    La surveillance est répartie différemment selon l'hébergement, par exemble sur un serveur partagé l'hébergeur doit surveiller toute la pile : le matériel, le noyau, les librairies et le middleware, vous n'êtes responsable que de la couche applicative, tandis qu'avec un conteneur il surveille le matériel et le noyau hôte.

    Mais les attaques sont aussi réparties différemment. Dans un hébergement partagé, si vous attaquez le noyau vous pouvez compromettre tout le système, donc tous les hébergements tandis qu'il est plus difficile de sortir d'un conteneur.

    Compte tenu de quelques autres facteurs que je ne résume pas ici — veuillez lire cet article avant de commenter —, les équipes de sécurité de l'hébergeur bossent « mieux » avec des conteneurs, qui sont donc plus fiables, quoi qu'en dise votre contrat. Mais que ça ne vous dispense pas des opérations habituelles de base : backup, backup ET backup (sauvegarde, sauvegarde ET sauvegarde de leurs petits noms).

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Surface d'attaque des serveurs dans les nuages (cloud) (Journaux LinuxFR)

    Passionnant et très utile article sur le blog en anglais de James Bottomley (merci LWN.net pour le résumé) : il étudie la sécurité des solutions d'hébergement Cloud en se basant sur la solution retenue : serveurs dédiés, serveurs partagés, serveurs virtuels, conteneurs, et en comparant les profils d'attaques verticales et horizontales.

    Comme vous aimez les conclusions rapides, sachez déjà que la solution conteneurs l'emporte haut la main.

    Une attaque verticale c'est du code traversé : de la requête web à la base de donnée jusqu'à la réponse dans le navigateur ou l'application, et qui contient potentiellement des bugs, elle concerne uniquement votre hébergement :

    all code that is traversed to provide a service all the way from input web request to database update to output response potentially contains bugs; the bug density is variable for the different components but the more code you traverse the higher your chance of exposure to exploitable vulnerabilities. We’ll call this the Vertical Attack Profile (VAP) of the stack.

    Une attaque horizontale par contre peut se propager d'hébergement en hébergement :

    In an IaaS cloud, part of the vertical profile belongs to the tenant (The guest kernel, guest OS and application) and part (the hypervisor and host OS) belong to the CSP. However, the CSP vertical has the additional problem that any exploit in this piece of the stack can be used to jump into either the host itself or any of the other tenant virtual machines running on the host. We’ll call this exploit causing a failure of containment the Horizontal Attack Profile (HAP).

    La surveillance est répartie différemment selon l'hébergement, par exemble sur un serveur partagé l'hébergeur doit surveiller toute la pile : le matériel, le noyau, les librairies et le middleware, vous n'êtes responsable que de la couche applicative, tandis qu'avec un conteneur il surveille le matériel et le noyau hôte.

    Mais les attaques sont aussi réparties différemment. Dans un hébergement partagé, si vous attaquez le noyau vous pouvez compromettre tout le système, donc tous les hébergements tandis qu'il est plus difficile de sortir d'un conteneur.

    Compte tenu de quelques autres facteurs que je ne résume pas ici — veuillez lire cet article avant de commenter —, les équipes de sécurité de l'hébergeur bossent « mieux » avec des conteneurs, qui sont donc plus fiables, quoi qu'en dise votre contrat. Mais que ça ne vous dispense pas des opérations habituelles de base : backup, backup ET backup (sauvegarde, sauvegarde ET sauvegarde de leurs petits noms).

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • LinuxFr.org : première quinzaine de juin 2018 (Journaux LinuxFR)

    Nonante huitième épisode dans la communication entre les différents intervenants autour du site LinuxFr.org : l’idée est tenir tout le monde au courant de ce qui est fait par les rédacteurs, les admins, les modérateurs, les codeurs, les membres de l’association, etc.

    L’actu résumée ([*] signifie une modification du sujet du courriel) :

    Statistiques

    Du 1er au 15 juin 2018

    • 1528 commentaires publiés (dont 8 masqués depuis) ;
    • 248 tags posés ;
    • 80 comptes ouverts (dont 6 fermés depuis) ;
    • 35 entrées de forums publiées (dont 0 masquée depuis) ;
    • 20 liens publiés (dont 1 masqué depuis) ;
    • 21 dépêches publiées ;
    • 25 journaux publiés (dont 1 masqué depuis) ;
    • 3 entrées nouvelles, 1 corrigée dans le système de suivi ;
    • 1 sondage publié ;
    • 0 pages wiki publiées (dont 0 masquée depuis).

    Listes de diffusion (hors pourriel)

    Liste webmaster@ - [restreint]

    • R.A.S.

    Liste linuxfr-membres@ — [restreint]

    • [membres linuxfr] Bouffe des 20 ans le 28 juin à Paris

    Liste meta@ - [restreint]

    • [Meta] Incident du jour sur SSL/TLS
    • [Meta] Quel avenir pour la tribune ?

    Liste moderateurs@ - [restreint]

    • [Modérateurs] certificat linuxfr expiré
    • [Modérateurs] Incident du jour sur SSL/TLS
    • [Modérateurs] Certificat SSL
    • [Modérateurs] où se trouve les CSS de Linuxfr
    • [Modérateurs] forum - bug pour s'inscrire ?

    Liste prizes@ - [restreint]

    • [Prizes] LinuxFr prizes recap du samedi 9 juin 2018, 13:35:23 (UTC+0200)
    • [Prizes] J'ai gagné un livre!

    Liste redacteurs@ - [public]

    • [Rédacteurs] Incident du jour sur SSL/TLS

    Liste team@ - [restreint]

    • [team linuxfr] Certificat SSL du site linuxfr.org expiré
    • [team linuxfr] Tweet de Laurent Jouanneau (@ljouanneau)
    • [team linuxfr] Incident du jour sur SSL/TLS
    • [team linuxfr] Purge du compte X [*]
    • [team linuxfr] réouverture de compte
    • [team linuxfr] Organisez des événements dans le cadre de la Fête des Possibles, du 15 au 30 septembre 2018

    Liste webmaster@ — [restreint]

    • R.A.S.

    Canal IRC adminsys (résumé)

    • certificat X.509 périmé (encore merci à tous ceux qui l'ont signalé), passage à Let's Encrypt et communication post-incident
    • renouvellement du domaine (encore merci Yann)
    • dernière version de Jessie (8.11) prévu le 23 juin, et ensuite passage en fin de vie
    • question relative à la configuration DMARC de la liste Sympa des modérateurs qui change le From de l'émetteur dans certains cas
    • rachat de GitHub par Microsoft et dépôts LinuxFr.org. Faut-il bouger et pourquoi.
    • Let's Encrypt et HTTP en clair pour le renouvellement ? Voir par exemple la discussion
    • discussion sur les aspects sécurité de l'affichage distant d'images sur la tribune
    • « 20 ans le bel âge pour mourir », ah non ça parle de Yahoo Messenger, pas de nous
    • 20 ans du site et POSS en décembre ?
    • courriels envoyés pour préparer les entretiens des 20 ans
    • peu de présents aux RMLL dans l'équipe. Snif. Me laissez pas tout seul.
    • migration de alpha et main en Jessie
    • travaux en cours pour nettoyer le dépôt git d'admin (avec des fichiers générés par ansible notamment). Sans oublier de finaliser la partie Let's Encrypt…
    • toujours un conteneur à migrer en Jessie, et ensuite trois en Stretch. Et aussi un hôte Trusty à mettre à jour.

    Tribune de rédaction (résumé)

    • idée de dépêche : NetHammer (finalement parue sous forme de lien)
    • avis de grand calme

    Tribune de modération (résumé)

    • peu de présents aux RMLL dans l'équipe. Snif. Me laissez pas tout seul.
    • du spam
    • améliorations de CSS proposées par voxdemonix
    • les admins du site ont des facilités techniques pour traquer les spammeurs et les multis, par rapport aux modérateurs
    • retour des Geek Faeries

    Commits/pushs de code https://github.com/linuxfrorg/

    • (springcleaning) admin-linuxfr.org en cours de conversion vers Ansible
    • Allow users to choose the source for their tribune smileys in prefere…
    • Add a border for missing title on images
    • Fix max height for image on computer screen

    Divers

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Tutoriel JavaScript : Slider d'images ou de contenu avec jQuery, traduit par D. Mouronval (Développez.com)
    Tutoriel JavaScript : Slider d'images ou de contenu avec jQuery, traduit par D. Mouronval
  • Microsoft offre un nouveau logo à Windows 10 (Génération NT: logiciels)
    Microsoft avait annoncé une refonte visuelle majeure de l'ensemble de ses produits et services, et voilà que l'on découvre les logos en question, y compris celui de Windows 10.
  • Les fonctionnalités de Qt 5.9 bientôt arrêtées : OpenVG et nouveaux composants pour Qt Quick, de la sécurité et de grandes évolutions pour Qt 3D (Développez.com)
    Les fonctionnalités de Qt 5.9 bientôt arrêtées :
    OpenVG et de nouveaux composants pour Qt Quick, de la sécurité et de grandes évolutions pour Qt 3D

    Qt 5.8 est à peine sorti que la liste des fonctionnalités de Qt 5.9 est presque arrêtée (elle le sera définitivement ce jeudi 2 février, si tout va bien). Pas mal de choses arriveront au niveau graphique, notamment pour l'accélération matérielle.

    • Le moteur de rendu de Qt Quick pourra utiliser OpenVG, l'équivalent d'OpenGL pour le rendu vectoriel à deux...
  • Bon plan : WinX HD Video Converter Deluxe pour convertir, redimensionner ou télécharger des vidéos 4K (Génération NT: logiciels)
    WinX HD Video Converter est l'un des outils de traitement vidéo 4K les plus appréciés du marché, il compte aujourd’hui plus de 50 millions d'utilisateurs de par le monde. Une promotion de 50% pour les fêtes de Noël pourrait vous intéresser.
  • Rencontres mondiales du logiciel libre édition 2018 à Strasbourg (Dépêches LinuxFR)

    L’organisation de la 18e édition des Rencontres mondiales du logiciel libre est heureuse de vous annoncer le déroulement de l’évènement dans notre belle ville de Strasbourg, du 7 au 12 juillet 2018.

    NdM. : Les Rencontres mondiales du logiciel libre (RMLL) sont, selon les organisateurs de l’édition de 2011 à Strasbourg (et via Wikipédia) « le plus grand rendez‐vous non commercial dans le monde francophone entièrement consacré au logiciel libre et à ses aspects politiques ». Les éditions précédentes ont eu lieu à Bordeaux (2000, 2001, 2002, 2004, 2010), Metz (2003), Dijon (2005), Vandœuvre‐lès‐Nancy (2006), Amiens (2007), Mont‐de‐Marsan (2008), Nantes (2009), Strasbourg (2011), Genève (2012), Bruxelles (2013), Montpellier (2014), Beauvais (2015) et Saint‐Étienne (2017).

    Souvenez‐vous, c’était en juillet aux RMLL 2017 de Saint‐Étienne, une triste annonce : aucune candidature pour les RMLL 2018.
    Quand la nouvelle arriva aux oreilles d’une poignée d’Alsaciens chevronnés, ces derniers se mirent au défi de mettre sur pied une édition au plus vite pour que les RMLL 2018 puissent avoir lieu. Le comité RMLL vient tout juste de valider cette candidature tardive.

    Alors, tous à vos agendas et rendez‐vous en juillet !

    Pour toute information complémentaire, vous pouvez contacter le président du projet : harmonie@venividilibri.org

    Lire les commentaires

  • Ecrans OLED: Apple serait obligée de payer des pénalités à Samsung (MacBidouille)

    Selon ETNews, Apple devrait payer à Samsung des pénalités de plusieurs centaines de millions de dollars. Cela ferait partie d'une clause du contrat qui lie les deux sociétés pour l'achat de dalles OLED destinées aux iPhone. Or, Apple en aurait commandé bien moins qu'escompté, ce qui ouvre le droit à ce dédommagement.

    Pour éviter de payer cette somme en cash, Apple serait en négociation avec Samsung pour trouver un terrain d'entente plus favorable. L'une des pistes envisagées serait de passer de grosses commandes de dalles OLED destinées aux iPad et ordinateurs portables futurs.

    La fourniture de dalles OLED pour l'iPad est un casse-tête pour Apple depuis le début. Samsung est le fournisseur exclusif, même si LG devrait le rejoindre. Toutefois LG a récemment dû fermer une de ses usines de production à cause d'un problème dans la chaîne d'assemblage, ce qui n'augure rien de bon.

  • Tutoriel 3D - 2D découpe au laser, le retour du tux (Journaux LinuxFR)

    Sommaire

    Tranche de pingouin

    Chose promise, cause perdue. Voici comment transformer un modèle 3D en tranches de bois pour découpe laser. Et en bonus, mon essai initial de découpe en création originale.

    Les outils que j’ai utilisé sont blender et inkscape, et ce juste parce que je les connaissais et donc plus facile pour expérimenter.

    Note aux amateurs de freecad, j’ai commencé à regarder comment ça marche, au cas où ce serait plus simple avec, si jamais je trouve une idée et le courage de refaire un tuto, ça me fera un zeugma.

    Au début était le cube

    Ouvrir un nouveau fichier dans blender et mettre la scène en métrique, car sinon les mesures ne sont pas fixées par taille réelle. Notez que à chaque étape du tuto on aura des soucis de conversion de dimensions, donc en fait… mais bon faut pas en profiter pour être négligent.

    où trouver le changement metrique

    Retirer le cube et ajouter le Tux à la scène. Vous pouvez le trouver ainsi que toutes les licences à Tuuuuuuux

    • Faire face au tux (1 au pavé num)
    • Mettre la vue iso (5 au pavé num)
    • sélectionner le tux
    • passer en editor mode (tab)
    • Sélectionner le dessous des pattes (B) qui est rond
    • Niveler (SZ0)
    • sélectionner les deux centres des pattes, (S) Snap cursor to selected
    • rebasculer en object mode (tab) , transform origine to 3d cursor (object/transform)

    Maintenant, le tux est calé pour avoir le plancher des pattes en comme origine, à la verticale du pseudo centre de gravité que nous venons de choisir.

    mettre la bête en Z 0.

    Il est gros vot manchot ?

    Il nous faut choisir une taille, suffisamment grosse pour que ce soit cool, et pas trop gros pour limiter le prix. Comme l’objet c’est aussi tester une bonne quantité d’épaisseurs pour voir comment ajuster la taille théorique d’une planche par rapport à sa taille réelle (il reste du vide, la colle ça épaissit, les planches sont pas forcément pile à la taille).

    Une planche 2mm chez sculpteo (chez qui je teste la découpe laser) fait 94cm*59cm, il faut aussi essayer de rester dans une seule planche avec tous les morceaux. Le tux est presque aussi large que haut, du coup on cherche une approximation de cube découpé en tranches et étalé fait la même surface en gardant un peu de marge. ça fait 55 tranches, donc une hauteur de 116.875mm

    Et si on l’écartelait ?

    Il nous faut séparer les pattes du corps du tux (ce sont des objets distincts dans le modèle de base en fait et elles s’interconnectent :

    Tux pattes interconnectées

    Il faut les réunir par booléen union au corps pour avoir un seul objet avec un intérieur/extérieur propre.

    tux vue pattes melees

    On peut maintenant appliquer une subdivision sur le tux CTRL+3, parce que le tux aime la douceur, et pas que celle angevine.
    c'est mieux avec les pattes creuses, c'est comme les heures à l'edf

    Lui sculpter des yeux plus sympa, parce que même si tout le monde ne veut pas l’avouer, pour avoir l’air cool faut quand même avoir un peu l’air con.

    tux sculptation des yeux (ou sculptage selon les régions)

    la même en couleur

    Mais quand est-ce qu’on coupe ?

    Patience, il faut regarder un peu avant de couper. Placer un plan plus grand que le tux au sol, genre 20cmx20cm et lui appliquer un booléen d’intersection avec le tux. Et regarder en bougeant le plan sur Z comment seront les tranches.

    On voit deux endroits à problème, les ailes et la queue qui auront des tranches avec plus que un morceau, ce qui est plus complexe à coller.

    par ex les ailes :

    ailes dissociées

    Ce sera lourd à coller ensuite, on peut mais pourquoi…

    autant relier les ailes au tronc le plus légèrement possible, avec un lien de 1mm de large.

    idem au niveau de la queue :

    queue perdue

    J’ajoute un bloc en union au niveau de la queue, le plus ajusté possible par un booléen union.

    jointure queue

    Cela vous permettra de facilement coller, il sera toujours possible de le limer après collage.

    Il faut bien nettoyer le résultat de l’union à l’intérieur du tux, ne pas laisser de cloisons internes, c’est à dire éviter d’avoir des plan à l’intérieur des plans :

    retirer les morceaux à l’intérieur des autres

    Finir de nettoyer en retirant les doublons de vertices, boucher les trous, assurer les normales pour que ce soit clair ce qui est à l’intérieur et à l’extérieur.

    Et si on l’empalait ?

    Pensons au support central qui va nous permettre de facilement positionner et coller les tranches de tux, il va être en trapèze et ressembler à ça au niveau d’une tranche :

    plan des tranches

    Le choix de la découpe sera donc toujours du côté le plus grand, en bas. Donc notre référence pour le positionnement des plans de découpe doit être la face basse de chaque tranche.

    Replaçons le plan à 0.01mm en Z (pour éviter le chevauchement parfait des surface avec les pattes Z=0), pensez à remettre tous les éléments avec scale=1 (Ctrl+A scale and rotation) pour la suite.

    Faire une array de 50 plans en Z espacés de 2.125mm, faire le booléen intersection avec le tux. Lors de la réalisation de mon bureau réel avec des tux, j’ai constaté que l’empilage de x tranches de 2mm n’a pas un résultat de x*2mm, mais avec l’air restant et la colle environ 2.125. Je vais affiner avec ce tux cette estimation mais déjà on part de 2.125mm par tranche.

    On voit les tranches et on voit des petits problèmes

    problème de tranche

    Une tranche qui manque en haut et le cul qui a une mini tranche en bas.

    Diminuer le overlap thresold du booléen pour que le problème du haut disparaisse :

    option thresold

    Remonter le point du bas du tux pour supprimer le second problème et non, ce n'est pas lui mettre un doigt dans le cul car ça ne doit pas rentrer :

    trou du cul de tux

    Nickel !

    bonnes tranches

    Simulons une épaisseur des tranches pour avoir un aperçu du résultat réel, ajoutons au plan un modifier solidify 2mm avec l’offfet à +1 (vers le haut) pour suivre le plan d’avoir la face basse comme référence :

    simul résultat final

    Le résultat est conforme, retirez le solidify, il ne doit pas interférer avec l’étape de création du lien central.

    On l’empale plus ?

    Mais si, mais si. En fait ce n’est pas obligatoire, mais ça facilite le positionnement des étages, et on peut aussi le garde sans le coller. Le lien central doit avoir une forme de trapèze et être parfaitement vertical, car pour l’instant sculpteo ne fait pas de découpe oblique.

    Il doit faire une épaisseur égale à celle du bois. Pour mon exemple je suis resté sur mon approximation (2.125mm) mais normalement il faut prendre 2mm et ajuster avec l’épaisseur du kerf qui est la taille du laser laissant un vide de découpe autour du trait de coupe. En pratique lors de mon premier essai j’ai eu des soucis d’épaisseur et j’ai du poncer mon trapèze. Du coup comme ce n’est pas nécessaire d’ajuster. Je surestime cette fois-ci la taille du trapèze.

    trapeze

    Il faut ajuster sa position pour qu’il traverse tout le tux, coup de chance c’est possible sur ce modèle en plaçant la traverse au centre de la dernière tranche du tux. Mais sinon on l’aurait simplement fait avec deux trapèzes sur deux hauteurs.

    Ajustez la taille en X et la hauteur de la partie haute pour faire joli, elle va dépasser un peu et même arrondir sa tête (note postérieure en pratique le trapèze sera toujours trop court, il faut juger les tranches encore un peu plus grand que 2.125mm).

    tete de tux

    En dessous ajuster aussi la taille en X pour donner un beau trapèze

    mise en trapeze

    On voit que c’est moche au niveau du pied

    tux chaplin

    On va donc remodeler un peu le trapèze pour qu’il soit plus joli à cet endroit.

    remodelage du pied

    aspect final

    Parlons peu, parlons kerf

    Le kerf c’est la partie du bois éliminée par le laser, en pratique la découpe est plus petite que le plan car le laser à une taille non ponctuelle. la découpe de la traverse dans les tranches sera donc un peu plus grande que prévu, et la traverse découpée plus court aussi que prévu.

    Dans ce modèle, on peut ignorer le kerf et accepter les différences, elles seront minimes et les pièces collées seront bien ajustées.

    appliquons donc le booléen différence entre le plan des tranches et la traverse

    Le résultat est difficile à voir mais en vue fil de fer c’est visible

    vue fil de fer du tux trapeziste

    C’est la lutte finale

    On peut passer à la phase finale, on réalise les “modifier” sur les planches, puis on aplati le trapèze en retirant les vertices d’un côté.

    En mode éditeur, on sépare toutes les tranches (P+loose parts en mode édition) et on les étale dans le bon ordre en vue du dessus. Attention, les numéros générés lors de la réalisation de l’array ne sont pas forcément dans l’ordre de Z…

    Pour ne pas me planter, je me met dans une vue adaptée et je bouge une par une les tranches avec des gx0.1 … Je vérifie bien que tout est dans l’ordre puis je met tout le monde à plat (sélectionner tout A puis SZ0)

    Nous allons avoir des soucis de conversion de taille entre blender puis Inkscape puis sculpteo… on commence par poser un étalon dans blender, un plan au sol de 1cm sur 90cm

    90cm etalon

    Le petit oiseau va sortir

    Enfin presque, il faut encore à faire la photo !

    Il existe une option de rendering qui génère du svg.

    Mettons la caméra au dessus en mode orthographique, d’abord une résolution 100% sur un ratio approximatif de mon rectangle incluant tout.

    100 pourcent

    puis placer la caméra assez bien au dessus de la scène et changez les paramètres :

    ortho

    L’échelle orthographique est ce qui correspond au zoom, ajustez la valeur pour que tout rentre au plus juste

    Tout doit rentrer dans la fenêtre de rendering :

    serrez les rangs

    Maintenant depuis les user pref, activez le svg freestyle exporter :

    options rendering

    Et activez les deux options freestyle et svg export depuis les options rendering

    option rendering activee

    Pressez F12, une image svg sera générée dans le répertoire indiqué dans output nommé 0001.svg,

    Ouvrez le dans Inkscape, dégroupez et sélectionnez l’étalon. mettez lui une épaisseur de contour à 0 pour ne pas fausser la taille et regardez sa taille. Dans mon cas je tombe sur 35.719cm.

    Je vais donc changer la résolution de l’image pour ajuster la taille d’un facteur de 90/35.719=2.52

    Je change dans blender le render pour :

    retailler

    Re F12 et vérification.

    Mon étalon fait maintenant 1cm sur 90.01cm.

    aller, on essaie avec un pixel de moins en Y :), on tombe sur 89.987. C’est moins bon, retour en arrière.

    Maintenant que l’on a les bonnes tailles dans Inkscape, il faut nettoyer. Parce que le freestyle a introduit des pixels de temps en temps.

    Je prends donc chaque découpe pour la repositionner au mieux et aussi supprimer les traces.

    points artefacts

    Pour m’aider et aussi servir d’étalon entre Inkscape et sculpteo je place un cadre dans une autre couleur qui délimite ma sélection, 53.5cm de large sur 75cm de haut.

    Et je fais tout rentrer dedans.

    Je vérifie chaque pièce pour assurer qu’il n’y a pas de défaut, et j’assure les contours à 1px et mon cadre avec une couleur différente

    C’est prêt.

    planche à découper

    Pour ceux qui sont plus observateurs que moi, vous verrez que j’ai oublié de grouper une fente dans une tranche. Moi je vais le voir au montage plus tard…

    TuxOlaser

    J’upload chez sculpteo.

    Deux couleurs sont détectées, l"une correspond au noir et l’autre au rouge du cadre. Les mesures n’ont pas été conservées, je ne sais pas pourquoi… mais mon cadre me permet de choisir un ajustement de taille à 26.5% qui me redonne les bonnes dimensions.

    Je peux alors désactiver le cadre rouge dans sculpteo (style 2 sur aucun et voila !

    prêt à couper.

    Livraison comprise il vous en coûtera 53.33€.

    Pour info, les tux du bureau ont coûté moins cher, ils étaient en une seule livraison et un peu plus petits, 72€ les 3.

    Déboitage du tux et montage

    Je hais les video de unboxing, et me voilà moi même à déboiter…

    Bon, puisqu’il faut :

    la boite est bien protégée

    boite

    et la planche dans la mousse

    planche entourée de mousse

    Les pièces sont tenues par du scotch, il faudra faire attention en retirant le scotch de ne pas casser les pièces fragiles.

    scotch sur les pieces

    Je numérote mes pièces avant de défaire, c’est moins cher que de faire des numéros au laser.

    sans scotch à numéroter

    Ensuite on empile jusqu’à la fameuse pièce 33 qu’il faudra redécouper.

    debut d'empilage

    piece 33

    redecoupe de la 33

    piece 33 empilee

    Tadaaaa

    Entrer une description pour l'image ici

    A propos de licences

    J’ai fouillé pour trouver les licences attachées au modèle de base, les voici :

    https://opengameart.org/content/tux

    https://opengameart.org/sites/default/files/license_images/gpl.png

    http://www.gnu.org/licenses/gpl-3.0.html

    https://opengameart.org/sites/default/files/license_images/cc-by.png

    http://creativecommons.org/licenses/by/3.0/

    Les fichiers

    Voila les fichiers sources blender et le inkscape (piece 33 corrigée)

    fichier blender

    fichier svg

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Un petit tour des systèmes de build (Journaux LinuxFR)

    Sommaire

    Parlons un peu de systèmes de build.

    Mon métier consiste à programmer des jeux vidéos destinés aux plates-formes mobiles Android et iOS. Ce qui est commun aux deux plates-formes, c’est-à-dire la plus grosse partie de l'application, est écrit en C++, et ce qui est spécifique à la plate-forme est en Java ou en Objective-C. L'intérêt principal de tout faire en C++ est que les développeurs peuvent lancer l'application directement sur leur poste de travail, sous Linux ou OSX, et tester leurs modifs sans payer le prix d'un émulateur ou du transfert sur un appareil mobile.

    L'inconvénient est que l'on se retrouve à gérer des builds sur quatre plates-formes.

    Pour compiler une application pour iOS il faut nécessairement un projet Xcode, bien que les bibliothèques puissent être compilées classiquement en ligne de commande. Cela signifie qu'il faut maintenir un fichier de projet Xcode ou alors avoir un outil pour le générer.

    Côté Android la compilation du code C++ se fait avec l'outil ndk-build, qui est en réalité une interface à GNU Make. Du coup les fichiers de projet sont évidemment des makefiles mais utilisant des variables et fonctions d'une sorte de framework dans le langage de Make. Là encore il faut maintenir des makefiles pour le projet, ou avoir un outil pour les générer.

    Pour Linux et OSX la compilation peut se faire avec des outils plus classiques mais évidemment pas avec les fichiers de build iOS ou Android. Et encore une fois il faut maintenir ces fichiers de build.

    À moins qu'on ait un outil pour les générer tous…

    Quelques systèmes de build

    Le problème de la gestion de la compilation d'un projet a été posé bien avant ta naissance ; c'est pour cela qu'il n'existe qu'une seule méthode pour le faire, qui fait consensus depuis des décennies.

    Ha ! Ha ! Ha !

    Je peux te citer déjà douze outils de tête. Voyons un peu la présentation faite sur leurs sites respectifs et essayons de rester de bonne foi.

    Make

    D'après le site :

    GNU Make est un outil qui contrôle la génération d'exécutables et autres fichiers non-source d'un programme à partir des fichiers source du programme.

    J'ai mis la description du site de GNU Make mais la première version de Make date d'avril 1976. Elle précède ainsi le projet GNU de sept ans.

    Le principe de base de Make est assez simple, on lui passe un fichier Makefile qui indique « voilà le fichier que je veux créer, il dépend de ces autres fichiers, et voilà les commandes à exécuter pour le créer ». Avec le mécanisme des dépendances l'outil se débrouille pour créer les cibles dans l'ordre.

    Il m'arrive encore de créer des petits Makefiles manuellement mais c'est vite pénible. Par exemple, si un binaire app est créé à partir d'un fichier a.cpp qui inclut un fichier b.hpp qui inclut lui-même un fichier c.hpp, en toute rigueur je dois lister ces trois fichiers en dépendances de la cible app pour que la compilation soit refaite quand l'un d'eux est modifié. On fait ça une fois puis on cherche un truc pour que les dépendances soient gérées automatiquement.

    Un autre point difficile à gérer concerne la dépendance au fichier Makefile lui-même. Par exemple, si j'ajoute une option qui concerne l'édition des liens, celle-ci ne sera pas refaite par défaut.

    Autotools

    [Le premier objectif des Autotools] est de simplifier le développement de programmes portables. Le système permet au développeur de se concentrer sur l'écriture du programme, simplifiant de nombreux détails de portabilité entre systèmes Unix et même Windows, et permettant au développeur de décrire comment construire le programme via des règles simples plutôt que des Makefiles complexes.

    Si vous avez déjà utilisé les autotools vous êtes probablement morts de rire en lisant ce paragraphe. Cette suite d'outils qui se présente comme simple et portable est en réalité ce qu'il y a de plus complexe en système de build et n'est portable que sur les systèmes Unix en évitant soigneusement Windows, le plus déployé des systèmes des trente dernières années.

    Sans doute révolutionnaire à sa création, cet outil a extrêmement mal vieillit. Pour ma part j'ai eu l'occasion de compiler des logiciels tiers sous Windows avec ça et c'était tout simplement l'enfer. J'ai aussi tenté de l'utiliser pour mes propres projets et je me suis arrêté dans le tuto. Depuis je suis convaincu que ces outils sont faits pour les développeurs qui aiment transpirer.

    SCons

    SCons est un outil Open Source de construction de logiciel—plus précisément, une nouvelle génération d'outil de construction. Voyez SCons comme un substitut amélioré et multi-plateforme pour l'utilitaire Make classique avec des fonctionnalités intégrées similaires à autoconf/automake et aux caches de compilation tels que ccache. Pour faire court, SCons est un moyen plus facile, plus fiable et plus rapide de construire un logiciel.

    Wow, là c'est carrément le futur.

    Les fichiers SCons s'écrivent directement en Python, ce qui est assez sympa puisqu'on se retrouve avec un vrai langage et un a accès à un tas de bibliothèques pour décrire le projet.

    J'ai compilé quelques projets en SCons il y a une quinzaine d'années et je crois que je n'ai jamais rien vu d'aussi lent. Et pas seulement parce que c'est du Python…

    Il faut dire que le comportement par défaut de l'outil est de détecter les modifications des fichiers sources en calculant un md5 des fichiers, pour éviter de recompiler des fichiers dont seule la date a changé. Quand on voit le prix d'un md5 je trouve ce choix très discutable. Ce comportement peut être modifié via une option mais même en passant sur une comparaison de timestamps et en appliquant toutes les astuces connues pour le rendre plus rapide, ça reste hyper lent.

    Premake

    Un système de configuration de construction puissamment simple
    Décrivez votre logiciel qu'une seule fois, via la syntaxe simple et facile à lire de Premake, et construisez-le partout.
    Générez des fichiers de projets pour Visual Studio, GNU Make, Xcode, Code::Blocks, et plus sous Windows, Mac OS X et Linux. Utilisez l'intégralité du moteur de script Lua pour que la configuration de la construction devienne du gâteau.

    Pfiou, ça claque ! Ce n'est que le quatrième dans la liste et ça promet déjà de tout résoudre

    Avec Premake les scripts de builds sont écrits en Lua et, à l'instar de SCons, cela permet de « programmer » son build en profitant de tout un tas de bibliothèques.

    Sur le papier c'est très sympa, en pratique ça ne marche pas trop comme attendu. Il s'avère que la syntaxe de Premake est déclarative et ne se mélange pas bien avec le procédural de Lua. Par exemple, si j'écris

    project "P"
    
    if false then
        files
        {
          "file.cpp"
        }
    end
    

    On pourrait croire que le fichier file.cpp ne fera pas partie du projet P, et bien pas du tout, le if ne change rien du tout ici. Difficile de programmer dans ces conditions.

    Nous utilisons Premake depuis presque quatre ans au boulot. Le choix s'est fait en sa faveur bien que l'outil était en alpha car il permettait de générer des fichiers pour Xcode et ndk-build via deux plugins indépendants, en plus des Makefiles classiques. Aussi, il avait l'air facile à hacker ce qui était rassurant.

    Maintenant j'essaye de le remplacer autant que possible.

    Parmi les problèmes récurrents le plus pénible est certainement le message error: (null), sans autre info, que l'outil affiche parce qu'une erreur s'est glissée dans un script. Bonne chance pour déboguer ça. J'aime aussi beaucoup le message Type 'premake5 --help' for help qui s'affiche quand je fais une faute de frappe sur la ligne de commande. Là encore il n'y a aucune information utile et il faut se débrouiller pour trouver où on s'est trompé. Autre souci : il n'y a pas moyen de mettre des propriétés de link spécifiques à une bibliothèque. C'est embêtant quand on a besoin d'un -Wl,--whole-archive.

    Le développement de Premake en lui-même a l'air très laborieux. Quatre ans après il est toujours en alpha, avec une release datant d'août 2017. Le module Xcode a été intégré mais ne gère que OSX. Il a fallu réappliquer toutes nos modifs pour iOS. Quant au module pour le NDK il ne fonctionne plus suite à des changements dans Premake (hey, c'est une alpha…). Là encore il a fallu repatcher.

    Il y a de nombreux contributeurs, dont des gros, mais chacun a l'air d'aller dans sa propre direction sans qu'il y ait d'objectif commun. Il y a par exemple deux générateurs de Makefiles, gmake et gmake2 (j'attends impatiemment yagmake). Il y a des fonctionnalités qui ne marchent qu'avec Visual Studio, d'autres trucs qui fonctionnaient il y a quatre ans et qui ne fonctionnent plus. Ça m'a l'air d'être typiquement le projet qui veut tout faire parfaitement et qui au final ne fait rien de bien. Bref, le produit n'est pas à la hauteur du pitch.

    CMake

    CMake est une suite d'outils open source et multi-plateforme conçus pour construire, tester et empaqueter des logiciels. CMake est utilisé pour contrôler le processus de compilation du logiciel via des fichiers de configuration indépendants du compilateur et de la plate-forme, et il génère des fichiers Makefiles natifs ou des projets qui peuvent être utilisé avec l'environnement de compilation de votre choix.

    CMake est tout simplement mon outil de build préféré de ces quinze dernières années.

    Tout est dit.

    Bon OK, j'explique. CMake lit des fichiers CMakeLists.txt qui décrivent les projets à compiler dans un langage qui lui est propre. À partir de cela il génère des fichiers Makefile ou autres (des projets Xcode ou Visual Studio par exemple) qui permettent de construire le projet.

    Ce qui m'a convaincu dans cet outil est qu'il est plutôt rapide (bien qu'il ne soit pas le plus rapide) et qu'il gère parfaitement les règles de reconstruction des cibles. Par exemple, si j'ajoute un paramètre de ligne de commande pour l'édition des liens, alors l'édition des liens va être refaite. Si je modifie un fichier CMakeLists.txt et que j'exécute make sans relancer CMake, alors CMake se relance tout seul (les Makefiles ont une règle de dépendance vers les CMakeLists.txt, pas con!) Je peux aussi simplement définir les répertoires d'entêtes, options de compilation et autres paramètres spécifiques à chaque projet, en précisant s'il le paramètre doit être visible des projets dépendants ou non.

    L'outil est assez bien fichu et est très populaire dans le milieu du C++.

    Un des points les plus souvent reprochés à CMake est son langage, notamment à l'époque de la version 2 de l'outil qui était excessivement verbeuse et en plus en ALL CAPS. On avait l'impression de se faire crier dessus à longueur de fichier. Aujourd'hui ces soucis sont résolus et le problème semble surtout être que cela fait un langage de plus à apprendre et qui ne sert à rien d'autre (contrairement à SCons et Premake par exemple). Perso je n'y vois pas de difficulté, c'est un bête langage à macros avec des mécanismes bien pratique pour nommer des groupes de paramètres.

    Comme d'habitude la qualification « indépendants du compilateur et de la plate-forme » des fichiers de configuration est très discutable dans la mesure où il y a tout ce qu'il faut pour glisser des commandes système dans le build.

    Les principaux problèmes que j'ai pu rencontrer avec une version récente de CMake concernent l'export de projet. En effet il y a une commande install(EXPORTS) qui permet de créer un fichier de configuration CMake pour inclure la cible en tant que dépendance dans un projet tiers. Malheureusement cette commande exporte par défaut les chemins absolus des dépendances de la cible et il faut bricoler pour exporter les dépendances proprement (en les enrobant dans des cibles importées par exemple).

    Un autre souci est que CMake génère plein de fichiers intermédiaires et qu'avec la pratique généralisée de lancer le build à la racine du projet on se retrouve à polluer toute l'arborescence. Idéalement il faudrait que l'outil refuse de faire un build in-source.

    Ninja

    Ninja est un petit système de construction se concentrant sur la vitesse. Il est différent des autres systèmes de construction sur deux aspects majeurs : il est conçu pour que ses fichiers d'entrées soient générés par un système de construction de plus haut niveau, et il est aussi conçu pour exécuter les builds le plus rapidement possible.

    Ah cool, encore un outil qui se veut rapide, c'est exactement ce qu'il nous manquait. En plus quand on voit SCons et Premake qui se prétendent déjà les plus rapides, on a tout de suite confiance. Cela dit, contrairement à SCons et Premake, Ninja n'est pas un générateur de script de build. Il serait plutôt à comparer à Make.

    Je n'ai jamais utilisé Ninja mais si jamais mes builds devenaient très lents je n'hésiterais pas à y jeter un coup d'œil. À moins que je ne passe à Meson.

    Meson

    Meson est un système open source de construction voulant être à la fois extrêmement rapide et, encore plus important, aussi accessible que possible.

    Bon là je désespère. Encore un outil qui veut être le plus rapide et toujours pas d'outil qui prétend fonctionner correctement.

    Je n'ai jamais utilisé Meson mais on m'a dit que c'est-nouveau-c'est-bien-tu-devrais-essayer.

    Pourquoi pas, enfin moi je cherche surtout un truc qui me génère de quoi faire un build iOS, Android, OSX et Linux. Un truc qui juste marche quoi.

    FASTbuild

    FASTBuild est un système de construction open source et de haute performance supportant une haute montée en charge de la compilation, la mise en cache et la distribution sur le réseau.

    Non mais franchement…

    Là encore je n'ai pas utilisé cet outil. La promesse est sympa mais je ne vois pas trop l'intérêt par rapport aux deux mille autres outils du même genre.

    Sharpmake

    Sharpmake est un générateur de projets et solutions pour Visual Studio. Il est similaire à CMake et Premake, mais il est conçu pour être rapide et passer à l'échelle.

    Celui-ci est développé par Ubisoft initialement en interne et libéré en septembre 2017. Apparemment il n'y a plus d'activité dans le dépôt depuis octobre de la même année. Comme son nom l'indique, les scripts de build sont écrits en C#.

    D'après la doc il sait aussi générer des projets pour Xcode et des Makefiles. J'ai longtemps considéré l'utiliser en remplaçant de Premake mais d'une part c'est écrit en C#, donc c'est mort pour l'utiliser sous Linux, et d'autre part je sens bien que tout ce qui n'est pas Windows et Visual Studio va être bancal.

    Maven

    Apache Maven un outil de compréhension et de gestion de projet logiciel. Basé sur le concept de modèle d'objet de projet, Maven peut gérer la construction, le compte-rendu et la documentation d'un projet depuis un élément central d'information.

    Je ne sais pas vous mais moi je comprends à peine le descriptif. C'est peut-être ma traduction qui est foireuse.

    Maven est un outil du monde Java. J'ai pu l'utiliser un peu via des scripts déjà prêts et il n'y a pas grand-chose à lui reprocher de ce point de vue. Ça m'a l'air assez cool pour la gestion des dépendances.

    C'est un outil qui a l'air très professionnel. Ah mais attend… c'est pour ça qu'on comprend rien au descriptif ! La première version date de 2004 et c'est donc tout naturellement que le langage le plus populaire du début du siècle a été choisi pour les scripts de build, je parle bien sûr du 🎉 XML 🎉.

    Ant

    Apache Ant est une bibliothèque Java et un outil en ligne de commande dons la mission est de piloter des processus décrits dans des fichiers de construction en tant que cibles et points d'extensions dépendant les uns des autres.

    Là encore ça sent le professionnalisme. Les fichiers Ant sont des sortes de Makefiles mais écrits en XML. Faut-il le préciser, Ant est lui aussi un outil du monde Java.

    Gradle

    Accélérez la productivité des développeurs
    Depuis les applications mobiles aux micro-services, des petites startups aux grandes entreprises, Gradle aide les équipes à construire, automatiser et livrer de meilleurs logiciels, plus rapidement.

    Je te laisse deviner à quel langage est destiné cet outil.

    Gradle est l'outil de référence pour les builds des applications Android et c'est donc dans ce cadre que j'ai pu l'utiliser. Les scripts Gradle sont écrits en Groovy, un langage que je n'ai jamais utilisé par ailleurs. Perso je trouve pas ça génial mais c'est peut-être simplement parce ce que c'est loin de ce que l'on fait en C++.

    Les trucs qui me fatiguent le plus avec Gradle sont d'abord le temps de compilation. La compilation du projet Java de nos jeux, une partie qui contient pourtant peu de code, prend quasiment une minute. L'autre souci est de trouver de la doc claire et facile à digérer. La doc officielle représente à peu près 24% du web[référence nécessaire], ce qui fait que la moindre interrogation demande déjà plusieurs heures de lectures, et les exemples de StackOverflow et divers blogs sont assez disparates.

    Que choisir

    Déjà douze outils et rien n'a l'air de dominer le marché :/ Sans doute faudrait-il inventer un nouvel outil pour les remplacer tous, quelque chose d'hyper rapide, évolutif, mais aussi adapté aux processes de déploiement intraprocéduraux sur concentrateur décentralisés pour les plus professionnels d'entre nous, avec des scripts dans un langage populaire, type GOTO++.

    Malgré tout ce choix je n'ai rien trouvé qui résolve mon problème : générer un projet pour iOS, Android, Linux et OSX avec un seul script. Si vous avez une idée, ça m'intéresse.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Neatmail: un client mail minimaliste (Journaux LinuxFR)

    Sommaire

    J’utilise depuis quelque temps un tout petit client mail, qui ne fait vraiment que le minimum, mais a une interface si particulière, qu’il me semble intéressant de vous le présenter. Il s’agit de Neatmail écrit par Ali Gholami Rudi.

    Ali Gholami Rudi

    Je connais Ali Gholami Rudi pour une implémentation de Troff à la fois pertinente en termes de fonctionnalités et dont le code source est très propre. Il a aussi écrit un compilateur (neatcc), une libc (neatlibc), et une implémentation de vi. C’est un développeur qui, plutôt qu’une éthique, semble défendre une certaine esthétique du logiciel, que je qualifierai de minimaliste: code source compréhensible par une personne seule, logiciel qui fait peu de choses, mais le fait bien, etc.

    Neatmail le client mail qu'il s'est programmé, et celui‐ci met en scène toute l’esthétique de son auteur.

    Ce que Neatmail ne fait pas

    Neatmail ne fait que gérer un fichier mbox (une concaténation de mails). Ainsi, il ne sait ni rapatrier, ni envoyer les mails, il ne sait ni extraire, ni ajouter de pièce jointes, etc.

    Mais en vérité, il n’a pas besoin de faire tout cela, car d’autres logiciels le font. Ali Gholami Rudi propose ainsi un pop3 pour rapatrier les mails depuis un serveur pop3, et smtp pour envoyer ses mails à un serveur smtp. Et il existe dans certaines distributions un ripmime pour extraire les pièces jointes d’un fichier mime.

    Ce que Neatmail fait

    Neatmail se contente donc d’effectuer des actions sur un fichier mbox. Les actions de bases sont:

    mk Génère une liste des mails contenus dans la mbox.
    ns Génère une liste des nouveaux mails présents dans la mbox.
    pg Affiche un des mails contenu dans la mbox.

    On peut donc l’utiliser ainsi:

    # Obtient les mails
    pop3
    # liste les mails, triés par fil de discussion
    neatmail mk ‐r ‐st ‐0 18from:48~subject: mbox
    # affiche le 3e mail
    neatmail pg mbox 3
    # prépare une réponse
    neatmail pg ‐r mbox 3 > draft.eml
    vi draft.eml
    # envoie la réponse
    tail ‐n+2 draft.eml | smtp
    # garde une copie de la réponse
    cat draft.eml >> sent
    rm draft.eml

    Mais en outre, neatmail peut interpréter les commandes ex contenues dans la liste des mails. Autrement dit, l’utilisateur est invité à ajouter des commandes à cette liste de mails, et donner le tout à neatmail qui se chargera de l’exécution:

    neatmail mk ‐r ‐0 18from:48~subject > list.nm
    vi list.nm
    neatmail ex < list.nm

    Le commande ex de neatmail

    La commande ex de neatmail prend en entrée une liste de commandes, et les exécute sur un fichier mbox. Elle ignore toutes les lignes hormis celles commençant par deux points (commande ex) ou une lettre majuscule (un mail dans la liste). Les lignes commençant par une lettre majuscule de la forme "R100..", modifient le statut du message dont le nombre suit la lettre (ici, 100). Une telle ligne définit aussi le message actuel, celui sur lequel les commandes sont exécutées. Les commandes ex sont les suivantes:

    rm supprime le message courant.
    cp copie le message courant dans une mbox donnée.
    mv déplace le message courant dans une mbox donnée.
    hd modifie l’entête donnée du message courant.
    ft passe le message courant à une commande donnée.
    w écrit les modifications dans la mbox.
    tj joint les fils de discussion en modifiant l’entête "Reply‐To".
    ch coupe le message à l’offset indiqué.

    Par défaut, ces commandes agissent sur le message courant, mais il est aussi possible d’utiliser des adresses du type 2,5rm pour effacer les messages 2 à 5. Il est aussi possible d’utiliser des expressions régulières du type /regex/rm, où regex est recherché dans le sujet des messages. D’autres champs peuvent être spécifiés en utilisant l’expression ^field:value.

    Un script shell comme interface

    Vous allez certainement penser que l’interface est un peu rude… À vrai dire, Ali Gholami Rudi n’utilise pas neatmail directement: un script shell (m) lui sert d’interface. Et c’est là que le logiciel brille: pour peu que l’on ait un peu l’habitude du shell, on peut se créer une interface sur mesure. On peut par exemple imiter l’interface de mh (un autre client mail non interactif un peu oublié). On pourrait créer une interface interactive. Bref, on peut faire ce qu’on veut.

    J’utilise par exemple l’interface suivante:

    m box inbox # liste les messages contenus dans la mbox inbox.
    m vi 3 # affiche le message 3
    m next # affiche le message 4
    m repl # ouvre mon éditeur sur une réponse préformatée au message 4
    m add f.pdf # joint f.pdf à ma réponse
    m send # envoie ma réponse.
    m R # marque le message 4 comme lu.
    m com # enregistre les changements dans la mbox (ici, change l’entête du message 4)

    Conclusion

    Au jour le jour, je suis plutôt satisfait de l’ensemble. Le fait de travailler sur les mails en local est plutôt agréable: c’est fluide, offre une grande liberté d’organisation, s’associe bien à un système de sauvegarde ou de gestion de version, etc. Le fait que le client ne soit pas interactif apporte un certain confort d’usage: le shell est sous la main si besoin, je retrouve ma session de travail dans l’état où je l’ai laissée d’un jour à l’autre, il est facile d’implémenter des solutions pour revenir en arrière (cp…). Le fait de coupler le tout avec le shell offre une grande liberté dans la création de l’interface utilisateur.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Compilation de VSCode sous Centos 6 (Journaux LinuxFR)

    Il y a quelques mois, le camarade freem< nous avait fait part de ses déception concernant VSCode parce qu'il ne trouvait pas matière à troller de manière satisfaisante.

    J'ai voulu me faire mon propre avis et l'essayer par moi même. Malheureusement, ma machine pro est une Centos 6 et la libc disponible beaucoup trop vielle. Impossible de l'essayer et donc de partager avec vous mes impressions pertinentes et de kalitay :(. Quelques moules m'ont gentiment expliqué que je n'avais qu'à me sortir les doigts du fondement et le compiler moi même, que si je voulais vraiment, je pouvais.

    Plusieurs mois plus tard, j'ai enfin trouvé le temps et la motivation d'essayer. Et à ma grande surprise, ce fut plutôt facile.

    # Installation d'une version décente de GCC, python et git depuis les dépots 
    # Softawre Collections
    sudo yum install centos-release-scl
    sudo yum install devtoolset-7 python27 rh-git29
    
    # Installation de NodeJS et Yarn
    curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
    curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
    sudo yum install nodejs yarm
    
    # Activation de l'environnement de compilation
    scl enable python27 devtoolset-7 rh-git29 bash
    
    # Récupération des sources de VSCode
    git clone https://github.com/Microsoft/vscode.git
    cd vscode
    
    # Augmentation de la limite du nombre de fichiers ouverts à 166384
    # (il peut être nécessaire de modifier /etc/security/limits.conf pour atteindre
    # cette valeur)
    ulimit -n 166384
    
    # Récupération des dépendances
    # (On défini la variable CXX parce que sinon un des makefile utilise 
    # /usr/bin/g++ qui ne supporte pas C++11 )
    CXX=$(which g++) yarn
    
    # Construction du paquet
    yarn run gulp vscode-linux-x64-min
    
    # "Instalation"
    mv ../VSCode-linux-x64 ~/opt/vscode

    Et voilà ! À moi les joies des d'un éditeur moderne !

    $ ~/opt/vscode/bin/code-oss
    /home/killruana/opt/vscode/bin/../code-oss: error while loading shared libraries: libgtk-3.so.0: cannot open shared object file: No such file or directory

    Lourd est le parpaing de la réalité sur la tartelette aux fraises de nos illusions. :'(

    Rendez-vous dans quelques mois pour la suite de mes aventures avec vscode.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Google Chrome vous avertit en cas de fuite de votre mot de passe (Génération NT: logiciels)
    La mouture 79 de Google Chrome est disponible avec un accent essentiellement mis sur le renforcement de la sécurité.
  • Windows 7 : un hack pour contourner la fin du support (Génération NT: logiciels)
    Des utilisateurs pas franchement emballés à l'idée de passer sous Windows 8 et encore moins sous Windows 10 ont récemment trouvé une brèche leur permettant de continuer à profiter gratuitement des mises à jour du support sur Windows 7.