26 March 2015

Carl Chenet

Liens intéressants Journal Du pirate semaine #13

Suivez-moi aussi sur Diaspora*diaspora-banner ou Twitter  ou sur Identi.ca

Pour cette 13ème semaine de 2015, 5 liens intéressants que vous avez peut-être ratés, relayés cette semaine par le Journal Du Pirate, votre source d’informations pour le Logiciel Libre francophone !

cozy-logo

De très bons articles en français sont écrits tous les jours par la communauté francophone du Logiciel Libre, que ce soit via des blogs de passionnés, les sites incontournables de la communauté, les sites ou blogs d’entreprises.

Pour s’y retrouver dans ce fourmillement, le Journal Du Pirate propose une sélection des meilleurs publications récentes, proposées, relues et approuvées par les contributeurs du Journal. 

Le Journal Du Pirate fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone.

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal Du Pirate ou bien ici :)

 


26 March, 2015 11:00PM par Carl Chenet

25 March 2015

Carl Chenet

On a une sauvegarde de la base de données ? Elle a 6 mois, inutilisable

Suivez-moi aussi sur Diaspora*diaspora-banner ou Twitter  ou sur Identi.ca

Péremption des données

Quel informaticien n’a pas été confronté à la péremption des données ? Vos données sont trop vieilles, inutilisables. Les causes peuvent être multiples : schémas des données ayant évolués, format de fichiers incompatibles ou delta trop important avec l’existant.

time-expired

Le cas est particulièrement flagrant avec une sauvegarde. Si cette dernière contient bien des données, que ces dernières sont cohérentes mais inutilisables aujourd’hui, vous pouvez la considérer comme périmée.

Backup Checker

Pour répondre à ce problème, la nouvelle version 1.4 de Backup Checker a été publiée sur GitHub (étoiles appréciées :) ), l’outil de vérification automatisée de sauvegarde, offre une fonctionnalité permettant de contrôler l’âge de votre archive, qui mis en relation avec une durée que vous aurez définie, permettra l’émission d’un avertissement une fois cette durée écoulée, et tout cela automatiquement. Plus de mauvaise surprise le jour où vous devez utiliser la sauvegarde, donc le jour où votre infrastructure en a vraiment besoin.

Paquets Debian pour Wheezy et Squeeze

Proposed Debian Logo

Des paquets Debian sont désormais disponibles pour la version stable et la vieille stable de Debian. Mettre en place le dépôt se fait très simplement en un copier/coller en tant qu’utilisateur root pour Debian Wheezy :

apt-key adv --keyserver pgp.mit.edu --recv-keys 2B24481A \
&& echo "deb http://debian.mytux.fr wheezy main" > /etc/apt/sources.list.d/mytux.list \
&& apt-get update \
&& apt-get install backupchecker

Pour Debian Squeeze :

apt-key adv --keyserver pgp.mit.edu --recv-keys 2B24481A \
&& echo "deb http://debian.mytux.fr squeeze main" > /etc/apt/sources.list.d/mytux.list \
&& apt-get update \
&& apt-get install backupchecker
Rôles Ansible pour mettre en place Backup Checker

ansible

Le succès d’Ansible est clairement mérité. Léger à mettre en place, sans client, utilisant ssh et surtout une prise en main très rapide. C’est pourquoi nous proposons aujourd’hui des playbooks Ansible permettant de simplement déployer Backup Checker. Voici les playbooks en question :

Retour

Et vous ? Que pensez-vous de la vérification de sauvegarde ? Comment utilisez-vous Backup Checker ?  Nous sommes intéressés par  vos réactions et commentaires concernant le projet.

N’hésitez pas à vous manifester dans les commentaires de ce billet, via le gestionnaire de rapports de bugs ou directement auprès de l’auteur.


25 March, 2015 11:00PM par Carl Chenet

20 March 2015

Florent Gallaire

Quel DPL pour 2015 ?

Le temps passe vite, et cela fait déjà presque un an que Lucas Nussbaum a été réélu Debian Project Leader (DPL). Chaque développeur Debian pouvait donc se porter candidat entre le 4 et le 10 mars à la suite du traditionnel appel à candidatures.

Dès le 12 février, anticipant quelque peu sur le calendrier, Lucas avait exprimé le souhait de ne pas se représenter :

But I also think that switching release cycles is a good opportunity to align other changes, and starting a fresh release cycle with a fresh DPL might be a good idea. Put differently: no, I will not run for re-election.

Il y aura finalement cette année trois candidats :

Les presque mille développeurs Debian seront libres de faire leur choix du 1er au 13 avril lors d’un vote utilisant la méthode Condorcet.

Vous pouvez retrouver tous les débats de la campagne sur la mailing list debian-vote.

20 March, 2015 10:51AM par fgallaire

11 March 2015

Raphaël Hertzog

Mes activités libres en février 2015

Mon rapport mensuel couvre une grande partie de mes contributions au logiciel libre. Je l’écris pour mes donateurs (merci à eux !) mais aussi pour la communauté Debian au sens large parce que cela peut donner des idées aux nouveaux venus et que c’est également un des moyens les plus effectifs de trouver des volontaires pour travailler sur les projets qui me tiennent à cœur.

Debian LTS

Ce mois-ci ce sont 14,5 heures de travail sur Debian LTS qui ont été subventionnées. J’ai principalement travaillé au tri des vulnérabilités CVE (41 commits vers le suiveur de sécurité) et aux problèmes d’organisation.

Un mainteneur s’est plaint de ne pas avoir été gardé dans la boucle d’une mise à jour LTS de son paquet. Après discussion, j’ai décidé de changer la façon dont je réalisais le tri des CVE. A partir de maintenant, chaque fois que j’ajoute un paquet à notre liste de paquets nécessitant une mise à jour, j’envoie également un email à son mainteneur, lui offrant ainsi l’opportunité de s’impliquer.

Afin que cela soit supportable en termes de charge, j’ai écrit un petit script qui génère un email à partir d’un modèle. Et pour lancer ce processus, j’ai envoyé un email à tous les mainteneurs de tous les paquets qui étaient déjà dans notre pile de paquets à mettre à jour.

J’ai demandé à ce qu’un export au format JSON des données du suiveur de sécurité soit disponible, de sorte à améliorer les emails générés (cf. les discussions autour du n°761859). Dans l’intervalle, Holger a travaillé dessus et, après quelques itérations, nous avons convergé vers un format de sortie à la fois très utile pour mes besoins en termes de tri CVE, mais également pour le suiveur de paquets, car rendant possible l’affichage de la liste des vulnérabilités de sécurité affectant chaque version (cf. le n°761730).

Last but not least, je ne souhaite pas être le seul à effectuer ce tri des vulnérabilités CVE pour nos versions LTS, en conséquence de quoi j’ai documenté ce processus sur notre page wiki.

Note : j’ai parrainé une mise à jour de e2fsprogs préparée par Nguyen Cong, et j’ai envoyé la DLA pour la mise à jour de la version de samba placée sous embargo, qui a été préparée par Ivo de Decker (merci à tous les deux !).

Tryton

Comme le mois dernier, j’ai passé un temps certain sur Tryton, corrigeant certains bogues qui m’affectaient et améliorant la définition du plan comptable français, ce afin que les achats et ventes au sein de l’Union Européenne soient correctement gérés. Voici quelques liens pour plus de détails :

Debian

J’ai un peu travaillé sur Distro Tracker, où j’ai corrigé le n°777453 (réinitialisation non fonctionnelle du mot de passe car l’email généré utilisait une adresse email « From » invalide) ainsi que le n°779247 (les éléments d’action reproductible des compilations obsolètes n’étaient pas supprimés). J’ai également commencé à restructurer la gestion des emails dans distro-tracker (cf. n°754913), mais ce n’est pas encore publié.

Bien que je n’ai aucune intention d’arrêter ma contribution envers Debian (cela fait partie de mon travail quotidien !), j’ai réduit mon implication – pour ce qui n’est pas lié à mon travail – en reconnaissant officiellement que je n’étais plus en mesure d’assurer correctement certaines de mes responsabilités, et que je suivais trop de listes de diffusions ou de flux RSS. Les changements les plus notables sont mon retrait de la maintenance de dpkg, de developers-reference, quilt, sql-ledger, et de quelques modules perl/python.

Divers

Logiciel de vote Une des raisons de la réduction de ma contribution envers Debian vient de mon implication croissante dans Nouvelle Donne (un parti politique français), et plus particulièrement dans la gestion de son infrastructure numérique (qui tourne actuellement sous Ubuntu, doh !). Corollaire du point précédent, je cherchais un logiciel libre capable de gérer de manière sécurisée les votes et élections (et, si possible, qui adhère au principe de la démocratie liquide). Aucune solution n’est parfaite et il n’y a pas de vainqueur qui émerge clairement.

Ceci étant, j’ai commencé à suivre l’évolution de AgoraVoting, car il semble profiter d’une bonne dynamique et dispose de fonctionnalités intéressantes (il supporte dès à présent les votes par classement des choix, de bons mécanismes de chiffrement, et a été utilisé dans le contexte de Podemos, en Espagne, pour des élections impliquant un nombre important de votants). Il a toutefois des progrès à faire pour obtenir le statut d’un projet réellement international et supporté par la communauté.

Bogue GDM Du fait de mon travail sur Kali, j’ai créé ce rapport concernant GDM (ce dernier a été rapidement corrigé en amont, il est toujours ouvert dans Debian) ainsi que celui-là concernant accountsservice, pour qu’il soit possible de définir la session graphique par défaut.

