Syndiquer le contenu
Mis à jour : il y a 21 heures 6 min

Nouvelles de ZeMarmot, GIMP et GIMP Motion (greffon d’animation dans GIMP)

17 août, 2017 - 11:24

Un peu d’info sur les évolutions de ZeMarmot (déjà discutées sur LinuxFr.org), sur la partie logicielle et artistique.

Ce ne sont pas forcément des nouvelles pour ceux qui suivent l’avancée du projet sur le site Studio Girin, la liste de diffusion ou les réseaux sociaux. Mais pour tous ceux qui ne nous connaissent pas beaucoup ou ne suivent pas, j'espère que cela vous plaira.

Sommaire Logiciel libre GIMP core

Comme d’hab’, je reste un des contributeurs majeurs de GIMP avec 171 commits en 2017 (654 en tout, faisant de moi le 5e plus gros contributeur historique à ce jour) sur la branche master, et quelques commits mineurs sur babl et GEGL. Bien sûr, je fais aussi de la revue de code régulière (qui a eu pour résultat cette année au moins 18 commits poussés de contributeurs occasionnels), des rapports de bogues, des réponses aux bogues d’autrui, du suivi, de la maintenance, etc.

Mes récentes contributions comportent beaucoup de corrections de bogues, quelques nouvelles fonctionnalités et des détails d’implémentation. Tous ces détails font la différence, surtout maintenant qu’on se rapproche de la sortie de la 2.10. En fait, ces derniers temps, c’est même surtout la somme de tous ces petits détails que l’on améliore qui « m’excite ». Chacune de ces mini‐fonctionnalités à elle seule peut paraître insignifiante, mais toutes ensemble, je trouve vraiment GIMP 2.9/2.10 tellement plus agréable à utiliser et efficace par rapport à la 2.8, que cette version s’annonce pour moi comme une avancée majeure. N’hésitez pas à jeter un œil sur le journal de mes contributions pour avoir plus de détails.

Nous devrions bientôt sortir une version de développement 2.9.6, ce qui vous donnera une meilleure visibilité, surtout qu’il y a vraiment eu plein de choses super excitantes entre 2.9.4 et 2.9.6 (et pas que de moi ! Nous sommes maintenant trois gros codeurs sur GIMP et les choses se mettent vraiment à bouger énormément).

Un peu de fun avec GEGL et Android

À côté, j’ai commencé à m’amuser avec du développement Android. En particulier, j’ai fait la compilation croisée de glib et GEGL pour Android grâce à mon outil, Crossroad (dont j’avais parlé il y a quelques années ici). Je n’ai eu qu’une seule correction à faire pour rendre GEGL compilable pour Android (un commit sur babl, la bibliothèque de conversion de pixels de GEGL).
J’en parlerai probablement encore quand je sortirai Crossroad 0.8, la version qui permettra officiellement la compilation croisée pour toutes les plates‐formes prises en charge par Android (ARM, x86, MIPS, en 32 et 64 bits), car pour l’instant c’est fait avec la version de développement de Crossroad (mais ça marche déjà très bien ! Testé sur l’émulateur Android, mais aussi sur un vrai téléphone).

En attendant, je me suis amusé avec une application Android qui peut appliquer diverses opérations GEGL sur une image. L’application n’a pas pour but d’être complexe pour le moment et me sert surtout à expérimenter l’usage de ces bibliothèques libres sur des machines portables. Vous pouvez tout de même jeter un œil au code, si vous voulez, c’est libre ! :-)

Très franchement je ne sais pas encore où cela me mènera. C’est beaucoup d’expérimentation et je le fais surtout parce que ça m’amuse. Certains vont tout de suite s’imaginer GIMP pour Android, j’en suis sûr. ;-)
Après tout, une version Android de GIMP est clairement une des fonctionnalités demandées régulièrement. J’y ai pensé aussi, bien sûr (il va sans dire, ça serait cool d’avoir GIMP sur les appareils portables !), mais je ne vois absolument pas cela comme une possibilité à court ou moyen terme. GIMP pourrait sûrement être compilé pour Android, là n’est pas le problème, mais son interface n’est clairement pas pensée pour être utilisée sur de petits périphériques. Je sais qu’il y aurait beaucoup de choses à revoir et il est même fort probable qu’il puisse être bien plus intéressant de faire une nouvelle interface graphique à partir de zéro, basée sur GEGL. D’un autre côté, pour travailler sur des tablettes, il y a probablement quelque chose d’intéressant à faire.
Ne retenez donc pas votre respiration en vous imaginant du GIMP pour Android dans un futur proche. Néanmoins, oui, c’est une possibilité très réelle à terme comme résultat de mes expériences. C’est vrai. :-)

GIMP Motion

Début juillet, j’ai publié mon travail en cours sur notre greffon (156 commits additionnels à ce jour, qui ne sont pas encore dans la branche master) pour ajouter la prise en charge d’animations de qualité professionnelle avec GIMP. Le code est donc visible publiquement comme branche du dépôt de GIMP. Il n’est pas intégré encore à la branche master car je considère vraiment cela comme du travail en cours, avec son lot de bogues connus et inconnus et de changements que je fais dessus régulièrement. Cela ne nous empêche pas de l’utiliser quotidiennement (enfin surtout Aryeom, bien sûr), sans pour autant le considérer comme du travail fini et donc disponible dans une version « stable » de GIMP.

Pour l’occasion, j’ai publié deux vidéos pour introduire l’utilisation de base du greffon, lequel présente deux modes : un mode storyboard (que j’appelle aussi « animation simple », car ce serait typiquement le mode classique pour les gens qui font des GIF/WebP animés avec le concept un calque = une image) et un mode animation traditionnelle pour des animations plus complexes où chaque image sera une composition de plusieurs calques. Les deux vidéos sont accompagnées d’un message explicatif qui décrit un peu mieux le contenu de la vidéo et le futur du greffon (surtout le second message) :

En deux mots, pour ceux qui auront la flemme de lire les articles : dans l’avenir, ce greffon permettra de créer des animations composées de nombreux calques, avec animations de caméra (zooms, panoramique et inclinaison rapide, rotations…), animations d’effets (lumières, reflets, coloration, flous, déformation de caméra…). Tout effet GEGL pourrait être animé, ce qui permettra des animations avancées en quelques clics, ainsi que du motion graphics, etc.

Une des avancées indirectes apportée à GIMP par le développement de ce greffon, c’est de rendre libgimp (la bibliothèque utilisée par les greffons pour interagir avec GIMP) enfin thread‐safe, puisque j’en ai eu besoin et j’ai donc modifié GIMP pour travailler plus aisément en multi‐thread dans des greffons (seule ma branche possède ce changement pour le moment). Ce sera donc une autre amélioration dont bénéficiera l’ensemble de l’écosystème de greffons de GIMP.

Le film « ZeMarmot »

Sur le processus de production d’un film d’animation, vous serez peut‐être intéressé par les articles suivants.

De l’animatique à l’animation

Nous avons décrit les étapes de préproduction à production, en expliquant le passage du storyboard à l’animatique puis au keyframing et enfin à l’animation, illustré par une vidéo montrant les diverses étapes côte‐à‐côte.

Design

Nous avons publié un article sur le design d’arrière‐plans, en prenant le terrier de ZeMarmot comme base, à partir de nos photos de recherche sur terrain.

Et bien plus…

Bien sûr, il y a plus au niveau artistique, mais comme à notre habitude, nous essayons de garder un peu de mystère autour de la production pour ne pas vous gâcher le plaisir du premier visionnage. Un peu de patience… ;-)
Nous divulguons ceci dit un peu plus à nos financeurs Patreon/Tipeee, comme récemment la première scène animée (et on peut donner les liens à ceux qui ont contribué autrement ; si c’est votre cas, envoyez juste un courriel). Mais on met des avertissements clairs « SPOILER », car même en nous soutenant, vous ne voulez pas forcément en voir trop (je sais que personnellement je n’aime pas voir de versions non finies de films, hormis si je travaille dessus).

Financement participatif

Comme à mon habitude, je termine mes nouvelles du projet en rappelant que ZeMarmot est entièrement financé de manière participative. Nous utilisons deux plates‐formes de financement participatif mensuel :

Tout est géré par une association loi 1901 enregistrée en France, LILA, vous pouvez donc aussi faire des donations directement si vous le souhaitez (page de donation de LILA ; n’hésitez pas à envoyer un message en parallèle si vous donnez par ce biais, surtout si vous souhaitez préciser pourquoi vous donnez et nous indiquer votre nom), et sans frais de plate‐forme donc.

À ce jour, le financement du projet existe, mais il ne nourrit pas grand monde, ce qui explique aussi l’évolution bien plus lente du projet que nous l’espérions. Pour tout dire, on a eu quelques baisses de moral plus d’une fois durant lesquelles on s’est demandé si c’était bien raisonnable de continuer.

Si vous appréciez notre travail pour améliorer ou créer du logiciel libre et créer de l’art libre que tout le monde pourra télécharger et visionner, je vous appelle à nouveau pour aider notre projet. Le financement va entièrement dans ces objectifs, en salaires de production du film. Que ce soit pour améliorer les logiciels libres en général, GIMP en particulier, l’édition vidéo ou l’animation 2D libres, peut‐être même me pousser à continuer mes expérimentations de compilation croisée — certes, des objectifs annexes sans rapport direct, mais ces expérimentations sont nées de mon intérêt dans GIMP, donc de ZeMarmot — de bibliothèques libres sur diverses plates‐formes (que ce soit Android, d’autres plates‐formes embarquées, ou autres !) ou parce que vous aimez le concept ou l’histoire de notre film (une marmotte qui voyage et qui est libre), ou bien parce que vous souhaitez nous aider à professionnaliser l’art libre, ou toute autre raison qui vous plaît dans ce que nous faisons, alors vous savez comment nous aider en soutenant le projet. :-)

Et encore une fois, merci à tous ceux qui nous ont soutenus jusque‐là ! Sans vous, ZeMarmot n’existerait pas et tous les trucs dont j’ai parlé plus haut, ainsi que dans divers autres articles, ou encore mes centaines de commits sur GIMP, etc., tout cela n’existerait pas non plus.

Télécharger ce contenu au format Epub

Lire les commentaires

GCompris sort en version 0.80

15 août, 2017 - 10:23

Nous sommes heureux d’annoncer la publication de la nouvelle version de GCompris, le logiciel éducatif pour les enfants de deux à dix ans.

Cette nouvelle version contient entre autres six nouvelles activités, listées dans la suite de la dépêche. GCompris propose plus de 100 activités, dont des jeux, toujours avec un objectif pédagogique. Lecture, mathématiques, sciences, géographie et découverte de l’ordinateur sont les thèmes abordés par ces activités.

Nouvelles activités
  • Une activité de catégorisation d’images :

  • Une activité où il faut, à partir des nombres et des différentes opérations proposées, trouver un nombre donné :

  • Un jeu où l’on doit faire en sorte que l’adversaire place la dernière boule sur une ligne, qui se joue contre l’ordinateur ou un ami :

  • Le jeu de dames en version avec l’ordinateur ou avec un ami :

Plates‐formes prises en charge

Comme pour la précédente version, nous prenons en charge bien évidemment GNU/Linux, pour lequel nous avons des paquets dans plusieurs distributions :

  • Arch Linux ;
  • KaOS ;
  • KDE Neon ;
  • Mageia Cauldron ;
  • OpenSUSE.

