Syndiquer le contenu
Mis à jour : il y a 3 heures 45 sec

Elasticsearch 2.0

30 octobre, 2015 - 12:35

Elasticsearch est un moteur de recherche distribué, RESTful, reposant sur la bibliothèque Apache Lucene et sous licence Apache 2.

Si vous ne le connaissez pas encore, vous pouvez vous reporter à la précédente dépêche, Sortie d'Elasticsearch en version 1.0 où un rapide test est disponible.

Vous pouvez aussi voir tous les contenus taggés avec elasticsearch.

Sommaire Que s'est-il passé depuis la 1.0 ? Version

Depuis le 12 février 2014, 37 versions sont sorties, de la 1.0.0 à la 1.7.3 .

Ci-dessous les versions avec leurs principales fonctionnalités et un lien vers leurs annonces:

Sécurité

Avec les scripts dynamiques et sans authentification par défaut, une faille dans la gestion des scripts a pu être exploitée au printemps 2014 (et ce malgré un article Securing Your Elasticsearch Cluster de décembre 2013).

Un article décrivant la faille et son exploitation : Insecure default in Elasticsearch enables remote code execution

À partir de la version 1.2, les configurations par défaut dans ce domaine ont été changées et la sécurité est devenue prioritaire dans les développements.

L'article qui a suivit cette histoire : Scripting and Security

LinuxFr.org a été touché par cette faille, voir la dépêche suivante : Quoi de neuf côté LinuxFr.org - Faille ElasticSearch sur juin/juillet 2014

Résilience

Le deuxième important point de travail de cette série 1.x est la résilience. Après avoir été bousculé par Aphyr sur la version 1.1, Elasticsearch a notifié dans une page de documentation tous les problèmes de résilience (Elasticsearch Resiliency Status)

Tous les articles d'Aphyr sur Elasticsearch.

Les nouveautés de la 2.0

Après deux bêta et une rc, Elasticsearch 2.0 est sorti le 28 octobre 2015:

Ci-dessous, un résumé des articles du blog d'Elastic sur les nouveautés de cette version majeure.

Refactoring des mapping

Dans un même index, il est maintenant interdit pour deux types différents d'avoir deux champs de même nom mais de type différent. Aujourd'hui, ce genre de configuration peut donner des résultats faux, des exceptions et même des corruptions d'index.

L'accès à un champ par son nom court était ambigu, il est maintenant nécessaire d'utiliser le chemin complet.

La création de mapping dynamique est maintenant synchrone, c'est-à-dire que le nouveau mapping doit être accepté par un master. Un même champ pouvait être ajouté à deux shards en même temps mais avec deux types différents, ce qui conduisait à une corruption d'index.

Diverses simplifications dans la configuration des analyzers et des champs meta.

Tous les détails se trouvent dans l'article suivant The Great Mapping Refactoring.

Meilleure compression des index

Lucene 5.0 apporte un nouveau codec améliorant la compression des index.

Il est maintenant possible de choisir une meilleure compression avec un codec basé sur DEFLATE pour par exemple un index froid ou de conserver le codec basé sur LZ4 pour les index chauds.

Tous les détails sont dans l'article suivant : Store compression in Lucene and Elasticsearch

La notion de codecs pour Lucene a déjà été évoquée sur le blog d'Elastic : What is an Apache Lucene Codec?

Meilleure exécution des requêtes

Des modifications dans Lucene 5.0, 5.1 et 5.2 permettent aujourd'hui d'effacer pour l'utilisateur la distinction entre query et filter et c'est Elasticsearch qui va faire les choix de mise en cache ou non des résultats intermédiaires.

À l'origine, les filtres diffèrent des requêtes par le fait qu'ils ne font pas de scoring, mais peuvent être mis en cache. Dans Elasticsearch 2.0 c'est maintenant le même objet interne.

L'article suivant présente tout les détails : Better query execution coming to Elasticsearch 2.0

Enchainement d'agrégation

Les Pipeline Aggregations sont une nouveauté qui permet de faire des calculs sur des résultats d'agrégations précédentes.

Il y a une petite dizaine de nouvelles agrégations de ce type que je vous laisse découvrir en détails dans les articles suivants :

Delete by query

L'API Delete by Query est désormais fourni sous forme de greffon.

La précédente implémentation, en effectuant un refresh après chaque suppression pouvait provoquer de nombreuses créations de segments et déclencher de nombreux merge. De plus elle pouvait provoquer des incohérences entre répliques.

Le plugin se base lui sur l'API scan/scroll. Tous les détails dans l'article The Delete by Query API Is now a plugin

Réseau

Il était très facile, certainement trop, pour des instances de développement d'Elasticsearch de former un cluster. À partir de cette version 2.0 seules les instances locales (localhost) pourront former un cluster, avec la configuration par défaut,

Autre changement côté réseau, le multicast, qui était assez bancal dû entre autre à des différences de comportement entre Linux et OS X, est désormais fourni en tant que greffon.

Le détail dans l'article suivant : Elasticsearch unplugged - Networking changes in 2.0

Mise à jour

Avant de mettre à jour, pensez à lire la page Breaking changes in 2.0. Un plugin est mis à disposition pour vérifier qu'un cluster peut être mis à jour directement ou s'il présente des incompatibilités : Elasticsearch Migration Plugin.

À vos claviers !

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de la version 3.1 de Chouette

30 octobre, 2015 - 10:00

La version 3.1 de Chouette vient tout juste de sortir ! Rappelons que Chouette est un logiciel libre développé à l’initiative du ministère français chargé des transports. Son but est de faciliter et de promouvoir l’échange de données d’offre (théorique) de transports collectifs (TC).

La version 3.1 apporte de nouvelles fonctionnalités :

  • l'import de fichier GTFS s'accompagne maintenant d'un rapport de validation qui évalue le respect des spécifications GTFS ;
  • la fonction de validation Neptune est désormais conforme aux compléments de spécification de ce format ;
  • la présentation des rapports de validation a été revue afin de gagner en lisibilité.

Vous trouverez le code source de la partie IHM et du serveur Import/Export/Validation sur Github. La documentation des interfaces et de l'architecture est disponible sur le site officiel du projet.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de QGIS 2.12 "Lyon"

30 octobre, 2015 - 09:15

QGIS est une suite logicielle de traitement de l'information géographique. Elle permet de générer des cartes, d'analyser des données spatiales et de les publier, en ligne ou sur papier. Elle permet également de réaliser de nombreux traitements et algorithmes sur des données spatiales ou d'autres données liées. En d'autres termes, QGIS est un SIG ou Système d'Information Géographique, conçu pour recueillir, stocker, traiter, analyser, gérer et présenter tous les types de données spatiales et géographiques.

La version 2.12 nommée « Lyon » en hommage à la ville du même nom, est disponible depuis le 26 octobre 2015.

Dans la suite de la dépêche, un aperçu des nouveautés vous sera présenté plus en détails ainsi qu'une esquisse des développements à venir. Pour le public non averti, je vous invite à lire le début de la dépêche sur la sortie de QGIS 2.10 pour avoir un petit rappel sur les SIG et sur QGIS…

Sommaire Présentation

QGIS est un SIG convivial distribué sous licence publique générale GNU. C'est un projet officiel de la fondation Open Source Geospatial (OSGeo). Il est disponible sur les systèmes d'exploitation GNU/Linux, Mac OS X, Windows et Android et intègre de nombreux formats vecteur, raster, base de données et fonctionnalités.

QGIS est développé en C++ avec la bibliothèque Qt (en version 4 pour le moment). Son architecture lui permet également d'utiliser des extensions codées en Python (version 2) et la très grande majorité des classes du cadriciel de QGIS sont disponibles sous Python.

QGIS est une des applications majeures qui utilisent Qt. Actuellement, l'arborescence des sources (tout confondu) occupe près de 350 Mo. Les contributeurs recensés sur GitHub sont au nombre de 169.

Par ailleurs QGIS s'interface avec de nombreux autres logiciels, que ce soit des bases de données spatiales comme PostgreSQL/PostGIS ou Oracle Spatial, mais également avec un grand nombre de logiciels de SIG libres comme GRASS, SAGA ou encore Orfeo.

Même s'il reste un logiciel libre, QGIS assure en grande partie le financement de son développement via des sponsors divers qui vont d'entreprises ayant besoin de SIG comme des compagnies aériennes à des organisations gouvernementales (y compris le gouvernement français) en passant par des universités et également des particuliers.

Nouveautés par rapport à la dernière version Système d'authentification

Jusqu'à présent, QGIS avait une gestion trop simple de l'authentification. Il était possible de conserver les mots de passe de connexion aux serveurs (SGBDRS comme PostGIS ou Oracle Spatial, ou aux serveurs web WMS/WFS) dans les paramètres de connexion, stockés en clair dans le fichier de projet ou dans la configuration globale de QGIS. Effectivement, cette situation qui dure depuis des années était loin d'être satisfaisante pour les utilisateurs travaillant avec des services imposant une authentification.

En effet, dans ces environnements, les utilisateurs doivent souvent se connecter à des bases de données ou des services web avec des comptes différents. Dans ce genre de situation, la tentation est de cocher la case "Enregistrer le mot de passe" pour éviter de s'authentifier toutes les 2 minutes. Cette pratique pose des vrais problèmes de sécurité et la seule solution était de transmettre la gestion des mots de passe à d'autres logiciels (comme Keepass par exemple).

Avec QGIS 2.12, le problème est en partie réglé avec une première intégration d'un système d'authentification qui permet de garantir un minimum de sécurité au sein de QGIS. Pour faire simple, ce système est proche en termes de fonctionnement de celui de Firefox/Iceweasel qui repose sur un mot de passe principal qui protège les autres.

En termes d'implémentation, une base de données locale d'authentification est utilisée (au format SQLite) et toute la gestion du chiffrement repose sur la bibliothèque Qt Cryptographic Architecture pour la partie bas niveau. Des classes spécifiques pour QGIS ont été également implémentées pour faciliter la gestion de l'authentification. Ces dernières sont également disponibles sous Python et permettent aux extensions de QGIS d'en bénéficier.

Pour faciliter le développement, le système d'authentification de QGIS est développé de manière modulaire. La base de l'architecture est déployée dans la version 2.12 et elle est accompagnée de quatres modules d'authentification. Ce développement modulaire permettra d'ajouter de nouvelles méthodes d'authentification, en fonction des besoins et des évolutions. Pour l'instant, les deux modules sont les suivants:

  • Le module "basic" gère l'authentification de base sous forme identifiant/mot de passe/domaine. Ce module est disponible pour les connecteurs PostgreSQL et OWS (WMS, WFS, WCS). Pour ce module, l'utilisateur enregistre son identifiant, le mot de passe et un domaine de connexion (si utile). Avec ces informations il est effectivement possible de se connecter à une base de données PostgreSQL et à des services web OGC.
  • trois modules d'authentification via IGC (plusieurs méthodes d'identification par certificat ou de stockage des certificats). Ces modules permettent d'attaquer les services Web OGC qui reposent sur les mécanismes d'authentification d'HTTP, utilisant les certificats. Pour ces modules, QGIS propose de stocker les certificats directement dans la base d'authentification SQLite, protégée par le mot de passe principal.

Attention, cette nouvelle architecture d'authentification cohabite avec l'ancienne. Concrètement, il faut que la gestion du pilote de donnée intègre les nouvelles méthodes d'authentification (ainsi qu'un moyen graphique de choix de l'authentification). Voilà pourquoi, seuls les pilotes de données PostgreSQL et OWS utilisent cette nouvelle solution d'authentification. Dans les prochaines versions de QGIS, d'autres pilotes de données devraient suivre (il reste Oracle Spatial, MySQL, MS-SQL server, etc.).

Il est donc fort probable que ce premier travail d'incorporation se poursuive dans les futures versions de QGIS et que cette nouvelle solution d'authentification rencontre des bugs ou des failles de sécurité. Néanmoins, cette nouvelle fonctionnalité est un travail d'intérêt qui peut fortement améliorer la partie sécurité de QGIS quand on sait à quel point les logiciels de SIG bureautiques sont souvent à la traîne sur le sujet. Pour l'instant, en plus des interfaces des connecteurs, tout se déroule dans les paramètres de QGIS avec un nouvel onglet dédié à l'authentification:

Affichage stylisé des cellules des tables attributaires

Comme déjà abordé dans la dépêche précédente, il est maintenant possible d'affecter des styles aux cellules de la table attributaire. Cette dernière permet de consulter, de trier, de modifier et de faire des calculs/traitements sur les données alphanumériques d'une couche.

Pour faire simple, il existe maintenant un nouveau panneau (masqué par défaut) dans la table d'attributs qui permet de créer des règles d'affichage. Ces règles permettent de gérer la couleur de fond, la police de caractère (et tout ce qui va avec comme la couleur, la taille, le type de police, etc.) ainsi que de permettre d'afficher une icône dans la cellule. Les règles s'appliquent en fonction du contenu de chaque cellule et elles utilisent le système d'expression de QGIS ce qui permet une grande variété de traitements. Il est possible de créer des règles qui s'appliquent à toutes les lignes et des règles qui s'appliquent uniquement sur une seule colonne.

Les règles sont établies pour une couche et elles sont stockées dans le fichier de projet QGIS (le fichier qui contient tous les paramètres de votre "document" QGIS). Elles s'appliquent donc dès l'ouverture du fichier de projet. Comme ces règles sont dynamiques, si vos données ont été modifiées (par exemple, si elles proviennent d'une table d'un SGBDRS très souvent mise à jour), le style s'appliquera aux nouvelles valeurs.

A quoi peut bien servir cette fonctionnalité ? L'intérêt le plus immédiat est sans doute de commencer à mettre en place une brique permettant d'améliorer l'aspect visuel de la table attributaire qui, il faut bien le reconnaître est assez peu accueillante même si elle reste vraiment très fonctionnelle. L'autre point qui vient naturellement est que cette fonctionnalité permet de repérer plus facilement les valeurs qui dépassent ou qui franchissent un seuil, et ce, d'un simple coup d’œil. Pour certaines utilisations, c'est vraiment très pratique.

 Éditeur avancé de paramètres

Cet éditeur est un peu le about:config de Firefox/Iceweasel. Concrètement, QGIS stocke ses paramètres internes dans le mécanisme des QSettings de Qt.
Avec l'éditeur de paramètres, il est possible d'attaquer tous les paramètres internes de QGIS via une interface graphique. Bien entendu, ces manipulations peuvent entraîner un comportement modifié de QGIS ou encore, vous pouvez perdre certaines configurations (celle des configurations vers les bases de données spatiales par exemple). L'éditeur est assez simple pour le moment: pas de recherche de valeur ou de clef pour l'instant. Son intérêt est de pouvoir modifier le comportement de QGIS sans devoir modifier des fichiers de configuration ou des bases de registre.

Améliorations de DBManager Export vers d'autres formats de fichiers depuis DBManager

Jusqu'à présent, lorsque vous faisiez une requête (géographique ou attributaire) sous DBManager (le gestionnaire/requêteur de bases de données Spatiale aux formats PostGIS/Spatialite/Oracle Spatial), vous ne pouviez exporter vos résultats que directement dans QGIS ou vers un fichier externe forcément au format SHP (ShapeFile, format propriétaire d'ESRI et un des standards de fait de fichiers géographiques). Avec la version 2.12 de QGIS, on peut maintenant choisir un autre format parmi ceux qui sont gérés par la bibliothèque OGR (qui gère un nombre de formats assez conséquent).

QGIS sait bien entendu ouvrir tout fichier géré par OGR depuis des lustres mais cette fonctionnalité permet de moins dépendre du format pivot SHP et de supprimer la majorité du travail de conversion postérieure lorsqu'on souhaite extraire le résultat d'une requête créée avec DBManager.

Gestion d'Oracle Spatial

Comme annoncé dans la dernière dépêche, DBManager gère maintenant les connexions Oracle. Vous pouvez donc réaliser facilement des requêtes spatiales ou attributaires sur une base de données Oracle. Cette fonctionnalité permet également d'amener un outil de gestion directement intégré à QGIS pour les bases de données Oracle. Vous pouvez en effet créer des tables (si vous avez les droits qui vont bien naturellement), modifier certains champs.