Formule Dirvish pour Salt J’ai contribué une autre formule pour la gestion des sauvegardes avec dirvish.

Merci

Rendez-vous au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Free Software Activities in February 2015 contribuée par Weierstrass01.

Aucun commentaire pour le moment | Vous avez aimé ? Cliquez ici. | Ce blog utilise Flattr.

11 March, 2015 02:30PM par Raphaël Hertzog

06 March 2015

Tanguy Ortolo

Un vrai livre n'est pas verrouillé : #thatisnotabook

Fondation, d'Isaac Asimov, chez Folio SF

Ceci est un livre. Je peux en faire ce que je veux, le prêter, le copier pour mon usage privé. Personne ne peut m'empêcher de le faire ou me le retirer. Ceci est une livre, soumis à une TVA réduite.


Deux fichiers EPUB

Ceci est un livre, enfin deux. Je peux en faire ce que je veux, les prêter, les copier pour mon usage privé, en particulier les sauvegarder sur mon ordinateur pour ne pas le perdre si ma liseuse tombe en panne, ou les imprimer pour les lire sans appareil électronique. Personne ne peut m'empêcher de le faire ou me les retirer. Ceci est un livre, qui devrait être soumis à une TVA réduite.


Un fichier verrouillé ACSM

Ceci n'est pas un livre. Je ne peux pas le lire sur tous les appareils que je veux, à vrai dire je ne peux pas le lire du tout, puisqu'il faut un logiciel qui n'est pas disponible pour mon système d'exploitation. Je ne peux pas le prêter. Je ne peux pas le copier pour mon usage privé. Adobe peut me le retirer à distance. Il deviendra illisible le jour où les serveurs dédiés à cela seront arrêtés — notez qu'il s'agit d'un futur et non d'un conditionnel, d'une certitude et non d'une hypothèse. Ceci n'est pas un livre, c'est un droit temporaire de lecture sous conditions, une location à durée indéfinie, bref, un service, qui doit être soumis à une TVA pleine.

06 March, 2015 05:54PM par Tanguy

13 February 2015

Raphaël Hertzog

Mes activités libres en janvier 2015

Mon rapport mensuel couvre une grande partie de mes contributions au logiciel libre. Je l’écris pour mes donateurs (merci à eux !) mais aussi pour la communauté Debian au sens large parce que cela peut donner des idées aux nouveaux venus et que c’est également un des moyens les plus effectifs de trouver des volontaires pour travailler sur les projets qui me tiennent à cœur.

Debian LTS

Ce mois-ci ce sont 12 heures de travail sur Debian LTS qui ont été subventionnées. Voici le résumé des tâches qui m’ont occupé :

  • Tri de vulnérabilités CVE. J’ai poussé 24 commits vers le suiveur de sécurité. J’ai passé plus de temps que d’habitude à cette tâche ce mois-ci (cf. ci-dessous);
  • J’ai publié la DLA-143-1 concernant python-django (corrigeant 3 vulnérabilités CVE). Alors que j’espérais que la mise à jour soit rapide, mes tests ont révélé que, bien que les patchs fussent bien appliqués en majorité, ils ne fonctionnaient pas comme attendu. J’ai du coup passé 4 heures à rétroporter proprement les correctifs et à effectuer les tests correspondants (afin de m’assurer que les patchs fonctionnaient enfin correctement).

Je souhaite expliciter ici un peu plus avant deux cas auxquels j’ai été confronté dans mon tri des vulnérabilités CVE, et qui ont chacun nécessité pas mal de temps d’investigation. Si la description a posteriori que je vais en faire semble logique, simple et directe, il en a été tout autrement pour en venir à bout, ce qui a impliqué beaucoup d’itérations et de collectes de données que je ne mentionnerai pas ici.

Pour commencer, j’étais en train d’investiguer la vulnérabilité CVE-2012-6685 concernant libnokogiri-ruby, et la discussion du bogue upstream a révélé que libxml2 pouvait également être lié au problème. En utilisant les cas de tests soumis, j’ai confirmé que libxml2 était également affecté par un problème qui lui était propre… puis j’ai commencé à analyser l’historique CVE de libxml2 afin de trouver si un numéro CVE lui avait été affecté. Ce qui était le cas, la n°CVE-2014-0191 (bien que la description n’en souffle mot). Ceci étant, cette vulnérabilité était marquée comme corrigée dans toutes les versions. Comment donc ? Il s’est avéré que le correctif fourni par l’amont pour cette CVE était juste le complément d’un autre commit qui fut intégré beaucoup plus tôt (et qui fut utilisé comme base du commit, comme le montre les copier/coller des commentaires). Lorsque l’équipe de sécurité a intégré ce patch dans Wheezy/Squeeze, ils n’étaient probablement pas au courant que le correctif complet requérait également l’inclusion d’autre chose. En conséquence, j’ai réouvert la vulnérabilité CVE-2014-0191 sur notre suiveur (le commit correspondant).

Le second cas problématique fut pound. Thijs Kinkhorst a ajouté des données relatives à pound en relation avec de nombreux soucis SSL. Ce qui fit apparaître pound sur ma liste des nouveaux paquets vulnérables dans Squeeze, car la vulnérabilité CVE-2009-3555 était marquée comme corrigée dans la version 2.6-2, tandis que Squeeze ne dispose que de la version 2.5-1. Il n’y avait aucune référence à un bogue dans le suiveur de sécurité et l’historique des modifications Debian pour cette version ne mentionnait qu’un « patch anti_beast », qui est encore une autre vulnérabilité (CVE-2011-3389). Je devais creuser encore un peu plus profondément…et je découvris in fine que le patch précédent avait également à voir avec la CVE qui m’intéressait. Mais Brian May avait récemment remonté dans le bogue n°765649 que ce paquet était toujours vulnérable à cette faille ! J’ai essayé de comprendre où ce patch était déficient et j’ai remonté mes trouvailles dans le ticket. J’ai mis à jour les données du suiveur avec mes connaissances nouvellement acquises (commit 31751 et 31752).

Tryton

En ce qui me concerne, janvier est toujours le mois où j’essaye de clôturer les comptes de Freexian. Cette année ne fait pas exception à la règle, bien que ce soit la première fois où j’accomplis cette tâche avec Tryton. J’ai en premier lieu mis à niveau vers la version 3.4 afin de profiter de la dernière version de Tryton.

Malgré cela, j’ai découvert de multiples problèmes lors de la clôture…et comme je ne veux pas être confronté aux mêmes problèmes l’année prochaine, je les ai remontés et ai préparé des correctifs pour ceux concernant le plan comptable français :

  • n°4464: l’export CSV des vues hiérarchiques est inutilisable;
  • n°4466: ajout des propriétés de report manquantes des comptes;
  • n°4468: suppression de propriétés abusives de réconciliation sur certains comptes;
  • n°4469: conversion du compte 6354 en un vrai compte;
  • n°4479: la balance des comptes non reportables ne marche pas avec certains comptes parents.

Saltstack

J’ai mentionné cette idée le mois dernier : mettre en place et maintenir de nombreux chroots sbuild peut être fastidieux, et j’ai donc souhaité l’automatiser le plus possible. A cette fin, j’ai créé trois formules Salt et les ai fait ajouter au dépôt officiel Saltstack :

Chacune est construite par-dessus la précédente. debootstrap-formula crée des chroots avec debootstrap ou cdebootstrap. schroot-formula fait la même chose et enregistre ces chroots dans schroot. sbuild-formula fait la même chose que schroot-formula mais avec différents paramètres par défaut qui sont plus adaptés aux chroots sbuild (et bien entendu contrôle que sbuild est installé et que les chroots générés sont des chroots buildd).

Avec la formule sbuild je peux ajouter ceci aux données pilier :

sbuild:
  chroots:
    wheezy:
      architectures: [amd64, i386]
      extra_dists:
        - wheezy-backports
        - wheezy-security
      extra_aliases:
        - wheezy-backports
        - stable-security
        - wheezy-security
    jessie:
    [...]

Et ensuite un simple salt-call state.highstate (je fonctionne en mode standalone) permettra de contrôler que tous les chroots sont correctement paramétrés.

Empaquetage divers

J’ai empaqueté de nouvelles versions amont de Python dans experimental et ouvert une requête de pré-approbation afin d’avoir la dernière 1.7.x dans Jessie (n°775892). Il semble que cela soit un choix cornélien pour l’équipe en charge de la publication, ce qui est bien dommage : nous avons des développeurs Debian actifs, des développeurs amont actifs, et chacun est parfaitement au courant de la règle « pas de nouvelles fonctionnalités » afin d’éviter les régressions. Que risque-t-on ?

J’ai également créé une requête de déblocage pour Dolibarr (à la demande de l’équipe de sécurité qui souhaite voir le correctif CVE atteindre Jessie). J’ai contribué modestement à deux bogues qui étaient d’un intérêt particulier pour certains de mes donateurs (n°751339 et n°774811). Ils n’étaient pas sous ma responsabilité, mais j’ai essayé de les faire avancer en contactant les bonnes personnes.

J’ai préparé un patch de sécurité pour Django dans Wheezy (python-django_1.4.5-1+deb7u9) et l’ai envoyé à l’équipe chargée de la sécurité. En faisant cela j’ai découvert un petit problème dans leur patch rétroporté que j’ai remonté à l’amont dans le ticket Django n°24239.

