Linux (fr)

  • Espionnage: la FSF deconseille le cloud public, recommande les clouds privés basés sur le libre (Journaux LinuxFR)

    Le journal The Guardian a révélé que la NSA (Agence de Sécurité Nationale des États-Unis) a un accès direct aux systèmes de Google, Facebook, Apple et autres géants de l'Internet, pour espionner les communications qui passent par les États-Unis. John Sullivan, directeur de la Free Software Foundation, conseille d'utiliser des logiciels libres (en cloud privé) plutôt que le cloud public:

    Des intrusions de la vie privée de cette ampleur sont à craindre quand les gens abandonnent leurs données et logiciels locaux pour migrer vers le stockage et les applications en ligne. Les géants come Microsoft, Facebook et Google sont vulnérables aux requêtes du gouvernement exigeant les données des utilisateurs. Pour contrer ce problème, il y a de meilleurs moyens, plus sûrs, de partager des informations en ligne. Les logiciels libres comme GNU MediaGoblin, StatusNet, Diaspora, pump.io, Tahoe-LAFS, FreedomBox et SparkleShare travaillent d'arrache-pied pour créer un monde moins centralisé, un monde dans lequel les utilisateurs maintiennent le contrôle sur leurs données et sur les logiciels qui accèdent à ces données, mais un monde qui est tout aussi pratique et social que son équivalent centralisé.

    MediaGoblin: Publication de media. Similaire à Flickr, YouTube, SoundCloud.
    StatusNet: Micro-blogging. Similaire à Twitter.
    Diaspora, pump.io, Freedombox: Réseau social décentralisé. Similaire à Facebook.
    Tahoe-LAFS, SparkleShare, CmisSync: Synchronisation de fichiers. Similaire à Dropbox.
    Zimbra: Email. Similaire à Gmail/Calendar.

    Lire les commentaires

  • Votre Service Client "La Fibre" (Journaux LinuxFR)

    Chère cliente, cher client,
    Chaque année plus d’1 million d’impacts de foudre ont lieu en France
    (blabla)

    C'est pourquoi, en cas d'absence prolongée ou en période d'orages, nous vous recommandons >de protéger votre Livebox en la débranchant de la prise téléphonique puis de >l'alimentation électrique.
    (blabla)

    Votre service clients La Fibre

    fear
    j'espère ne jamais avoir à faire avec eux, s'ils pensent qu'une LiveBox Fibre Optique se débranche de la Prise Téléphonique.

  • L’heure du test — fork 1 — Void (Linux) (Dépêches LinuxFR)

    Voici un tour d’horizon d’une distribution peu connue mais néanmoins intéressante : Void (Linux) !


    Void est une distribution indépendante, créée de zéro (from scratch, pas une divergence de Debian ou autres). Elle est développée par une communauté de volontaires et vous pouvez facilement y contribuer via ses dépôts sur GitHub. C’est une distribution avec mise à jour en continu (rolling‐release), tournée vers les ordinateurs de bureau et qui se veut légère et performante.


    NdM. : Cette dépêche est inspirée par L’heure du test — épisode 1 — NixOS postée par gusterhack. Si vous aussi vous voulez parler de votre distribution ou logiciel libre préféré, n’hésitez pas.

    Sommaire

    La distribution Void

    L’aventure Void Linux a commencé en 2008 lorsque Juan Romero Pardines, un ancien mainteneur de NetBSD voulait tester son gestionnaire de paquets xbps. Depuis, elle a grandi pour avoir tout ce qu’il faut. Le système de base est totalement libre, dépourvu de blobs binaires venus des constructeurs. Les utilisateurs disposent cependant du dépôt non‐free pour installer des bouts de code propriétaires.

    D’un point de vue utilisateur

    Void est une distribution avec mise à jour en continu (rolling‐release), orientée bureau et qui se veut légère et performante. Elle se destine principalement à des utilisateurs de niveau intermédiaire ou avancé et peut être conseillée si vous voulez :

    • avoir des logiciels toujours à jour ;
    • ressusciter une vieille machine ;
    • développer en utilisant plein de bibliothèques récentes ;
    • utiliser une distribution avec une approche moderne (gestion des paquets, système d’initialisation…).

    En revanche, Void n’est pas à conseiller si vous cherchez :

    • une distribution ultra simple à installer et à configurer ;
    • une logithèque ultra fournie ;
    • une distribution ultra stable qui doit tourner sans redémarrage pendant dix ans.

    D’un point de vue technique

    Void est une distribution indépendante, créée « from scratch » (pas une divergence de Debian ou autres). Elle est développée par une communauté de volontaires et vous pouvez facilement y contribuer via ses dépôts sur GitHub.

    Void est disponible pour les architectures x86 et ARM, ainsi que compilé avec glibc (la bibliothèque C de GNU) ou avec musl-libc (une alternative plus légère à glibc).

    Void est une rolling‐release, c’est‐à‐dire que le système et les paquets sont mis à jour en continu ; il n’y a pas de « version » de la distribution. Void utilise son propre gestionnaire de paquets, xbps, qui est très similaire aux classiques apt, dnf, pacman et autres. Il y a un dépôt officiel ainsi qu’un dépôt « non‐free » et il est relativement facile de faire ses propres paquets.

    Enfin, Void utilise par défaut LibreSSL (l’alternative à OpenSSL développée suite à la faille de sécurité Heartbleed) ainsi que le système d’initialisation runit (alternative à systemd).

    Installation et configuration

    L’installation de Void est très classique et bien décrite dans la page Installation du Wiki :

    • on télécharge une image ;
    • on amorce le système sur l’image et l’on arrive sur un shell ;
    • on se connecte en root (mot de passe : « voidlinux ») ;
    • on peut passer le clavier en français avec loadkeys fr et voir la doc avec Alt + F8 ;
    • on lance l’installeur avec void-installer ;
    • on règle les classiques configurations et partitionnement, puis on lance l’installation ;
    • on redémarre sur le système installé et l’on termine la configuration comme décrit dans la page Post‐installation du Wiki.

    Le système d’initialisation runit

    Void utilise runit pour initialiser le système et gérer les services, ce qui en fait l’une des rares distributions actuelles à ne pas utiliser systemd (sans entrer dans le débat pro ou anti systemd). À l’usage basique de tous les jours, runit se révèle vraiment facile et rapide ; voir la doc runit dans le Wiki.

    Activer ou désactiver des services

    Les services disponibles sont dans /etc/sv/. Pour activer un service, il suffit d’ajouter un lien symbolique dans /var/service/. Par exemple, pour activer sshd :

    # ln -s /etc/sv/sshd /var/service/
    

    Pour désactiver un service, il suffit de supprimer le lien symbolique correspondant, dans /var/service/. Par exemple, pour désactiver sshd :

    # rm -r /var/service/sshd
    

    Gérer des services

    L’utilitaire sv permet de démarrer (start), d’arrêter (stop) ou d’interroger (status) un service. Par exemple, pour interroger sshd :

    # sv status sshd
    run: sshd: (pid 775) 17011s
    

    Le gestionnaire de paquets xbps

    La gestion des paquets est expliquée en détails dans la page xbps du Wiki. À l’usage, xbps est vraiment rapide (en même temps, ça vaut mieux car le système est en rolling‐release et il y a des mises à jour tous les jours).

    Fonctionnalités de base

    Installer un paquet (par exemple le client IRC hexchat) :

    # xbps-install hexchat
    

    Chercher un paquet parmi les paquets disponibles dans les dépôts :

    $ xbps-query -Rs hexchat
    [*] hexchat-2.12.4_2        A GTK+ based IRC client successor of Xchat
    [-] hexchat-lua-2.12.4_2    A GTK+ based IRC client successor of Xchat - lua plugin
    [-] hexchat-perl-2.12.4_2   A GTK+ based IRC client successor of Xchat - perl plugin
    [-] hexchat-python-2.12.4_2 A GTK+ based IRC client successor of Xchat - python plugin

    Afficher les informations d’un paquet installé :

    $ xbps-query hexchat
    architecture: x86_64
    build-date: 2017-04-12 08:50 CEST
    ...
    short_desc: A GTK+ based IRC client successor of Xchat
    source-revisions: hexchat:66e4fa9536
    state: installed
    

    Mettre à jour le système :

    # xbps-install -Su
    

    Supprimer un paquet :

    # xbps-remove hexchat
    

    Supprimer tous les paquets obsolètes :

    # xbps-remove -Oo
    

    Afficher les autres noyaux disponibles sur la machine :

    $ vkpurge list
    4.10.10_1
    4.9.11_1
    

    Supprimer un noyau :

    # vkpurge rm 4.9.11_1
    

    La politique de paquets de Void

    Malgré quelques manques (notamment KDE 5), la logithèque de Void est assez fournie, au moins 8 000 paquets. Ce nombre peut paraître faible en comparaison des 43 000 paquets proposés par Debian, mais ce n’est pas tout à fait le cas, car Void réutilise les gestionnaires de paquets proposés par les différents langages et outils. Ainsi, là où Debian propose de nombreux paquets pour les bibliothèques Haskell, les packages LaTex et les greffons Vim, Void préfère généralement passer par les gestionnaires respectifs (cabal / stack, tlmgr, vundle), ce qui n’est pas comptabilisé dans les paquets de la distribution.

    Écrire et soumettre des paquets

    Void permet bien entendu de compiler et d’installer des logiciels « à la main ». Cependant, si vous voulez faire une installation propre, vous pouvez créer un paquet et l’installer via le gestionnaire xbps (voir la page xbps-src dans le Wiki). Et si votre paquet fonctionne bien, vous pourrez même facilement le proposer aux mainteneurs de Void pour qu’il soit intégré dans le dépôt officiel.

    Initialisation d’un dépôt de paquets

    Pour créer des paquets Void, le plus simple est de cloner le dépôt officiel de Void, puis d’en diverger en y créant ses paquets.

    Le dépôt de paquets contient un programme xbps-src pour compiler des paquets. Pour pouvoir l’utiliser, il faut d’abord initialiser un environnement de compilation :

    $ ./xbps-src binary-bootstrap

    Créer un paquet

    Imaginons, par exemple, que vous voulez empaqueter le programme GNU-hello. Commencez par créer une branche « hello » dans le dépôt de paquets :

    $ git checkout -b hello

    Initialisez un nouveau paquet hello :

    $ xnew hello

    Ceci crée un fichier srcpkgs/hello/template qui contiendra la description du paquet et les instructions de compilation. Éditez ce fichier pour votre paquet :

    # Template file for 'hello'
    pkgname="hello"
    version="2.10"
    revision=1
    build_style=gnu-configure
    distfiles="https://ftp.gnu.org/gnu/hello/${pkgname}-${version}.tar.gz"
    checksum="31e066137a962676e89f69d1b65382de95a7ef7d914b8cb956f41ea72e0f516b"
    short_desc="Produces a familiar, friendly greeting"
    homepage="https://www.gnu.org/software/hello/"
    license="GPL"

    Vous pouvez déterminer la somme de contrôle avec la commande :

    $ xgensum -f srcpkgs/hello/template

    Une fois le fichier de configuration écrit, lancez la compilation et la création du paquet :

    $ ./xbps-src pkg hello

    Si tout s’est bien passé, vous pouvez alors installer votre paquet sur votre machine :

    # xbps-install --repository=hostdir/binpkgs/hello/ hello
    

    Soumettre un paquet

    Si votre paquet fonctionne correctement, vous pouvez le proposer à la communauté pour qu’il soit intégré dans les paquets Void officiels. Tout d’abord, comme Void est disponible pour plusieurs architectures et libc, il faut commencer par tester si le paquet peut se compiler correctement sur d’autres architectures, par exemple pour ARM7, avec musl-libc :

    $ ./xbps-src -a armv7l-musl pkg hello

    Créez ensuite un commit décrivant votre contribution et envoyez‐le dans une branche spécifique sur le serveur :

    $ git add srcpkgs/hello/template
    $ git commit -am "New package: hello-2.10"
    $ git push -u origin hello

    Il ne vous reste plus qu’à vous connecter sur GitHub et à créer une demande d’intégration _— pull request — de votre commit dans le dépôt officiel. Si des modifications vous sont demandées, pensez à travailler toujours sur le même commit et la même branche distante :

    $ git commit -a --amend
    $ git push -f
    

    Conclusion

    Void (Linux) est une distribution peu connue mais dont les choix techniques originaux sont plutôt appréciables à l’usage. Elle est légère, rapide, très à jour et facile à configurer « dans l’esprit UNIX ». En revanche, elle n’est pas destinée à des débutants et n’a pas la logithèque la plus complète qui soit.

    Personnellement, j’utilise Void tous les jours pour des usages classiques de bureautique, Web, multimédia, ainsi que pour développer en C++ et en Python avec toutes sortes de bibliothèques. En un an d’utilisation, je n’ai pas réussi à la casser ni à avoir de conflits majeurs. En deux occasions, la mise à jour du système ne fonctionnait pas, mais à chaque fois il a suffit d’attendre un jour ou deux pour que les mainteneurs corrigent le problème et que les mises à jour fonctionnent à nouveau.

    Lire les commentaires

  • PROXMOX VE a 10 ans (Dépêches LinuxFR)

    Cette semaine marque le dixième anniversaire du projet libre Proxmox Virtual Environment (VE), développé et maintenu par Proxmox Server Solutions, basé en Autriche.

    Proxmox VE

    Proxmox VE 0.9, la plate‐forme libre de virtualisation, a été annoncée dans une première version publique il y a dix ans le 15 avril 2008 et la solution a permis de gérer KVM et OpenVZ sur une seule interface de gestion. Depuis lors, cinq versions majeures et de nombreuses mineures ont été produites.

    Aujourd’hui, la version actuelle de Proxmox VE 5.1 permet aux administrateurs de contrôler l’ensemble de leur environnement informatique virtualisé avec un seul outil de gestion. Proxmox VE prend en charge deux technologies de virtualisation (KVM et LXC – qui a remplacé OpenVZ avec la version 4.0) et offre une API REST, un réseau flexible, des fonctionnalités pour offrir une grappe de serveurs (cluster) à haute disponibilité, un stockage défini par logiciel, des fonctionnalités de sauvegarde et restauration, un pare‐feu, et beaucoup d’autres outils prêts à l’emploi et de technologies libres intégrées. Depuis la version 5.1 Proxmox VE aussi intègre Ceph storage 12.2.x Luminous LTS, pour l’implémentation d’infrastructures hyper‐convergentes.

    Il y a dix ans, les développeurs de Proxmox ont été les premiers à relier les deux technologies de virtualisation KVM et conteneurs (initialement OpenVZ) sur une seule plate‐forme et à les rendre facilement gérables via une interface Web. Lors du lancement du développement de Proxmox VE en 2007, les deux fondateurs de Proxmox, Dietmar Maurer (CTO) et Martin Maurer (CEO), l’ont conçu comme un CD d’installation « bare‐metal » contenant une version très modifiée de Debian GNU/Linux optimisée pour un serveur de virtualisation. Ils ont utilisé un noyau Linux modifié qui comprenait tout le nécessaire pour KVM et OpenVZ. Peu de temps après le lancement de la 0.9, la première version stable de Proxmox VE 1.0 était disponible, en 2008, avec de nouvelles fonctionnalités. Il devenait alors possible pour les utilisateurs de virtualiser des applications GNU/Linux et Windows exigeantes, d’appliquer la migration en direct et de sauvegarder leurs données via vzdump depuis l’interface graphique.

    « Il est difficile de croire que Proxmox VE a dix ans aujourd’hui, et c’est formidable de voir à quel point il est devenu populaire » dit Martin Maurer, CEO de Proxmox. « Lors de la première publication de Proxmox VE, il n’existait aucune interface de gestion sur le marché permettant de gérer facilement KVM ou OpenVZ. Nous étions, pour autant que je sache, l’un des premiers projets à intégrer la prise en charge des machines virtuelles et des conteneurs sur une interface graphique centrale. Proxmox VE a été conçu pour répondre à ce besoin. Au fil des années, il a ajouté de nombreuses fonctionnalités et a été dimensionné pour répondre aux exigences des entreprises et des utilisateurs souhaitant disposer d’une plate‐forme libre pour gérer facilement la virtualisation, le réseau et le stockage. »

    Aujourd’hui, Proxmox VE est traduit en 19 langues et compte environ 200 000 hôtes installés dans plus de 142 pays. La société Proxmox Server Solutions offre un accès par abonnement au support technique et aux paquets du référentiel stable. Plus de 11 000 clients allant des moyennes entreprises aux grandes entreprises, aux organismes sans but lucratif et aux particuliers ont un abonnement actif. Les forfaits varient entre 75 et 800 euros par processeur et par an, et permettent d’accéder au support technique et au référentiel d’entreprise stable qui fournit des paquets fortement testés et validés.

    Proxmox VE, un projet libre de dix ans, sous licence libre GNU Affero GPL v3, offre des versions régulières et continues, et est devenu l’alternative libre aux solutions propriétaires pour la virtualisation de centre de données (datacenters) ou pour des solutions complexes de gestion d’informatique en nuage (cloud).

    « Proxmox VE est devenue une puissante plate‐forme de gestion de virtualisation d’entreprise qui permet à nos utilisateurs de gérer facilement toute leur infrastructure virtualisée », explique Martin Maurer. « Nous avons parcouru un long chemin maintenant et nous ne serions pas là sans nos clients, nos utilisateurs et nos partenaires qui nous soutiennent et nous poussent constamment avec des commentaires et de nouvelles demandes de fonctionnalités. Plus important encore, nous sommes reconnaissants de tout le travail intense et des toutes les contributions de notre fantastique équipe. La conception architecturale de notre plate‐forme et le modèle de développement open-source nous permettent de nous adapter constamment aux dernières technologies et d’adapter Proxmox VE aux demandes informatiques croissantes de notre communauté. Pour notre prochaine version, Proxmox VE 5.2, nous avons par exemple Cloudinit sur la feuille de route qui, nous l’espérons, fera le bonheur de beaucoup de nos utilisateurs. »

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Neatmail: un client mail minimaliste (Journaux LinuxFR)

    Sommaire

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

    Ali Gholami Rudi

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

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

    Ce que Neatmail ne fait pas

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

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

    Ce que Neatmail fait

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

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

    On peut donc l’utiliser ainsi:

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

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

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

    Le commande ex de neatmail

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

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

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

    Un script shell comme interface

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

    J’utilise par exemple l’interface suivante:

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

    Conclusion

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

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Lug : Mardi 3 décembre à Grenoble : conférence "Avoir une vie privée sur Internet" (Dépêches LinuxFR)

    La Guilde (Guilde des utilisateurs d'informatique libre du Dauphiné) organise une conférence sur la vie privée sur Internet le mardi 3 décembre 2013 !

    La conférence sera animée par Antoine Duparay, contributeur Mozilla, et s'organisera autour des questions suivantes :

    Quelles traces laissons-nous en utilisant le Web ? Quelles en sont les implications ? Que pouvons-nous faire pour nous protéger ? Observons le phénomène grâce au greffon LightBeam (ex Collusion) pour Firefox et découvrons les réglages applicables pour se protéger. En ces temps de PRISM et de Cloud Computing, il est temps de réfléchir à la place que nous donnons réellement à nos données.

    La conférence se tiendra à l'amphithéâtre E1 de l'ENSIMAG, sur le campus de Saint Martin d'Hères, le mardi 3 décembre 2013 à partir de 19h.

    Toutes les informations détaillées sont disponibles sur le site de la Guilde.

    Lire les commentaires

  • Prince: bronsorisé :( (Journaux LinuxFR)

    Il était tout à la fois Marvin Gaye, Sly Stone, James Brown, Georges Clinton et Jimi Hendrix.
    le Frank Zappa de la musique noire, fantasque, exigeant mais surtout génial.
    R.I.P

    Lire les commentaires

  • Dr. Geo 18.06 (Dépêches LinuxFR)

    GNU Dr. Geo est un logiciel de géométrie interactive euclidienne du plan, pour une utilisation à l'école secondaire et primaire. Il permet d'organiser des activités pédagogiques dans l'enseignement de la géométrie, voire d'autres domaines liés des mathématiques.
    Intégré à un environnement dynamique de programmation Smalltalk, il propose également une approche de la géométrie dynamique par la programmation, soit par l'utilisation de script(s) intégré(s) à une figure, soit par une description purement programmatique d'une construction géométrique. En outre, Dr. Geo est toujours modifiable depuis lui-même, fonctionnalité héritée de son environnement de développement.

    Dr. Geo 18.06

    La version 18.06 fait suite à la version 17.07 sortie en juillet 2017. Une grande partie de l'effort fut de porter le code de la version 3 à la version 7 de l'environnement Smalltalk Pharo avec lequel est développé Dr. Geo. Outre les corrections de bugs inhérentes à ce portage, quelques fonctionnalités nouvelles ont fait leur apparition.

    Nouvelles fonctionalités

    Dans Dr. Geo, un script est défini par une classe Pharo. L'utilisateur insère alors une instance du script dans la figure géométrique ; il lui associe si nécessaire d'autres objets géométriques de la figure en paramètres. Un script effectue un traitement ad-hoc, calculs ou modifications sur d'autres objets de la figure tels que programmés dans les méthodes du script. Une fois défini, le script est facile à utiliser.

    L'édition de script se fait maintenant à l'aide d'un outil d'édition de code dédié, et non plus par l'intermédiaire du navigateur de code de Pharo, qui est pour le moins impressionnant.

    À noter que l'ajout d'attribut au script nécessite toujours l'utilisation du navigateur de code de Pharo. Ce besoin est nécessaire uniquement lorsque le script a un état dont il doit se souvenir tout au long du cycle de vie de la figure.
    Editeur de script

    Le manuel utilisateur a une section dédiée au script.

    Inspecteur sur code de figures programmées

    Une figure programmée est l'autre forme d'utilisation de la programmation dans la géométrie dynamique. Dans cette approche la figure géométrique est entièrement définie par un code Smalltalk et l'utilisation de l'API dédiée.

    Il est dorénavant plus aisé de gérer ses fichiers de figures programmées. Le nouvel inspecteur de Pharo — outre l'inspection d'attributs d'instance de classe — propose aussi de voir, d'exécuter, d'éditer et de créer les scripts de figures programmées.
    Inspecteur sur scripts de figures programmées

    Zoom positionnel

    Pour zoomer dans une figure l'utilisateur dispose du widget de molette orange en haut à droite de chaque figure ou de la molette de la souris. Le zoom par la souris est maintenant positionnel, focalisé sur la position du curseur souris ; celui par le widget reste, lui, centré au milieu de la zone visible de la figure.

    Détection de polygone sans surface

    Lorsqu'un polygone est sans surface (vide), Dr. Geo ne détectera que ses lignes, et non plus sa surface intérieure puisqu'elle n'existe pas.
    Polygone sans/avec surface

    Tests unitaires basés sur figures programmées

    Le petit corpus de figures programmées distribué avec Dr. Geo est également utilisé pour définir une série supplémentaire de tests unitaires.

    Partage réseau

    Dans le cadre d'une activité pédagogique en salle informatique, distribuer aux élèves des fichiers de figures est pratique. Dr. Geo propose maintenant une fonctionnalité de partage en réseau local, indépendante des services du réseau local (NFS, Samba, Windows, etc.). La marche à suivre est la suivante :

    1. L'enseignant sauve les documents à partager dans son dossier DrGeo.app/MyShares : MyShares
    2. L'enseignant active le partage réseau local depuis le navigateur de préférences de DrGeo (menu Système, Préférences) : Activation du partage
    3. L'élève, depuis l'outil habituel d'ouverture de figures, parcourt les figures partagées (bouton 'Partage enseignant') : Parcourir les figures partagées

    Cette fonctionnalité peut s'utiliser de façon croisée avec Linux, Mac et Windows.

    Thèmes graphiques

    Le navigateur de préférences (menu Système, Préférences) donne accès à deux thèmes graphiques, hérités de Pharo :

    • Thème sombre, par défaut, à privilégier lorsque Dr. Geo est utilisé de façon autonome sur un seul poste.
      Thème sombre

    • Thème clair, à utiliser en vidéo projection, par exemple, car le thème sombre manque de contraste.
      Thème clair

    Option plein écran

    Depuis le menu système, l'utilisateur peut basculer en affichage plein écran ; le système hôte est alors complètement masqué. Pratique pour que les élèves se concentrent sur leur activité de géométrie dynamique.

    Les autres modifications de la version 18.06.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Tour d'horizon des éditeurs de texte pour le terminal (Journaux LinuxFR)

    Sommaire

    Le nombre d'éditeurs de texte disponible sur nos systèmes d'exploitation est très important, même en se limitant à ceux s'exécutant dans un terminal.

    La sélection suivante est donc forcement partielle. Dans la suite je parlerais des principaux éditeurs, de leurs clones, des anciens moins connu et enfin des plus récents.

    La famille vi

    La particularité de cette famille est d'être modale, les touches ont une action différente selon le mode dans lequel on est. De plus vi est dans la norme POSIX, donc tous les OS de type POSIX embarque un clone de vi.

    Voir l'histoire de vi : wikipedia - Vi History

    elvis

    Elvis est un des premiers clone de vi (avec Stevie)

    debian: tracker.debian.org/pkg/elvis

    nvi

    Nvi est une réécriture du vi des BSD 4.4 à partir du code d'Elvis.

    debian: tracker.debian.org/pkg/nvi

    vim

    Vim est certainement le clone de vi le plus utilisé aujourd'hui. Il est disponible sur de nombreuses plateformes et une vie entière ne suffit pas a faire le tour de ses fonctions.

    debian: tracker.debian.org/pkg/vim

    neovim

    Neovim est un fork de vim.

    Voir la dépêche sur le sujet, neovim une refonte de vim pour le 21e siecle

    debian:

    kakoune

    Éditeur qui s'inspire de vim mais a sa propre philosophie (voir le
    répertoire doc/)

    debian:

    La famille emacs

    M-x editeur

    wikipedia - Liste des implémentations d'Emacs

    emacs

    On ne le présente plus, le plus difficile étant de trouver quelque chose qu'on ne peut pas faire dans emacs.

    debian: tracker.debian.org/pkg/emacs24

    note: se lance en ligne de commande avec l'option -nw pour
    --no-window-system

    uemacs

    Version légère et portable d'emacs.

    Linus Torvalds maintient une ancienne version de uemacs et l'a fait
    depuis évoluer.

    mg

    Version très portable de uemacs nommé initialement Micro GNU/emacs.

    debian: tracker.debian.org/pkg/mg

    zile

    zile est une implémentation d'emacs plus limité et plus légère.

    debian: tracker.debian.org/pkg/zile

    La famille à menu

    Les éditeurs de cette famille ont comme point commun, d'être plus
    abordable pour le novice en fournissant un menu permettant l'auto-découverte.

    nano

    Nano est la version GNU de Pico (Pine Composer), l'éditeur de texte du client mail Pine.

    debian: tracker.debian.org/pkg/nano

    Note: Pico est aussi disponible dans Debian,
    packages.debian.org/jessie/alpine-pico

    Jed

    Jed associe les fonctionnalités d'un éditeur très extensible pour développeur à une interface facile basé sur un menu.

    • url: www.jedsoft.org/jed
    • filiation:
    • wikipedia: wikipedia - JED

    • code source: git://git.jedsoft.org/git/jed.git

    • début du développement: 2006 ?

    • langage : C + S-Lang

    • utf-8: ok

    debian: tracker.debian.org/pkg/jed

    ne

    ne, le nice editor semble être un bon compromis entre richesse des
    fonctions et simplicité. Cet éditeur possède un jeu de fonctions
    (commandes) qui peuvent être lié a une séquence de touche ou à une
    entrée de menu.

    debian: tracker.debian.org/pkg/ne

    mcedit

    mc (mindnight commander) propose un éditeur très complet, mcedit.

    debian: tracker.debian.org/pkg/mc

    kaa

    Encore un éditeur avec un menu, celui-ci extensible en Python.

    debian:

    Les autres

    Des éditeurs qui ne rentrent pas dans les précédentes catégories ou qui peuvent les imiter toutes.

    Joe

    Un des plus ancien challenger.

    debian: tracker.debian.org/pkg/joe

    Fork www.mirbsd.org/jupp.htm

    Diakonos

    L'objectif principal de Diakonos est de proposer un éditeur en console avec les raccourcis clavier classique d'une application graphique tel un navigateur ou un traitement de texte.

    debian: tracker.debian.org/pkg/diakonos

    Yi

    Yi est un éditeur de texte écrit et extensible en Haskell.

    debian: tracker.debian.org/pkg/yi

    Textadept

    Textadept est un éditeur graphique qui propose aussi une interface
    curse. Celui-ci est extensible en Lua. L'auteur utilisant le composant Scintilla pour la version graphique, celui-ci a développé une version pour curse scinterm

    Spacemacs

    Spacemacs n'est pas un éditeur, mais une (énorme) configuration pour
    emacs. Leur baseline "The best editor is neither Emacs nor Vim, it's
    Emacs and Vim!" et leur originalité un <leader> configuré sur espace qui ouvre un Menu permettant de découvrir les fonctions disponibles.

    Conclusion ?

    Pas de conclusion, si vous voulez en découvrir encore d'autre, voici deux listes :

    Mais attention de ne pas vous perdre par ici texteditors.org !

    Lire les commentaires

  • Galère lors de l'achat d'un livre numérique (Journaux LinuxFR)

    Les murs de mon appartement étant déjà couverts de livres j'ai fini par me tourner (dans quelques cas) vers les fichiers numériques au lieu de continuer à acheter des livres papier.

    Malheureusement cet achat n'est pas toujours simple et rapide quand on est un utilisateur qui refuse les DRM et qui utilise Linux. En voici un exemple concret.

    Il y a quelques jours je vois que la traduction française du roman "Artemis" d'Andy Weir est disponible à la vente.
    C'est un bon candidat pour un achat au format numérique puisque l'écart entre le prix de la version numérique (12,99 €) est assez conséquent par rapport à celui de la version papier (21,5 €). Ce n'est hélas pas le cas de tous les livres !

    Je pars donc en chasse pour trouver un site le proposant à la vente dans une version Epub sans DRM. Évidemment impensable de l'acheter sur Amazon qui ne propose que des fichiers au format propriétaire pour ses liseuses Kindle. Pourquoi pas la FNAC ? Tout semble OK, le site indique bien que le Epub ne comporte pas de DRM. Allez hop je l'achète.

    Bon y'a un souci.


    Mail 1 :

    Bonjour,

    Je viens de commander un livre numérique sur le site de la fnac et je n'arrive pas à télécharger le fichier ePub correspondant.

    Il s'agit de la commande : xxxxxxxxxxx

    J'utilise un ordinateur sous Linux donc je n'ai pas de liseuse kobo ou de produit Adobe. Je veux juste le fichier Epub de base.
    J'ai bien pris soin de m'assurer, avant d'acheter, que ce livre numérique était vendu sans DRM donc ça devrait être compatible avec mon ordinateur…mais encore faut-il arriver à le télécharger !

    Sur mon compte "Mes Ebooks" je vois bien le bouton bleu intitulé "Télécharger avec ADE" (voir copie d'écran) mais cela me conduit sur une page indiquant "Object moved to Here". Quand je clique sur "Here" rien ne se passe. Je n'ai donc toujours pas mon fichier epub.

    Merci par avance pour votre aide

    Cordialement

    Réponse SAV 1 :

    Monsieur,

    Dans le cas où il ne vous serait pas possible d’accéder au lien de téléchargement depuis notre site, je vous invite à télécharger votre livre depuis le site de notre partenaire Kobo.

    Remarques : Adobe Digital Editions (ou Sony Reader pour les liseuses Sony) doit être préalablement installé et associé avec un id adobe.

    Nous vous prions de nous excuser pour la gêne occasionnée.

    A bientôt sur www.fnac.com

    Cordialement,

    xxxxx
    Assistance Technique

    Mail 2 :

    Bonjour,

    Comme je l'ai indiqué dans ma demande initiale, mon ordinateur fonctionne avec Linux.
    Je ne peux donc pas installer "Adobe Digital Editions".

    Je veux juste le fichier Epub du livre que j'ai acheté.
    Il était bien marqué sur le site que ce fichier Epub était sans DRM donc il doit pouvoir être lu par tous les logiciels compatibles Epub (y compris avec Linux).

    Merci d'avance

    Cordialement

    Réponse SAV 2 :

    Monsieur,

    Il n'existe actuellement pas de version des logiciels Kobo Desktop et Adobe Digital Editions compatibles avec les distributions Linux.

    Je vous propose d'utiliser un émulateur intégrant Adobe Digital Editions tel que "Wine" pour lire vos livres numériques.

    Notez que Linux n'est pas un système d'exploitation supporté par l'assistance technique de la Fnac, nous ne pourrons donc assurer aucun support pour la solution proposée ci-dessus.

    A bientôt sur www.fnac.com

    Cordialement,

    xxxxx
    Assistance Technique

    Mail 3 :

    Bonjour,

    Je ne comprends pas pourquoi vous continuez à me recommander d'utiliser Adobe Digital Editions.
    J'ai payé pour avoir un fichier Epub sans DRM lisible partout et je veux un fichier Epub sans DRM lisible partout.

    S'il vous est impossible de m'envoyer le produit que j'ai acheté sur votre site, je demande tout simplement à être remboursé.

    Cordialement

    Réponse SAV 3 :

    Monsieur,

    La plupart des livres numériques (eBooks) proposés au téléchargement sur Fnac.com sont protégés par DRM. Cette protection est demandée par les éditeurs pour autoriser la distribution.

    Comme indiqué dans l'article 7 des conditions générales de téléchargement livre numérique, les achats de contenus numériques sont fermes et définitifs.
    Ils ne pourront donc donner lieu à échange, remboursement ou à l’exercice d’un droit de rétractation.

    Je suis navré, nous ne pouvons répondre favorablement à votre demande d'annulation de commande.

    A bientôt sur www.fnac.com

    Cordialement,

    xxxxx
    Assistance Technique

    Mail 4 :

    Bonjour,

    Vous m'indiquez que la plupart des livres numériques vendus par la FNAC sont protégés par DRM.
    Quel est le rapport ? Comme je l'ai indiqué PLUSIEURS fois dans mes communications précédentes, j'ai acheté ce livre numérique JUSTEMENT parce que celui-ci était sans DRM.

    C'est ce qui est explicitement annoncé sur le site de la FNAC (voir la copie d'écran ci-jointe).

    Quand à l'article 7 de vos conditions, il évoque explicitement la "fourniture de contenu numérique" et justement rien ne m'a été fourni !
    J'ai payé 12,99 euros pour un fichier numérique et je n'ai rien pu télécharger parce que le lien de téléchargement ne fonctionne pas.

    Alors soit vous me fournissez le fichier Epub sans DRM tel qu'il est décrit sur votre site, soit vous me remboursez.

    Merci d'avance.

    Réponse SAV 4 :

    Monsieur,

    Je vous confirme que votre eBook ne contient pas de DRM, cependant, comme indiqué dans notre échange du xxxxx, il n'existe actuellement pas de version des logiciels Kobo Desktop et Adobe Digital Editions (logiciel géré par notre assistance technique) compatibles avec les distributions Linux.

    Je vous propose d'utiliser un émulateur intégrant Adobe Digital Edition tel que "Wine" pour lire vos livres numériques (ou le logiciel que vous souhaitez à partir de votre distribution de Linux).

    Notez que Linux n'est pas un système d'exploitation supporté par l'assistance technique de la Fnac, nous ne pourrons donc assurer aucun support pour la solution proposée ci-dessus.

    Concernant votre demande de mise à disposition, votre eBook est bien disponible au téléchargement à partir du site de notre partenaire Kobo.

    Pour le télécharger :
    Rendez-vous sur le site www.kobo.fr
    Cliquez en haut à droite sur "Se connecter"
    Cliquez sur « Vous ne voyez pas vos options de connexions habituelles ? » puis choisir « Mon compte Fnac »
    Saisissez l'adresse mail et le mot de passe de votre compte Fnac.com
    Cliquez sur "Mon compte" puis sur "Mes Livres"
    Cliquez sur les trois points en face ou sous le livre souhaité
    Cliquez sur "Télécharger" puis sur "Télécharger le fichier" et ouvrez-le avec Adobe Digital Edition
    La lecture du livre peut commencer.

    A bientôt sur www.fnac.com

    Cordialement,

    xxxxx
    Assistance Technique


    Ah cette fois une information importante est apparue dans ce mail de la FNAC ! Le gars continue à déblatérer au sujet de Wine et que le fichier est téléchargeable sur le site du partenaire Kobo MAIS il ne parle plus de l'obligation d'installer Adobe Digital Editions et de l'associer avec un identifiant Adobe.
    Et effectivement quand je vais sur le site Kobo (avec mon login/password du compte FNAC) je parviens finalement à télécharger le fameux fichier Epub.
    Victoire !

    Allez on va remercier.


    Mail 5 :

    Bonjour,

    Dans un de vos précédents mails vous indiquiez que pour effectuer le téléchargement sur le site Kobo il fallait que : "Adobe Digital Editions (ou Sony Reader pour les liseuses Sony) doit être préalablement installé et associé avec un id adobe".

    Dans votre dernier mail vous n'évoquez plus cette obligation. Je suis donc allé sur le site Kobo et j'ai pu télécharger le fichier Epub en suivant vos instructions. Je vous remercie pour votre aide.

    Pour information je ne suis nullement obligé d'ouvrir et de lire ce fichier avec Adobe Digital Editions et Wine.
    Il existe sous Linux de nombreux lecteurs de fichier Epub tournant nativement (Calibre, Okular, Lucidor, Bookworm, etc).

    Cordialement


    Donc si on fait un résumé de mon expérience d'achat de livre numérique :

    • Le lien de téléchargement FNAC n'a pas fonctionné (Chrome, Firefox, désactivation de uBlock Origin, rien n'y fait).
    • Il a donc fallu contacter le SAV et envoyer de multiples mails.
    • Le support technique m'a donné des informations fausses, incomplètes ou n'ayant rien à voir avec le sujet.
    • Le tout à pris 4 jours.
    • Mais à la fin j'ai pu récupérer mon fichier. C'est bon à savoir pour ceux qui connaissent le même problème que moi : en dépit de ce que peut dire le SAV, il est possible de télécharger le Epub sans devoir installer le bidule Adobe.

    J'ai quand même voulu comparer avec le téléchargement de ce livre numérique via un torrent sur un site bien connu :

    • 17 secondes après avoir cliqué sur le lien torrent j'avais mon fichier Epub.

    Alors je ne généralise pas, peut-être que cette mauvaise expérience est spécifique à ce vendeur ou bien peut-être que je n'ai pas eu de chance avec un fichier particulier.
    Mais bon ça n'incite pas trop à renouveler.

    Lire les commentaires

  • Grammalecte, correcteur grammatical [2] (Dépêches LinuxFR)

    Grammalecte est un correcteur grammatical écrit en Python et en JavaScript, dédié à la langue française, disponible pour LibreOffice, Firefox, Thunderbird, ainsi que comme programme autonome, via une interface en ligne de commande ou un serveur. Par ailleurs, d’aimables contributeurs ont apporté leur pierre à l’édifice en concevant des greffons pour Vim et Emacs.

    Grammalecte lance une deuxième campagne de financement pour améliorer la correction grammaticale et faire évoluer les intégrations aux navigateurs Web.

    Logo de Grammalecte

    Cet article est très long. Plutôt que répéter ce qui a déjà été dit, je vais présumer que vous avez un souvenir à peu près clair du billet précédent sur ce sujet. Cela dit, même sans ça, ce que je vais dire devrait être intelligible.

    Sommaire

    Ce qui a été fait

    Séparation du correcteur d’avec Hunspell et LibreOffice

    C’était le prérequis à l’indépendance du logiciel, et c’est la première chose qui a été faite. Au lieu de consulter Hunspell, le correcteur orthographique, pour connaître l’étiquetage grammatical des mots, Grammalecte interroge dorénavant son propre dictionnaire indexable. Il s’agit d’un graphe de mots contenant toutes les formes graphiques que peuvent avoir les mots français : les pluriels, les formes féminines et masculines, et les conjugaisons.

    Graphe de mots

    Le graphe contient 500 966 entrées, avec 140 caractères différents, 901 codes de suffixation, 6 066 étiquettes grammaticales, et est composé de 110 796 nœuds et 236 744 arcs (liens qui vont d’un nœud à un autre). Tout ça est compressé sous forme d’un dictionnaire binaire indexable pesant environ 1,25 Mio (le fichier texte non compressé pèse environ 18,6 Mio). Mais le principal avantage de ce dernier n’est pas sa petite taille, c’est qu’on peut le parcourir très rapidement et l’interroger sans avoir à le décompresser. Il peut fournir deux sortes d’informations : un mot est‐il présent dans le dictionnaire et, si oui, quelle est sa nature grammaticale.

    Grâce à cela, Grammalecte peut fonctionner de manière autonome.

    Extension pour Firefox & Thunderbird

    Le correcteur a été entièrement réécrit en JavaScript avec une interface pour Firefox, qui s’appuie principalement sur l’API SDK de haut niveau et quelques fonctionnalités de bas niveau. L’interface est faite en HTML/CSS.

    L’API de Thunderbird étant complètement différente de celle de Firefox, cette extension est une autre réécriture en JavaScript de l’extension, hormis le cœur du moteur grammatical, bien sûr. L’interface est bâtie avec l’ancienne technologie XUL encore en vigueur sur Thunderbird. La documentation concernant Thunderbird étant en partie tombée en déshérence (liens cassés, pages manquantes, sections disparues, sites Web à l’abandon ou évaporés), j’ai parfois fait emploi de techniques trouvées dans d’autres extensions, mais ça ne concerne qu’une minorité de problèmes, et je me suis contenté autant que possible de suivre ce qui était documenté. Le fonctionnement de l’extension est assez similaire à celle pour Firefox. Votre texte est analysé dans un panneau annexe. En revanche, contrairement à Firefox, les erreurs sont listées en dessous du paragraphe analysé. Hormis cela, tout est relativement semblable, sauf l’allure générale de l’extension, qui fait plus vieux jeu, parce que XUL est d’une conception plus ancienne.

    La mauvaise nouvelle, pour Firefox, c’est qu’il faudrait déjà refaire l’interface. Quand j’ai commencé le codage de l’extension, Mozilla préparait une nouvelle API pour les extensions, appelée WebExtension, qui était alors en version alpha. C’est la quatrième API pour Firefox, les trois autres étant XUL, Bootstrapped et le SDK (haut niveau et bas niveau). Il était dit que ces trois API deviendraient obsolètes d’ici quelques années, sauf le SDK de haut niveau, et qu’il fallait utiliser ça en attendant que l’API WebExtension fût finalisée. C’est donc ce que j’ai fait. Grammalecte pour Firefox est sorti à peu près au même moment que WebExtension. Quelques mois plus tard, les trois autres API ont été déclarées obsolètes, y compris le SDK de haut niveau, contrairement à ce qui avait été annoncé, et toutes les trois seront supprimées en novembre prochain avec Firefox 57.

    Graphe de mots

    C’est vraiment très irritant, mais l’on n’y peut pas grand‐chose. Ceci découle probablement de la volonté de Mozilla de réécrire tout le cœur de Firefox. Ce qui n’apporte pas que de mauvaises choses, puisque, par exemple, j’ai constaté que le correcteur grammatical fonctionnait plus de deux fois plus vite à partir de Firefox 55…

    Le cœur de l’extension, le moteur grammatical, n’est pas à reprogrammer, il ne s’agit « que » de l’enrobage, l’interfaçage… J’ignore si ça réclamera beaucoup de travail, je ne m’y suis pas encore intéressé. L’un des autres soucis, c’est que même si WebExtension est dorénavant le modèle d’extensions conseillé, il semble qu’il ne permette pas encore autant de choses que les API précédentes. Cette API est toujours en développement, Mozilla travaillant encore à étendre les possibilités offertes.

    En ce qui concerne Thunderbird, je n’ai rien vu passer… et j’ignore si nous sommes à la veille d’une révolution surprise qui va tout casser.

    Mozilla n’a pas encore vérifié le code de l’extension pour Thunderbird : la liste d’attente est très longue. Heureusement, contrairement à Firefox il est possible d’installer une extension non vérifiée et non signée. Il n’y a aucun risque de confidentialité. Le correcteur n’envoie aucune donnée en ligne, absolument rien. Ce que vous écrivez n’est pas transmis, tout se passe sur votre ordinateur.

    Pour ceux que ça intéresse de tester, je viens de publier la version 0.5.17 :

    • pour Firefox (il faut un Firefox capable d’installer les extensions non signées) ;
    • pour Thunderbird (Thunderbird peut installer les extensions non signées).

    Captures d’écran

    Boîtes de dialogue « À propos » :
    À propos

    Correcteur grammatical :
    Formateur de texte

    Conjugueur :
    Formateur de texte

    Formateur de texte :
    Formateur de texte

    Options grammaticales et orthographiques :
    Options Firefox
    Options Thunderbird

    Interface en ligne de commande :
    CLI : interface en ligne de commande

    Révision du moteur interne du correcteur

    Désambiguïsation

    Dans la précédente dépêche, je vous avais expliqué que Grammalecte ne possédait pas de processus de désambiguïsation permettant d’étiqueter les mots en fonction du contexte. Par exemple, un mot comme « porte » peut être un verbe ou un nom féminin, et il est utile, lors de l’analyse d’une phrase, d’avoir procédé si possible à la désambiguïsation de sa nature grammaticale, afin que les règles de contrôle n’aient pas à se poser la question à chaque fois.

    Comme expliqué lors de la campagne de financement précédente, Grammalecte intègre désormais des fonctions de désambiguïsation capables d’étiqueter et baliser le texte. Ce désambiguïsateur fonctionne d’une manière similaire aux règles de contrôle et au processeur de texte. Une expression rationnelle déclenche une action de désambiguïsation si elle remplit la condition requise, de sorte que toutes les règles suivantes bénéficient d’un étiquetage plus précis. Il y a trois types d’actions de désambiguïsation : la sélection (qui ne retient que les étiquettes conformes à une expression rationnelle), le filtre (qui supprime les étiquettes grammaticales non conformes), l’étiquetage (qui impose une ou plusieurs étiquettes, quelles que soient celles que le mot possède alors).

    Règles multi‐actions

    Dans le précédent billet, je vous avais expliqué que Grammalecte fonctionnait selon une succession de passes, dont chacune était précédée d’une transformation du texte par ce que j’appelais le « préprocesseur de texte ». Ce qui permettait de simplifier peu à peu le texte pour faciliter le contrôle des règles grammaticales qui suivaient.

    Pour simplifier, cela fonctionnait ainsi :

    1. Passe 1 (paragraphe par paragraphe) :
      • règles du préprocesseur de texte ;
      • règles de contrôle.
    2. Passe 2 (phrase par phrase) :
      • règles du préprocesseur de texte ;
      • règles de contrôle.
    3. Passe 3 (phrase par phrase) :
      • règles du préprocesseur de texte ;
      • règles de contrôle.
    4. etc.

    Dans ce système, chaque règle ne pouvait faire qu’une seule chose (comme dans LanguageTool), et seulement si la condition qui contrôlait sa mise en œuvre était remplie.

    Peu de temps après le début de la campagne de financement, il m’est apparu qu’il serait souhaitable de rendre plus souple ce fonctionnement. Il n’était pas prévu au programme de toucher à cela, mais j’ai préféré m’atteler tout de suite à cette tâche plutôt que de regretter plus tard de ne pas l’avoir fait. Donc, à présent, au lieu d’une succession de passes alternant transformation du texte et contrôle de la grammaire, nous sommes revenus à simplement deux passes (une pour le contrôle du paragraphe, une pour le contrôle des phrases), mais chaque règle peut dorénavant tout faire et peut accomplir autant d’actions qu’on le souhaite, chaque action se déclenchant si la condition qui y est attachée est remplie.

    Donc, une règle peut dorénavant opérer plusieurs actions de contrôle, plusieurs actions de réécriture et plusieurs actions de désambiguïsation.
    Au commencement, je pensais que cette modification du fonctionnement n’aurait que peu de conséquences, car elle n’était pensée que pour me faciliter la tâche dans certains cas épineux, puis il m’est apparu que ça changeait en fait de si nombreuses choses que la transition de l’ancien modèle vers le nouveau n’est toujours pas achevée à ce jour. Ça n’a pas d’importance puisque ça fonctionne aussi bien qu’auparavant, mais la souplesse de ce fonctionnement apporte tellement d’avantages que je suis loin d’en avoir profité encore pleinement.
    Cela dit, depuis que Grammalecte fonctionne ainsi, des dizaines de règles complexes ont déjà été fusionnées, et cela a simplifié grandement le déroulement de nombreuses opérations.

    Prenons un exemple simple. Auparavant, si vous écriviez « les ordinateur », il fallait deux règles de contrôle pour souligner « les » et suggérer « le », et souligner « ordinateur » et suggérer « ordinateurs ». À présent, une seule règle permet de faire les deux choses d’un coup.

    Autre exemple. Mettons que nous rencontrons la graphie « militant(e)s ». Une même règle va permettre de faire trois choses :

    • suggérer d’écrire ceci autrement (« militants et militantes », « militantes et militants », « militant·e·s ») ;
    • étiqueter ce mot inexistant dans le dictionnaire comme « nom ou adjectif épicène pluriel » ;
    • réécrire le mot en interne pour ôter les parenthèses gênantes.

    Détection des erreurs

    De nombreuses règles de contrôle ont été ajoutées… notamment concernant la détection de confusions concernant les mots grammaticaux. La dernière version du correcteur (v0.5.17) contient 21 actions de désambiguïsation, 687 actions du processeur de texte, 1 437 actions de contrôle ; ces actions sont réparties dans 1 939 règles.

    À titre de comparatif, la version 0.4.10, qui suivait l’ancienne logique, contenait 540 règles de transformation de texte et 933 règles de contrôle, chacune n’effectuant qu’une seule action.

    Ces chiffres ne sont pas nécessairement très évocateurs, parce que rien ne comptabilise les modifications du fonctionnement des règles qui sont les plus nombreuses, ne serait‐ce, par exemple, que sur les méthodes pour faire des suggestions.

    En fait, le potentiel du correcteur est encore sous‐exploité, malgré les innombrables améliorations apportées ici et là. Je n’avais pas assez insisté sur ce point lors du dernier journal, alors je vais le répéter encore une fois : les détails sont ce qui réclame le plus de temps, car il faut songer que les possibilités d’erreurs avoisinent l’infini et que les possibilités de faire des faux positifs sont aussi nombreuses. Dans les faits, améliorer le correcteur grammatical, c’est s’occuper sans cesse de micro‐problématiques. Je réécris ici ce que j’ai dit la dernière fois : « Écrire des règles, c’est assez rapide ; détecter les faux positifs, c’est beaucoup plus long ; ceux‐ci ont tendance à survenir là où l’on s’y attend le moins. C’est ce qui est le plus exigeant : maintenir un ensemble de règles, améliorer l’existant, tester, trouver de nouvelles possibilités. Lorsqu’on s’occupe d’un correcteur grammatical, on passe surtout son temps à peaufiner des détails, à ajuster le fonctionnement de l’existant, à arrondir les angles. Oubliez l’idée de concevoir l’algorithme ultime qui saura gérer tous les cas. Même quand on est à peu près sûr d’écrire une petite règle tranquille qui ne générera aucun faux positif, la réalité va très probablement nous rappeler à l’ordre et nous obliger à slalomer sur ce qui paraissait au commencement comme une belle ligne droite. S’occuper de correction grammaticale, c’est marcher sur un chemin pavé d’embûches subtiles. »

    C’est pourquoi l’évolution du correcteur se fait pas à pas, en évitant autant que possible les modifications radicales.

    Le correcteur fonctionne beaucoup mieux depuis que toutes ces améliorations ont été faites, et j’espère que c’est sensible pour vous, car il m’est difficile de juger si ces améliorations sont visibles pour les utilisateurs.

    Parmi toutes les nouveautés apportées, il y a notamment :

    • beaucoup de règles pour détecter des confusions entre les mots homonymes (comme ce, se et ceux) ;
    • beaucoup d’améliorations pour gérer les cas particuliers, clarifier le texte interne et augmenter le taux de détection ;
    • toujours moins de faux positifs ;
    • une option pour détecter les erreurs de reconnaissance optique de caractères bien plus développée (désactivée par défaut) ;
    • beaucoup de règles de contrôle ont été améliorées.

    Le moteur de suggestions

    L’amélioration des suggestions est l’un des points qui ont le plus progressé depuis le précédent journal, grâce aux règles multi‐actions qui ont permis de rendre plus systématiques la possibilité de faire deux suggestions différentes lors de la constatation d’un désaccord de genre, de nombre ou de conjugaison ; mais aussi surtout grâce à la création d’une table de correspondance phonétique à partir de laquelle Grammalecte peut choisir des mots à suggérer en fonction de leur nature grammaticale.

    La table de correspondance phonétique est un simple fichier qu’il est facile de compléter, c’est une succession de mots homonymes, comme :

    • appareil, appareils, appareille, appareilles, appareillent ;
    • mec, mecs, Mecque ;
    • pouce, pouces, pousse, pousses, poussent ;
    • tête, têtes, tète, tètes, tètent.

    À partir de cette liste, Grammalecte construit un mini‐dictionnaire avec toutes les natures grammaticales possibles de chaque mot. Puis, au besoin, on peut demander, par exemple, de trouver un mot semblable à « tète » en spécifiant les natures grammaticales acceptables (via une expression rationnelle). Il y a aussi quelques propositions de substitutions automatisées, pas toujours opportunes, ce point reste à améliorer.

    Si ça vous intéresse, cette table est consultable ici.

    Cette table phonétique ne résout pas tous les problèmes, mais permet dans bien des cas de faire des suggestions de mots sans rapport grammatical avec le terme erroné. Avant cela, le correcteur se contentait de signaler l’erreur, mais ne pouvait rien suggérer. Quelques exemples :

    • « Il appareil demain. » → appareille ;
    • « La mec. » → Le | Mecque ;
    • « Une goulet » → Un | goulée ;
    • « Il pouce le bouchon trop loin. » → pousse ;
    • « J’en ai marre de ces tètes de nœud. → têtes ;
    • « Ils ne son pas idiot. » → sont.

    Notez que le moteur de suggestions ne propose des mots ayant une autre racine que lorsqu’il constate une anomalie (si un verbe prend la place de ce qui devrait être un nom, par exemple) ou s’il constate une erreur de genre. S’il y a seulement une erreur de pluriel, il se contente de faire une correction de nombre. Mais il serait aussi possible dans ces cas‐là de suggérer des mots différents. Par exemple « Des homme » → hommes | ohms | heaumes.

    Ça m’a semblé superflu de proposer de telles corrections, mais si vous jugez ça utile, dites‐le‐moi.

    Modifications diverses

    • l’écriture des règles a été modifiée, il est plus aisé de gérer la casse et les marges des motifs des expressions rationnelles ;
    • les règles sont regroupées par option, afin de pouvoir ajouter des règles optionnelles sans gréver les performances (l’option de reconnaissance optique de caractères, par exemple) ;
    • il est possible d’utiliser pour chaque action des opérateurs logiques (__also__ et __else__) pour écrire des conditions tenant compte du résultat de la condition de l’action précédente ;
    • toutes les règles ont été nommées, afin de satisfaire aux nécessités du greffon pour Vim (désactivation paramétrable de règles spécifiques) ;
    • tout le processus de construction a été revu et des tests ont été intégrés pour éviter certaines erreurs d’écriture des règles ;
    • des marque‐pages pour s’y retrouver dans la liste des règles, qui commence à devenir très, très longue (fonctionnalité ajoutée hier).

    Capture d’écran

    Voici à quoi ressemble le fichier des règles (sous SublimeText) :
    Règles de Grammalecte dans SublimeText

    Tests unitaires

    Auparavant, la situation sur ce point était très mauvaise, puisqu’il n’y avait aucun test unitaire sur le correcteur, seulement des tests « manuels », c’est‐à‐dire un fichier texte que j’ouvrais de temps en temps avec Writer pour vérifier que le moteur fonctionnait comme prévu. Mais c’était loin d’être exhaustif et facile à mettre en œuvre, puisque je vérifiais « à l’œil » si à chaque ligne le correcteur trouvait bien l’erreur qu’il était censé trouver. Pénible et lent au possible.

    À présent, à chaque modification, il est possible lors de la construction de tester si rien n’est cassé. Plus de 6 200 tests sont lancés (dont 2 000 repris chez LanguageTool), et chaque règle de détection doit être testée au moins une fois.

    Malgré cela, les tests ne sont pas encore exhaustifs (à bien y songer, il n’est sans doute pas possible d’être exhaustif), mais la situation s’améliore indubitablement, et peu à peu le socle du correcteur devient de plus en plus solide. Grâce à cela, de nombreuses erreurs dans le fonctionnement du correcteur ont été détectées et corrigées.

    Beaucoup de ces tests sont là pour vérifier qu’une règle fonctionne correctement, mais une grande partie d’entre eux existent pour éviter les faux positifs constatés lors des versions précédentes. Ce sont les tests les plus nombreux, parce que les faux positifs sont légion et qu’il est très fréquent d’en provoquer de nouveaux, quelle que soit la prudence avec laquelle on écrit les règles. Pour les éviter autant que possible, quelques textes courts ont été inclus dans les tests de Grammalecte :

    • Le Horla, de Guy de Maupassant ;
    • Le double assassinat dans la rue Morgue, d’Edgar Poe ;
    • Les vers dorés, de Pythagore ;
    • L’épître du feu philosophique, de Jean Pontanus.

    Avoir écrit l’extension pour Firefox présente par ailleurs un avantage considérable pour consolider la correction grammaticale : c’est beaucoup plus facile de mettre le correcteur à l’épreuve. Presque tous les jours, je lance des analyses grammaticales sur de nombreux articles de journaux et de blogs divers ; ça me permet de repérer et corriger des faux positifs, ainsi que de nouveaux mots à ajouter au dictionnaire. Auparavant, je faisais des copier‐coller dans Writer, ce qui était bien moins commode et bien plus long.

    Ces tests sont faits en Python et en JavaScript. Les deux moteurs les passent tous et fonctionnent de la même manière. Cela dit, il n’est pas malgré cela pas possible de garantir (pour l’instant) que le moteur en JavaScript fonctionne aussi bien qu’en Python.

    JavaScript, mon amour Hiroshima

    JavaScript

    Passer de Python à JavaScript n’a pas été de tout repos. Et si le projet a pris du retard, ce n’est pas tellement, comme je le craignais, à cause de la difficulté de concevoir une extension pour Firefox et Thunderbird. Ce point fut plus facile que je ne le pensais, tout simplement parce que la documentation de Firefox et celle Thunderbird, quoique cette dernière soit en déshérence, sont mieux tenues et plus complètes que celle pour LibreOffice… et surtout l’API est plus simple à utiliser… Quoique… l’API de bas niveau est tout aussi compliquée, de mon point de vue… Mais comme on peut s’en passer… Bref.

    La syntaxe de JavaScript ne m’a pas posé de problème. J’ai utilisé toutes les nouvelles possibilités offertes par la norme ES6 : for … of, les générateurs, les paramètres par défaut, les paramètres du reste, la décomposition, les fonctions fléchées, Map, Set, les classes, let et const, et même depuis peu les nouvelles commandes async et await. Avec tout ça, JavaScript est un langage pas aussi horrible que je l’avais craint, même assez agréable parfois… En même temps, comme je démarrais un projet à zéro, je n’ai pas eu à me coltiner toutes les bizarreries possibles de ce langage. J’ai évité toute forme de syntaxe tord‐neurones.

    Ce qui m’a compliqué la vie, c’est plutôt l’écosystème de JavaScript, sa difficulté à déboguer, son comportement étrange, les incohérences et sa bibliothèque standard pauvre.

    Difficulté à déboguer

    Ni Firefox, ni Thunderbird (ni LibreOffice d’ailleurs) ne signalent quoi que ce soit s’il y a une erreur de syntaxe dans le code. Ça ne fonctionne tout simplement pas, et c’est tout. C’est assez pénible en Python, mais c’est bien pire en JavaScript où il est fréquent d’oublier une virgule ou un point-virgule quelque part. En outre, les messages d’erreur de JavaScript sont longs et souvent abscons, sans compter que selon le contexte d’exécution dans Firefox/Thunderbird, les messages d’erreur sont parfois encore plus imprécis, voire inexistants (le module XYZ plante, mais débrouillez-vous pour le reste, car aucune info ne sera fournie, comme où et pourquoi). Je ne vais pas rentrer dans les détails, parce que j’ai maintenant oublié la plupart d’entre eux… mais à mon avis, Mozilla ferait des heureux en améliorant les rapports d’erreur.

    Inutile de s’étendre sur le comportement erratique de JavaScript et son typage faible, cela a déjà été fait par tellement de monde… Quand on vient de Python, il est facile de tomber dans tous les pièges que ce langage tend, dans lesquels même les plus experts chutent encore de temps en temps, j’imagine. La traque aux “undefined” semblant sortir de nulle part m’a particulièrement marqué.

    La bibliothèque standard

    La bibliothèque standard est, en restant poli, très mauvaise, notamment parce qu’elle est très incomplète, mais aussi assez peu cohérente, me semble‐t‐il. Dans beaucoup de cas, ce n’est pas bien grave, il suffit d’ajouter les fonctions dont on a besoin et c’est ce que j’ai fait, mais on se demande quand même pourquoi cette bibliothèque standard est si pauvre ou si mal foutue. Avec toute la hype autour de ce langage, c’est vraiment très étonnant.

    Prenons le cas des expressions rationnelles, parce que la nullité de l’objet Regexp est navrante… et parce que c’est ce qui est le plus utile à Grammalecte :

    problème 1 : pas de lookbehind assertions

    Les lookbehind assertions permettent de regarder ce qui précède un motif. OK, c’est pénible, mais on peut compenser avec quelques efforts.

    problème 2 : les classes de métacaractères ne comprennent que l’ASCII.

    Les classes de métacaractères comme \w et \b, ne comprennent que l’ASCII.
    Oui, l’ASCII ! Ce qui donne (vous pouvez essayer dans l’ardoise de Firefox) :

    /^\w+$/.test("étonnant")  ==> false
    /\bvite\b/.test("évite")  ==> true

    Inutile de vous précipiter sur votre calendrier, nous sommes bien en 2017, et non en 1997. JavaScript est, paraît‐il, un langage moderne, mais seulement quand on n’y regarde pas de trop près.

    Heureusement, il est facile de compenser l’absence d’un \w fonctionnel par [a-zA-Zà-öÀ-Ö0-9_ø-ÿØ-ßĀ-ʯ] (du moins, ce sont les plages de caractères que j’ai retenues, on pourrait en ajouter bien d’autres). Ce qui rend les expressions rationnelles un peu plus piquantes à lire…

    Quant à \b, eh bien, on peut essayer de compenser avec des lookahead assertions et des lookbehind assertions. Seulement, voilà, ces dernières n’existent pas en JavaScript. Mais en magouillant, on peut simuler ça. Du moins dans presque tous les cas utiles. Tant pis pour les autres… on priera de ne pas tomber sur un caractère non ASCII.

    Problème 3 : pas de position des groupes capturés

    Les groupes capturés n’indiquent pas leur position. Ça, c’était vraiment la mauvaise surprise. Avant de proposer la campagne de financement, j’avais vérifié ce que JavaScript pouvait faire avec les expressions rationnelles, mais je n’avais pas vu que ce point manquait à l’appel, tout simplement parce que je n’avais pas imaginé que JavaScript serait incapable de fournir cette indication.

    De quoi s’agit‐il au juste ? C’est très simple. Quand vous écrivez une expression rationnelle avec des groupes de capture, comme (\w+) (\w+) (\w+), Python vous renvoie les groupes capturés (ce qui est entre parenthèses) avec leur position dans le motif global. JavaScript ne renvoie que le contenu des groupes capturés, mais pas leur position. Débrouillez‐vous pour savoir où ça se trouve, et c’est bien plus épineux que vous pourriez le supposer, si, par exemple, vous capturez des mots comme « a », « le » ou « la », ou si vous capturez des groupes qui ne sont pas des mots entiers.

    Ce point seul m’a fait perdre beaucoup de temps, sans compter que ce fut un cauchemar à déboguer. J’ai même cru pendant quelques jours que tout le projet allait tomber à l’eau à cause de ça.

    Car, à ce moment du développement, alors même que je bataillais pour rendre le moteur fonctionnel, j’ai pris conscience que l’exécution du code en JavaScript était environ douze fois plus lente qu’en Python, au point que lorsqu’on lançait la correction grammaticale, Firefox se figeait pendant de longues secondes… C’était évidemment inacceptable.

    Il était donc hors de question de ralentir encore l’exécution du code en essayant de calculer la bonne position des erreurs dans les motifs détectés (pour rappel, il y a des milliers d’expressions rationnelles dans Grammalecte). Du coup, j’ai oublié cette idée et procédé autrement : la position des groupes capturés est signalée dans le fichier des règles de grammaire. Cela rend le processus d’écriture des règles un peu plus brouillon, mais c’est assez simple pour être acceptable. Et ça ne ralentit pas le moteur outre mesure.

    Ensuite, pour éviter que Firefox ne se fige, le cœur du correcteur grammatical, c’est‐à‐dire la vérification du texte, s’exécute dans un processus séparé… Et, bonne surprise, il s’avère que dans ce processus — inexplicablement, sans rien changer au code — le correcteur fonctionne vingt fois plus rapidement que dans le processus principal de Firefox, même quand ce dernier ne fait rien du tout !…

    Un écosystème incohérent

    Selon les contextes et l’application, les choses fonctionnent différemment et ça donne la désagréable impression de bâtir sur du sable. On ne sait pas toujours bien ce qui préexiste aux scripts qu’on conçoit. Notamment, il n’y a toujours pas de moyen conventionnel simple pour importer un module (ES6 en parle, mais aucun navigateur n’a encore implémenté ça).

    Parfois, require existe par défaut. On peut faire :

    const { Cu } = require("chrome");
    const tabs = require("sdk/tabs");

    Dans d’autres cas, require n’existe pas par défaut, donc :

    importScripts("resource://gre/modules/workers/require.js");
    const gce = require("resource://grammalecte/fr/gc_engine.js");

    Ou bien encore dans un autre contexte, il faut faire :

    const Cu = Components.utils;
    const { require } = Cu.import("resource://gre/modules/commonjs/toolkit/require.js", {});

    Parfois, on importe Components.utils (Cu) grâce à require. Parfois, on importe require à partir de Components.utils (Cu) ou bien d’autre chose.
    On peut aussi importer des modules via XUL ou le HTML, avec des espaces de noms partagés. Il y a aussi les déclarations de ressources dans un manifeste. Bref, tout ça est contre‐intuitif au possible.

    Cela dit, alors que j’écrivais ce texte, je découvre que import et export arrivent enfin dans les navigateurs ! On va peut‐être en finir avec tout ça bientôt.

    Mais, ça résoudra pas tout. Comme je l’ai dit, selon les applications et les contextes, certains objets ou fonctions existent ou n’existent pas. Dans Firefox, on peut appeler directement XMLHttpRequest(), mais pas dans Thunderbird. Pour ce dernier, il « suffit » donc de faire :

    let { Cc, Ci } = require("chrome");
    let xRequest = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
    xRequest.QueryInterface(Ci.nsIXMLHttpRequest);

    Même pour faire un print, il n’y a pas de solution uniforme. Là encore, selon le contexte, il y a : console.log(), Service.console.logStringMessage() ou dump() ou que sais‐je encore. Il y a des contextes où rien de tout ça ne fonctionne.

    Une dernière étrangeté : pour compenser la pauvreté des objets standard, j’ai ajouté des fonctions personnelles à String, Regexp et Map. Mais ce qui est curieux, c’est que dans Firefox, il faut que ces nouvelles fonctions soient déclarées dans le module où les objets sont instanciés… tandis que dans Thunderbird, il faut que ces nouvelles fonctions soient déclarées dans le module où ces fonctions sont utilisées. C’est pourtant le même moteur JavaScript.

    J’arrête ici de lister les incohérences, on n’en finirait pas.

    Chaque problème n’est pas dramatique en soi, mais l’accumulation de ces contretemps finit par rendre la programmation en JavaScript vraiment casse‐pieds par moments.

    Et, là, on ne parle que de Mozilla. C’est encore différent ailleurs, puisque l’implémentation des nouvelles fonctionnalités du langage n’avance pas au même rythme selon les moteurs.

    En résumé, JavaScript, c’est le bordel et on se demande pourquoi c’est si incohérent. À mon avis, ce qui manque particulièrement à ce langage, c’est une implémentation standard avec un comportement logique et uniforme, des rapports d’erreurs plus clairs et une bibliothèque par défaut mieux faite et plus complète. On perd un temps considérable avec ces histoires.

    Je ne voulais pas particulièrement écrire un long chapitre sur ce langage, mais ça fait déjà pas mal…

    De Writer à Firefox (ou de la littérature au Web) : le choc culturel

    L’un des points auxquels je n’avais pas beaucoup réfléchi et qui m’a le plus surpris, bien que j’avais conscience que les textes du Web n’égalaient pas en qualité et normativité ceux sur lesquels j’avais travaillé sur LibreOffice, c’est combien l’écrit sur le Web est chaotique et exubérant, et foisonne de néologismes, d’anglicismes, de noms propres (compagnies, marques, produits, people), de sigles, de codes divers, de vocabulaire technique, de smileys, d’erreurs de syntaxe ou de formatage, sans compter les habituelles erreurs typographiques, orthographiques et grammaticales… Si bien que même lorsque Grammalecte commençait à fonctionner comme il le devait sur Firefox, il m’est vite apparu que c’était difficilement utilisable en l’état, et qu’il fallait revoir son fonctionnement pour éviter trop de signalements intempestifs, pour éviter que tous les textes soient barbouillés de toutes les couleurs. Pourtant, je n’avais pas fait faire les premières armes du correcteur sur les logorrhées de Facebook, mais sur des textes d’acteurs « sérieux », comme les journaux et les blogs grand public ou plus confidentiels, mais a priori bien tenus. Quelle déconvenue !… Entre le charabia, les hashtags et autres bidules, le formatage indigent et la novlangue du Web, Grammalecte tirait tout le temps la gueule, et il a fallu revoir beaucoup de choses pour que le correcteur se comporte moins comme un casse‐pieds permanent. J’ai passé un temps considérable à cette adaptation culturelle. J’ai fait passer au correcteur des centaines de textes tirés de blogs et de journaux. J’ai corrigé des tas de faux positifs et j’ai ajouté des centaines de mots dans le dictionnaire. Et beaucoup d’entre vous trouvent sans doute le correcteur encore trop rigide. À vous de me le dire, j’ai eu très peu de retour sur ce point…

    Quoi qu’il en soit, pour s’acclimater à Internet, il a fallu assouplir grandement la politique d’intégration des néologismes, des anglicismes, des marques, améliorer l’analyseur lexical pour ignorer des tas de trucs. Par exemple, si l’on peut se passer du verbe « tweeter » quand on ne s’occupe que de LibreOffice, sur le Web, non, ce ne peut être compris des utilisateurs. Trop fréquent. Idem pour pas mal de marques et d’autres néologismes très courants.

    Cela dit, je suis toujours réticent à ajouter trop de nouveautés et de bizarreries, les noms de produits sont toujours interdits (tant pis pour les Freebox, les iBidule, et autres gadgets dans l’air du temps…), et je me suis arrêté au moment où j’ai estimé que j’avais suffisamment assoupli les choses… Faites‐moi part de votre avis, en bien ou en mal. Il reste sans doute encore des rugosités à polir.

    Lexique du correcteur

    La graphie d’un mot français ne permet pas de déterminer sa nature. Un mot finissant par « -ent » peut être un nom, un adjectif, un adverbe ou la forme conjuguée d’un verbe. C’est pourquoi un correcteur grammatical ne peut souvent pas grand‐chose sans un lexique étiqueté référençant tous les mots d’une langue. Cet étiquetage, c’est la base de la connaissance du correcteur.

    Ce lexique est généré à partir du dictionnaire orthographique pour Hunspell.

    Quelques données sur le dictionnaire :

    • plus de 82 300 entrées (+ 5 300 depuis le précédent journal) ;
    • toutes les entrées sont grammaticalement étiquetées ;
    • environ 20 % d’entre elles sont sémantiquement étiquetées (médecine, informatique, botanique, etc.), mais cet étiquetage ne sert pas encore.

    Améliorer la base lexicale et son étiquetage, c’est l’une des tâches les plus importantes de la conception d’un correcteur grammatical. Tout le travail sur le dictionnaire se fait sur Dicollecte, où sont collectées les propositions des utilisateurs.

    C’est toujours perfectible

    Beaucoup de choses ont été faites, parfois plus que ce qui était demandé, parfois le strict minimum. Évidemment, beaucoup de choses sont encore améliorables, c’est le propre des projets informatiques. Un correcteur grammatical, ce n’est jamais fini.

    Si j’ai oublié de mentionner quelque chose d’important, n’hésitez pas à m’en faire part.

    Malheureusement pour certains, je n’ai pas réécrit le correcteur en OCaml, Haskell, Lisp, Cobol… [insérez ici votre langage à la mode favori]. Firefox et Thunderbird s’obstinent à ne comprendre que le JavaScript, LibreOffice le Python, le Basic et le Java. C’est barbare ou vintage si on est indulgent, mais c’est ainsi. :-)

    Pour l’instant, attendu que Mozilla n’a toujours pas implémenté l’interface de programmation qui permettra de souligner les erreurs directement dans les zones de texte, la correction se fait dans un panneau annexe. Mais, dès que cette interface sera disponible, c’est bien sûr ainsi que les corrections se feront. Au cas où ceci intéresserait quelqu’un parmi vous, sachez qu’il existe une prime pour la réalisation de cette tâche sur Bountysource.

    Il existe également une prime pour apporter la colorisation des erreurs dans LibreOffice. Idéalement, j’aimerais qu’on passe des vaguelettes bleues à peine visibles à des traits pleins, épais et colorés. Par exemple :

    Exemple des soulignements possibles

    L’un des problèmes qui m’ennuie assez en ce moment, c’est que la validation des extensions proposées sur le site de Mozilla est devenue vraiment longue depuis le début de l’année. Les contrôleurs sont probablement submergés de nouvelles extensions à cause du passage obligatoire à WebExtension. Du coup, la version 0.5.16 n’est pas encore validée. La version 0.5.17 n’a pas encore été proposée, attendu que toute nouvelle version nous ramène en fin de liste d’attente.

    L’avenir

    Améliorer la correction grammaticale

    Après le passage délicat que constituait la désimbrication de Grammalecte de LibreOffice, je vais dorénavant me concentrer sur l’amélioration du correcteur lui‐même. Avec toutes les nouvelles fonctionnalités apportées dernièrement, il est possible de faire bien mieux que ce qu’on a maintenant.

    Pour l’instant, le désambiguïsateur, quoique déjà fort utile, est particulièrement sous‐utilisé, pas parce qu’il est difficile d’emploi, mais parce que cette affaire est vraiment plus délicate que je ne l’avais supposé de prime abord, et aussi parce que le processeur de texte fait en vérité déjà beaucoup de travail sur ce point (cf. le journal précédent)… Encore une fois, le diable est dans les détails, les détails, les détails…
    En revanche, il m’apparaît de plus en plus évident qu’il serait utile d’adjoindre au désambiguïsateur un système d’annotation du texte, parce que tout ne dépend pas de la désambiguïsation grammaticale, et qu’il est souvent appréciable de connaître le contexte.

    Le fait que les règles puissent lancer plusieurs actions va permettre de faire des examens plus complets sur des détails pour l’instant ignorés, notamment sur le contrôle des locutions adverbiales ou les syntagmes nominaux les plus fréquents. Rien de difficile à première vue. Juste un travail de tâcheron qui demande du temps.

    L’autre point central à mettre en œuvre, c’est la fusion et le réajustement des règles existantes. Le fait que les règles peuvent dorénavant appliquer autant d’actions que voulu change grandement la donne. Par exemple, je vous avais expliqué dans le précédent journal que la vérification des verbes se faisait après avoir vérifié tout le reste. À présent, même s’il est encore utile de fonctionner ainsi dans bon nombre de cas, il serait appréciable de fusionner certaines de ces vérifications avec le désambiguïsateur qui, lui, est surtout utilisé dans les premières phases de traitement.
    Ce travail de fusion et de réajustement des règles ne présente pas de difficultés particulières, c’est surtout une question de stratégie globale qui ne nécessite cependant qu’un travail minutieux et attentif, plutôt ennuyeux et probablement un peu répétitif. Une fois de plus, avec plusieurs centaines de règles concernées, ça ne peut pas se faire en un tour de main.

    Autre objectif : bétonner les tests, bétonner les tests, bétonner les tests. Parce que c’est possible et que c’est indispensable pour éviter les bogues inattendus que la correction grammaticale peut susciter. Mais il faudra aussi consolider radicalement les tests par l’ajout systématique des erreurs les plus fréquentes.

    Améliorer les suggestions… Un casse‐tête qui s’est beaucoup amélioré ces derniers temps, mais il faudrait quand même réussir à filtrer les absurdités que le correcteur sort parfois. Son défaut est d’être un peu trop ingénieux par moments… mais bon, ça peut faire rire. :-)

    Parmi les suggestions, il y a particulièrement les suggestions orthographiques. Pour le moment, dans Firefox et Thunderbird, Grammalecte utilise Hunspell pour avoir des suggestions orthographiques, même s’il n’a plus besoin de lui pour savoir si un mot est présent dans le dictionnaire et récupérer les données grammaticales. Il serait utile d’adjoindre un module de suggestion orthographique en parcourant le graphe de mots à la recherche de possibles mots correspondant suffisamment à la graphie inconnue. Un domaine de recherche à part entière. À mon avis, il serait utile d’implémenter une suggestion basée sur des substitutions phonétiques.

    Plus loin, plus fort ?

    Ce n’est qu’une idée, pour l’instant mal formée et un peu extravagante, mais je réfléchis à la possibilité de bâtir un graphe de la grammaire française comme il a été possible de bâtir un graphe de l’ensemble des mots du français. La différence, c’est que la totalité des mots français recensés peuvent s’écrire selon un graphe acyclique, avec un début et une fin connus, tandis que si on schématise la grammaire française les boucles et les récurrences sont possibles, les embranchements innombrables, les fantaisies ne sont pas rares, la longueur de la chaîne de tokens est théoriquement sans limite… Et on ne parle là que de phrases faites avec une grammaire correcte. Comment gérer les erreurs rencontrées ? Faut‐il les intégrer dans ce même graphe en créant des branches d’erreur ?
    C’est une pensée embryonnaire qui n’aboutira peut‐être à rien d’utile, mais si l’on trouve un moyen de bâtir ce graphe, il devrait être possible de gérer des cas très complexes. Ça nous permettrait de sortir du schéma [motif potentiel d’erreur → condition d’erreur → suggestions → message d’erreur] qu’on peut heureusement combiner avec diverses magouilles plus ou moins subtiles élaborées avec le processeur de texte et le désambiguïsateur.

    Ce qui est sûr, c’est que le tokeniseur va prendre une place une place plus importante dans la nouvelle stratégie pour gérer la complexité.

    Créer une extension pour Chrome

    Pas grand‐chose de spécial à dire sur ce sujet. Il est à espérer que produire l’extension pour Chrome prenne un temps raisonnablement court, attendu que Mozilla a essayé de faire en sorte que la nouvelle API soit proche de celle de Chrome. Mais dans l’univers de JavaScript, y a‐t‐il quelque chose de stable et bien pensé ? Ce serait une bonne surprise. J’ironise et je médis, mais c’est un peu mérité, n’est‐ce pas ?
    Quoi qu’il en soit, même si ça se fait plus rapidement qu’attendu – il n’est pas interdit de rêver –, le temps prévu à cette tâche sera utilisé pour renforcer le correcteur, ce ne sera donc pas perdu. En plus, moins je fais de JavaScript, plus je suis heureux… C’est donc avec bonheur que je me livrerai à une tâche plus essentielle que deviner ce que peut vouloir me dire le débogueur de Chrome.

    Outils annexes

    L’amélioration du lexicographe (qui donne des informations sur les mots) et l’assistant lexical (permettant l’ajout simplifié de mots au lexique) ont pour but de revisiter la manière d’améliorer la base lexicale, dont Dicollecte, le site Web existant pour cette tâche, commence à se faire vieux. J’espère inciter les utilisateurs à participer à la conception de la base en rendant l’interface plus simple et plus séduisante, et surtout directement accessible dans son logiciel. Ça a l’air insignifiant, mais c’est une question essentielle.

    Le détecteur de répétitions est proposé parce que c’est un outil qui intéresse potentiellement beaucoup les écrivains soucieux de varier leur vocabulaire.

    Le mot de la fin

    Bon sang ! Difficile de rendre une campagne de financement attrayante quand on parle de grammaire. Au final, on veut juste de petits liserés sous les mots erronés et un menu contextuel qui explique pourquoi c’est faux et qui suggère quelque chose de crédible. Rien de palpitant à la réflexion. On peut espérer susciter l’intérêt des technophiles en parlant de l’arrière‐cuisine et du système de tuyauterie, mais j’avais déjà presque tout dit la première fois, je ne peux que rendre compte de ce qui a été fait et amélioré.

    Si la première campagne vous a satisfait, si vous jugez que la correction grammaticale est trop importante pour être négligée et qu’il faut en finir avec la maltraitance de la langue française, si vous voulez peser sur les priorités du correcteur grammatical ou ajouter des mots spécifiques ordinairement interdits dans le dictionnaire, je vous invite à consulter la page de financement participatif sur Ulule.

    Lire les commentaires

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

    Sommaire

    Tranche de pingouin

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

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

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

    Au début était le cube

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

    où trouver le changement metrique

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

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

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

    mettre la bête en Z 0.

    Il est gros vot manchot ?

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

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

    Et si on l’écartelait ?

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

    Tux pattes interconnectées

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

    tux vue pattes melees

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

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

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

    la même en couleur

    Mais quand est-ce qu’on coupe ?

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

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

    par ex les ailes :

    ailes dissociées

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

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

    idem au niveau de la queue :

    queue perdue

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

    jointure queue

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

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

    retirer les morceaux à l’intérieur des autres

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

    Et si on l’empalait ?

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

    plan des tranches

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

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

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

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

    problème de tranche

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

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

    option thresold

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

    trou du cul de tux

    Nickel !

    bonnes tranches

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

    simul résultat final

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

    On l’empale plus ?

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

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

    trapeze

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

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

    tete de tux

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

    mise en trapeze

    On voit que c’est moche au niveau du pied

    tux chaplin

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

    remodelage du pied

    aspect final

    Parlons peu, parlons kerf

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

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

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

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

    vue fil de fer du tux trapeziste

    C’est la lutte finale

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

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

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

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

    90cm etalon

    Le petit oiseau va sortir

    Enfin presque, il faut encore à faire la photo !

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

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

    100 pourcent

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

    ortho

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

    Tout doit rentrer dans la fenêtre de rendering :

    serrez les rangs

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

    options rendering

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

    option rendering activee

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

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

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

    Je change dans blender le render pour :

    retailler

    Re F12 et vérification.

    Mon étalon fait maintenant 1cm sur 90.01cm.

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

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

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

    points artefacts

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

    Et je fais tout rentrer dedans.

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

    C’est prêt.

    planche à découper

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

    TuxOlaser

    J’upload chez sculpteo.

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

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

    prêt à couper.

    Livraison comprise il vous en coûtera 53.33€.

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

    Déboitage du tux et montage

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

    Bon, puisqu’il faut :

    la boite est bien protégée

    boite

    et la planche dans la mousse

    planche entourée de mousse

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

    scotch sur les pieces

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

    sans scotch à numéroter

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

    debut d'empilage

    piece 33

    redecoupe de la 33

    piece 33 empilee

    Tadaaaa

    Entrer une description pour l'image ici

    A propos de licences

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

    https://opengameart.org/content/tux

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

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

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

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

    Les fichiers

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

    fichier blender

    fichier svg

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Interopérabilité dans les astroports (Journaux LinuxFR)

    Ces dernières semaines c'était plutôt calme, on a fêté un anniversaire à la starfleet academy et les Romuliens montraient plutôt des signes de bonne volonté.

    Cette semaine la polémique a enflé. Les Romuliens sont soupçonnés de fausser la libre concurrence sur la consigne de bagages galactiques.

    C'est vendredi et les Romuliens contre attaquent.
    "C'était pas volontaire, on a pas fait exprès, d'ailleurs … oh une licorne rose qui passe …"

    Ca va encore être le bazar dans les astroports cette année …

    Lire les commentaires

  • Montrez vos bobines (Dépêches LinuxFR)

    Même pour un circuit numérique, il y a une dose d’électronique d’analogique. « Malheureusement », penseront certain. Voyons les bobines, selves ou inductances.

    Une bobine est un dipôle, qui n’a pas de sens de branchement. Sa grandeur principale se mesure en henry (H), dont le nom est hérité du physicien américain Joseph Henry. Elle va de quelques picohenry (pH), à quelques henry (H). La petite équation est U = L × ∂i/∂t.

    tores

    u(t) = L \cdot \frac {di(t)}{dt}

    Pour se rappeler de l’équation, il suffit de se souvenir que des personnes se sont amusées à brancher des bobines sur le secteur, par exemple, un transformateur 5 V mis à l’envers (un transformateur est composé de deux bobines ou plus, qui partagent leur champ magnétique). Ils sont morts en débranchant le système, ce qui provoque un énorme arc électrique. En effet, le courant passe d’une valeur fixe à zéro en une fraction de seconde, la dérivée du courant est très grande, ce qui produit une très grande tension qui fait « claquer » l’air, c’est‐à‐dire que, comme pour un éclair, l’air devient conducteur (à partir de 3,6 kV/mm sous air sec, moins avec de l’humidité ambiante).

    On peut remarquer que si un condensateur « intègre », une bobine « dérive » le courant. Il y a une dualité entre les deux composants.

    Les bobines sont composées d’enroulement d’un fil, autour d’un cœur. La valeur d’inductance dépend du nombre de spires (de tours de fils) et de la matière du cœur.

    L’enroulement est fait en fils de cuivre, moins résistant électriquement que l’aluminium. Si le fil est fin et avec beaucoup de spires, la résistance série parasite n’est plus négligeable.

    Le matériau magnétique permet d’augmenter L, l’inductance, sans augmenter le nombre de spires, par rapport à une bobine « à air ». Mais au contraire de l’air, ces matériaux « saturent ». Arrivé à un certain niveau de courant électrique, la valeur L s’écroule, et la bobine se comporte comme une simple résistance. Les bobines à air ne saturent pas, mais sont bien plus grandes, pour avoir la même valeur d’inductance et, évidemment, la résistance série parasite augmente avec la taille de la bobine.

    Pour certains circuits de précision, il peut être utile d’utiliser une grosse bobine à air pour pouvoir comparer le résultat avec la bobine définitive plus petite.

    Il existe deux formes physiques : le plot ou le tore. Le plot peut être plus facile à placer sur un circuit imprimé, mais il rayonne plus (produit plus de parasites) qu’un tore.

    Seule
    La self, comme on dit en anglais, de choc ou d’arrêt est un moyen de filtrage de parasites. Un moteur génère toujours des tensions parasites plus ou moins fortes. Même si les alimentations sont séparées, la masse est commune. Or les parasites peuvent aussi passer par là. Mettre une bobine de choc, pour relier les masses évitent d’avoir des réinitialisations intempestives d’un microcontrôleur, par exemple (vécu).

    La plus petite en dessous vaut environ 1 € et supporte jusqu’à un courant de 1 A :
    2chocs
    Deux bobines dites « de chocs », utilisées comme anti‐parasites. (CC-BY 2.0 — auteur : Oskay)

    Sur certains câbles, comme les câbles USB, on peut voir un gros bloc plastique, qui a une fonction similaire.

    Réservoir d’énergie
    Le principe de certaines alimentations à découpage est de générer un signal carré, dont la valeur moyenne est la tension recherchée. Ce genre d’alimentation utilise le fait que les transistors MOS ne consomment presque pas d’énergie, quand ils sont passants ou saturés.

    Ensuite, il faut filtrer la sortie pour ne récupérer que cette moyenne, ou la « très basse fréquence », qui est la tension recherchée. Si l’on filtre avec un classique filtre RC, une grosse partie de l’énergie partira en chaleur dans la résistance. Un filtre LC filtre sans dissiper l’énergie (hors résistance série parasite). Les deux éléments L et C stockent l’énergie à des moments différents.

    Il est question d’éléments de puissance, les fils de la bobine doivent être assez gros pour limiter les pertes ohmiques.

    tores
    Bobine torique utilisée comme réserve d’énergie. (CC-BY 2.0 — auteur : Oskay)

    Sur l’image, le fil est doublé pour diminuer la résistance.

    J’ai peu utilisé les bobines, en dehors des bobines de choc et d’une alimentation à découpage. C’est le seul composant qui peut se faire à la main, pour avoir le meilleur résultat. Il peut être compliqué de trouver des bons cœurs magnétiques, ou de trouver le câble de 2 mm, protégé par un vernis, typique des applications dans le domaine de puissance qui intéresse un hobbyiste (1 à 100 W). Mais il est plaisant d’avoir sa propre alimentation, à une tension peu commune, pour fournir 6 V sous 20 A pour des servomoteurs branchés sur une batterie 12 V, par exemple.

    En conclusion, il faut se rappeler qu’il existe plusieurs sortes de bobines qui peuvent supporter un courant maximum, avant de se transformer en résistance.

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

    Lire les commentaires

  • Revue de presse de l'April pour la semaine 27 de l'année 2016 (Dépêches LinuxFR)

    La revue de presse de l'April est régulièrement éditée par les membres de l'association. Elle couvre l'actualité de la presse en ligne, liée au logiciel libre. Il s'agit donc d'une sélection d'articles de presse et non de prises de position de l'association de promotion et de défense du logiciel libre.

    Sommaire

    [Journal du Net] Contribuer à l’open source, un levier de croissance et de dynamisme pour l’entreprise

    Par Arnaud Breton, le jeudi 7 juillet 2016. Extrait:

    La production en open source est extrêmement riche et présente de nombreux avantages pour les entreprises dès lors qu’elles souhaitent s’y investir de manière concrète et durable.

    Lien vers l'article original: http://www.journaldunet.com/solutions/expert/64809/contribuer-a-l-open-source--un-levier-de-croissance-et-de-dynamisme-pour-l-entreprise.shtml

    [L'OBS] Chic, le gouvernement choisit le logiciel libre. Zut, c’est en Bulgarie

    Par Thierry Noisette, le mercredi 6 juillet 2016. Extrait:

    Apprendre que le gouvernement choisit, pour tout développement logiciel sur mesure qu’il commandera, de privilégier les logiciels sous licences open source, voilà qui réjouit les partisans des logiciels libres et de leurs avantages (partage, économie, souveraineté…).

    Lien vers l'article original: http://rue89.nouvelobs.com/2016/07/06/chic-gouvernement-choisit-logiciel-libre-zut-cest-bulgarie-264570

    Et aussi:

    [France Info] Un Wikipédia mondial du logiciel

    Par Jérôme Colombain, le mercredi 6 juillet 2016. Extrait:

    Les logiciels constituent aujourd’hui une part importante de notre savoir collectif mais ils peuvent se perdre. Pour éviter cela, des Français ont décidé de créer une sorte de bibliothèque mondiale du logiciel.

    Lien vers l'article original: http://www.franceinfo.fr/emission/nouveau-monde/2015-2016/un-wikipedia-du-logiciel-06-07-2016-07-00

    [Next INpact] Loi Numérique: pas de recours «prioritaire» aux logiciels libres pour l'administration

    Par Xavier Berne, le lundi 4 juillet 2016. Extrait:

    En dépit des avis émis par les participants à la consultation sur l'avant-projet de loi Numérique, le législateur n’a pas souhaité imposer aux administrations de recourir «en priorité» aux logiciels libres. Les fonctionnaires devront simplement s’en tenir à un vague «encouragement».

    Lien vers l'article original: http://www.nextinpact.com/news/100503-loi-numerique-pas-recours-prioritaire-aux-logiciels-libres-pour-l-administration.htm

    Voir aussi:

    Lire les commentaires

  • PyConFR 2018, du 4 au 7 octobre à Lille : appel à contributions (Dépêches LinuxFR)

    PyConFR18

    La PyConFR, c’est le rassemblement annuel francophone de passionnés et curieux du langage Python. Cette année, on invite la communauté à se retrouver à Lille du 4 au 7 octobre.

    Pour ceux qui ne connaissent pas la formule, les deux premiers jours (jeudi et vendredi) sont dédiés à des sprints (hackathons), et le week‐end sera rempli de conférences et d’ateliers découverte.

    Contribuez à cette édition et aidez‐nous à la rendre mémorable en proposant du contenu : conférences, ateliers, sprints !

    Quelques idées de sujets : enseignement du langage, montée en charge (scaling), sécurité, science des données, apprentissage automatique (machine learning), retour d’expérience, empaquetage, présentation d’une bibliothèque, Internet des objets (IoT), asynchrone, communauté, diversité, pyre-check, 2to3, PyPy, Python vs Go, intégration et livraison continues (CI/CD), stockage de données, agents conversationnels (chatbots), Python magic, Ansible vs SaltStack et tellement d’autres…

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Sortie de Sailfish OS 2.2.0 (Journaux LinuxFR)

    Bien que n'étant pas propriétaire d'un téléphone fonctionnant avec Sailfish OS, je regarde régulièrement les avancées de ce système alternatif à Android et iOS.

    Bonne nouvelle, j'ai découvert ce matin qu'une mise a jour a été publiée le 7 juin : la version 2.2.0

    Celle-ci supporte (enfin) la version double SIM du Sony Xperia X (F5122) en plus la version simple SIM (F5121) qui était un prérequis pour moi pour ne pas avoir deux téléphones dans la poche. Le communiqué met en avant d'autres fonctions qui sont maintenant apportées comme le déverrouillage par empreinte, un meilleur autofocus de l'appareil photo et une refonte de l'application de galerie.

    La note de publication détaille davantage les nouveautés et les anomalies identifiées, avec toujours quelques difficultés sur des équipements Bluetooth.

    Est-ce que des lecteurs ont un téléphone qui fonctionne avec Sailfish pour obtenir leur avis et retour d'expérience ? J'utilise le téléphone de façon très basique (téléphone, mail, internet et GPS) pour le travail et un usage perso. Le partage de connexion internet avec le PC est néanmoins indispensable ! Éventuellement quelques mini jeux pour passer le temps mais c'est assez exceptionnel.

    Merci

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Itop... l'ITSM opensource (Journaux LinuxFR)

    Cher Nal
    C'est la première fois que je t'écris. Je ne suis qu'un humble lecteur. Quelques relectures orthographiques par ci par là… Mais aujourd'hui, j'ai pris mon courage à deux mains sur le clavier.
    Je veux te parler d'un logiciel que j'ai testé il y a quelques temps : iTop.

    Késako? un ITSM Opensource,soutenu par une entreprise iséroise (cocorico). L'interface est simple et épurée

    Il permet :
    - La gestion des changements
    - La gestion des incidents
    - La gestion des demandes utilisateurs
    - La gestion des services
    La CMDB est simple et dynamique. De beaux tableaux de bords pour nos dirigeants, une base de connaissance pour nous techniciens…. Connecteurs pour Nagios, Cacti… etc
    Énumérer la liste des fonctionnalités est fastidieuse, mais le logiciel répond à tout ce qu'on trouve sur le marché (en beaucoup plus cher)

    Bref, tout ce qu'on a besoin dans un logiciel dit ITSM avec en cadeau, la licence AGPL (v3).

    J'ai lu qu'on ne parlait pas assez technique : C'est du LAMP …. what else?

    Voila, Nal, je laisse quelques liens pour les plus interessés. A bientôt peut être.

    Liens
    1. Site Communautaire
    2. Démo en ligne
    3. Une nimage pour la route

    Lire les commentaires

  • Dogmazic a besoin de vous ! (Dépêches LinuxFR)

    Bonjour à tous,

    L'Association Musique Libre qui porte le site Dogmazic.net change de projet. Le développement de la version 3 du site est trop coûteux en temps, en énergies, et en finances. L'association a donc décidé de recentrer ses activités vers du concret. Fini l'attente d'une hypothétique version 3 du site (le développement est toujours disponible sous licence libre et maintenu par son développeur sur github ). Nous avons décidé de nous recentrer autour de nos actions principales : les nouvelles informations autour de la musique libre, le forum, la documentation et notre archive 2004-2012.

    Pour cela, nous avons besoin de migrer vers un nouvel hébergeur nous correspondant mieux : Aquilenet. Malheureusement, nous avons beau être des musiciens, être sous diverses distributions Linux, et militants en faveur du libre depuis pas mal d'années, nous ne savons pas - encore - effectuer une migration de base de données et de sites complets.

    C'est pourquoi nous sollicitons vos bonnes volontés afin de nous y aider.

    Nous vous donnons rendez-vous sur notre chan IRC : irc.freenode.net #dogmazic (ou http://musique-libre.org:7778 )

    Merci !
    Aisyk pour l'Association Musique Libre !

    Lire les commentaires

  • Mise à jour des pages de manuel de Fedora (Linux Certif)

    Je suis motivé en ce moment :)

    Une fois de plus, j'ai mis à jour les pages de manuel, cette fois à partir des pages de la distribution Fedora.

    Depuis peu, mon ordinateur fonctionne grâce à Arch Linux, ce qui a posé pas mal de problème pour l'importation des pages. J'ai vérifié les pages manuellement et tout semble correct mais il est impossible d'être sûr lorsqu'on manipule autant de pages. N'hésitez pas à écrire si vous trouvez des problèmes.

    C'est 18545 pages de plus qui ont été ajouté au site (toutes langues confondues). Au total, le site héberge désormais plus de 200 000 pages! :)

    Il semble que Fedora ai réalisé un important effort de documentation. Beaucoup de nouvelle pages et de nouvelles traductions ont été introduite.

  • L'équipe Ubuntu Desktop aimerait avoir vos commentaires (Journaux LinuxFR)

    Vu sur l'article The Ubuntu Desktop Team Wants YOUR Feedback d'OMG! Ubuntu!

    L'équipe Ubuntu Desktop est chargée de faire la transition de Unity vers GNOME, et ils auraient besoin de vos commentaires pour les aider à faire cette transition.

    Le questionnaire liste quelques extensions GNOME, que vous pouvez évaluer selon qu'elles vous paraissent utiles ou non.

    Dans le cas où vous voudriez répondre au questionnaire, vous devez vous rendre sur la page Ubuntu 17.10 GNOME Desktop Survey. Attention pour répondre au questionnaire on vous demande de vous authentifier sur un compte Google.

    Lire les commentaires

  • Zet Uw Volgende Sigaret Into Your Last Met Deze Stoppen Met Roken Tips (Laboratoire Linux SUPINFO)

    e liquid ingredients. Als je een roker bent , is de kans groot dat u wilt stoppen en gewoon niet weten hoe dit te doen . Wees niet ontmoedigd , omdat de informatie en technieken die in dit artikel zijn bedoeld om mensen zoals jij te helpen . Gebruik de tips in dit artikel om u te helpen langs de weg om een ​​niet-roker

    does e liquid get you highOm uw kansen op succesvol stoppen met roken te stimuleren , denken zetten op papier alle potentiële voordelen en gevolgen van stoppen . Aanbrengen van de kwestie schriftelijk zal u helpen om het beter te kunnen zien . Dit kan u helpen gemotiveerd te blijven , en kunnen stoppen gemakkelijker te maken .

    Als u rookt als een manier om stress te beheersen , wil je andere stress saneringstechnieken klaar hebben wanneer je besluit om te stoppen . Blijf uit situaties die je kan stress voor de eerste paar weken nadat je hebt gestopt . U kunt ook uw stress te beheren door middel van yoga , meditatie of door het krijgen van een massage .

    Vergeet niet dat uw houding is alles. Wanneer u begint te voelen beneden , moet je proberen om jezelf er trots op dat je stoppen te maken. Roken is slecht voor je en elke keer dat je de drang om te roken te veroveren , moet je trots voelt als u het nemen van belangrijke stappen in de richting van een gezonder je .

    Maak een studie van wat triggers uw roken en zoek manieren om je triggers te vermijden. Bijvoorbeeld zaken als roken tijdens het rijden of het lezen , zodat je niet automatisch denken over je rookgedrag te veranderen . Je nodig hebt om een afleiding te vinden, om na te denken over iets anders.

  • France Culture: que reste-t-il du logiciel libre ? (Journaux LinuxFR)

    Bon jour Nal !

    L'émission Du grain à moudre d'hier, sur France Culture, posait cette question: « Que reste-t-il du logiciel libre ». Des représentants de Framasoft et de Microsoft tentaient de répondre à la question. On peut écouter l'émission en podcast.

    J'écoutais vaguement en faisant la cuisine… J'en ai néanmoins déduit une conclusion:

    • Le modèle économique du logiciel libre, qui consiste à vendre un service plutôt que le logiciel l'a emporté. C'est du moins le modèle économique que le représentant de Microsoft considère dorénavant le plus viable.
    • Le logiciel libre, entendu comme 4 libertés, prospère dans les piles logicielles éloignées de l'utilisateur final, mais peine à s'imposer dans les logiciels plus proches de l'utilisateur final.
    • L'éthique que certains (dont moi) associent au logiciel libre, de maîtrise de son outil de travail ou de ses données perd du terrain. Non seulement parce que le modèle du service (dans les nuages) s'est imposé, mais aussi parce que d'une manière générale, plus l'on s'approche de l'utilisateur final, moins on trouve de logiciel libre.

    Commentaires : voir le flux atom ouvrir dans le navigateur

  • Quel terminal pour 2018 ? (Dépêches LinuxFR)

    Vous connaissez les terminaux, ces petites fenêtres le plus souvent noires où l’on tape des lignes de commande bizarres ? Eh bien, vous risquez d’être surpris : le choix du logiciel pour faire ça n’est pas aussi simple que ça en a l’air et des gens continuent de proposer de nouvelles alternatives. Cette dépêche vise à présenter rapidement quelques fonctionnalités intéressantes que les terminaux historiques ne géraient pas forcément et à présenter quelques terminaux.

    Sommaire

    Les fonctionnalités

    Apparence et polices

    Historiquement, les terminaux avaient une couleur pour le texte et une autre pour le fond. Si l’on s’en tient à ce siècle, les terminaux étaient principalement en 16 couleurs au début, puis certains terminaux ont commencé à gérer des palettes de couleur plus étendues (256 couleurs par exemple) et, aujourd’hui, certains terminaux savent manipuler des couleurs sur 24 bits.

    De même, les terminaux utilisaient surtout des jeux de caractères où un caractère était codé sur un octet, mais la prise en charge d’Unicode est maintenant répandue. Il faut néanmoins se méfier, certains terminaux annoncent gérer l’Unicode mais ne savent pas afficher les caractères codés sur quatre octets comme les émojis.

    La prise en charge des polices peut également réserver certaines surprises. Tous les terminaux ne savent pas afficher des ligatures comme on peut trouver dans Fira Code ou les polices avec les symboles Powerline.

    Et l’on peut également citer la possibilité d’avoir des coins arrondis ou de la transparence parmi les fonctionnalités proposées par des terminaux.

    Terminaux multiples

    Certains logiciels proposent de gérer plusieurs terminaux. Cela peut se faire avec un seul processus qui contrôle plusieurs fenêtres pour gagner en mémoire vive, mais l’approche la plus courante consiste à avoir une seule fenêtre avec plusieurs onglets. Enfin, il existe des terminaux qui reprennent l’approche des gestionnaires de fenêtres par pavage : une seule fenêtre peut être découpée pour afficher plusieurs terminaux et des raccourcis clavier permettent de contrôler le placement des terminaux et passer de l’un à l’autre.

    Performances

    A priori, un terminal ne serait pas l’endroit où l’on accorderait la plus grande importance aux performances. Pourtant, la latence des terminaux n’est pas toujours suffisamment faible pour se faire oublier.

    On peut également citer la vitesse de défilement ou la quantité de mémoire utilisée.

    Simplicité et fonctionnalités

    Certains terminaux se veulent volontairement limités en termes de fonctionnalités. D’autres font plus de choses, et certains vont jusqu’à proposer des greffons ou des API pour permettre des usages avancés.

    Dans les fonctionnalités que l’on retrouve chez certains mais pas chez d’autres, il y a la possibilité de remonter dans l’historique du terminal (le scroll‐back est parfois laissé à un logiciel tiers comme tmux dans certains terminaux), pouvoir cliquer sur les liens, pouvoir lancer des commandes au démarrage du terminal, l’affichage d’images directement dans le terminal, la prise en charge de Wayland, etc.

    Les terminaux

    Les grands classiques

    Tout d’abord, il y a les grands classiques. Le plus connu est xterm, suivi par rxvt et son dérivé rxvt-unicode.

    Ceux intégrés à un environnement de bureau

    Les principaux environnements de bureau ont leur terminal : Konsole pour KDE, GNOME terminal pour GNOME, Xfce terminal pour Xfce et Terminology pour Enlightenment.

    Les terminaux légers

    st est un terminal codé en peu de lignes de C, avec un choix fort de ne pas prendre en charge certaines fonctionnalités et de ne pas faire de gros efforts pour les performances.

    qterminal est un terminal léger s’appuyant sur Qt.

    Les pavants

    GNOME Terminator et Tilix sont deux terminaux qui mettent en avant la possibilité de découper leur fenêtre pour afficher plusieurs shells à l’intérieur.

    Ceux utilisant la bibliothèque VTE

    Il existe plusieurs terminaux s’appuyant sur la bibliothèque VTE (ou des dérivées de cette bibliothèque). Citons termite, sakura et GTKTerm.

    Ceux pour les amoureux de Quake

    Quake avait une console qui s’ouvrait en appuyant sur la touche ² et qui se déroulait depuis le haut de l’écran. Certains terminaux s’en sont inspirés, comme Yakuake, Guake et Tilda.

    Les rapides, en OpenGL

    Alacritty est un terminal récent qui utilise le processeur graphique (via OpenGL). C’est probablement le terminal le plus performant aujourd’hui. En revanche, il ne couvre que peu de fonctionnalités (pas encore d’historique, par exemple).

    kitty est un autre terminal qui tire parti du processeur graphique. Il propose également pas mal de fonctionnalités.

    L’artillerie lourde

    Hyper est un terminal en HTML/CSS/JS (c’est du Electron derrière). Ça ouvre des possibilités intéressantes pour les greffons et l’affichage d’images ou de vidéos, mais ça a également des inconvénients (on peut, par exemple, se poser la question des performances).

    Terminus est un dérivé d’Hyper.

    Upterm, anciennement nommé Black Screen, est également un terminal qui tourne avec Electron. Il fournit également le shell et une auto-complétion graphique des commandes.

    Les originaux

    cool-retro-term est un terminal avec un aspect qui fait penser aux vieux tubes cathodiques. Pour les nostalgiques donc !

    Et le gagnant ?

    Il n’y a pas vraiment de gagnant. Différentes personnes ont différents critères. Pour certains, la prise en charge des ligatures est primordiale, alors qu’elle peut être totalement inutile pour quelqu’un d’autre.

    À titre personnel, j’ai testé pas mal de terminaux et je suis resté sur urxvt. kitty me semble particulièrement intéressant, mais un bogue de ma carte graphique m’empêche de l’utiliser. Alacritty me semble encore un peu trop jeune et limité en fonctionnalités. Je ne suis pas à l’aise avec les versions extrêmes : st est trop limité à mon goût, alors que Hyper est trop lourd. Je n’ai pas particulièrement apprécié les terminaux liés à un environnement de bureau (mais je n’utilise pas d’environnements de bureau) et je suis tombé sur plusieurs bogues gênants pour les terminaux avec la bibliothèque VTE.

    Wikipédia propose une liste de terminaux et une comparaison de certains d’entre eux.

    Et vous, chers lecteurs, qu’utilisez‐vous ? Et pourquoi ?


    N. D. A. : Merci aux nombreuses personnes qui ont commenté pour faire découvrir leur terminal préféré. J’ai ajouté ces terminaux à la dépêche, mais je vous encourage à lire les commentaires, c’est plus détaillé et cela permet de mieux comprendre les spécificités de chaque outil !

    Lire les commentaires

  • À propos de boohu, un nouveau jeu roguelike, et puis de quelques autres (Journaux LinuxFR)

    Sommaire

    Bonjour Nal,

    Aujourd'hui je viens te parler de boohu, un jeu roguelike libre que je suis en train de coder. Je vais aussi te parler de mon expérience avec quelques autres jeux libres du même genre, histoire de t'encourager à les essayer : il y en a pour tous les goûts ou presque !

    Donc, d'abord, un roguelike, c'est quoi ? Traditionnellement, c'est un jeu d'exploration de donjon au tour par tour, comme le tout premier jeu du genre qui, surprise, s'appelle Rogue et date des années 80. Depuis, le genre a beaucoup évolué, mais l'idée de base est souvent la même : le joueur contrôle un personnage sur une carte générée procéduralement et choisit à chaque tour d'effectuer une action. La priorité est donnée en général au gameplay, même si de nos jours certains jeux du genre font plus attention aussi au reste. Il y a souvent tout plein de monstres et d'objets divers et variés, et il s'agit de se dépatouiller avec pour survivre, car, contrairement à d'autres jeux comme les jeux de rôle, on ne meurt normalement qu'une fois par partie. Il y a parfois un objectif final particulier mais, les premières fois, c'est rarement important : on meurt souvent et pas que d'une seule façon :)

    Break Out Of Hareka's Underground

    boohu c'est le pseudo pour Break Out Of Hareka's Underground (Échappe des Souterrains d'Haréka). C'est un roguelike classique en bonne partie inspiré de DCSS, avec quelques idées de Brogue, mais visant à offrir des parties beaucoup plus courtes, pas de construction élaborée de personnage et une gestion d'inventaire simplifiée. Un roguelike dit coffee-break (pause café).

    Écran de démarrage

    Pour l'installer, c'est plutôt facile et expliqué sur la page github du projet.

    Le joueur commence dans les Souterrains où il a atterri on ne sait trop comment et, pour en échapper, il doit trouver des escaliers magiques quelque part dans les profondeurs. Il s'agit alors de trouver des trésors et de s'équiper d'armes, armures, potions et bâtons magiques tout en survivant au milieu de monstres variés, allant du simple groupe de gobelins, aux hydres à quatre têtes, en passant par des grenouilles géantes qui te téléportent. Parfois le plus sage est de fuir, possibilité à prendre particulièrement en compte si le monstre est en train de dormir. D'autres fois, pas le choix, il faut se battre ou prendre des mesures d'urgence.

    Toute la difficulté du jeu réside dans ces décisions tactiques et dans le positionnement astucieux du joueur sur la carte, ainsi que sur l'utilisation appropriée des divers objets. En particulier, il ne faut pas hésiter à utiliser ses potions et bâtons magiques ! Bien sûr, il ne faut pas non plus gaspiller les ressources inutilement, mais chez le débutant l'erreur principale est en général d'oublier simplement d'utiliser ce qu'il possède aux moments les plus critiques :) C'est d'ailleurs un conseil qui vaut pour la quasi-totalité des roguelikes. Parmi les caractéristiques particulières de boohu et non présentes forcément dans tous les roguelikes, il y a en particulier :

    • Pas d'XP, ni de nourriture, ni d'escaliers pour revenir à la carte précédente ; gestion simplifiée d'inventaire : par exemple, on ne peut pas porter plus d'une arme à la fois (sans compter certains projectiles). Tout est fait pour simplifier tout ce qui n'est pas positionnement tactique et utilisation stratégique des ressources. Le joueur acquiert aléatoirement un petit nombre d'aptitudes, au fur et à mesure qu'il descend, sans contrôle de la part du joueur.
    • Des parties très courtes (pour un roguelike).
    • Exploration automatique avec possibilité de marquage manuel de zones non sûres (un peu comme DCSS, ça permet de contourner un ogre pas sympa, par exemple).
    • Un nombre modéré de monstres différents : l'idée est de faire dans le qualitatif, donc il n'y a pas dans le jeu deux monstres dont l'un est une simple amélioration des stats du précédent. Il faut qu'il y ait une différence qualitative, comme une attaque spéciale, une différence de vitesse, de comportement (en groupe ou solitaire), etc. Bref, quelque chose qui fasse que l'expérience est potentiellement vraiment différente.
    • Une fusion des systèmes magiques à base de points de magie (mana) et des systèmes à base de charges: les bâtons magiques. L'utilisation de mana limite le nombre d'utilisations successives de magie, tandis qu'un nombre de charges limité (rechargés au fur et à mesure que l'on descend plus profondément dans les Souterrains) impose de savoir ne pas les gaspiller inutilement.

    Le jeu est en développement, mais il a atteint la phase où c'est devenu un jeu relativement complet et plutôt stable, même s'il y aura sans doute de nouveaux trucs et des petits rééquilibrages régulièrement ; peut-être une version avec des tuiles, un jour. Je serais donc ravi d'avoir des testeurs ou autres contributions ! :)

    Au début, j'avais pensé un peu te raconter aussi les différents algorithmes de génération procédurale de cartes, mais ça allait faire un journal un peu long, donc ça sera peut-être pour une autre fois si je trouve le temps.

    Mes expériences avec d'autres roguelikes

    Si je me suis mis à coder un roguelike, c'est parce que j'aime plutôt ce genre et ai joué à un certain nombre de ces jeux, donc je vais te faire part de mes expériences en espérant te tenter avec une de ces petites merveilles. Petite remarque en passant : c'est intéressant de voir qu'il s'agit d'un des rares genres où une bonne partie des jeux les plus connus sont libres, à quelques exceptions près et sans compter les roguelikes temps-réel, aussi appelés parfois roguelites ou roguelike-like, qui semblent assez différents et que je n'ai jamais eu l'occasion de tester encore.

    Dungeon Crawl Stone Soup

    DCSS est le roguelike auquel j'ai le plus joué et qui a influencé le plus boohu : les méchanismes de combat et d'utilisation de ressources sont assez similaires. J'avais fait une dépêche il y a quelques années. Le jeu évolue vite et la communauté de joueurs est de nos jours devenue assez grande, avec plusieurs milliers de joueurs qui participent à des tournois bi-annuels.

    Contrairement à boohu, il offre une version avec des tuiles plutôt réussie et est jouable entièrement à la souris, pour ceux qui sont plus à l'aise ainsi. Il offre aussi un vaste panorama d'espèces et d'origines variées parmi lesquelles choisir, donnant des possibilités de rejouabilité assez énormes. Un système d'habiletés permet de contrôler un peu l'évolution du personnage. Ainsi, on pourra commencer par un minotaure berserker, puis finir avec une momie chevalier du chaos, en passant par un octopode mage sans armure mais huit anneaux magiques. Les combinaisons possibles sont énormes, et toutes ne sont pas aussi viables les unes que les autres, donc ça permet de relever des défis plus difficiles quand on connaît bien le jeu.

    Le donjon est aussi très vaste, avec un certain nombre de branches thématiques optionnelles, au sens, l'objectif minimal du jeu est juste de trouver trois runes et d'échapper avec l'orbe de Zot, mais on peut trouver jusqu'à 15 runes.

    Le jeu est relativement facile à prendre en main et a fait des efforts d'accessibilité pour les débutants, mais est quand même complexe et les parties sont relativement longues, plusieurs heures, en général autour de 6 en ce qui me concerne pour échapper avec 3 runes, mais des joueurs chevronnés terminent ça régulièrement en trois heures voire moins pour certains. Ça dépend assez de l'approche du jeu de chacun aussi, certains aiment prendre leur temps, d'autres moins. Enfin, pour les débutants les parties risquent d'être assez courtes ! ;)

    Brogue

    Brogue est un roguelike récent plus proche des origines, c'est-à-dire du jeu Rogue originel, mais en plus moderne avec une interface plutôt réussie, jouable à la souris et qui utilise des caractères Unicode avec des couleurs de façon très artistique ! Les parties sont de longueur moyenne, et l'accent est mis sur la simplicité. Il n'y a donc pas d'XP (seulement des potions de vie et de force), et pas d'habiletés : on peut par contre améliorer les objets en utilisant des parchemins d'enchantement avec des effets très divers. Les interactions entre objets et avec le terrain sont assez élaborées (on peut mettre le feu à certaines zones, par exemple). On se retrouve parfois à poursuivre des singes qui ont volé notre nourriture, ou à se cacher dans des coins sombres pour passer inaperçu. Les monstres sont variés et chacun a ses points forts et ses points faibles. Bref, c'est prenant.

    À tester pour ceux qui veulent un roguelike classique plus simple que DCSS, mais plus amical que le Rogue originel et qui veulent découvrir de l'art Unicode bien fait. J'y ai personnellement pas joué autant que j'aurais voulu, parce que sous OpenBSD ça crashe malheureusement parfois, mais j'ai bien aimé.

    Tales of Maj'Eyal

    Aussi appelé ToME4, Tales of Maj'Eyal est un roguelike qui s'éloigne un peu des classiques. Il y a eu aussi une dépêche il y a quelques années. C'est un jeu bien fait, riche en contenu et utilisable complètement à la souris. Il y a plusieurs niveaux de difficulté parmi lesquels choisir et, en particulier, un mode exploration qui peut être pratique pour les débutants. De plus, par défaut, le jeu offre plusieurs vies plutôt qu'une seule, la logique étant, je suppose, que le jeu étant si long une faute d'attention pourrait devenir un peu agaçante autrement.

    Plus important, contrairement aux roguelikes classiques, il n'y a pas de gestion stratégique de ressources périssables : le jeu utilise uniquement des pouvoirs qui se rechargent au bout de quelques tours après utilisation pour la plupart, ainsi que d'autres qui doivent être maintenus à l'aide d'un coût en énergie, fatigue, etc. L'évolution du personnage utilise un système de classes avec des arbres d'habiletés assez complexes : à chaque nouveau niveau d'expérience le joueur choisit de répartir un certain nombre de points parmi différents pouvoirs ou aptitudes diverses. On peut choisir entre un certain nombre d'espèces et, en fonction des aventures, on débloque des espèces et des classes en plus.

    L'absence de ressources périssables est quelque chose qui m'a un peu manqué dans ce jeu, et j'ai trouvé qu'il y a un léger excès d'abondance d'objets pas forcément toujours très différents les uns des autres. Le jeu est aussi un peu trop axés sur des considérations numériques à mon goût et pas forcément toujours très bien équilibré. Ceci dit, je me suis quand même bien amusé et ai insisté suffisamment pour venir au bout du jeu, qui est quand même très long (je me souviens plus exactement, mais ça a dû me prendre largement plus de dix heures pour finir, peut-être vingt, sans compter les fois où je suis mort bêtement au début). La deuxième moitié du jeu m'a d'ailleurs semblé plutôt facile, à part une mauvaise surprise ou deux, mais sans doute parce que je me suis contenté de la difficulté normale.

    Bref, à tester pour ceux qui sont attirés par le système complexe d'habiletés, un monde riche et vaste, l'existence de plusieurs niveaux de difficultés et qui n'ont pas peur des nombres.

    Un petit détail : les tuiles utilisées par défaut sont jolies, mais malheureusement pas libres. A priori il est possible de les changer, ceci dit.

    Cataclysm: Dark Days Ahead

    En abbrégé, CataclysmDDA. C'est un roguelike de survie dans un monde post-apocalyptique. Contrairement à la plupart des roguelikes, il n'y a pas d'objectif particulier, pour autant que je sache. La communauté semble assez active. Il y a plusieurs ensembles de tuiles différents.

    Le jeu fait extrêmement dans les détails. Il faudra par exemple bouillir l'eau sous risque d'attraper des maladies, manger varié et cuisiner (il y a tout un tas de recettes différentes) en faisant gaffe si on veut pas faire brûler toute la maison. Contrairement à la plupart des jeux qui utilisent des points de vie, le système est plus granulaire et s'intéresse aux différentes parties du corps. On peut s'amuser à conduire et réparer des automobiles et construire tout un tas de trucs. Bref, c'est très impressionant.

    Honnêtement, je ne me suis pas encore vraiment plongé dedans, parce que ça semble demander un investissement conséquent et c'est un peu tout le contraire d'une partie courte. Mais c'est en tout cas quelque chose, donc j'avais envie de le mentionner ! :)

    Hyperrogue

    Hyperrogue est un roguelike un peu spécial, plus proche des jeux type casse-tête, qui se déroule sur le plan hyperbolique, donc c'est très spécial. C'est une bonne façon de découvrir de façon intuitive cet objet mathématique, d'ailleurs.

    Je le mentionne surtout parce que c'est original, je n'y ai pas joué tant que ça, car ça s'éloigne du genre originel et c'est légèrement répétitif à mon goût, mais d'autres semblent apprécier beaucoup. Le jeu est libre, bien qu'il semble y avoir quelques extensions qui ne le sont pas.

    Autres roguelikes : Angband, Nethack, etc.

    Il y en a beaucoup d'autres que j'ai pas ou peu testés. Je conseille la visite du site roguebasin qui liste beaucoup de jeux du genre (tous ne sont pas libres).

    Dans les classiques que j'ai pas mentionnés avant il y a Angband et ses multiples variantes, dont Sil qui est vraiment pas mal et qui partage avec boohu l'absence de progression pour les points de vie. Ils s'inspirent principalement des œuvres de Tolkien (sauf quelques variantes). Le jeu vanilla m'avait semblé long et plus enclin à encourager des actions prudentes plus ennuyantes qui sont souvent plus difficiles dans d'autres jeux du genre (comme rester très longtemps quelque part pour tuer des monstres et gagner de l'XP), tandis que Sil par contre est un jeu plus court et plus équilibré, mais chacun ses goûts !

    Il y a aussi le fameux Nethack (et ses variantes), le jeu aux mille surprises, qui continue à faire son bout de chemin avec une communauté active (c'est probablement l'un des plus vieux jeux encore en développement). Faut vouloir être prêt à mourir des dizaines et dizaines de fois, ou à aller consulter des spoilers régulièrement. Mais ça veut pas dire que c'est pas amusant : le nombre de façons différentes de perdre une partie dans ce jeu de façon originale est absolument hilarant :) Ça va de l'intoxication alimentaire à la noyade, en passant par la transformation en pierre, quand c'est pas juste la colère des dieux !

    Voilà !

    Lire les commentaires

  • Lister rapidement les liens d'une page web (Journaux LinuxFR)

    Il y a quelques jours je suis tombé sur une page web cul-de-sac. Pas un rongeur pour se la rat-comté.

    J'ai donc tenté une inspection du HTML pour tenter d'y voir plus clair, et là j'me suis dit qu'une petite formule de JavaScript me donnerait une réponse limpide quant à la présence de lien dans la page :

    javascript:document.querySelectorAll('a').forEach(console.log)
    Ça rentre à l'aise dans un marque page, et ça peut dépanner. En plus l'affichage est celui, enrichi, des nœuds HTML dans la console de Firefox. Évidemment, ça marche pour l'importe quelle balise citée dans le querySelectorAll : img ? link ?

    J'ai ajouté la formule à mon http://www.grimoire-command.es/post/2018/List-web-page-links-in-Firefox

    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

  • ddrescue, dd_rescue, myrescue : récupérer ses données après un crash disque (Dépêches LinuxFR)

    dd_rescue 1.99 est sorti le 9 septembre 2015.
    GNU ddrescue 1.20 est sorti le 14 septembre 2015.

    dd?rescue sert à récupérer vos données suite à un crash du support physique (disque dur, CDROM, etc.). Il copie les données bloc par bloc en créant une image disque, ce qui le rend utilisable avec tous les systèmes de fichiers. Mais à la différence d'un outil d'image disque classique (dd, G4U ou le logiciel propriétaire Norton Ghost) la lecture suit un algorithme conçu pour récupérer un maximum de données sans provoquer d'autres dégâts sur un disque déjà abîmé.

    Je vais illustrer son utilisation avec l'histoire d'un crash disque réel, encore en cours de résolution pendant que j'écris ces lignes. Je mettrai l'accent sur tout ce qu'il ne faut pas faire, puisqu'à moins d'avoir fréquemment des crashs disques, le pékin moyen n'a que peu d'expérience et donc de bons réflexes. Au passage on mentionnera le plus d'outils utiles.

    Sommaire

    Nouveautés

    GNU ddrescue 1.20

    • nouvelle façon de compter les erreurs, suffisamment troublante pour qu'une version 1.21 soit sur les rails et donne plus d'informations ;
    • sauvetage de CD ce qui le rapproche des autres outils ;
    • logfile renommé mapfile partout ;
    • vérification (optionnelle) de cohérence des données lues.

    dd_rescue 1.99

    • greffon ddr_crypt : accélération matérielle pour CPU ARMv8 (même en 32bits) conduisant à une vitesse multipliée par 10 sur le (dé)chiffrement AES. La gestion de xattr a été étendue et une option est disponible pour gérer les fichiers Salted__ compatibles openSSL. Un bug d'initialisation CTR a été corrigé ;
    • dans le programme principal, révision des logiques de ré-essai en cas d'erreur d'écriture ou de fault injection (le cadriciel de fault injection est utilisé pour des tests) ;
    • encore plus de variantes pour les binaires Android.

    L'aventure

    La suite est une histoire rédigée « en temps réel »…

    Le pitch

    Dimanche, au saut du lit, Anne, webmistresse de Chez les enfants, me demande un CD-Rom pour réinstaller Windows Seven sur son portable qui ne démarre plus.
    — Pardon ? Je n'ai aucun CD Windows et on ne réinstalle pas pour ça…
    — Mais c'est Windows qui dit…

    Quelques questions plus tard, on dirait que le responsable de son informatique a très mal fait son boulot : Anne n'a aucun CD pour son ordinateur et la partition de restauration a été effacée. Et pire : les sauvegardes ne sont plus effectuées ! Et puis elle utilisait un compte administrateur. Et puis le disque dur a quelques années de trop. Et puis ce portable c'est l'ordinateur principal, celui qui contient tout, y compris les licences des logiciels. Etc.

    Ah oui ! le « responsable » informatique grommelle que c'est sa faute à elle, que faut pas faire mu-muse avec Windows. Etc.

    pirate

    Là, c'est la panne, Windows réclame un CD pour restaurer le démarrage. Je suis à 900 km de chez moi, en plein déménagement, et je vais devoir l'aider avec les moyens du bord : une clé USB de 7 gigas et mon vieux portable.

    Les CD de dépannage

    Comme il est exclu de récupérer un CD Windows pirate^Wcontrefait, je commence par fouiner dans les outils classiques pour Windows : Ultimate Boot CD (UBCD) et sa variante UBCD4Win. UBCD intègre une centaine d'utilitaires gratuits pour dépanner et diagnostiquer les problèmes. UBCD4Win est dérivé de BartPE et propose d'autres outils spécifiques à Windows.

    Las ! Windows c'est de l'histoire ancienne pour moi, et je ne sais trop quoi faire avec ces outils. En fait l'urgence et le stress me déconcentrent.

    Quand même, j'ai assez de présence d'esprit pour mettre à jour System Rescue CD, un des indispensables dans la « trousse de secours », qui contient plein d'utilitaires systèmes et matériels sous Linux ou sous DOS.

    Puis en lisant plein d'infos pour récupérer Windows je découvre qu'on peut légalement télécharger Windows Seven et que la console de récupération intégrée est nettement mieux foutue qu'autrefois. Bon d'accord. Faisons au plus simple après tout.

    Une clé USB bien outillée

    Ah zut ! C'est une image DVD. Mon portable ne grave que les CD. Je ris, mais je ris jaune. Il va falloir démarrer avec la clé usb — Windows va-t-il aimer ça ?

    C'est assez simple en fait : en gros, il suffit de monter l'image ISO en loop et d'en recopier le contenu sur la clef correctement formatée. L'opération est bien décrite sur le site de Plop. Plop est sérieux : il a développé un gestionnaire de démarrage sophistiqué, un outil pour restaurer les images disques de Partimage, un programme de récupération pour le système de fichiers HFS+ (utilisé par MacOSX), et même, à lui tout seul, une distribution Linux peu gourmande en ressources qu'il maintient depuis 2003. Plop c'est un genre de Patrick Volkerding.

    Tant qu'à surfer, je refais un tour vers d'autres outils : nLite (pas libre) pour alléger un CD Windows et le site du regretté Jean-Claude Bellamy pour me documenter sur la structure d'un secteur de boot de partition NTFS. Je farfouille même un peu chez Reactos pour y trouver docs et outils.

    Enfin, je reviens à ma clef. J'ai un port USB 1.1. Recopier les fichiers de l'ISO un par un va donc être très long. Copier directement l'ISO, c'est beaucoup plus rapide. Et puis, je vais sûrement avoir besoin d'autres outils, donc autant mettre un max d'ISO sur la clé.
    Oui mais.
    Vous avez déjà essayé de faire rapidement une clef USB multi-systèmes Linux-Windows ?

    Je me souviens de certains outils. Il y a MultiSystem dont on parle souvent ici, qui est bien maintenu et qui est disponible sous Debian. Mais il a plein de dépendances que je n'ai pas sur ma poussive bécane. Et puis ça m'embête, je cherche plus simple. Rien de neuf sur Wikipedia.

    Quand, au détour d'un blog…

    Easy2Boot : la merveille

    Génial. Pile ce que je veux. Easy2boot ne nécessite pas de manipulation particulière pour l’intégration des ISO : il suffit de les copier sur la clé. Rien n’est installé sur le PC servant à générer la clé USB. Il y a des utilitaires pour préparer la clef depuis Linux et Windows et un mode d'emploi pour le faire depuis… autre chose. C'est simple et tout petit. Adopté.

    Easy2boot c'est une collection bien foutue de scripts pour Grub4dos.

    « Ça » gère l'UEFI et le MBR. Les partitions FAT 32, NTFS et Ext4. Les images de CD, les images de disques, les images VHD et WIM (pour amorcer Windows). Les images discontinues. Les installations Linux live et persistantes. Easy2boot gère les mises à jour d'easy2boot. Et tellement d'autres choses : il y a des menus tout prêts pour accueillir vos utilitaires, vos CD de secours préférés (cités plus haut d'ailleurs), des antivirus… La doc, le forum et le blog sont bien fournis et actifs.

    Bref, je vous la fait courte et je copie mon image DVD de Windows dans la clé. On relance le portable, qui commence à démarrer puis un écran Windows dit que bla bla bla… le démarrage… et que le CD d'installation va tout réparer. Bon bon bon.

    La réparation auto de Windows (bousillante)

    Donc au démarrage du CD on peut choisir de lancer la console de récupération WinRE. On arrive sur ce menu rempli de pièges :

    Menu de la console WinRE

    Aaaah ! Ça sent la fin des ennuis, on se frotte les mains et chtok ! On clique sur la réparation auto du démarrage.

    La réparation automatique par WinRE

    Mais mais mais ça dit rien du tout. On ne sait pas ce qui se passe, on n'a pas la main et après quelques instants la touche Annuler n'a aucun effet.

    Ça tourne. Et comme ça tourne pendant des heures je vais admirer les poissons hérissons dans l'aquarium d'Anne. Je frôle des pingouins jouet en bois (elle vend des jouets). Celle-là elle va bientôt migrer vers le libre. Elle est prédestinée.

    Diodon openbsd

    J'en profite pour lui bricoler une bécane avec une tour mise au rebut. Elle passe de Windows Seven à Debian Jessie et Gnome 3. Oh ! Comme c'est ergonomique et simple ! Et comme c'est rapide ! Mais pourquoi l'avait-on jetée cette tour ? Tu dis ? Tu utilises une autre interface graphique ? Ben chacun ses goûts, hein. Ça me change, c'est reposant.

    L'intermède découverte passée, chacun reprend son boulot : elle regarde si elle pourra gérer ses ventes de jouets lundi, tandis que je m'inquiète de Windows : ça dure vraiment trop longtemps. Impossible de savoir ce qui se passe. Impossible d'arrêter le processus (refus tout net du système, qui n'est pas planté).

    La journée a passé. Autant débrancher.

    Je relance sur System Rescue CD (merci easy2boot). Petite analyse du matériel : FSArchiver en mode info (fsarchiver probe simple), puis GNU Parted qui ramouille étrangement. Tilt. C'est un problème de crash disque, pas une erreur système Windows.

    Et en effet : le syslog se remplit d'erreurs d'entrées-sorties. Tu parles ! Manipuler un système de fichiers sur un disque crashé, c'est destructeur. La réparation automatique de Windows a augmenté les dégâts.

    Pour m'en assurer je pourrai lancer le puissant MHDD un outil bas niveau d'accès direct au disque qui donne beaucoup plus d'infos que SMART ; c'est un programme DOS1. Mais pas sûr que faire tourner le disque dur soit très malin.

    À l'heure où j'écris j'en sais évidemment beaucoup plus. J'aurais pu, suivant le tutoriel de Marie sur l'invite de commande WinRE lancer plutôt un checkdisk sous Windows, mais ça aurait fait autant de dégât car chkdsk ne minimise pas les déplacements de la tête de lecture sur le disque.

    Si j'avais su ! Mais sans journal système, c'est impossible. Ainsi, à mon sens la console de réparation Windows a deux défauts :

    1. pas de journal système pour voir les erreurs d'entrées-sorties ou ce qui se passe pendant que ça tente de réparer tout seul ;
    2. ses outils changent trop souvent ; d'une version à l'autre il faut tout réapprendre et retrouver la documentation, qui n'est pas accessible depuis le CD. Taper help ne sert à rien.

    C'est toujours dimanche, il ne fait pas encore nuit, c'est maintenant que ça commence vraiment.

    La recherche d'outils inadaptés

    G4U MIDS Partimage Partclone FSArchiver
     

    Évidemment je ne pensais pas que c'était inadapté.
    Le problème avec les sauvetages d'urgence c'est qu'on n'en réalise pas souvent. Et ça a beau ne pas être nos données, la pression est là qui rend le cerveau mou et la mémoire vide… Tout de même ! Je ne perds pas complètement la tête : il faut cloner le disque avant tout. Il s'agit de sauver ce qui peut l'être.

    Mais impossible de retrouver le nom du bon outil. Alors je pars sur les outils classiques de clonage, plus utiles avant un crash, pour préparer des images disques. Je commence en restant le plus proche possible du matériel, puis comme ça ne marche pas je descends peu à peu au niveau du système de fichiers :

    • G4U (Ghost for Unix), un excellent et puissant outil de clonage séquentiel, comme NortonGhost. Développé par Hubert Feyrer depuis 15 ans. Ultra léger, ultra petit, basé sur NetBSD. Ce n'est pas seulement un ensemble de scripts bash utilisant dd ! Après avoir démarré sur G4U (disquettes, image iso ou PXE), on peut cloner (ou restaurer) de façon variée : vers un fichier, vers une partition, vers un disque et vers un ftp. Comme il travaille au niveau matériel, G4U n'est limité par aucun OS ou système de fichiers. G4U ne monte pas le disque. Il peut cloner et restaurer le MBR et la table des partitions, effacer le contenu d'un disque (wipe disk). La dernière version, encore en bêta, contient une détection d'erreur qui permet de cloner les disques avec des secteurs défectueux.
    • MIDS (Machine Image Delivery System) est une interface en ncurses pour la fonction de restauration de G4U
    • Partimage, l'outil classique de clonage pour des sauvegardes, par l'auteur de SystemRescueCd. Partimage ne monte pas le disque, mais comme il ne prend que les données présentes dans les partitions, il ne lit pas tous les systèmes de fichiers. Tout de même, il ne défragmente pas, c'est cool ! Eh oui, comme les fragments de fichier restent à leur place, les mouvements de la tête de lecture sont minimisés.
    • Partclone, semblable à Partimage, il sauve et restaure les blocs utilisés d'une partition. Il lit plus de systèmes de fichiers.
    • FSArchiver, toujours par l'auteur de SystemRescueCd, est encore plus près du système de fichier. Il en sauve le contenu, ce qui permet de restaurer sur une partition de taille différente.
    • fsarchiver_dialog et qt4-fsarchiver en sont des interfaces graphiques, l'une en ncurses, l'autre en Qt.
    • J'avoue ne pas savoir si ntfsclone est utilisé par FSArchiver, ni pourquoi ce ne serait pas le cas. En tout cas son nom est clair. Par les auteurs de Ntfs3g.

    Rien ne va. C'est mal barré. Le disque est vraiment abîmé. Je ne pense plus à rien, je suis fatigué, hébété, la tête vide…

    labyrinthe fromage
    Et tout à coup ça me revient, comme si toute pensée disparue, tout doucement pouvait émerger la solution. Comment ai-je pu l'oublier ? Je le connais bien, j'en ai parlé ici-même, il existe en trois versions, l'une d'elle est très supérieure, et pourtant les trois sont utilisées, par manque d'info, par confusion, par méconnaissance du fonctionnement d'un disque. C'est un super outil, vraiment, et comme le dit Kurt Garloff :

    « It does work. I unfortunately did not just create this program for fun… »

    Soyons clair : les outils ci-dessus, ne sont pas fait pour du sauvetage. C'était une erreur de les utiliser. D'ailleurs je suis en colère contre moi, je m'adresse des insultes nouvelles, si j'étais dans une BD la page se couvrirait de graffitis. Les dégâts sont encore plus grands maintenant.

    Le sauvetage

    GNU ddrescue

    Je m'en veux de ne pas y avoir pensé avant : perte de temps et bousillages. GNU ddrescue a été écrit pour pallier les « défauts » du dd_rescue originel de Kurt Garloff. Son algorithme permet d'optimiser la lecture en infligeant le moins de coups possible au disque. Un peu comme la voix rassurante du camion de pompiers qui dirait : « Tiens bon ! Tiens bon ! » tandis que la sirène de l'ambulance hurlerait : « T'es foutu ! T'es foutu ! »

    Aperçu de l'algo : récupère d'abord les zones en bon état pour prévenir les erreurs de lecture en sautant largement les zones mortes ; produit une première copie approximative et une carte du disque ; puis à l'aide de la carte, délimite plus précisément les zones mortes, récupère ce qui est lisible, note les clusters morts et complète la carte ; enfin plusieurs passes de lecture en insistant, en raclant cluster après cluster, et en complétant encore la carte. Ça prend du temps. Au bout du compte on a une nouvelle copie.

    À part le dd_rescue de Kurt Garloff, tous les logiciels de sauvetages cités ci-après partagent peu ou prou le même algorithme.

    Le bricolage de disque

    compression

    Je redémarre l'ordi avec SystemRescueCd, ddrescue est livré avec.

    Naturellement les ennuis n'arrivent jamais seuls2.

    Mon disque externe IDE de 80 gigas ça va pas le faire pour accueillir la restauration. Allez j'ai connu les temps héroïques, je bricole ! Prenons l'un des disques raid de la tour à peine montée, 320 gigas en SATA et hop ! Dans le disque externe ; prenons un connecteur SATA, prenons une alimentation SATA et branch… oups ! Pas de câble d'alimentation SATA !

    « Viens voir ici petite tour… Oh ! Comme tu as les câbles longs ! Et si tu branchais une de tes alimentations SATA sur le disque externe ? On ferait un pontage tu vois, ça sauverais le malade… »

    Les câbles s'avèrent un peu courts, mais faudra faire avec.

    Avant de copier la partition malade vers une autre, il faut s'assurer de la concordance géométrique des deux partitions. À coup de fdisk on vérifie et on paramètre la taille de secteur (habituellement 512 octets), le nombre de secteurs de chaque partition — et, bien entendu, le type de partition.

    Quant au sauvetage, rien de difficile, le manuel est bien fait et contient quelques exemples courants.

    Dans mon cas :

    • ddrescue -n -f /dev/hda2 /dev/hdb2 mapfile
    • ddrescue -r3 -d -f /dev/hda2 /dev/hdb2 mapfile

    Autrement dit :

    • la première commande récupère les parties lisibles en contournant de loin les zones mortes et en dessinant une carte sommaire, on évite de racler le disque et on force ddrescue à recopier vers une partition ;
    • ensuite, on repasse trois fois sur les zones mortes en accédant directement au disque, la carte gagne en précision au fur et à mesure.

    Vous vous souvenez que j'avais retrouvé mes esprits ? Je relis le manuel. Je regarde le disque externe relié à deux ordinateurs. Tout ça va tourner plusieurs jours. On peut faire plus simple.

    Copie réseau

    Finalement, je remets le disque dans la tour, je crée un partage NFS, le monte sur le malade et je copie mon disque vers un fichier :

    • ddrescue -n /dev/hda1 /mnt/fichier_copie mapfile
    • ddrescue -r3 -d /dev/hda1 /mnt/fichier_copie mapfile

    • ddrescue copie la partition hda1 vers un fichier en sautant la phase de raclage et en produisant une carte ;

    • puis ddrescue est relancé pour 3 passes de copie en shuntant le cache du noyau, la carte est utilisée et mise à jour.

    Le lendemain matin, à une heure assez tardive tout de même, la première copie est terminée. On regarde un peu la carte, on pousse un grand soupir et on relance ddrescue pour 3 ou 4 jours de moulinage.

    Le fichier carte de ddrescue à travers un visualiseur

    Au début, vous verrez beaucoup de zones défectueuses (en rouge) :

    ddrescueview début

    Après le premier passage, vous zoomerez dans la bêêêêêête et ce sera pire et vous aurez trèèès trèèès peur :

    Fred Fort dans La bête
    (« La Bête » par la compagnie Annibal et ses éléphants – photo: Vincent Muteau/Annibal)

    Bon d'accord :

    ddrescueview deuxième passe

    Enfin, vous verserez des larmes de joies :
    ddrescueview
    (À gauche, le disque entier avec des zones mortes. À droite, j'ai zoomé sur l'un des traits rouges : c'est presque tout bon ! Seuls quelques secteurs n'ont pu être lus.)

    Lire la copie

    Alors ? Tu viens de passer 4 jours à tourner en rond, tu as enfin une copie de ton disque foutu et tu voudrais la lire ? Reprends d'abord un café ! La lire, c'est prendre un risque énorme :

    • la copie contient encore des erreurs, la carte en atteste, il faudra peut-être relancer ddrescue pour l'améliorer ;
    • d'autre part, on aura sûrement une vérification du système de fichier à lancer sur la copie, ce qui va la transformer — sans parler d'opérations plus destructrices et d'erreurs de manip en tout genre —, et alors ddrescue ne pourra plus l'améliorer.

    Donc on va travailler sur un double. On a l'habitude, on est informaticien !
    Je fais un double.
    Je monte l'image en loop :
    mnt -o loop fichier_copie_de_copie /mnt.
    Les fichiers ont l'air tous là, c'est cool… Ah non, il y a encore plein d'erreurs… Va falloir faire un checkdisk. Mais… La commande chkdsk n'existe pas sous Linux.

    Pourtant on a des utilitaires pour ntfs :

    • ntfsfix, qui est un faux ami : sauf quelques erreurs communes, il ne répare rien, il marque plutôt le système de fichier à vérifier lors du démarrage de Windows. Comme le dit le man : « ntfsfix is NOT a Linux version of chkdsk ».
    • Et des outils pour récupérer le contenu d'un système de fichier corrompu :

    Ce ne sont pas des chkdsk : on les utilise généralement après un chkdsk qui nous dit qu'il y a plein de problèmes. Pour ma copie récupérée, il faut le chkdsk de Windows Seven3 !

    La solution est très simple : lancer l'installation de Windows Seven en machine virtuelle, le disque cible sera la copie4 ; on invoque la console de récupération et on lance le shell Windows (l'invite de commande, le cmd).

    Allez, on retourne au tutoriel de Marie sur l'invite de commande WinRE :

    • ne pas s'affoler si la console ne voit pas de disque ! Pas de disque dans WinRE
    • on lance Diskpart, on attend un peu beaucoup et au prompt un coup de Help nous montre que c'est un outil assez complet ;
    • on s'informe sur le disque, la partition, mais pas moyen de la sélectionner (parce que c'est une image de partition) ! C'est un petit bug qui se contourne aisément : Select disk 0 puis Detail Disk montre un seul disque nommé C. Exit Diskpart. diskpart detail disk
    • yapuka Chkdsk C: /f /r (n'oubliez pas le deux-points !). chkdsk vérifie les indexchkdsk vérifie USNrésultat chkdsk Et quelques heures plus tard, à minuit, vous expliquez à vos voisins ce que signifiait votre danse du scalp et les chants de loup sur le balcon. Vu la fièvre dans vos yeux, ils n'écoutent pas « vos délires d'alcoolique drogué ».
    • on copie enfin les fichiers rescapés5.

    Et c'est tout.


    Note pour les trop pressés

    horloge

    • Prenez votre temps! Lisez les documentations attentivement avant de tenter quoi que ce soit. On récupère plus de choses avec quelques précautions. Par exemple laissez le disque refroidir de temps en temps, sur un système de fichiers Unix pensez à regarder dans lost+found, faites une copie, travaillez lentement, …
    • Méfiez vous des idioties glanées sur les forums — j'ai vu souvent « fais une passe de ddrescue et lance photorec. » Rien de pire que d'échouer par méconnaissance, alors que les forums de Photorec, SystemRescueCD et HDDGuru sont fréquentés par des personnes de bon conseils et des experts. De même que, bien sûr, les listes de discussion des logiciels cités.

    Les autres outils

    Toujours présents dans les dépôts des distributions, ces outils ne sont ni obsolètes, ni dépassés, comme on peut le lire ça et là. Leur fonctionnement est très semblable.

    dd_rescue de Kurt Garloff

    « Dépassé ? » L'idée originale. Toujours très activement développé, sous Linux et Android. dd_rescue a pas mal de fonctions avancées. Kalysto a écrit dd_rhelp qui le complète en « corrigeant » son algorithme. Toujours utile dans certains cas, d'après Kurt Garloff, et à condition de savoir ce que vous faites (et de ne pas être trop pressé) :

    GNU ddrescue fournit un moyen plus facile pour de nombreux scénarios de récupération de données que la combinaison de dd_rhelp et dd_rescue. D'autre part dd_rescue est toujours intéressant car il a un certain nombre de caractéristiques spéciales, comme l'accès direct aux entrées-sorties, les copies fragmentées, les copies en tranches (slice), la pré-allocation …
    Il convient de noter aussi les fonctions de protection des données qui permettent l'effacement sécurisé des fichiers et des périphériques de stockage en les écrasant avec les données d'un générateur de nombres pseudo aléatoire en espace utilisateur.
    En outre, des plugin vous permettent d'analyser ou transformer les données : hachage sécurisé, (dé)compression LZO et chiffrement. Parmi les fonctions spéciales de dd_rescue, ils gèrent la direction de copie inversée ou les fichiers fragmentés (avec des trous), et vous pouvez stocker les propriétés supplémentaires (une valeur de hachage ou un sel) dans les attributs étendus du fichier.

    myrescue

    « Dépassé ? » Il n'est plus développé. N'empêche, myrescue répond aux critiques sur l'algorithme de Kurt Garloff. Comme le programme d'Antonio Diaz Diaz, myrescue récupère d'abord les données lisibles avant de s'attaquer au reste (il n'y a pas 36 façon de faire).

    Comment ça marche ?

    Le programme essaie de copier le périphérique par blocs vers un fichier et conserve une table (« block bitmap ») notant si un bloc a été copié avec succès, pas encore géré ou a eu des erreurs. Cette table peut être utilisée dans les exécutions successives pour se concentrer sur les blocs pas encore sauvés.
    Le programme dispose d'un mode spécial, de saut, pour traiter les erreurs de lecture. Habituellement, les défauts de surface des disques dur couvrent plus qu'un bloc et la lecture continue dans les zones ç défaut peut endommager la surface, les têtes et (par recalibrage permanent) les mécanismes d'entraînement. Si cela se produit, les chances de sauver les données intactes restantes chutent de façon spectaculaire. Ainsi, dans le mode de saut, myrescue essaie de sortir des zones endommagées rapidement en augmentant le pas de manière exponentielle. Les blocs sautés sont marqués comme non gérés dans la block bitmap et peuvent être relus ultérieurement.
    Enfin, le programme dispose d'une option pour multiplier les essais de lecture d'un bloc avant de le marquer endommagé.
    (explications de l'auteur)

    Safecopy, un logiciel équivalent

    L'auteur de Safecopy a découvert dd_rescue après avoir fini son travail. Bien qu'il semble qu'on ait encore une fois réinventé la roue, les techniques de récupération ne sont heureusement pas brevetées.

    L'algorithme est similaire à celui de GNU ddrescue, cependant l'accent est mis sur des choses différentes, selon le développeur (propos tenus en 2009) :

    1. ddrescue fait l'équivalent du « sauvetage en plusieurs étapes » de SafeCopy mais automatiquement en un seul passage, partitionnant le fichier source semi-intelligemment en fonction des erreurs d'entrée/sortie trouvées ; mais à mon humble avis il donne à l'utilisateur moins de retour et de contrôle sur le processus de copie et les erreurs se produisant.
    2. ddrescue est plus optimisé pour la vitesse globale de copie, en particulier sur les données correctes. Qu'il soit effectivement plus rapide que SafeCopy sur des données réelles dépend du matériel, de la distribution des erreurs et du paramétrage. Vous pouvez généralement trouver des paramètres pour rendre SafeCopy plus rapide que ddrescue, mais ddrescue essaie d'être optimal tout seul sans nécessité de peaufiner les paramètres. En général, faire SafeCopy --stage1 puis --stage2 est à peu près comparable en vitesse. Faire un --stage3 rend SafeCopy considérablement plus lent mais sauve potentiellement plus de données.
    3. ddrescue à ma connaissance n'a pas de capacités entrées/sorties bas niveau en propre, mais gère les périphériques /dev/raw pour contourner la mise en cache au niveau du noyau (le montage du périphérique raw doit être fait manuellement néanmoins. Vous devriez être capable de le faire avec SafeCopy aussi, mais honnêtement, je n'ai pas encore essayé. S'il vous plaît donnez-moi un rapport de bug si il y a des problèmes :)
    4. ddrescue produit des fichiers journaux incompatibles avec fsck, mkfs ou les listes badblock de SafeCopy. Néanmoins ça devrait être contournable avec un simple script de transformation perl ou bash.

    Relire les CD endommagés

    récupérer un CD avec SafeCopy

    SafeCopy bénéficie de gros avantages quant il s'agit de CD endommagés, grâce à ses entrées/sorties bas niveau ; il peut être mieux adapté à un utilisateur expérimenté, voulant un contrôle fin, tandis que ddrescue peut être mieux adapté à des utilisateurs ne sachant pas ce qu'ils font mais voulant récupérer un max de données avec un préjudice minimum en matériel et en temps.

    En cherchant d'autres solutions, l'auteur de SafeCopy a aussi noté :

    • recoverdm - un outil qui fonctionne à un niveau matériel encore un peu plus bas et pourrait donc être un peu plus efficace ;
    • cdrdao - avec d'autres outils comme bin2iso, probablement la meilleure alternative pour travailler sur des CD.

    Sans oublier ddrescue !

    Outils pour GNU ddrescue

    ddrescue-gui ddrescueview ddrutility partclone Lzip
     
    • ddrescuelog : livré avec GNU ddrescue. Pour examiner la carte et la convertir au format d'autres logiciels (par exemple e2fsck).
    • DDRescue-GUI : interface Python / QT4 pour simplifier l'usage. Seulement les options de base. Léger, multi système.
    • ddrescueview : interface en Pascal / Delphi pour visualiser le journal de récupération — en temps réel. Très utile pour comprendre ce qui se passe. Très léger. Doc bien foutue
    • ddrutility : plusieurs utilitaires pour repérer les domaines d'actions de ddrescue et les fichiers liés aux zones défectueuses. Doc bien foutue
    • Partclone : clonage de disque mais peut aussi générer un domaine d'action pour ddrescue (liste des blocs à récupérer). Semblable à Partimage, il est développé par l'équipe derrière Clonezilla.
    • Lzip et Lziprecover pour compresser l'image. L'auteur de ddrescue aime bien promouvoir ce zippeur semblable à 7zip (compression LZMA), qui contient des outils pour récupérer une archive corrompue.

    Prévenir les pannes

    • Smartmontools au minimum ;
    • Badblocks, quelque peu dépassé selon l'auteur de Diskscan ;
    • DiskScan analyse l'état du disque ;
    • et… les sauvegardes.

    S'entraîner

    On peut, si on veut, s'entraîner avec des vieux disques durs rachetés dans un vide grenier, mais ce sera plus rapide avec une simulation de disque en panne. Il y a plusieurs façons d'en simuler. Autant commencer avec un outil tout prêt : SafeCopy en fournit un, et dd_rescue un cadriciel de test. L'article Statistical analysis of damaged data storage media read timings s'intéresse au bagage théorique et aux méthodes de statistiques sur des médias simulés. Utile pour comprendre comment accélérer les outils de récupération de données.

     

    Vous avez de quoi bien vous occuper, pendant que j'emmène la famille en promenade.
    pingouins


    Merci à Baud, Nils Ratusznik et Benoît Sibaud pour leur aide et leur relecture attentive.

    Merci à Anne Chenevat et Chez les enfants pour les photos de jouets et à la compagnie de théâtre de rue Annibal et ses éléphants pour « La Bête ».


    1. sous Linux on a HDDSuperTool au cas (rare) où MHDD ne détecterait pas votre disque, mais cet outil n'est pas à mettre entre toutes les mains ! Notez que c'est un freeware/graticiel non libre, par l'auteur de ddrutility. 

    2. http://www.e-scio.net/cqfd/lem.php3 

    3. au cas où tu l'aurais oublié mon canard, NTFS évolue ; même si tout pourrait bien se passer, il vaut mieux utiliser le chkdsk de la version de Windows ayant traité le système de fichiers. 

    4. L'installation de Windows Seven demande 1 Go de RAM, par commodité j'ajoute un menu de démarrage et un clavier français : $ qemu-system-x86_64 -enable-kvm -boot menu=on -k fr -m 1024 -cdrom /home/anne/Téléchargements/fr_windows_7_home_premium_with_sp1_x64_dvd_u_676521.iso -hda fichier_copie_de_copie 

    5. La plupart des fichiers sur le disque ne sont pas des données essentielles, mais des fichiers système ou des fichiers liés à vos programmes (bibliothèques, journaux, fichiers temporaires, etc.). Ici sur 281,51 gigas de données, seuls 7,90 mégas sont illisibles. Il faudrait jouer de malchance pour ne pas avoir récupéré tous les documents. 

    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

  • pydic, une suite d'outil python pour réaliser de la corrélation d'image locale (Journaux LinuxFR)

    Cher journal,
    Je t'écris aujourd'hui pour t'annoncer la venue de pydic. pydic, disponible sous licence GPLv3, est une suite d'outil Python permettant de faire de la corrélation d'image locale. Cette suite d'outil, disponible sous la forme d'un unique module pydic.py, s'adresse plus particulièrement aux mécaniciens expérimentateurs qui souhaitent cartographier les déformations au cours d'un essai mécanique comme un essai de flexion, un essai de traction ou que sais-je encore.

    Bien qu'en anglais, l'image suivante résume bien ce que fait pydic: à partir d'une suite d'image prise au cours d'un essai mécanique, pydic permet de retrouver le champ de déplacement de la zone d'intérêt (définit par l'utilisateur) puis de calculer le champ de déformation associé à ces déplacements. Attention, à ce jour pydic n'est disponible que en anglais, une traduction française viendra peut-être ultérieurement.
    Titre de l'image

    L'un des problèmes récurrents avec la corrélation d'image locale est le "bruit" de corrélation qui affecte très fortement le calcul du champ de déformation. Pour minimiser ce problème, pydic encapsule plusieurs algorithmes de lissage qui permettent de réduire efficacement ce bruit de mesure.

    L'animation suivante montre le résultat obtenu durant un essai de flexion 4 points sur le champ de déplacement. Pour que ces déplacements soient bien visibles, ils sont amplifiés d'un facteur x25 sur l'animation suivante.
    Titre de l'image

    Les résultats des calculs effectués par pydic sont disponibles sous formes de suites d'image (qui ont permis de réaliser l'animation ci-dessus) et sous la forme de fichiers csv qui favorisent l'interopérabilité entre divers logiciels de post-traitement.

    Pour prendre en main facilement pydic, celui-ci est livré avec deux exemples : un essai de traction et un essai de flexion. En plus de cartographier les déformations, ces exemples montrent comment utiliser pydic pour calculer les constantes d'élasticités des matériaux comme le module de Young et le coefficient de Poisson qui sont des constantes d'un tout premier intérêt pour le mécanicien des matériaux.

    Au niveau des dépendances, pydic dépend de matplotlib, numpy, scipy et de opencv2. Vous trouverez certainement les 3 premiers dans les packages de votre GNU/Linux préféré. Par contre, il vous faudra très certainement compiler à la main opencv2 pour pouvoir utiliser pydic.

    Bonne corrélation ! omc.

    Lire les commentaires