Linux France

S'abonner à flux Linux France
Mis à jour : il y a 2 heures 37 min

Parution de Firefox 43

Samedi 19 Décembre

Firefox 43.0 et 43.0.1 sont respectivement parus les 15 et 18 décembre 2015, nous revenons ci-dessous sur les nouveautés de ces versions.

Avertissement : ces nouveautés sont aussi attirantes qu'un aller-retour en pharmacie pour mettre à jour sa carte de sécurité sociale. Espérons une version plus excitante la prochaine fois.

Pour combler la dépêche, quarante-trois est le nombre de lettres dans l’alphabet francophone, en incluant les 17 caractères spéciaux æ, à, â, ä, ç, é, è, ê, ë, î, ï, œ, ô, ù, û, ü et ÿ (26 + 17).

 

Firefox bureau
  • La protection de pistage dans la navigation privée permet de bloquer des pisteurs supplémentaires. S'il ne faut retenir qu'une nouveauté de cette version, c'est peut-être celle-ci.
  • Firefox a un binaire officiel 64 bits pour le système d'exploitation Windows.
  • Choix des suggestions dans la barre d’adresse parmi les marques-pages, l’historique et les onglets ouverts.
  • Amélioration de l’API pour la gestion de la lecture du m4v.
  • Affichage du clavier à l’écran lors de la sélection du champ de saisie sur les périphériques sous Windows 8 ou supérieur.
  • Le rapport de santé utilise à présent le même mécanisme de récupération de données que telemetry.
Firefox mobile
  • Marquage lu/non lu sur les articles dans la vue liste de lecture.
  • Indicateur de son sur les onglets.
  • Amélioration de l’accessibilité pour le défilement, le zoom, le braille et le menu contextuel de réponse sur l’écran de lecture.
  • Nouveau style de séparation des vues pour la vue de l’historique sur tablette en mode paysage.
  • Mise à jour de la barre de menu pour s’adapter avec les derniers designs de l’interface Android.
  • Amélioration de l’API pour la gestion de la lecture du m4v.
  • Inclusion de l’URL lors du partage d’un texte sélectionné d’une page web.
Améliorations pour les développeurs
  • La fenêtre de WebIDE peut désormais s'intégrer à la fenêtre principale de Firefox, à la façon des DevelopperTools. Pour rappel, WebIDE est l'environnement de développement pour FirefoxOS, dont l'avenir s'est récemment assombri.
  • La directive hyphens de CSS Text Level 3 est maintenant acceptée, sans son préfixe "-moz-".
  • Une requête réseau affichée dans la console pointe désormais sur l'onglet "Réseau" au lieu d'ouvrir une popup.
  • Les balises script et link acceptent un attribut integrity qui est une signature du contenu attendu. Cette norme Subresource integrity, bien que déjà implémentée dans Chrome 45 et ses dérivés, est encore expérimentale.
  • Affichage des logs du serveur dans la console grâce à l'implémentation du protocole Chrome Logger.
  • En cas d'exception dans le code JavaScript, la console affiche désormais la pile d'appel (stacktrace). Au passage, cela s'applique aux assertions, ce qui était la demande initiale pour avoir des rapports d'erreurs compréhensibles dans les tests unitaires d'EcmaScript6.
  • Possibilité de choisir la résolution d’image d’une capture d’écran avec la commande en ligne de commande graphique (GCLI).
  • Possibilité de filtrer les styles à partir des noms des propriétés dans la vue des règles.
  • Bouton de recherche à côté des propriétés CSS substituées pour rechercher des propriétés similaires dans la vue des règles.
  • Nouveau menu contextuel « utilise dans la console » qui se trouve dans l’inspecteur pour stocker les éléments sélectionnés dans une variable temporaire.
  • Touche F1 pour ouvrir les réglages lorsque la boîte à outils est mise en avant.
  • Marquage de vue qui montre un indicateur pour les pseudos classes vérouillées pour des éléments.
  • L’inspecteur d’animations affiche à présent les animations dans une vue chronologique
  • La propriété transfor-origin est à présent gérée pour les éléments en SVG.
Pendant ce temps là Netflix pour Windows

Pour Vista et supérieur, version 32 ou 64 bits :
Visualisation des vidéos de Netflix en HTML5 sous Windows

Firefox OS est bronsonisé

Deux journaux pour lire les avis des lecteurs de LinuxFr.org et donner le sien :

Prochaines versions Firefox 44
  • Amélioration de la page d’avertissement dans les cas d’erreurs de certificats et de connexions non certifiés.
  • Lecture des vidéos avec le codec H.264 sous GNU/Linux lorsque FFmpeg est disponible.
  • Lecture des vidéos en WebM/VP9 sur les systèmes d’exploitation qui n’intègrent pas le MP4/H.264.
Firefox 45
  • Il était prévu que Firefox 43 soit compilé avec GTK+3 uniquement sous GNU/Linux. Finalement l’échéance a été repoussée à la version 45.
Télécharger ce contenu au format Epub

Lire les commentaires

Actualités de l'association LinuxFr

Samedi 19 Décembre