Debian France

Avec la nouvelle année vient le temps d’organiser l’assemblée générale avec le renouvellement d’un tiers de son Bureau. Nous avons donc appelé les membres à candidater et j’ai été heureux de voir que nous avons 6 candidatures pour 3 sièges. C’est un signe positif, montrant que nous avons assez de personnes impliquées dans l’association. L’une d’entre elle évoque même une Debconf 17 en France… de grands projets !

De mon côté, j’ai annoncé que je ne concourrai pas pour le poste de président l’année prochaine. Ceci étant, je resterai au Bureau afin d’assurer une transition en douceur.

Merci

Rendez-vous au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Free Software Activities for January 2015; contribuée par Weierstrass01.

2 commentaires | Vous avez aimé ? Cliquez ici. | Ce blog utilise Flattr.

13 February, 2015 08:29AM par Raphaël Hertzog

04 February 2015

Charles Plessy

Nouvelles du paquet mime-support.

Le paquet mime-support est installé par défaut dans les systèmes Debian. Il a deux rôles: premièrement fournir le fichier /etc/mime.types qui associe des types de médias (anciennement appelés types MIME) à des suffixes de noms de fichiers, et deuxièmement mettre en place le système mailcap, qui associe des type de média à des programmes. J'ai adopté ce paquet à la fin du cycle de développement de Wheezy.

Changements depuis Wheezy.

La version distribuée dans Jessie apporte quelques additions dans /etc/mime.types. Parmi elles, application/vnd.debian.binary-package et text/vnd.debian.copyright, qui comme leurs noms l'indiquent décrivent des formats de fichiers conçus par Debian. J'ai enregistré ces types auprès de l'IANA, qui depuis la RFC 6838 est beaucoup plus ouverte à l'addition de nouveaux types.

Le changement le plus important consiste à extraire automatiquement les associations entre programmes et types de média qui sont déclarées dans les fichiers de menu au format FreeDesktop. Ces fichiers sont souvent fournis directement amont. Auparavant c'est le responsable du paquet Debian qui devait extraire l'information et la traduire à la main au format mailcap. L'automatisation se fait via des actions différées de dpkg.

Un grand merci à Kevin Ryde qui m'a apporté une aide précieuse pour les développement et corrections apportées au programme run-mailcap, et à tous les autres contributeurs. Votre aide est toujours bienvenue !

Mise à jour de sécurité.

En décembre, Debian a été contacté par Timothy D. Morgan, qui avait trouvé qu'un attaquant pouvait faire exécuter des commandes à run-mailcap en les insérant dans des noms de fichiers (CVE-2014-7209). Cette première mise à jour de sécurité pour moi s'est bien passée, un grand merci à Salvatore Bonaccorso de l'équipe sécurité pour son aide et ses instructions. Le problème est résolu dans Wheezy, Jessie et Sid, ainsi que dans Squeeze via son projet de suivi à long terme.

Une des conséquences de cette mise à jour est que run-mailcap va systématiquement utiliser le chemin absolu vers les fichiers à ouvrir. Pour les fichiers aux noms sans danger, c'est un peu laid. Cela sera peut-être amélioré après la sortie de Jessie.

Projets pour le futur

Le fichier /etc/mime.types est tenu à jour à la main; c'est lent et inefficace. Le paquet shared-mime-info contient des informations équivalentes, qui pourraient être utilisées pour autogénérer ce fichier, mais cela demanderait de traiter une source XML assez complexe. Pour le moment je pense importer le paquet mailcap de chez Fedora, dont le fichier /etc/mime.types est très bien tenu à jour. Je n'ai pas encore décidé comment faire, mais peut-être simplement en transférant ce fichier d'un paquet à l'autre. Dans ce cas, on se retrouverait avec un paquet mime-support qui en fait fournit le système mailcap, et un paquet dont le nom de la source chez Fedora est mailcap, mais dont le rôle dans Debian serait de fournir /etc/mime.types. Peut-être sera-t-il préférable d'utiliser des noms de paquets binaires plus clairs, comme mailcap-support pour le premier et media-types pour le second ?

La séparation des deux fonctions premières de mime-support aurait une autre conséquence intéressante: la possibilité de ne pas installer la prise en charge du système mailcap ou de la rendre optionnelle, et d'utiliser le système FreeDesktop (xdg-open), du paquet xdg-utils. Une idée à creuser...

04 February, 2015 01:00PM

23 January 2015

Debian France

Présentation du projet Debian aux Expériences Numériques

Expériences Numériques

Les EPN de la Maison pour Tous Salle des Rancy en collaboration avec l'Aadn, Aldil, Ubunteros de Lyon, Illyse organisent le 31 janvier 2015 : les Expériences Numeriques.

Ce rendez-vous est une journée de découverte, d’initiation et de rencontres autour des pratiques du numérique.

À cette occasion une conférence aura lieu à 16h pour présenter le projet Debian. Pendant cette journée une install party sera organisée où les personnes qui le désirent pourront installer notre distribution favorite.

Télécharger le programme.

Carte Openstreet Map. Voir aussi le plan d'accès officiel pour plus de détails.

logo Maison pour Tous Salle des Rancy

23 January, 2015 03:12PM

14 January 2015

Charles Plessy

nodejs-legacy

apt install nodejs-legacy, sinon npm install ne fonctionnera pas.

14 January, 2015 08:42AM

08 January 2015

Tanguy Ortolo

Objets connectés : attention aux services

Ces derniers temps, on parle beaucoup d'objets connectés, qui sont des accessoires divers — montre, cardiofréquencemètre, podomètre, vélo d'appartement, balance… — intégrant un ordinateur, connecté à votre réseau local ou à Internet afin de transmettre les informations qu'il collecte.

Attention donc à ne pas oublier une chose : si ces objets dépendent d'un service tiers, mis en place par le fabricant, ils ne dureront pas. Le jour où ce service prendra fin — car il prendra fin, ce n'est pas une hypothèse mais une certitude, à plus ou moins long terme — votre balance ou votre montre à plusieurs centaines d'euros ne fonctionnera plus, ou en tout cas pas comme ce qu'on vous a vendu.

08 January, 2015 12:02PM par Tanguy

25 December 2014

Florent Gallaire

La CNIL dans MISC, la fuite des données sur Internet

Un petit peu au dernier moment, je voudrais signaler un excellent article dans le n°76 de novembre-décembre de MISC, le magazine français de référence concernant la sécurité informatique.

« Analyse d’une inscription en ligne : comment vos données fuitent sur Internet » a été écrit par Stéphane Labarthe et Benjamin Vialle, le principal développeur de MarkUs, un logiciel libre d’annotation de code et de travaux.

Tous deux sont contrôleurs au sein de la  CNIL, la Commission nationale de l’informatique et des libertés, et les exemples qu’ils donnent s’inspirent donc de situations bien réelles auxquelles ils ont été confrontés au cours de leur travail.

L’article a l’avantage d’être très didactique, donnant les outils et les méthodes pour inspecter soi-même le parcours des données personnelles et des cookies que l’on est bien obligé de transmettre sur Internet, par exemple quand l’on veut commander des cadeaux (en passant Joyeux Noël à tous !).

Et si à cette occasion l’on détecte des fuites de données inappropriées, on peut saisir la CNIL qui s’est vu attribuer des prérogatives de contrôle en ligne par la loi Hamon du 17 mars 2014, dont l’article 105 a modifié l’article 44-III de la loi Informatique et libertés.

 

 

25 December, 2014 08:02PM par fgallaire

23 December 2014

Vincent Bernat

Eudyptula Challenge : démarrage rapide d'un noyau Linux

Le challenge Eudyptula est une série d’exercices de programmation pour le noyau Linux. Il commence avec le très basique module « Hello world » puis progresse en complexité jusqu’à faire pousser des modifications dans l’arbre du noyau Linux.

Une des premières tâches de ce challenge est de compiler puis démarrer son propre noyau. eudyptula-boot est un script autonome permettant de démarrer une image noyau jusqu’à obtenir un shell. Il est livré avec les fonctionnalités suivantes :

  • Il permet de booter quasiment n’importe quel noyau Linux, du noyau fourni par votre distribution favorite jusqu’au noyau personnalisé1 pour travailler sur une fonctionnalité quelconque.

  • Il utilise le système de fichiers de l’hôte comme racine pour le système invité. Aucune image disque n’est donc nécessaire. Ces dernières prennent beaucoup de place, doivent être maintenues à jour, se retrouvent encombrées au fil du temps et les outils dont vous avez besoin ne sont jamais installés. Pour éviter toute modification accidentelle, le système de fichiers est par défaut monté en lecture seule. S’ils sont disponibles, OverlayFS ou aufs sont utilisés pour ajouter une couche accessible en écriture. Il est de plus possible d’utiliser n’importe quel répertoire comme racine.

  • Le répertoire utilisateur est également accessible. Il est ainsi simple de partager des scripts et des programmes avec le système hôte.

  • Il démarre un système minimal avec le strict nécessaire2 pour démarrer un shell dans de bonnes conditions. Le système est opérationnel en moins de cinq secondes.

Dans la vidéo ci-dessous, eudyptula-boot est utilisé pour démarrer le noyau de l’hôte et exécuter quelques commandes :

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="270" src="http://www.youtube-nocookie.com/embed/aiE_Nd_vxQE?rel=0" width="480"></iframe>