Android est aussi pris en charge via le Play Store. Suite à l’ajout du SDK Qt dans F-Droid (https://gitlab.com/fdroid/fdroidserver/issues/202), nous espérons sortir aussi une version dessus.

Windows est toujours pris en charge en version 32 bits et 64 bits. Nous proposons une construction expérimentale pour la version 64 bits utilisant la suite d’outils MinGW.

Pour macOS et iOS, nous sommes en discussion avec deux contributeurs, mais nous n’avons toujours pas de paquet fonctionnel à distribuer.

Autres changements

Pour cette nouvelle version, on voit également arriver :

  • pour l’activité de vocabulaire, l’ajout des données pour le polonais, le suédois et l’ukrainien ;
  • de nouveaux graphismes pour plusieurs activités ;
  • la traduction du site est maintenant gérée dans l’infrastructure KDE :
    • cette version est complètement traduite en 17 langues,
    • elle est aussi traduite à plus de 85 % en 11 langues supplémentaires.

Télécharger ce contenu au format Epub

Lire les commentaires

Le programme de la LDAPCon 2017 est sorti !

13 août, 2017 - 20:22

Nous sommes heureux de vous annoncer la sortie du programme des conférences de la LDAPCon 2017 qui aura lieu à Bruxelles les 19 et 20 octobre prochain.

Cette conférence internationale sur LDAP et plus largement sur les questions de gestion des identités, d’authentification et d’habilitation, est l’occasion de rencontrer les acteurs les plus importants du domaine.

Pour en savoir plus : https://ldapcon.org/2017/conference-program/ (mots‐clés : ReOpenLDAP, Sparrow, OpenLDAP, Apache Mavibot, PHP-LDAP, load balancing, replication, SSO, FusionDirectory, ForgeRock, etc.).

De plus, la date de vente des tickets au tarif « inscription anticipée » de la LDAPCon 2017 a été étendue au 25 août ; vous pouvez encore acheter votre ticket Early Bird.

Télécharger ce contenu au format Epub

Lire les commentaires

Arkiv : Sauvegarde de fichiers et bases MySQL + archivage sur Amazon S3 et Amazon Glacier

13 août, 2017 - 10:30

Pour mes besoins personnels et professionnels, j’ai développé un script pour sauvegarder mes données (fichiers présents sur le disque local et bases de données MySQL) et les archiver sur Amazon S3 et Amazon Glacier.

Il est possible de choisir la fréquence de sauvegarde (jusque toutes les heures si nécessaire) et de définir une politique précise pour la purge des données. Il est ainsi possible d’avoir un comportement du type :

  • sauvegarde toutes les heures : les données sont enregistrées en local et envoyées sur Amazon S3 et Amazon Glacier ;
  • toutes les sauvegardes sont gardées en local pendant deux jours, puis on garde quatre sauvegardes par jour (une toutes les six heures) pendant cinq jours, puis une par jour pendant deux semaines, puis elles sont effacées ;
  • toutes les sauvegardes sont gardées sur Amazon S3 pendant deux semaines, puis on garde six sauvegardes par jour (une toutes les quatre heures) pendant deux semaines, puis deux par jour pendant un mois, puis elles sont effacées ;
  • toutes les données sont gardées sans limite de temps sur Amazon Glacier.

Le choix des services cloud d’Amazon se veut pragmatique. Amazon S3 est très utilisé pour stocker des données auxquelles on veut pouvoir accéder rapidement. Amazon Glacier est très pratique pour enregistrer des données sur le long terme pour un coût très bas.

Ce script propose une interface de configuration en ligne de commande qui se veut facile à utiliser. Les fichiers journaux se veulent aussi les plus lisibles possibles.

Exemple de configuration :

Exemple de fichier journal :

Le code a été placé sous la licence MIT (licence libre permissive).

Télécharger ce contenu au format Epub

Lire les commentaires

Agenda du Libre pour la semaine 33 de l’année 2017

13 août, 2017 - 10:30

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

Sommaire [FR Chartres] OpenAtelier - Le mercredi 16 août 2017 de 20h00 à 23h59.

L'OpenAtelier est un moment de rencontre et de partage ou les membres et curieux sont invités à échanger sur leurs idées et leurs projets.

Les espaces techniques sont également ouverts aux réalisations (électronique, informatique, menuiserie, impression 3D, découpe vinyle…).

Pour les curieux, c'est le bon moment pour venir découvrir l'association et ses membres.

[FR Toulouse] Rencontre Tetalab - Le mercredi 16 août 2017 de 21h00 à 23h00.

Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

Ouvert au public tous les mercredi soir.

Venez nombreux.

[QC Coteau du Lac] Émission #137 de bloguelinux - Le jeudi 17 août 2017 de 02h00 à 22h00.

bloguelinux.ca est un blogue québécois offrant la diffusion d'un podcast qui traite des logiciels libres, du système d'exploitation Linux et de la technologie en général ; il y a un processeur, il y a un système d'exploitation, c'est certain que ça nous intéresse!
bloguelinux.ca est enregistré le jeudi à 20 heures toutes les deux semaines.
Vous pouvez nous écouter en direct lors des enregistrements à l'adresse http://live.bloguelinux.ca ou directement sur notre site à http://www.bloguelinux.ca en cliquant sur la radio dans le panneau de gauche du site.

[QC Montréal] Atelier du Libre du Club Linux Atomic - Le jeudi 17 août 2017 de 18h00 à 21h30.

Le Club Linux Atomic
Le Club Linux Atomic (CLA) regroupe des utilisateurs, novices comme aguerris, de systèmes d’exploitation GNU/Linux et de logiciels libres. Il a pour principal objet de mieux faire connaître l’informatique libre et d’en favoriser l’utilisation par le plus grand nombre.
Atelier du Libre

[QC Montréal] UP des NCS - Atelier «Libérer l'informatique» - Le vendredi 18 août 2017 de 14h00 à 15h30.

Lors de cet atelier qui s'intitule «Libérer l'informatique», il sera question des nouvelles formes de résistance au numérique dominant, celui qui sert les intérêts du 1%.
Mathieu Gauthier-Pilote présentera principalement les initiatives de FACiL pour promouvoir l'appropriation collective de l'informatique libre (notamment le projet Services FACiLes, la Clé FACiL, la campagne Pacte du logiciel libre, etc.) tandis que Luc Levebvre présentera les initiatives de Crypto.Québec (le podcast «Les Chiens de garde», un livre en préparation, etc.) .
Cet atelier se déroule dans le cadre de l'Université populaire des Nouveaux Cahiers du socialisme (NCS), dont l'un des deux axes principaux cette année est «La révolution « numérique » : les enjeux pour le 99%».

[FR Villeneuve d'Ascq] Libre à Vous - Le samedi 19 août 2017 de 09h00 à 12h00.

Vous souhaitez tester GNU/Linux sur votre ordinateur, vous recherchez un logiciel pour une fonction précise, des conseils ou de l'aide sur les logiciels libres?

Libre à Vous est une permanence destinée à vous faciliter l'utilisation de l'informatique. Vous repartirez avec « le plein » de logiciels libres, fiables, évolutifs, performants et gratuits.

C'est chaque samedi matin au Centre d'Infos Jeunes à la ferme Dupire, 80 rue Yves Decugis à Villeneuve d'Ascq (métro Triolo) de 9h00 à 12h00.

Entrée Libre. Tout Public.

[FR Valenciennes] Permanence ValLibre - Le samedi 19 août 2017 de 09h30 à 12h00.

Permanence assistance informatique.

Dépannage petits bobos informatiques.

Initiation à l'informatique libre.

Tous les samedis ouvrables sauf les derniers samedis du mois et les samedis en période de vacances scolaires.

Si besoin particulier, la prise de rendez-vous est fortement conseillée.

Téléphone accueil MQCV : 03 27 22 43 90

[FR La Couronne] Permanence - accueil public - Le samedi 19 août 2017 de 10h00 à 13h00.

Notre permanence d'accueil avec le sourire, le café et les gâteaux !

Lieu de rencontre et d'échange convivial pour discuter informatique et outils numériques.

Cette association permet à chacun de découvrir également l'univers de Linux et par extension de tous les **logiciels* et matériels libres*.

Entrée Libre. Tout Public.

[FR Nanterre] Lightning talks de l'Electrolab - Le samedi 19 août 2017 de 16h00 à 18h00.

Les Lightning-Talks consistent en de courtes présentation (5 mn max + 3 mn de questions) de projets terminés, en cours, ou toujours en réflexion.

Toutes les personnes qui sont prêtes à partager leurs idées les plus folles devant une foule en délire sont invitées

Vous bénéficierez de retours des membres sur vos choix techniques et probablement de conseils bienvenus.

Télécharger ce contenu au format Epub

Lire les commentaires

Firefox 55 est prêt pour la rentrée 2017

10 août, 2017 - 14:47

Le 8 août dernier, Mozilla a annoncé la sortie de Firefox 55.

Les profils utilisateurs reçoivent des mises à jour incompatibles avec les anciennes versions de Firefox, ne vous précipitez donc pas sur la mise à jour et faites d’abord une sauvegarde de votre dossier .mozilla.

Mozilla indique que cette nouvelle version apporte des améliorations de performance, des technologies innovantes, telles que la réalité augmentée pour le Web (WebVR), de nouvelles options d’optimisation de gestion du matériel et des processus, plus de confidentialité et des améliorations de l’expérience utilisateur. Tous les détails sont disponibles dans la suite de la dépêche.

Sommaire Nouveautés générales

Tout d’abord, des modifications sont apportées dans les profils Firefox, ce qui rend les profils à partir de Firefox 55 incompatibles avec les anciennes versions de Firefox. Avant de mettre à jour votre navigateur, faites une sauvegarde de votre profil actuel afin de pouvoir revenir sur les anciennes versions si nécessaire.

Avec ces dernières versions (Firefox pour bureau et pour Android), Firefox améliore la confidentialité de votre vie privée par le refus d’utilisation des interfaces de géolocalisation pour les sites qui fournissent une connexion non sécurisée à leurs services.

Une nouveauté intéressante pour les développeurs est que Firefox pour GNU/Linux peut être utilisé sans interface graphique (mode headless à activer avec le paramètre de commande éponyme). Ceci permettra par exemple d’utiliser le moteur de Firefox pour exécuter des tests d’intégration continue, même si la machine d’intégration n’a pas de serveur graphique à disposition.

Firefox pour bureau

La nouveauté la plus mise en avant par Mozilla est que Firefox peut utiliser les périphériques de réalité virtuelle depuis le Web grâce à l’introduction de l’API WebVR. Un site dédié est à disposition pour découvrir cela. Mozilla insiste sur cette nouveauté dans son annonce pour bien afficher son intention de continuer à être un navigateur au cœur des innovations technologiques.

À côté de cette nouveauté, Firefox pour le bureau connaît plusieurs améliorations de son interface graphique dans cette version :

  • la barre de navigation principale a été retravaillée :
    • les suggestions de recherche sont activées par défaut pour les utilisateurs qui ne les ont pas désactivées explicitement (passage de opt-in à opt-out),
    • la recherche peut enfin y être effectuée avec un des différents moteurs configurés au lieu de l’unique moteur par défaut ;
  • les barres latérales (marque‐pages, historique, onglets synchronisés) peuvent être déplacées vers le côté droit de la fenêtre :
  • la capture d’écran des pages est possible directement depuis le navigateur avec l’outil Firefox Screenshots. Cet outil permet de créer des captures d’écran de pages entières ou d’une partie seulement et de les enregistrer localement ou sur le cloud de Firefox. Ce nouvel outil sera activé uniquement pour une partie des utilisateurs afin de continuer les tests du service :
  • l’impression depuis le mode lecture a été simplifiée ;
  • sur Mac OS X et macOS, Firefox permet d’assigner des raccourcis personnalisés aux menus via le menu Préférences systèmeClavierRaccourcis.

Firefox pour bureau continue de développer ses performances :

  • les sessions comportant un grand nombre d’onglets sont dorénavant restaurées instantanément ;
  • les performances peuvent être optimisées :
    • par l’activation de l’accélération matérielle, quand elle est disponible. Pour le format vidéo VP9, par exemple, il est nécessaire d’utiliser Windows 10 Anniversary Edition. L’option est désactivée si aucune accélération matérielle n’est disponible pour la configuration matérielle et logicielle de la machine,
    • par l’ajustement de la limite maximale du nombre de processus utilisés pour effectuer le rendu des pages Web (un maximum de 4 processus est recommandé, mais il peut être poussé jusqu’à 7).

Mozilla simplifie l’installation de Firefox sur Windows :

  • l’installateur par défaut est simplifié : son exécution télécharge et installe automatiquement Firefox sans action supplémentaire par l’utilisateur ;
  • Firefox 64 bits est automatiquement installé pour les ordinateurs disposant de Windows 64 bits et d’au moins 2 Gio de mémoire vive ;
  • Les installateurs complets sont toujours disponibles pour les utilisateurs avancés.

Quelques modifications permettent de protéger un peu mieux la confidentialité des données utilisateurs :

  • lors de la saisie d’un nom de domaine sans indication du protocole (http://, https://) dans la barre de navigation, Firefox tente d’abord la connexion avec le protocole sécurisé HTTPS au lieu de HTTP ;
  • le greffon Flash est par défaut en « cliquer pour activer » et uniquement autorisé en HTTP et HTTPS, ce changement va être lancé progressivement et ne sera pas visible par tous les utilisateurs immédiatement. Plus d’informations sur la feuille de route des greffons dans Firefox (en anglais).

En vrac, les autres modifications apportées pour cette version :

  • Firefox pour bureau est traduit en biélorusse (be) ;
  • l’implémentation WebRTC gère maintenant les microphones stéréos ;
  • l’interface utilisateur pour les mises à jour a été modernisée pour être moins intrusive et plus alignée avec le reste du navigateur. Seuls les utilisateurs qui n’ont pas redémarré leur navigateur huit jours après le téléchargement d’une mise à jour ou ceux qui ont désactivé les mises à jour automatiques verront ce changement.

Les développeurs ne sont pas en reste et les outils disponibles reçoivent aussi des mises à jour :

  • le moniteur réseau permet de sélectionner les colonnes à afficher ; de nouvelles colonnes apparaissent également : l’adresse IP distante, le protocole, le schéma, les cookies, les cookies créés ;
  • ce dernier fournit en plus une interface de filtre des connexions à afficher (par des filtres sur les valeurs des colonnes ou par expressions régulières) ;
  • l’en‐tête HTTP SourceMap est pris en compte pour aider le débogage des codes JavaScript « minifiés » ou générés automatiquement depuis d’autres sources].

Comme d’habitude, pour connaître tous les changements sur les technologies invisibles de Firefox (moteur de rendu HTML, DOM, JavaScript, API, WebExtensions…), vous pouvez vous référer aux notes de versions pour développeur (en anglais).

Firefox pour Android

La version 55 de Firefox pour Android est la dernière qui sera installable sur Android 4.0 (sorti en 2011). Ainsi, les dernières mises à jour apportées pour Android 4.0 contiennent :

  • de nouvelles actions qui ont été ajoutées pour gérer les onglets : il est maintenant possible d’ordonner les onglets par le maintien et le déplacement d’un onglet dans la boîte à onglets ;
  • une option d’accessibilité a été ajoutée pour respecter la configuration système des polices lors de l’affichage des pages Web ;
  • pour les vidéos non visibles sur une page Web, le rendu des images ne sera plus effectué pour économiser l’énergie de la batterie. L’audio de ces vidéos, quant à lui, continuera d’être joué ;
  • Firefox pour Android est traduit en grec (el) et en lao (lo)
Prochaines versions

La version 56 de Firefox est prévue pour le 26 septembre, une aide dans l’espace de rédaction est bienvenue pour sortir la prochaine dépêche à temps.

Les prochaines versions verront l’arrivée de :

  • la recherche dans l’écran Préférences, pour trouver rapidement les options de n’importe quelle catégorie ;
  • une restructuration de l’interface de Firefox en version 57. Le projet nommé Photon est déjà activé pour les utilisateurs de Firefox Nightly (la version de test de Firefox). Un débat a été lancé dans le journal de Jiehong : est‐ce que le nouveau projet Photon est un retour en arrière par rapport à l’ancien projet Australis ?
Autour de Firefox Campagne de financement réussie pour Grammalecte

Le développeur de Grammalecte pourra mettre à jour son extension Firefox grâce au succès de sa seconde campagne de financement participatif.

Comme Mozilla a changé son fusil d’épaule pour les recommandations des technologies à utiliser pour les développeurs d’extensions (WebExtensions à la place du SDK qui remplaçait déjà XUL), Olivier devra reprendre le code de l’extension Grammalecte créée suite à son premier financement participatif pour rester compatible avec les futures versions de Mozilla Firefox.

Pour plus d’informations, référez‐vous à la dépêche dédiée à la seconde campagne de financement de Grammalecte.

Polémique d’utilisation de Google Analytics dans Firefox via les pages Web de Mozilla intégrées dans l’interface

Le recours à Google Analytics dans Firefox même, sur la page des modules (about:addons), dans l’onglet Catalogue, fait polémique auprès des utilisateurs attachés au respect de leur vie privée.

Techniquement, cette page interne à Firefox n’utilise pas directement Google Analytics, elle contient uniquement un objet XUL browser qui est l’équivalent du conteneur iframe de HTML. Cependant, le contenu de la page pointée par le conteneur pointe sur une page du site Web https://discovery.addons.mozilla.org qui, lui, recourt à Google Analytics.

À noter, d’une part, que ce recueil de données ne semble pas pouvoir être bloqué avec la version WebExtension de uBlock Origin, d’autre part, que le navigateur Tor Browser (une version spécialisée de Firefox pour mieux protéger la vie privée) est aussi concerné.

Un correctif conçu le 13 juillet par Mozilla pour ses sites consiste à bloquer l’envoi de données à Google lorsque le visiteur de https://addons.mozilla.org a activé la fonction « Ne pas me pister » du navigateur. Ainsi, l’activation cette fonction empêche le recueil de données, que ce soit directement sur la page Web addons.mozilla.org ou indirectement par la page about:addons de Firefox.

Confronté à cette polémique, Mozilla a donc finalement décidé d’offrir le choix à l’utilisateur, mais selon la technique de l’opt‐out. Comme il s’agit de collecte de données à l’intérieur du navigateur, le choix de la technique de l’opt‐in aurait sans doute été plus éthique.

De leur côté, les utilisateurs de Tor Browser ont évidemment réagi et ouvert un rapport. La solution appliquée sera la suppression de cet onglet Catalogue dans l’interface de Tor Browser, comme c’était déjà prévu pour d’autres raisons dans ce projet.

Vous pouvez lire le journal d’antistress pour plus de détails et de débats à ce sujet.

Télécharger ce contenu au format Epub

Lire les commentaires

Loi Finances 2016 : un soulagement pour les logiciels de compta

9 août, 2017 - 09:43

Pour petit rappel la loi finances 2016, mise en application pour le 1er janvier 2018 introduit des contraintes pour les logiciels de caisse et de comptabilité (en gros, ne pas pouvoir supprimer des données) et un système d’attestation et de certification pour engager la responsabilité de quelqu’un en cas de fraude constatée avec le logiciel. Elle concerne tous les assujettis à la TVA.

Le 15 juin dernier (oui, ça date un peu), le gouvernement a indiqué que le champ d’application de cette loi ne concernerait plus les logiciels de comptabilité, et donc uniquement les logiciels d’encaissement. Le communiqué indique également une volonté de simplifier les contraintes.

LinuxFr.org a publié plusieurs dépêches sur le sujet grâce à la mobilisation de l’April et de la société Scil, éditrice du logiciel (libre) de caisse Pastèque.

C’est une très bonne nouvelle pour les logiciels de comptabilité qui évite ainsi l’obligation d’être certifiés ou attestés. Ouf !

En revanche, pas encore de détails du périmètre précis. Les nouveaux textes seront disponibles « d’ici la fin de l’année ». On espère juste que ce ne sera pas le 20 décembre.

Le texte indique qu’il reste six mois pour se mettre en conformité. C’est donc un flou par rapport à d’autres informations qui circulent indiquant que la mise en application serait repoussée de six mois. Information pour laquelle je n’ai pas trouvé de référence officielle. Le communiqué indique bien la mise en application de la loi au 1er janvier 2018.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de GHC 8.2.1

7 août, 2017 - 11:52

Une nouvelle version majeure du compilateur GHC pour Haskell est sortie.

Cette dépêche présente rapidement le langage Haskell, puis les nouveautés de la version 8.2.1 qui vient de sortir. En fin de dépêche, un exemple plus complet d’un code Haskell est présenté afin de motiver à l’usage de ce langage.

Sommaire Présentation d’Haskell et de GHC

Haskell est un langage de programmation fonctionnelle. Je vous invite à lire la dépêche de la sortie de GHC 8.0.1 qui réalise une présentation plus complète du langage.

Une reformulation de la page de présentation du langage pourrait être la suivante :

  • Haskell est un langage statiquement typé. Chaque expression a un type qui est déterminé à la compilation et le compilateur s'assure que l'assemblage d'expressions a un sens. Ceci permet de fournir quelques garanties sur le programme, mais cela permet aussi beaucoup d'expressivité.
  • Haskell est un langage au typage inféré. Cela signifie que tous les avantages du typage statique viennent gratuitement, sans devoir écrire de déclaration complexe de type.
  • Haskell est purement fonctionnel. C'est un des langages (sans parler des langages dérivés d'Haskell ou d'un de ses ancêtres, Miranda, purement fonctionnel et à évaluation paresseuse) qui a cette propriété où, de façon simplifiée, les effets de bords apparaissent explicitement.
  • Haskell est concurrent. GHC, son compilateur le plus connu propose des primitives efficaces pour la concurrence et est capable d'exploiter tous les cœurs de calcul d'une machine.
  • Haskell est rapide : dans certains cas, on peut approcher les performances de langages comme C++
  • Haskell est paresseux, c'est un des rares langages à ma connaissance ayant cette caractéristique.
  • Haskell vient avec de nombreux paquets pour de nombreuses applications.

À mon avis, Haskell / GHC est un outil intéressant à regarder, car il est un des rares langages « grand public » à proposer certaines fonctionnalités, comme la séparation explicite des effets de bords ou l'évaluation paresseuse. En outre, Haskell propose un système de type très puissant permettant de modéliser son domaine de travail de façon élégante. Il s'agit d'un outil capable dans beaucoup de domaines, allant du web au HPC, proposant de très bonnes performances et une sécurité accrue.

Changements

Comme d'habitude, de nombreux bugs et autres subtilités ont été réglés. J'ai essayé de résumer dans cette section les points que je trouve intéressants dans les notes de mise à jour.

Mon changement préféré est que le compilateur affiche maintenant ses messages d'erreur avec de la couleur et un petit symbole montrant la zone de l'erreur.

Performance

Un des gros apports de cette 8.2.1 concerne la performance du compilateur qui est annoncé comme plus rapide, mais les notes de versions sont pauvres d'informations à ce sujet.

De nombreux points visant les performances du code exécuté ont été traités, certains sont discutés dans les points suivants.

Join points

Les « join points » sont décrits sur le wiki et dans cette vidéo de Simon Peyton Jones : Compiling without continuations.

Il s'agit d'une optimisation permettant de détecter plus de code sujet à être transformé en appel récursif terminal, ceci permettant une réduction non négligeable des allocations, puisqu'un appel récursif terminal se résume à peu de choses près à un saut dans le programme.

Compact regions

Un des gros reproches faits à la gestion de mémoire par Ramasse-miettes_(informatique) est le temps que peuvent prendre les phases de collection de mémoire. Dans le cas d'Haskell, l’implémentation choisie est en mode « Stop the world », dit autrement, tout s’arrête pendant la phase de récupération de la mémoire. Cette phase peut être longue car toute la mémoire utilisée par le processus doit être scannée pour mettre à jour la liste des objets vivants ou morts, et ceci peut introduire des pauses peu acceptables dans certains contextes temps réel.

GHC 8.2 propose les compact regions qui sont des espaces de stockage d'objets qui ne font pas référence à d'autres objets en dehors de cet espace. Ainsi le ramasse-miettes peut ignorer cet espace pendant sa phase de parcours de la mémoire pour un gain de temps proportionnel à la quantité de mémoire qui n'a pas été parcourue.

Point intéressant, une région compacte peut être sérialisée sur le disque de façon efficace.

Types somme dépackés

La représentation en mémoire d'un objet hiérarchique en Haskell dans GHC est composée de nombreuses indirections de pointeurs qui consomment de la mémoire et coûtent cher en performance du fait de l'absence de localité et d'un stress supplémentaire sur le ramasse-miettes.

Le travail sur l'extension UnpackedSumTypes permet de représenter plus efficacement les types somme (i.e. les enums).

Numa

Des optimisations pour les architectures Numa (Non_Uniform_memory_Access) sont en place. Pour rappel, les architectures Numa ont des zones de la mémoire qui sont privilégiées par certains cœurs de calcul. Ainsi, il est plus efficace d'allouer la mémoire nécessaire pour un cœur dans une zone proche de celui-ci.

Meilleure gestion du format DWARF

Le format DWARF est utilisé par de nombreux outils de debug ou d'analyse de performance comme gdb, valgrind, perf. L'amélioration de sa gestion permet, entre autres, une meilleure prise en charge de ces outils.

Pour information, perf est un outil qui permet de faire du profiling statistique de tout programme. Au lieu d'instrumenter le code pour compter très précisément les appels de fonctions, ce que pourrait faire un compilateur, perf se contente de regarder l'état du programme à différent instants.

Cette méthode de profiling a de nombreux avantages. Elle ne nécessite pas de recompiler le code source pour ajouter l'instrumentation et ainsi elle ne modifie pas l'exécution du programme. Les résultats sont plus pertinents qu'une méthode avec instrumentation car celle-ci peut avoir un coût qui biaise les résultats. Elle permet aussi de lancer le profiling sur un programme qui s'exécute déjà.

Malheureusement, GHC génère des programmes avec un modèle d’exécution bien différent de ceux des langages plus traditionnels, d'où la difficulté d'utiliser ces outils. La page du wiki GHC sur DWARF détaille ces problématiques et les améliorations réalisées dans GHC 8.2.

BackPack

BackPack vise à proposer un système de module plus puissant.

On rappelle qu'en Haskell il existe une quantité impressionnante de types pouvant représenter une chaîne de caractères :

  • String, qui n'est autre qu'une liste chaînée de caractères Unicode. ([Char]). Celle-ci est déconseillée pour la gestion de vraie chaîne de caractères, du fait du coût en mémoire et des performances associées aux listes chaînées.
  • Text, qui est une représentation compacte de chaînes Unicode. Performante, elle est cependant critiquée par son choix de l'encodage interne — utf-16 — du fait du surcoût en mémoire comparé à de l'utf-8. Ce type vient en version stricte et paresseuse.
  • ByteString, qui est une représentation compacte de suite d'octets. Utilisée principalement pour les interactions binaires, elle vient en version stricte et paresseuse.
  • les Foundation String qui se veulent une alternative au Text en utilisant le codage interne en utf-8.

Il en existe sûrement d'autres.

Bref, c'est la jungle, car chaque type a son utilité en fonction de ses besoins en traitement correct des caractères, en traitement binaire, en évaluation paresseuse ou stricte.

Avant BackPack, faire un module gérant les différents types de chaîne de caractères disponibles dans Haskell revenait à devoir faire autant de modules que d’implémentations à gérer… bonjour la duplication de code.

Grâce à BackPack, les modules peuvent être paramétrés par une interface de type, permettant une implémentation générique du module. C'est très similaire aux modules paramétrés de OCaml.

Stratégie de dérivation

Haskell propose un mécanisme de dérivation de comportement automatique. Par exemple :

data Vector = Vector { x :: Float, y :: Float, z :: Float } deriving (Show, Eq)

Crée une classe Vector, représentant un triplet de flottant. La clause deriving permet au compilateur d'écrire automatiquement les fonctions d'affichage des égalités, par exemple :

>>> v = Vector 1 2 3 >>> v Vector {x = 1.0, y = 2.0, z = 3.0} >>> v2 = Vector 4 5 6 >>> v == v2 False >>> v == v True

On peut aussi imaginer dériver automatiquement les comportements de séralisation, hash, conversion avec JSON, …

Ce mécanisme a évolué au cours de la vie de Haskell, au départ il permettait de ne dériver que certains comportements fixes proposés par le compilateur. Puis de nouveaux comportements ont été ajoutés. Puis il est devenu possible pour un utilisateur de proposer son propre système pour dériver automatiquement des comportements. Du fait de la profusion de mécanismes de dérivation, certains cas sont devenus ambigus.

GHC 8.2 fait un peu le ménage en proposant DerivingStrategies qui permet de choisir explicitement la stratégie à utiliser. Cet article résume le problème et démontre la solution.

Amélioration du typage dynamique

Haskell est un langage au typage statique, à ce titre il prend en charge bien évidemment la notion de typage dynamique par le biais du module Data.Dynamic.

On peut encapsuler n’importe quel type dans un type Dynamic, mais pour le récupérer il faudra explicitement fournir le bon type :

Prelude Data.Dynamic> a = toDyn "Hello" Prelude Data.Dynamic> b = toDyn True Prelude Data.Dynamic> :type a a :: Dynamic Prelude Data.Dynamic> :type b b :: Dynamic Prelude Data.Dynamic> (fromDynamic a) :: Maybe String Just "Hello" Prelude Data.Dynamic> (fromDynamic a) :: Maybe Bool Nothing Prelude Data.Dynamic> (fromDynamic b) :: Maybe String Nothing Prelude Data.Dynamic> (fromDynamic b) :: Maybe Bool Just True

GHC 8.2 apporte l'implémentation du papier A reflection on types de Simon Peyton Jones, Stephanie Weirich, Richard A. Eisenberg et Dimitrios Vytiniotis, détaillé dans cette vidéo de SPJ. Ces changements ne seront pas forcément visibles pour un utilisateur final, mais ils simplifient et sécurisent l'implémentation de bibliothèques comme Dynamic en remplaçant un hack (un cast) par une opération garantie par le compilateur.

Overloaded record fields

La situation des record, i.e. des structures avec des champs nommés, n'est pas parfaite en Haskell.

Depuis GHC 8.0, beaucoup de travail est fait à ce sujet, notamment avec l'arrivée des extensions :

  • DuplicateRecordField qui permet de définir dans le même module deux types avec des noms de champs égaux.
  • OverloadedLabels qui permet de définir des labels, syntaxiquement #foo qui seront surchargés en fonction du type.

GHC 8.2 va un peu plus loin et propose la classe HasField qui permet d'extraire un champ de record de façon polymorphique, par exemple getField @"x" v permet d'extraire le champ x de v quel que soit le type de v.

Notez que GHC 8.2 est incompatible avec le code de OverloadedLabels de GHC 8.2 et qu'il faudra adapter son code.

Un meilleur support du polymorphisme "levity"

Richard A. Eisenberg - Levity Polymorphism (en anglais).

En Haskell (et dans de nombreux autres langages), il existe des objets « boxés » et des objets non « boxés ». Par exemple, un Int# est représenté par un entier machine sur 64 bits, alors qu'un Int est représenté par un pointeur de constructeur, que l'on pourrait assimiler à un tag de type, et par un Int#, tout cela pour deux fois plus de mémoire.

Généralement, on n'utilise pas les types "non boxés" et le compilateur optimise cela comme il peut. Cependant quand les performances sont attendues, il peut être intéressant d'écrire du code sur des types non "boxés" et à un moment, il devient important de pouvoir écrire des fonctions polymorphiques travaillant aussi bien sur des types "boxés" que "non boxés".

Exhaustivité des patterns

Le nouveau pragma COMPLETE permet de forcer l'exhaustivité des patterns.

Par défaut, chaque type crée aussi un pattern utilisable pour construire / déconstruire le type :

data Point = Point Float Float deriving (Show) isOrigin (Point 0 0) = True isOrigin _ = False getX (Point x _) = x translate (Point x y) (dx,dy) = Point (x + dx) (y + dy)

Il est cependant possible de créer ses propres patterns pour créer de nouvelles façons de construire / déconstruire ses types :

{-# LANGUAGE ViewPatterns #-} {-# LANGUAGE PatternSynonyms #-} pattern PolarPoint r phi <- (\ (Point x y) -> (sqrt (x*x+y*y), atan2 y x)) -> (r, phi) where PolarPoint r phi = Point (r * cos phi) (r * sin phi

Ici, je crée un pattern PolarPoint r phi qui représente un point en coordonnées polaires. On peut s'en servir autant pour créer que pour déconstruire :

> PolarPoint 10 0 Point 10.0 0.0 > PolarPoint 10 (pi / 2) Point (-4.371139e-7) 10.0 > PolarPoint r angle = Point 2 2 > r 2.8284271247461903 > angle 0.7853981633974483

Cependant, avant GHC 8.2, le compilateur râlait sur les fonctions utilisant ce pattern :

-- | Retourne `True` si le point est plus loin qu'un rayon de 10 isFar :: Point -> Bool isFar (PolarPoint r _) = r > 10 Polar.hs:18:1: warning: [-Wincomplete-patterns] Pattern match(es) are non-exhaustive In an equation for ‘isFar’: Patterns not matched: _ | 18 | isFar (PolarPoint r _) = r > 10 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

En effet, le compilateur ne peut pas prouver tous les cas de figure des patterns, ce qui se traduit par beaucoup de faux positifs dans lesquels les vrais positifs sont cachés, rendant cette fonctionnalité peu utilisable.

Depuis GHC 8.2, l'utilisateur peut fournir une directive de compilation {-# COMPLETE PolarPoint #-} permettant de spécifier que le pattern PolarPoint couvre tous les cas de figure.

L'écosystème

Stack est un outil de gestion de dépendance pour Haskell. Il peut sous-traiter à Nix pour les dépendances non Haskell, permettant ainsi la compilation dans un environnement contrôlé. Pour faire simple, un programme Haskell peut être compilé en une seule ligne de commande stack build sans devoir se préoccuper de l'installation de dépendances.

L'utilisation de Stackage qui fournit des snapshots de packages versionnés garantit qu'un programme compilé il y a quelques mois le sera dans les mêmes conditions.

Stack a gagné dernièrement une nouvelle commande script qui permet d’exécuter un programme Haskell comme un script en installant les dépendances listées dans le script lui-même. Nous verrons un cas d'usage dans la section d'exemples plus loin.

Le futur

Haskell (et GHC) évolue constamment. Cette section liste quelques projets excitants pour l'avenir.

Typage dépendant

Cet article de blog détaille le travail sur les types dépendants en Haskell qui devrait arriver plus ou moins rapidement, l'auteur parlant de GHC 8.6.

Les Types dépendants permettent d'enrichir le système de type afin de garantir plus de choses.

Pour expliciter cela, nous allons traiter un petit problème de multiplication de matrices.

Soit un type Matrice qui pourrait être représenté comme suit en Haskell :

data Matrice = Matrice { nLignes :: Int, nColonnes :: Int, donnée :: (... structure non détaillée ...) }

Le produit matriciel est une opération classique d’algèbre qui s'effectue entre deux matrices et renvoie une nouvelle matrice. Cependant il y a une contrainte entre la taille des matrices d'entrées et le résultat de la matrice de sortie. Une matrice de taille (m, n) ne peut être multipliée que par une matrice de taille (n, p) pour obtenir une matrice de taille (m, p).

Bien souvent cette contrainte est assurée par une vérification à l’exécution :

produitMatrice :: Matrice -> Matrice -> Matrice produitMatrice (Matrice m n dataA) (Matrice n' p dataB) | n == n' = (Matrice m p (... calcul non détaillé ...)) | otherwise = error "Pas les bonnes tailles"

Il est à l'heure actuelle possible en Haskell de spécifier ces tailles directement dans le type, tel que :

data Matrice nLignes nColonnes = Matrice { donnée :: (... structure non détaillée ...) }

Donnant ainsi le produit suivant :

produitMatrice :: Matrice m n -> Matrice n p -> Matrice m p produitMatrice (Matrice dataA) (Matrice dataB) = Matrice (... calcul non détaillé ...)

Cette approche force le compilateur à vérifier que les tailles de nos matrices sont correctes pendant la compilation, ce qui supprime totalement toute une classe d'erreur à l’exécution.

Justin Le a rédigé une très bonne série d'articles qui traite de l'état actuel du typage dépendant en Haskell en implémentant un réseau de neurone multi couches.

Une des limitations de cette approche est que les tailles, des réseaux de neurone ou des matrices de notre exemple, doivent être connue intégralement à la compilation, empêchant l'écriture d'un outil pouvant charger depuis le disque une matrice de taille quelconque.

Dans la seconde partie de son article, Justin Le parle de ce problème et montre les solutions existantes pour réaliser ce type d'opérations. On peut donc écrire une fonction de chargement de matrice depuis le disque avec des tailles statiques :

chargerMatrice :: Filename -> IO (Matrice n m)

Je ne détaillerais pas la solution, c'est, à mon avis, lourd et rébarbatif. Le travaille sur le typage dépendant qui est en cours dans GHC vise à simplifier cela.

Typage linéaire

Le typage linéaire devrait arriver sous peu dans GHC. Ce travail est en grande partie réalisé par une société française, tweag.io, donc cocorico ;) On note leur publication sur les types linéaires et leur premier article de Blog expliquant le projet.

Les types linéaires apportent à la fois un potentiel de performance et de sécurité / modélisation.

Pour simplifier, c'est une façon de dire qu'une valeur ne sera utilisée qu'une et une seule fois. Je ne rentrerai pas dans les détails de son implémentation en Haskell puisque c'est tout nouveau et que les choses peuvent beaucoup bouger, je me contenterai de donner deux exemples de problématiques que les types linéaires peuvent résoudre.

Sécurité et modélisation

Cet article de Blog détaille ce point, l'exemple qui suit est similaire.

Quand on utilise des sockets, on peut faire de nombreuses actions en fonction de l'état de la socket, qui sont résumées dans le graphe suivant:

Non initialisée ---bind()---> En attente ----listen()---> En écoute \ / \ accept() \-----connect()----> Envoyer/Recevoir <==========/

Ici, une flèche simple représente un changement d'état de la socket. Et la flèche === représente le fait que la fonction accept retourne une nouvelle socket directement dans l'état d'envoi et de réception de message.

À chaque état est associé une liste d'opérations possibles, par exemple recv et send ne sont possibles que dans l'état de transfert.

On pourrait modéliser ces états par des types différents :

data NonInitSocket = NonInitSocket Int data AttenteSocket = AttenteSocket Int data EcouteSocket = EcouteSocket Int data TransfertSocket = TransfertSocket Int

L'Int représentant le descripteur de fichier bas niveau de la socket.

Et à cela s'ajoute des fonctions :

create :: IO NonInitSocket bind :: NonInitSocket -> Addr -> IO AttenteSocket listen :: AttenteSocket -> Int -> IO EcouteSocket connect :: NonInitSocket -> Addr -> IO TransfertSocket accept :: EcouteSocket -> IO TransfertSocket send :: TransfertSocket -> String -> IO () recv :: TransfertSocket -> Int -> IO String closeEcoute :: EcouteSocket -> IO () closeTransfert :: TransfertSocket -> IO ()

Les IO matérialisant que chacune de ces fonctions réalise des effets de bord.

Et là tout est beau dans le meilleur des mondes, on ne peut pas exécuter une fonction qui n'a pas de sens sur une socket qui n'est pas dans le bon état.

Sauf que si… Observons le code suivant :

fonctionBugée = do s <- create attenteSocket <- bind s anAddr ecouteSocket <- listen attenteSocket 3 ... transfertSocket <- connect s anotherAddr

Ici on voit qu’on se sert deux fois de s ce qui est faux puisque à ce moment le descripteur de socket qui est stocké dans s correspond à une socket en état d'écoute.

On remarque aussi qu'on ne ferme jamais nos sockets.

Les types linéaires peuvent ici nous sauver en refusant à la compilation le second usage de s. De même, la compilation pourrait refuser ce code qui n'utilise pas ecouteSocket ni transfertSocket, la seule façon de les utiliser étant de les fermer. Ainsi les types linéaires permettent de détecter à la compilation des mauvais usages de ressources.

Performance

Haskell est un langage où on maximise la non mutabilité. Ainsi on va préférer créer une nouvelle structure de données plutôt que d'en modifier une. Haskell tire profit de cette non mutabilité pour partager au maximum les parties communes entre plusieurs données.

S'il existe des structures non mutables performantes (à lire, c'est très instructif), ce n'est pas le cas de toutes les structures. Ainsi, un vecteur n'est pas du tout adapté à la non mutabilité, car il faut recopier intégralement celui-ci en cas de modification d'une unique case.

Une des premières choses qui vient à l'esprit c'est que si personne d'autre n'utilise la donnée, on pourrait la modifier sans scrupule. Cette information n'est cependant pas connue à la compilation et serait trop coûteuse à calculer lors de l’exécution.

Les types linéaires permettent de garantir que notre valeur ne sera utilisée qu'une seule fois, sous peine de refuser de compiler. Cette information en main, une bibliothèque pourra proposer des fonctions optimisées avec mutation pour remplacer les fonctions qui copient. Et cela sans faire apparaître de mutation dans le code utilisateur.

Exemple d'Haskell : le dîner des philosophes

La fin de cette dépêche est consacrée à un exemple de résolution d'un problème en Haskell. Merci à jiehong de m'avoir soufflé l'idée de présenter la mémoire transactionnelle.

Introduction

Nous allons nous intéresser au problème des philosophes. Il s'agit d'un problème classique de programmation concurrente qui brille autant par son énoncé trivial que par le nombre de problématiques d’implémentation qu'il soulève.

À une table ronde d'un restaurant italien, des philosophes discutent en mangeant. Chaque philosophe a à sa droite et sa gauche une fourchette, qu'il partage avec son voisin de droite et de gauche.

Pour manger, un philosophe doit prendre les deux fourchettes, il pourra ensuite manger pendant un laps de temps variable, puis reposera les fourchettes. Cependant, en prenant les fourchettes, il empêche son voisin de droite et de gauche de manger.

Le problème est donc d'ordonnancer le repas des philosophes en évitant des situations d'interblocage courantes tel que :

  • des « dead lock », où un philosophe sera en attente d'une fourchette prise par une autre philosophe lui-même en attente d'une autre fourchette. On peut imaginer une situation ou tous les philosophes sont bloqués de cette manière.
  • des « live lock », où les fourchettes changent de main en permanence, mais sans que personne ne puisse manger.

Une solution simple à ce problème consiste en l'usage d'un verrou global. Chaque philosophe désirant manger va tenter de prendre le verrou global et une fois celui-ci verrouillé, il prendra ses deux fourchettes si et seulement si les deux sont disponibles. Cette solution est triviale à implémenter, mais ne passe pas à l'échelle, car elle séquence toutes les opérations de prise ou de dépose des fourchettes. Il faut donc employer une stratégie plus fine.

Il existe de nombreuses solutions à ce problème, nombreuses sont complexes à implémenter, et impose une grande rigueur. Par exemple en s'assurant de ne prendre et rendre les verrous toujours dans le même ordre, on s'assure théoriquement qu'il n'y a pas d'interblocage, par exemple si un philosophe s'assure de prendre la fourchette gauche avant la droite. Mais il y a le cas du dernier philosophe de la table qui doit prendre sa fourchette droite avant la gauche, la fourchette droite étant en fait la première de la table. Bref, vous l'aurez compris, ce n'est pas trivial.

Dans cet exemple de code Haskell, nous présenterons une solution utilisant les primitives de STM, "Software Transactional Memory", Mémoire transactionnelle logicielle. Cette technique offre de nombreux avantages, en termes de facilité de programmation et de composition du code.

STM et Haskell

En Haskell, nous pouvons créer une zone de mémoire modifiable par STM grâce à la fonction newTMVarIO. Cette zone contiendra ou pas une valeur. Grâce à putTMVar, nous pouvons mettre une valeur dans la zone. takeTMVar vide la zone et renvoie la valeur. Cette opération est bloquante.

Nous pouvons représenter une fourchette par une TMVar () contenant simplement un (). On aurait pu mettre n'importe quoi dedans, la seule chose nous intéressant étant de savoir si la valeur est dedans ou pas.

On peut composer ensemble un certain nombre d'opérations sur des TMVar et exécuter atomiquement le bloc grâce à atomically.

Les STM divergent d'une stratégie plus classique à base de mutex par :

  • des opérations sont composables. On peut créer une action plus complexe à partir d'une ensemble de petits actions. Bien évidemment, plus l'action est complexe, plus la transaction a des chances d'échouer et de devoir recommencer.
  • les opérations atomiques ont une granularité très fine, car elles ne « verrouillent » que les variables impliquées dans la transaction. Ainsi on peut facilement imaginer modifier une structure de données en plusieurs points par plusieurs threads sans qu'il n'y ait de conflit.
Exemple d’exécution

Pour exécuter le programme, nous ferons appel à stack qui après installation des bibliothèques nécessaires va utiliser GHC en mode interprété, ce programme ne demandant pas de performance particulière.

Le programme prend en paramètre le nombre de philosophes autour de la table. Chaque philosophe est nommé par une lettre. Quand celui-ci commence à manger, la console affiche une lettre majuscule, quand celui-ci s’arrête, elle affichera une lettre minuscule. Les philosophes essayent de manger pendant 30 secondes.

Avec deux philosophes, on est en situation où seulement l'un peut manger :

$ ./Philosopher.hs 2 AaBbAaBbAaBbAaBbA

Avec trois philosophes, seulement un peut manger

$ ./Philosopher.hs 3 AaBbCcAaBbCcA

Avec quatre, c'est plus intéressant. Les philosophes ne peuvent manger ensemble que par groupes de 2, c’est-à-dire soit A et C, soit B et D. Ainsi, pour changer de groupe, il faut que les deux philosophes du même groupe arrêtent de manger en même temps. L’implémentation fait manger les philosophes pendant un temps aléatoire compris entre 0 et 2 secondes, et ils se reposent pendant 100 ms avant de recommencer à essayer de prendre les fourchettes. Ainsi, le moment ou les deux philosophes d'un groupe viennent de s’arrêter de manger ensemble est assez rare :

$ ./Philosopher.hs 4 ACcCaAcCaAcCaAcCcaBDdDdDbBdDbdACcaBDdDbB # ----------------| ICI

Avec plusieurs philosophes, c'est bien plus drôle :

$ ./Philosopher.hs 10 ACEGIcgCGcCgGcaBiJjIeDgFbAiHdChIfGEgGeiEcICaAcCaAeiEIicICgGiIaAeEeEcCgGiIaAeEicICcCigH Implémentation

Cette section détaille une solution en Haskell de ce problème. Des paragraphes d'explications s’intercalent entre les blocs de code qui peuvent être copiés collés en tant que tels dans un fichier Philosopher.hs.

Prélude

On commence par le Shebang décrivant interpréteur à utiliser. Ici stack. La ligne suivante liste les packages nécessaires pour ce fichier, à savoir stm pour l'usage de la mémoire transactionnelle, random pour générer des nombres aléatoires et optparse-generic pour lire la ligne de commande.

#!/usr/bin/env stack -- stack script --resolver lts-9.0 --package "stm random optparse-generic" {-# LANGUAGE OverloadedStrings #-}

Viennent l'import des modules nécessaires pour notre code. J'ai choisi d'importer de façon qualifier chaque fonction afin que le lecteur puisse connaitre sa provenance.

module Main where import Control.Monad (replicateM, forever) import Control.Concurrent.STM (TMVar, putTMVar, takeTMVar, newTMVarIO, STM, atomically) import Control.Concurrent (forkIO, killThread, threadDelay, ThreadId) import System.Random (randomRIO) import Data.Char (toLower) import Options.Generic (getRecord) Fourchettes

La gestion des fourchettes. En premier lieu, le type Fork qui représente une fourchette. Celui-ci contient un TMVar (), c’est-à-dire un conteneur STM qui peut contenir un (), c’est-à-dire « rien ». Mais on peut connaitre la présence ou l'absence de ce rien et c'est ce qui nous intéressera.

data Fork = Fork (TMVar ())

takeFork et releaseFork respectivement prennent et reposent une fourchette. takeFork sera bloquant. On note au type des fonctions que ces opérations s'effectuent sous le contrôle de la STM.

-- | Prend une fourchette. Bloquant. takeFork :: Fork -> STM () takeFork (Fork var) = takeTMVar var -- | Repose une fourchette. Non Bloquant. releaseFork :: Fork -> STM () releaseFork (Fork var) = putTMVar var ()

La création d'une fourchette avec mkFork implique la création d'une TMVar avec newTMVarIO :

-- | Crée une fourchette mkFork :: IO Fork mkFork = do var <- newTMVarIO () pure (Fork var)

Ce morceau de code implique énormément de choses sur Haskell, nous allons nous y attarder un moment. Le type de la fonction est IO Fork, c'est une action d'entrée / sortie qui renvoie une fourchette. La première ligne réalise une action newTMVarIO () qui crée une nouvelle TMVar contenant un (). Celle-ci est stockée dans var. Il ne s'agit pas d'une égalité, mais d'une affectation, ici var est bien le résultat de l’exécution d'une action et non pas une égalité qui serait représentée avec le signe =.

La valeur de retour de la fonction est Fork var c’est-à-dire la TMVar encapsulée dans le type Fork. Cette expression Fork var, de type Fork ne représente pas une action à effet de bord, ainsi elle ne peut pas être la valeur finale de la fonction (qui est de type IO Fork). Il faut donc encapsuler de nouveau le Fork dans une IO, est cela est fait grâce à la fonction pure.

Ne vous en formaliser pas trop, c'est surprenant au début, mais on s'y fait vite.

La création de n fourchettes se fait grace à la fonction replicateM qui réplique l'action mkFork et donc renvoie une liste de Fork. le M ici signifie que on réplique une action. Sinon on pourrait écrire replicate 3 True == [True, True, True] sans le M car True n'est pas une action.

-- | `mkForks n` crée une liste de `n` `Fork` disponibles mkForks :: Int -> IO [Fork] mkForks n = replicateM n mkFork Philosophes

Un philosophe est simplement une structure qui comprend un nom, sous la forme d'un Char, et deux Fork.

-- | Un `Philosopher` est représenté par son nom et deux fourchettes data Philosopher = Philosopher Char Fork Fork

La création de plusieurs philosophes, en se servant de fourchettes est la suivante :

-- | Crée le nombre de philosophes associés aux fourchettes mkPhilosophers :: [Fork] -> [Philosopher] mkPhilosophers forks = zipWith3 Philosopher ['A'..] forks (last forks : forks)

Cette fonction est très concise mais complexe. Nous avons une liste de fourchettes (pour simplifier [fork0, fork1, fork2]) et nous voulons crée une liste de Philosophes chacun associé à une lettre et à deux fourchettes.

On aimerait la liste suivante : [Philosopher 'A' fork0 fork2, Philosopher 'B' fork1 fork0, Philosopher 'C' fork2 fork1].

Un motif apparaît, on voit qu'il s'agit de la fonction Philosopher appliquée à 3 arguments pris respectivement dans 3 listes distinctes grace à la fonction zipWith3 :

  • ['A', 'B', 'C'], que nous représentons ici avec la liste infinie ['A' .. ]
  • [fork0, fork1, fork2], c'est tout simplement forks
  • [fork2, fork0, fork1], qui est ici (last forks : forks)

Cela fonctionne car zipWith3 ne consomme qu'en fonction de la longueur de la liste la plus courte.

Vie d'un philosophe

Une étape de la vie d'un philosophe est une fonction assez longue, mais peu complexe. La prise et la relâche des fourchettes est réalisée dans un bloc atomically, le reste n’étant que des attentes et un peu d'affichage.

-- | Un `Philosopher` essaye de manger. runPhilosopher :: Philosopher -> IO () runPhilosopher (Philosopher name forkA forkB) = do -- Prends les fourchettes de façon atomique, garantie par STM atomically $ do takeFork forkA takeFork forkB -- Affiche son nom en majuscules putChar name -- Mange pendant un temps aléatoire compris entre 0 et 2 secondes time <- randomRIO (0, 2 * 1000 * 1000) threadDelay time -- Affiche la fin du repas (nom en minuscule) putChar (toLower name) -- Repose les fourchettes de façon atomique atomically $ do releaseFork forkA releaseFork forkB -- Attend avant de recommencer pendant 100 ms threadDelay (1000 * 100) forkPhilosopher

Cette fonction, pour un philosophe donné p, crée un green thread qui exécute en boucle infinie grâce à forever une étape de la vie de notre philosophe.

forkPhilosopher :: Philosopher -> IO ThreadId forkPhilosopher p = forkIO (forever (runPhilosopher p)) main

Le main contient un peu de logique pour lire la ligne de commande et crée les philosophes.

main :: IO () main = do -- Lit le nombre de philosophe sur la ligne de commande nPhilosopher <- getRecord "Philosopher" -- Crée les fourchettes et les philosophes forks <- mkForks nPhilosopher let philosophers = mkPhilosophers forks -- Crée les threads par philosophe tIds <- mapM forkPhilosopher philosophers -- Attend 10 secondes et tue les threads threadDelay (1000 * 1000 * 10) mapM_ killThread tIds

Quelques points à discuter dans cette fonction main. En premier lieu j'utilise getRecord pour lire la ligne de commande. Cette fonction, du module optparse-generic, est capable de créer toute seule une interface ligne de commande en fonction du type de retour demandé, ici un Int, en gérant automatiquement la lecture de la ligne de commande, la validation des arguments et l'affichage de l'aide si nécessaire. Cela m'a économisé 3 lignes de logique pour lire les arguments, vérifier qu'il y en avait au moins un, et le convertir en Int et afficher une erreur le cas échéant. Ce n'était pas forcement nécessaire dans ce contexte, mais cela devient extraordinaire avec une interface plus complexe impliquant des arguments optionnels, des drapeaux booléens, ou autres.

La création des fourchettes est une opération avec effets de bord, d'où l'affectation du résultat avec <-. La création des philosophes elle ne réalise pas d'effet de bord, c'est une fonction pure, d'où l’égalité = qui signifie réellement que philosophers est sémantiquement équivalent à mkPhilosopher forks dans les lignes qui suivent. C'est un outil de compréhension de code que je trouve plaisant.

Pour finir, la création des threads se fait avec mapM qui va applique la fonction forkPhilosopher à chaque philosophe et renvoyer l'identifiant du thread crée.

Conclusion

GHC 8.2 c'est sympa, il y a pleins de nouvelles fonctionnalités qui rendent heureux un développeur Haskell régulier. Mais soyons réaliste, ce n'est pas ces nouvelles fonctionnalités qui vont vous motiver à utiliser Haskell, c'est pourquoi j'ai essayé de présenter un cas concret d'utilisation du langage sur un problème assez classique d'algorithmie.

Télécharger ce contenu au format Epub

Lire les commentaires

Agenda du Libre pour la semaine 32 de l’année 2017

6 août, 2017 - 01:17

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

Sommaire [QC Montréal] DebConf17 - la conférence annuelle de Debian - Du dimanche 6 août 2017 à 09h00 au samedi 12 août 2017 à 17h00.

DebConf est la conférence annuelle où les gens qui développent Debian et autres personnes intéressées se réunissent dans le but d'améliorer Debian.  Les DebConf précédentes ont accueilli des présentateurs et participants de partout dans le monde pour parler de Debian.  Par exemple, l'année passée, à Cape Town en Afrique du Sud, DebConf16 a vu venir du monde de 30 pays différents.
Étant donné que le travail qui est fait sur Debian par ce monde divers est effectué en anglais, les événements DebConf ont lieu en anglais, aussi.  Cependant, pour l'Open Day, la journée portes-ouvertes qui précède DebConf17, nous encourageons les gens qui le veulent de présenter en français.
Pour plus de renseignements par rapport à DebConf17, voir le site web à https://debconf17.debconf.org/

[QC Montréal] Ring on! Célébrez et échangez avec l’équipe Ring! - Le mardi 8 août 2017 de 18h30 à 21h30.

Vous êtes amicalement invité à la soirée "Ring on! Célébrez et échangez avec l’équipe Ring", ce mardi 8 août de 18 h 30 à 21 h 30 dans les locaux de Savoir-faire Linux.
Célébrons ensemble la sortie de la première version stable de Ring "Ring 1.0 - Liberté, Égalité, Fraternité ", un logiciel de communication libre et universel, paquet GNU, soutenu par la Free Software Foundation.
Rencontrez l’équipe Ring! Échangez, essayez et commentez cette version autour d’un cocktail dînatoire convivial. L’équipe sera ravie de recueillir vos avis et impressions sur cette nouvelle version!

  • Savoir-faire Linux, 7275, rue Saint-Urbain, Montréal
  • URL: https://framadate.org/FMX77NhhRVqW86JE
  • Mots-clés: linux, ring [FR Chartres] OpenAtelier - Le mercredi 9 août 2017 de 20h00 à 23h59. ----- L'OpenAtelier est un moment de rencontre et de partage ou les membres et curieux sont invités à échanger sur leurs idées et leurs projets.

Les espaces techniques sont également ouverts aux réalisations (électronique, informatique, menuiserie, impression 3D, découpe vinyle…).

Pour les curieux, c'est le bon moment pour venir découvrir l'association et ses membres.

[QC Montréal] Wikimania 2017 - Du mercredi 9 août 2017 à 08h00 au dimanche 13 août 2017 à 21h00.

Wikimania est la conférence annuelle célébrant Wikipédia et ses projets frères ; trois jours de conférences, de discussions, de formations et d'ateliers. Des centaines de bénévoles et les sommités du savoir libre du monde entier se réunissent pour débattre, s’informer sur les nouvelles idées et approches, échanger et mettre en commun leurs idées.
Les thèmes de la conférence incluent l’avancement du savoir libre, le rôle des institutions académiques et culturelles au sein du mouvement, la vie privée, les droits de l'être humain et le rôle de la technologie pour faire avancer ces objectifs. Wikimania 2017 portera également un regard plus approfondi sur le rôle du Mouvement au sein de la Francophonie, et la programmation d’événements axés sur la promotion du français et des cultures francophones au sein des projets.
Au-delà de l'événement principal, il y a les événements connexes : le « Hackathon » où la communauté technique qui entoure les projets Wikimedia s’unit pour travailler et contribuer, et le « Sourcethon » où les vétérans et les nouveaux arrivants mettent leurs efforts en commun pour préserver et rendre disponibles des documents écrits historiques.

[FR Toulouse] Rencontre Tetalab - Le mercredi 9 août 2017 de 21h00 à 23h00.

Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

Ouvert au public tous les mercredi soir.

Venez nombreux.

[QC Coteau du Lac] Émission #137 de bloguelinux - Le jeudi 10 août 2017 de 20h00 à 22h00.

bloguelinux.ca est un blogue québécois offrant la diffusion d'un podcast qui traite des logiciels libres, du système d'exploitation Linux et de la technologie en général ; il y a un processeur, il y a un système d'exploitation, c'est certain que ça nous intéresse!
bloguelinux.ca est enregistré le jeudi à 20 heures toutes les deux semaines.
Vous pouvez nous écouter en direct lors des enregistrements à l'adresse http://live.bloguelinux.ca ou directement sur notre site à http://www.bloguelinux.ca en cliquant sur la radio dans le panneau de gauche du site.

[FR Strasbourg] Réunion mensuelle ouverte d'ARN - Le vendredi 11 août 2017 de 18h00 à 22h00.

ARN vous accueil un vendredi par moi pendant le Stammtisch du Hackstub !

Dans ces réunions :
• nous accueillons des visiteur-se-s qui veulent en savoir plus sur notre démarche ou apprendre à nous connaître ;
• nous évoquons les sujets actuels relatifs à l'association et au numérique autour de Strasbourg ;
• nous faisons le point tous-toutes ensemble sur l'avancée des projets de l'association et des projets associatifs environnants ;
• nous profitons de ces instants pour faire avancer les projets de l'association sous forme de groupes de travail ouverts.

Ces réunions se concluent par un repas convivial à l'extérieur.
Ces réunions sont ouvertes à tout le monde, membre d'ARN ou non. Pas d'inscription préalable.

N'hésitez pas à venir échanger avec nous !

[QC Montréal] WordCamp Montréal - Du samedi 12 août 2017 à 08h00 au dimanche 13 août 2017 à 17h00.

WordCamp Montréal est une conférence de deux jours à propos de WordPress, la plateforme de blogue et le système de gestion de contenu le plus populaire au monde. Développeurs, designers, professionnels du Web et blogueurs se rassembleront pour assister à des présentations et des ateliers au sujet de WordPress, et à réseauter.

Cette année, l’événement aura lieu à l’école de gestion John Molson School of Business au centre-ville de Montréal les 12 et 13 août, 2017.

[FR Villeneuve d'Ascq] Libre à Vous - Le samedi 12 août 2017 de 09h00 à 12h00.

Vous souhaitez tester GNU/Linux sur votre ordinateur, vous recherchez un logiciel pour une fonction précise, des conseils ou de l'aide sur les logiciels libres?

Libre à Vous est une permanence destinée à vous faciliter l'utilisation de l'informatique. Vous repartirez avec « le plein » de logiciels libres, fiables, évolutifs, performants et gratuits.

C'est chaque samedi matin au Centre d'Infos Jeunes à la ferme Dupire, 80 rue Yves Decugis à Villeneuve d'Ascq (métro Triolo) de 9h00 à 12h00.

Entrée Libre. Tout Public.

[FR Valenciennes] Permanence ValLibre - Le samedi 12 août 2017 de 09h30 à 12h00.

Permanence assistance informatique.

Dépannage petits bobos informatiques.

Initiation à l'informatique libre.

Tous les samedis ouvrables sauf les derniers samedis du mois et les samedis en période de vacances scolaires.

Si besoin particulier, la prise de rendez-vous est fortement conseillée.

Téléphone accueil MQCV : 03 27 22 43 90

[FR Morogues] Atelier libre - Le samedi 12 août 2017 de 10h00 à 12h00.

Ateliers d'entraide informatique & bricolages divers

Vous souhaitez apprendre à réparer votre ordinateur De l'aide pour installer votre premier linux 

Vous souhaitez aller plus loin avec un ordinateur et héberger vos outils Un coup de main pour finir un montage électronique

[FR La Couronne] Permanence - accueil public - Le samedi 12 août 2017 de 10h00 à 13h00.

Notre permanence d'accueil avec le sourire, le café et les gâteaux !

Lieu de rencontre et d'échange convivial pour discuter informatique et outils numériques.

Cette association permet à chacun de découvrir également l'univers de Linux et par extension de tous les **logiciels* et matériels libres*.

Entrée Libre. Tout Public.

[QC Montréal] Réparothon INSERTECH à la Foire Écosphère - Le samedi 12 août 2017 de 13h00 à 16h00.

La Foire Écosphère, Éco2Fest et Insertech co-organisent un Réparothon ! Apportez vos appareils défectueux à nos bénévoles. Ils vous montreront comment s’y prendre pour les réparer et les optimiser, afin de prolonger leur durée de vie et de réduire leur empreinte écologique.
Événement gratuit, le nombre de places est limité : premier arrivé, premier servi.
Appareils acceptés :

Télécharger ce contenu au format Epub

Lire les commentaires

tsrc — un gestionnaire de dépôts git

5 août, 2017 - 20:20

Gérer du code dans plusieurs dépôts différents est toujours un peu compliqué. Chez tanker.io nous avons une petite équipe de développeurs, et chacun des membres peut être amené à coder dans plusieurs langages (C++, Go et JavaScript, principalement). Comme une grande partie du code est encore propriétaire, nous utilisons une instance GitLab hébergée dans nos locaux.

Il existe plusieurs façons de gérer la synchronisation entre dépôts : la manière qui nous convient le mieux est d’avoir la même branche (ou le même tag) sur les dépôts concernés. Ceci nous a amené à développer notre propre outil, tsrc, qui est désormais disponible sur GitHub, sous licence BSD.

Pourquoi GitHub et pas GitLab ? Simplement parce que GitHub, bien que propriétaire, assure une meilleure visibilité au projet.

Nos contraintes :
  • bonne prise en charge de Windows (ce qui exclut repo ou gws) ;
  • un seul fichier central permettant de connaître la liste précise des dépôts à cloner et leur localisation (ce qui exclut les outils comme mu-repo, ou scm.py) ;
  • d’un autre côté, nous n’avons pas vraiment besoin de gestion des dépendances entre dépôts (ce que mu-repo gère bien), parce que nous préférons avoir un dépôt par langage ;
  • pas de dépôt « maître » contenant plusieurs sous‐dépôts (ce qui exclut git-submodule et git-subrepo).
Démonstration

Vous pouvez vous faire une idée précise de comment fonctionne tsrc en regardant la démonstration que nous avons publiée sur asciinema.

Installation

tsrc est codé en Python et naturellement disponible sur Pypi.

Il est utilisé par tous les membres de notre équipe, que ce soit sous GNU/Linux, macOS ou Windows. La version minimale requise pour tsrc est Python3.3. Notez que le support de Python 2.7 est exclu (simplement parce que Python3 est, de notre point de vue, un bien meilleur langage que Python2.7). Sur une distribution pas trop vieille (Python 3.3 étant sorti en 2012), un simple pip3 install tsrc --user fera donc l'affaire, après avoir rajouté ~/.local/bin dans votre PATH au besoin.

Utilisation Clone initial

tsrc fonctionne en utilisant un fichier « manifest » en YAML :

repos: - src: foo url: git@gitlab.local:acme/foo - src: bar url: git@gitlab.local:acme/bar

Le « manifest » en question doit être présent dans un dépôt Git. Cela fait, vous pouvez récupérer les dépôts en utilisant :

$ tsrc init git@gitlab.local:acme/manifest Mise à jour des dépôts

Vous pouvez mettre à jour tous les dépôts en utilisant :

$ tsrc sync

Un exemple de la sortie console :

Contrairement à repo, tsrc essaie par tous les moyens d’éviter la perte de données ou les effets inattendus. Par exemple, si votre branche a divergé ou que votre dépôt n’est pas « propre », tsrc préférera afficher un avertissement et vous laisser résoudre la situation par vous‐même.

Notez que si vous n’aimez pas le fait que tsrc « cache » les commandes git, vous pouvez utiliser l’option --verbose.

Gestion des « fusiodemandes » GitLab

Vous pouvez créer et accepter des « fusiodemandes » (merge requests) avec tsrc push après un peu de configuration. Pour l’instant, cela ne fonctionne qu’avec GitLab (puisque c’est ce que nous utilisons en interne), mais la prise en charge de Gerrit ou GitHub n’est pas exclue.

# Travail en cours sur ma-belle-branche $ tsrc push --assignee david # Crée une merge request assignée à David # La revue est terminée, on prévient GitLab que la branche # doit être fusionnée dès que l’intégration continue est passée : $ tsrc push --accept Bonus

tsrc contient aussi quelques commandes pratiques comme tsrc log ou tsrc foreach, mais cette dépêche est déjà assez longue. ;-)

Appel à contributions

Les retours sous toute forme sont les bienvenus, dans les commentaires ou directement sur GitHub.

Télécharger ce contenu au format Epub

Lire les commentaires

Le développeur libriste Bassel Khartabil exécuté dans une prison syrienne fin 2015

4 août, 2017 - 18:20

Bassel Khartabil Safadi était un informaticien libriste, emprisonné depuis 2012 par la sécurité syrienne en répression de ses activités en ligne. Une dépêche précédente avait fait état de son arrestation, sa torture, sa condamnation secrète à mort, son transfert vers un lieu inconnu et les craintes pour sa vie. Sa femme a annoncé son décès le 1er août 2017 (elle était sans nouvelles depuis deux ans, il a été exécuté en novembre 2015 et le gouvernement syrien vient juste d’indiquer son décès).

EFF (traduction par mes soins) : « La seule consolation est que Bassel, avant et après sa détention, en a inspiré beaucoup à rejoindre la cause qu’il appréciait autant. Jusqu’à ses tous derniers instants, sa femme et ses amis s’assurèrent qu’il le savait, partageant cette précieuse connaissance avec Bassel, comme lui avait partagé sa connaissance avec le monde. Il a toujours su qu’il était aimé et n’était pas oublié : et ainsi, rempli de cette certitude, même dans ces derniers jours, Bassel savait en effet que son esprit était libre. »

Amnesty International : « Bassel Khartabil restera dans nos mémoires comme un exemple de courage, lui qui a pacifiquement combattu pour la liberté jusqu’à la fin. »

Cette dépêche est aussi l’occasion de mentionner divers appels pour la libération de détenus politiques lancés par diverses structures comme l’EFF, Amnesty International ou RSF.

Télécharger ce contenu au format Epub

Lire les commentaires

Les journaux LinuxFr.org les mieux notés du mois de juillet 2017

4 août, 2017 - 14:59

LinuxFr.org propose des dépêches et articles, soumis par tout un chacun, puis revus et corrigés par l’équipe de modération avant publication. C’est la partie la plus visible de LinuxFr.org, ce sont les dépêches qui sont les plus lues et suivies, sur le site, via Atom/RSS, ou bien via partage par messagerie instantanée, par courriel, ou encore via médias sociaux.

Ce que l’on sait moins, c’est que LinuxFr.org vous propose également à tous de tenir vos propres articles directement publiables, sans validation a priori des modérateurs. Ceux‐ci s’appellent des journaux. Voici un florilège d’une dizaine de ces journaux parmi les mieux notés par les utilisateurs… qui notent. Lumière sur ceux du mois de juillet passé.

Télécharger ce contenu au format Epub

Lire les commentaires

Toulouse, le Capitole du Libre 2017, l’appel à participation est lancé !

4 août, 2017 - 14:59

L’édition 2017 du Capitole du Libre se tiendra cette année les samedi 18 et dimanche 19 novembre à l’ENSEEIHT de Toulouse. Le Capitole du Libre est un événement gratuit et libre d’accès consacré aux logiciels libres et à la culture libre. Organisé par l’association Toulibre avec l’aide des clubs étudiants de l’ENSEEIHT (Net7, TVn7 et CAn7), il est orienté à la fois vers le grand public et le public spécialisé.

Des conférences et des ateliers auront lieu tout au long du week‐end ; des stands et des animations seront proposés au public pour leur faire découvrir le monde du Libre.

L’appel à participation est ouvert à tous et à toutes jusqu’au 24 septembre 2017 23 h 59 (heure de Toulouse), vous pouvez proposer une conférence ou un atelier (ou les deux) sur https://participez-2017.capitoledulibre.org. Jusqu’au 31 octobre, il est également possible de demander un espace pour un stand associatif/communautaire. Libristes d’Occitanie et d'ailleurs, n’hésitez pas à faire circuler l’information et éventuellement à proposer une intervention.

Votre participation pourra s'inscrire dans une des thématiques suivantes:

  • Enjeu du Libre ;
  • Découverte du Libre ;
  • Communauté du Libre ;
  • Vie privée ;
  • Culture libre ;
  • Big Data ;
  • Machine Learning ;
  • Graphisme/3D ;
  • DevOps ;
  • Développement mobile ;
  • Développement embarqué ;
  • Python ;
  • C++/Qt ;
  • Web et JavaScript ;
  • tout autre sujet que nous n'aurions pas envisagé !

L’après‐midi du vendredi 17 novembre, une intervention à la médiathèque José Cabanis est organisée. Les Libristes investiront l’@telier numérique et les tables rondes devant cet espace pour échanger et partager leur passion commune avec le public. L’April et Framasoft y seront représentés.

Télécharger ce contenu au format Epub

Lire les commentaires

Mozilla Common Voice : vers une reconnaissance vocale libre

1 août, 2017 - 11:46

La Fondation Mozilla a discrètement lancé le projet Common Voice, qui a pour objectif de fournir une base de données de voix à destination des développeurs de logiciels de reconnaissance vocale. D’ici la fin de l’année, la base de données sera mise à disposition de la communauté sous licence CC-0, et pourra être utilisée par les développeurs pour entraîner leurs logiciels de reconnaissance vocale.

Il est actuellement possible de participer depuis le Web, en lisant des phrases en anglais et en indiquant son accent, son âge et son genre pour enrichir la base de données. Des applications sont déjà en cours de développement pour les appareils mobiles et devraient être disponibles prochainement. Pour ceux qui ne parlent pas anglais, il est aussi possible de contribuer au projet en produisant des phrases pertinentes ainsi que du code dans GitHub.

Télécharger ce contenu au format Epub

Lire les commentaires

Lectures de vacances, offertes par le groupe Transcriptions de l’April

30 juillet, 2017 - 23:33

Depuis le mois de janvier 2017, ce sont un peu plus de 36 heures d’enregistrements audio et vidéo concernant le logiciel libre et les libertés numériques en général, qui ont été transcrites, relues, finalisées et publiées sur le site de l’April.

La version texte de ces fichiers audio et vidéo permet :

  • d’augmenter leur indexation sur les moteurs de recherche ;
  • d’améliorer leur accessibilité aux personnes porteuses de handicaps ;
  • de retrouver les propos exacts des intervenants, les utiliser sans trahir leur pensée en citant fidèlement la source.

Cependant, en cette période de vacances, cela permettra aussi à chacun et chacune de « lire » conférences, émissions de radio, reportages, etc., quitte ensuite à regarder ou écouter l’enregistrement en question.

Et pour celles et ceux qui souhaiteraient participer, n’hésitez pas ! Vous pouvez rejoindre notre groupe, peut‐être commencer en relisant une transcription déjà effectuée, puis vous lancer en choisissant un enregistrement qui vous motive et dont vous pensez qu’il serait souhaitable qu’il soit disponible sous forme texte. Bon courage !

À moins que ceci ne fasse partie de vos bonnes résolutions de rentrée, en septembre !

Télécharger ce contenu au format Epub

Lire les commentaires

Agenda du Libre pour la semaine 31 de l’année 2017

29 juillet, 2017 - 23:13

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

Sommaire [FR Paris] Les premiers mardis de la monnaie libre et équitable - Le mardi 1er août 2017 de 19 h à 21 h 30.

Afin de faire vivre notre première monnaie libre, Gwan, mise en orbite depuis le 8 mars dernier, nous vous proposons des rencontres mensuelles tous les premiers mardis du mois à PARIS pour :

  1. échanger nos clés publiques G1et/ou Gtest, en vue d'accorder nos certifications en toute sécurité
  2. échanger sur nos expériences, idées ou autres propositions sur l'usage de G1
  3. aborder le domaine de la technique noeuds Duniter, Césium, Sakia, Silkaj, Yunohost, etc.

Les premières rencontres ont eu lieu à partir de 18 Heures 30 au café Bert's situé au forum des Halles sous le cinéma, à quelques mètres de la Place carré.

La prochaine rencontre aura lieu le 1er août prochain*, même lieu à partir de 19 heures*.

Afin de gérer au mieux les rencontres, 2 mailings listes sont créées,

l'une pour les inscriptions aux rencontres

S'abonnerhttps://framalistes.org/sympa/subscribe/inscriptions_reunions_gtest_g1
Se désabonnerhttps://framalistes.org/sympa/sigrequest/inscriptions_reunions_gtest_g1

et l'autre, pour les échanges et discussions

S'abonnerhttps://framalistes.org/sympa/subscribe/monnaies.gtest.g1
Se désabonnerhttps://framalistes.org/sympa/sigrequest/monnaies.gtest.g1

Précision ces rencontres sont LIBRES et donc largement ouvertes à tous quelque soit la géolocalisation de chacun

A bientôt.

site officiel : https://fr.duniter.org/

forum : https://forum.duniter.org/

[QC Montréal] Linux-Meetup Montréal - Le mardi 1 août 2017 de 19h00 à 22h00.

Local de la rencontre : à confirmer
Programmation de la rencontre
Ce mois-ci, le thème de la soirée sera les réseaux sous Linux:  

[FR Chartres] OpenAtelier - Le mercredi 2 août 2017 de 20h00 à 23h59.

L'OpenAtelier est un moment de rencontre et de partage ou les membres et curieux sont invités à échanger sur leurs idées et leurs projets.

Les espaces techniques sont également ouverts aux réalisations (électronique, informatique, menuiserie, impression 3D, découpe vinyle…).

Pour les curieux, c'est le bon moment pour venir découvrir l'association et ses membres.

[FR Toulouse] Rencontre Tetalab - Le mercredi 2 août 2017 de 21h00 à 23h00.

Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

Ouvert au public tous les mercredi soir.

Venez nombreux.

[FR Poitiers] Jeudi du Libre - Le jeudi 3 août 2017 de 17h30 à 20h30.

Comme chaque premier jeudi du mois, les membres de l’APP3L se réunissent au Centre Régional d’Information Jeunesse (CRIJ).

Et vous invitent à les rejoindre, de 17h30 à 20h30, afin d'échanger et d'en apprendre plus à propos des logiciels libres.

Si vous le désirez, vous pouvez venir avec votre ordinateur portable ou fixe (nous prêterons écrans, claviers et souris).

Cette permanence est l’occasion pour chacun de :

  • rencontrer d'autres utilisateurs.
  • de discuter ou de s’informer.
  • de trouver de l’aide (vous pouvez amener votre machine).
  • ou tout simplement de découvrir.

Entrée Libre. Tout Public.

Accès 64 rue Léon Gambetta 86000 Poitiers

[FR Rennes] Barbecue du Libre - Le jeudi 3 août 2017 de 19h00 à 23h00.

L'association Actux organise un barbecue du Libre le jeudi 3 août.

Rendez-vous à 19h au parc des Gayeulles. On verra sur place si on s'installe du côté des barbecues ou devant l'étang.

Chaque participant apporte ce qu'il souhaite manger, boire et partager.

Entrée libre et gratuite.

[FR Paris] Soirée de Contribution au Libre - Le jeudi 3 août 2017 de 19h30 à 22h30.

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

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

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

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

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

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

Regazouillez sur Twitter - Wiki des soirées

Programme non exhaustif

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

tout nouveau projet est le bienvenu.

[FR Villeneuve d'Ascq] Libre à Vous - Le samedi 5 août 2017 de 09h00 à 12h00.

Vous souhaitez tester GNU/Linux sur votre ordinateur, vous recherchez un logiciel pour une fonction précise, des conseils ou de l'aide sur les logiciels libres?

Libre à Vous est une permanence destinée à vous faciliter l'utilisation de l'informatique. Vous repartirez avec « le plein » de logiciels libres, fiables, évolutifs, performants et gratuits.

C'est chaque samedi matin au Centre d'Infos Jeunes à la ferme Dupire, 80 rue Yves Decugis à Villeneuve d'Ascq (métro Triolo) de 9h00 à 12h00.

Entrée Libre. Tout Public.

[QC Montréal] Journée portes ouvertes à DebConf17 - Le samedi 5 août 2017 de 09h00 à 18h30.

Nous sommes ravis de pouvoir announcer que l'horaire de la Journée Portes Ouvertes de la DebConf17 est maintenant disponible à https://debconf17.debconf.org/schedule/open-day/
Comme exemples d'activités planifiées pour la journée, citons, entre autres:
A Newbie's Newbie Guide to Debian

[FR Valenciennes] Permanence ValLibre - Le samedi 5 août 2017 de 09h30 à 12h00.

Permanence assistance informatique.

Dépannage petits bobos informatiques.

Initiation à l'informatique libre.

Tous les samedis ouvrables sauf les derniers samedis du mois et les samedis en période de vacances scolaires.

Si besoin particulier, la prise de rendez-vous est fortement conseillée.

Téléphone accueil MQCV : 03 27 22 43 90

[FR La Couronne] Permanence - accueil public - Le samedi 5 août 2017 de 10h00 à 13h00.

Notre permanence d'accueil avec le sourire, le café et les gâteaux !

Lieu de rencontre et d'échange convivial pour discuter informatique et outils numériques.

Cette association permet à chacun de découvrir également l'univers de Linux et par extension de tous les **logiciels* et matériels libres*.

Entrée Libre. Tout Public.

[QC Montréal] DebConf17 - la conférence annuelle de Debian - Du dimanche 6 août 2017 à 09h00 au samedi 12 août 2017 à 17h00.

DebConf est la conférence annuelle où les gens qui développent Debian et autres personnes intéressées se réunissent dans le but d'améliorer Debian.  Les DebConf précédentes ont accueilli des présentateurs et participants de partout dans le monde pour parler de Debian.  Par exemple, l'année passée, à Cape Town en Afrique du Sud, DebConf16 a vu venir du monde de 30 pays différents.
Étant donné que le travail qui est fait sur Debian par ce monde divers est effectué en anglais, les événements DebConf ont lieu en anglais, aussi.  Cependant, pour l'Open Day, la journée portes-ouvertes qui précède DebConf17, nous encourageons les gens qui le veulent de présenter en français.
Pour plus de renseignements par rapport à DebConf17, voir le site web à https://debconf17.debconf.org/

Télécharger ce contenu au format Epub

Lire les commentaires

Enigmaki : le retour du koala masqué aux chaussettes rayées

29 juillet, 2017 - 15:29

Vous vous souvenez sans doute de Ned et les Maki ? Mais si, le jeu que nous développions il y a quelques années… Le développement du projet a ralenti jusqu’à être différé pour cause de… raisons personnelles diverses (entre autres, l’un d’entre nous était parti finir ses études en Inde), mais notre koala préféré est de retour !

Pas mal de choses ont changé depuis, entre autres :

Un nouveau titre

On vise désormais un public in‐ter‐na‐tio‐nal (carrément) ! Du coup, le jeu est renommé Enigmaki. Parce qu’il y a des énigmes et des makis, alors tant qu’à faire…

Une nouvelle équipe

Néd (Jymistriel, pas le koala masqué aux chaussettes rayées) et moi‐même sommes toujours de la partie, tous les autres sont nouveaux. Du coup, l’équipe se compose désormais comme suit :

  • Néd J., lore designer et level designer ;
  • Priyank, game designer, programmeur et level designer ;
  • Anirban, programmeur et level designer ;
  • Anirudh, graphiste ;
  • Gaël, communication manager ;
  • et moi‐même, game designer et CEO.

Au vu des nombreux changements dans l’équipe (et aussi du fait qu’on aimerait bien pouvoir se nourrir et payer le loyer), la structure a aussi changé. Exit les GGP (association loi 1901), bonjour l’Imaginary Friends Society (société commerciale estonienne). Pas mal de choses justifient le choix de l’Estonie… Entre autres, les visas y sont (relativement) plus faciles à obtenir pour nos amis indiens.

Un gameplay amélioré

Pour commencer, nous avons de nouveaux éléments de gameplay : un nouveau maki, de nouveaux types d’obstacles, des portails, et j’en passe. Un système de quête fera son entrée pour casser la linéarité, et un système de scores plaira aux plus compétitifs. L’histoire que nous avions prévue commence a pointer le bout de son nez, avec quelques personnages secondaires (notre ami Newton y fera une apparition, d’ailleurs). Puis, nous prévoyons d’autres surprises… Ce serait dommage de tout dévoiler maintenant. ;)

Des visuels retravaillés

Quelques images valant plus que mille mots, voici les visuels de Ned et les Maki (avant) aux côtés de ceux d’Enigmaki (après) :

Notez que ces nouveaux graphismes ne sont pas définitifs, mais devraient donner une bonne idée de l’aspect final désiré.

De nouveaux niveaux

Nous prévoyons plus d’une centaine d’énigmes ! Si avec ça vous ne trouvez pas de quoi vous amuser…

Un nouveau moteur

Nous avons entièrement réécrit le code source, cette fois‐ci à l’aide de Godot. À terme, ce moteur nous offre un gain de temps et d’énergie non négligeable, et nous pensons nous en servir lors d’éventuels futurs projets — qu’ils soient en 2D ou en 3D.

Une nouvelle licence ?

C’est encore en réflexion, mais nous nous demandons si Enigmaki restera sous licence Art libre, ou si on ne choisirait pas une autre licence (voire le domaine public vivant) à compter de la version 1.0. En attendant, pas d’inquiétude : Enigmaki reste sous Art libre !

Et il a besoin de vous !

Pour continuer à vivre lui‐même, Ned le koala nous versera nos salaires (si si) afin que nous ne puissions plus reporter le projet à je‐ne‐sais‐quand (au moins). Le truc, c’est que notre koala vient tout juste d’arriver dans ce nouvel univers peuplé de makis et autres créatures, ce qui fait qu’il n’a pas beaucoup de ronds en poche… Il aimerait beaucoup que vous l’aidiez à financer Enigmaki.

Pour ce faire, rien de plus simple : rendez‐vous au restaurant japonais le plus proche sur la page de notre campagne Indiegogo, cliquez sur le beau bouton rose « soutenez ce projet » ou une contrepartie qui vous plaît, et vous aurez tous nos remerciements !

Sinon, n’hésitez surtout pas à en parler autour de vous et à partager les liens suivants :

Merci beaucoup !

Télécharger ce contenu au format Epub

Lire les commentaires

Suricata 4.0 : la détection d’intrusion en mode hipster

29 juillet, 2017 - 15:26

Suricata, l’outil de détection des menaces réseau, passe en version 4.0 avec pléthore de nouveautés :

  • ajout de l’analyse du protocole NFS ;
  • améliorations de la gestion de TLS ;
  • gestion des changements de protocoles (STARTTLS, HTTP CONNECT) ;
  • enrichissement des événements générés ;
  • prise en charge d’analyseurs de protocoles en Rust.

Suricata est un moteur de détection d’intrusions réseau et de supervision réseau orienté sécurité. En clair, il analyse le trafic des réseaux pour détecter des menaces et journaliser les événements. Suricata est disponible sous licence GPL v2 et est développé par une fondation à but non lucratif, l’OISF.

Suricata est devéloppé en C avec depuis la version 4.0 des analyseurs de protocoles en Rust écrits avec utilisant le framework Nom.

La nouveauté la plus fondamentale de la version 4.0 est l’inclusion de Rust, qui est utilisé pour écrire de nouveaux analyseurs de protocoles. Rust a été choisi pour sa capacité à pallier certains des problèmes du C, comme les dépassements de tampons. Le code en Rust utilise Nom qui est un cadriciel d’écriture d’analyseurs (parsers). Cela industrialise l’ajout de nouveaux protocoles. La version 4.0 voit arriver NFS, NTP et une réécriture de DNS. De nombreux autres protocoles devraient suivre rapidement.

Suricata 4.0 marque une étape importante dans l’amélioration des données générées avec des ajouts dans les événements d’alertes au format JSON. Cela va de l’inclusion optionnelle du corps HTTP, à une identification claire des sources et cibles d’une attaque. Mais c’est surtout le nouveau mécanisme d’extraction qui change la donne. Il est en effet maintenant possible d’extraire des données arbitraires sous forme de clefs/valeurs des événements en effectuant la capture par des expressions rationnelles. L’événement généré peut ainsi fournir à l’analyste une compréhension directe des événements et un moyen de réaliser facilement des statistiques.

Télécharger ce contenu au format Epub

Lire les commentaires

FreeBSD 11.1

28 juillet, 2017 - 11:24

Après la publication de versions bêtas depuis le 10 juin 2017 et une première version candidate le 30 juin, FreeBSD 11.1 est disponible depuis le 26 juillet.

C’est la première mise à jour dite mineure de FreeBSD 11 ; ce qui, pour suivre le principe POLA (Principle Of Least Astonishment), ne devrait pas vous exposer à des changements de configuration contraignants.

Pour rappel, FreeBSD est un système complet issu de la famille UNIX, qui comprend un noyau et une base d’outils et de bibliothèques, dont une suite de développement logiciel ainsi qu’un mécanisme d’installation de logiciels tiers.

Cette version rassemble en premier lieu l’ensemble des correctifs publiés depuis la publication de la version 11 et branche nombre d’outils et de bibliothèques de la base sur les révisions officielles (upstream). Elle apporte la prise en charge de nouveaux matériels et de nouvelles fonctionnalités et intègre les améliorations développées tout le long du cycle de développement de la branche 11-STABLE. Elle démine aussi le terrain en déclarant obsolète les outils ou configurations qui pourraient évoluer ou disparaître lors de la sortie de FreeBSD 12. Pensez à consulter les journaux du système, à la recherche d’avertissements qui auraient pu survenir : ils pourraient vous prévenir de l’utilisation de clefs ou de configurations dépréciées et donc susceptibles de disparaître lors de la prochaine mise à jour.

Sommaire À noter

Si cette nouvelle version ne devrait pas bouleverser vos habitudes, ces quelques changements intéressants sont à noter :

  • la suite de compilation Clang/LLVM 4.0 est désormais livrée de base ;
  • les Chromebook sont pris en charge via le pilote chromebook_platform(4) ;
  • blacklistd(8), le démon venu de NetBSD qui remplit la liste noire de votre pare‐feu à l’initiative d’autres démons, écoute le serveur OpenSSH.

Un important travail d’amélioration d’IPsec a été effectué, avec, en autres, l’intégration de la pseudo‐interface réseau if_ipsec(4), qui implémente des tunnels IPsec virtuels pour créer des routes sur VPN.

Les récentes annonces concernant les failles de type « stackclash » ont été entendues et cette version propose un correctif.

Procédures

Plusieurs moyens sont à votre disposition pour obtenir le système, de l’installation complète sur une machine physique aux images pour hyperviseurs en passant, bien sûr, par la simple mise à jour.

Des DVD, manuels et autres décapsuleurs sont en vente sur le site FreeBSD Mall.

Installation

Cette version est disponible pour un grand nombre d’architectures, des classiques AMD64/x86 aux ARMv6 en passant par les PowerPC et SPARC64. Téléchargez une image depuis le site officiel à graver sur CD (ISO) ou clef USB (img).

Notez que les images ARM et ARM64 configurent par défaut le compte freebsd/freebsd sur ssh. Pensez à les mettre à jour, ainsi que le mot de passe du super‐utilisateur root.

Pour installer aisément le système dans une machine virtuelle, des images au format QCOW2 (QEMU), VHD (VirtualBox), VMDK (VMware) et raw (HDD), sont proposées pour les architectures AMD64, x86 et AArch64.

En ce qui concerne les cibles ARM64 et AArch64, une amorce EFI modifiée pour QEMU est requise pour pouvoir démarrer :

% qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \ -bios QEMU_EFI.fd -serial telnet::4444,server -nographic \ -drive if=none,file=VMDISK,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -device virtio-net-device,netdev=net0 \ -netdev user,id=net0

Attention, l’architecture ARM64 présente quelques soucis décrits dans le paragraphe suivant.

Des images sont aussi proposées par Amazon et Vagrant.

Désormais, l’installeur, bsdinstall(8) prend en charge les réseaux cachés lors la configuration du Wi‐Fi. De plus, il crée une partition UEFI plus grande, de 200 Mio.

Mise à jour

S’il ne s’agit que de mettre à jour une version antérieure, suivez la procédure
habituelle :

# freebsd-update upgrade -r 11.1-RELEASE

Acceptez ou adaptez les fichiers de configuration, puis installez le nouveau système :

# freebsd-update install # shutdown -r now # freebsd-update install

Il est ici conseillé de mettre à jour tous les logiciels installés :

# freebsd-update install Errata

Plusieurs problèmes sont apparus sans avoir pu être corrigés avant la sortie de cette release, consultez les errata pour vérifier que votre installation n’est pas concernée.

i386

FreeBSD pourrait échouer à démarrer sur i386 suite à l’intégration de kern.kstack_pages. Pour contourner le problème, appuyer sur Échap dès le démarrage, pour obtenir une invite de commande et entrez :

set kern.kstack_pages=4 boot depuis les sources

Suite à un bogue dans les anciennes versions de Clang, il est recommandé de mettre à jour les machines sous 9.x vers la révision r286035 et les machines sous 10.x vers r286033, si vous reconstruisez le système depuis les sources.

ARM64

L’architecture ARM64 ne fournit pas d’horloge RTC sous EFI, le système va donc démarrer sans avoir de date correctement configurée.

Les installations dont la partition racine (root) est sous ZFS peuvent refuser de démarrer. Malheureusement, il n’y a pas de solution à ce problème.

VirtualBox

Les systèmes qui tournent sous VirtualBox et qui ont mis à jour depuis la RC2 doivent réinstaller le paquet virtualbox-ose-additions ou virtualbox-ose-additions-nox11. Pour assurer le démarrage après la mise à jour, désactivez vboxguest dans rc.conf(5).

Nouveautés

On trouve un bon nombre de nouvelles options de configuration ou de construction dans cette publication. La plupart vous permettent d’adapter le système à vos besoins et aux limites de votre machine.

Configuration

Le fichier src.conf(5) est destiné à configurer votre système, la base comme le noyau, lors de sa construction. Les variables suivantes amènent de nouvelles fonctions ou de nouveaux comportements :

  • WITHOUT_TCP_WRAPPERS : le service inetd(8) ne prend plus en charge libwrap ;
  • WITHOUT_LIBTHR : la bibliothèque libthr(3) et les fichiers associés sont maintenant validés et supprimés lors d’un delete-old-libs ;
  • WITH_RPCBIND_WARMSTART_SUPPORT : elle permet de construire rpcbind(8) sans la prise en charge (-w) de démarrage à chaud warmstart (sauvegarde des infos RPC en cas de coupure).

Depuis quelques années, afin de vous permettre de configurer vos machines plus finement tout en conservant une base générique, nombre d’outils ou services incluent un répertoire ou un fichier /usr/local/etc pour leur configuration en plus de /etc. Cette révision apporte cette facilité pour les logiciels suivants :

  • cron(8) lit /usr/local/etc/cron.d en plus de /etc/cron.d ;
  • syslog.conf(5), lit /etc/syslog.d et /usr/local/etc/syslog.d par défaut.

Les scripts periodic(8), qui prédéfinissent des actions à réaliser à intervalles réguliers, comprennent de nouveaux éléments :

  • les options anticongestion_sleeptime et consolidating random sleeps remplacent daily_ntpd_avoid_congestion, dont les valeurs par défaut sont de 3 600 secondes ;
  • ajout de 410.status-mfi (daily_status_mfi_enable) pour surveiller les contrôleurs RAID mfi(4).

Ajout de l’entrée jail_confwarn dans rc.conf(5) qui élimine les avertissements générés par des configuration jail(8) obsolètes.

Démarrage

L’option vfs.root_mount_always_wait est ajoutée ; elle force le noyau à attendre la fin des montages, même si le point de montage racine est présent. C’est utile en particulier pour attendre les montages sur USB.

L’option EARLY_AP_STARTUP du noyau est activée par défaut sur les architectures AMD64 (MINIMAL et GENERIC) comme i386 ; elle active les processeurs restants ( Application Processors , grosso modo : mettre en route le SMP ) plus tôt dans le démarrage du noyau. Ce qui devrait l’accélérer (un peu).

L’amorçage EFI prend en charge TFTPFS, qui permet de démarrer depuis le réseau sans serveur NFS. Levez le drapeau LOADER_TFTP_SUPPORT lors de la construction du chargeur d’amorçage pour l’activer, depuis make.conf(5). La variable netproto fixe la méthode avec les valeurs NET_TFTP, NET_NFS ou NET_NONE. En cas d’appel à dhcp, le choix va dépendre des options choisies.

ZFS

Le système de fichiers phare de FreeBSD a été revu et amélioré.

En particulier, l’intégration de l’outil zfsbootcfg(8) permet des configurations dans le style de boot.config(5) pour zfsboot(8).

La clef vfs.zfs.debug_flags disparaît au profit de vfs.zfs.debugflags qui peut être appelée depuis loader.conf(5) ; donc, dès le démarrage.

La clef vfs.zfs.compressed_arc_enabled, est activée par défaut. Elle autorise la compression en mémoire des données ARC de ZFS, ce qui permet de stocker plus de cache en mémoire. Pour compléter, top(1) présente la part du cache qui est compressée et calcule son ratio :

ARC: 390M Total, 49M MFU, 332M MRU, 16K Anon, 2165K Header, 6895K Other 310M Compressed, 397M Uncompressed, 1.28:1 Ratio

En revanche, vous ne pouvez plus créer d’instantanés (snapshots) ZFS directement par un mkdir sous le répertoire .zfs.

Base

La base, appelée aussi « le monde », est l’ensemble des outils et bibliothèques livrées avec le système. Tout ou presque aurait pu être listé sous ce chapitre. J’indique ici les apports isolés auxquels je ne pouvais pas consacrer une rubrique.

Le moteur de jail(8) permet désormais d’assigner explicitement des adresses IPv4 et IPv6.

Il est possible de router les sorties stdout et stderr de daemon(8) vers syslog(3) ou un fichier.

L’outil ELF(1) a été branché sur la révision r3490. En particulier, il précise désormais l’architecture ARM de l’objet.

L’utilitaire strings(1) a corrigé son statut en cas d’erreur survenue sur une liste de fichiers.

L’interpréteur Shell tcsh a rejoint la version 6.20.0.

L’outil de génération d’analyseurs byacc(1) rejoint la version 20170201. À noter : nombre d’apports venus de NetBSD.

L’outil primes(6) liste des nombres premiers au‐delà de 3825123056546413050, jusqu’à 264 - 1 (en fait, (uint64_t)(-1)).

reproducible.org

Des efforts ont été fournis pour suivre les recommandations de reproducible-builds.org et ainsi permettre de mieux cerner et corriger les problèmes rencontrés par les utilisateurs.

Par exemple, groff(1) utilise la première date du fichier CHANGELOG, donc la plus récente, plutôt que celle du fichier à traiter. À noter que ce vénérable outil sera déclaré obsolète dès FreeBSD 12.

Amélioration de mandoc(1) pour rendre sa sortie plus cohérente. En particulier, l’ordre de parcours des fichiers est prédéterminé, les pages et leurs liens, triés.

Le script sys/conf/newvers.sh comprend les options (-[rR]) qui permettent d’exclure les métadonnées (hostname, username) de la construction du noyau. Vous pouvez fixer cette option dans src.conf par WITH_REPRODUCIBLE_BUILD.

Le système de démarrage UEFI fixe l’horodatage des objets PE/COFF à une valeur arbitraire, mais connue.

Noyau et ABI

Cette rubrique s’adresse surtout aux développeurs et à ceux qui aiment se concocter un noyau aux petits oignons ou améliorer la sécurité de l’ensemble.

Quand l’horloge temps réel (RTC) est mise à jour, par clock_settime(2), les fils d’exécution (threads) en sommeil sont réveillés et leur valeur de « temps de sommeil » est réévaluée.

La bibliothèque libmd (chiffrement) ajoute des fonctions qui prennent comme argument un descripteur plutôt qu’un nom de fichier.

Correction d’un bogue qui date d’une importation de BSD4.4-Lite (il y a 23 ans) : la routine kvm_close(3) renvoie un masque correspondant aux erreurs survenues depuis le dernier appel à close(2) au lieu de 0.

Arrivée de clock_nanosleep(2), ex-nanosleep(2), pour se conformer à POSIX.

L’extension reallocarray(3) venue d’OpenBSD, déjà incluse dans la libc, est utilisée en lieu et place de realloc dans nombre de bibliothèques (dont la libc elle‐même) pour mieux contrôler les débordements.

Suite aux récentes découvertes sur les stack clashes, le drapeau MAP_GUARD a été intégré à l’allocateur mémoire mmap(2) pour poser une barrière sous la pile.
Ces barrières sont aussi utilisées par rtld(1), si le noyau le permet.
Notez que HardenedBSD a choisi une implémentation différente pour protéger le système.

Développer, Compiler, déboguer

La chaîne de compilation est portée à la version 4 de LLVM/CLang, sur toutes les architectures. Vous pouvez enfin utiliser lldb et son interface utilisateur depuis la base.

Plus triviale, mise à jour des en‐têtes pour fournir les entrées suivantes :

  • définition de max_align_t pour assurer la compatibilité C11 ;
  • ajout du qualificatif nullability dans la libc ;
  • l’attribut GNU __nonnull__ a été remplacé par le nullability de Clang ; Les portages compilés avant janvier 2017 (r312860) devront être reconstruits.

Enfin, l’option WITH_LLD_AS_LD a été ajoutée ; elle installe ldd(1) sur /usr/bin/ld. Quel que soit ce réglage, l’éditeur de liens (linker) reste ld(1) pour le noyau et le monde. Ce réglage n’est activé par défaut que sur ARM64.

Notre bmake à nous intègre la version 20170510, en coopération avec NetBSD.

Pour déboguer plus aisément, ptrace(2) prend en charge les événements de vfork(2).

Les vidages mémoire (core dumps) contiennent maintenant les identifiants des processus (PID) et les arguments précisés en ligne de commande.

On ne peut plus accéder à /dev/kmem via mmap(2). Pour cela, vous devez utiliser les appels read() et write().

Manipulation de variables UEFI via efivar(8).

Bacs à sable

L’intégration des solutions d’accès cloisonnés aux ressources, Capsicum et cloudabi, continue…

Capsicum est pris en charge par bspatch(1).

cloudabi(4) comprend les binaires 32 bits dans un environnement 64 bits si l’option du noyau COMPAT_CLOUDABI32 est activée.

Plusieurs routines peuvent maintenant être appelées en mode cloisonné :

L’hyperviseur bhyve est en cours de « capsicumisation ».

Réseau

Que ce soit sur la pile réseau elle‐même, les fonctionnalités ou sur la prise en charge de nouvelles cartes, cette version apporte de nombreuses nouveautés, à commencer par le travail sur les protocoles liés à IPsec(4).

IPsec

Les modules ipsec et tcpmd5 ont été ajoutés ; ils sont chargés automatiquement si l’option IPSEC_SUPPORT est activée dans le noyau. Ceux‐ci apportent l’interface if_ipsec(4). Dans les configurations, l’option IPSEC_FILTERTUNNEL du noyau a été abandonnée au profit des clefs net.inet.ipsec.filtertunnel et net.inet6.ipsec6.filtertunnel. Pour les développeurs, le code associé a été déplacé vers sys/netipsec.

Prise en charge par défaut de NAT-T. L’option du noyau IPSEC_NAT_T a été supprimée.
Modification de setkey(8) pour afficher la configuration NAT-T. Les commutateurs -g et -t permettent d’afficher respectivement les règles globales et virtuelles, associés aux drapeaux -D et -P.

Suppression de l’encapsulation de type UDP_ENCAP_ESPINUDP_NON_IKE.

Pare‐feu

Quelques modifications majeures du pare‐feu ipfw(4) :

  • accès aux états dynamiques par un nom ;
  • ajout du module ipfw_nptv6, implémentation de Network Prefix Translation for IPv6 de la RFC 6296 ;
  • ajout du module ipfw_nat64, implémentation de règles NAT64 stateless et stateful ;
  • ajout du module ipfw_pmod, conçu pour manipuler les paquets de n’importe quel protocole, mais qui ne comprend que TCP MSS` actuellement.

OpenSSH prend en charge (enfin) blacklistd(8). Pour l’activer, ajoutez l’option UseBlacklist=yes dans votre sshd_config(5) ou sshd_flags="-o UseBlacklist=yes" dans votre src.conf(5).

Le drapeau keep state d’IPFilter n’inclut plus par défaut keep frags, pour respecter la spécification.

Pile

La pile réseau comprend l’appel ip6_tryforward(), qui en réduisant le nombre de contrôles améliore les performances.
Correction d’un cafouillage lors de l’émission de message UDP log_in_vain ou d’appel de inet_ntoa() dans un contexte concurrentiel.

Amélioration du redimensionnement automatique du tampon de réception de la pile TCP ; elle se déclenche par période de RTT (temps estimé d’une transmission suivie d’un acquittement). De plus, ce redimensionnement partage une fonction commune entre la méthode standard et les modules fastpath et n’est plus réinitialisé lors des réceptions en mode bulk (gros volumes). Tout ceci a permis un bond de performance d’environ 3 Mio/s à 100 Mio/s des téléchargements sous AWS S3.

Prise en charge des retransmissions GARP (gratuitous ARP), la nouvelle clef net.link.ether.inet.garp_rexmit_count en fixe le nombre maximum.

Venu de NetBSD, getaddrinfo(1) a débarqué.

Protocoles

Le client NFS est corrigé pour gérer correctement l’erreur NFS4ERR_BAD_SESSION. Il prend désormais en charge l’Elastic File System (EFS) d’Amazon.

Le client RPC du noyau évite de créer une nouvelle connexion TCP à la réception d’un ERESTART depuis un sosend().

Il est possible désormais de sauvegarder un mot de passe de plus de 18 caractères sur SMBFS.

Matériel

Le pilote cxgbe(4), dont le micrologiciel est porté à la version 1.16.45.0, s’attache aux cartes Chelsio T6. De plus, la fonctionnalité VFS (virtual functions) de ces modèles est apportée par le pilote cxgbev(4). Pour aider au débogage de ces cartes, l’outil cxgbetool(8) a été introduit.

Les pilotes suivants ont été ajoutés :

  • bnxt, pour les cartes Ethernet BCM57301/2/4 et BCM57402/4/6 ;
  • miibus(4), pour les contrôleurs Ethernet Microchip/Micrel KSZ9031 ;
  • alc(4), pour les contrôleurs Ethernet Atheros® Killer E2500™ ;
  • qlnxe(4), dont le micrologiciel a été porté à 8.30.0.0, pour les contrôleurs Ethernet basés sur Cavium® Qlogic™ 45000.

L’interface pour commutateur Ethernet etherswitch(4) ajoute les cartes RTL8366RB et RTL8366SR à sa collection.

le module ctl(4) ne prend plus en compte les périphériques iSCSI. C’est désormais le rôle de cfiscsi(4). Ajoutez WITH_ISCSI=yes dans src.conf(5) pour que les outils ctladm(8) et ctld(8) le prennent en charge.

D’un point de vue général, devctl(8) ajoute la commande clear driver qui supprime une assignation forcée par set driver.

Obsolescence programmée

Dans l’idée de promouvoir lldb, the debugger, les débogueurs gdb et kgdb sont dépréciés. Si leur disparition de la base est prévue pour la prochaine version majeure, cela ne devrait pas être le cas sur toutes les architectures.

Outre groff déjà mentionné, la série des vénérables « r-outils », rlogin, rwho et autres rsh, ainsi que les démons associés sont déclarés obsolètes. Il est prévu de les supprimer dans la version 12.

Du côté des pilotes, on annonce la fin de la prise en charge des périphériques et outils suivants :

Afin de respecter le POLA, Principle Of Least Astonishment, le système vous avertit pour toute déclaration d’un pilote, d’un outil ou d’une clef dépréciée.

Matériel

En vrac, FreeBSD prend en charge, améliore ou intègre de nouvelles fonctions aux périphériques suivants :

  • apport du module cfumass(4), qui fournit une interface aux matériels USB On‐The‐Go pour les déclarer en tant que lecteurs de mémoire Flash ;
  • jedec_ts(4) prend en charge les sondes de température pour les extensions mémoire ; actuellement, ce pilote comprend les cartes compatibles avec la spécification JEDEC JC 42.4 ;
  • le pilote mpr(4) comprend le tri‐mode (SAS/SATA/PCIe) des contrôleurs de disques Broadcom® et intègre plus de sorties de diagnostic apportées par NetFlix ;
  • prise en charge des cartes ARM Allwinner A13 ;
  • le pilote de clavier atkbdc(4) prend en charge les pavés tactiles via la clef hw.psm.elantech_support de loader.conf(5) ;
  • prise en charge des contrôleurs CPIO pour Intel® Bay Trail™ via bytgpio(4).

Le pilote des cartes SD mmcsd(4) dépend aussi de geom_flashmap. De plus, ce pilote dépend maintenant explicitement de celui de son bus mmc.

Virtualisation

Le transfert (passthrough) de périphériques PCI de bhyve(4) permet une configuration plus dynamique en autorisant l’affectation de périphériques vers l’hôte ou l’invité au‐delà du chargement de vmm. La clef hw.vmm.iommu.enable désactive cette fonction.

Chez Microsoft®, Hyper-V™ propose des machines virtuelles FreeBSD :

  • prise en charge de ces derniers passthrough PCI ;
  • le pilote de réseau virtuel hv_netvsc(4) implémente une interface pour gérer les cartes qui permettent le partage de ressources, Virtual Function (VF), c.‐à‐d. les cartes réseau Mellanox® Connect-X3™ ; ceci afin de permettre une migration sans coupure ;
  • mise à jour du chargeur UEFI pour pouvoir amorcer des machines virtuelles de deuxième génération ;
  • prise en charge des claviers synthetic keyboards.

Chez Amazon® EC2™ :

  • activation de l’IPv6 par défaut ;
  • intégration du module ena(4), soit la nouvelle génération de l’Elastic Network Adapter.
Correctifs

Les logiciels suivants ont été modifiés pour corriger un défaut de sécurité :

Les logiciels suivants ont été corrigés :

À venir

La troisième édition d’Absolute FreeBSD est en préparation.

Le dépôt de logiciels portmaster sera‐t‐il toujours maintenu ?

Rendez‐vous à l’EuroBSDCon qui se déroulera à Paris du 21 au 24 septembre 2017.

Télécharger ce contenu au format Epub

Lire les commentaires

Xen Orchestra 5.10 — Interface Web pour XenServer

26 juillet, 2017 - 20:01

Une fois n’est pas coutume, plus d’un an après la dernière dépêche sur la version 4.12 de Xen Orchestra, voici une présentation actualisée de la solution Web de gestion d’infrastructure XenServer.

Rappel : Xen Orchestra (XO) est une solution d’administration et de gestion d’infrastructure Xen, utilisant en particulier la pile d’outils XAPI embarquée dans XenServer.
Le logiciel est libre (AGPL v3) et est également commercialisé sous la forme d’une version clef en main installée et pré‐configurée dans une machine virtuelle avec un support professionnel.

Sommaire Introduction

Xen Orchestra est un outil d’administration pour XenServer avec plusieurs fonctionnalités additionnelles liées aux usages et demandes de sa communauté.
Trois grands axes de développement existent actuellement : la facilité de l’administration, les options de sauvegarde (backup) et le Cloud. Xen Orchestra restant une solution complètement en ligne et sans agent à installer sur les machines.

Administration

Globalement, Xen Orchestra est conçu pour être « user friendly ». L’interface Web permet une gestion pratique d’une infrastructure depuis n’importe quel appareil connecté à Internet. Les principales fonctionnalités d’administration sont donc :

  • la création de machines virtuelles (VM) ;
  • la gestion des machines virtuelles ;
  • la possibilité de filtrer selon vos besoins pour retrouver facilement une VM (utilisation d’étiquettes…) ;
  • l’édition de statistiques et de métriques pour obtenir une vision claire de votre infrastructure.
Sauvegarde et récupération

L’une des grandes demandes de la communauté était la gestion des sauvegardes de machines virtuelles. Xen Orchestra a développé plusieurs fonctionnalités allant dans ce sens, et renforce régulièrement la solidité de son code pour obtenir de meilleures performances.

La version 5.10 apporte une série de correctifs sur les tâches de sauvegarde pour mieux gérer les erreurs qui peuvent survenir et, de manière générale, réduire le nombre d’erreurs qui se produisent.

Les principales fonctionnalités en termes de sauvegardes sont :

Les instantanés (snapshots)

Système le plus simple à déployer. Il s’agit de créer une image de votre machine virtuelle et de la sauvegarder sur le même espace de stockage que celui de la machine virtuelle. En d’autres termes, c’est simple et rapide mais, si la machine est perdue, la sauvegarde est perdue aussi.

La sauvegarde complète

La possibilité de programmer une sauvegarde complète de votre machine virtuelle et de l’exporter vers n’importe quel type d’espace de stockage (Xen Orchestra fonctionne au niveau de l’hyperviseur). C’est une solution qui consomme beaucoup d’espace de stockage puisque vous sauvegardez l’ensemble des données ainsi que les disques de la machine virtuelle.

La sauvegarde incrémentale

Après une première exportation complète au format XVA, seules les « deltas » seront exportés. C’est une solution qui permet d’économiser à la fois la bande passante et l’espace de stockage. Une fois la période de rétention atteinte, les deltas vont automatiquement fusionner avec le fichier XVA d’origine.

Le plan de reprise

Similaire à la fonction de sauvegarde complète, le plan de reprise a pour but de réduire le temps de reprise. Au lieu de sauvegarder les données des machines virtuelles sur un espace de stockage quelconque, le tout est envoyé directement sur un XenServer prêt à redémarrer en cas de sinistre.

La réplication continue

Système similaire au plan de reprise, il permet d’envoyer directement sur un autre XenServer les données de vos machines virtuelles pour être en mesure de reprendre rapidement le service. À la différence du plan de reprise, une fois la première exportation réalisée, le système n’enverra que les deltas pour réduire la consommation de bande passante et gagner en rapidité.

Les fonctionnalités Cloud

Xen Orchestra embarque maintenant des fonctionnalités destinées à faciliter l’accès au Cloud lorsque l’on administre une infrastructure XenServer

Liste de contrôle d’accès

Les listes de contrôle d’accès (ACL : Access Control Lists) sont des permissions destinées à contrôler les ressources accessibles par vos utilisateurs ou groupes d’utilisateurs. C’est un outil à utiliser quand il s’agit de déléguer des ressources comme des machines virtuelles qui sont déjà existantes.

Libre service

À l’opposé des listes de contrôle d’accès se trouve le libre service, lorsque vous souhaitez déléguer la création de ressources. L’idée du libre service, c’est de permettre à des utilisateurs de créer des machines virtuelles dans un ensemble de ressources limité par un administrateur.

Prise en charge de cloud-init

Avec la prise en charge de cloud-init, vous intégrez un grand nombre de données et d’informations lors du premier démarrage de votre machine virtuelle :

  • initialiser la clef SSH ;
  • créer des utilisateurs ;
  • configurer le nom de l’hôte ;
  • et bien plus…
Modèle économique

Xen Orchestra est un logiciel libre (sous licence AGPLv3) qui propose différentes éditions avec différentes fonctionnalités, ainsi que du support. La facturation est fixe, ce qui signifie qu’il n’y a pas de différence de prix en fonction du nombre de serveurs, d’hôtes ou nombre de processeurs ou de cœurs utilisés.

Trois éditions payantes existent. La version Starter (70 US$/mois) est destinée à l’administration, la version Enterprise (200 US$/mois) apporte un grand nombre de solutions de sauvegarde et la version Premium (500 US$/mois) débloque l’ensemble des fonctionnalités existantes.

La seule exception à ce système de prix fixe est l’offre ponctuelle actuellement proposée, qui est limitée aux utilisateurs disposants de trois processeurs ou moins. Vous pouvez trouver des infos ici.

Télécharger ce contenu au format Epub

Lire les commentaires