Quelques petites actualités concernant l'association LinuxFr : cette dépêche contiendra des problèmes logiciels, du suspens, un bilan financier, des soucis matériels, pas de neige, un rapport moral, mais aussi une visite au datacenter et une élection du bureau. Et tout cela le même jour, le 9 décembre 2015.

    Sommaire Compte-rendu d’intervention sur le serveur zobe le 9 décembre 2015 Le problème de sauvegarde

    Voir les dépêches précédentes si vous voulez un peu d'historique sur les serveurs de l'association (1, 2, 3, etc.).

    Nous utilisons duplicity pour sauvegarder via ssh+rsync+gnupg le serveur de production de LinuxFr.org. Ces derniers mois, les erreurs ont commencé à se multiplier sur la sauvegarde complète hebdomadaire (échecs les 10 octobre, 4, 8 et 29 novembre) : les écritures s'arrêtent brutalement avant la fin du transfert de données, les signatures des fichiers et la liste des fichiers sont vides et, du coup, la sauvegarde est inutilisable et les sauvegardes incrémentales suivantes échouent.

    Exemple :

    1048553614 oct. 4 06:44 duplicity-full.20151004T024201Z.vol27.difftar.gpg 984166400 oct. 4 06:54 duplicity-full.20151004T024201Z.vol28.difftar.gpg 0 oct. 4 07:00 duplicity-full.20151004T024201Z.vol29.difftar.gpg 0 oct. 4 07:07 duplicity-full.20151004T024201Z.vol30.difftar.gpg 0 oct. 4 07:13 duplicity-full.20151004T024201Z.vol31.difftar.gpg 0 oct. 4 07:16 duplicity-full.20151004T024201Z.vol32.difftar.gpg 0 oct. 4 07:23 duplicity-full.20151004T024201Z.vol33.difftar.gpg 0 oct. 4 07:29 duplicity-full.20151004T024201Z.vol34.difftar.gpg 4096 oct. 4 07:34 duplicity-full.20151004T024201Z.vol35.difftar.gpg 0 oct. 4 07:37 duplicity-full.20151004T024201Z.vol36.difftar.gpg 0 oct. 4 07:39 duplicity-full-signatures.20151004T024201Z.sigtar.gpg 0 oct. 4 07:40 duplicity-full.20151004T024201Z.manifest.gpg

    Nous avons d'ailleurs mis en place une détection d'erreur dans le log duplicity via grep -qsE "^(GPGError:|gpg:|BackendException:|Traceback)", mais ça restait du curatif. En cas de souci, on benne la sauvegarde pourrie et on recommence.

    On a creusé un peu le souci et voici quelques infos collectées :

    • l'outil de fuzzing afl évoqué dans un journal sur le fuzzing pour éprouver les entrées de vos développements n'a pas été utilisé pour tester rsync ou duplicity. Dommage.
    • des bugs sur duplicity évoquent des fichiers vides, ça semble possible d'y arriver de plusieurs façons. Bug ouvert #1084778 "manifest.gpg have zero size which breaks next backup" ou #606182
    • il y a beaucoup de bugs ouverts sur Launchpad et personne n'est affecté aux bugs importants
    • les dernières versions duplicity 0.6.x ne sont pas disponibles dans Debian/Ubuntu, qui sont passées aux 0.7.x de toute façon, et a priori le bug est toujours là de toute façon
    • les données SMART sur nos disques ont commencé à nous annoncer une "FAILURE PREDICTION THRESHOLD EXCEEDED" sur un des disques, et d'autres avaient un taux d'erreur qui augmentait
    • un peu plus tard, un disque a carrément disparu du point de vue système d'exploitation.
    La visite au datacenter

    Il fut donc décidé d'aller faire un saut au datacenter pour changer tout ou partie des disques (des 73.4GB 10000RPM SAS 2.5" MAY2073RC de 2006), d'en profiter pour ajouter la carte d'administration distante DRAC dont on parle depuis des années et de réinstaller le système complet en 64 bits avec une Debian fraîche.

    Avec l'accord du trésorier, ravi qu'on lui modifie le budget prévisionnel qu'il venait de nous envoyer pour l'assemblée générale, nous nous sommes procurés huit disques durs de seconde main (pas cher le refurbished et ça permet d'avoir de la réserve) et une carte DRAC d'occasion aussi.

    Et une intervention (par Nils et Oumph) a donc eu lieu au datacenter le 9 décembre 2015 (et il n'a pas neigé).

    La carte DRAC fonctionne et a été installée dans la bête (en haut à droite sur l'image) :

    Un des disques durs avait juste été viré du RAID par la carte. Comme ça, pour rire. Du coup on a remis les disques en RAID 5 avec 7 disques + 1 de réserve (hotspare). On a installé une Debian Jessie 64 bits. On a retiré à chaud le disque pré-défaillant pour remplacement. Au redémarrage, on a re-découvert la blague de Dell sur l'option cochée par défaut sur le RAID "rester bloqué au démarrage bêtement si le RAID a eu un souci" (ça doit être drôle lorsque l'administrateur lance un redémarrage à distance). On déclare le disque remplacé comme nouvel hotspare et on décoche la case pénible.

    On aurait bien mis à jour le BIOS du serveur mais la procédure était prévue pour un bash et une RedHat, et on avait un dash et une Debian (c'est surtout l'aspect « rpm: command not found » le souci). Et puis bon ça faisait déjà plus de 2 heures qu'on était dans le calme et la douceur d'un datacenter. Donc ça sera pour une autre fois. Fin d'intervention, direction fin de configuration dans un bar avec WiFi connu pour avoir hébergé des First Jeudi (bonjour Armel), en attendant l'assemblée générale en fin de journée.

    Reste à savoir si cela va régler le souci de sauvegarde avec duplicity (oui c'était quand même ça le problème à la base) ; en tout cas, la première sauvegarde dimanche s'est bien déroulée.

    Assemblée générale de l’association LinuxFr

    Côté bilan moral, je vous invite à parcourir les dépêches de section LinuxFr.org qui retrace les évolutions du site, les stands tenus, etc. Nous avons aussi discuté du futur, de l'avenir et de la suite (et merci à @hurdmann pour la fluidification des échanges).

    Côté bilan financier, peu de mouvements, en sortie dons et adhésions (April, LQDN), en entrée dons et adhésions et quelques revenus d'un livret A qui rapporte de moins en moins. Au final, un exercice négatif de quelques centaines d'euros.

    Le conseil d'administration et le bureau ont été reconduits.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    e-venement v2.9 "Hinano Beer"

    Samedi 19 Décembre

    e-venement est un logiciel libre de billetterie informatisée (sous licence GPL). La version v2.9.0 « Hinano Beer » est sortie fin novembre 2015. Il s'agit d'un bon cru avec plusieurs nouveautés, et son lot d'améliorations "diverses" :

    • gestion des stocks dans la boutique ;
    • progressions importantes dans les usages des cartes d’abonnement / pass (prix intrinsèque, ajout auto de billets, etc.) ;
    • amélioration notable des emailings avec la possibilité d’ajouter des informations personnelles dans le corps du courriel ;
    • simplification drastique de l’interface de vente, permettant une acquisition de compétences de base beaucoup plus rapide ;
    • support complet de la billetterie « musées » (e-museum) ;
    • accélérations et optimisations notables du moteur.

    En parallèle de cette sortie, l'équipe de développement a fait ses premiers pas vers la version 3 (plus d'infos dans la seconde partie de la dépêche).

    Il est possible de lire sur l'article Wikipedia :

    En septembre 2015, le premier draft (interne à l'équipe de développement) est esquissé quant à l'architecture de e-venement v3. Le logiciel sera publié en GNU/GPLv3 et sera construit sur le framework Symfony 3 (ainsi que, probablement, sur un usage spécialisé de bundles Sonata). Il sera constitué de nombreux bundles semi-autonomes, permettant une très forte modularité, mais surtout une réutilisabilité des modules pour d'autres projets.

    L'idée n'est pour cette version 3 n'est plus de chercher des contributeurs à e-venement. En effet, il semble que e-venement soit un logiciel métier trop spécialisé pour pouvoir intéresser un panel de développeurs suffisant. Ainsi, de permettre une réutilisabilité maximale des composants de e-venement aurait plusieurs effets intéressants : trouver des contributeurs sur une partie du code du logiciel ; optimiser le travail effectué (plus un composant sera utilisé, plus le travail nécessaire à sa production pourra être considéré comme efficace) ; contribuer aux logiciels libres au-delà d'un logiciel final.

    Une autre question se pose, par rapport au Projet de Loi de Finances 2016 : e-venement sera-t-il toujours d'un usage légal suite à son article 38 qui remettrait en cause l'usage de logiciels libres pour gérer une caisse ou de la comptabilité ?

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Edip (Easy Digital Imaging Processing), un programme de traitement d'image pour Linux

    Jeudi 17 Décembre

    Edip (Easy Digital Imaging Processing) sur open-source-projects.net est un logiciel de traitement d'images orienté effets et filtres mais il peut faire beaucoup plus.

    Edip est basé sur la bibliothèque opencv-3.0.0 et utilise pour interface humain machine Gtkmm-3.

    Edip a été écrit en C++ et utilise le concept MVC (Model View Controller).

    • Model: une bibliothèque statique nommée libedip que vous pouvez réutiliser et modifier selon les termes de la license GPLv3 ;
    • View: la bibliothèque de widgets (contraction de Windows Gadgets) pour l'IHM ou GUI ;
    • Controller: une classe C++ faisant le lien entre le modèle et la vue et assurant le contrôle du programme.

    Edip dispose d'une documentation expliquant les techniques de traitement d'images implémentées dans libedip donc dans Edip en anglais au format HTML consultable en ligne ou à télécharger au format zip.

    Interface de Edip:

    Photo de deux personnes passées par l'effet Pencil Sketch suite à une préparation composée de combinaisons d'effets et Denoising appliquées après pour obtenir ce résultat grâce aux composants d'Edip.

    Prise en charge des formats d'image:

    • *.bmp, *.dib (bitmap image file) ;
    • *.jpg, *.jpeg, *.jpe (Join Photographic Expert Group) ;
    • *.png (Portable Network Graphics) ;
    • *.tiff, *.tif (Tag(ged) Image File (Format)) ;
    • *.ras, *.sr (Sun Raster) ;
    • *.pbm, *.pgm, *.ppm (Portable Image Format) ;
    • *.webp.

    Fonctions basiques d'édition d'image:

    • Rotation de 90° vers la droite et la gauche ;
    • Zoom, ayant pour spécificité de pouvoir placer le point sur lequel on veut zoomer ;
    • Miroir, copiant une partie de l'image vers l'opposé ;
    • Flip ;
    • Undo-Redo.

    Plus de 30 effets (filtres) à appliquer tels quels sur votre image :

    • non-photo-réaliste ;
    • intensité de lumière et de couleurs ;
    • recoloration ;
    • aiguisement et floutage ;
    • érodage et dilatation ;
    • détection de contours ayant un rendu analogue à un dessin ;
    • Emboss avec plusieurs opérateurs opencv différents ;
    • pour obtenir des images binaires (images uniquement noir et blanc).

    Mise en ton de couleurs :

    • Couleurs Gris, Rouge, Vert, Bleu, Jaune, Rose et Turquoise ;
    • Selon différents algorithmes
      • la moyenne des canaux de couleur de chaque pixel ;
      • la valeur maximale des canaux de couleur de chaque pixel ;
      • la valeur minimale des canaux de couleur de chaque pixel ;
      • la valeur du canal rouge de chaque pixel ;
      • la valeur du canal vert de chaque pixel ;
      • la valeur du canal bleu de chaque pixel.

    Réglages:

    • d'intensité
      • du rouge ;
      • du vert ;
      • du bleu ;
      • globale ;
    • LHSB (Lightness, Hue, Saturation, Brightness).
      • clarté de l'image ;
      • nuances ;
      • vivacité des couleurs ;
      • luminosité ;

    Note: Je n'ai pas pu implémenter le changement de réglage avec prévisualisation immédiate, dommage !

    Dessiner des formes sur l'image et insérer du texte:

    • Suite de lignes ou ligne unique avec la fonction spéciale de joindre le premier et le dernier trait afin de composer un polygone ;
    • Rectangles ;
    • Cercles ;
    • Polygones
      • Polygone régulier convexe, avec le nombre de cotés configuré ;
      • Polygone barré, avec le nombre de cotés configuré ;
    • Étoiles
      • Étoile simple, avec le nombre de branches configuré ;
      • Étoile ressemblant a une fleur ou une feuille, avec le nombre de branches configuré ;
      • Étoile barré, avec le nombre de branches configuré ;
      • Étoile dont les branches sont des lignes, avec le nombre de branches configuré ;
    • Texte
      • Plusieurs polices disponibles, taille et mise en italique configurable.

    Des kernels configurables selon le type :

    • Sharpen ;
    • Find Edges ;
    • Emboss ;
    • Mean ;
    • Gaussian ;
    • Kirsch.

    Des effets (filtres) morphologiques configurables:

    • Erode (érosion) ;
    • Dilate (dilatation) ;
    • Open (ouverture);
    • Close (fermeture) ;
    • Tophat ;
    • Blackhat.

    L'opérateur Canny est configurable à souhait avec les couleurs de votre choix.

    • Multiplication de couleurs par un facteur, ainsi que le canal alpha ;
    • Mise de votre image dans une couleur quelconque de votre choix.

    Différents algorithmes de mixage de deux images faisant ressortir une image ou l'autre selon un facteur ou pas selon l'algorithme:

    • Blend (mélange en jouant sur la transparence) ;
    • Screen (superposition des deux images inversées) ;
    • Darker (pixels les plus foncés) ;
    • Lighter (pixels les plus clairs) ;
    • Add (additif) ;
    • Add modulo (additif modulo) ;
    • Subtract (soustractif) ;
    • Subtract modulo (soustractif modulo).
    Télécharger ce contenu au format Epub

    Lire les commentaires

    Rétrospective 2015 pour XiVO

    Mercredi 16 Décembre

    Nous arrivons en fin d'année 2015 et il semble intéressant de publier une petite rétrospective de l'année passée pour XiVO. Pour ceux qui ne connaissent pas XiVO, c'est une distribution complète basée sur Debian et Asterisk entre autre, permettant de mettre en place un système téléphonique dans une entreprise ; si on veut utiliser des mots plus compliqués c'est un IPBX ou PABX. L'ensemble de nos développements sont distribués sous la licence GPLv3. Nos travaux de ces dernières années ont pour objectif d'utiliser aussi XiVO comme une véritable plate-forme libre et ouverte pour par exemple monter un PaaS pour les communications unifiées ou bien créer des applicatifs métiers qui ont besoin de téléphonie.

    Nous ne faisons pas de nouvelles à chaque sortie de XiVO car nous avons une organisation dans l'équipe de développement orientée agilité et utilisant Scrum avec une sortie d'une nouvelle version stable et testée toutes les 3 semaines. Ce qui d'ailleurs nous amène à donner quelques chiffres pour cette année 2015.

    XiVO fin 2015 c'est :

    • Nombre de développeurs : 6 (m'incluant)
    • Existence de XiVO : 11 ans
    • Nombre total de lignes de code dans le projet : 326 177

    Pour des statistiques plus précises je vous invite à regarder openhub : https://www.openhub.net/p/xivo-pbx

    Sur notre redmine :

    • Bugs : 242
    • Features : 131
    • Technical : 111

    Il y a environ 3000 visiteurs chaque mois qui viennent consulter notre documentation en ligne, et environ 1700 sur le site de XiVO. Pour comparaison depuis janvier 2015, nous avons une augmentation de 74% environ.

    En terme de couverture, nous sommes vus par 96 pays sur tous les continents.

    Les tops 5 pays sont (en ordre) :
    1. France
    2. USA
    3. Russie
    4. Belgique
    5. Canada

    Nous avons en terme entre 10 et 15 nouvelles installations par jour (estimation basée sur le nombre d'ISO téléchargées sur notre site).

    Sur le forum :

    • 4500 messages
    • 592 personnes activées

    Plus une activité assez importante sur le forum Asterisk France.

    Nous avons fait 20 versions en 2015, notre rythme a changé en cours d'année pour passer de deux semaines à trois semaines.

    De plus, un projet communautaire autour de XiVO est né pendant cette année pour supporter XiVO sur le Raspberry pi 2.

    Côté test, il y a actuellement 344 tests manuels effectués à chaque itération par les développeurs et environ 600 tests fonctionnels automatiques. Nous avons environ 6500 tests unitaires. Vous pouvez consulter notre jenkins.

    Dans l'année, nous avons migré vers Asterisk 13 et notre prochaine version la 15.20 sera livrée avec Debian Jessie (joyeux Noël).

    Côté utilisateur nous avons fait une refonte très important de notre interface permettant le couplage ordinateur et téléphonie. Le design ainsi que l'ergonomie ont été intégralement revus, et il y a également eu des ajouts fonctionnels.

    Nous pouvons également utiliser Docker sur l'ensemble de nos services (des dockerfiles sont fournis dans nos sources). Nos APIs REST ont eu beaucoup d'ajouts permettant ainsi d'avoir une interaction plus forte avec le système, en 2016 nous allons continuer d'en ajouter. Nous avons aussi intégré consul pour la découverte de services et pour nous permettre de pouvoir "autoscaler" horizontalement.

    Pour le mot de la fin, je vous rappelle que l'équipe de développement est très active sur IRC (freenode #xivo) et sur nos forums, n'hésitez pas à nous rejoindre, ça nous fera plaisir.

    J'en profite aussi pour remercier toutes les personnes qui contribuent à XiVO, en participant sur IRC/forum, en soumettant des patches ou des bugs, ainsi que toutes les entreprises (privées/publiques) qui utilisent XiVO tous les jours. C'est grâce à vous que nous pouvons continuer ce projet, merci !

    Nous vous souhaitons de bonnes fêtes !

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Algem, logiciel de gestion d'activités culturelles

    Mercredi 16 Décembre

    Algem est un logiciel libre de gestion d'activités socio-culturelles. Initialement conçu pour les écoles de musiques actuelles, il répond aussi aux besoins des associations, des salles de répétition, des M.J.C ou des centres de formation.
    Conçu en java et s'appuyant sur le SGBD PostgreSQL, Algem est un logiciel Open Source sous licence AGPL. Le code source est ici.

    Il présente un grand nombre de fonctionnalités dont voici un aperçu :

    • Gestion de contacts, des adhérents et du personnel administratif
    • Gestion de groupes
    • Planification de cours et de répétitions
    • Réservation de salles et gestion de matériel
    • Gestion comptable et facturation
    • Heures enseignants et suivi pédagogique
    • Exports csv, mailing
    • Extraction de données pour les statistiques

    Plusieurs instances du logiciel peuvent fonctionner simultanément sur le réseau local. La synchronisation des différents postes utilisateurs est aussi prise en charge. Enfin, Algem est multi-plateformes et peut s'installer sur tout système compatible Java. À ce jour, Algem a été testé avec succès sur les systèmes suivants : Windows (de XP à Windows 10), Ubuntu, Debian, Linux Mint, Mac Os X.

    Les clients ne disposant pas des compétences pour installer Algem à leurs frais peuvent bénéficier de notre formule WebStart et profiter ainsi de l'infogestion de leur base de données. À ce propos, un projet d'interface Web, complémentaire au logiciel, est en cours de développement. Les abonnés à la formule WebStart disposent déjà d'un module de consultation publique des plannings.

    Contrairement à la plupart des éco-systèmes actuels, Algem résiste encore en partie à la dictature du Cloud et s'inscrit plutôt dans la tradition client-serveur. Face au manque d'attrait et de réactivité des applications Web multi-pages ou aux risques liés à la protection des données, les clients lourds ont encore leur mot à dire ! En matière de développement, le pragmatisme est de rigueur, notre expérience nous l'a prouvé en comparaison avec des projets concurrents, classés sans suite malgré de magnifiques cahiers des charges.

    Musiques Tangentes, école de musique fondatrice, s'implique dans le développement et la promotion du logiciel libre depuis plus de 20 ans. En 1995, elle utilisait déjà Linux en réseau pour son administration, c'est dire ! Le créateur d'Algem participa même en son temps au développement de pilotes pour les premiers noyaux Linux. Développé à l'origine ( sous VI :-) ) en raison de l'absence d'un outil administratif adéquat, le logiciel est désormais en service dans plusieurs autres structures, parmi lesquelles Music'Halle à Toulouse, Jazz à Tours ou le Studio des Variétés… Les responsables du développement sont à l'écoute des utilisateurs et ont su au fil du temps répondre aux nouveaux besoins.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    L'UGAP accueille son premier projet open source de gestion de configuration : Rudder

    Mercredi 16 Décembre

    Rudder, déjà mentionné dans plusieurs dépêches sur LinuxFr.org lors des nouvelles versions majeures, est une solution open-source de gestion de configuration. Lancé en 2010, Rudder est aujourd'hui utilisé au sein de productions critiques, des serveurs financiers de la Caisse d'Épargne aux satellites d'Eutelsat, mais aussi dans l'industrie pharmaceutique et automobile.

    Avec Rudder, Normation fait rentrer la première et unique solution de configuration management au catalogue de l'UGAP.

    Qu'est-ce que l'UGAP ?

    L'Union des Groupements d'Achat Public (appelée plus couramment UGAP) est la centrale d'achat dédiée aux institutions publiques françaises. Son objectif est de faciliter les achats de fournitures (à comprendre au sens large, c'est-à-dire du matériel aux services) de l’État. Toutes les branches du secteur public en bénéficient, les collectivités territoriales, le secteur hospitalier comme le secteur social.

    Quel est l'intérêt concrètement ?

    Dans le domaine public, aucun achat dont le montant est supérieur à 15 000 € (pour l'ensemble d'un même projet) ne peut être réalisé en dehors d'un appel d'offre. Ce système étant particulièrement complexe et coûteux en temps, l’État a mis l'UGAP à disposition de ses opérateurs pour faciliter la mise en œuvre de projets qui ne nécessitent pas de mise en concurrence publique. Le principal avantage de piocher parmi les produits et services référencés par l'UGAP réside donc en une procédure d'achat simplifiée, qui ne nécessite pas d'appel d'offre, quel que soit le montant d'achat.

    Rudder à l'UGAP, qu'est-ce que ça change ?

    Jusqu'à aujourd'hui, aucune solution de gestion de configuration open source n'étant présente au catalogue de l'UGAP. Or comme les institutions publiques privilégient en premier lieu les partenaires présents au catalogue de l'UGAP avant de se tourner vers un appel d'offre si aucune solution ne convient, ce sont surtout les éditeurs propriétaires présents au catalogue qui ont remporté ces projets. Aujourd'hui, l'open source vient jouer dans la même cour que les éditeurs propriétaires. En effet, les administrateurs système confrontés à un besoin d'automatisation de la gestion de leurs serveurs pour gagner en temps / stabilité et/ou pour prouver la conformité de leurs machines ont maintenant un outil open source à leur disposition : Rudder. Développé par Normation, éditeur open source, ils ont également à disposition un accompagnement de proximité, en France et en Français, ce qui n'est pas le cas de tous les projets open source de configuration management.

    Référence

    Première académie de France par ses effectifs avec près de 10% des effectifs scolarisés en France, l’académie de Versailles utilise Rudder depuis plusieurs années pour automatiser ses 400 serveurs et mesurer la conformité des configurations de son parc.

    Comment en profiter ?

    Normation organise régulièrement des journées d'introduction pratique à Rudder pendant lesquelles chacun peut mettre les mains sous le capot lors des ateliers. Il faut juste emmener son laptop et avoir de quoi lancer une VM (VirtualBox ou autre). Pour s'inscrire, 20€ de frais de participation sont demandés.

    La prochaine session est le 14 janvier 2016.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Rejoignez la rébellion – adhérez à l’April

    Mardi 15 Décembre

    L'association April a lancé une campagne d'adhésion reprenant les codes d'un célèbre univers de science fiction :

    Cela aurait tout aussi bien pu se dérouler il y a longtemps dans une galaxie lointaine, très lointaine, mais cela se passe ici et maintenant.

    Le nombre d’apriliens rebelles à l’Empire privateur a régulièrement augmenté et leur origine s’est diversifiée, que ce soit les personnes physiques ou les entités morales.

    Les prochaines années s’annoncent cependant encore plus exigeantes et l’issue des duels engagés contre l’Empire dépendra de nos capacités d’adaptation, de mobilisation et d’action.

    Passez à l’action, rejoignez dès maintenant la rébellion avec l'April.

    Télécharger ce contenu au format Epub

    Lire les commentaires

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

    Lundi 14 Décembre

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

    Sommaire

    [Libération.fr] Benjamin Loveluck: «Internet est toujours rattrapé par l’envers de la liberté: le contrôle»

    Par Amaelle Guiton, le vendredi 11 décembre 2015. Extrait:

    Pour ce spécialiste des usages numériques, le Réseau, produit du complexe militaro-scientifique, vise une forme d’auto-organisation qui s’affranchirait de toute autorité politique.

    Lien vers l'article original: http://www.liberation.fr/debats/2015/12/11/benjamin-loveluck-internet-est-toujours-rattrape-par-l-envers-de-la-liberte-le-controle_1420163

    [TourMaG.com] Open Innovation: l'agilité, accélérateur d'innovation

    Par Rémi Bain-Thouverez, le mercredi 9 décembre 2015. Extrait:

    Le tourisme est un des tout premiers secteurs concernés par cette approche stratégique de l'Open Innovation. Fidèle à notre positionnement, nous nous efforçons d’interviewer les protagonistes de notre secteur afin de vous donner des perspectives concrètes. L’idée est bien de vous apporter davantage de réponses que d’interrogation. La société Viaxoft nous livre son analyse.

    Lien vers l'article original: http://www.tourmag.com/Open-Innovation-l-agilite-accelerateur-d-innovation_a77602.html

    [ZDNet France] Apple, un champion de l'Open Source? Non, pas encore

    Par Steven J. Vaughan-Nichols, le mercredi 9 décembre 2015. Extrait:

    Depuis une semaine, le langage Swift d'Apple est en Open Source. Une occasion pour le marketing d'Apple de se revendiquer comme le premier acteur majeur de l'informatique à mettre l'Open Source au cœur de sa stratégie. L'affirmer ne suffit pas cependant pour en faire une réalité.

    Lien vers l'article original: http://www.zdnet.fr/actualites/apple-un-champion-de-l-open-source-non-pas-encore-39829550.htm

    [BFMtv] Loi numérique: la «force» sera-t-elle avec Axelle Lemaire?

    Par Pascal Samama, le mercredi 9 décembre 2015. Extrait:

    Axelle Lemaire a présenté son projet de loi numérique en conseil des ministres. Un texte inspiré, selon la secrétaire d'État, par les Jedi de Star Wars auxquels elle fait référence dans un tweet.

    Lien vers l'article original: http://bfmbusiness.bfmtv.com/entreprise/loi-numerique-la-force-sera-t-elle-avec-axelle-lemaire-935573.html

    Et aussi:

    Voir aussi:

    [Next INpact] État d'urgence: après les perquisitions, les saisies administratives d'ordinateurs

    Par Marc Rees, le mercredi 9 décembre 2015. Extrait:

    Dans le projet de loi constitutionnel sur l’état d’urgence, le gouvernement annonce la possibilité future pour les autorités de saisir le matériel informatique lors d’une perquisition administrative.

    Lien vers l'article original: http://www.nextinpact.com/news/97615-etat-d-urgence-apres-perquisitions-saisies-administratives-dordinateurs.htm

    Et aussi:

    [L'OBS] Aux électeurs du FN: «Ton logiciel est écrit par un immigré et il t’emmerde»

    Par Benoît Le Corre, le mardi 8 décembre 2015. Extrait:

    Don Ho, créateur d’un éditeur de texte, a demandé à ses utilisateurs ayant voté FN d’arrêter d’utiliser son logiciel. Dans la communauté geek, le message est mal passé.

    Lien vers l'article original: http://rue89.nouvelobs.com/2015/12/08/electeurs-fn-logiciel-est-ecrit-immigre-temmerde-262405

    Et aussi:

    [Mediapart] L'Éducation Nationale vend nos enfants à Microsoft pour 13 millions

    Par Ilian Amar, le mardi 8 décembre 2015. Extrait:

    Lequel des deux affiche le plus grand sourire? Sur la photo, la Ministre de l'EN et le PDG de Microsoft France sont rayonnants. C'est pourtant une nouvelle calamité qu'ils annoncent aux élèves, aux enseignants et aux parents…

    Lien vers l'article original: https://blogs.mediapart.fr/ilian-amar/blog/081215/leducation-nationale-vend-nos-enfants-microsoft-pour-13-millions

    Et aussi:

    Voir aussi:

    [JDN] PostgreSQL: pourquoi Météo-France a parié sur l’open source?

    Par Michel Edwell, le lundi 7 décembre 2015. Extrait:

    Face au défi du développement durable, météorologie et climat sont l’objet d’une attention croissante. Une prévision au meilleur de l’état de l’art est une nécessité. Les choix logiciels et matériels effectués par l’organisme français de météorologie ont été déterminants pour atteindre ce niveau de qualité.

    Lien vers l'article original: http://www.journaldunet.com/solutions/expert/62987/postgresql---pourquoi-meteo-france-a-parie-sur-l-open-source.shtml

    [france3] COP21: la bidouille, amie du climat

    Par Sophie Tallois, le lundi 7 décembre 2015. Extrait:

    Faire soi-même, se débrouiller pour réparer plutôt que jeter systématiquement, voilà un moyen d'allier deux bienfaits: mettre un frein à une consommation débridée et retrouver le plaisir de faire avec ses mains

    Lien vers l'article original: http://france3-regions.francetvinfo.fr/cop21-la-bidouille-amie-du-climat-875689.html

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Agenda du Libre pour la semaine 51 de l'année 2015

    Samedi 12 Décembre

    Calendrier web, regroupant des évènements liés au Libre (logiciel, salon, atelier, install party, conférence) en France, annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 32 événements est en seconde partie de dépêche.

    Sommaire Agenda du Libre pour la semaine 51 de l'année 2015 [Paris] MOOC pour contribuer à Wikipédia - Le lundi 14 décembre 2015 de 12h00 à 23h00.

    Les inscriptions au WikiMOOC – des cours en ligne gratuits pour découvrir le fonctionnement de Wikipédia et apprendre à y contribuer – ouvrent le 14 décembre 2015 sur FUN (France Université Numérique).Wikipédia est le septième site web le plus visité au monde, il est entièrement rédigé par des internautes bénévoles et tous ses contenus sont placés sous licence libre Creative Commons.
    Un MOOC est un cours en ligne, massif et ouvert.
    Il se distingue des cours en ligne classiques par le nombre d’apprenants, le fait que ceux-ci constituent une communauté et les fortes interactions entre eux et avec les « enseignants » durant l’apprentissage.Quelques mots sur le projet :

    [Kunheim] Formation Linux - Le lundi 14 décembre 2015 de 18h00 à 22h00.

    Tous les lundis à partir de 18h00 jusqu'à 22h00 venez découvrir ou vous former sur Linux et les logiciels libres.
    Ces séances de formation ont lieu à la salle "Kegreiss" au 56 rue principale - Kuhneim - face à la mairie - cette salle est accessible aux personnes à mobilité réduite.
    Nous vous attendons nombreux. Le Team Linux

    [Paris] Meet up Vim #11 - Le lundi 14 décembre 2015 de 19h00 à 21h00.

    Salut les Vimmortels !
    Vous aviez demandé un meet-up Vim au père Noël, vous avez été entendus !
    L’objectif reste le même : échanger ses trucs et astuces dans un esprit de partage et de collaboration entre vimeurs de tous niveaux.

    [Rennes] Rencontre mensuelle des contributeurs OpenStreetMap 35 - Le lundi 14 décembre 2015 de 20h00 à 23h00.

    La cartographie collaborative vous intéresse, vous contribuez un peu, beaucoup à OpenStreetMap :
    cette rencontre est ouverte à tous, débutants, expérimentés, curieux…
    La salle dispose d'un videoprojecteur et d'une connexion Internet.Venez avec votre ordinateur portable dans la mesure du possible.

    [Lyon] Assemblée Générale Constitutive - Le lundi 14 décembre 2015 de 20h30 à 22h00.

    HADOLY: Hébergeur Associatif Décentralisé et Ouvert à Lyon
    Le lundi 14 décembre 2015 à 20h30 au Gîte Numérique (6 rue Saint Georges, 69005 Lyon, http://www.legitenumerique.com) aura lieu l'Assemblée Générale Constitutive pour créer officiellement l'association Hadoly (http://www.hadoly.fr).
    En quelques mots Hadoly est un projet d'hébergeur associatif, militant et local, à Lyon qui a pour but de fournir des services numériques, à la fois à des particuliers et à des structures (associations, coopératives, artisans, …).

    [Teyran] Notions PC - Le mardi 15 décembre 2015 de 09h00 à 10h00.

    Réaliser une carte de vœux avec le traitement de texte LibreOffice Writer
    Writer est le composant de traitement de texte de LibreOffice. En plus des fonctionnalités habituelles d’un traitement de texte (correcteur orthographique, dictionnaire des synonymes et de coupure de mots, autocorrection, rechercher et remplacer, génération automatique de table des matières et d’index, mailing et autres) Writer fournit des modèles et styles, des méthodes de mise en page incluant les cadres, les colonnes et les tableaux, incorporer ou lie des images, des feuilles de calcul et d’autres objets, il a des outils de dessins natifs, possède un suivi de modification, exporte en PDF, incluant les repères de texte…
    La participation aux ateliers nécessite :

    [Castelnau-le-Lez] Atelier de développement et programmation - Le mardi 15 décembre 2015 de 10h00 à 12h00.

    Rendez-vous hebdomadaire, tous les mardis, salle 40 de la mjc (fermé pendant les vacances).
    Cet atelier de développement est essentiellement axé sur les langages du Web : html, css (même si ce ne sont pas des langages à proprement parler) javascript et PHP, possibilité aussi d’utiliser Ajax, Jquery, Sqlite et MySql.
    Notre équipe vous attend pour répondre à vos questions et satisfaire votre curiosité.

    [Castelnau-le-Lez] Section GNU/Linux - Le mardi 15 décembre 2015 de 10h00 à 12h00.

    L’équipe de Montpel’libre vous propose une permanence de dépannages pour vous aider à vous familiariser avec votre système GNU/Linux au quotidien. Le contenu de l’atelier s’adapte aux problèmes des personnes présentes et permet ainsi d’adapter l’acquisition de nouvelles compétences au rythme de chacun.
    Vous pourrez y aborder plusieurs thèmes :
    Présentation de Linux

    [Épinal] Atelier "Logiciels libres" et présentation de l'Arduino - Le mardi 15 décembre 2015 de 18h00 à 20h00.

    En plus d'un accompagnement PAO (Scribus, Gimp, Inkscape, Libre office, …) avec Léo, "l'atelier logiciels libres" vous propose entre autres :
    Installations de GNU/Linux
    Accompagnement à l'utilisation de "l'informatique libre"

    [Paris] Atelier Design UX UI - Le mardi 15 décembre 2015 de 18h30 à 20h30.

    Atelier Design Digital : Vous me mettrez 100 gr d’UX et 5 morceaux d’UI
    15 décembre @ 18:30 - 20:30
    Dans la série des atelier Do it yourself, l’association Silex Labs vous propose un nouvel atelier pour découvrir les conseils d’un designer professionnel spécialiste de l’UX UI. Il Président de l’entreprise UFO et co-fondateur du projet Silex.

    [Paris] Apéro Parisien du Libre - Le mardi 15 décembre 2015 de 20h00 à 23h00.

    Comme chaque 15 de chaque mois, Parinux vous convie à l'Apéro Parisien du Libre (APL).
    Ce mois-ci, après les attentats de novembre, la vie continue et Parinux est fier de vous accueillir au café bonne bière, mitraillé pendant les attentats et qui vient de réouvrir.
    Cet événement aura donc lieu à l'endroit suivant :

    [Biesheim] Atelier Linux - Le mardi 15 décembre 2015 de 20h00 à 22h00.

    Notre programme actuel, c'est la mise en oeuvre d'un serveur de Web Apache, d'un serveur de mails, mise en route d'un iCloud local, l'utilisation et la gestion des fenêtres et l'installation des compléments Linux, etc…
    iCloud vous permet de synchroniser automatiquement des photos, documents et signets entre votre PC et vos appareils Apple, SmartPhone et Tablette.
    Notre programme à venir, c'est la mise en oeuvre des distributions Linux (Kde, Mint, XFCE, Ubuntu, Mate), LibreOffice, Gimp pour linux, etc…

    [Dijon - Quetigny] Échanger et partager les connaissances sur Linux et les logiciels libres - Le mardi 15 décembre 2015 de 20h30 à 23h30.

    Cette permanence de l'association COAGUL est faite pour vous aider à installer GNU / Linux sur votre ordinateur.
    En double démarrage avec Windows ou en remplacement complet.
    Il est également possible de venir simplement pour échanger autour des logiciels libres.

    [Le Mans] Réunion Linux Maine : Don d'ordinateur - Le mercredi 16 décembre 2015 de 12h00 à 13h30.

    L'association de promotion et de découverte du logiciel libre en Sarthe, Linuxmaine, tient une permanence vendredi 25  Décembre de 12h à 13h30.
    Celle ci est ouverte à tous, membres de l'association ou non.
    Les permanences du mercredi permettent de distribuer des ordinateur recyclés.

    [Perpignan] Formation sécurité informatique et cryptographie - Le mercredi 16 décembre 2015 de 14h00 à 17h00.

    Suite au succès rencontré lors de la première session des ateliers de cryptographie et sécurité informatique, nous vous proposons un nouveau cycle.
    Cette fois-ci, les ateliers auront lieu au Club de la Presse Catalan de Perpignan.
    La permanence avant les ateliers aura lieu le mercredi 25 novembre 2015 de 10h00 à 19h30 dans les locaux du Club de la Presse de Perpignan.

    [Lyon] Rencontre Python - Le mercredi 16 décembre 2015 de 19h00 à 21h00.

    Une rencontre Python est un moment où les développeurs se retrouvent autour d'un verre et d'une présentation pour échanger autour de ce langage. L'accès est gratuit et ouvert à tous. Cet événement est organisé par l'Association Francophone Python (AFPy).
    En l'absence de proposition de présentation cette fois ci, je propose de faire un mini BarCamp : chacun présente rapidement un sujet qu'il aura choisi. Pas la peine de préparer des slides (sauf si tu y tiens), ce sera des micro présentations informelles.
    Comme d'habitude, amenez ce que vous voulez partager à boire ou à manger.

    [Toulouse] Rencontre Logiciels Libres - Le mercredi 16 décembre 2015 de 19h30 à 22h30.

    L'association Toulibre organise une rencontre autour des Logiciels Libres le mercredi 16 décembre, de 19h30 à 22h30 au Centre Culturel Bellegarde, 17 rue Bellegarde à Toulouse.
    Pendant toute la soirée, venez poser vos questions au sujet du Logiciel Libre et trouver de l'aide pour installer ou utiliser des Logiciels Libres sur votre ordinateur.
    Pour cela, vous pouvez si besoin apporter votre ordinateur, un accès Internet est disponible sur place.

    [Orléans] Dessin vectoriel Libre avec Inkscape - Le mercredi 16 décembre 2015 de 20h30 à 22h30.

    Description
    La prochaine conférence de Cenabumix aura lieu mercredi 16 décembre 2015 de 20h30 à 22h30 à la maison des associations d'Orléans
    sur le thème : Dessin Vectoriel Libre avec Inkscape

    [Dijon] Café vie privée, intimité sur internet et hygiène numérique - Le jeudi 17 décembre 2015 de 18h00 à 20h00.

    Nous sommes tous concernés par la problématique de la vie privée numérique et par la sécurisation de nos communications.
    L'association COAGUL en partenariat avec le café le Chez Nous organise un café vie privée.
    Venez découvrir et discuter les règles d'une meilleure hygiène numérique pour s'en sortir au mieux avec un ordinateur pour préserver son intimité et sa vie privée sur internet.

    [Paris] Apéro Opensource #30 - Le jeudi 17 décembre 2015 de 19h00 à 23h00.

    Apéropen source #30 : avec le libre c’est tous les jours Noël
    17 décembre @ 19:00 - 23:00
    Le Père Noël et ses Lutins viennent de se mettre aux logiciels libres et ils trouvent ça vraiment génial, parce qu’avec le libre c’est tous les jours Noël !!

    [Paris] Soirée de Contribution au Libre - Le jeudi 17 décembre 2015 de 20h00 à 23h00.

    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 jeudis soirs dans un environnement propice au travail (pas de facebook, pas de télé, pas de jeux vidéos).
    Vous aurez très probablement besoin d'un ordinateur portable, mais électricité et réseau fournis.

    [Montpellier] Permanence Logiciels Libres - Le vendredi 18 décembre 2015 de 17h00 à 19h00.

    Le Faubourg Marché, qu’est-ce que c’est ?
    Le Faubourg Marché est une permanence partagée qui permet aux associations d’accueillir ensemble, les publics de ces associations une fois par semaine, le vendredi entre 17h00 et 19h00 (ou au delà sous réserve d’accord préalable), au 19, rue du Faubourg de Nîmes, 34000 Montpellier.
    Si vous avez un peu de temps le vendredi soir, voici une occupation qui me semble très intéressante et si vous êtes intéressés par la promotion des logiciels libres, des biens communs, de l’accessibilité, de l’économie sociale et solidaire, de l’innovation sociale et numérique, de l’éducation populaire, ou encore du développement durable.

    [Antibes] Install Party GNU/Linux - Le vendredi 18 décembre 2015 de 18h00 à 21h00.

    Linux Azur a pour objectif la promotion de Linux et des Logiciels Libres sur la Côte d’Azur, régulièrement dans le 06 ou le 83 et, ailleurs, de manière ponctuelle.
    Organise le 18 décembre 2015 de 18h00 à 21h00, une réunion accès Libre, Install Party.
    Vous avez envie de découvrir un système d’exploitation libre, simple d’utilisation, stable, rapide et sécurisé. Une nouvelle façon d’utiliser votre ordinateur.

    [Paris] Quadr'Apéro à Paris - Du vendredi 18 décembre 2015 à 19h00 au samedi 19 décembre 2015 à 00h00.

    Venez discuter des libertés et d'Internet au quadr'apéro mensuel de La Quadrature du Net !
    Afin de se rencontrer, d'échanger et de faire plus ample connaissance, la Quadrature organise régulièrement des rencontres surnommées les quadr'apéros. C'est l'occasion pour les neurones de la Quadrature de se réunir physiquement pour discuter, échanger et partager un verre et de quoi grignoter.
    Les quadr'apéros ont lieu tous les mois (ou presque). Ils sont l'occasion de discussions informelles d'une part et de discussions plus sérieuses sur les différents thèmes d'importance et les différentes actions et campagnes en cours.

    [Villeurbanne] Mapathon Missing Maps - Le vendredi 18 décembre 2015 de 19h00 à 22h00.

    Lors des interventions humanitaires, pouvoir se déplacer, localiser les besoins des populations et coordonner leur intervention est absolument crucial pour les ONG. 
    Dans de nombreux pays du monde, les cartes sont imprécises, obsolètes voire tout simplement absentes. Or, il existe aujourd'hui avec la plateforme de cartographie libre et contributive OpenStreetMap (OSM, le « Wikipédia des cartes ») un outil formidable pour « remplir ces blancs ». Sur OSM, n'importe qui peut en effet participer à la cartographie de n'importe quelle zone de la planète : il vous suffit d'un ordinateur, d'une souris et d'une connexion internet ! Grâce à la couverture globale d'image satellites libres disponible aujourd'hui, il est possible de tracer facilement routes, bâtiments ou cours d'eau, mais aussi de repérer les bâtiments détruits ou encore les pistes d'hélicoptères, autant d'informations cruciales pour les ONG sur le terrain. Les données sont ensuite accessibles à tous les acteurs, mais sont aussi durablement utilisables par tous les acteurs (pouvoirs publics, entreprises, etc.) pour le développement du territoire.
    Nous vous proposons de découvrir comment contribuer à OpenStreetMap durant un « mapathon ». Cet événement s'inscrit dans le cadre de l'initiative globale Missing Maps, projet humanitaire qui vise à cartographier en amont les parties du monde vulnérables aux catastrophes naturelles, crises sanitaires, environnementales, aux conflits et à la pauvreté. Ce projet a été fondé en novembre 2014 par la Croix Rouge Américaine, Britannique, l'Humanitarian OpenStreetMap Team, et Médecins Sans Frontières-UK et a déjà permis de cartographier des villes d'envergure dans des pays tels que le Soudan du Sud, la RDC et la Centrafrique. CartONG, et la Croix Rouge Néerlandaise ont depuis rejoint l'équipe.

    [Villeneuve d'Ascq] Libre à Vous - Le samedi 19 décembre 2015 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.

    [Murbach] Réunion informatisée - Le samedi 19 décembre 2015 de 13h30 à 18h00.

    L'association LUG68 vous invite à sa prochaine réunion informatisée mensuelle, le samedi après-midi à Murbach-près-Guebwiller, où vous pouvez venir avec votre machine, portable ou fixe (nous avons des écrans sur place), pour :

    1. installer GNU/Linux à côté en ou en remplacement de votre système existant
    2. demander de l'aide sur un logiciel libre (toute plateforme)
    [Courthézon] Atelier découverte Arduino - Le samedi 19 décembre 2015 de 14h00 à 18h00.

    Atelier d'initiation à la plateforme Arduino, par la construction d'un prototype d'horloge numérique. Tout ce dont vous avez besoin pour créer vos propres prototypes électroniques et devenir un Maker !
    L’accès à cet atelier est gratuit pour les membres de l’atelier de création numérique Cour_Tech_Zone, et une modeste participation (10 EUR) sera demandée aux non-adhérents.
    Le nombre de places est limité à 10 postes de travail (maxi deux personnes, possibilité pour un adulte de venir avec un enfant) pour les manipulations avec le matériel, mais les auditeurs libres sont aussi les bienvenus pour suivre les présentations, observer les manipulations et poser des questions.

    [Paris] Café vie privée - Chiffrofête de Noël - Le samedi 19 décembre 2015 de 14h00 à 18h00.

    Juste avant les vacances et les fêtes de fin d'année, venez apprendre, découvrir ou revoir les bases de tout ce qui va de l'Hygiène numérique (c'est quoi un bon mot de passe, quel navigateur utilisé, quel logiciel pour faire un coffre fort numérique) jusqu'à de l'Autodéfénse numérique (hacktivistes, lanceurs d'alertes sont les bienvenu-e-s).
    Dans un esprit inclusif, convivial et neutre, venez partager, échanger autour du logiciel libre, du chiffrement (non on ne dit pas cryptage :-), de la neutralité du net, de l'autohébergement, de la degooglisation, des GAFAM (Comment se passer de Google, Facebook…)
    Vaste programme pour un après-midi. Si vous voulez aider, venez.

    [Marseille] Install Party GNU/Linux - Le samedi 19 décembre 2015 de 14h30 à 19h30.

    L’association CercLL (CercLL d’Entraide et Réseau Coopératif autour des Logiciels Libres) vous invite à une install party GNU/Linux, le samedi 19 décembre 2015 de 14h30 à19h30, dans la salle de la Fabulerie  au 4 rue de la Bibliothèque 13001 Marseille (prés du Conservatoire).
    Vous avez envie de découvrir un système d’exploitation libre, simple d’utilisation, stable, rapide et sécurisé. Une nouvelle façon d’utiliser votre ordinateur.
    Vous vous sentez une affection naissante pour le Gnou et le Manchot, les mascottes de GNU/ Linux.

    [Marseille] Assemblée Générale Ordinaire de l'association CercLL - Le samedi 19 décembre 2015 de 18h00 à 19h30.

    L'association CercLL ( CercLL d'Entraide et Réseau Coopérative autour des Logiciels Libres) vous invite à l'Assemblée Générale Ordinaire clôture de l'exercice 2015 qui aura lieu le samedi 19 décembre 2015 dans la salle de la Fabulerie 4 rue de la bibliothèque 13001 Marseille à partir de 18h00, AG À 18H15 précises.
    Ordre du jour :
    Rapport moral par le Président.

    [Brignoles] Dimanche du Libre - Le dimanche 20 décembre 2015 de 10h00 à 19h30.

    Les membres de l'association GULLIVAR (Groupe d'Utilisateurs de Logiciels Libres de l'Intérieur du Var) vous invitent au dimanche du Libre de Brignoles, le dimanche 20 décembre 2015, dans la salle des Saint Anges, chemin de San Sumian à Brignoles.
    Programme de la journée du 20 décembre 2015.
    10h, ouverture de la salle (matinée libre, configuration des pc, install-party, etc..).

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Dr. Geo 15.12

    Samedi 12 Décembre

    Dr. Geo est un environnement entièrement libre de géométrie interactive et de programmation. Il est développé avec Pharo, environnement et langage de programmation porté par l'INRIA.

    Cette version propose des résolutions de bugs, améliorations ergonomiques et quelques nouvelles fonctionnalités.

    Dr. Geo s'utilise à plusieurs niveaux :

    À l'école primaire

    Comme un environnement d'exploration de figures existantes ou bien pour la construction de figures simples.

    Les figures proposées aux élèves peuvent faire appel à des scripts programmés pour produire un feedback enrichi. L'interface est adaptable pour ne laisser que les outils nécessaires et perturber au minimum les élèves.

    La programmation des scripts nécessite une expertise, mais cela permet quand même de créer des contenus pédagogiques évolués à moindre frais, tout en s'appuyant sur l'ensemble de l'outillage informatique de Dr. Geo et Pharo.

    Quelques exemples de telles activités :

    Point et distance
    L'activité affiche des retours textuels et de couleurs (orange/vert)

    Trouver des parallélogrammes
    L'activité scanne les constructions et colorie en vert les réponses correctes et en rouge les mauvaises. Un décompte des bonnes réponses est également affiché.

    Transformer une figure
    L'élève construit une figure selon des consignes données, l'activité vérifie l'exactitude des constructions, fournit un retour de couleur et un décompte de ce qui reste à faire.

    Obtenir une figure demandée
    Ici aucune construction à faire, mais simplement des points à déplacer pour répondre à la question. Il n'y a pas de réponse unique.

    Au collège

    Pour explorer et conjecturer sur des propriétés géométriques en cours d'apprentissage.
    Voir par exemple ce cours en ligne sur l'élaboration d'activités de géométrie interactive au cycle d'orientation genevois.

    Au lycée

    Avec des constructions plus élaborées, programmées directement ou amplifiées avec des scripts. On crée ainsi un contexte d'exploration en analyse par exemple, à l'image des imagiciels des années '90 proposés aux lycées à cette époque.
    Voir les vidéos en lien ci-dessus et les captures écrans ci-dessous :

    Termes d'une suite récurrente
    Le code, écrit pas à pas avec le support visuel, produit une figure dans laquelle l'utilisateur joue sur la valeur du terme initial et un paramètre de la suite (réglette)

    Diagramme coweb
    Dans la figure obtenue, l'utilisateur fait varier la valeur du terme initial ainsi qu'un paramètre de la suite. Il pourra noter ou non la convergence de la suite.

    Pour apprendre à programmer

    Soit à l'aide l'API de Dr. Geo pour créer des figures ou bien en étudiant le logiciel puisqu'il est modifiable depuis lui-même.

    Sierpinski
    La programmation se fait pas à pas. A gauche, l'éditeur du code de la figure, à droite le résultat obtenu dans Dr. Geo.

    Une chaine vidéo présente quelques tutoriels et exemples d'usage. D'autres usages sont imaginables, c'est l'intérêt des systèmes ouverts où les outils de programmation sont accessibles.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Projet de loi de finances 2016 : interdiction des logiciels libres de comptabilité et de caisse

    Samedi 12 Décembre

    Depuis plusieurs années, le gouvernement français s’est engagé dans une lutte contre la fraude à la TVA.

    Le projet loi de finances 2016 comporte un article 38 qui interdira de fait la détention de logiciels libres de comptabilité, de gestion ou d’encaissement.

    Je suis impliqué directement dans la lutte contre ce projet, ce journal vise à fournir une information de première main sur ce qui se passe.

    Scil, société éditrice du logiciel de caisse Pastèque, avait suivi l’apparition de la loi sur la répression des fraudes en décembre 2013. Cette loi imposait de nombreuses obligations aux éditeurs de logiciels de comptabilité, de gestion et aux systèmes de caisse. Loi vaine et inutile, ne venant que pénaliser les éditeurs français. En effet, nul interdiction d’acquérir un logiciel belge, tel Odoo par exemple.

    Dès février 2014, nous sommes avertis par notre partenaire, une grande SSII française, que le gouvernement planche sur un nouveau dispositif. Leur présentation est flippante, nous avons demandé à notre avocate de nous alerter si elle voyait quelque chose passer. Début octobre, nous avons la présentation et l’analyse du projet de loi.

    La section qui nous intéresse dit : 

    Lorsqu’elle enregistre les règlements de ses clients au moyen d’un logiciel de comptabilité ou de gestion ou d’un système de caisse, utiliser un logiciel ou un système satisfaisant à des conditions d’inaltérabilité, de sécurisation, de conservation et d’archivage des données en vue du contrôle de l’administration fiscale

    Notre interprétation est pessimiste : nous le lisons comme l’interdiction de l’édition d’un logiciel libre pour ces domaines ainsi que l’interdiction de détention d’un tel logiciel.
    Nous estimons que cette loi s’inspire des systèmes de caisse en forme de boîtes noires obligatoires de la restauration en Belgique (et dont aucun libriste ne s’est ému). En deux mots, en Belgique, si plus de 10% du CA d’un commerce concerne la restauration, le commerçant est obligé d’utiliser une caisse contenant une boîte noire d’enregistrement de l’activité.

    Ayant pris connaissance du projet, nous contactons notre député de circonscription, M Bernard Roman. L’accueil fut excellent, des premières actions entreprises. mais les attentats puis la campagne des régionales ont eu raison du lien. Dommage. Vraiment dommage.

    Nous alertons également l’April. Le CA ne se saisit pas du sujet et m’invite à gérer moi-même, je suis ancien administrateur de l’association, ainsi qu’à utiliser la liste comptabilite@ comme lieu d’échange. J’y rencontre Baptiste Carvello qui proposa d’excellents amendements et est, à ce jour, la seule personne qui s’intéresse au sujet sur le long terme.

    Un passage radio à l’excellente émission l’écho des gnous sur radio campus Lille a alerté plusieurs personnes de la communauté Dolibarr, aboutissant à l’ouverture d’un Framapad intéressant.

    Plusieurs échanges sur LinuxFr.org (1 et 2) ont amené un doute sur la portée réelle de la loi.

    Le contact perdu avec Bernard Roman a été remplacé par un contact plus efficace avec Christian Eckert, secrétaire d’État au budget et à ce titre en charge de cet article.

    Hier, j’ai donc eu un conseiller du cabinet de M Eckert au téléphone, assez longuement et en deux temps. Que ce soit dit tout de suite : l’échange s’est bien passé.

    Le premier temps a confirmé ma lecture pessimiste de la loi. Un logiciel libre est considéré comme altérable, le but est bien de les interdire, ceci a été confirmé à la reprise du second temps par notre interlocuteur qui venait de prendre 10 minutes pour vérifier l’information.

    En vrac nous avons appris que :
    - Malgré l’utilisation de deux canaux, MM Roman et Eckert, les amendements de Baptiste Carvello n’ont pas été lus
    - Le vote définitif, c’est la semaine prochaine, ils ne toucheront à rien
    - L’entrée en vigueur, indiquée au 1er janvier 2018 dans les notes d’intention, pourrait être avancée au 1er janvier 2017, les « fabricants de logiciels » (sic) étant prêts

    On nous a sorti un argument lénifiant : la loi ne s’appliquant pas tout de suite, elle pourra toujours être corrigée. Honnêtement, je considère que là mon interlocuteur me prenait pour un bleu.

    J’ai usé de l’argument « Prestashop ». Argument en dessous de la ceinture, indiquant que ce qu’ils sont en train de faire concerne des centaines de milliers, si ce n’est des millions, de personnes. C’est moche de dire « on est nombreux, tremblez ».

    Le conseiller insistant sur la possibilité (« L’AFNOR nous a garanti que c’était possible ») d’introduire une section non-libre autour du logiciel libre. Une boîte noire, oui.
    J’ai exprimé que ce point était bloquant non seulement pour moi, mais qu’il le serait pour beaucoup de monde. Le conseiller, certainement trop peu au fait de notre vision du monde, n’a pas semblé avoir compris mais il a au moins accepté le fait.

    Entre autres, j’ai fait la proposition de permettre d’utiliser des logiciels libres transmettant les données à un tiers de confiance. Cette idée n’a pas été rejetée. Nous devons être recontactés, nous ne savons pas quand.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    HADOLY: AG constitutive de l'hébergeur associatif lyonnais lundi 14 décembre 20h30

    Samedi 12 Décembre

    Lundi 14 décembre à 20h30 aura lieu l'Assemblée Générale Constitutive pour créer HADOLY l'hébergeur associatif lyonnais.
    L'AG se tiendra au Gît Numérique, 6 rue Saint Georges 69005 Lyon (site oueb).

    Vous pouvez signaler votre présence et éventuellement votre volonté de participation au projet dans ce Framadate.

    En quelques mots HADOLY (Hébergeur Associatif Décentralisé et Ouvert à Lyon) est un projet d'hébergeur associatif, militant et local, à Lyon qui a pour but de fournir des services numériques, à la fois à des particuliers et à des structures (associations, coopératives, artisans,…). Ces services peuvent inclure du mail, de l'hébergement web, de la messagerie instantanée, du stockage de fichiers, etc. Ceci en respectons la neutralité du Net et la vie privée, en se basant sur du Logiciel Libre et en étant local.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Rudder : la certitude d’une infrastructure robuste pour vos applicatifs critique (Mons, 17/12)

    Vendredi 11 Décembre

    Ce jeudi 17 décembre 2015 à 19h se déroulera la 44e séance montoise des Jeudis du Libre de Belgique.

    Le sujet de cette séance : Rudder : la certitude d’une infrastructure robuste pour vos applicatifs critiques

    Thématique : Infrastructure | Administration systeme | Automatisation

    Public : sysadmin / entreprises / dev / étudiants

    L’animateur conférencier : Nicolas Charles (Normation)

    Lieu de cette séance : HEPH Condorcet, Chemin du Champ de Mars, 15 – 7000 Mons – Auditorium 2 (G01) situé au rez-de-chaussée (cf. ce plan sur le site d’Openstreetmap; ATTENTION, l’entrée est peu visible de la voie principale, elle se trouve dans l’angle formé par un très grand parking).

    La participation sera gratuite et ne nécessitera que votre inscription nominative (notamment pour des raisons de sécurité), de préférence préalable, ou à l’entrée de la séance. Merci d’indiquer votre intention en vous inscrivant via la page http://jeudisdulibre.fikket.com/. La séance sera suivie d’un verre de l’amitié.

    Description : Nicolas Charles a lancé avec 2 autres fondateurs, la société Normation, coorganisateur des DevOps Days Paris, et avant tout l’éditeur du logiciel Rudder, solution open source de gestion de configuration. Lancé en 2010, Rudder est aujourd’hui utilisé au sein de productions critiques, des serveurs financiers de la Caisse d’Epargne aux satellites d’Eutelsat, mais aussi dans d’autres domaines comme l’industrie pharmaceutique et l’automobile.

    L’objectif de Rudder est de garantir une infrastructure solide afin de permettre des changements rapides, fréquents et conformes au niveau applicatif, et ainsi réduire le time to market des projets et le downtime des services.

    Les fonctionnalités clé ou Rudder en 3 points :

    • Apte à la production : Rudder est un outil de gestion de configuration open source orienté DevOps et dédié à la production. En effet, il se distingue des outils de déploiement pur comme Ansible, des ordonnanceurs comme Rundeck ou des outils de gestion de configuration de génération précédente (Puppet, Chef, CFEngine) en allant plus loin que la simple automatisation des commandes de déploiement / configurations. Rudder vérifie et maintient proactivement l’état cible du SI afin de le garder en conformité : les règles mises en places sont vérifiées en permanence, et peuvent, en cas de modification imprévue, soit remonter des alertes, soit se corriger automatiquement.
    • Accessible à tous : Rudder se distingue également de ses prédécesseurs et concurrents par une excellente accessibilité : facile et rapide à installer, il est également très intuitif à utiliser grâce à son interface graphique de gestion et à la bibliothèque de règles prêtes à l’emploi. Il n’est donc plus nécessaire de savoir développer pour gérer son infrastructure de manière automatique, ouvrant ainsi la porte à tous les niveaux d’expertise, y compris hors du service technique afin que les développeurs ou la sécurité par exemple puissent simplement consulter le niveau de conformité ou le contenu (hardware ou software) d’une machine.
    • Universel : grâce à son agent léger en C compilable sur n’importe quel OS, Rudder sait gérer les serveurs physiques comme les instances cloud, en passant par les desktops et les objets connectés.

    Les utilisateurs de Rudder l’utilisent principalement dans 3 cas de figure :

    • Le déploiement initial sur système provisionné (installer et configurer l’ensemble des composants logiciels d’une machine en un clic)
    • La gestion de configuration (configuration de services, application de règles de sécurité, paramétrage système, etc.)
    • Le contrôle de conformité (politique de sécurité interne, PCI-DSS, ISO 27001, PSSI de l’ANSSI, etc.)

    Les Jeudis du Libre à Mons bénéficient aussi du soutien de nos partenaires : CETIC, Normation, OpenSides, MeaWeb, NextLab, Phonoid et Creative Monkeys.

    Si vous êtes intéressé(e) par ce cycle mensuel, n’hésitez pas à consulter l’agenda et à vous inscrire sur la liste de diffusion afin de recevoir systématiquement les annonces.

    Pour rappel, les Jeudis du Libre se veulent des espaces d’échanges autour de thématiques des Logiciels Libres. Les rencontres montoises se déroulent chaque troisième jeudi du mois, et sont organisées dans des locaux et en collaboration avec des Hautes Écoles et Facultés Universitaires montoises impliquées dans les formations d’informaticiens (UMONS, HEH et Condorcet), et avec le concours de l’A.S.B.L. LoLiGrUB, active dans la promotion des logiciels libres.

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Nanocloud Community, solution de transformation des applications traditionnelles en solution Cloud.

    Vendredi 11 Décembre

    Nanocloud Community est une plate-forme libre qui permet la transformation d’applications traditionnelles en solution Cloud sans modification ou redéveloppement du code source existant.

    La technologie permet à n’importe quelle application d’être accessible instantanément via un navigateur web et permet à l’utilisateur de profiter de ses nouveaux usages.

    La plateforme est développée principalement en Golang et s’appuie notamment sur les technologies CoreOS/Docker et Angular.

    Installation

    Nous avons tout fait pour rendre Community aussi simple que possible. Une documentation et deux vidéos sont à votre disposition pour vous guider dans son installation et son utilisation. Vous pouvez les retrouver sur : www.nanocloud.org .

    Feuille de route

    Nous souhaiterions ajouter les fonctionnalités suivantes dans nos prochaines versions :

    • L’installation en tant qu'utilisateur non-root
    • La personnalisation des noms et icônes d’applications
    • L’attribution d'autorisation par application et par utilisateur
    • L’ajout d’un tableau de bord des données de la plate-forme d'hébergement
    • Une meilleure méthode d'authentification
    • Un affichage des données graphique en temps réel (RAM / DISK / Utilisation CPU)
    • Le changement des informations utilisateurs (et non seulement le mot de passe)
    • L’affichage des dernières connexions par utilisateur
    Télécharger ce contenu au format Epub

    Lire les commentaires

    G'MIC 1.6.8: C'est déjà Noël pour les traiteurs d'image !

    Vendredi 11 Décembre

    La version 1.6.8 "X-Mas 2015 Edition" de G'MIC (GREYC's Magic for Image Computing), framework libre pour le traitement d'image, a été publiée lundi 7 décembre 2015. C'est l'occasion de vous présenter les avancées et les nouveautés introduites dans ce logiciel depuis la dernière dépêche Linuxfr sur ce sujet, rédigée pour la sortie de la version 1.6.2.0, il y a de cela 8 mois environ. Sept versions se sont succédées depuis.

    La deuxième partie de la dépêche détaille les quelques nouveautés introduites dans le greffon G'MIC pour GIMP, qui reste l'interface de G'MIC la plus utilisée aujourd'hui. Mais elle présente aussi quelques évolutions majeures plus techniques du framework, qui ont déjà permis d'élaborer de nouveaux effets intéressants, et qui promettent surtout de belles choses pour l'avenir.

    Sommaire 1. Le projet G'MIC


    Fig.1.1. Mascotte et logo du projet G'MIC, framework libre pour le traitement d'image.

    G'MIC est un projet libre ayant vu le jour en Août 2008, dans l'équipe IMAGE du laboratoire GREYC (Unité Mixte de Recherche du CNRS située à Caen). Cette équipe est composée essentiellement d'enseignant-chercheurs et de chercheurs travaillant dans le domaine du traitement d'image (ça c'est une sacrée coïncidence !). Le projet est distribué sous licence libre CeCILL.
    G'MIC fournit plusieurs interfaces utilisateurs pour la manipulation de données images génériques, à savoir des images ou des séquences d'images hyperspectrales 2D ou 3D à valeurs flottantes, ce qui inclut bien évidemment les images couleurs classiques. Son interface la plus utilisée aujourd'hui est un greffon disponible pour le logiciel GIMP (qu'on peut qualifier de relativement "populaire", il comptabilise déjà plus de 2 millions de téléchargements à ce jour).


    Fig.1.2. Aperçu du greffon G'MIC pour GIMP.

    G'MIC propose également une interface en ligne de commande, semblable aux outils CLI proposés par ImageMagick ou GraphicsMagick, qui permet de bien profiter de toutes ses capacités. Il existe aussi un service web G'MIC Online pour appliquer des effets sur vos images directement à partir d'un navigateur (qui a été ré-actualisé d'ailleurs). D'autres interfaces basées sur G'MIC sont développées (ZArt, un greffon pour Krita, des filtres pour Photoflow…) mais celles-ci restent pour le moment plus confidentielles.
    Toutes ces interfaces se basent sur la bibliothèque C++ libgmic qui est portable, thread-safe et multi-threadée (via l'utilisation d'OpenMP notamment). libgmic est elle-même basée sur CImg, une bibliothèque C++ de traitement d'image générique plus "bas-niveau", qui est développée dans la même équipe et qui existe depuis 1999 (et qui sort de façon synchronisée également en version 1.6.8). La bibliothèque libgmic implémente toutes les fonctions de calculs sur les images, et embarque son propre langage de script permettant aux utilisateurs avancés d'y ajouter leurs fonctions personnalisées de traitement d'image.

    Aujourd'hui, G'MIC interprète plus de 900 commandes de traitement différentes, toutes paramètrables, pour une bibliothèque d'environ 5.5 Mo correspondant à un peu plus de 100 000 lignes de code source. Ces commandes couvrent un large spectre du traitement d'image, en proposant des algorithmes pour la manipulation géométrique, les changements colorimétriques, le filtrage d'image (débruitage, rehaussement de détails par méthodes spectrales, variationnelles, non-locales…), l'estimation de mouvement / le recalage, l'affichage de primitives (y compris des objets 3d maillés), la détection de contours/la segmentation, le rendu artistique, etc. C'est donc un outil très générique aux usages variés, très utile d'une part pour convertir, visualiser et explorer des données images, et d'autre part pour construire des pipelines personnalisés et élaborés de traitements d'image.

    Pour en apprendre un peu plus sur les motivations et les buts du projet G'MIC, on ne peut que conseiller d'aller feuilleter les slides de présentation du projet qui ont été mis à jour récemment et qui contiennent de nombreux exemples de choses qu'il est possible de réaliser avec ce framework.

    Les contributeurs principaux sont également présents pour discuter via le nouveau forum ou sur le canal IRC associé #pixls.us sur Freenode.

    2. Améliorations propres au greffon G'MIC pour GIMP

    Trois améliorations notables ont été apportées à l'interface du greffon G'MIC pour GIMP. Nous allons les détailler dans cette section.

    2.1. Import/export via les buffers GEGL

    Le greffon est maintenant capable d'importer/exporter les données images de/vers GIMP en passant par les buffers GEGL qui forment la base de la version de développement 2.9 de GIMP. En pratique, cela signifie que le greffon peut travailler avec des images à grande profondeur de bits (par exemple avec des pixels stockés sous forme de flottants 32 bits par canal, à ne pas confondre avec des images au contenu pornographique!), et ceci sans aucune perte de précision.

    En réalité, l'application d'un filtre seul sur une image va rarement avoir des conséquences visuelles graves dues au seul fait de la quantification de l'image traitée en 8 bits / canal. Mais tous ceux qui appliquent de nombreux filtres et effets, les uns à la suite des autres sur une même image, apprécieront que la précision numérique maximale soit conservée lors de leur flux de travail (workflow).

    L'animation ci-dessous (Fig.2.1) illustre le phénomène de quantification subtil qui apparaît lorsque l'on applique certains types de filtres sur une image (ici un filtre de lissage anisotrope)


    Fig.2.1. Comparaison de l'application d'un même filtre G'MIC sur une image en 8 bits et en 32 bits par canal.

    Sur la droite de la Fig.2.1, on aperçoit l'histogramme des luminances de l'image modifiée, qui contient une plus grande diversité de valeurs lorsque le filtre travaille sur une image stockée avec des flottants 32 bits plutôt qu'avec des entiers 8 bits. L’enchainement de ce genre de traitements peut assez vite créer des effets indésirables de quantification/postérisation sur les images traitées (Banding effect). En bref, le greffon G'MIC est déjà prêt pour la sortie de la prochaine version stable GIMP 2.10.

    2.2. Prise en charge de l'UTF-8 dans les widgets

    Le greffon gère maintenant les chaînes UTF-8 pour l'ensemble des widgets de l'interface, ce qui permet une meilleure internationalisation des filtres.
    Par exemple, nous disposons maintenant d'une version japonaise de l'interface et de certains filtres, comme l'illustre la copie d'écran du greffon ci-dessous (Fig.2.2).


    Fig.2.2. Le greffon G'MIC pour GIMP partiellement traduit en Japonais.

    2.3. Une interface plus réactive

    Le greffon réagit mieux aux changements de paramètres d'un filtre lorsque celui-ci est en train de calculer le résultat d'une prévisualisation. Un mécanisme d'annulation du calcul en cours a été ajouté pour ne plus attendre qu'un filtre ait fini de générer sa prévisualisation avant de pouvoir agir sur l'interface. C'est tout bête, mais ça améliore énormément l'expérience utilisateur.

    Notons également l'initiative intéressante de Jean-Philippe Fleury, un aimable contributeur, qui propose sur sa page web une galerie recensant la quasi-totalité des effets disponibles dans le greffon. Voilà un très bon moyen d'avoir un aperçu rapide des filtres, et de pouvoir observer le résultat de chaque filtre sur des images différentes, parfois avec des paramètres différents.

    3. Ajout de l'algorithme Patchmatch

    PatchMatch est un algorithme de mise en correspondance de blocs d'images qui rencontre, depuis quelques années, un certain succès dans la communauté du traitement d'image, notamment grâce à sa rapidité d'exécution et au fait qu'il se parallélise relativement bien.
    C'est devenu une technique de base utilisée dans de nombreux algorithmes récents nécessitant des comparaisons rapides de patchs, en particulier des algorithmes de reconstruction de morceaux manquants dans des images, de synthèse de textures, ou encore de super-résolution.
    Il est donc satisfaisant d'annoncer que G'MIC intègre maintenant une implémentation parallélisée de cet algorithme (via la commande native -patchmatch) pour la mise en correspondance locale de patchs dans des images 2D et 3D. C'est sur la base de cet algorithme que deux filtres intéressants ont été ajoutés récemment.

    3.1. Inpainting d'image

    Un nouveau filtre d'Inpainting d'image utilisant un algorithme multi-résolution, permet de reconstruire des morceaux d'images manquants ou considérés comme invalides. Très pratique pour virer Tata Renée en maillot de bain de vos photos de vacances à Ibiza !

    À noter que ce n'est pas le premier algorithme d'Inpainting "basé patch" disponible dans G'MIC (cette dépêche de 2014 parlait déjà d'un filtre équivalent). C'est juste un algorithme différent, qui donne donc des résultats différents. Et dans ce domaine, avoir le choix de pouvoir générer plusieurs types de résultats n'est vraiment pas du luxe, étant donné la nature particulièrement mal posée du problème de l'Inpainting d'image.

    Si vous avez comme moi une machine avec tout plein de coeurs qui ne demandent qu'à chauffer, alors cette nouvelle implémentation tirant parti du multi-threading risque de bien vous plaire ! Voilà deux exemples de résultats (Fig.3.1 et Fig.3.2) que l'on peut obtenir très rapidement avec ce filtre :


    Fig.3.1. Application du nouveau filtre d'inpainting pour la suppression d'un ours.


    Fig.3.2. Application du nouveau filtre d'inpainting pour la suppression de la tour Eiffel.

    Une vidéo montrant comment ce dernier exemple a été réalisé (en 1mn07 exactement) est disponible ici (vidéo en temps réel sans trucages, mais avec un PC à 24 coeurs quand même!). Ca parait assez magique de voir que l'algorithme a été capable de reconstruire tout seul des bouts d'arbres entiers de manière assez cohérente à la place des pieds de la tour Eiffel (en effectuant en réalité un "bête" clonage d'un arbre existant ailleurs dans l'image!). Mais je vous rassure, ça ne marche pas aussi bien avec toutes les images…

    Cette technique d'inpainting multi-résolution basée sur PatchMatch est grosso modo la même que celle introduite dans PhotoShop CS5 en 2010, sous l'appelation (très marketing) "Content-Aware Fill". La principale force de ce type d'algorithme est d'être capable de reconstruire de larges zones texturées à l'intérieur des masques définis par l'utilisateur. À noter que dans le cadre du doctorat de Maxime Daisy (qui a soutenu sa thèse avec succès la semaine dernière, bravo à lui !), nous avons également réalisé quelques extensions sympathiques de ce type d'algorithmes pour supprimer des objets en mouvement dans des séquences vidéos (voir la page de démo correspondante). Ces extensions ne sont pas encore disponibles dans G'MIC (et sont encore relativement coûteuses à calculer), mais cela arrivera peut-être un jour, qui sait ?

    3.2. Re-synthèse de textures

    En utilisant le même type de technique multi-résolution, un filtre de synthèse de textures a également été ajouté. Il permet de synthétiser une texture de taille quelconque à partir d'une texture "modèle" donnée en entrée.

    Bien sûr, il ne s'agit pas ici de faire une simple répétition en tuiles de la texture d'entrée, mais bien de regénerer une texture ayant les mêmes caractéristiques en copiant/collant des bouts de la texture "modèle" de telle manière que le résultat final ne contienne pas de discontinuités visibles.

    La Fig.3.3 illustre un exemple de synthèse d'une texture de taille 512x512 (image de droite) à partir d'une texture "modèle" plus petite, de taille 280x512 (image de gauche). Une comparaison du résultat obtenu avec l'application bête et méchante d'une simple répétition en tuiles de la texture "modèle" (image du milieu) est également visible.


    Fig.3.3. Exemple de synthèse d'une texture complexe avec G'MIC.

    Nous avions déjà un algorithme de re-synthèse de texture disponible dans G'MIC, mais celui-ci ne fonctionnait bien qu'avec des micro-textures. L'exemple de la Fig.3.3 montre que ce nouvel algorithme est quant à lui capable de regénérer des macro-textures plus complexes. On peut imaginer pas mal d'applications à ce genre de filtre, notamment dans le domaine du jeu vidéo (rewind pourrait peut-être confirmer ?).

    Bref, vous l'avez compris, avoir une implémentation de l'algorithme PatchMatch dans G'MIC va très certainement être bénéfique pour élaborer d'autres filtres images intéressants par la suite (on peut imaginer l'utiliser dans le cadre de la super-résolution ou du morphing à l'avenir, si le temps le permet).

    4. Un évaluateur d'expressions plus performant

    Je vais rentrer ici dans des considérations un peu plus techniques concernant l'évolution de G'MIC. En tant qu'utilisateur très régulier de G'MIC (pour mon travail de recherche), j'ai été confronté à un obstacle qui devenait récurrent lors de son utilisation. Mais comme je suis aussi le développeur principal de G'MIC, cela m'a amené à re-penser et améliorer une fonctionnalité clé du logiciel(et c'est probablement la contribution la plus significative de ces 8 derniers mois, même si ce n'est pas encore très visible pour l'utilisateur). J'expose ici mon cheminement et la solution technique / contribution proposée.

    Jusqu'à présent, G'MIC avait été pensé comme un moyen simple et rapide de construire des pipelines d'opérateurs de traitement d'image (pouvant intégrer éventuellement des boucles et des tests conditionnels), ces pipelines étant par la suite exécutés par un interpréteur. La majorité des filtres images présents dans G'MIC sont d'ailleurs élaborées comme ceci.

    Or, il arrive fréquemment qu'on ait envie de prototyper des algorithmes plus "bas-niveau", qui travaillent à l'échelle du pixel, et qui ne peuvent pas s'exprimer efficacement comme une suite de macro-opérateurs (en supposant bien sûr qu'on ne dispose pas d'un macro-opérateur qui implémente déjà ledit algorithme!). C'est le cas par exemple pour des algorithmes qui parcourent tous les pixels (x,y) d'une image, et qui pour chaque pixel, effectuent une série d'opérations non triviales dépendant de la valeur d'autres pixels localisés plus ou moins loin du pixel courant (ou carrément sur une autre image) selon un schéma non-ordonné par exemple (sans être complètement aléatoire non plus).

    Dans ce genre de cas, généralement, le pipeline G'MIC correspondant devient un peu lourd à exécuter, notamment du fait de l'interprétation des boucles imbriquées en (x,y). Notons que ce problème n'est pas propre qu'à G'MIC. Demandez à un traiteur d'image utilisant Matlab les trésors d'ingéniosités qu'il faut parfois déployer pour éviter d'écrire des scripts avec des boucles imbriquées explicites sur (x,y) pour parcourir les pixels d'une images, pour vous en convaincre. C'est un fait : en traitement d'image, on dispose très vite d'une quantité non négligeable de données à traiter. Et cela ne va pas en s'arrangeant, du fait de la progression constante des résolutions des images, mais aussi du fait de la complexité croissante des algorithmes (il est courant d'avoir des algos en O(Np)N = WxH est le nombre de pixels de l'image et p supérieur à 2). Bref, faire du prototypage d'algorithme "bas niveau" un peu lourds en traitement d'image avec des langages interprétés, ça peut vite devenir pénible en terme de temps de calcul.

    La meilleure solution reste alors d'écrire ces algos dans un langage compilé (au hasard, C++) pour pouvoir les tester sans attendre des plombes devant son écran que ça s'exécute. Mais on perd alors le confort et la rapidité de prototypage que procurent les langages interprétés. Ou alors on construit un module Matlab/Python/... à partir de l'algo compilé, et on se retrouve alors à faire du travail de binding plutôt pénible. Bref, on perd du temps pour un truc qui n'est même pas sûr de marcher au final.

    Mon objectif était donc de pouvoir prototyper la plupart de mes algos directement en G'MIC, en acceptant d'avoir une baisse de performances (comparativement à un langage compilé comme le C++) mais en évitant que ça devienne ridiculement lent. La solution classique, vous l'avez deviné, c'est d'inclure un mécanisme de compilation à la volée, ce que j'ai donc réalisé pour la sous-partie de l'interpréteur G'MIC qui s'occupe de l'évaluation des expressions mathématiques (et qui est central au framework, comme on peut s'en douter).
    Lorsque l'interpréteur rencontre une expression mathématique à évaluer plusieurs fois (pour chaque pixel d'une image par exemple), il la compile d'abord sous forme de bytecode qui devient ensuite très rapide à évaluer pour chaque pixel. En réalité, ce JIT est présent depuis des années dans G'MIC, mais il a été significativement amélioré ces derniers mois pour permettre l'évaluation d'expressions qui peuvent être considérées comme des petits programmes en eux-mêmes (contenant des boucles, des variables, des tests conditionnels, etc.), plutôt que comme de "bêtes" formules mathématiques.

    L'exemple jouet qui illustre ces nouvelles possibilités est le rendu de l'ensemble fractal de Julia qu'il est maintenant possible d'écrire en une ligne de commande (attention, ça peut piquer les yeux au premier abord) :

    $ gmic 1024,1024,1,1,"zr = -1.2+2.4*x/w; zi = -1.2+2.4*y/h; for(iter = 0, zr^2+zi^2<=4 && iter<256, ++iter, t = zr^2 - zi^2 + 0.4; (zi *= 2*zr) += 0.2; zr = t);iter" -map 7

    Cet appel de G'MIC en ligne de commande génère cette image en résolution 1024x1024 (l'image a été réduite ici par commodité de lecture) :


    Fig.4.1. Génération d'une fractale Julia utilisant le nouvel évaluateur d'expressions mathématique de G'MIC.

    Bien entendu, on peut aussi écrire ça plus posément, en utilisant des fichiers de commande G'MIC :

    # Fichier 'julia.gmic' julia_expr : -input $1,$1 -fill " zr = -1.2 + 2.4*x/w; zi = -1.2 + 2.4*y/h; for (iter = 0, zr^2+zi^2<=4 && iter<256, ++iter, t = zr^2 - zi^2 + 0.4; (zi *= 2*zr) += 0.2; zr = t ); iter" -map 7

    et lancer alors le rendu de l'image de la façon suivante : $ gmic julia.gmic -julia_expr 1024

    La complexité algorithmique de ce rendu fractal n'est pas démente, sans être négligeable non plus : pour chacun des 1024^2 = 1,048,576 pixels de l'image, on va calculer au maximum 256 iterations pour évaluer la couleur d'un point (déterminé par le nombre d'itérations nécessaires pour vérifier le critère de divergence de la suite complexe calculée ici). Donc ça fait quand même en moyenne plusieurs dizaines de millions d'itérations pour la génération de l'image complète. Là où c'est intéressant, c'est que G'MIC va automatiquement déterminer que l'expression mathématique associée peut s'évaluer en parallèle en divisant l'image en blocs de pixels évalués indépendamment sur chaque coeur disponible. Au final le temps de calcul de l'image de la Fig.4.1 (en résolution 1024x1024) se réalise en un temps plus que raisonnable : 0.176 secondes sur mon PC de bureau à 24 coeurs, et 0.631 secondes sur mon portable quadri-coeurs. Evidemment, si on compare ce temps d'exécution avec la commande native équivalente -mandelbrot (donc compilée en C++) qui était déjà disponible dans G'MIC, on ne peut qu'être déçu : la commande native génère la même image en 0.055 secondes seulement (sur le quadri-coeurs). C'est 12 fois plus rapide !

    Certes… mais supposons maintenant que je veuille visualiser cette fractale en colorant les points par une mesure autre que le nombre d'itération de la série complexe avant divergence. Par exemple, je souhaite visualiser la valeur de la dernière partie imaginaire calculée avant divergence. Il me suffit de modifier l'appel à G'MIC de la façon suivante (je vous la fait ici en version courte) :

    $ gmic 1024,1024,1,1,"zr = -1.2+2.4*x/w; zi = -1.2+2.4*y/h; for(iter = 0, zr^2+zi^2<=4 && iter<256, ++iter, t = zr^2 - zi^2 + 0.4; (zi *= 2*zr) += 0.2; zr = t);zi" -normalize 0,255 -map 7

    et voilà ce que j'obtiens (toujours en moins de 0.7 secondes) :


    Fig.4.2. Autre type de visualisation lors de la génération d'une fractale Julia avec l'évaluateur d'expressions mathématique de G'MIC.

    Auparavant, si j'avais voulu réaliser la même chose avec G'MIC, j'aurais dû :

    • Soit ajouter de nouvelles options à la commande native -mandelbrot pour permettre ce type de visualisation. Ce qui veut dire : écrire du code C++, compiler une version complète de G'MIC avec
      ces modifications incluses, l'empaqueter et sortir une nouvelle version. Ce ne serait pas vraiment une façon simple et rapide de faire profiter l'utilisateur de cette nouvelle possibilité de visualisation
      (si vous avez déjà utilisé le greffon G'MIC pour GIMP et son mécanisme de mise à jour des filtres par Internet, vous comprenez certainement ce que je veux dire par là).
      Sans compter qu'on ne peut décemment pas prévoir tous les types de visualisation qu'un utilisateur va vouloir générer !

    • Soit écrire un script G'MIC qui aurait fait la même opération que la commande julia_expr. Mais comme l'algorithme ici est très spécifique et réalise des choses "sur mesure" au niveau pixel,
      cela aurait effectivement demandé l'écriture explicite de trois boucles (x,y,iter) imbriquées, qui aurait été interprétées, et qui auraient mis probablement plusieurs minutes à réaliser leur travail.

    Nous avons maintenant un système de pré-compilation JIT d'expressions mathématiques, dont l'évaluation devient relativement rapide pour chacun des pixels qui composent l'image à générer, d'autant plus que cette évaluation est réalisée en parallèle si votre machine posséde plusieurs coeurs. Pour les algorithmes de traitement d'image qui nécessitent des opérations "sur mesure" (e.g. non-linéaires) pixel par pixel, cette étape de pré-compilation rend le processus de prototypage incroyablement efficace. Ce système a été d'ailleurs abondamment utilisé pour le prototypage de deux algorithmes basé PatchMatch dont j'ai parlé en section précédente. Nul doute que beaucoup de nouveaux filtres futurs pourront bénéficier de cette nouvelle fonctionnalité présente dans G'MIC.
    J'ai par ailleurs comparé la performance de l'évaluateur d'expressions de G'MIC avec la fonctionnalité identique présente dans ImageMagick, via leur commande -fx, qui exploite également le multi-coeur (mais qui n'utilise par contre pas de pré-compilation à la volée des expressions) : G'MIC évalue des expressions même simples entre 10x et 20x plus rapidement sur des images couleurs de taille moyenne (3072x2048 dans mes tests, à retrouver en section 6 de cette page).

    5. Vector Painting : Un exemple de construction d'un filtre simple, en partant de zéro.

    Un nouveau filtre d'abstraction d'image nommé Vector Painting, a été développé à partir de ces améliorations apportées à l'évaluateur d'expressions de G'MIC.
    Ce n'est pas un filtre très impressionnant, mais j'en relate ici la conception, car ce filtre particulier a un fonctionnement suffisamment simple pour ne pas avoir à rentrer dans des détails techniques compliqués de traitement d'image, et ça donne une bonne idée de la façon dont un nouvel effet peut être construit rapidement avec G'MIC en partant de zéro, jusqu'à son intégration finale dans le greffon pour GIMP. Il est amusant de noter que ce filtre a été élaboré complètement par hasard, alors que je cherchais à corriger quelques erreurs dans le code de l'évaluateur d'expression mathématiques de G'MIC.

    Supposez que vous voulez déterminer pour chaque pixel d'une image, l'orientation discrète de la variation spatiale d'intensité lumineuse maximale du pixel (avec une précision d'angle de 45°). Pour chaque pixel centré dans un voisinage 3x3, on cherche à déterminer quel pixel du voisinage a la différence de valeur maximale avec le pixel du centre (cette différence étant mesurée en valeur absolue). Dans un premier temps, on calcule donc la luminance de l'image couleur d'entrée. Puis, on cherche à transformer chaque pixel de cette image de luminance en un label (un entier entre 1 et 8) qui représente une des 8 orientations possibles du plan (à 45° près). C'est typiquement le genre de problème qui nécessite l'application d'opérations au niveau pixel qui sont suffisamment "exotiques" pour ne pas disposer d'un macro-opérateur tout fait qui pourrait résoudre ce problème.

    Avec le nouvel évaluateur d'expressions de G'MIC, la solution est étonnamment simple à mettre en oeuvre :

    # Fichier 'foo.gmic' foo : -luminance -fill "dmax = -1; nmax = 0; for (n = 0, ++n<=8, p = arg(n,-1,0,1,-1,1,-1,0,1); q = arg(n,-1,-1,-1,0,0,1,1,1); d = (j(p,q,0,0,0,1)-i)^2; if(d>dmax, dmax = d; nmax = n, nmax) )"

    En l'appliquant sur une image d'entrée nommée leno.jpg (à gauche sur la Fig.5.1), nous obtenons l'image des orientations discrète des variations maximales de luminance (à droite sur la Fig.5.1)

    $ gmic foo.gmic leno.jpg -foo


    Fig.5.1. Calcul des orientations discrètes de variations maximales d'une image couleur.

    En aparté, laissez-moi vous raconter que j'ai récemment reçu plusieurs e-mails et messages de gens qui prétendent que ré-utiliser l'image de Lena (bien connue des traiteurs d'images) est quelque chose de "sexiste" (quelqu'un a même utilisé le terme "pornographique") car c'est un portrait provenant à l'origine d'un numéro du magazine Playboy de 1972. Je vous invite à lire la page sur l'histoire de Lena si vous ne savez pas pourquoi nous utilisons souvent cette image. L'occasion aussi de voir la photo originale dans son ensemble est de vous faire une idée sur le côté "pornographique" de la chose. Néanmoins, comme je ne souhaite pas blesser ces personnes à la sensibilité exacerbée, j'ai décidé d'utiliser une petite variation de l'image originale en la mixant avec un portrait de Jay Leno. Appelons cette dernière image "Leno" plutôt que "Lena", et si une seule lettre peut tout arranger, alors qu'il en soit ainsi.

    L'image des orientations de la Fig.5.1 peut paraître très moche (et elle l'est) mais ce n'est pas très étonnant : l'image originale contient un peu de bruit, ce qui se traduit par beaucoup de directions de variations d'intensité lumineuse incohérentes dans les régions de couleur quasi-constantes. Lissons l'image originale un petit peu avant de calculer l'image des orientations discrètes et voyons voir ce que ça donne (Fig.5.2).

    $ gmic foo.gmic leno.png --blur 1% -foo


    Fig.5.2. Calcul des orientations discrètes de variations de luminance sur une image lissée au préalable.

    Voilà qui semble plus intéressant : le lissage permet de créer des portions larges de labels constants, c-à-d des régions où l'orientation des variations maximales de luminance est la même. Les contours du portrait original apparaissent comme des frontières naturelles dans l'image des orientations. Pourquoi alors ne pas remplacer les composantes connexes ainsi labelisées par la couleur moyenne qu'elles recouvrent dans l'image originale ? Rien de plus facile avec G'MIC :

    $ gmic user.gmic leno.png --blur 1% -foo[-1] -blend shapeaverage

    Et nous obtenons alors une abstraction "constante par morceaux" de notre image d'entrée Leno (Fig.5.3).


    Fig.5.3. Résultat après colorisation des zones d'orientations constantes.

    Comme on peut l'imaginer, changer l'amplitude spatiale du lissage rend l'image résultante plus ou moins abstraite. À partir de là, il n'est pas bien compliqué de reprendre le code précédent, et de le transformer en filtre disponible immédiatement pour les utilisateurs du greffon G'MIC pour GIMP (le code complet de ce filtre, de 19 lignes seulement est visible ici). Les utilisateurs n'ont plus qu'à appuyer sur le bouton "Actualiser les filtres" de l'interface du greffon pour disposer ce nouvel effet Vector Painting immédiatement.


    Fig.5.3. Aperçu du filtre "Vector Painting" dans le greffon G'MIC pour GIMP.

    Voilà, cela vous donne une idée de la façon dont les filtres sont prototypés puis ajoutés dans G'MIC. Ce qui est intéressant, c'est que l'étape qui permet de passer d'un prototype d'algorithme à un filtre distribué et utilisable est au final très rapide à réaliser. Ca explique comment de nouveaux filtres sont ajoutés fréquemment dans G'MIC, et pourquoi le greffon possède aujourd'hui plus de 440 filtres utilisables.

    6. Des filtres et effets à foison !

    Cette section illustre, en vrac, quelques autres fonctionnalités/effets/filtres qui ont été ajoutés depuis Avril dernier. Les copies d'écran ci-dessous montrent certains filtres accessibles depuis le greffon G'MIC pour GIMP, mais ces filtres sont bien sûr applicables à partir de toutes les interfaces disponibles (en ligne de commande, notamment).

    • Moteur de recherche de filtres : Voilà une fonctionnalité qui nous a longtemps été demandée, et nous avons donc proposé une première ébauche d'un moteur de recherche de filtres par mots-clés. En effet, le nombre de filtres du greffon n'allant pas en diminuant, ce n'est pas toujours facile de retrouver un filtre particulier surtout si on a oublié de le mettre dans ses favoris. Bref, cet outil peut dépanner en cas de trous de mémoire (mais encore faut-il se rappeler d'un mot clé pertinent pour la recherche).


    Fig.6.1. Nouveau moteur de recherche de filtres par mot clés dans le greffon GIMP.

    • Filtre Freaky B&W : Ce filtre propose de convertir une image couleur en image en Noir et Blanc (en niveaux de gris pour être plus précis), en résolvant une équation de Poisson plutôt qu'en appliquant une simple formule linéaire de calcul de luminance. Le but, c'est d'obtenir une image N&B qui contient les détails de contraste maximum présents dans chacun des canaux couleurs de l'image originale. Le filtre génère donc des images souvent très contrastées, à la façon des images HDR (mais en niveaux de gris).


    Fig.6.2. Filtre "Freaky B&W" pour la conversion d'image couleur en niveaux de gris.

    • Filtre Bokeh : Ce filtre permet de générer des effets de type Bokeh sur des images (flous artistiques). Il est très paramétrable et permet de générer des Bokeh avec des formes variées (cercles, pentagones, octogones, étoiles..).


    Fig.6.3. Application du nouveau filtre "Bokeh" sur une image couleur.

    • Filtre Rain & snow : Comme son nom l'indique, ce filtre permet d'ajouter un effet de pluie ou de neige sur vos images (ici en prenant en exemple un zoom de l'image précédente).


    Fig.6.4. Ajout de pluie sur une image couleur avec le filtre "Rain & snow".

    • Filtre Neon lightning : Pas grand chose à dire sur ce filtre, il génère des courbes partant d'une région A à un autre région B et stylise ces courbes comme des lumières néons. Pratique pour faire des fonds d'écrans probablement :)


    Fig.6.5. Effet de néons courbes avec le filtre "Neon Lightning".

    • Filtre Stroke : Ce filtre permet d'"habiller" des formes simples présentes sur un calque transparent, en les enrobant avec des dégradés de couleurs par exemple. La figure ci-dessous illustre la transformation d'un texte simple (mono-couleur) "LinuxFr" par ce filtre.


    Fig.6.6. Application du filtre "Stroke" pour décorer un texte simple.

    • Filtre Light leaks : Il s'agit ici de simuler des effets de lumière indésirable sur des photos. En général, c'est plutôt le genre d'effets qu'on souhaite au contraire enlever ! Mais la simulation de dégradations d'images peut servir dans certains cas (pour ceux qui veulent rendre leur images de synthèses plus réalistes par exemple).


    Fig.6.7. Simulation d'effets de lumière indésirable avec le filtre "Light leaks".

    • Filtre Grid [triangular] : Ce filtre transforme une image en grille composés de triangles, avec de nombreux choix de types de grilles différentes.


    Fig.6.8. Transformation d'une image en grille triangulaire.

    • Filtre Intarsia : Ce filtre est relativement original, puisqu'il permet de transformer une image en un schéma de construction d'un tricot de type Intarsia.
      C'est un filtre qui a été suggéré par une utilisatrice du forum GimpChat pour lui permettre de distribuer des schémas de tricot personnalisés (apparemment il existe des sites qui en proposent,
      mais en échange d'espèces sonnantes et trébuchantes). Le filtre en lui-même ne modifie pas l'image, mais génére un schéma de création sous forme d'une page web
      (dont un exemple est visible ici).

    • Filtre Drop water : Alors je dois avouer que je l'aime particulièrement celui-ci. Ce filtre permet de simuler l'apparition de gouttes d'eau sur une image. Dans sa version basique, il ressemble à ça :


    Fig.6.9. Ajout de gouttes d'eau sur une image avec le filtre "Drop water".

    Mais là où ça devient vraiment intéressant, c'est que l'utilisateur peut définir ses propres formes de gouttes en ajoutant un calque transparent contenant quelques formes colorées. Par exemple, si on ajoute ce calque (ici, en rose) sur l'image précédente :


    Fig.6.10. Ajout d'un calque pour définir la forme des gouttes d'eau.

    Alors, le filtre Drop water va vous générer cette image avec vos gouttes d'eau personnalisées :


    Fig.6.11. Synthèse de gouttes d'eau personnalisées avec le filtre "Drop water".

    Par ailleurs, le filtre a le bon goût de générer le résultat comme un empilement de plusieurs calques qui correspondent chacun au rendu des différents phénomènes physiques simulés pour la synthèse, à savoir : les tâches spéculaires, l'ombre porté et l'ombre propre, ainsi que l'effet de réfraction. On peut donc facilement manipuler tous ces calques par la suite, pour donner des effets supplémentaires à l'image générée, par exemple en appliquant un filtre monochrome sur l'image originale tout en gardant le calque de réfraction calculé sur l'image couleur originale, ce qui donne ceci :


    Fig.6.12. Filtre "Drop water" suivi d'un changement colorimétrique de l'image originale uniquement.

    Une petite vidéo tutoriel a été réalisée pour expliquer comment réaliser cet effet pas à pas sous GIMP (ça prend pas plus de 2 minutes, même pour un débutant).

    Mieux encore, on peut mixer les calques générés par le filtre Drop water en les surimposant à d'autres images. La figure suivante montre un tel traitement à partir de deux images de portraits (qui ont été préalablement recalés). C'est très facile à réaliser, et le résultat est plutôt sympathique.


    Fig.6.13. Filtre "Drop water" appliqué pour une fusion "liquide" de deux portraits distincts.

    Voilà qui termine cet aperçu non-exhaustif de quelques filtres très "visuels" ajoutés dernièrement. À noter que chaque nouvel ajout fait l'objet d'une annonce sur le flux Google+ de G'MIC, donc c'est assez facile de suivre l'évolution du projet au jour le jour, si ça vous intéresse de voir ce qu'on peut faire en traitement d'image libre.

    7. Autres améliorations et faits notables :

    Ajoutons pour finir ces quelques informations en vrac, relatives au projet.

    • Tout d'abord, signalons que nous sommes rentrés en contact avec Tobias Fleischer, un développeur professionnel de greffons pour Adobe After Effects et Premiere Pro, entre autres logiciels de post-production vidéo. Il a déjà réalisé un gros travail de développement d'une DLL encapsulant la bibliothèque libgmic, et a utilisé cette DLL pour implémenter des prototypes de greffon proposant les filtres G'MIC pour After Effects. Vous pouvez en voir un exemple sur la figure suivante (en l'occurence, un filtre de squelettisation de formes) :


    Fig.7.1. Prototype de greffon G'MIC tournant sous Adobe After Effects.

    On ne peut qu'espérer que ceci arrive très bientôt. J'entend déjà râler certaines moules : « Mais pourquoi ne pas avoir fait ça pour un logiciel libre comme Natron plutôt que pour un logiciel 100% propriétaire ? ». Le fait est qu'il est en train de le faire justement ! Et pas seulement pour Natron, mais pour tout logiciel de traitement vidéo compatible avec l'API normalisée OpenFX (dont Natron fait partie). La copie d'écran ci-dessous montre par exemple un greffon G'MIC tournant sous le logiciel Sony Vegas Pro_ en utilisant l'API OpenFX. A priori, ça marcherait pareil pour Natron.


    Fig.7.2. Prototype de greffon G'MIC compatible OpenFX, tournant sous Sony Vegas Pro.

    Tout ceci ne doit être encore considéré que comme du travail en cours, il reste des bugs à corriger, des améliorations à faire, mais c'est quand même prometteur.

    • Continuons avec une autre bonne nouvelle : Andrea, un gentil contributeur (par ailleurs développeur du logiciel PhotoFlow) a réussi à comprendre pourquoi
      G'MIC plantait fréquemment sous MacOSX lorsqu'il effectuait ses calculs en multi-threadé, et a proposé un patch permettant de résoudre ce problème
      (c'était un simple problème de pile trop petite allouée pour les threads de calcul). G'MIC sous MacOSX doit donc être pleinement fonctionnel à l'heure qu'il est.

    • L'interface ZArt a également pas mal évolué, avec de nouveaux filtres ajoutés, une détection automatique des résolutions de webcam ainsi que la possibilité d'avoir une double fenêtre de visualisation (une fenêtre de contrôle + une fenêtre de visu à mettre sur un deuxième écran pour faire des démos).


    Fig.7.3. Le logiciel ZArt faisant tourner le filtre G'MIC "Drop water" en dual window, en temps réel sur des images d'une webcam.

    • Une nouvelle démo animée a également fait son apparition dans G'MIC, via la commande -x_landscape. Cela n'a en soi aucun intérêt concret (pour l'utilisateur) si ce n'est de tester la rapidité de l'interpréteur (et puis c'est marrant, non ?). Rappelons que l'ensemble des démos animées et interactives sont disponibles via la ligne de commande
    $ gmic -demo


    Fig.7.4. Paysage virtuel animé avec la commande "-x_landscape".

    Comme je commençais à avoir pas mal de petites animations marrantes intégrées à G'MIC, je les ai compilé sous forme d'une petite intro unique, codée entièrement sous forme d'un script G'MIC, nommée la "BBQ intro 2016" et fleurant bon le style 8 bits/16 bits qui nous manque tant ! Vous pouvez apercevoir la vidéo de cette intro ici. Ça n'a pas l'air forcément fameux, mais gardons à l'esprit que tout ça est généré 100% par l'interpréteur G'MIC, qui n'est pas forcément fait pour ça à la base :)

    8. En ensuite ?

    Cette dépêche a fait un (long) tour d'horizon des points les plus importants qui ont émergés après ces derniers mois passés à travailler sur le projet G'MIC. Nous n'avons pas forcément de plan bien défini des choses sur lequelles on veut se focaliser par la suite, on fera au gré de nos envies et de nos besoins (et des contributeurs qui se manifestent). Dans tous les cas, il apparaît que le projet G'MIC est toujours bien dynamique, et peut potentiellement intéresser et toucher de plus en plus de gens dans le futur. Ceci, grâce aux divers contributeurs et aux utilisateurs qui font des retours réguliers sur le logiciel, encore un grand merci à eux pour leurs efforts ! On espère annoncer encore de belles choses sur LinuxFr.org autour du projet G'MIC dans les années à venir dans tous les cas.

    Et pour finir, vive le traitement d'image libre !

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Écrire son OS - Partie 2 : configurer ses outils

    Jeudi 10 Décembre

    Eh bien voilà, très (trop) longtemps après le premier épisode, me revoilà pour reprendre avec vous la série sur l'écriture d'un système d'exploitation pour un microcontrôleur STM32F103. Pour rappel, mon système d'exploitation MOS est écrit dans un but d'apprentissage. Il vise à être simple à appréhender et à permettre à chacun de découvrir les entrailles d'un OS. Cela implique deux conséquences :

    • je réinvente la roue puisque je réécris tout de zéro
    • il y aura sûrement des bugs, n'essayez pas de le mettre en production (!)

    Voilà, tout ceci étant dit, on va pouvoir attaquer les choses sérieuses. Dans cet épisode, nous allons organiser notre projet et configurer nos outils. Bonne lecture !

    Sommaire Organisation du projet

    Pour commencer, on va organiser notre projet. L'arborescence que j'ai choisi d'adopter est la suivante :

    . ├── COPYING ├── include │ ├── cpu │ ├── kernel │ └── soc ├── linker.lds ├── Makefile ├── README └── src ├── cpu ├── kernel └── soc

    Les en-têtes (dans include/) et les sources (dans src/) sont organisées de manière symétrique, et séparées en plusieurs dossiers : cpu/ pour ce qui est spécifique au Cortex-M3, soc/ pour ce qui relève des particularités du STM32F103, et enfin kernel/ pour tout ce qui est du ressort générique du noyau et non spécifique au matériel (gestion des tâches, de la mémoire, des événements, bibliothèque standard…).
    Notez également la présence d'un fichier COPYING qui contient la licence (BSD en l'occurrence) et d'un README qui contient une brève description du projet. Le linker script et le Makefile seront décrits plus en détail dans les paragraphes suivants.

    Configuration d'OpenOCD

    Nous avons installé OpenOCD, mais il nous reste à le configurer. Rassurez-vous, ça se résume à pas grand chose… une fois que l'on a trouvé quoi mettre dans les fichiers de configuration ! Je vous épargne donc les recherches sur le site d'OpenOCD et sur les diverses mailing lists, et je vous offre mon fichier de configuration, que j'ai stocké dans ~/.config/openocd/mos.cfg :

    source [find interface/olimex-arm-usb-tiny-h.cfg] source [find target/stm32f1x.cfg]

    Dans la première ligne, on explique à OpenOCD comment s'interfacer avec la sonde JTAG, et dans la seconde, on lui indique quel microcontrôleur se trouve à l'autre bout. Si tout marche bien, on doit pouvoir le lancer comme cela openocd -f ~/.config/openocd/mos.cfg.

    Note : pour éviter les problèmes, vérifiez bien que vous avez le droit d'accéder au périphérique correspondant à votre sonde JTAG. Chez moi par exemple, le paquet OpenOCD installe des règles udev dans /lib/udev/rules.d/40-openocd.rules qui attribuent le périphérique de ma sonde au groupe plugdev lors du branchement.

    Configuration de GDB

    Notre ami GDB va nous servir à debugger le code tournant sur notre cible. Habituellement, lorsqu'on fait du cross-debugging, on exécute un gdbserver sur la cible afin que GDB sur l'hôte puisse savoir ce qui se passe sur la cible. Dans notre cas ce n'est évidemment pas possible, puisque nous n'avons pas d'OS sur la cible qui pourrait nous permettre d'exécuter gdbserver. D'où l'importance d'OpenOCD, qui va se faire passer pour un gdbserver et permettre, via le JTAG, d'aller étudier tout ce qui se passe sur la cible.
    Pour mieux comprendre comment tout cela s'articule, voici un résumé de la chaîne de debug :
    gdb <---(socket)---> openocd <---(USB)---> sonde JTAG <------> STM32

    On va donc se faire un fichier .gdbinit aux petits oignons pour faciliter notre debug. En ce qui me concerne, je l'ai placé à la racine de mon projet puisque c'est de là que je lance mon GDB. Voici à quoi il ressemble :

    target remote :3333 monitor reset halt define mos_flash monitor flash probe 0 monitor stm32f1x mass_erase 0 monitor flash write_bank 0 mos.bin 0 monitor reset halt dont-repeat end

    Les deux premières lignes seront exécutées systématiquement au lancement de GDB. La première indique à GDB que l'on souhaite contacter un gdbserver sur le port 3333 de localhost. C'est le port par défaut sur lequel OpenOCD attend une connexion de GDB. La seconde ligne est une commande monitor. Dans le langage de GDB, une commande monitor est une commande qui n'est pas interprétée par GDB lui-même, mais qui est envoyée telle quelle au gdbserver (c'est à dire à OpenOCD, vous suivez ?). Donc toutes les commandes monitor que vous verrez ici sont en fait écrites dans la syntaxe d'OpenOCD, et ne sauraient être comprises oar GDB. Revenons à la signification de cette seconde ligne : on demande donc à OpenOCD de faire un reset de la cible, puis d'arrêter le CPU juste après le reset, soit avant même l'exécution de la toute première instruction.

    Les lignes suivantes définissent une commande GDB du nom de mos_flash. Cette commande est simplement définie ici, elle n'est pas exécutée automatiquement au lancement de GDB. Son but est de nous permettre d'écrire le binaire de MOS dans la flash du microcontrôleur facilement. Et vous vous apercevez que toutes les commandes qui la composent sont des commandes monitor, ce qui est logique puisque GDB ne sait pas comment flasher un STM32… C'est bien OpenOCD qui « connaît » notre puce. Pour résumer ce que font ces commandes, dans l'ordre, on détecte la flash, puis on l'efface, on écrit le binaire mos.bin et enfin on effectue un reset du CPU. Un mot sur la directive dont-repeat : par défaut, GDB relance la dernière commande exécutée lorsque l'on appuie sur <Entrée> sans avoir rien saisi au prompt GDB. Cette directive inhibe ce comportement pour la commande mos_flash. On ne souhaite pas en effet écrire plusieurs fois de suite le même binaire dans la flash, car en plus d'être inutile, cela risque d'user la flash pour rien.

    Vous aurez peut-être noté que j'ai mis le chemin du fichier à écrire en flash mos.bin en relatif. Cela signifie que pour que la commande fonctionne correctement, OpenOCD doit être exécuté depuis le dossier où se trouve le binaire à écrire. J'aurais certainement pu faire quelque chose de plus intelligent, mais je suis une feignasse :-) Donc j'ai simplement pris l'habitude de lancer OpenOCD et GDB depuis le répertoire racine de mon projet.

    Makefile

    À ce stade, j'en vois au fond de la salle qui se disent que c'est bien beau d'avoir configuré tout ce bazar, mais qu'on a pas de code à debugger. Et ils ont raison. Dans cette partie, on va donc se concocter un beau Makefile pour compiler notre OS et pouvoir le charger sur notre cible. Sans plus attendre, sous vos yeux ébahis, le Makefile :

    ################################################################################ # Customizable variables ################################################################################ # Directories that need to be built MODULES := src/cpu src/kernel src/soc # Name of the output binary OUT := mos # Build options CFLAGS := -Iinclude -Wall -Wextra -Werror -mcpu=cortex-m3 -nostdinc -mthumb \ -ggdb -fomit-frame-pointer -DDEBUG LDFLAGS := -nostdlib CROSS := arm-none-eabi- ################################################################################ # Build instructions, nothing should be customized under this line ################################################################################ CC := $(CROSS)gcc LD := $(CROSS)ld AS := $(CROSS)as GDB := $(CROSS)gdb OBJCOPY := $(CROSS)objcopy SIZE := $(CROSS)size OBJ := # Include all subdirectries makefiles, they will add their object files to the # OBJ variable include $(foreach module, $(MODULES), $(wildcard $(module)/*.mk)) # Default target (build the OS !) all: $(OUT).bin # Flat binary output $(OUT).bin: $(OUT).elf $(OBJCOPY) -O binary $< $@ $(SIZE) $< # ELF binary output $(OUT).elf: $(OBJ) $(LD) $(LDFLAGS) -T linker.lds -o $@ $^ # Cleanup target, remove generated object files and binaries clean: rm -f $(OBJ) $(OUT).bin $(OUT).elf debug: $(OUT).elf $(OUT).bin $(GDB) $<

    Je ne vais pas vous faire ici un cours sur Make, d'autant plus que j'ai mis des commentaires, mais on va discuter de quelques points.
    D'abord l'usage de la variable CROSS. C'est une méthode courante pour faire de la cross-compilation, qui permet d'appeler les outils de génération de code adaptés pour l'architecture de la cible.

    Ensuite, les options de compilation pour GCC, notamment une que vous n'avez pas forcément l'habitude de voir : -notstdinc indique à GCC que l'on ne veut pas utiliser les chemins d'en-têtes par défaut. Et ce pour la simple et bonne raison que nous n'avons pas de bibliothèque C standard sur notre cible. Cela signifie que si mon code contient un #include <stdio.h>, je ne veux pas du fichier d'en-tête standard fourni par mon compilateur, et je devrai fournir le fichier stdio.h dans les répertoires d'en-têtes de mon projet. Bienvenue dans le monde du développement bare-metal.
    Pour le linker, même punition : -nostdlib demande de ne surtout pas lier les bibliothèques standards au binaire généré. Cela signifie que si mon code appelle une fonction standard, par exemple strcpy(), c'est à moi de fournir une implémentation de cette fonction dans les sources de mon projet.

    Enfin, après la génération de l'exécutable mos.elf, vous noterez que j'utilise objcopy pour le convertir en binaire brut. En effet, un fichier ELF est un fichier structuré, avec des en-têtes, il est destiné à être parsé avant d'être executé. Ce qui est (entre autres) le travail d'un OS. Mais notre exécutable ne sera pas exécuté par un OS. Il faut donc en faire un binaire brut qui sera flashé dans la puce. Le fichier ELF par contre reste utile pour GDB, car il contient tous les symboles de debug.

    Le reste est du confort : la cible debug permet de compiler le binaire et de lancer GDB dans la foulée, tandis que l'appel à size après la compilation permet d'afficher dans le terminal les tailles de code et de données utilisées par notre noyau, à titre d'information.

    Conclusion

    Nous avons maintenant un environnement tout prêt pour commencer à coder et exécuter du code sur notre cible. Tous les outils sont là, il n'y a plus qu'à… Enfin presque. Les observateurs attentifs auront remarqué que je n'ai pas abordé le sujet du linker script (le fichier linker.lds). On en parlera dans le prochain épisode, car cela nécessite d'abord un point sur les différentes sections d'un exécutable, ainsi que sur le processus de démarrage du STM32F103. Et c'est promis, dans le prochain épisode, on fera tourner du code sur notre cible ! Promis également, le prochain épisode ne sera pas dans un an :-)

    Télécharger ce contenu au format Epub

    Lire les commentaires

    Sortie de PHP 7.0 - un nouveau départ

    Mardi 8 Décembre

    La version 7.0 de PHP a été annoncée ce jeudi 3 décembre 2015. Elle améliore très significativement les performances, ajoute de nouvelles fonctionnalités et fait un ménage conséquent. Le pari d'une modernisation complète de ce langage phare du développement web est-il réussi après deux années complètes de développement ? Début de réponse dans cette dépêche.

    Sommaire It is not just a next major PHP version being released today. The release being introduced is an outcome of the almost two years development journey. It is a very special accomplishment of the core team. And, it is a result of incredible efforts of many active community members. Indeed, it is not just a final release being brought out today, it is the rise of a new PHP generation with an enormous potential.

    Ce n'est pas seulement une nouvelle version majeure de PHP qui sort aujourd'hui. C'est l'aboutissement de pratiquement deux ans de développement. Une performance remarquable de la « core team ». Et, c'est le résultat d'efforts incroyables de la part de nombreux membres actifs de la communauté. En effet, ce n'est pas simplement une version finale qui sort aujourd'hui, c'est la naissance d'une nouvelle génération de PHP avec un potentiel énorme.

    C'est par ces mots que l'équipe de développement de PHP a annoncé la dernière version de leur langage. Et ce n'est pas rien, on se souviendra que les tentatives de développement de PHP 6 avaient échoué en 2010 poussant l'équipe à fusionner une partie des nouveautés à PHP 5.4 en abandonnant temporairement le travail sur Unicode.

    Résumé des plus gros changements

    PHP 7.0 entre en scène avec un nouveau moteur Zend Engine et des nouvelles fonctionnalités telles que :

    • Prise en charge cohérente du 64 bits ;
    • Amélioration de la hiérarchie des exceptions ;
    • De nombreuses erreurs fatales converties en exceptions ;
    • Un générateur de nombres aléatoires sécurisé ;
    • Suppression des interfaces SAPI et des extensions obsolètes ou non-maintenues ;
    • Typage des déclarations de fonction : retours et scalaires ;
    • Classes anonymes ;
    • Assertions à coût nul ;
    • Un nouvel opérateur null coalescing : ?? :
    • Un nouvel opérateur de comparaison : <=>.

    Comme promis, ce nouveau Zend Engine est beaucoup plus performant. On parle d'une réduction par quatre du nombre d'instructions CPU pour exécuter une requête WordPress (comparé à PHP 5.6 ; voir source). Et Zend annonce également de meilleures performances que HHVM 3.7. De plus, il aurait réduit significativement l'utilisation de la mémoire.

    Dans le détail Amélioration des performances

    Avant toute explication, il est nécessaire de parler de HHVM. Cette machine virtuelle pour PHP et HACK ont été développés par Facebook. HHVM a apporté un gain substantiel de performance. Pour ne pas se laisser distancer, l'entreprise Zend lance en janvier 2014 un projet interne pour optimiser les structures de données de PHP, sous la direction de Dimitri Stogov. Les premiers résultats sont prometteurs, et en mars une RFC baptisée PHPNG propose de refonder le cœur de PHP. C'est sur ces bases que PHP 7 a été construit ; l'équipe en montre donc fièrement les nouvelles performances.

    Zend a publié une longue infographie d'un banc d'essai comparant le nombre de requêtes par secondes pouvant être effectuées sur différents CMS : Drupal, WordPress, Magento, Laravel, Zend Framework, Sugar CRM. De manière générale on remarquera que PHP 7 sert en moyenne 1,8 fois plus de requêtes que PHP 5.6 et légèrement plus que HHVM 3.7. On prendra ces chiffres avec des pincettes du fait de leur description imprécise et de leur origine (Zend), l'entreprise ayant intérêt à présenter PHP sous le meilleur jour possible. On notera aussi que HHVM s'en sortirait mieux pour le calcul lourd (ce qui n'est pas nécessairement la cible de base du développement de sites web).

    On peut aussi mesurer l'évolution des performances dans ce graphique retraçant le nombre d'instructions du processeur pour une même page WordPress tout au long du développement de PHP 7 en 2014.

    PHP 7 devait aussi apporter une compilation à la volée, nous en parlions en ces termes dans la dépêche annonçant la sortie de PHP 5.6 :

    Ce gain de performance pourra être accentué par le compilation à la volée (JIT : Just In Time) qui devrait être implémenté par Dmitry Stogov. Il annonce 10 à 20 pourcent de vitesse en plus sur des applications réelles : WordPress 3.6 (+ 20 %) et Drupal 6.1 (+ 11,7 %)…

    Malheureusement, cette nouvelle évolution se fait attendre. HHVM étant parti pour lancer une nouvelle offensive sur le sujet, PHP fera tout pour rester dans la course.

    Amélioration de la structure du compilateur

    Auparavant, l'analyse syntaxique d'un code source PHP était imbriquée dans le compilateur PHP. Cette nouvelle version utilise en amont de la compilation un arbre syntaxique abstrait, ou AST pour Abstract Syntax Tree. Ce découplage, avec désormais une phase d'analyse syntaxique avant la production des opcodes, a permis de retirer du compilateur quelques subterfuges peu présentables pour obtenir un code de maintenance plus facile.

    Si l'impact sur les performances est négligeable, cette amélioration ouvre des perspectives sur la syntaxe du langage. Une application pratique immédiate est que yield peut maintenant s'utiliser sans parenthèses.

    L'AST est une structure intermédiaire utilisée durant le processus de compilation. Elle remplace l'utilisation d'opcodes (liste d'opérations à effectuer par la suite).

    Désolidariser l'analyseur syntaxique du compilateur permet de supprimer un grand nombre de bricolages et rend le code plus facilement maintenable et compréhensible en général. De plus, cela permet de mettre en oeuvre des syntaxes qui ne sont pas interprétables avec une seule passe d'analyse.

    L'implémentation de l'AST est 10 à 15 % plus rapide que la compilation standard. En revanche, elle est plus consommatrice en mémoire en fonction de la taille des fichiers.

    Quelques changements de syntaxe et de fonctionnement ont été nécessaires pour permettre l'implémentation de l'AST.

    Un autre changement structurel apporte plus de cohérence dans le support du 64 bits. Avant PHP 7, il n'y avait pas de type entier 64 bits. La taille dépendait du système d'exploitation, avec notamment PHP/Windows qui restait en 32 bits et émulait les entiers longs. La proposition d'uniformiser ce comportement a été acceptée de justesse et implémentée en PHP 7, après correction des extensions comme PDO qui avaient des préjugés sur les tailles des entiers.

    Changement dans l'affectation des listes

    Les listes sont maintenant affectées de gauche à droite.

    list($array[], $array[], $array[]) = [1, 2, 3]; var_dump($array); // AVANT: $array = [3, 2, 1] // MAINTENANT: $array = [1, 2, 3]

    D'autres exemples d'affectation :

    $a = [1, 2]; list($a, $b) = $a; // AVANT: $a = 1, $b = 2 // MAINTENANT: $a = 1, $b = null + "Undefined index 1" $b = [1, 2]; list($a, $b) = $b; // AVANT: $a = null + "Undefined index 0", $b = 2 // MAINTENANT: $a = 1, $b = 2

    Les listes vides sont toujours interdites :

    list() = $a; // INVALID list($b, list()) = $a; // INVALID foreach ($a as list()) // INVALID (c'était déjà le cas avant) Influence des parenthèses

    Une conséquence de l'Uniform Variable Syntax RFC était que ($foo)['bar'] = 'baz' et $foo['bar'] = 'baz' n'avaient pas le même comportement car ils étaient compilés avec des méthodes de recherche différentes. Ce problème est maintenant résolu, les comportements que l'on peut attendre seront ceux observés.

    Yield est maintenant associatif à droite

    Le constructeur yield n'a plus besoin de parenthèse et est associatif à droite.

    echo yield -1; // Etait interprété comme echo (yield) - 1; // Est maintenant interprété comme echo yield (-1); yield $foo or die; // Etait interprété comme yield ($foo or die); // Est maintenant interprété comme (yield $foo) or die;

    D'autres conséquences et informations peuvent être trouvées sur la page de la RFC.

    Exceptions (hiérarchie et ajouts)

    Depuis PHP 7, le moteur peut envoyer des exceptions au lieu de lancer des erreurs fatales. En effet, jusqu'à présent, la moindre erreur fatale faisait arrêter le processus immédiatement ce qui peut être génant dans le cas d'un serveur ou d'un démon écrit en PHP. Grâce aux exceptions, il sera par exemple possible d'attraper une exception, fermer proprement les entrées/sorties nécessaires et continuer de servir les autres requêtes.

    La RFC décrit aussi l'exemple d'une batterie de tests en PHPUnit qui peut continuer à s'executer même si un des tests renvoit une erreur fatale.

    La RFC introduit donc deux nouveaux types d'exception :

    • EngineException : exception envoyée par défaut à l'execution.
    • ParseException : pour les exceptions liées au parsing

    Elle change les règles suivantes :

    • Il est maintenant possible d'utiliser des exceptions dans le moteur PHP
    • Les erreurs précédemments utilisées : E_ERROR, E_RECOVERABLE_ERROR, E_PARSE OU E_COMPILE_ERROR sont converties en exceptions
    • Il est maintenant découragé d'introduire de nouvelles erreurs de type E_ERROR ou E_RECOVERABLE_ERROR. Dans les limites de la faisabilité, il faut préférer les exceptions.

    Pour conserver une certaine compatibilité, les erreurs classiques avec leurs messages seront conservées si les exceptions de moteur ou de l'analyseur ne sont pas attrapées. Cela pourrait être changé à l'avenir. Il existe donc quelques incompatibilités mais la plupart des anciens codes devrait continuer à fonctionner.

    Générateur de nombres aléatoires sécurisé

    Un générateur de nombre pseudo-aléatoire cryptographiquement sécurisé a été ajouté. Il apporte (RFC) deux nouvelles fonctions : random_bytes() et random_int().

    $randomStr = random_bytes($length = 16); $randomInt = random_int($min = 0, $max = 127);

    Pour générer ces nombres, le moteur utilisera :

    • Sur Windows : exclusivement CryptGenRandom
    • arc4random_buf() s'il est disponible (souvent spécifique à BSD)
    • /dev/arandom s'il est disponible
    • /dev/urandom si aucun des précédents n'est disponible
    • Une exception sera envoyée si la source d'aléatoire n'est pas suffisante. (RFC)

    Ces ajouts permettent de ne plus avoir à utiliser mcrypt_create_iv() qui demandait d'installer l'extension MCrypt ni openssl_random_pseudo_bytes apportée par OpenSSL lib.

    Nettoyage SAPI et extensions

    Une modification de taille, annoncée depuis des années, est la suppression de « ext/mysql », l'API historique de MySQL dans PHP. La fameuse mysql_real_escape_string() (qui est real par opposition à mysql_escape_string() qui n'est pas sûre), cette fonction omni-présente au temps de PHP 4 a vécu. L'extension MySQL est avantageusement remplacée par les API (fonctionnelles ou orientées-objets, au choix) de Mysqli ou PDO.

    Les extensions ereg (expressions rationnelles pre-preg), mssql (PDO s'y substitue) et sybase_ct ont aussi été supprimées.

    Quinze SAPI ont été retirées du code. Par exemple, la SAPI « apache » était une ancienne méthode d'intégration de PHP à Apache, alors qu'aujourd'hui « fpm » est recommandée, ou à défaut en module avec mod_php qui correspond généralement à la SAPI « apache2handler ».

    Côté SAPI, noter que quand PHP-FPM écoute sur un port donné, il le fait en IPv4, et désormais aussi en IPv6, par défaut.

    Déclarations de type dans les fonctions : retours et scalaires Déclaration de type scalaire

    Les déclarations de type existent depuis PHP 5 et permettent de demander un certain type à l'appel d'une fonction. Par contre seuls les classes, interfaces, tableaux et le type callable étaient disponibles. PHP 7 ajoute donc le typage des scalaires (string, int, float et bool) avec deux modes : coercitif (par défaut) et strict (voir ci-dessous).

    À l'exécution, si l'argument donné est de mauvais type, PHP 7 lancera une exception TypeError. PHP 5 provoquait une erreur fatale.

    function foo(int $foo, int $bar) { echo $foo + $bar; } foo(1, 1); // affiche 2 foo(1, '1'); // affiche 2 (conversion car mode coercitif) foo('a', 1); // Uncaught TypeError

    Toute la documentation concernant la déclaration de type peut être trouvée ici.

    Déclaration du type renvoyé

    PHP 7 permet la déclaration du type de la valeur retournée par une fonction.

    function countNonBlank(array $lines) : int { return count(array_filter(array_map('trim', $lines))); } Typage strict

    Par défaut, PHP va convertir les mauvais types vers le type scalaire attendu tant que possible. Par exemple, une fonction, qui attend comme paramètre un integer (entier), et à laquelle est passée une string (chaîne de caractères) recevra une variable de type string.

    Il est possible d'activer un typage strict fichier par fichier. Dans ce mode, seule une variable exactement du type attendu dans la déclaration sera acceptée, sinon une exception du type TypeError sera levée. La seule exception à cette règle est qu'un entier (integer) peut être passé à une fonction attendant un nombre flottant (float).

    Le typage strict affecte aussi les déclarations de type retourné. Alors qu'en typage faible, le valeur de retour est convertie vers le type déclaré, en typage strict une exception sera levée.

    Ce mode est activé fichier par fichier grâce à l'expression declare.

    declare(strict_types=1); function sum(int $a, int $b) { return $a + $b; } var_dump(sum(1, 2)); // retourne int(3) var_dump(sum(1.5, 2.5)); // Uncaught TypeException

    Le mode strict est à surveiller de près car il ne s'applique qu'aux appels de fonctions effectués depuis l'intérieur d'un fichier dont le typage strict est actif. Autrement dit, si un fichier dont le typage strict n'est pas activé effectue un appel à une fonction qui a été définie dans un fichier dont le type strict est actif, la préférence de l'appelant sera respectée, le typage ne sera donc pas strict.

    Classes anonymes

    L'opérateur new peut désormais être suivi de la déclaration d'une classe anonyme, au lieu du nom d'une classe existante. L'exemple suivant illustre ce principe.

    function createLogger() { return new class implements \IteratorAggregate { private $content = []; public function add(string $item) { $this->content[] = $item; return $this; } public function getIterator() { return new \ArrayIterator($this->content); } }; } $logger = createLogger(); $logger->add("jusqu'ici tout va bien")->add("ça baigne"); foreach ($logger as $log) { echo $log . "\n"; } Expectations, assertions à coût nul

    La fonction assert() devient une composante du langage PHP 7, ce qui lui permet d'être plus souple et plus performante.

    Avant PHP 7, le premier paramètre de assert() était évalué, même quand les assertions étaient désactivées, avec le risque de ralentir ou perturber l'exécution en production. Une astuce douteuse était de placer le code PHP dans une chaîne de caractère, laquelle n'était évaluée que lorsqu'on avait activé les assertions.

    // Avant PHP 7 // Activer les assertions assert_options(ASSERT_ACTIVE); // La fonction sera appelée, même sans ASSERT_ACTIVE expect(slowButTrue(), "Problème avec slowButTrue()"); // Le texte sera évalué seulement avec ASSERT_ACTIVE expect("slowButTrue()", "Problème avec slowButTrue()");

    En PHP 7, l'ancienne syntaxe reste valable, mais passer le réglage zend.assertions à 0 (contre 1 par défaut) permet de désactiver l'évaluation des assertions. On peut aussi déclencher des exceptions, dérivées de la nouvelle classe réservée AssertionError.

    // PHP 7 // Activer les assertions (ou mieux, dans php.ini) ini_set('zend.assertions', 1); // Si les assertions sont désactivées, pas d'évaluation expect(slowButTrue(), "Problème avec slowButTrue()"); // Remplacer les messages d'erreurs par des exceptions ini_set('assert.exception', 1); assert(false, new AssertionError('Ça va mal')); Nouvel opérateur null coalescing : ??

    Cet opérateur ajoute du sucre syntaxique pour les cas courants d'utilisation d'un opérateur ternaire couplé à la fonction isset() qui permet de savoir si une valeur existe.

    ?? retourne le premier opérande s'il existe et s'il n'est pas NULL, sinon il retourne le deuxième.

    // code d'avant PHP 7 return isset($a) ? $a : 0; // code en PHP 7 return $a ?? 0; // combinaison ?? en PHP 7 return $_GET["user"] ?? $_POST["user"] ?? "anonyme";

    Comme illustré ci-dessus, l'opérateur peut être chainé, et retournera alors la première valeur définie parmi plusieurs opérandes consécutifs.

    Nouvel opérateur de comparaison : <=>

    Dérivé de Perl et consorts à travers la RFC « Combined Comparison (Spaceship) Operator », cet opérateur fonctionne comme les fonctions tri-valuées strcmp() ou version_compare() mais il a l'avantage de pouvoir être utilisé quelles que soient les valeurs, avec la même sémantique que <, <=, ==, >=, >. De nombreux exemples sont trouvables sur la page de la RFC.

    Il donne les résultats suivant :

    • 0 si les deux opérandes sont égaux ;
    • 1 si l’opérande de gauche est plus grand que celui de droite ;
    • -1 si l’opérande de gauche est plus petit que celui de droite.
    Incompatibilités

    Comme toujours, la liste des incompatibilités et le guide des migrations est disponible.

    Télécharger ce contenu au format Epub

    Lire les commentaires

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

    Lundi 7 Décembre

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

    Sommaire

    [Numerama] Loi numérique: on a lu les 250 réponses du gouvernement

    Par Guillaume Champeau, le samedi 5 décembre 2015. Extrait:

    Dans le cadre de la consultation sur la loi pour une République numérique, le gouvernement a répondu à plus de 250 propositions faites par des internautes ou des organisations. Nous les avons triées et synthétisées pour voir ce que donnait ce premier effort de démocratie participative.

    Lien vers l'article original: http://www.numerama.com/politique/133686-la-loi-numerique-ou-quand-le-gouvernement-repond-a-obi-wan-kenobi.html

    Et aussi:

    Voir aussi:

    [L'OBS] Coder? Un jeu d'enfants!

    Par Louis Morice, le samedi 5 décembre 2015. Extrait:

    Les fabricants de jouets ne s'intéressent pas encore vraiment au codage. Profitez-en pour vous pencher sur les logiciels libres qui permettent de vous initier avec vos enfants.

    Lien vers l'article original: http://tempsreel.nouvelobs.com/bien-bien/20151201.OBS0529/coder-un-jeu-d-enfants.html

    [Next INpact] La nouvelle version du «référentiel général d'interopérabilité» se dévoile

    Par Xavier Berne, le jeudi 3 décembre 2015. Extrait:

    La publication du nouveau «référentiel général d’interopérabilité» applicable aux administrations françaises semble plus que jamais imminente. La France vient en effet de notifier son texte à Bruxelles (PDF), dévoilant pour l’occasion les pistes retenues par l’exécutif.

    Lien vers l'article original: http://www.nextinpact.com/news/97563-la-nouvelle-version-referentiel-general-d-interoperabilite-se-devoile.htm

    [infoDSI] Quinze organisations dénoncent l'accord entre Microsoft et le ministère de l'Education nationale

    Par la rédaction, le jeudi 3 décembre 2015. Extrait:

    Lundi 30 novembre 2015, la ministre de l'Éducation nationale, de l’Enseignement supérieur et de la recherche Najat Vallaud-Belkacem a annoncé la signature d'un accord de partenariat entre Microsoft et son ministère. Microsoft s'engage à investir sur 18 mois quelque 13 millions d'euros dédiés à l'accompagnement des enseignants, à «la mise à disposition de plateformes collaboratives», ainsi qu'à l'apprentissage du code informatique.

    Lien vers l'article original: http://www.infodsi.com/articles/159878/quinze-organisations-denoncent-accord-entre-microsoft-ministere-education-nationale.html

    Et aussi:

    Voir aussi:

    [canoe] L'ÉTS ouvre la Maison du logiciel libre, un concept unique

    Par la rédaction, le mercredi 2 décembre 2015. Extrait:

    Mardi, l'École de technologie supérieure de Montréal inaugurait officiellement sa Maison du logiciel libre.

    Lien vers l'article original: http://fr.canoe.ca/techno/materiel/archives/2015/12/20151202-171132.html

    [La gazette.fr] «Les collectivités peuvent être protecteurs des communs» – Valérie Peugeot

    Par Romain Mazon, le mercredi 2 décembre 2015. Extrait:

    Utilisée au Moyen-Age, la notion de biens communs revient en force, en ce début de XXIè siècle, portée par le secteur du numérique et ses usages de partage. La dynamique et l'agilité des communautés du web qui co-construisent et développent de nouveaux services secoue sérieusement les tenants des «vieux» concepts de propriété et de droits d'auteur. Mais la notion de «biens communs», ou «communs» bouscule aussi celle de services publics, et ceux qui les rendent, élus et fonctionnaires. Pour autant, ces notions s'affrontent-elles, ou, au contraire, se complètent-elles?

    Lien vers l'article original: http://www.lagazettedescommunes.com/418463/les-collectivites-peuvent-etre-protecteurs-des-communs-valerie-peugeot

    [L'Echo Républicain] A la découverte des logiciels libres à Bretoncelles

    Par Muriel Bansard, le mardi 1 décembre 2015. Extrait:

    Bonne journée pour les organisateurs de l'atelier dédié aux logiciels libres, samedi, à l'Espace public numérique (EPN) de l'Abbé-Fret, à Bretoncelles.

    Lien vers l'article original: http://www.lechorepublicain.fr/eure-et-loir/actualite/pays/le-perche/2015/12/01/a-la-decouverte-des-logiciels-libres-a-bretoncelles_11685840-7477.html

    [LeDevoir.com] Les écobricoleurs du climat s’activent en marge de la COP21

    Par Isabelle Paré, le mardi 1 décembre 2015. Extrait:

    Ils sont jeunes, ingénieurs, scientifiques, designers ou militants, et ne veulent pas attendre que les grands de ce monde se mettent à table pour sauver la Terre. On les surnomme «hackers» ou «makers», mais ils sont en fait les écobricoleurs d’une génération qui veut donner au plus grand nombre les clés pour changer la planète de façon durable.

    Lien vers l'article original: http://www.ledevoir.com/environnement/actualites-sur-l-environnement/456707/les-ecobricoleurs-du-climat-s-activent-en-marge-de-la-cop21

    Télécharger ce contenu au format Epub

    Lire les commentaires

    The Go Programming Language

    Dimanche 6 Décembre

    Ce titre me rappelle quelque chose, les noms des auteurs me rappellent quelque chose aussi. Un certain Kernighan…
    Il me faut remonter assez loin dans ma mémoire, à une époque où la lecture d'un seul livre permettait de s'occuper un sacré bout de temps.

    Nous avons bien là l'auteur du mythique « The C Programming Language » qui reprend la plume pour un nouveau langage. Cela attise ma curiosité, je contacte l'éditeur qui me propose un spécimen en échange de mon avis impartial. Impartialité toute relative vu les souvenirs et le respect qu'imposent les auteurs du livre et du langage !

    Sommaire The Go Programming Language

    par Alan A. A. Donovan et Brian W. Kernighan

    Lecture

    Le livre entre rapidement dans le vif du sujet après une brève introduction où on apprend que les auteurs sont également des personnes bien connues comme Rob Pike (utf8), Ken Thomson (unix) et Robert Griesemer (V8). Nulle perte de temps à essayer de vendre le langage, si on est là c'est qu'on veut juger sur pièce. Cela tombe bien, la particularité de ce langage est justement d'être simple pour pouvoir être pris en main rapidement. Mais simple ne veut pas dire facile. Le livre s'adresse à des personnes connaissant déjà la programmation, pas nécessairement Go mais il est à mon avis préférable de suivre le tutorial du site de référence avant. Le livre aborde dès le départ des exemples beaucoup plus ardus que ceux des tutos.

    Une fois les premiers exemples parcourus, on rentre dès le deuxième chapitre dans la structure du langage, les variables, les fonctions etc d'une manière qui semble assez exhaustive. On s'y retrouve quand même assez facilement, les principes et la syntaxe de base étant très classiques. La première et principale partie du livre décortique le langage, on a le sentiment d'avoir fait le tour et de pouvoir fermer le livre et commencer à mettre tout ça en pratique, ce qui était normal à la naissance du C et qui est de plus en plus rare aujourd'hui. Le langage Go fait le pari que la simplicité reste préférable à l'accumulation de fonctionnalités. Si on aime on est comblé.
    Comme dans le livre sur le C, les exemples donnés montrent tout de suite que la simplicité du langage n'empêche pas la complexité de ce que l'on doit faire avec sur des cas réels. Les exercices demandés sont encore pires car ils n'ont parfois pas tellement de rapport avec le chapitre en question et demandent des compétences qui seront acquises dans les chapitres suivants. Par exemple un exercice de bench dans le chapitre sur l'organisation des packages. Mais comme on a de toutes façon prévu de lire et relire le livre plusieurs fois on s'en accomode !

    Certains chapitres vont encore plus loin dans l'exhaustivité, par exemple celui sur l'UTF-8 permet de comprendre non seulement comment Go nous aide à résoudre le problème mais également en quoi consiste ce problème en général, avec schémas bien utiles à l'appui.
    De même le chapitre sur les tableaux permet de bien comprendre les problématiques d'un tableau de longueur variable et comment cela est géré en Go. Les performances d'un programme résultent souvent de la bonne compréhension de ces mécanismes. En particulier lorsqu'on aborde un nouveau langage, il devient réellement efficace lorsqu'on l'utilise comme il est prévu et non comme on en a l'habitude avec un autre langage.

    Le duck typing et les compositions grâce aux interfaces est quand même sympa mais rien de très original jusque là.

    On aborde ensuite quelques innovations plus originales, le defer pour lancer un code en sortie de fonction (en entrée aussi d'une certaine manière) et bien sûr les goroutines (threads légers) et channels (canaux de communication entre les goroutines).

    Ces dernières possibilités sont illustrées de cas concrets en allant là encore assez loin dans les explications d'ordre général au niveau de la programmation concurrente en général.

    Une autre particularité du Go, décrite dans le livre, vient du fait qu'il est accompagné d'un ensemble d'outils d'aide au développement, ce qui n'est pas étonnant car il a en partie été conçu pour permettre de réaliser facilement ces outils. Comme le langage, ces outils (formatage, compilation, tests, coverage, bench, debug, doc, refactoring…) sont les plus simples possibles (à la Unix) tout en couvrant la grande majorité des besoins quotidiens du développeur. Ils ont le même avantage d'être pris en main très rapidement et de ne pas céder à la profusion de fonctionnalités qui finalement perdent le développeur et divise les équipes.

    Les deux derniers chapitres concernent les fonctions bas niveau et de reflection (en anglais). Le lecteur est prévenu que ces chapitres sont à réserver aux cas très particuliers, ils sont à éviter dans un premier temps.

    En conclusion, c'est grâce à la simplicité du langage qu'un livre comme celui-ci peut couvrir une palette aussi complète de ses possibilités.

    Mise en pratique

    Ensuite j'ai mis en pratique mes nouvelles compétences dans deux projets nécessitants soit des performances soit du multitache (websocket). Le résultat a été à la hauteur de mes attentes, passée la première étape de prendre l'habitude de la syntaxe des types on est productif très rapidement. Les performances sont d'autant plus impressionnantes que l'on n'hésite pas à utiliser le multiproc.
    Au début je ne pensais pas l'utiliser pour autre chose que des cas particuliers, tellement comblé que je suis avec Python/C depuis des années, mais plus je l'utilise plus j'ai du mal a me passer des outils mis à disposition qui rattrapent. En particulier pour le formatage automatique du code, la vérification du code avant exécution et l'aide au refactoring.
    Ce que l'on perd du côté dynamique de Python on le gagne en simplicité, pas de magie noire. On aime ou on n'aime pas, le tuto permet de se faire une idée très rapidement.

    Références
    • Éditeur Addison-Wesley
    • version papier publiée le 26 octobre 2015
      • 380 pages
      • ISBN: 978-0134190440
    • version ebook publiée le 20 novembre 2015
      • 400 pages
      • ISBN-13: 978-0-13-419058-7
      • ISBN-10: 0-13-419058-0
    Télécharger ce contenu au format Epub

    Lire les commentaires

    Pages