Dans la vidéo suivante, nous démarrons un noyau personnalisé contenant un appel système supplémentaire. Il s’agit de la tâche n°15 du challenge Eudyptula. Un programme de test permet de vérifier le bon fonctionnement de l’appel système. Vers la fin, la vidéo contient également une rapide démonstration de gdb.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="270" src="http://www.youtube-nocookie.com/embed/AEEAmnQ6Q6E?rel=0" width="480"></iframe>

Bien que ce hack permette également de lancer des conteneurs3 avec une isolation accrue, les performances de 9p sont malheureusement peu convaincantes pour un tel usage.


  1. Il est toutefois nécessaire d’activer le support de 9p virtio. Il suffit pour cela d’utiliser make kvmconfig

  2. Seul udev est démarré. 

  3. Un point de départ pour une telle utilisation est de combiner les options --root, --force et --exec. Ajoutez également --readwrite pour conserver les modifications. 

23 December, 2014 12:46PM par Vincent Bernat

22 December 2014

Debian France

Dons Debian France

Dons Debian France

En cette fin d'année, nous tenons à rappeler que l'association Debian France est reconnue d'intérêt général. Ainsi, les donations à destination de l'association peuvent être déduites des impôts.

Une fois la donation réalisée, pour obtenir un reçu, il suffit d'envoyer un mail au trésorier - <tresorier@france.debian.net> en indiquant votre adresse.

Formulaire de donation

22 December, 2014 04:47PM

10 December 2014

Olivier Berger (perso)

Réparé les hauts-parleurs d'un portable HP dv6000 en échangeant deux nappes internes