Cette fonctionnalité gère les vues et les vues matérialisées: pour ces "tables" un peu spéciales, des informations supplémentaires sont affichées, notamment la définition de la vue/vue matérialisée ce qui peut être utile en cas de débogage. Vous pouvez également rafraîchir vos vues matérialisées (si vous en avez le droit) directement depuis QGIS (table par table via l'interface graphique ou via une requête SQL). Vous pouvez également définir ou supprimer des index ainsi que mettre à jour l'emprise de la couche (cette information étant stockée dans les tables de métadonnées Oracle Spatial) de manière dynamique.

Import des entités sélectionnées dans DBManager

Autre petite modification qui a son importance, on peut maintenant importer uniquement les entités sélectionnées dans des couches via DBManager. Auparavant, il était indispensable de faire un import global, d'ouvrir la table dans le canevas de carte de QGIS, de faire une sélection, de l'inverser et de supprimer les objets. Voilà pas mal de clics d'économisés !

Fenêtre de requête en onglet

Autre petite modification qui va ravir les "requêteurs" chevronnés: les fenêtres de requête sont maintenant des onglets qui s'ajoutent à la suite des onglets d'information sur la table/vue, l'aperçu des données de la table et l'aperçu géographique. Auparavant, les fenêtres des requêtes étaient flottantes et il était vraiment pénible d'en gérer plus d'une seule. Avec QGIS 2.12, on peut empiler plusieurs fenêtres et passer de l'une à l'autre sans aucun souci.

Plugin de vérification géométrique

QGIS avait déjà un outil de vérification géométrique (Vérification de la validité des géométries) mais maintenant, il en dispose d'un autre (Vérifier les géométries). Les deux outils vont sans doute cohabiter pendant plusieurs versions car ils sont différents dans leurs interfaces et leurs contrôles. Le nouveau plugin "Vérifier les géométries" présente une interface assez complète pour configurer un ensemble de règles à vérifier. Par exemple, vous pouvez vérifier que la géométrie ne contient que des polygones ou qu'elle ne contient pas de géométries qui se superposent. Les options à vérifier sont assez complètes et répondent à la majorité des besoins de vérification.

L'autre outil de vérification géométrique est beaucoup plus simple dans son interface car il ne permet pas de choisir ce qui est à vérifier. Il se contente de lancer une batterie de tests et d'annoncer les résultats, sans possibilité de choisir les tests qui seront réalisés. Il y a eu une petite discussion sur la liste de diffusion des dévéloppeurs sur le sujet à propos de la redondance des deux outils.

Améliorations des outils d'édition de données Création de polylignes circulaires

Dans la version précédente de QGIS, le moteur géométrique de QGIS a été revu pour intégrer la gestion des géométries curvilignes. Ces dernières permettent de définir une géométrie non pas comme une suite de x/y mais comme la définition d'un centre et d'un rayon. Néanmoins, malgré cet apport, QGIS ne pouvait qu'afficher ces géométries et il n'était pas possible de les créer directement dans le canevas de carte. Ce point est maintenant corrigé: toutes les couches dont le pilote de données gère les géométries courbes (pour l'instant les couches postgreSQL et les couches en mémoire) peuvent être modifiées pour ajouter des géométries courbes via la création de polylignes courbes. QGIS propose pour l'instant deux modes de création: soit en définissant le rayon à la souris, soit en le définissant manuellement via une fenêtre dédié.

Table de nœuds

Lorsque vous éditez la géométrie d'un objet avec l'outil de modification de noeuds, QGIS présente maintenant un panneau avec la liste des points et leurs coordonnées. Ce panneau permet de sélectionner et de se déplacer avec précision sur le n-ième point ainsi que de modifier manuellement ses coordonnées (pour avoir plus de précision par exemple).

Cet outil qui a l'air assez anodin est pourtant particulièrement utile lors de la gestion des erreurs géométriques. En effet, c'est un cas assez courant lorsqu'on utilise des SGBDRS d'importer des géométries de divers fichiers qui sont assez laxistes par rapport aux standards du SGBDRS en question. Certains formats de fichiers géographiques admettent par exemple des polygones qui se superposent à eux-mêmes, formant ce qu'on appelle dans le milieu autorisé: un "papillon". Dans la plupart des SGBDRS, ces géométries sont invalides et si elles sont "importables", on ne peut généralement pas réaliser de traitements dessus (requêtes spatiales par exemple). Bien souvent, il faut effectuer des corrections manuelles car certains problèmes ne peuvent pas être automatiquement corrigés. Tout ce que fait le SGBDRS c'est dire: le point n°X dans le polygone P pose problème. Grâce à la table de nœuds de QGIS, on peut facilement retrouver ce point pour le modifier…

Interface utilisateur Nouvel écran d'accueil

Avant la version 2.12 de QGIS, quand on ouvrait QGIS, on avait droit à un projet vierge: pas de couches chargées, pas de styles chargés, pas de paramètres personnalisés. Il était (c'est encore le cas) possible d'ouvrir les fichiers de projet récents via le menu Fichier.

QGIS 2.12 présente maintenant une page qui récapitule avec une illustration et des informations, les derniers projets sur lesquels vous avez travaillé récemment. Cela permet d'ouvrir plus rapidement les projets récents simplement en visualisant leur aspect général. Un clic d'économisé pour les utilisateurs, c'est toujours bon à prendre et c'est quand même moins austère que la plage blanche !

Gestion des thèmes d'interface utilisateur

Depuis très longtemps maintenant, QGIS propose plusieurs styles pour l'interface graphique (Windows, CDE, Motif, Plastique, etc.). Ces styles sont appliqués aux widgets Qt et modifient l'apparence des boutons, des entrées, des contrôles de formulaire, etc. Avec la version 2.12, QGIS utilise maintenant les feuilles de style Qt qui permettent d'appliquer des règles de couleur, de taille, d'aspect aux widgets; le tout venant en plus des styles de widget Qt. Pour illustrer cette nouvelle fonctionnalité, un nouveau thème d'interface a été créé. Il se nomme "Night Mapping" et présente une apparence sombre.

Si vous voulez créer un thème, pas de problème, il vous suffit de créer un fichier .qss (l'équivalent d'un CSS pour Qt) en utilisant la référence sur le sujet. Voici l'apparence du thème d'interface "Night Mapping":

Nouvelles fonctions dans les expressions

De nouvelles fonctions font leur apparition dans le moteur des expressions. Les expressions de QGIS permettent de manipuler les valeurs de certains champs pour obtenir des filtres plus complexes. Pour cette version, on trouve des nouveautés du côté des fonctions qui s'occupent de la géométrie des objets:

  • num_points(geometry) permet de calculer le nombre de noeuds d'une géométrie.
  • les fonctions area(geom), length(geom) and perimeter(geom) permettent de calculer la surface, la longueur et le périmètre de n'importe quelle géométrie. Auparavant, il n'était possible d'utiliser ces fonctions que sur la géométrie en cours de traitement.
  • start_point(geom), end_point(geom), point_n(geom) permettent de retrouver le premier, le dernier et le nième point d'une géométrie.
  • La fonction make_point(x,y) permet de créer manuellement une géométrie de type point.
  • Enfin, les fonctions x(geom) et y(geom) retournent les coordonnées x et y des géométries ponctuelles ou bien les coordonnées x et y du centroïde pour les géométries qui ne sont pas ponctuelles.

On peut également noter l'arrivée de nouvelles fonctions d'expression qui travaillent sur la couleur. Grâce à ces dernières, il est possible d'affecter précisément une couleur donnée en fonction de la valeur de certains champs ou du résultat d'autres fonctions d'expression:

  • La fonction project_color permet de récupérer les valeurs de couleur en fonction d'une classification stockée dans le fichier de projet (.qgs). Car il est maintenant possible de définir une palette de couleur spécifique au projet (dans les propriétés de ce dernier). Il sera alors possible d'y faire référence par un simple nom (et non sa définition complète qui implique de connaître les valeurs RGBA).
  • La fonction color_part permet de retrouver une seule composante d'une couleur.

Étiquettes Amélioration du moteur d'étiquettes

Une des nouveautés importantes de cette version est l'amélioration de la gestion des étiquettes. Ces dernières sont des éléments de texte (issus des données attributaires de la table) qui sont affichés au dessus des couches vectorielles. Cela permet d'afficher le nom des rues sur une carte par exemple. QGIS gère les étiquettes depuis très longtemps maintenant et le moteur d'étiquettes a subi une grosse refonte lors du passage à la version 2.0, rendant l'étiquetage beaucoup plus facile à gérer et proposant plus d'options pour gérer le maximum de cas de figure.

Néanmoins, il restait encore des cas particuliers qui avaient tendance à revenir de plus en plus souvent de la part des utilisateurs. La version 2.12 tente de répondre à ces problèmes avec notamment les deux points qui sont présentés en détails ci-dessous (parmi d'autres améliorations apportées par cette version). Ces évolutions ont également été répercutées au niveau de l'API dédiée aux étiquettes.

À ce stade de développement, il ne manque plus guère que la possibilité de gérer la mise en forme des étiquettes via une expression (pour permettre d'afficher le premier mot d'une étiquette en rouge et le troisième mot en bleu avec une police différente par exemple)…

Étiquettes basées sur des règles

De la même manière que QGIS permet de gérer le style d'affichage des couches en fonction de règles, on peut maintenant utiliser ces mêmes règles pour les étiquettes. Concrètement, cette fonctionnalité permet de désactiver l'affichage à certains seuils d'échelle ou de n'afficher les étiquettes que pour certains objets géographiques d'une couche, en fonction d'une expression. Vous pouvez également affecter un style aux étiquettes en fonction des règles (genre afficher le nom des rues principales en gras avec une police différente des rues secondaires).

Avec cette fonctionnalité, on peut répondre à vraiment beaucoup de cas d'usages différents simples ou complexes et les possibilités d'affichage des étiquettes sont presque sans limite.

Affichage sélectif des étiquettes

Un des problèmes qui restait à gérer dans les étiquettes était le positionnement de ces dernières. Dans des cas simples, on souhaite juste placer des étiquettes pour qu'elles soient visibles. Donc, il faut les afficher au dessus de toutes les couches. Mais comment fait-on si on souhaite qu'elles ne s'affichent pas lorsqu'elles sont au-dessus d'un polygone d'une autre couche (qui sert à masquer certaines étiquettes) ? Comment fait-on pour gérer l'affichage des étiquettes avec plusieurs couches (est-ce que les étiquettes des noms de rues doivent être affichées au dessus des étiquettes des numéros de rue ?) ?

QGIS vous permet maintenant de répondre à ces points particuliers grâce aux options qui suivent:

  • On peut maintenant choisir de ne plus afficher les étiquettes qui débordent du polygone étiqueté. Cela permet d'éviter que des étiquettes débordent d'une couche et aillent "polluer" les étiquettes d'une autre couche.
  • Il est également possible de définir la priorité d'affichage de l'étiquette de chaque objet en fonction d'une valeur ou d'une expression. En règle générale, lorsqu'on affiche une couche, on utilise un algorithme de placement qui affiche les étiquettes suivant la place disponible (c'est l'option par défaut). De fait, certaines étiquettes sont ainsi non affichées pour ne pas surcharger l'affichage (de toute manière, on n'y voit plus rien). Jusqu'à présent, QGIS ne permettait pas de définir la priorité d'affichage de chacun des objets au sein d'une même couche. C'est maintenant corrigé. Concrètement, on peut utiliser une expression ou la valeur d'un champ pour indiquer la priorité d'affichage de chaque objet d'une couche. Bien entendu, cette priorité est également en concurrence avec les priorités des objets des autres couches. Par exemple, si vous souhaitez afficher en priorité les noms des villes qui ont le plus d'habitants, il vous suffit de faire varier la priorité d'affichage en fonction de la population (moyennant une petite mise à l'échelle linéaire).
  • On peut aussi paramétrer des couches d'obstacles. Il s'agit de couches sur lesquelles les étiquettes doivent éviter de recouvrir la couche. J'ai bien employé les mots "doit éviter" car, s'il n'y a pas moyen de faire autrement, l'étiquette recouvrira l'objet de la couche d'obstacle. Cette fonctionnalité permet d'améliorer le rendu des étiquettes en évitant le plus possible de recouvrir des objets dont l'affichage est important. Vous pouvez par exemple l'utiliser pour éviter que les numéros des habitations ne soient affichés sur les linéaires des rues. Attention, si vous avez une couche de polygone, il sera impossible de ne pas la recouvrir d'étiquettes. Les couches d'obstacle sont plus des couches d'évitement pour les étiquettes et cet évitement n'est pas absolu.
  • Chaque couche d'obstacle dispose de son niveau de priorité. Entre deux couches qui ont un niveau de priorité d'obstacle différent, celle qui aura le niveau le plus élevé aura moins de chance d'être recouverte par une étiquette.
  • Enfin, en combinaison avec les couches d'obstacles, les couches de polygones peuvent être paramétrées pour décourager l'affichage des étiquettes sur les limites des polygones. Cela permet d'encourager que les étiquettes des autres couches s'affichent au maximum à l'intérieur des polygones et non à cheval sur leurs limites. Cela permet généralement un affichage plus net où la géométrie des polygones est bien visible. Néanmoins, il ne s'agit que d'un encouragement : s'il n'y a pas le choix, les limites des polygones seront recouvertes.

Pour l'avenir Rythme des publications de version

Comme depuis longtemps sur la liste de diffusion des développeurs QGIS, et ce, à chaque publication d'une nouvelle version, de nombreux développeurs font remonter que le rythme est un peu trop soutenu. En effet, tous les 4 mois, le projet crée une nouvelle version. Le processus est lui-même découpé en deux phases:

  • introduction des nouvelles fonctionnalités (3 mois).
  • gel des fonctionnalités et correction des bugs (1 mois).

Pourtant, dans la pratique, voici ce qu'on peut constater:

  • De nombreux développeurs n'ont pas assez de temps pour introduire de nouvelles fonctionnalités pendant les 3 mois.
  • Bien souvent, des développeurs demandent une à deux semaines de délai pour le gel des fonctionnalités dans le but d'incorporer correctement leurs pull-requests.
  • Certaines pull-requests n'ont pas le temps d'être revues ni fusionnées dans le dépôt avant la publication officielle de la branche principale.
  • Lors de sa sortie, QGIS publie généralement (c'est le cas depuis au moins 3 versions consécutives), une version 2.xx.1 qui corrige des bugs majeurs qui n'avaient pas été testés lors de la phase de gel.

Donc, à chaque publication, on a droit à ce genre de messages ! Pour prendre des décisions plus éclairées et éviter le flamewar inhérent à ce genre de problème (certains sont satisfaits du rythme actuel, d'autres voudraient revenir à deux publications par an), des membres du PSC (Direction du projet) ont lancé un questionnaire en ligne pour les utilisateurs de QGIS afin de leur demander ce qu'ils attendent en termes de publication de versions et leurs utilisations des dernières versions ou de la version LTR. Le questionnaire étant maintenant clos, vous pouvez néanmoins consulter les résultats pour les utilisateurs français qui ont répondu.

Il reste à voir comment les résultats vont être interprétés et si une décision va être prise sur le sujet. En cas de stagnation, je pense qu'on aura droit aux même messages récurrents sur la durée entre les publications…

Passage à Qt5 et Python3

Récemment, une QEP est sortie sur la transformation technique la plus importante dans l'avenir de QGIS: le passage à Qt5 et à Python3. Dans le projet QGIS, une QEP est une QGIS Enhancement Proposition (une proposition d'amélioration de QGIS en bon français). Normalement, lorsqu'un point de développement demande discussion entre développeurs, une QEP est produite. Ce document détaille l'objectif du changement proposé et raconte comment y parvenir sans rentrer trop loin dans les détails de l'implémentation. Un vote a ensuite lieu et la fonctionnalité est intégrée ou non en fonction du résultat. Par exemple, le système d'authentification a fait l'objet d'une QEP en amont de son intégration dans la version 2.12 de QGIS.

Cette fois, une proposition de QEP est sortie sur la programmation de l'intégration de Qt5 et de Python3 dans la future version 3.0 de QGIS. Globalement, elle indique qu'il ne devrait pas y avoir de version 2.16 de QGIS mais une version 3.0 qui intégrerait obligatoirement Qt5 et si possible Python3. Cette version autoriserait le cassage de l'API 2.0 en cas de besoin. L'avenir nous dira si cette QEP passe du stade de projet au stade validé. Vous pouvez retrouver les discussions de la liste de diffusion des développeurs sur le sujet.

Améliorations du pilote PostgreSQL

La Pull-Request suivante apporte quelques modifications sur le pilote de données PostgreSQL/PostGIS pour mieux gérer les couches polyhédrales et les TIN stockées dans PostGIS. Un TIN est un modèle numérique de terrain vectoriel. Jusqu'à présent, QGIS sait gérer des MNE ou des MNT au format raster (chaque cellule/pixel contient la donnée d'élévation ou de terrain).

 Évolution des accès réseau

En consultant les Pull-Requests de QGIS sur github, on voit qu'un certain nombre d'extensions Python sont en train de migrer vers le système de gestion réseau interne de QGIS. L'intérêt de cette transition est de pouvoir utiliser ces extensions dans des environnements où la configuration réseau repose sur l'utilisation d'un serveur mandataire (proxy). QGIS gère la configuration réseau en interne (il peut utiliser celle du système d'exploitation). La plupart des pilotes de données qui ont besoin d'accéder à Internet (WMS/WFS/WCS/etc.) utilisent une classe de QGIS pour accéder au réseau (QgsNetworkAccessManager qui est une surcouche de la classe Qt QNetworkAccessManager. L'intérêt d'utiliser cette classe est de disposer d'un accès réseau sans devoir en gérer les paramètres, ces derniers étant intégrés au niveau de l'application QGIS elle-même.

Mais la plupart des extensions Python qui avaient besoin d'accéder au réseau utilisaient encore urllib2 où la configuration du proxy est certes possible mais dont la préparation implique de nombreuses lignes de codes pour récupérer la configuration réseau dans les paramètres de QGIS. Néanmoins, plusieurs extensions ou parties d'extension commencent à migrer vers QgsNetworkAccessManager ce qui permet leur utilisation dans des environnements d'entreprises ou d'administrations ou encore pour des entités utilisant un serveur mandataire. Ainsi par exemple, on peut dès maintenant récupérer l'aide des géo-traitements depuis Internet. On devrait sans doute pouvoir récupérer les scripts de géo-traitement du dépôt GitHub ainsi que consulter un catalogue CSW derrière un proxy.

Modification de l'interface de création de fonctions d'expressions

Les expressions de QGIS permettent de faire des tris, des sélections et des traitements de données attributaires et géographiques. Elles constituent le coeur de toute la logique utilisateur pour travailler avec les données gérées dans QGIS, en plus des géo-traitements qui réalisent des opérations un peu complexes. Quasiment tous les éléments de contrôle et d'affichage dans QGIS peuvent être modifiés par une expression ce qui permet des réalisations quasiment infinies. Vous pouvez par exemple définir la dimension de chaque point représenté sur la carte en fonction d'une règle complexe (ex: convertit deux champs en entier, fait la moyenne et multiplie par 5 pour déterminer la taille du symbole utilisé pour représenter le point).

Avec le temps, les fonctions disponibles dans les expressions se sont globalement enrichies. Au début, on ne pouvait faire que quelques opérations mais maintenant, il existe même des fonctions qui calculent un score de similarité entre deux chaînes de caractères ou qui réalisent des mises à l'échelle en fonction d'une plage. Chaque nouvelle version de QGIS voit arriver son lot de nouvelles fonctions.

Néanmoins, ce n'est pas suffisant dans certains cas où aucune fonction ou combinaison de fonctions d'expression ne peut vous faire obtenir le résultat escompté. Pour répondre à ce problème, QGIS permet depuis la version 2.8 de créer des fonctions en Python qui seront utilisées par le moteur d'expression. Ainsi, si vous avez besoin d'un algorithme qui n'existe pas (encore) dans QGIS, vous êtes libre de le coder.

L'ergonomie de l'interface d'édition de code des fonctions d'expression va sans doute être revue dans la prochaine version de QGIS car il faut bien reconnaître qu'elle peut être améliorée. Il devrait y avoir un panneau permettant d'appeler les derniers fichiers Python utilisés pour construire la fonction d'expression. Un système de test de la fonction devrait être mis en place pour tester rapidement le résultat de la fonction (ce qui permet un développement plus simple). A voir si la PR passe ou pas dans les 3 mois à venir…

Conclusions

Encore une fois, la nouvelle version de QGIS est pleine de nouvelles fonctionnalités. Espérons que cette dépêche vous permettra d'y voir plus clair. Ceux qui veulent plus de détails peuvent se tourner vers le changelog visuel qui est bien plus complet. Merci d'ailleurs à l'équipe de développement de QGIS de faire l'effort de publier en images les principaux changements de chaque version (c'est un vrai travail).

Même si avec le temps QGIS devient un logiciel de SIG mûr, il reste encore pas mal de secteurs de l'application à renforcer. Par exemple, les géo-traitements (Processing) sont quand même beaucoup moins nombreux que ceux d'ArcGIS et il arrive souvent que certaines implémentations d'algorithmes plantent ou retournent des résultats erronés. Il faudra encore un peu de temps (et de code) pour arriver au niveau des meilleurs outils de SIG sur le sujet. Par ailleurs, la documentation des géo-traitements est vraiment minimale. Il faudrait veiller à l'améliorer fortement pour ne plus avoir à se demander à quoi sert tel ou tel traitement.

Autre exemple d'amélioration possible: la mise à niveau des fonctionnalités des différents pilotes d'accès aux SGBDRS. Pour l'instant, on peut sans mal affirmer que le pilote de données PostgreSQL est celui qui présente le plus de fonctionnalités (gestion de l'authentification QGIS, gestion des géométries courbes, simplification de la géométrie du côté serveur, gestion des expressions du côté serveur, etc.). C'est sans doute normal car PostgreSQL et PostGIS sont très facilement déployables sur toute machine (y compris machine de dev) en quelques lignes de commandes. Néanmoins, il serait bon que les autres pilotes de données ne soient pas trop à la traîne (dans l'ordre des fonctionnalités: Oracle Spatial, MySQL et MS-SQL Server). Le support renforcé et à iso-fonctionnalités de ces SGBDRS par QGIS serait un facteur important de migration. Mais, effectivement, maintenir le code pour ces 3 autres bases de données prend du temps que la communauté des développeurs QGIS n'est sans doute pas capable de fournir. Des volontaires ?

Si vous souhaitez contribuer à l'essor de QGIS voici quelques idées d'action:

  • Si vous êtes un scientifique habitué à travailler avec des géo-algorithmes, lancez vous dans la documentation des géo-traitements de QGIS car cette dernière est vraiment à la traîne comparée à d'autres.
  • Si vous êtes bon en C++, vous pouvez vous plonger dans le code principal de QGIS pour voir s'il n'y aurait pas quelques améliorations à apporter.
  • Si vous êtes bon en Python, vous pouvez travailler sur Processing. Il s'agit du moteur des traitements géographiques. Vous pouvez en améliorer le cœur mais aussi (et surtout) créer ou corriger tous les algorithmes présents.
  • Si vous ne savez pas coder, vous pouvez nous aider à maintenir la traduction française à 100% sur transifex, notamment après le gel des fonctionnalités afin de nous assurer d'avoir une version complètement traduite en français.
  • Si vous êtes bon en matière de formation, n'hésitez pas à proposer des améliorations sur la documentation QGIS, elle en a bien besoin.
  • Dans tous les autres cas, vous pouvez simplement installer la dernière version de QGIS (si possible la dernière version de développement) et faire du triage de bugs (il y en a un peu plus de 2700 à suivre).
  • Enfin, n'hésitez pas à faire découvrir QGIS à votre entourage…

Rendez-vous dans 4 mois pour la prochaine version !

PS: si vous souhaitez participer à la rédaction de la future dépêche, n'hésitez pas à venir traîner sur la partie rédaction collaborative de linuxfr après le gel des fonctionnalités (dans 3 mois). Cela permettra de réduire la charge de travail sur la dépêche et de mettre en avant des éléments qui vous tiennent à cœur.

Télécharger ce contenu au format Epub

Lire les commentaires

Spacewalk 2.4

29 octobre, 2015 - 10:57

Spacewalk est un logiciel de gestion des systèmes et de leurs mises à jour pour les distributions basées sur les paquets RPM. Ce nom ne vous dit peut-être rien, mais ce projet est celui qui sert de base à Red Hat Satellite 5 (RHN), ainsi qu'à SUSE Manager. Malgré la disponibilité de Katello et de Satellite 6, Spacewalk est toujours maintenu.

Le 7 octobre dernier est sortie la version 2.4 de ce logiciel. Une partie des changements est détaillée en seconde partie de cet article, et reprend en grande partie les notes de version.

Pour cette version, pas de suppression ou de retrait majeur, il s'agit surtout de maintenance et d'améliorations parfois discrètes mais bienvenues.

Côté améliorations :

  • Spacewalk est maintenant disponible pour Fedora 22, et sait gérer des clients utilisant ce système ;
  • autre amélioration découlant directement de la précédente, l'ajout d'un nouveau paquet, nommé dnf-plugin-spacewalk ;
  • tout ce qui est spécifique aux organisations est déplacé dans un menu dédié à cet usage, de sorte que maintenant, les administrateurs du serveur Spacewalk peuvent restreindre les droits des administrateurs d'une organisation ;
  • les mots de passe ne sont plus envoyés à l'utilisateur en clair : par conséquent, une nouvelle procédure de récupération de mot de passe a été mise en place, détaillée sur le wiki du projet ;
  • l'interface utilisateur continue son amélioration, incluant une standardisation sur Patternfly ;
  • les catalans et les portugais peuvent maintenant utiliser Spacewalk dans leur langue, grâce à l'ajout des traductions en provenance du projet Zanata ;
  • la somme de contrôle pour les canaux logiciels ne peut plus être placée à « Aucun » ;
  • la page de synchronisation des dépôts montre maintenant plus de détails sur la dernière synchronisation ;
  • il est dorénavant possible de ne synchroniser que les derniers paquets ajoutés à un dépôt ;
  • une icône indique maintenant si la machine est conforme à la politique SCAP définie dans Spacewalk.

Toujours dans les améliorations, l'API se voit étendue avec les appels suivants :

  • org.isErrataEmailNotifsForOrg ;
  • org.isOrgConfigManagedByOrgAdmin ;
  • org.setErrataEmailNotifsForOrg ;
  • org.setOrgConfigManagedByOrgAdmin ;
  • system.getOsaPing ;
  • system.sendOsaPing.

Le lecteur avisé notera que les appels reprennent une partie des fonctionnalités ajoutées, ainsi que celle d'envoyer un ping via Osa.

Pour ce qui est de la maintenance, on retiendra :

  • des corrections sur Cobbler, qui avait des soucis avec Fedora, et RHEL/CentOS 7 ;
  • dans l'API, l'appel system.listUngroupedSystems a été corrigé ;
  • l'annonce ajoute, sans plus de détails, "plein de petites améliorations et corrections".
Télécharger ce contenu au format Epub

Lire les commentaires

Conférence : OpenFoodFacts, jeudi 5 novembre 2015, à Lyon

29 octobre, 2015 - 09:18

Venez découvrir le projet « Open Food Facts » ce jeudi 5 novembre 2015 à la Maison Pour Tous/ Salle des Rancy (249 rue vendôme - 69003 Lyon).

Quelques contributeurs lyonnais vous présenteront ce projet collaboratif libre en ligne dont le but est de constituer ensemble une base de données libre et ouverte sur les produits alimentaires du monde entier. Déjà plus de 30 000 références rien qu’en France !

N’hésitez pas à emporter avec vous votre portable, votre smart phone et même quelques emballages de vos produits alimentaires préférés.

Le format de l’atelier se veut convivial : entre présentation interactive, démonstration et bien sûr contribution collaborative.

Télécharger ce contenu au format Epub

Lire les commentaires

Webinaires (29 oct et 5 nov 2015) - choisir et installer un serveur Linux sécurisé

28 octobre, 2015 - 17:26
  • Vous ne savez pas comment bien gérer vos serveurs GNU/Linux ?
  • Vous craignez de faire des erreurs et cela vous bloque pour vous lancer dans l'administration système avec GNU/Linux ?
  • Vous avez des difficultés à faire le tri dans les tutoriels trouvés sur Internet ?
  • Vous avez essayé d'installer un serveur mais vous avez abandonné avant la fin ?
  • Vous souhaitez augmenter vos compétences (objectifs de carrière…) ?

Cette formation en ligne, libre et gratuite (licence cc by-sa), est découpée en 3 séries de mini-séminaires (webinaires). C'est une occasion d'apprendre où commencer pour gérer un serveur Linux sur Internet.

Bonjour, je m'appelle Christophe Guilloux et je suis expert en administration système en Logiciel Libre. J'ai commencé mon apprentissage en arrivant à l'université en 1995, d'abord avec des solutions propriétaires mais je n'y comprenais rien.

Puis j'ai décidé de passer à Linux avec l'aide d'amis pour m'aider à apprendre. C'est ainsi que j'ai acquis de l'expertise au fil du temps. Dans le même temps, je suis devenu modérateur de LinuxFR.org en 2002 (bien que je ne modère plus énormément), cela fait donc un moment que je suis ici, ce qui m'aide dans ma veille technologique (et politique). J'ai également travaillé un peu plus de 10 à Inria (Centre de Recherche en Informatique). Aujourd'hui, je gère un service particulier pour un client du sud de la France et je prépare des formations en lignes.

J'ai décidé de partager librement avec vous et en direct les premières étapes importantes à dérouler pour préparer un serveur Linux hébergé en centre de données :

Partie 1 (22 octobre 2015) :
  • L'enregistrement est accessible jusqu'au 3 novembre 2015 : regarder le replay
  • Comment choisir le bon serveur ? (définir ses objectifs, critères importants à regarder,…)
  • Que faire juste après la réception de ses codes d'accès ? (changer le mot de passe root, mettre sa clé SSH,…)
Partie 2 (29 octobre 2015) à 21h00 (16h Québec) :
  • L'enregistrement est accessible jusqu'au 4 novembre 2015 : regarder le replay
  • Sécurisation externe
  • Configuration du socle principal
Partie 3 (5 novembre 2015) à 21h00 (15h Québec, décalage horaire) :
  • L'enregistrement est automatique, sinon, si vous lisez après le 29 octobre 2015 : Je m'enregistre rapidement
  • Sécurisation interne

En vous inscrivant à suivre cette formation libre (licence cc by-sa) et gratuite, votre courriel sera collecté mais ne sera jamais vendu à un tiers (déclaration CNIL n°1829527). Vous pouvez vous désinscrire de la liste et rester inscrit au webinaire mais vous ne recevrez pas le guide PDF résumé après le 10 novembre 2015.

Cette formation s'adresse à des débutants en administration Linux.

(Pour suivre les webinaires de cette année, le plugin flash est nécessaire)

Bon courage et à bientôt !

Télécharger ce contenu au format Epub

Lire les commentaires

Rendez-vous du logiciel libre à la Roche-sur-Yon le 5 novembre 2015

28 octobre, 2015 - 14:14

Le jeudi 5 novembre aura lieu à la Loco Numérique de la Roche-sur-Yon le 3e "Rendez-vous du logiciel libre" de l'année.

Les rendez-vous du logiciel libre se veulent un moment convivial destiné à toutes celles et ceux souhaitant penser l'informatique sur un mode… différent. Une fois tous les deux mois, l'association Alliance libre se propose ainsi de vous faire découvrir les mille et une facettes du libre à destination des pros.

Au programme :

  • Tranquil It Systems spécialiste Samba viendra nous faire un retour d'expériences de mise en place de Samba4-Ad à la place de services Active Directory ;
  • la seconde présentation se fera par la société Eralog qui nous présentera le logiciel SquashTM pour la mise en place de référentiels de tests d'application tout au long du cycle de vie de celle-ci.

Le tout se finira par un petit échange autour d'un verre.

N'hésitez pas à vous inscrire.

Télécharger ce contenu au format Epub

Lire les commentaires

Atelier CLI de la semaine 45/2015 à Bordeaux

27 octobre, 2015 - 17:40

Les ateliers CLI (Command Line Interface) permettent de progresser en ligne de commande au sein d'un groupe, autour d'un outil ou d'un thème.

Au cours de l'atelier CLIdu mardi 03 novembre, j'ouvrirais le premier atelier consacré aux contrôles d'accès dont le sujet sera les permissions Unix traditionnelles, abrèv. TUP. Lieu : Le Node 12 rue des Faussets 33000 Bordeaux.

L'atelier CLI suivant, fixé au mardi 10 novembre, sera ouvert à la pratique à l'aide d'exemples concrets. Lieu : Labx, à la Cité numérique, 2 rue Marc Sangnier 33130 Bègles.

Les ateliers CLI ont lieu :

  • débutant : animé par Stéphane Ortega, le lundi de 19h00 à 20h30;
  • avancé : animé par un professionnel ou un expert, le mardi de 20h00 à 22h00.
Télécharger ce contenu au format Epub

Lire les commentaires

Journée GNU/Linux et Logiciel Libre à Cergy-Pontoise (95) le 21 novembre 2015

27 octobre, 2015 - 09:58

Une journée GNU/Linux et Logiciel Libre aura lieu à Cergy-Pontoise sous la forme d'une Install-Party, suivie d'une table ronde sur les « nouvelles solidarités numériques » dans le cadre de l'ESS (Économie Sociale et Solidaire).

Ceci est l'initiative de Générations Solidaires Val-d'Oise Vauréal, avec pour invités, entre autres, les associations du Libre : StarinuX (GULL) et Emmaubuntüs (distribution Linux basée sur Ubuntu).

Quand : le samedi 21 novembre 2015, de 10h à 17h.

Lieu : Bibliothèque d'Études et d'Information de Cergy-Pontoise, Parvis de la Préfecture, 95027 Cergy-Pontoise Cedex (tél : 01 34 41 42 58) RER A, gare de Cergy-Préfecture.

Si vous habitez à proximité (ou non), c'est aussi l'occasion de venir donner un coup de main pour l'install-party.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de Chamilo LMS 1.10, logiciel libre de e-learning

27 octobre, 2015 - 09:04

L'association Chamilo a annoncé vendredi dernier la publication de leur nouvelle version majeure de Chamilo LMS, avec l'ajout de plus de cent nouvelles fonctionnalités depuis la précédente version stable.

Pour ceux qui n'en ont jamais entendu parler, Chamilo LMS est relativement nouveau. Il existe depuis seulement 5 ans, est en croissance rapide de sa communauté avec déjà 11 millions d'utilisateurs autour d'un concept : faire que l'e-learning soit plus facile à mettre en œuvre dans tout type d'organisation. Il est distribué sous licence GPLv3+.

Soulignons également la disponibilité de 27 thèmes graphiques pour servir de base à la conception de chacun.

Parmi les nouvelles fonctionnalités, il est à noter en particulier :

  • un mode de vidéoconférence point à point qui fonctionne sur les dispositifs mobiles ;
  • un catalogue de sessions et une boutique en ligne (avec paiements via PayPal ou chèques) ;
  • l'intégration d'un nouvel éditeur en ligne pour un meilleur support des navigateurs modernes et mobiles ;
  • nouveaux rôles d'utilisateur pour mieux répondre à la nature hiérarchique de certaines organisations ;
  • intégration des standards Cartes Twitter et OpenGraph de Facebook pour un meilleur référencement de votre portail Chamilo ;

Si vous souhaitez essayer la plate-forme de démonstration en ligne offerte par l'Association Chamilo, allez sur https://campus.chamilo.org et créez un compte d'enseignant. Si vous préférez avoir votre propre portail de test en tant qu'administrateur, téléchargez la dernière version sur leur site web : https://chamilo.org/fr/chamilo-lms/ ou contactez un fournisseur officiel pour un service plus personnalisé : https://chamilo.org/providers/

Télécharger ce contenu au format Epub

Lire les commentaires

Libervia/Salut à Toi : campagne pour une version Android et de bureau

26 octobre, 2015 - 19:54

Nous venons de lancer une campagne de financement participatif pour le projet Libervia/Salut à Toi afin de développer une version pour Android et de bureau.

Salut à Toi (SàT) est un outil de communication (ou « réseau social ») avancé basé sur le protocole standard XMPP. Il est décentralisé, multi-usages, multi-interfaces, libre (AGPL v3+) et dispose de nombreuses fonctionnalités : blog/microblog, partage de fichiers, chiffrement de bout en bout, jeux, etc.

SàT est un outil unique, de par son architecture, ses fonctionnalités, sa philosophie et la façon dont il est géré.

La suite de cette dépêche détaille la campagne et ce qu'elle va permettre de faire.

Sommaire Salut à Toi c'est quoi ? et Libervia ?

D'abord quelques mots sur nous. « Salut à Toi » est à la fois le nom du projet d'outil de communication, et de l'association loi 1901 que nous avons créé en 2014 pour gérer son développement. Vous trouverez toutes les informations sur cette association sur le site officiel.

En plus du logiciel, nous cherchons à avoir et à amener dans le débat public une réflexion sur les outils de communication (comme le débat organisé aux dernières RMLL), car nous soutenons que la technologie n'est pas neutre.

Nous sommes particulièrement attentifs à l'éthique, ce qui peut se voir notamment dans notre contrat social.

Aussi, nous cherchons à être dans un esprit de collaboration plutôt que de concurrence avec les autres projets plus ou moins apparentés. Ainsi nous sommes en contact avec d'autres réseaux comme Movim, Diaspora ou SeenThis. Nous souhaitons à plus ou moins long terme faire des passerelles entre les différents réseaux libres (ou les pousser à utiliser XMPP quand c'est possible).

Libervia est le nom de notre interface web, et nous avons décidé de mettre ce nom plus en avant dans nos communications car l'interface web est plus facile d'accès, et le nom passe mieux à l'international.

Une application Android et de bureau

Nous avons décidé d'axer la campagne sur une interface Android car c'est une demande que nous avons régulièrement, qu'un certain nombre de personnes utilisent Internet principalement à travers leur téléphone, et qu'il n'existe pas d'application offrant les mêmes fonctionnalités que SàT.

Au niveau de l'aspect de l'interface nous ne sommes pas arrêtés, mais nous n'allons pas nécessairement suivre les canons habituels. Durant la campagne nous allons présenter quelques idées, n'hésitez pas à nous faire vos suggestions.

Le même frontal fonctionnera à la fois sur bureau (Gnu/Linux bien sûr, mais probablement aussi Windows, Mac OS X, et peut-être d'autres plate-formes) et sur Android : vous constaterez que nos 2 premières étapes sont pour le développement de la version bureau.

Les fonctionnalités

Vous pouvez déjà voir les fonctionnalités actuelles sur le site officiel (ou encore là), mais ça n'est pas tout, nous préparons une nouvelle version qui devrait sortir d'ici 2 à 3 semaines. Elle apportera des fonctionnalités majeures, en particulier un moteur de blog très amélioré.

Pour résumer les fonctionnalités principales :

  • un moteur de blog/microblog décentralisé ;
  • une messagerie instantanée simple ou en groupe avec de nombreuses fonctionnalités avancées ;
  • du chiffrement de bout en bout (OTR en conversation simple uniquement pour le moment, mais il est probable que nous implémentions OMEMO/Axolotl également) ;
  • la possibilité de publier publiquement ou uniquement avec un groupe (amis, famille, collègues) ;
  • du partage de fichiers ;
  • des activités/jeux.
Et Firefox OS, Ubuntu Phone, Sailfish OS, Microsoft Phone, iOS, etc ?

Nous envisageons de développer pour certaines autres plate-formes, mais il y a parfois des contraintes de temps, techniques, ou juridiques.

Pour Firefox OS ce sont des technologies différentes qu'il faudra utiliser. Nous songeons à faire une webapp pour ce système, mais pas avant 2016 (nous prévoyons de retravailler Libervia, et en profiter pour faire une version Firefox OS).

iOS serait assez simple techniquement (c.f. détails techniques ci-dessous), mais il faut du matériel Apple pour développer sur cette plate-forme, et il y a eu par le passé des litiges avec des logiciels libres.

Pour les autres plate-formes, c'est à étudier au cas par cas, mais il y a toujours des questions de temps et moyens à disposition.

De toute façon, il est prévu de pouvoir à minima utiliser Libervia (l'interface web) sur les plate-formes non disponibles en natif.

Au niveau technique

Quelques rapides explications sur le plan technique. Notre architecture est basée sur un modèle démon/frontaux (backend/frontends) avec des frontaux qui s'occupent principalement de la vue, et toute la partie métier ou presque dans le démon.

Le développement consistera à faire un nouveau frontal, et nous avons choisi de le faire avec Kivy qui est un cadriciel (« framework ») Python multi-plateformes.

Kivy est pensé pour les écrans tactiles, et l'équipe développe également des outils pour porter du code Python sur Android, déjà testés avec Twisted qui est au cœur de notre « backend ».

Notre développement consistera donc d'abord à faire l'interface pour bureau, puis à porter le code sur Android via les outils idoines.

Financement

Nous avons longtemps hésité à utiliser du financement participatif pour différentes raisons. Nous avons finalement décidé d'utiliser la plate-forme Arizuka car elle se concentre sur l'économie sociale et solidaire ou apparenté, et nous avons eu un bon contact avec eux.

Nous développons le projet depuis longtemps, et avons peu de ressources. Cette campagne est aussi un test pour savoir si nous pouvons envisager de nous financer, que ça soit via des dons ou du service. Nous avons volontairement demandé une somme relativement faible, et il est crucial que nous réussissions cette campagne pour la suite du projet.

Alors si vous voulez voir un outil de communication libre, décentralisé, basé sur des standards, chiffré, éthique, et avec des fonctionnalités uniques, c'est le moment de nous soutenir et de faire circuler l'info.

Merci !

Télécharger ce contenu au format Epub

Lire les commentaires

Revue de presse de l'April pour la semaine 43 de l'année 2015

26 octobre, 2015 - 15:30

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

[Numerama] Des enchères inversées pour de l'open-source public

Par Guillaume Champeau, le vendredi 23 octobre 2015. Extrait:

L'administration américaine testera à partir de la semaine prochaine un nouveau type de marché public pour les petits projets open-source, basés sur des enchères inversées.

Lien vers l'article original: http://www.numerama.com/tech/128025-des-encheres-inversees-pour-de-lopen-source-public.html

[InformatiqueNews.fr] L'open source: L'innovation et la sécurité par la transparence

Par La rédaction, le vendredi 23 octobre 2015. Extrait:

Le contraste entre les logiciels propriétaires et open source est aussi vieux que l’industrie de l’informatique elle-même. Dans presque toutes les catégories, des logiciels sont disponibles soit auprès de fournisseurs qui développent et commercialisent eux-mêmes leur code, soit auprès de communautés de développeurs travaillant avec du code ouvert. Au cours de la dernière décennie, l’aversion envers l’utilisation des logiciels libres, particulièrement dans les entreprises, a pris un tournant majeur.

Lien vers l'article original: http://www.informatiquenews.fr/lopen-source-linnovation-et-la-securite-par-la-transparence-ismet-geri-forgerock-40854

[internet ACTU.net] Condamnés par le code: l’immunité logicielle en question

Par Hubert Guillaud, le jeudi 22 octobre 2015. Extrait:

Sur Slate.com, la réalisatrice et juriste, diplômée de l’école de droit de Yale, Rebecca Wexler nous rappelle que les programmes dont on ne peut accéder au code sont partout: dans les ascenseurs, dans les avions, dans les appareils médicaux, etc. L’impossibilité à y accéder à des conséquences directes sur la société et la politique… Ils peuvent menacer notre vie privée en recueillant des informations sur chacun d’entre nous sans notre consentement.

Lien vers l'article original: http://www.internetactu.net/2015/10/22/condamnes-par-le-code-limmunite-logicielle-en-question

[Next INpact] Loi Valter sur l'Open Data: de «gros reculs» au Sénat

Par Xavier Berne, le jeudi 22 octobre 2015. Extrait:

Après avoir été adopté par une Assemblée nationale quasi déserte le 6 octobre dernier, le projet de loi Valter sur la gratuité des informations du secteur public arrive au Sénat. Le texte a été examiné hier en commission, où plusieurs amendements perçus comme de «gros reculs» par l’association Regards Citoyens ont été votés.

Lien vers l'article original: http://www.nextinpact.com/news/97005-loi-valter-sur-l-open-data-gros-reculs-au-senat.htm

[Les Echos] DevOps consacre les bénéfices de l’Open Source

Par Carine Braun-Heneault, le mercredi 21 octobre 2015. Extrait:

Le développement logiciel est devenu en quelques années un secteur éminemment stratégique de l’industrie informatique. Et de l’industrie dans son ensemble, notamment en France, si l’on en croit les récentes annonces relatives aux plans de transformation du tissu industriel vers le numérique.

Lien vers l'article original: http://www.lesechos.fr/idees-debats/cercle/cercle-142003-devops-consacre-les-benefices-de-lopen-source-1167768.php

[Next INpact] Hadopi: la justice ordonne le retour d'Éric Walter!

Par Marc Rees, le lundi 19 octobre 2015. Extrait:

Licencié de la Hadopi depuis le 1er août dernier, Éric Walter avait contesté cette décision. Surprise ! Vendredi, le tribunal administratif de Paris a ordonné sa réintégration. Il va du coup redevenir secrétaire général de l’autorité publique indépendante.

Lien vers l'article original: http://www.nextinpact.com/news/96943-hadopi-justice-ordonne-retour-deric-walter.htm

[L'Usine Digitale] Qu'ont exprimé les 21 330 participants à la consultation sur la loi numérique?

Par Aurélie Barbaux, le lundi 19 octobre 2015. Extrait:

La consultation publique pour le projet de loi pour une République numérique d'Axelle Lemaire a recueilli 147710 votes et 8501 contributions argumentées de la part de 21 330 personnes. Cette participation démontre une plus grande maturité qu’attendue des citoyens sur des sujets souvent avancés comme trop techniques. Une leçon pour Emmanuel Macron - qui prépare sa propre loi numérique - et l’Europe, qui affinent directives et réglements?

Lien vers l'article original: http://www.usine-digitale.fr/editorial/qu-ont-exprime-les-21-330-participants-a-la-consultation-sur-la-loi-numerique.N357473

Et aussi:

Voir aussi:

Télécharger ce contenu au format Epub

Lire les commentaires

Katal, catalogue de fichiers

26 octobre, 2015 - 11:20

Katal est un projet GPLv3/Python3/CLI/Linux-Windows : il permet de créer un catalogue de fichiers à partir de différentes sources, en filtrant les fichiers à récupérer, en les renommant à la volée; on peut alors étiqueter les fichiers obtenus.

Le répertoire de destination contient les fichiers du catalogue, une base de données, un dossier .trash et un dossier pour les logs. J'ai l'habitude de placer dans le répertoire de destination le script katal.py; ainsi, je déplace le catalogue en même temps que l'outil qui me permet de le gérer.

De l'aide est disponible dans le fichier README.md : voyez ici.
Voyez aussi le résultat de $ katal -h .

Sommaire L'histoire

Un copain m'avait demandé de l'aider à classer des dizaines de milliers de photos tirées de milliers de répertoires différents, mélangées avec toutes sortes de fichiers (textes, vidéos); beaucoup de photos identiques portaient des noms différents.

Je voulais obtenir un catalogue des fichiers :

  1. qui avaient l'extension de fichiers image (.jpg, .tiff, …) ;
  2. qui avaient une taille supérieure à 2 Mo pour éliminer les vignettes ;
  3. sans doublon (=aucun fichier ayant le même contenu qu'un autre) ;
  4. avec la possibilité d'étiqueter (=avec des tags) les images ;
  5. avec la possibilité de renommer les fichiers ;
  6. avec des fichiers de logs verbeux pour garder la trace de mes essais et de mes erreurs ;
  7. le tout sur Linux/Mac/Windows puisque je passais d'un ordinateur à l'autre.
Installation $ pip install katal

katal est en effet hébergé sur Pypi.

mais aussi :

$ wget https://raw.githubusercontent.com/suizokukan/katal/master/katal/katal.py

… puisque le projet Katal tient en un seul fichier, katal.py, qui peut être placé dans le répertoire de destination.

Utilisation Créer le répertoire de destination, qui contiendra les fichiers du catalogue : $ katal --new=destdir

… et accepter de télécharger le fichier de configuration par défaut qui sera placé dans le répertoire de destination (dans un sous répertoire nommé .katal)

Placez-vous ensuite à l'intérieur du répertoire de destination. $ cd destdir

Vous pouvez voir ce que pense Katal de ce répertoire en tapant :

$ katal --infos À l'intérieur du répertoire de destination, modifier le fichier de configuration ./katal/katal.ini : Changer la source, par exemple : [source] path : ~/masource/photos/

Katal recherchera de manière récursive dans ce répertoire.

Changer le nom des fichiers qui seront copiés dans le répertoire de destination, par exemple : [target] name of the target files : INTTIMESTAMP_SIZE__DATABASE_INDEX.SOURCE_EXTENSION2

… pour avoir des fichiers du type 1445584562_123__1.jpg (=timestamp du fichier source, taille du fichier source, index dans la base de données du répertoire de destination)

Changer la fonction d'évaluation permettant de faire le tri entre les fichiers de la source, par exemple : … si vous voulez les fichiers python du répertoire source : [source] eval : sieve1 [source.sieve1] name : .*\.py$ … si vous voulez les fichiers python du répertoire source faisant plus d'un mégaoctet : [source] eval : sieve1 [source.sieve1] name : .*\.py$ size : >1000000 … si vous voulez les fichiers python du répertoire source faisant plus d'un mégaoctet OU les .jpg : [source] eval : sieve1 or sieve2 [source.sieve1] name : .*\.py$ size : >1000000 [source.sieve2] name : .*\.jpg$ Tester le fichier de configuration ./katal/katal.ini : $ katal --select

Katal vous montre alors ce qui se passerait si vous acceptiez la copie de la source vers la destination. Par exemple :

+ selected /home/suizokukan/projets/dysodos/dysodos.py (file selected #1) - discarded "/home/suizokukan/projets/dysodos/.git/description" : incompatibility with the sieves - discarded "/home/suizokukan/projets/dysodos/.git/info/exclude" : incompatibility with the sieves [...] o everything ok : no anomaly detected. See details above. o size of the selected file(s) : 3877 bytes o number of selected files (after discarding 36 file(s)) : 1, 2.70% of the source files. o required space : 3877 bytes; available space on disk : ~35.62 Go (35619852288 bytes) (ok) o e.g. … "/home/suizokukan/projets/dysodos/dysodos.py" would be copied as "/home/suizokukan/projets/katal/target2/5474c904__0.py" . Do you want to add the selected files to the target dictionary (".") ? (y/N) Si vous êtes d'accord, répondez oui en tapant 'y' + entrée : … (1/1) copying "/home/suizokukan/projets/dysodos/dysodos.py" to "/home/suizokukan/projets/katal/target2/5474c904__0.py" . = all files have been copied, let's update the database… = = … database updated =

Katal affiche automatiquement le contenu du catalogue (ici, un seul fichier) :

= informations about the "." (path: "/home/suizokukan/projets/katal/target2") target directory = +--------------------+--------------------+------+--------------------+------------------+ | hashid/base64 | name | tags | source name | source date | +--------------------+--------------------+------+--------------------+------------------+ | […]f8SfE3Tzc+UP0s= | […]/5474c904__0.py | | […]odos/dysodos.py | 2014-11-25 19:23 | +--------------------+--------------------+------+--------------------+------------------+ Vous pouvez à tout moment afficher ces informations sur le catalogue à l'aide de l'option -ti : $ katal -ti

(ti : target informations)

======================================================= === Katal v.0.1.3 (launched at 2015-10-25 17:19:06) === ======================================================= = target directory given as parameter : "." (path : "/home/suizokukan/projets/katal/target2") = no config file specified on the command line : let's search a config file in the current directory… * config file name : "/home/suizokukan/projets/katal/target2/.katal/katal.ini" (path : "/home/suizokukan/projets/katal/target2/.katal/katal.ini") … config file found and read (ok) = source directory : "~/projets/dysodos" (path : "/home/suizokukan/projets/dysodos") = informations about the "." (path: "/home/suizokukan/projets/katal/target2") target directory = +--------------------+--------------------+------+--------------------+------------------+ | hashid/base64 | name | tags | source name | source date | +--------------------+--------------------+------+--------------------+------------------+ | […]f8SfE3Tzc+UP0s= | […]/5474c904__0.py | | […]odos/dysodos.py | 2014-11-25 19:23 | +--------------------+--------------------+------+--------------------+------------------+ === exit (stopped at 2015-10-25 17:19; total duration time : 0:00:00.004414) === Vous pouvez enfin étiqueter un ou plusieurs fichiers : Si vous voulez ajouter le tag "mytag" aux fichiers Python : $ katal --addtag=mytag --to=*.py Si vous voulez ajouter le tag "mytag" à un seul fichier : $ katal --addtag=mytag --to=5474c904__0.py Vous pouvez aussi :
  • supprimer toutes les étiquettes d'un ou plusieurs fichiers (--rmnotags) ;
  • supprimer un fichier ou plusieurs fichiers du catalogue (--targetkill) ;
  • supprimer les fichiers qui n'ont pas de tags (--rmnotags) ;
  • supprimer de la base de données les fichiers qui n'existent pas dans le répertoire de destination (--cleandbrm).

Et d'autres choses encore, accessibles dans le fichier README.md ou en consultant le résultat de $ katal -h .

Et la suite ?

J'ai essayé d'écrire du code lisible par tous : pylint à 10, documentation abondante, commentaires et documentation en anglais…
Je serais ravi de vos commentaires et de vos suggestions d'amélioration !

Télécharger ce contenu au format Epub

Lire les commentaires

Du matériel libre qui a besoin de vous !

26 octobre, 2015 - 11:16
DomoTab

Après la campagne de financement du projet DomoTab (merci aux donateurs sur Ulule) nous revenons vers vous pour vous tenir au courant de l'avancement du projet. Pour mémoire, l'objectif du projet DomoTab est de créer une plateforme matérielle suffisamment ouverte permettant de créer une installation domotique « complète ».

Plus vite que les brevets !

En effet, le choix a été pris de migrer progressivement vers du matériel complètement libre (licence CC-by-sa au lieu de CC-by-sa-nc) et sans brevets, même quand nous avons de bonnes idées (si si, ça arrive). Seulement, pour que ce soit viable, il va nous falloir deux choses : des clients (classique), mais aussi que certaines informations soient publiées suffisamment largement pour éviter le dépôt de brevet par un tiers car une fois rendue publique, une technologie ou une innovation n'est plus brevetable.

Cela concerne actuellement deux sous-parties du projet DomoTab, à savoir l'interrupteur multi-fonction et le module de contrôle pour la gestion d'énergie.

N'hésitez donc pas à consulter les articles publiés sur mon site (en particulier les deux ci-dessus), et surtout à en parler sur vos blogs ou autres sites en partageant les articles.

Bon, d'accord, cela nous fera aussi de la pub, mais il faut savoir ce que l'on veut : des brevets, ou du matériel libre :)

À noter que ces deux produits sont encore à l'état de prototype (et donc pas en vente), mais c'est maintenant qu'il faut les protéger !

Promis, nous vous tiendrons au courant de l'avancement, via les news sur notre site, et sur mon profil Google+ (Nathael Pajani)
(Oui, je sais, Google, vie privée, Framasoft, …).

Télécharger ce contenu au format Epub

Lire les commentaires

ddrescue, dd_rescue, myrescue : récupérer ses données après un crash disque

25 octobre, 2015 - 23:26

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.

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 :

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

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.

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  

É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…


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

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) :

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


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

Bon d'accord :

Enfin, vous verserez des larmes de joies :

(À 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 !
  • 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.
  • yapuka Chkdsk C: /f /r (n'oubliez pas le deux-points !). 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

  • 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

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  
  • 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.

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. 

Télécharger ce contenu au format Epub

Lire les commentaires

LibreIdea.org fête son premier anniversaire

25 octobre, 2015 - 18:55

Le projet LibreIdea.org a été lancé en octobre 2014 et se veut être une boite à idées (avec un code libre et une instance de base ayant vocation à diffuser le contenu sous CC By Sa 3.0).

À l'occasion de la première année du projet, le collectif LibreIdea.org en profite pour présenter l'évolution du projet et résumer les actions accomplies grâce à vous.

Nos actions ont pour but d'accompagner l'évolution de la plate-forme, de communiquer et de créer (ou d'améliorer) les outils existants.

Pour nous assister dans la création d'idées, nous développons des COCI (Création d'Outils pour la Création d'Idées). Depuis septembre 2015, un développeur Haskell développe un COCI, qui passera prochainement en phase de test Collaborative keywords mixing.

NdM : au 25/10/2015 le site annonce 223 idées, plus ou moins abouties ou détaillées.

créer, collecter, améliorer et évaluer les idées

Le projet LibreIdea.org :

  • a su montrer que c'était un projet innovant ;
  • est une base de données de problématiques (rq: research questions en anglais) et d'idées (id). Un 3e espace appelé projet (pj) permet de mettre en relation les personnes qui souhaitent se fédérer autour de projets issus des idées ;
  • favorise l'accueil et la mise en réseau de toutes les sciences et domaines ;
  • travaille avec des outils d'intelligence collaborative. Les problématiques apportées par la communauté occupent une place importante ;
  • utilise des logiciels libres ;
  • soutient l'accès aux savoirs. À la différence des politiques actuelles sur les brevets, les idées traitées ici sont améliorées constamment et votre paternité conservée.

Nos prochaines actions :

  • La création d'un logo Libreidea et d'une identité visuelle
  • Promouvoir Libreidea auprès de différentes communautés associatives, scientifiques, etc.
  • Mettre en oeuvre d'autres COCI
  • Accueillir un développeur pour mettre en place un système d'évaluation des idées

Grâce à votre participation et vos idées LibreIdea.org peut devenir un espace de référence, ouvert, comme l'est aujourd'hui wikipédia, mais aussi devenir une forge de créativité avec les citoyens.

Le collectif Libreidea.org

Télécharger ce contenu au format Epub

Lire les commentaires

Atelier Linux - Jeudi 29 octobre 2015 18h15 - Nîmes

24 octobre, 2015 - 22:05

A tous ceux qui sont intéressés par l'installation de Linux, Gard-Linux propose un prochain rendez-vous:

  • Quand: jeudi 29 octobre 2015 de 18h15 à 20h45

  • Où : Salle de la Cité Séguier, 1 Place Eliette Berti, 3000 Nîmes (au rez-de-chaussée à droite sur la place, au croisement de la rue Pierre Curie et de la rue Sainte-Perpétue, adresse disponible sur OpenStreetMap).

Au programme:

  • Atelier GNU/Linux:
    • si vous voulez redonner vie à votre ordinateur
    • si vous voulez d'abord voir à quoi ça ressemble après l'installation
    • si vous voulez un peu plus de détails sur l'installation, voire la désinstallation
    • et si vous voudriez aussi savoir ce qu'on peut faire, avec Linux
  • Alors n'hésitez pas, c'est l'atelier qu'il vous faut !
    • des présentations, des démonstrations
    • des conseils
    • des adresses pour aller plus loin

Quelques exemples de distributions Linux: Ubuntu, Linux Mint, OpenMandriva, Debian. N'hésitez pas à aller consulter leurs pages web ; elles vous donneront un premier aperçu.

Atelier ouvert à tous ! Alors si vous avez des questions ou simplement si vous voulez découvrir ce qu'on peut faire avec le système d'exploitation GNU/Linux, n'hésitez plus, on vous attend Jeudi !

Télécharger ce contenu au format Epub

Lire les commentaires

Publication de Pastèque version 6

23 octobre, 2015 - 19:55

Pastèque est une suite logicielle pour gérer un ou plusieurs points de vente (point of sales, POS). Avec le matériel adéquat (imprimante thermique, lecteur de carte bleue…), elle permet de gérer tout point de vente : restaurant, épicerie, bar, librairie…

Début octobre, la version 6 du logiciel a été publiée. Cette nouvelle version apporte des changements majeurs dans la version Android du logiciel. Beaucoup de choses ont eu lieu autour de la gestion du projet : passage à Github, publication sur le Play Store de Google, etc.

Mais le gros de l’actualité est législatif, la réglementation autour des logiciels de caisse enregistreuse (et de comptabilité) étant débattue au travers du projet de loi de Finances 2016.

Sommaire Fonctionnellement, quoi de neuf ? Pasteque-Desktop, the walking dead

Pasteque-Desktop est un logiciel de front office écrit en Java. Il est le descendant d’OpenBravo POS sur lequel se basait originellement Pastèque, il partage une furieuse ressemblance visuelle avec son aîné. Et c’est tout. L’administration a été ôtée, il va chercher ses données sur Internet en mode synchrone (avec support des pertes de connexion et tout)

On a accéléré à fond le démarrage : autour de 8 secondes pour un set de données normal, contre une quarantaine précédemment.
On a corrigé quelques soucis de droits d’exécution par défaut dans le fichier compressé.

Pastèque-Server, de petites améliorations

Pastèque-Server est un logiciel de back office écrit en PHP. Il mélange l’interface d’administration et l’API sur laquelle repose le projet.

  • Il est possible à présent de définir des fournisseurs par produits, ce qui permet de faire des statistiques de ventes par origine. C’est utile notamment dans le dépôt-vente.
  • Les comptes clients connaissent un peu de nouveau, avec notamment l’application de grilles tarifaires personnelles.
  • Quelques fonctions ont été ajoutées dans l’API : modes de paiement configurables, un embryon de fidélisation etc.
Pastèque-Android, le cœur des évolutions

Pastèque-Android est un logiciel de front office écrit en Java pour Android. Il a été l’objet de toutes les attentions. Pour être tout à fait clair, c’est une question de moyens : on a été payés pour faire tout ça. C’est beau les modèles économiques du logiciel libre quand ils arrivent à générer tant d’avancées sur du code.

Alors, qu’est-ce qu’on a de nouveau ?

L’interface a été entièrement repensée. On passe d’un logiciel old school à quelque chose de plus moderne. Plus moderne et plus ergonomique. On passe de 3 mouvements pour réaliser l’encaissement à 2.

On a un progrès fonctionnel énorme. Bon, parfois ça rattrape uniquement le retard sur Pastèque-Desktop (passer des réductions sur des produits par exemple), mais pas mal de choses sont des nouveautés que ce mort-vivant de Pastèque-Desktop n’exploite pas comme les moyens de paiement configurables, la fidélisation, etc.

Et l’avenir technique ?

On a eu une petite réunion technique à la Coroutine, à Lille, début septembre pour savoir où on allait. On y était à 7 à discuter de problèmes terre à terre tout autant qu’à rêver éveillé.

Pastèque-Desktop, on débranche ?

Il n’y a plus de demandes commerciales sur Pastèque-Desktop ou du moins très peu. Et le très peu tient sur les derniers avantages du logiciel, comme le langage de script embarqué.

Cependant on l’aime bien, sans lui on contraint à utiliser des tablettes à durée de vie limitée ou à installer Android sur du x86 ce qui pue de la gueule.

On va chercher à lui trouver un remplaçant. En Qt ? En HTML5 ? On ne sait pas encore.

En attendant, la décision est qu’on fait du petit entretien jusqu’au jour où des changements radicaux dans l’API amèneront sa mort.

Pastèque-Server, faut casser

L’API de Pastèque est le cœur du projet. Si pour gagner du temps on a mélangé API et Backoffice, faut arrêter.
On s’oriente à terme vers deux logiciels : Pastèque-Admin (BackOffice) et Pastèque-API (API)

On a pour principe de ne pas repartir de 0. Les nouveaux logiciels s’intégreront avec Pastèque-Server pour ne pas avoir de recul fonctionnel.

Les évolutions continuent à être réalisées sur Pastèque-Server en attendant les nouveaux bébés.

Pastèque-Android, rien à dire

On continue d’avoir des demandes sur Pastèque-Android. On est dans une phase de fiabilisation, tout roule.
On a quand même un souci : l’intégration du matériel de caisse (balances, afficheurs clients, imprimante thermiques classiques), etc. Ça nous amène à …

Pastèque-Gear, le nouveau projet

Si on devait sortir un Pastèque-HTML5 ou si on veut que Pastèque-Android puisse accéder à du matos USB (ou pire, RS232), il nous faut une solution.

La solution c’est Pastèque-Gear qui sera un boîtier (Raspberry Pi ?) auquel sera branché le matériel. Pastèque-Gear gère les pilotes & Cie et se présente aux autres logiciels sous forme d’une API à partir de laquelle on peut réaliser affichages, pesages, scannages et autres impressages.

On ne s’est pas vraiment arrêtés sur la technologie utilisée. Mais on ne devrait pas couper au développement en C pour les pilotes. Des contributions noyau pour Pastèque, ça aurait de la gueule.

Et en dehors de ça ?

Pastèque est essentiellement porté par Scil qui pour toute sympathique et auto-gérée qu’elle soit n’en reste pas moins une société qui vise à payer ceux qui travaillent pour elle.

Des intégrateurs

Scil est de plus en plus pris par la programmation de nouvelles fonctionnalités. On gère de moins en moins facilement le support utilisateur et l’installation de caisses.
Alors on a commencé à avoir des intégrateurs, le premier d’entre eux est Délice Service à Toulouse.

On veut généraliser ce modèle : Scil ne doit à terme faire que du code.

Du prix libre

Quand on se prend une question dont la réponse est triviale, on propose toujours un prix libre. Nous sommes extrêmement étonnés du retour positif de cette expérience. Le seul organisme qui n’ait pas payé quelque chose s’en est presque excusé ; la moyenne versée est supérieure à notre ancien tarif.
Il arrive qu’on reprenne foi en l’humanité :)

Du fundraising ?

On a des demandes régulières. Deux particulièrement : réaliser l’intégration des TPE Ingenico (majoritaires en France) et de balances connectées.

On va essayer, pour voir, un modèle économique par fundraisings successifs. LinuxFr sera évidement tenu informé par journal des lancements de collectes de fonds.

Last but not least, projet de loi finances 2016 en France

Fin 2013, le législateur donnait un grand tour de vis sur les éditeurs de logiciels de caisse enregistreuse et des logiciels de comptabilité. On a été un peu lents au réveil, c’est uniquement début 2015 qu’on s’est penché sérieusement sur le sujet.

Rien de bien dramatique alors : notre logiciel devait répondre à deux trois obligations sous peine de gros soucis.

Mais on a eu vent d’une volonté d’aller plus loin et de rendre les éditeurs non pas seulement responsables de ce qu’ils publient, mais de ce qu’on trouve chez leurs utilisateurs imposant notamment une condition d’inaltérabilité du logiciel.

Scil est en contact avec son député de circonscription, Bernard Roman, pour veiller à ce que ça ne se transforme pas en obligation de code source fermé. On demande simplement que la clause de co-responsabilité saute si l’utilisateur a effectué des modifications au logiciel sans en référer à l’éditeur.

Un travail est en cours sur la liste de l’April.

Autres éditeurs de logiciels de caisse enregistreuse ou de comptabilité, contactez-moi. On sera plus audibles ensemble.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie d’Ubuntu 15.10

23 octobre, 2015 - 19:51

Sortie le 22 octobre 2015, Ubuntu 15.10 est la vingt-troisième version d’Ubuntu. Il s'agit d'une version classique, qui sera maintenue pendant 9 mois. Son nom de code est Wily Werewolf, soit le « loup garou rusé » dans la langue de Molière.

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

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

Sommaire Généralité
  • Noyau 4.2 ;
  • Mesa 11 ;
  • systemd 225
  • La majeure partie des composants de GNOME passe en 3.16 ;
  • GCC 5.2.1
  • Qt 5.4.2 ;
  • LibreOffice 5.0

Gestionnaires de bureau Unity 7

Comme de coutume depuis maintenant plusieurs versions, l'environnement de bureau par défaut évolue assez peu. En dehors de quelques tâches de maintenance et de l'habituelle fournée de correctifs divers, on pourra noter principalement la refonte des barres de défilements.

Avec la version 11.04 il y a quatre ans et demi, alors même que Unity devenait le bureau par défaut, apparaissaient les fameuses « barres de défilements en surimpression ».

Développée par Canonical, cette fonctionnalité permet d'économiser de l'espace dans les applications en ne faisant apparaître les barres de défilement qu'en surimpression lorsque le pointeur de la souris s'approche.

Depuis sa version 3.16, GTK+ a intégré une solution similaire mais distincte du point de vue de l'implémentation. Afin d'améliorer la compatibilité avec GNOME et de minimiser les coûts de maintenance, il a été décidé d'utiliser les barres de GTK+ et de supprimer les anciennes.

Notez cependant que les anciennes barres de défilements restent actives pour les applications GTK+2.

Kubuntu - KDE SC

Ici non plus, pas de grande révolution : Kubuntu se stabilise suite au passage au bureau Plasma 5 par défaut dans la version précédente. Celui-ci a d'ailleurs gagné en fluidité dans cette nouvelle mouture.

De nouvelles applications ont été portées vers KDE Frameworks 5 et Qt 5. On pourra citer le navigateur de fichiers Dolphin, le gestionnaire d'informations personnelles Kontact, le gestionnaire d'archives Ark, des jeux comme Picmi et d'autres encore.

Au delà de ça, de très nombreux bugs ont été corrigés.

D'un point de vue plus organisationnel, Jonathan Ridell a annoncé sa démission du poste de release manager de Kubuntu. Pour rappel, un conflit l'avait opposé au conseil de la communauté Ubuntu sur divers sujets liés à la gestion d'Ubuntu par Canonical. Il est, à vrai dire, difficile de se faire une idée claire et objective de la situation depuis l'extérieur, car de nombreux échanges entre les différents protagonistes ont eu lieu en privé. Un résumé de l'affaire ainsi qu'un débat enflammé peut être consulté dans ce journal.

On notera cependant que cette démission semble aujourd'hui rassurer quelque peu en ce qui concerne l'avenir de Kubuntu, dont la communauté semble déterminée à poursuivre le développement.

Xubuntu - Xfce

Cette nouvelle version voit l'inclusion de LibreOffice Calc et Writer par défaut en lieu et place de Gnumeric et Abiword. Un thème particulier a été appliqué à LibreOffice afin que ses applications s'intègrent harmonieusement avec le reste du bureau.

L'application « Xfce Panel Switch » fait également son apparition. Elle permet de gérer facilement différentes dispositions du bureau, en passant de l'une à l'autre d'un simple clic ainsi qu'en permettant l'importation et l'exportation d'une configuration spécifique.

Cinq dispositions sont intégrées par défaut. L'une fait ressembler le bureau à GNOME 2, l'autre à Windows. Une correspond évidemment à la disposition par défaut actuelle de Xfce, tandis que deux autres reprennent l'ergonomie de versions précédentes.

Ubuntu GNOME

À l’occasion de cette version, Ubuntu GNOME adopte un nouveau logo :

Au delà de la mise à jour de la plupart des composants vers GNOME 3.16, on notera qu'il est désormais possible d'installer une session expérimentale se basant sur Wayland. Pour ce faire, il suffit d'installer le paquet gnome-session-wayland puis de sélectionner la session en question depuis l'écran de connexion. Attention, seuls les pilotes graphiques libres sont cependant gérés, pour le moment.

Ubuntu Next (téléphones, tablettes, mais pas que)

Canonical investit massivement dans Ubuntu Touch, il s'agit d'une distribution dérivée à part entière, qui vit sa vie en parallèle de l'Ubuntu que nous connaissons tous.

Contrairement à sa distribution mère, Ubuntu Touch est une quasi rolling-release : toutes les 6 semaines, une mise à jour majeure est proposée sur tous les terminaux. Chaque version est nommée en interne « OTA », pour over the air.

Au moment de la sortie d'Ubuntu 15.10, nous en étions à l'OTA 7, soit la septième itération depuis la sortie des premiers téléphones en février dernier.

Évolutions des six derniers mois

Quatre OTA se sont succédées depuis Ubuntu 15.04. Parmi les nouveautés, on pourra noter :

  • Migration vers un système basé sur Ubuntu 15.04, associé à un PPA dédié. Pas de migration vers Ubuntu 15.10 prévue, la prochaine étape sera Ubuntu 16.04, probablement avant même sa sortie officielle.
  • Gestion des conversations de groupe avec les MMS
  • Possibilité d'importer les contacts de la carte SIM
  • Gestion de la rotation généralisé à toutes les applications par défaut
  • Amélioration de l'autonomie (surtout pour le Meizu MX4)
  • Les applications doivent maintenant demander l'autorisation pour pouvoir utiliser la caméra et pour enregistrer du son
  • Les applications web peuvent maintenant jouer du son
  • Gestion du hotspot WiFi
  • Possibilité de rechercher dans une page Web ainsi que dans l'historique du navigateur
  • Gestion de l'authentification basique HTTP dans le navigateur
  • Le navigateur est maintenant confiné par AppArmor, améliorant ainsi la sécurité
  • Désactivation par défaut de la remontée automatique des rapports de crashs, qui provoque parfois un gel de l'interface pendant de longues secondes avant que celle-ci ne soit redémarrée. Les utilisateurs avancés sont invités à réactiver cette option dans les paramètres.
  • Nouveaux sons
  • Nouvelles icônes
  • Nouvelle animation de démarrage
  • De très nombreuses corrections de bugs
Ce qui est dans les tuyaux…

En ce qui concerne la convergence, à savoir l'adaptation automatique de l'interface et de l'ergonomie en fonction du format utilisé (téléphone, tablette, clavier/souris…) les choses prennent forme. Un support partiel est d'ores et déjà implémenté. Vous pouvez dès maintenant expérimenter ce qui se passe lorsque vous appairez une souris bluetooth à votre Ubuntu Phone par exemple. Mais le premier support officiel et stabilisé devrait apparaître avec l'OTA 8 ou 9, soit entre mi-novembre et début janvier.

Dans cette optique, de nombreuses applications par défaut ont été et sont en cours de re-création afin de les rendre convergentes. À titre d'exemple, vous pouvez voir cette vidéo qui montre une préversion de la future nouvelle application Musique.

Au delà de la convergence, les prochaines OTA devraient voir l'intégration du support des VPN, une optimisation du temps de chargement des applications, la mise à jour de la pile Bluetooth et bien d'autres choses encore.

À moyen terme, nous attendons donc la migration du système vers une base Ubuntu 16.04. Cette migration majeure devrait théoriquement se faire en même temps que celle vers Ubuntu Core/Snappy ainsi que systemd.

Et la suite ? En route pour Ubuntu 16.04 LTS

Sur son blog, Mark Shuttleworth (le fondateur d'Ubuntu et de Canonical) a dévoilé le nom de code de cette prochaine version : Xenial Xerus. Cette version « Xerus hospitalier », qui sortira en avril 2016, sera particulière : elle sera en effet supportée à long terme (LTS), c'est à dire cinq ans au lieu des neuf mois habituels.

S'agissant donc de la version d'Ubuntu recommandée en entreprise et sur les systèmes critiques, il y a fort à parier qu'il n'y aura pas de révolution durant ce cycle de développement. La priorité va être mise sur la fiabilité et le peaufinage de toutes les nouveautés apparues ces deux dernières années, depuis Ubuntu 14.04 LTS.

Télécharger ce contenu au format Epub

Lire les commentaires

Haproxy 1.6

23 octobre, 2015 - 11:17

Haproxy est un serveur proxy et un répartiteur de charge pour les contraintes de haute-disponibilité. Écrit en C, il a la réputation d'être efficace, simple et rapide. Après 16 mois de développement la nouvelle branche 1.6 est la nouvelle stable, par conséquent une nouvelle branche 1.7 a été crée pour tout nouveau développement. De nombreux ajouts ont vu le jour depuis la version 1.5 et d'autres contributeurs ont rejoint le projet. Actuellement, Haproxy est utilisé par de nombreux sites et services web, tels que Github, Twitter, StackOverflow, Reddit, ainsi que Amazon Web Service.

Nouveautés
  • Intégration de Lua.
  • Capture slots.
  • Nouvelles régles HTTP.
  • Nouveaux converters.
  • Détection d'appareils mobiles.
  • Déclarations de variables.
  • Traitement du corps d'une requête HTTP.
  • Partage de connection HTTP.
  • Lancement de scripts "health check".
Intégration de Lua

C'est clairement la plus importante nouveauté de cette release, elle apporte la possibilité d'étendre les possibilités de base d'Haproxy sans avoir à écrire des modules en C. Les niveaux où Lua peut intervenir :

  • Action.
  • Service.
  • Sample / Fetch et converters.

Cela dit, cela requiert d'avoir installé Lua > 5.3.

Exemple utilisant le module lua MD5

haproxy.cfg:

global ... lua-load content.lua ... frontend http-in ... mode http http-request use-service lua.content ...

content.lua :

core.register_service("content", "http", function(applet) local md5 = require("md5") local content = '{"myjson":1}' local contentchksum = md5.sumhexa(content) applet:set_status(200) applet:add_header("Content-MD5", contentchksum) applet:add_header("Content-Type", "application/json") applet:start_response() applet:send(content) end) Capture slots

C'est la possibilité de stocker une donnée en lui attribuant un identifiant comme suit

frontend myfrontend ... declare capture request len 128 http-request capture req.hdr(User-Agent) id 0 ... backend mybackend ... http-response set-header X-User-Agent %[capture.req.hdr(0)] Nouveaux converters

Trop nombreux à énumérer, une liste complète est présentée ici.

Détection d'appareil mobiles

Haproxy supporte désormais la détection d'appareils mobiles via deux bibliothèques tierces, 51 degrees ou DeviceAtlas via l'User-Agent, ou tous les entêtes HTTP via un converter ou un sample / fetch.

Exemple de configuration

global #### 51 degrees 51degrees-data-file /etc/51Degrees-Premium.dat 51degrees-property-name-list IsMobile DeviceType 51degrees-property-separator , 51degrees-cache-size 4096 #### DeviceAtlas deviceatlas-json-file /etc/deviceatlas.json deviceatlas-property-separator , frontend http-in bind *:8881 default mybackend #### 51 degrees #### with sample / fetch http-request set-header X-51D-IsMobileDeviceType %[51d.all(IsMobile,DeviceType)] #### with converter http-request set-header X-51D-IsMobileDeviceType %[req.fhdr(User-Agent),51d.single(IsMobile,DeviceType)] #### DeviceAtlas #### with sample / fetch http-request set-header X-DeviceAtlas-Data %[da-csv-fetch(primaryHardwareType,osName,osVersion,browserName,browserVersion)] #### with converter http-request set-header X-DeviceAtlas-Data %[req.fhdr(User-Agent),da-csv-conv(primaryHardwareType,osName,osVersion,browserName,browserVersion)] Déclaration de variables

Il existe maintenant la possibilite de déclarer (et d'utiliser) une variable comme suit :

... http-request set-var(txn.whereitcomesfrom) req.hdr(Referer) ... http-response set-header X-WhereitComesFrom %[var(txn.whereitcomesfrom)] Traitement du corps d'une requête HTTP

Via la nouvelle option http-buffer-request (niveau frontend ou backend), il est maintenant possible d'attendre que la requête soit complète avant tout traitement ce qui permet par exemple de traiter en fonction du corps de la requête.

Partage de connexion HTTP

Via le nouveau mot-clé http-reuse, il est possible pour plusieurs clients de partager la même connection pour un serveur. Plusieurs politiques sont possibles : never, safe, aggressive, always.

Lancement de scripts « health check »

Via le mot clé external-check, on peut vérifier l'état avec un script externe.

Exemple

global external-check backend mybackend external-check command <my command>Télécharger ce contenu au format Epub

Lire les commentaires