Les hauts-parleurs internes du portable HP de mes parents, un dv6000, ne marchaient plus : plus de son sans devoir mettre des enceintes ou un casque :-(

En fait, il semble que ce soit un problème classique, qui semble causé par des nappes de connexion internes deffectueuses.

La réparation n'est pas trop compliquée, si on achète une nappe de remplacement, mais on peut aussi trouver un contournement.

J'ai réussi à échanger les deux nappes qui connectent la carte mère à la partie qui contient les boutons et les hauts-parleurs, au dessus du clavier, et même si maintenant, les boutons de cette rangée supérieure ne marchent plus, ce n'est pas trop grave, car le son est revenu.

Pour voir une vidéo (en anglais) qui explique comment faire, voir : Hp Pavilion Dv6000 power button and speaker fix!

Content d'avoir récupéré le son :-)

10 December, 2014 10:10PM par obergix

16 November 2014

Vincent Bernat

Préparer des règles Netfilter dans un espace de nommage réseau

Souvent, les règles d’un pare-feu sont mises en place à l’aide d’un script faisant appel aux commandes iptables et ip6tables. Cela permet notamment d’utiliser des variables et des boucles. Il y a cependant trois inconvénients majeurs à cette méthode :

  1. Pendant toute la durée du script, le pare-feu est temporairement incomplet : les nouvelles connexions peuvent ne pas être autorisées à s’établir ou, inversement, le pare-feu peut autoriser des flux qui ne devraient pas l’être. Les règles de NAT nécessaires au bon fonctionnement du routeur peuvent également être absentes.

  2. Si une erreur survient, le pare-feu reste dans un état intermédiaire. Il est alors nécessaire de s’assurer que les règles autorisant l’accès à distance soient placées très tôt pour garder la main. Un système de retour automatique à la précédente version est également nécessaire pour corriger la situation rapidement.

  3. Construire de nombreuses règles peut être très lent. Chaque appel à ip{,6}tables va rapatrier l’ensemble des règles du noyau, ajouter la règle voulue et renvoyer le tout au noyau.

Avec iptables-restore

Une façon classique de résoudre ces trois aspects et de construire un fichier de règles qui sera lu par iptables-restore et ip6tables-restore1. Ces outils envoient en une seule passe les règles au noyau qui les applique de manière atomique. Habituellement, un tel fichier est construit par ip{,6}tables-save mais un script peut également faire l’affaire.

La syntaxe comprise par ip{,6}tables-restore est similaire à celle de ip{,6}tables. Cependant, chaque table dispose de son propre bloc et les chaînes doivent être déclarées différemment. Voyons un exemple :

$ iptables -P FORWARD DROP
$ iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
$ iptables -N SSH
$ iptables -A SSH -p tcp --dport ssh -j ACCEPT
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A OUTPUT -o lo -j ACCEPT
$ iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -A FORWARD -j SSH
$ iptables-save
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:SSH - [0:0]
-A INPUT -i lo -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j SSH
-A OUTPUT -o lo -j ACCEPT
-A SSH -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT

La table nat et la table filter disposent chacune de leur bloc. La chaîne SSH est déclarée en haut du bloc de la table filter avec les autres chaînes par défaut.

Voici un script qui détourne les commandes ip{,6}tables afin de construire un tel fichier (en s’appuyant massivement sur Zsh2) :

#!/bin/zsh
set -e

work=$(mktemp -d)
trap "rm -rf $work" EXIT

# ➊ Redefine ip{,6}tables
iptables() {
    # Intercept -t
    local table="filter"
    [[ -n ${@[(r)-t]} ]] && {
        # Which table?
        local index=${(k)@[(r)-t]}
        table=${@[(( index + 1 ))]}
        argv=( $argv[1,(( $index - 1 ))] $argv[(( $index + 2 )),$#] )
    }
    [[ -n ${@[(r)-N]} ]] && {
        # New user chain
        local index=${(k)@[(r)-N]}
        local chain=${@[(( index + 1 ))]}
        print ":${chain} -" >> ${work}/${0}-${table}-userchains
        return
    }
    [[ -n ${@[(r)-P]} ]] && {
        # Policy for a builtin chain
        local index=${(k)@[(r)-P]}
        local chain=${@[(( index + 1 ))]}
        local policy=${@[(( index + 2 ))]}
        print ":${chain} ${policy}" >> ${work}/${0}-${table}-policy
        return
    }
    # iptables-restore only handle double quotes
    echo ${${(q-)@}//\'/\"} >> ${work}/${0}-${table}-rules #'
}
functions[ip6tables]=${functions[iptables]}

# ➋ Build the final ruleset that can be parsed by ip{,6}tables-restore
save() {
    for table (${work}/${1}-*-rules(:t:s/-rules//)) {
        print "*${${table}#${1}-}"
        [ ! -f ${work}/${table}-policy ] || cat ${work}/${table}-policy
        [ ! -f ${work}/${table}-userchains || cat ${work}/${table}-userchains
        cat ${work}/${table}-rules
        print "COMMIT"
    }
}

# ➌ Execute rule files
for rule in $(run-parts --list --regex '^[.a-zA-Z0-9_-]+$' ${0%/*}/rules); do
    . $rule
done

# ➍ Execute rule files
ret=0
save iptables  | iptables-restore  || ret=$?
save ip6tables | ip6tables-restore || ret=$?
exit $ret

En ➊, une nouvelle fonction iptables() est définie et masque la commande du même nom. Elle tente de localiser le paramètre -t pour savoir quelle table est concernée par la règle. Si le paramètre est présent, la table est mémorisée dans la variable $iptables et le paramètre est retiré de la liste des arguments. La défintion d’une nouvelle chaîne avec -N ou la mise en place d’une politique par défaut avec -P sont également gérés.

En ➋, la fonction save() va émettre les règles qui seront lues par ip{,6}tables-restore. En ➌, les règles de l’utilisateur sont exécutées. Chaque commande ip{,6}tables appelle en réalité la fonction précédemment définie. Si aucune erreur n’est survenue, en ➍, les commandes ip{,6}tables-restore sont invoquées.

Cette méthode est parfaitement fonctionnelle3. Toutefois, la méthode suivante est bien plus élégante.

Avec un espace de nommage

Une approche hybride est de construire les règles avec ip{,6}tables dans un espace de nommage réseau (network namespace) puis de les sauver avec ip{,6}tables-save et enfin de les appliquer dans l’espace de nommage principal avec ip{,6}tables-restore.

#!/bin/zsh
set -e

alias main='/bin/true ||'
[ -n $iptables ] || {
    # ➊ Execute ourself in a dedicated network namespace
    iptables=1 unshare --net -- \
        $0 4> >(iptables-restore) 6> >(ip6tables-restore)
    # ➋ In main namespace, disable iptables/ip6tables commands
    alias iptables=/bin/true
    alias ip6tables=/bin/true
    alias main='/bin/false ||'
}

# ➌ In both namespaces, execute rule files
for rule in $(run-parts --list --regex '^[.a-zA-Z0-9_-]+$' ${0%/*}/rules); do
    . $rule
done

# ➍ In test namespace, save the rules
[ -z $iptables ] || {
    iptables-save >&4
    ip6tables-save >&6
}

En ➊, le script est réexécuté dans un nouvel espace de nommage réseau. Celui-ci dispose de ces propres règles de pare-feu qui peuvent être modifiées sans altérer celles de l’espace de nommage principal. La variable $ipatbles est utilisée pour déterminer quel est l’espace de nommage courant. Dans le nouvel espace de nommage, les fichiers de règles sont exécutés (➌). Ceux-ci contiennent l’appel aux commandes ip{,6}tables. Si une erreur survient, nous n’allons pas plus loin grâce à l’utilisation de set -e. Sinon, en ➍, les règles sont sauvegardées avec ip{,6}tables-save et envoyées dans l’espace de nommage principal en utilisant les descripteurs de fichier dédiés à cet effet.

L’exécution dans l’espace de nommage principal continue en ➊. Les résultats de ip{,6}tables-save sont envoyées à ip{,6}tables-restore. À ce point, le pare-feu est presque fonctionnel. Les fichiers de règles sont toutefois rejoués (➌) mais les commandes ip{,6}tables sont neutralisées (➋) de façon à ce que les éventuelles autres commandes, comme par exemple l’activation du routage IP, soient exécutées.

Le nouvel espace de nommage ne dispose pas du même environnement que l’espace de nommage principal. Notamment, il ne contient pas d’interfaces réseau. Il n’est donc pas possible de consulter ou de configurer des adresses IP. Lorsque des commandes ne peuvent être exécutées que dans l’espace de nommage principal, il est nécessaire de les préfixer par main :

main ip addr add 192.168.15.1/24 dev lan-guest

Jetez un coup d’œil à un exemple complet sur GitHub.


  1. iptables-apply est un autre outil pratique. Il applique un fichier de règles et revient automatiquement en arrière si l’utilisateur ne confirme pas le changement dans un laps de temps donné. 

  2. Zsh contient des primitives assez puissantes pour manipuler les tableaux. De plus, il ne nécessite pas d’utiliser les guillemets autour de chaque variable pour éviter leur découpage lorsqu’elles contiennent des espaces. Cela rend le script bien plus robuste. 

  3. S’il fallait pinailler, il y a trois petits problèmes. Primo, lorsqu’une erreur survient, il peut être difficile de savoir quelle partie du script l’a provoquée car on ne dispose que de la ligne dans le fichier de règles qui a été généré. Deuzio, une table peut être utilisée avant d’être définie ce qui peut faire passer inaperçu certaines erreurs dues à un copier/coller. Tertio, l’application de la partie IPv4 peut réussir alors que la partie IPv6 a échoué ou vice-versa. Ces problèmes n’existent pas avec la deuxième méthode. 

16 November, 2014 04:28PM par Vincent Bernat

12 September 2014

Stéphane Blondon

Key Signing Assistant (concept)

Dans les allées de la DebConf14, j’ai discuté avec Franklin de l’intérêt pour un développeur d’utiliser son téléphone portable lors d’une key signing party.

Les schémas sont un brouillon d’une utilisation possible du téléphone. L’objectif n’est pas de remplacer la rencontre réelle ou la validation mais juste d’aider à l’échange et validation des clefs.

Actuellement, ce n’est qu’un concept ; rien n’est implémenté.

Le principe général est d’utiliser le téléphone comme un terminal pour l’échange et la validation. Les données partent et reviennent sur la station de travail du développeur par l’intermédiaire d’un serveur web.

  • Le téléphone portable considéré doit être un smartphone ;
  • La seule autorisation à donner pour le téléphone est l’accès à internet ;
  • On considère que les échanges réseau sont fait en https. Je ne pense pas que ce soit indispensable mais il n’y a aucune raison de s’en priver.

Avant la key signing party

Le développeur dispose d’un téléphone sur lequel l’application est installée.
Le processus pour installer ses propres informations est le suivant :

Avant la key signing party

Pendant la key signing party

Le processus est à reproduire pour chaque participant.

Pendant la key signing party

Après la key signing party

Une fois rentré chez lui, le développeur récupère l’ensemble de ses validations sur sa machine de travail :

Après la key signing party

Qu’en pensez-vous ?

Source des schémas

Schémas réalisés avec Inkscape, à partir d’icônes Tango et Gnome-Tango.
Les fichiers svg et png sont disponibles dans le répertoire http://stephane.yaal.fr/ksa/.


12 September, 2014 07:18AM par ascendances

10 September 2014

Olivier Berger (pro)

Le MOOC Bases de données relationnelles est lancé

Nous venons de lancer la première édition du MOOC sur les bases de données relationnelles de Télécom SudParis. Au programme, de la théorie (algèbre relationnelle), de la pratique (dans SQLite dans les navigateurs basés sur WebKit, et plus tard dans PostgreSQL dans une box Vagrant basée sur Debian (voir post précédent)), des contenus et logiciels libres (autant que possible) et pas mal de rush pour finaliser tout ça dans le Moodle.

On débute avec plus de 800 inscrits à la fin du premier jour (y compris les 180 étudiants ingénieurs de 2ème année de Télécom SudParis, qui suivront le cours présentiel en parallèle du MOOC, et collaboreront avec les apprenants externes pour les travaux personnels).

Il est toujours possible de s’inscrire : le gros du travail commence en semaine 2 (qui commence lundi 15/09 à 00h00 heure de Paris).

10 September, 2014 07:53PM par Olivier Berger

20 August 2014

Aurélien Jarno

MIPS Creator CI20

I have received two MIPS Creator CI20 boards, thanks to Imagination Technologies. It’s a small MIPS32 development board:

mips-ci20

As you can see it comes in a nice packaging with a world-compatible power adapter. It uses a Ingenic JZ4780 SoC with a dual core MIPS32 CPU running at 1.2GHz with a PowerVR SGX540 GPU. The board is fitted with 1GB of RAM, 8GB of NOR flash, HDMI output, USB 2.0 ports, Ethernet + Wi-Fi + BlueTooth, SD card slot, IR receiver, expansion headers and more. The schematics are available. The Linux kernel and the U-Boot bootloader sources are also available.

Powering this board with a USB keyboard, a USB mouse and a HDMI display, it boots off the internal flash on a Debian Wheezy up to the XFCE environment. Besides the kernel, the Wi-Fi + Bluetooth firmware, and very few configuration changes, it runs a vanilla Debian. Unfortunately I haven’t found time to play more with it yet, but it looks already quite promising.

The board has not been formally announced yet, so I do not know when it will become available, nor the price, but if you are interested I’ll bring it to DebConf14. Don’t hesitate to ask me if you want to look at it or play with it.

20 August, 2014 08:52PM par aurel32

Olivier Berger (pro)

Building a lab VM based on Debian for a MOOC, using Vagrant + VirtualBox

We’ve been busy setting up a Virtual Machine (VM) image to be used by participants of a MOOC that’s opening in early september on Relational Databases at Telecom SudParis.

We’ve chosen to use Vagrant and VirtualBox which are used to build, distribute and run the box, providing scriptability (reproducibility) and making it portable on most operating systems.

The VM itself contains a Debian (jessie) minimal system which runs (in the background) PostgreSQL, Apache + mod_php, phpPgAdmin, and a few applications of our own to play with example databases already populated in PostgreSQL.

As the MOOC’s language will be french, we expect the box to be used mostly on machines with azerty keyboards. This and other context elements led us to add some customizations (locale, APT mirror) in provisioning scripts run during the box creation.

At the moment, we generate 2 variants of the box, one for 32 bits kernel (i686) and one for 64 bits kernel (amd64) which (once compressed) represent betw. 300 and 350 Mb.

The resulting boxes are uploaded to a self-hosting site, and distributed through vagrantcloud. Once the VM are created in VirtualBox, the typical VMDK drives file is around 1.3Gb.

We use our own Debian base boxes containing a minimal Debian jessie/testing, instead of relying on someone else’s, and recreate them using (the development branch version of) bootsrap-vz. This ensure we can put more trust in the content as it’s a native Debian package installation without MITM intervention.

The VM are meant to be run headless for the moment, keeping their size to the minimum, even though we also provide a script to install and configure a desktop environment based on XFCE4.

The applications are either used through vagrant ssh, for instance for SQL command-line in psql, or in the Web browser, for our own Web based SQL exerciser, or phpPgAdmin (see a demo screencast (in french, w/ english subtitles)), which can then be used even off-line by the participants, which also means this requires no servers availability for our IT staff.
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="http://www.youtube.com/embed/sXZ3KGK5TCU?rel=0" width="420"></iframe>

The MOOC includes a section on PHP + SQL programming, whose exercises can be performed using a shared sub-folder of /vagrant/ which allows editing on the host with the favourite native editor/IDE, while running PHP inside the VM’s Apache + mod_php.

The sources of our environment are available as free software, if you’re interested to replicate a similar environment for another project.

As we’re still polishing the environment before the MOOC opening (on september 10th), I’m not mentioning the box URLs but they shouldn’t be too hard to find if you’re investigating (refering to the fusionforge project’s web site).

We don’t know yet how suitable this environment will be for learning SQL and database design and programming, and if Vagrant will bring more difficulties than benefits. Still we hope that the participants will find this practical, allowing them to work on the lab / exercises whenever and wherever they chose, removing the pain of installing and configuring a RDBMS on their machines, or the need to be connected to a cloud or to our overloaded servers. Of course, one limitation will be the requirements on the host machines, that will need to be reasonably modern, in order to run a virtualized Linux system. Another is access to high bandwidth for downloading the boxes, but this is kind of a requirement already for downloading/watching the videos of the MOOC classes ;-)

Big thanks go to our intern Stéphane Germain, who joined us this summer to work on this virtualized environment.

20 August, 2014 01:59PM par Olivier Berger

15 August 2014

Aurélien Jarno

Intel about to disable TSX instructions?

Last time I changed my desktop computer I bought a CPU from the Intel Haswell family, the one available on the market at that time. I carefully selected the CPU to make sure it supports as many instructions extensions as possible in this family (Intel likes segmentation, even high-end CPUs like the Core i7-4770k do not support all possible instructions). I ended-up choosing the Core i7-4771 as it supports the “Transactional Synchronization Extensions” (Intel TSX) instructions, which provide transactional memory support. Support for it has been recently added in the GNU libc, and has been activated in Debian. By choosing this CPU, I wanted to be sure that I can debug this support in case of bug report, like for example in bug#751147.

Recently some computing websites started to mention that the TSX instructions have bugs on Xeon E3 v3 family (and likely on Core i7-4771 as they share the same silicon and stepping), quoting this Intel document. Indeed one can read on page 49:

HSW136. Software Using Intel TSX May Result in Unpredictable System Behavior

Problem: Under a complex set of internal timing conditions and system events, software using the Intel TSX (Transactional Synchronization Extensions) instructions may result in unpredictable system behavior.
Implication: This erratum may result in unpredictable system behavior.
Workaround: It is possible for the BIOS to contain a workaround for this erratum.

And later on page 51:

Due to Erratum HSw136, TSX instructions are disabled and are only supported for software development. See your Intel representative for details.

The same websites tell that Intel is going to disable the TSX instructions via a microcode update. I hope it won’t be the case and that they are going to be able to find a microcode fix. Otherwise it would mean I will have to upgrade my desktop computer earlier than expected. It’s a bit expensive to upgrade it every year and that’s a the reason why I skipped the Ivy Bridge generation which didn’t bring a lot from the instructions point of view. Alternatively I can also skip microcode and BIOS updates, in the hope I won’t need another fix from them at some point.

15 August, 2014 04:02PM par aurel32

15 July 2014

Stéphane Blondon

DebConf sur la planète

Cette année, la conférence Debian annuelle aura lieu à Portland, aux États-Unis. Comme l’année dernière, j’y participerai. :)

Participation à la conférence Debian

Cette conférence sera la quinzième du nom. Voici une carte des différentes DebConf (passées en rouge, la prochaine en blanc et celle de l’année prochaine en jaune).

debconf14_planet

Jusqu’ici les conférences ont eu lieu alternativement en Europe et en Amérique (du Nord, centrale ou du Sud). Ce sera aussi le cas en 2015 puisque la conférence aura lieu en Allemagne à Heidelberg.

Réalisation de la carte

La carte diffère légèrement de celle réalisée l’année dernière (pour DebConf13) grâce quelques changements de configuration d’xplanet.

Commande utilisée

xplanet -transpng debconf14_planet.png -geometry 1024x512 -projection peters -config debconf14_planet.conf -num_times 1

Deux paramètres ont été modifiés :

  • La carte utilise une projection de Peters plutôt qu’une projection de Mercator. Pour cela, il suffit de remplacer -projection mercator par -projection peters.
  • Avec cette projection, la taille de la Terre n’est pas la même et la zone vide est rempli par défaut par un ciel étoilé. Il est aussi possible de choisir une couleur unie ou sa propre image de fond. Remplacer le paramètre -output par -transpng pour définir le fichier de sortie permet d’avoir un fond transparent.

Fichier debconf14_planet.conf

[earth]
shade=100
marker_file=coords.txt
marker_fontsize=15
map=night.jpg

L’ajout de map permet de définir l’image à utiliser à la place de l’image par défaut. Ici, on obtient une image de la Terre de nuit (qui provient de /usr/share/xplanet/images/night.jpg).

Fichier coords.txt

+44.80 +0.58 "0&1" #Bordeaux, France
+43.65 -79.38 "2" #Toronto, Canada
+59.92 +10.75 "3" #Oslo, Norway
-29.99 -51.22 "4" #Porto Alegre, Brazil
+60.22 +24.66 "5" #Espoo, Finland
+18.91 -98.97 "6" #Oaxtepec, Mexico
+55.96 -3.19 "7" #Edinburgh, Scotland
-37.96 -57.59 "8" #Mar del Plata, Argentina
+39.60 -6.08 "9" #Extremadura, Spain
+40.74 -74.00 "10" #New York City, USA
+44.78 +17.21 "11" #Banja Luka, Republika Srpska, Bosnia and Herzegovina
+12.14 -86.25 "12" #Managua, Nicaragua
+46.87 +6.75 "13" #Le Camp, Vaumarcus, Switzerland
+45.53 -122.67 "14" color=white #Portland, Oregon, USA
+49.24 +8.42 "15" color=yellow #Heidelberg, Germany

Le fichier a simplement été mis à jour (ajout d’Heidelberg, décalage des couleurs).

À bientôt !


15 July, 2014 08:56PM par ascendances

11 April 2014

Roland Mas

37

C'est l'heure d'un marronnier de ce blog : la petite chronique numérologique du 11 avril. Celle-ci sera consacrée au nombre 37.

Nombre premier, premier irrégulier, premier cubain, cousin avec 41, hexagonal centré et étoilé, c'est aussi le numéro atomique du rubidium et ça nous fait une belle jambe.

Et c'est un nombre qui colle particulièrement bien à la journée d'aujourd'hui (qui, si jamais les générations futures s'y intéressent, s'annonce pour être belle et douce, avec peut-être un petit voile nuageux).

11 April, 2014 08:06AM

15 November 2013

Roland Mas

10 ans !

Eh ben dites-donc mes aïeux, le temps passe. Le 15 novembre 2003, j'émettais ma première facture en tant que consultant indépendant.

Eh ben dix ans plus tard, y'a eu des hauts et des bas, mais globalement tout va bien, et je continue à faire des factures de temps en temps, et ça me plaît toujours autant.

Touchons du bois pour que ça continue, et on en reparle dans dix ans !

15 November, 2013 02:45PM

26 August 2013

Olivier Berger (perso)

Synchroniser la musique entre ordinateur (Gnu/Linux) et NAS de la Freebox Revolution

J'utilise git-annex pour synchroniser le partage sur le NAS de la FreeBox Revolution, de mes fichiers de musique numérisée (MP3, Ogg), de façon à pouvoir gérer la musique sur mon ordinateur, tout en permettant de la jouer sur la télévision du salon, via l'interface de la freebox. La même procédure doit marcher pour d'autres NAS/set top boxes.

Données du problème :

  • mettre à jour les fichiers depuis le PC (ligne de commande, interfaces graphiques, numérisation de nouveaux CDs, etc.)
  • avoir un backup sur un disque de sauvegarde (sur une machine différente de cd PC, en cas de fausse manip, ou du NAS, au cas où la freebox plante).
  • avoir les fichiers en clair dans l'arborescence du NAS, sous son répertoire prédéfini par la freebox
  • automatiser la synchronisation et les backups, autant que faire se peut

La procédure est la suivante :

  1. monter sur mon ordi, via CIFS, le disque de la freebox, qu'elle exporte via samba : c'est donc un montage ne supportant pas les liens symboliques : git-annex supporte heuresement le mode "direct" pour les remotes. Ce n'est donc pas une remote réseau, mais une remote locale, dans un répertoire de l'ordi. Appelons-le /mnt/freebox-server dans ce qui suit.
  2. initialiser un dossier de bibliothèque musicale comme étant un repo git-annex :

$ cd ~/Musique
$ git init
$ git annex init "mon ordi"

# ajout des fichiers musicaux

$ git annex add . $ git commit -m "initial"

$ cd /mnt/freebox-server/Musiques # on clone dans un sous-répertoire pour permettre de gérer des fichiers en dehors ce schéma sur la freebox $ git clone ~/Musique all $ cd all $ git annex init "freebox server"

$ cd ~/Musique $ git remote add freebox-server /mnt/freebox-server/Musiques/all # copie des fichiers : long $ git annex copy --to freebox-server $ git annex sync
$ cd /mnt/freebox-server/Musiques/all #$ git remote add laptop $ git annex sync

Normalement, à l'issue de tout cela, le contenu sur la freebox est synchronisé.

Ensuite, il ne reste qu'à ajouter une remote spéciale rsync pour les backups vers une autre machine, mais ça je vous laisse jouer avec git-annex pour voir comment faire ;)

26 August, 2013 09:12AM par obergix

01 August 2012

Grégory Colpart

Astuces pour gérer un répertoire ext3 bien rempli

Disclaimer : Valable pour de l’ext3 sous Linux (utilisable sur d’autres filesystems ou Unix à vos disques et péril)

Vous avez un répertoire rempli à rabord de nombreux fichiers, et il est impossible de connaître sa taille, le lister ou l’effacer sans impact sur la production ?

Voici quelques astuces :

- Avec un “ls -ld” sur le répertoire, vous pouvez estimer grossièrement le nombre de fichiers présents dans un répertoire. En effet, un répertoire vide fait 4 Ko (je simplifie). Et plus il contient de fichiers, plus sa taille va augmenter. Par exemple, un répertoire contenant 2 millions de fichiers pourra faire une taille de 100 Mo (je parle bien de la taille du répertoire et non pas de la taille du contenu). Attention, c’est variable selon la longueur des noms des fichiers. Et prendre garde aussi que ce n’est pas dynamique : si vous videz complètement un répertoire bien rempli, il gardera sa taille volumineuse (d’où l’intérêt de recréer un répertoire qui s’est rempli “par erreur”).

- Pour lister les fichiers du répertoire, utiliser la commande “ls” n’est pas une bonne idée car elle accède à toute la liste avant de l’afficher. Voici comment lister 10 fichiers sans attendre :

perl -le 'opendir DIR, "." or die; $i=0; while ($i<10) { my $f = readdir DIR; print $f; $i++; }; closedir DIR'

Grâce à leurs noms, vous pouvez désormais examiner (ouvrir, connaître sa taille) un échantillon de fichiers contenus dans votre fameux répertoire.

Pour lister l’ensemble des fichiers sans attendre comme “ls” :

perl -le 'opendir DIR, "." or die; print while $_ = readdir DIR; closedir DIR'

- Pour effacer le contenu du répertoire en limitant l’impact sur la production, oubliez “rm -rf” qui va saturer vos I/O disque mais préférez le faire par blocs de N fichiers avec des pauses de quelques secondes ! Voici une commande “conviviale” qui va faire cela par blocs de 300 fichiers avec des pauses de 5 secondes :

perl -le 'use POSIX qw/strftime/; opendir DIR, "." or die; $i=0; printf "DELETING IN PROGRESS...";
 while (my $f = readdir DIR) {unlink $f;  $i++;
 if ($i % 300 == 0) {printf "...$i files deleted\n".strftime("%Y-%m-%d %H:%M:%S",localtime)." : PAUSE...";
 $| = 1; sleep 5 ; printf "...DONE. "; printf "DELETING IN PROGRESS..."}}; printf "...DONE"; closedir DIR'

EDIT : en complément, on n’oubliera pas que l’on peut aussi gérer la priorité d’ordonnancement des I/O avec la commande ionice
(merci à Sylvain B. de l’avoir souligné)

01 August, 2012 02:24AM par Gregory Colpart

05 October 2010

Vincent Carmona

Adapter une bibliothèque C pour ruby (4)

Ce quatrième billet présente comment obtenir une documentation grâce à rdoc : il suffit de commenter les fichiers sources.

Documentation

Commenter

Pour documenter les méthodes de la classe TagLib::File, il suffit de commenter les différentes fonctions les implémentant.

La méthode title permet d'obtenir le titre d'une piste. On l'indique en commentaire juste avant la fonction file_get_title.
 
/*Get track title*/ 
VALUE 
file_get_title(VALUE self) 

Par défaut, les paramètres d'une méthode sont nommés p1, p2, .... Pour la méthode title=, on utilise l'instruction call-seq: pour afficher le texte title=title (au lieu de title=(p1)).
 
/* 
call-seq: title=title 
 
Set track title to title 
 
title: a string 
*/ 
VALUE 
file_set_title(VALUE self, VALUE title) 

La méthode initialize ne devrait jamais être appelée directement depuis un code ruby. On utilise l'instruction :nodoc: pour indiquer que la méthode ne doit pas apparaitre dans la documentation.
 
/*:nodoc:*/ 
VALUE 
file_init(VALUE self, VALUE path) 

J'indique que je ne désire pas commenter le module TagLib en plaçant un commentaire vide afin d'éviter que rdoc utilise un commentaire non-désiré.
 
/* */ 
  mTagLib=rb_define_module("TagLib"); 

Dans le fichier lib/raglib2.rb, j'ajoute la directive :main: afin que la page initiale de la documentation pointe sur la classe TagLib::File.
 
#:main: TagLib::File 
module TagLib 

Bizarrement, cette directive ne semble pas fonctionner si elle est placée dans le fichier taglib2.c.

Produire la documentation

 
rdoc --exclude extconf.rb 

Le fichier doc/index.html est créé.
aperçu de la documentation

Conclusion

Rendez-vous pour le dernier billet où j'introduirai quelques concepts que je n'ai pas utilisé dans le module TagLib.

Billet original publié sur les blogs de developpez.com...

05 October, 2010 10:43PM par vinc-mai

04 October 2010

Vincent Carmona

Adapter une bibliothèque C pour ruby (3)

Cet article fait suite au premier et deuxième billets dans lesquels nous avons vu comment créer un objet de la classe TagLib::File. Cet objet utilise les fonctions de la bibliothèque taglib, écrite en C, afin d'accéder aux tags de fichiers audio. Dans ce billet, nous verrons comment obtenir les valeurs des tags et comment modifier un tag.

» Lire la suite!

Billet original publié sur les blogs de developpez.com...

04 October, 2010 02:47PM par vinc-mai

18 August 2010

Grégory Colpart

Mon compte-rendu de DebConf 10 à New York

DebConf est la conférence annuelle des développeurs du projet Debian. Cela permet aux développeurs et contributeurs de Debian d’assister à des présentations techniques, sociales et politiques, mais aussi de se rencontrer et travailler ensemble. Cette année, la 11e DebConf s’est tenue à New York du 1er au 7 août. Evolix a sponsorisé cette conférence et j’étais donc sur place, voici mon résumé de cette semaine.

Premiers pas plutôt festifs le vendredi soir avec le SysAdmin Day dans un bar à Manhattan puis direction Brooklyn pour une Debian Party organisée par NYC Resistor, un collectif local de hackers en électronique à l’origine de MakerBot, une imprimante 3D Open Source. Samedi c’est l’arrivée à Columbia University, l’université américaine qui accueille la DebConf 10. Une bonne partie des participants est hébergée sur le campus universitaire, dans des chambres avec accès haut-débit et une cafétéria à volonté.

C’est donc le dimanche 1er août que commence la DebConf avec des présentations orientées grand public pour cette première journée appelée le “Debian Day”. Un grand message de bienvenue pour un public plus large en ce premier jour, puis enchaînement des présentations. J’ai tout d’abord assisté à une présentation sur le sysadmin par François Marier qui a livré toutes ses astuces et une série de packages intéressants (unattended-upgrades, safe-rm, etckeeper, fcheck, fwknop, etc.). J’ai d’ailleurs pu échanger par la suite avec lui d’autres informations, sachant qu’il travaille dans une boîte similaire à Evolix : Catalyst située en Nouvelle-Zélande ! J’ai ensuite assisté à la présentation de Stefano Zacchiroli, l’actuel leader Debian, qui encourage fortement les développeurs à réaliser des NMU (Non Maintainer Upload), c’est-à-dire la publication d’un package par un autre développeur que celui responsable officiellement. J’ai ensuite poursuivi avec la présentation du Google Summer of Code 2010 de Debian : une présentation générale puis plusieurs “étudiants” expliquent leur projet en cours : Debian-Installer pour OpenMoko, GUI pour aptitude en QT, etc. D’autres présentations ont ensuite suivies, mais j’ai plutôt été découvrir le “hacklab” : une pièce pourvue de multiprises, switches et points d’accès afin de permettre à plusieurs dizaines de personnes de travailler/hacker. Le “Debian Day” a été un franc succès avec plusieurs centaines de participants. En soirée, c’est l’heure du coup d’envoi “officiel” de la DebConf par Gabriella Coleman, l’une des organisatrices de la DebConf 10, qui présente avec humour la semaine à venir, avec un petit retour en images sur les éditions précédentes.

Deuxième jour, on a le droit à un Bits from DPL en direct de la part de Stefano Zacchiroli (au lieu du traditionnel mail). Ensuite, il y a de nombreuses présentations. Durant DebConf, il y en aura plus de 100 au total, réparties dans 3 salles : Davis (avec vidéo), 414 Schapiro et Interschool (avec vidéo). Le choix est parfois difficile ! Pour ma part, j’ai assisté en fin de matinée à la présentation de la structure américaine à but non lucractif SPI : c’est elle qui gère les droits de la marque Debian, mais pas seulement : OpenOffice.org, Drupal, PostgreSQL, Alfresco, etc. de nombreux projets de logiciels libres utilisent cette structure légale ! Dans l’après-midi, c’est Mark Shuttleworth, fondateur d’Ubuntu et CEO de Canonical, qui nous présente le travail réalisé pour améliorer l’interface graphique des netbooks, notamment par l’intermédiaire du projet Ayatana. Puis, Jorge Castro, responsable chez Canonical des relations avec les développeurs extérieurs, parle de la collaboration entre Ubuntu et Debian. On notera que toute une équipe de Canonical est venue à DebConf et que les relations avec Debian semblent devenir plus sereines. Le soir venu, c’est l’heure de Wine&Cheese, un évènement devenu incontournable pour une DebConf : imaginez des centaines de fromages et alcools venus du monde entier (Italie, Allemagne, France, Mexique, Brésil, USA, Taïwan, Pologne, Kazhastan, Espagne, Nouvelle-Zélande, Corse, Vénézuela, Hollande, Marseille, Irlande, Angleterre, Japon, etc. etc.) et plus d’une centaine de développeurs Debian lâchés dessus pendant des heures… le résultat est… indescriptible ! Pour ma part, j’avais apporté un rosé Bandol, des bières La Cagole, du Banon et de la Tapenade… qui n’ont pas fait long feu.

Troisième jour et l’on débute par un talk d’Eben Moglen, avocat de la FSF, qui rappelle les dangers du Cloud Computing comme la gestion des données privées. Sa réponse : “Chacun devrait avoir un serveur chez soi” et il évoque la FreedomBox, une boi-boîte que tout le monde aurait chez soi pour faire office de petit serveur avec les fonctionnalités classiques (web, messagerie, VoIP). Cette idée rencontre un certain enthousiasme et plusieurs réfléchissent déjà à la réalisation de cette idée ! J’ai ensuite suivi une succession de présentations sur le thème de l’entreprise. On a parlé du déploiement de machines avec le logiciel Puppet, de l’installation automatisée de Debian avec FAI et Gosa, notamment présentée par Mickaël Bank, un développeur allemand très actif dans Debian. On a également des témoignages très intéressants : Russ Allbery, administrateur système et réseau à l’université de Standford en Californie, explique quels sont les arguments en faveur de Debian en entreprise et en profite pour présenter la gestion de Debian à Standford ; Faidon Liambotis, sysadmin chez GRNET (un opérateur public grec), présente leur utilisation de Debian mais aussi leurs choix en terme de déploiement (Puppet/FAI) ou de virtualisation (KVM/Ganeti). Pour terminer la journée, Guido Trotter de chez Google, nous parle des fonctionnalités réseau intéressantes sous Linux (VLAN, tunnels, routing, etc.). Une journée riche en idées et en informations ! En soirée, nous avons visualisé le film Open Source Sita Sings the Blues et Nina Paley nous a expliqué son choix d’une licence libre pour son film.

Le quatrième jour, c’est le Day Trip. Il s’agit classiquement d’une journée consacrée à des activités touristiques extérieures. Nous avons été visiter l’église Trinity Church à Manhattan où le drame du 11 septembre 2001 a mis un superbe orgue hors d’usage, remplacé temporairement par un orgue électronique “Powered by Linux”… qui a finalement été conservé en raison de sa qualité. Keith Packard, l’un des gourous de X.org employé chez Intel, a joué quelques minutes sur cet orgue. Ensuite, direction la plage de Coney Island. Puis un match de baseball où Stefano Zacchiroli lancera la première balle du match.

Cinquième jour, on reprend avec un BoF (un BoF=Birds of a Feather est une discussion informelle de groupe) sur la virtualisation où plusieurs personnes témoignent de leurs expériences et connaissances sur le sujet. Pas mal d’informations intéressantes, notamment sur le couple Ganeti/KVM pas mal mis en avant par Iustin Pop, l’un des développeurs de Ganeti employé chez Google. J’y apprends notamment que KVM gère une notion de mémoire partagée et ainsi démarrer une 2e machine virtuelle avec un même OS ne consommerait pas de mémoire supplémentaire sur le système hôte ! Suite des présentations, notamment une portant sur DebConf 12 qui pourrait peut-être se dérouler au Brésil. Et fin de la matinée avec François Marier qui présente le projet Libravatar permettant d’offrir une alternative à Gravatar, l’outil centralisé de gestion des avatars. Ses idées sont de se baser sur les DNS pour répartir les avatars pour chaque noms de domaine. Il a déjà commencé à développer une application en Django pour gérer cela. Suite de la journée avec un BoF sur Lintian (outil de vérification de la conformité des packages Debian) géré par Russ Allbery. Puis j’ai assisté à une présentation de Guido Günther qui a expliqué comment gérer son packaging avec Git et notamment git-buildpackage (très intéressant pour moi car je gère déjà mes packages Debian comme ça). Ensuite, petite pause sportive, car une dizaine de développeurs Debian a été participé à un cross de 5 kms dans le Bronx, avec des résultats honorables !

Sixième jour, on débute par Bits from Release Team qui déclare en direct que Squeeze, la prochaine version stable, est désormais freezée ! Un scoop à DebConf ! C’est ensuite Stefano Zacchiroli qui nous présente son travail en cours sur une amélioration de la gestion des dépendances, non seulement pour Debian mais aussi pour les autres distributions : plus de détails sur le site du projet Mancoosi. C’est ensuite la traditionnelle photo de groupe. En début d’après-midi, Margarita Manterola dresse un constat très lucide de l’état de Debian avec son talk Making Debian Rule, again. Puis en fin d’après-midi, c’est un BoF très apprécié mené par Joey Hess sur CUT (Constantly Usable Testing) qui explore les possibilités d’avoir une distribution Testing utilisable en permanence ! Le soir venu, c’est un BoF sur l’utilisation d’OpenPGP et la classique Keysigning Party qui a regroupé plusieurs dizaines de participants.

Septième et dernier jour, encore de nombreuses présentations. J’ai notamment assisté à celle de Philippe Kern, membre de la Release Team, qui a parlé du management de la version stable et de volatile. On notera par exemple qu’on peut désormais corriger des bugs en priorité “Important” dans les points de Release. La suite ce sont des fameux Lightnings Talks, une dizaine de présentations très courtes : une qui suggère d’arrêter complètement d’utiliser les mots de passe, une autre sur le logiciel runit, une autre sur les éclairs (lightnings !) ou encore l’historique en photos des Wine&Cheese Party ! Fun et instructif. Puis c’est l’heure de la conférence de clôture, où l’on remet des prix à ceux qui ont corrigé le plus de bugs mais surtout tous les volontaires sont vivement remerciés et j’en profite pour adresser une nouvelle fois mes remerciements à :
- L’équipe qui a organisé cette DebConf 10 : un travail impressionnant pour un résultat professionnel et communautaire à la fois : on frôle la perfection !
- L’équipe vidéo qui a fait un travail génial et vous pouvez ainsi retrouver l’ensemble des talks en vidéo,
- Les centaines de personnes sympas et passionnées qui contribuent à faire de Debian une distribution de grande qualité… et qui sait évoluer, la preuve avec les sujets abordés lors de cette DebConf !

Petite conclusion de cette semaine intensive, comme vous avez pu le lire : j’ai pu acquérir de nombreuses informations et faire le plein de nouvelles idées, mais aussi avoir des contacts réels avec d’autres développeurs et comprendre encore mieux le fonctionnement “social” de Debian. C’est donc très positif et cela va me permettre d’améliorer mon travail quotidien au sein d’Evolix, mais aussi réfléchir à d’autres projets et me motiver pour contribuer davantage à Debian. Debian rules !

18 August, 2010 11:52AM par Gregory Colpart

19 April 2006

Pierre Machard

Et si les écologistes s’étaient trompés au sujet du nucléaire?

Hier en lisant slashdot je suis tombé sur un billet qui mentionnait que Patrick Moore (un des fondateurs de Greenpeace), dans un éditorial du Washington Post, expliquait que l’énergie nucléaire était la seule source d’énergie qui pouvait couvrir nos besoins.

« Thirty years on, my views have changed, and the rest of the environmental movement needs to update its views, too, because nuclear energy may just be the energy source that can save our planet from another possible disaster: catastrophic climate change. »

Ce qui dans la langue de Molière pourrait donner quelque chose comme :
« En 30 ans, mes idées ont évolué, et le mouvement écologiste doit également évoluer dans ses considérations, car l’énergie nucléraire est peut être la source d’énergie qui peut préserver notre planète d’un autre risque probable : un boulversement climatique. »

La catastrophe de Tchernobyl a eu lieue il y a 20 ans, néanmoins, il convient de réfléchir sur nos besoins en énergie, développer les énergies non-fossiles, mais aussi de se rendre compte que nous n’avons pas d’alternative au nucléaire, sans quoi nous serions obligé d’éteindre tous nos ordinateurs.

19 April, 2006 09:01AM par migus

15 March 2006

Pierre Machard

Une belle explication des DRM

Hier soir dans l’hémicycle de l’Assemblée Nationale j’ai eu la chance d’entendre une magnifique définition de ce qu’est un DRM. M. Suguenot (UMP) a très didcatiquement détaillé comment fonctionne un DRM. Je vous copie/colle ici le verbatim du propos de M. Suguenot. La seule erreur à noter est l’utilisation du verbe crypter là où nous aurions dû trouver chiffrer :

« Lorsque vous achetez de la musique sur internet, les DRM sont déjà systématiquement utilisés. Dans le système de Microsoft adopté par la Fnac et Virgin, le serveur de votre fournisseur crypte le morceau de musique à l’aide d’une clef secrète, que vous ne recevrez naturellement pas. Vous devez alors utiliser un lecteur compatible, Windows Media Player par exemple. Ce lecteur, détectant que le fichier est crypté, protégé par un DRM, prend contact avec le serveur pour lui demander la clé secrète nécessaire à la lecture. Avant de la lui envoyer, le serveur lui demande le numéro de série de votre ordinateur puis met à jour votre fiche client en y inscrivant le numéro de série du morceau concerné suivi de celui de l’ordinateur sur lequel vous désirez l’écouter, avant de fabriquer un fichier qu’on appelle licence. Cette licence contient la clé secrète de décryptage, mais aussi une liste de règles précisant ce que vous êtes autorisé à faire avec le morceau en question. Le serveur envoie cette licence à votre lecteur qui la « cache » sur votre disque dur. Disposant alors du morceau de musique et de sa licence, il vérifie dans celle-ci que vous avez bien le droit de lire celui-là. Si tout est en règle, vous pouvez, enfin, écouter votre musique !

Comprenant mieux le fonctionnement des DRM, on imagine les règles qu’ils permettent d’imposer. Si vous transférez le morceau sur une autre machine, le lecteur, ne trouvant plus de licence, va à nouveau contacter le serveur pour en obtenir une. Votre fiche client sera mise à jour et le serveur « saura » que vous avez installé ce morceau une deuxième fois. Si vous dépassez le nombre maximal d’ordinateurs autorisés, cinq avec iTunes par exemple, le serveur refusera de vous accorder une nouvelle licence, vous devrez lui demander d’en retirer une à un ordinateur pour la transférer à un autre. La licence peut également imposer une limitation dans le temps de l’utilisation d’un fichier, un délai au-delà duquel le lecteur le détruira.  »

15 March, 2006 10:36AM par migus