Linux France

S'abonner à flux Linux France
Mis à jour : il y a 20 min 17 sec

NSA / TAO : le chemin vers vos serveurs

Mercredi 24 Septembre

Ne trouvant aucune base de données des différents programmes provenant des fuites de Snowden, nous avons travaillé à la création d'une base de données concernant la NSA et le GCHQ. L'article qui suit est une synthèse d'une partie de nos travaux.

NdM : cet article poursuit la série commencée par NSA-observer — quels sont les programmes de la NSA ?, NSA - temps de faire le (premier) point et Que peut faire le service d'élite JTRIG du GCHQ ?.

Nous (nsa-observer) allons aborder aujourd'hui le "catalogue" du groupe d'élite de la NSA nommé TAO (pour Tailored Access Operations). La mission de ce groupe est, depuis sa création en 1997, d'identifier, de monitorer et de trouver un chemin vers des réseaux ou des systèmes pour collecter des informations. Ce département a gagné la réputation de collecter certains des meilleurs renseignements parmi les services de renseignements US, que ce soit sur la Chine, sur des groupes terroristes, ou sur les activités politiques, militaires et économiques d'un pays.

Sommaire

Foreignpolicy.com indique que plus de 1000 personnes, civiles et militaires, y travailleraient à partir de 5 bases : ROC (pour Remote Operations Center), basé à Fort Meade (Maryland) qui est entre autres le quartier général de la NSA, Hawaii (Wahiawa, Oahu), Fort Gordon (Georgie), au Texas Cryptologic Center et à la base de l'US Air Force BKF (Denver).

TAO est divisé en quatre départements, chacun spécialisé dans un domaine précis, l'ensemble des équipes travaillant par roulement 24/7 :

  • Data Network Technologies (DNT) qui s'occupe de la conception de malwares,
  • Telecommunications Network Technologies (TNT) cible spécifiquement les méthodes de pénétrations dans les réseaux et les ordinateurs (bien entendu sans se faire détecter),
  • Mission Infrastructure Technologies (MIT) développe et construit les outils de monitoring hardware ainsi que les infrastructures qui permettent de tout supporter.
  • Access Technologies Operations (ATO) travaille avec la CIA et le FBI. Ces deux derniers mettant en place des modules de surveillance permettant aux opérateurs de TAO de les utiliser à distance.
TAO sort de l'ombre

Même si les premières informations publiques datent de l'été 2013, cette branche de la NSA est réellement sortie de l'ombre en décembre 2013 avec la conférence "To protect and infect, part 2: The militarization of the Internet" de Jacob Appelbaum au 30c3 où il présente les différents programmes d'attaque et de collecte, en coopération avec le Spiegel (Inside TAO: Documents Reveal Top NSA Hacking Unit).

Vidéo 30C3 : mp4 - webm

En plein milieu des "révélations Snowden", c'est un coup de tonnerre.

Les programmes peuvent se classer en différentes catégories : les implants matériels et les implants logiciels, dans lesquels on peut en mettre d'autres, comme ceux qui visent les téléphones (aussi bien GSM, smartphone que satellite), les malwares, et les programmes "RF" (pour radio-fréquences). Comme vous allez le voir, TAO fait plutôt de l'ultra-ciblé que de l'écoute de masse (au contraire du GCHQ). Ce qui concorde parfaitement avec leur mission : réussir à avoir les infos là où elles sont difficiles d'accès.

Les programmes

Présenter un tel catalogue implique de sélectionner certains de ses éléments sans s'étendre sur son intégralité. Quasiment tous les programmes sont intéressants de par leur méthodes opérationnelles, cependant, dans la mesure du possible, nous parlerons seulement des programmes qui sortent de l'ordinaire. On ne parlera par exemple pas trop des variantes d'IMSI catcher que l'on peut trouver partout.

Implants logiciels

IRATEMONK permet de modifier les microcodes des disques durs de différentes marques (Western Digital, Seagate, Maxtor et Samsung) pour exécuter du code lors du démarrage.

Téléphones
  • DROPOUTJEEP - implant pour Iphone, la NSA indique dans le catalogue que DROPOUTJEEP avait 100% de chances de succès.
  • MONKEYCALENDAR - implant ciblant les cartes SIM (Subscriber Identify Module) et envoi par SMS, à un numéro défini, les appels et la géolocalisation de l'utilisateur.
  • TOTEGHOSTLY - malware ciblant les téléphones Windows (mais quelle version ?), utilisant le framework CHIMNEYPOOL et contrôlé par STRAITBIZARRE. Il est utilisé pour mettre en place ou exfiltrer des fichiers, des sms, la liste des contacts ou encore trouver la géolocalisation via sms ou connection GPRS. L'attaquant a aussi le contrôle de la caméra et du micro.
  • TOTECHASER - malware ciblant le téléphone satellite/GSM Thuraya 2520 basé sur Windows CE. Il est utilisé pour exfiltrer les données de géolocalisation ainsi que les logs des appels et la liste de contacts via des sms cachés. Les sms servent aussi à l'attaquant à contrôler le téléphone. Selon les documents, l'implémentation de ce malware nécessite de modifier le téléphone lui même.

Ce genre d'attaque est la spécialité de l'entreprise FinFisher (Gamma International) qui est spécialisée dans les malwares "légaux" (lire "pour les forces de l'ordre, que vous soyez une dictature ou non"). Pour plus de détails sur les capacités de leurs malwares, lire "Gamma FinFisher hacked: 40 GB of internal documents and source code of government malware published" (netzpolitik.org) ainsi que "SpyFiles 4" (wikileaks.org) concernant les malwares eux-mêmes.

Il n'y a normalement aucun lien entre la NSA et FinFisher, mais les URLs vous permettront de mieux appréhender ce que l'on peut faire avec des malwares sur des téléphones.

Serveurs et firewalls
  • SWAP exploite le bios de la carte-mère et le Host Protected Area des disques durs pour obtenir des fenêtres d'exécution avant que le système ne charge. Cette technique fonctionne sur des systèmes Windows, Linux, FreeBSD, et Solaris,
  • JETPLOW est un implant persistant (sous la forme d'un firmware) ciblant la série des Cisco PIX et des pare-feux ASA (Adaptive Security Appliance) et permettant la mise en place d'une porte dérobée. À noter que BANANAGLEE fonctionne aussi sur ce type de matériel (et pas seulement sur du Juniper),
  • DEITYBOUNCE - implant logiciel exploitant le bios de la carte mère des serveurs Dell PowerEdge,
  • Les programmes se finissant par "MONTANA" (SCHOOLMONTANA / SIERRAMONTANA / STUCCOMONTANA) visent les serveurs Juniper alors que les programmes finissant par TROUGH (GOURMETTROUGH / SOUFFLETROUGH / FEEDTHROUGH) visent spécifiquement les firewalls du même constructeur,
  • IRONCHEF fournit un accès persistant sur les serveurs HP Proliant 380DL G5 en exploitant le BIOS de la carte-mère et le System Management Mode (SMM) via un implant matériel qui permet une communication via des ondes radio,
  • Les programmes se finissant par "WATER" (HALLUXWATER / HEADWATER) visent les pare-feux Eudemon du constructeur Huawei en installant une porte dérobée persistante via une "mise à jour" de la ROM du boot.
Implants matériels

ANGRYNEIGHBOR regroupe différents programmes d'écoutes fonctionnant à distance avec des ondes, que ce soit radar ou radio. Ils fonctionnent le plus souvent avec une balise et fonctionnent même si l'ordinateur n'est pas branché à un réseau. Un générateur d'ondes (CW) illumine (comprendre "envoie des ondes vers") la balise, qui utilise alors ces ondes pour renvoyer ses informations. On parle alors d'ondes RF pour les fréquences radios et d'ondes radars pour le reste.

  • COTTONMOUTH est un implant USB (matériel) avec un lien RF qui permet l'infiltration ou l'exfiltration de données. Compatible avec GENIE,
  • BULLDOZER et GINSU sont des malwares visant le bus PCI, installé via INTERDICTION, ils peuvent être connectés sur une carte WIFI ou sur un routeur pour collecter des métadonnées et du contenu,
  • FIREWALK est un implant pour l'Ethernet (rj45/USB ?) permettant un pont RF
  • LOUDAUTO est un rétro-réflecteur utilisant les ondes radar et du post-traitement basique pour récupérer l'audio d'une pièce.
  • SURLYSPAWN permet de collecter les frappes au clavier sans devoir avoir un logiciel installé sur le système cible, il faut qu'il soit seulement touché une fois.
  • PHOTOANGLO (comme le CTX4000), est un générateur d'ondes en continu (CW),
  • RAGEMASTER fournit la "balise" qui sera illuminée par un générateur d'ondes. Il est installé dans un câble VGA standard et permet la récupération du signal vidéo. La description du catalogue rapporte que RAGEMASTER ne prend en compte que la "sortie" rouge du VGA car c'est celui qui fournit le meilleur retour vidéo.
  • TAWDRYYARD sert de balise permettant de géolocaliser et d'identifier un périphérique implémentant RAGEMASTER.

En lisant le catalogue, on peut parfois voir qu'un programme est fait de composants "COTS" ("Commercial Off-The-Shelf), ce qui signifie que l'on peut le trouver librement sur le marché et donc que l'on ne peut pas remonter à la NSA si quelqu'un le trouve. Si vous souhaitez plus de détails, vous pouvez voir les liens suivants : les 48 pages du catalogues, "Inside TAO: Documents Reveal Top NSA Hacking Unit", "N.S.A. Devises Radio Pathway Into Computers" ou encore "Jacob Appelbaum: Futuristic-Sounding "Radar Wave Devices".

Et les drones ?

NIGHTSTAND, permet d'injecter des exploits sur une ou plusieurs cibles via un réseau WIFI. Il est typiquement utilisé lorsque la cible n'est pas accessible via un réseau câblé, et l'attaque est indétectable par l'utilisateur. Les documents indiquent que dans un environnement idéal, il est possible d'attaquer un réseau WIFI à une distance de ~12 kilomètres. NIGHTSTAND est aussi utilisable à partir d'un drone.

Sur le même thème, vous pouvez aussi regarder les programmes suivants : SPARROW-II (ordinateur embarqué sur du Linux, permet d'exploiter un réseau WIFI à distance), SHENANIGANS (permet la captation massive de données, provenant aussi bien de routeurs WIFI que de smartphones), GILGAMESH (localisation d'une carte SIM à partir d'un drone) et VICTORYDANCE (coopération NSA/CIA : empreinte des réseaux WIFI de quasiment toutes les grandes villes yéménites).

Mais comment font-ils ?

Comment font-ils pour accéder physiquement au serveur s'ils doivent mettre en place des implants matériels ? Ou pour casser de la crypto ? Où encore pour accéder aux différentes réseaux ?

Il existe un programme, appelé INTERDICTION qui consiste à intercepter un colis pendant son transfert pour y installer ce que vous voulez, le tout est renvoyé rapidement et discrètement (et avec le bon emballage bien entendu) à la cible. Le simple fait de commander du matériel en ligne est donc potentiellement un danger. La parade est plutôt simple, il suffit d'aller en magasin. Et comme conclut à juste titre the register, il n'y a apparemment aucun "programme" qui possède une période de validité (à par SEASONEDMOTH). Ce qui veut dire une chose : méfiez-vous de à qui vous achetez votre matériel d'occasion :]

Pour le chiffrement, c'est BULLRUN qui rentre en jeu : il vise à supprimer le chiffrement dans un environnement donné : CNE (Computer Network Exploitation), INTERDICTION (et donc pose d'implants), collecte de données (comme les rapports d'erreurs de Windows) relation avec les entreprises : au hasard RSA ou encore Microsoft (cf. PRISM) ,

ou avec d'autres services (par exemple le FBI pour Microsoft)

À ce sujet, je m'interroge sur Google et les Google cars scannant les réseaux WiFi en 2010. L'information importante n'était pas que Google capte des données sur des réseaux ouverts, mais qu'il a "mappé" TOUS les SSID des réseaux wifi ainsi que leurs localisations : exactement la même chose que ce que la NSA a fait au Yémen avec VICTORY DANCE. Le fait de savoir où se trouve un réseau wifi permet de géolocaliser une cible en ayant accès à son téléphone ou à son ordinateur sans même qu'il ne soit connecté à un réseau, son wifi doit juste être allumé. S'il est connecté, il devient alors possible de faire un lien entre une adresse IP et un SSID.

Continuons avec BULLRUN : il ne faut pas oublier que la NSA a certains des meilleurs mathématicien-ne-s au monde qui travaillent sur de la cryptographie pour améliorer ou au contraire affaiblir des protocoles (comme IPsec par exemple), mais aussi pour trouver des failles à exploiter avant les autres. Ainsi, en novembre 2013, Jacob Appelbaum (qui a eu accès à des documents classifiés d'une autre source que Snowden) disait que "RC4 is broken in real time by the NSA - stop using it." (RC4 est cassé en temps réel par la NSA, arrêtez de l'utiliser).

Il peut aussi y avoir des attaques plus simples , par exemple sur l'utilisation de STARTTLS au lieu de SSL/TLS ; son utilisation permet dans certains cas de forcer une connexion en clair au lieu d'avoir un chiffrement quelconque (d'où l'intérêt de mettre ssl = required et non ssl = yes).

Oui et alors ?

La NSA peut alors utiliser des outils comme XKEYSCORE (dont j'avais parlé dans le premier article) qui permet de rechercher en quasi temps réel dans les différentes bases de données de la NSA et d'autres services : ça peut aller de la nationalité, au sexe, la géolocalisation, l'IP, aux résultats de DISCOROUTE (écoute passive et planétaire du protocole Telnet), en passant par les personnes qui téléchargent le logiciel Tor jusqu'aux sessions VPN, etc….

Une fois une cible définie (comme un administrateur système et/ou réseau, cf. I Hunt sysadmin), la NSA peut alors rediriger une cible vers un serveur FOXACID (pour injecter du code dans son navigateur en utilisant des 0-day), la NSA réalise un Man-in-the-Middle via des fausses pages web (Linkedin, slashdot, …) lors de la redirection en utilisant ses serveurs QUANTUM et du Deep Packet Inspection (TURBINE /TURMOIL).

Pour plus de détails sur cette méthode, vous pouvez lire les articles suivants :

Pour la petite histoire, la société française VUPEN a vendu des 0-day à la NSA, et aussi à FinFisher.

Certains documents rapportent 231 opérations en 2011, dont les 3/4 étaient en priorité contre l'Iran, la Russie, la Chine, la Corée du nord et la prolifération nucléaire. Voici quelques autres cibles :

Pour finir, un document indique que TAO est en train de travailler (en 2011) sur des implants pouvant identifier des "conversations intéressantes" dans un réseau ciblé et d'exfiltrer des morceaux.

Sources TAO - catalogue ANT Tag ANT (NSA) sur nsa-observer.net

BULLDOZER - CANDYGRAM - COTTONMOUTH-I - COTTONMOUTH-II - COTTONMOUTH-III - CROSSBEAM - CTX4000 - CYCLONE - DEITYBOUNCE - DROPOUTJEEP - ENTOURAGE - FEEDTROUGH - FIREWALK - GENESIS - GOPHERSET - GOURMETTROUGH - HALLUXWATER - HEADWATER - HOWLERMONKEY - IRONCHEF - JETPLOW - JUNIORMINT - LOUDAUTO - MAESTRO-II - MONKEYCALENDAR - NEBULA - NIGHTSTAND - NIGHTWATCH - PHOTOANGLO - PICASSO - RAGEMASTER - SCHOOLMONTANA - SIERRAMONTANA - SOMBERKNAVE - SOUFFLETROUGH - SPARROW-II - STUCCOMONTANA - SURLYSPAWN - SWAP - TAWDRYYARD - TOTECHASER - TOTEGHOSTLY - TRINITY - WATERWITCH - WISTFULTOLL

Télécharger ce contenu au format Epub

Lire les commentaires

Conférence Tryton à Leipzig du 14 au 16 novembre 2014

Mercredi 24 Septembre

La conférence annuelle de la communauté de Tryton, un progiciel de gestion intégré, aura lieu cette année le 14, 15 et 16 novembre 2014. Après Liège et Barcelone, c'est Leipzig en Allemagne qui a été choisie cette fois-ci pour recevoir l'évènement dédié à ce fork d'OpenERP.

Suivant le principe des Unconference, les sujets traités seront ceux que les participants proposeront. Voici quelques sujets déjà proposés :

  • les nouveautés de la version 3.4 ;
  • construire des paquets ;
  • synchronisation, étude du cas du dossier patient de la Jamaïque ;
  • écrire son premier module.

Il y aura aussi une réunion des sympathisants de la Fondation afin d'y faire le bilan de l'année et de préparer le futur ainsi qu'un sprint pour le dernier jour.

À propos, les dépôts ont été gelés afin de préparer la version 3.4 pour le 20 octobre. Vous pouvez aider en testant et rapportant les éventuels bugs, en vérifiant et/ou complétant la documentation ou en aidant à la traduction.

Télécharger ce contenu au format Epub

Lire les commentaires

e-venement se met au tactile... et sort en v2.7 "Tiramisu Amaretto"

Mercredi 24 Septembre

Le logiciel libre (GPL) e-venement de billetterie informatique se renforce : gestion des Réservations de Ressources, billetterie tactile, vente en ligne… Il disposait déjà de nombreux atouts dont le support du paiement sécurisé TIPI ; la grande aventure d'e-venement se poursuit avec une version 2.7 nommée "Tiramisu Amaretto" :

  • interface « Événementiel » renouvelée et innovante ;
  • les relations aux publics avec de nouvelles fonctionnalités ;
  • une interface de billetterie 100% tactile préparant l'arrivée de la vente de produits ;
  • e-voucher v2 pour la vente en ligne intégrant de nombreux systèmes de paiement ;
  • un module de statistiques géographiques ;
  • extractions améliorées dans le module groupes et les scolaires.

Télécharger ce contenu au format Epub

Lire les commentaires

[ApéroLibre] 2 octobre 2014 à Nantes : CSPORT et Ansible

Mercredi 24 Septembre

Retrouvez-nous autour d'un apéro le jeudi 2 octobre (18h45-21h) à la Cantine Numérique de Nantes pour découvrir deux thématiques : "CSPORT : l'outil de gestion des matches et des arbitres pour les comités sportifs" et "Installation automatisée de serveurs GNU/Linux avec Ansible".

Vous vous intéressez aux logiciels libres ou plus généralement au monde du Libre ?

Alliance Libre vous propose un nouveau format de séminaire : les '''ApéroLibres''', généralement le 3e jeudi tous les 2 mois impairs, de 18h45 à 21h à la Cantine Numérique de Nantes (Chaussée de la Madeleine - 11 Impasse Juton - 44000 Nantes) pour découvrir 2 thématiques différentes.

Date suivante : le 20 novembre ("Téléphonie VoIP" & "Gestion des Exigences et des Tests")

Entrée libre et gratuite - Le nombre de places est limité, si vous voulez être sûr d'avoir une place, inscrivez vous à info AT alliance-libre DOT org.

CSPORT, l'outil de gestion des matches et des arbitres pour les comités sportifs

Intervenants : Marie Kuntz (Lézard Rouge) et Vincent Badts (Comité de Rink Hockey)

Chaque année, près d’un millier de matches de Rink Hockey sont organisés entre les clubs de la région. Chaque samedi, c’est une à deux dizaines de matches qui se jouent. L'organisation de ces matches est lourde pour les clubs : convocations des équipes, gestion des lieux, attribution des arbitres…

CSPORT est la solution que le Comité de Rink Hockey des Pays de Loire (CRH Pdl) a souhaité mettre en place pour faciliter les échanges et limiter au maximum les couacs (absence d'arbitres sur un match…). Découvrez comment une association sportive peut se simplifier la vie et apporter à ses membres un service facile à utiliser… en logiciel libre bien sûr !

Installation automatisée de serveurs GNU/Linux avec Ansible

Intervenant : Yoan David (UmanIT)

Ansible est le dernier né des outils libre de provisionning, au même titre que ses ainés (Chef et Puppet pour ne citer qu'eux) il permet d'automatiser les tâches d’administration courantes sur les serveurs GNU/Linux (entre autre).

  • Avec Ansible la configuration d'un nouveau serveur n'est l'affaire que de quelques minutes.
  • Avec Ansible le changement d'un élément de configuration est réalisé sur l'ensemble du parc en une seule ligne de commande.

Cette présentation se propose de faire une introduction à l'utilisation d'Ansible accompagné de démonstrations, enfin nous présenterons l'usage que nous en faisons au sein de UmanIT.

Les démonstrations seront réalisées avec un autre outil libre qui sera à cette occasion aussi présenté : Vagrant
Vagrant permet de créer et gérer des machines virtuelles de développement/maquettage à l'aide d'Ansible évidemment.

Télécharger ce contenu au format Epub

Lire les commentaires

Nantes - ApéroMaison le 9 octobre 2014 à 19h

Mercredi 24 Septembre

FAImaison, fournisseur d'accès à Internet Nantais, vous propose un ApéroMaison le 9 octobre 2014 à 19h au Café Flesselles 3 Allée Flesselles à Nantes, pour échanger de façon informelle et conviviale à propos d'Internet et ses usages, pour découvrir FAImaison en dehors des réunions hebdomadaires, etc.

L'évènement est ouvert à tous, entrée libre et gratuite.

Télécharger ce contenu au format Epub

Lire les commentaires

20 000 téléchargements plus tard pour les GameKey Light

Mardi 23 Septembre

C'est avec un grand plaisir que nous vous annonçons le vingt millième téléchargement de nos GameKey Light (séries 1 et 2 confondues).

Sortie le 2 mars 2010, la GameKey Light série 1 a ouvert le bal : c'est une compilation de jeux libres pour Windows de petite taille (74Mo compressés), mais avec tout de même 39 jeux libres (Puzzles de Simon Tatham en contient 27). Mais ce fût la série 2 et surtout la version internationale qui eût un beau succès auprès du grand public, succès qui se poursuit toujours. La raison ? Une disponibilité en cinq langues mais aussi une compatibilité Linux grâce à Wine.

Ne nous voilons pas la face, ce succès n'aurait pas été possible sans le référencement de la GameKey Light série 2 internationale dans un média grand public, en l'occurrence 01 net du groupe NextRadioTV (BFM TV,RMC).

Et ensuite ?
Nous préparons un nouveau Live CD appelé "Linuxfr" comprenant des jeux de membres de Linuxfr, un spécial "jouer ensemble" et un autre sur le thème "jouer en réseau" puis encore un CD de jeux tout public pour Windows (la série 6). Ensuite viendront la mise à jour du série 3 tout public (avec une surprise) et plein de bonnes choses.
Un grand merci aux développeurs qui mettent leur jeux sous licences libres et à toi public.

Télécharger ce contenu au format Epub

Lire les commentaires

Revue de presse de l'April pour la semaine 38 de l'année 2014

Lundi 22 Septembre

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

[Next INpact] Les consommateurs devront être avertis de la présence de DRM

Par Marc Rees, le vendredi 19 septembre 2014. Extrait:

Outre l’encadrement du droit de rétractation, le décret publié ce matin au Journal officiel contient une autre disposition importante en matière de droit à la consommation. Elle vise les questions des verrous numériques et de l’interopérabilité, mettant sur le dos des professionnels de nouvelles obligations.

Lien vers l'article original: http://www.nextinpact.com/news/89976-les-consommateurs-devront-etre-avertis-presence-drm.htm

Voir aussi:

[JDN] E-commerce: solutions open source vs solutions propriétaires: 5 questions a se poser avant de faire son choix

Par Yannick Maingot, le vendredi 19 septembre 2014. Extrait:

Dans le monde «impitoyable» des technologies e-commerce, s’affrontent depuis toujours deux philosophies: celle des solutions technologiques reposant sur le modèle Open Source et celle des éditeurs de solutions propriétaires.

Lien vers l'article original: http://www.journaldunet.com/ebusiness/expert/58489/e-commerce---solutions-open-source-vs-solutions-proprietaires---5-questions-a-se-poser-avant-de-faire-son-choix.shtml

Et aussi:

[Next INpact] Le projet de loi sur le terrorisme adopté par les députés: notre compte-rendu

Par Marc Rees, le jeudi 18 septembre 2014. Extrait:

Les députés viennent d'adopter le projet de loi sur le terrorisme après les débats que vous avez pu suivre ces derniers jours sur ce flux ou en suivant le hashtag #PJLterrorisme sur Twitter. Voici notre compte-rendu.

Lien vers l'article original: http://www.nextinpact.com/news/89946-projet-loi-sur-terrorisme-en-temps-reel-articles-deja-votes.htm

Et aussi:

Voir aussi:

[Le Monde Informatique] FixMyDocuments veut aider les sites publics à adopter les formats ouverts

Par Loek Essers, le jeudi 18 septembre 2014. Extrait:

A travers sa campagne FixMyDocuments, le groupement d'intérêt Open Forum Europe dit vouloir aider les administrations à utiliser les formats de documents ouverts sur leurs sites web. Neelie Kroes a apporté son soutien à l'initiative, mais on ne sait pas si ses successeurs lui emboîteront le pas.

Lien vers l'article original: http://www.lemondeinformatique.fr/actualites/lire-fixmydocuments-veut-aider-les-sites-publics-a-adopter-les-formats-ouverts-58665.html

Et aussi:

Voir aussi:

[La gazette.fr] L'Etat entrepreneur ouvert, nouvel avatar du numérique au service de la modernisation

Par Sabine Blanc, le jeudi 18 septembre 2014. Extrait:

Ce mercredi 17 septembre, le secrétaire d’Etat en charge de la Modernisation de l’Etat et de la Simplification a présenté une communication synthétisant sa stratégie en terme de numérique. Elle s’inspire du monde de l’entreprise et la donnée y joue un rôle pivot.

Lien vers l'article original: http://www.lagazettedescommunes.com/270157/letat-entrepreneur-ouvert-nouvel-avatar-du-numerique-au-service-de-la-modernisation

Et aussi:

[Le Monde.fr] Le cryptoanarchiste allemand et l'ancien cadre du CAC 40 alliés contre la NSA

Par la rédaction, le mardi 16 septembre 2014. Extrait:

Le projet «Pretty Easy Privacy» veut faire des communications chiffrées un standard utilisable par M. et Mme Tout-le-Monde, aussi bien dans l'entreprise que dans le cadre privé.

Lien vers l'article original: http://www.lemonde.fr/pixels/article/2014/09/16/le-cryptoanarchiste-allemand-et-l-ancien-cadre-du-cac-40-allies-contre-la-nsa_4486314_4408996.html

Et aussi:

[Framablog] Le combat pour Internet est un combat pour des personnes

Par Cory Doctorow (transcription Marie-Alice et traduction Framalang), le lundi 15 septembre 2014. Extrait:

Bon, il y a pas mal de chances que les personnes qui assistent à des événements comme celui-ci gagnent leur vie avec une activité en ligne et même si vous ne gagnez pas votre vie en ligne aujourd’hui, vous le ferez probablement demain, parce que tout ce que nous faisons aujourd’hui implique Internet et Internet sera nécessaire pour tout ce que nous ferons demain.

Lien vers l'article original: http://www.framablog.org/index.php/post/2014/09/14/Le-combat-pour-Internet-pour-des-personnes

Et aussi:

Télécharger ce contenu au format Epub

Lire les commentaires

Revue des techniques de programmation en shell

Lundi 22 Septembre

L'été est fini, c'est la rentrée ! Pour se remettre en forme, rien de tel qu'une revue des techniques de programmation en shell — ces techniques sont pour le shell de Bourne /bin/sh mais peuvent être utilisées avec les shells compatibles qui permettent parfois des solutions plus faciles.

Sommaire

Note: comme ce texte est déjà très long, je propose que ceux qui ont aussi des choses à dire sur ce sujet le fassent dans des dépêches supplémentaires.

Le dernier qui a fait ça chez nous est en train de sécher dans un faux plafond

Si vous souhaitez faire don de votre corps à un taxidermiste, utilisez l'une des techniques suivantes dans votre programme: les backquotes, la commande echo ou bien analysez la sortie de la commande ls.

Les backquotes, backticks ou contr'apostrophes

N'écrivez jamais

candidates=`awk '{print($2)}' /etc/fstab`

mais plutôt

candidates=$(awk '{print($2)}' /etc/fstab)

parce que c'est plus facile à lire, plus facile de présenter correctement une longue fonction, plus facile à emboiter, bref les backquotes sont une technologie obsolète.

À propos, il est souvent plus facile et plus lisible de définir une fonction auxiliaire:

list_mount_points() { awk ' /^#/||/^$/{next} {print($2)} ' /etc/fstab } candidates=$(list_mount_points)

Quand on a plus de place, c'est plus facile de mieux présenter son code, d'écrire un code plus robuste et le nom de la fonction décrit son rôle.

La commande echo

La fonction echo n'est utile que pour afficher des messages de diagnostic, si la fonction printf est disponible, il faut toujours préférer cette dernière, qui est plus puissante et plus facile à utiliser!

On peut par exemple imprimer des codes de caractère arbitraires:

TAB=$(printf '\t') CR=$(printf '\015')

et imprimer correctement toutes les variables

attrape_nigaud='Pan!\cPan!' printf '>>> %s <<<\n' "$attrape_nigaud" echo "$attrape_nigaud"

L'appel à printf est bien défini mais pas celui à echo qui produit Pan! sous Debian/Jessie mais Pan!\cPan! sous FreeBSD.

Rappelons la définition bien pratique de la fonction eprintf permettant d'écrire sur la sortie d'erreur standard :

eprintf() { >&2 printf "$@" } Analyse de la sortie de la commande ls

En bref la règle d'or est que la commande ls sert uniquement pour l'utilisation interactive du shell, dans le cas d'un script shell, on utilise soit le globbing soit la commande find en conjonction avec xargs.

La raison est que la commande ls est inutilisable dès que les fichiers contiennent des caractères exotiques. Il est inutilement difficile d'analyser correctement la sortie de ls et il est tellement facile d'utiliser un globbing:

for file in $(ls); do ← Exemple à ne pas suivre! printf '%s\n' "$file" done

est corrigé en

for file in *; do printf '%s\n' "$file" done

ou bien, pour des recherches plus compliquées:

NUL=$(printf '\000) find /path/to/dir -type d -name '* *' -print0 \ | while IFS="$NUL" read file; do printf '%s\n' "$file" done

L'information fournie par ls -l est facilement accessible avec stat.

Construction de la ligne de commande

Un problème analogue à celui de l'analyse la sortie de la commande ls est celui de la préparation de l'appel à une commande du type

utility -file file1 -file file2

La version vite-fait mal fait consiste à dire:

argv='' for file in *; do argv="$argv -file $file" ← Exemple à ne pas suivre done utility $argv

Évidemment, comme vos noms de fichiers utilisent un codage binaire où le ' ' représente 0 et le retour à la ligne représente 1, tout va de travers! La façon indestructible d'appeler utility est d'utiliser xargs -0 comme dans:

job_strategy() { local file for file in *; do printf '-file\000%s\000' "$file" done } job_strategy | xargs -0 utility Programmation structurée

Les débutants commettent souvent l'erreur consistant à vouloir répliquer les structures d'enregistrement (les struct de C ou C++, les record de Pascal) dans des variables du shell.

Mais ce n'est pas comme ça que ça marche!

Un bonne règle pour l'organisation des données dans un programme shell est de de n'utiliser les variables que pour les objets du monde UNIX: chemins de dossiers, chemins de fichiers, pids, uids, etc. Tout le reste, en particulier les structures d'enregistrement, va dans des fichiers ou des pipes, sous forme de table séparée par des | ­ou par des caractères ASCII US=$(printf '\037) pour ceux qui vivent au pays des gens utilisant | dans leurs données — et les traitements complexes sont effectués par des filtres. Si ça ne convient pas à votre programme, changez de langage, utilisez OCaml, Perl ou Python. Bien-sûr, tout le monde n'est pas de cet avis, en particulier, les maîtres de la programmation shell. Les maîtres ont une caractéristique importante qui démultiplie leur faculté de jugement bien au delà de ce que peut imaginer un débutant : ce sont des maîtres. Si vous êtes un débutant, ne vous laissez pas impressionner par les maîtres qui ont déjà écrit un interpréteur Scheme en sed et utilisent la commande printf pour insérer du code shell auto-modifiant dans le noyau Linux. N'hésitez pas à utiliser un autre langage pour résoudre votre problème.

Exemple du renommage de fichier

Illustrons cette technique sur l'exemple classique du renommage de fichier en masse. La procédure finale se décompose en

job_select | job_strategy | job_perform

On a trois fonctions correspondant aux étapes suivantes:

  1. job_select prépare une liste des fichiers à renommer ;
  2. job_strategy prépare une donnée tabulaire avec deux colonnes, l'une contenant le nom initial, l'autre le nouveau nom ;
  3. job_perform qui fait la modification finale.

On fait l'hypothèse paranoïaque que les caractères /n et | n'apparaîssent pas dans les noms de fichiers. Si ce n'est pas le cas, utilisez un vrai langage de programmation — mais les maîtres, eux, savent comment faire!

La fonction job_select ressemble typiquement à

job_select() { find /path/to/directory -name '*@!*' -print0 }

La commande job_strategy prépare un plan de travail:

job_strategy() { sed -e' h s/@!/--censored--/g H x s/\n/|/' }

Ceux qui n'ont pas encore écrit d'interpréteur Scheme en sed peuvent lire le walkthtough suivant, en anglais parceque je ne sais pas dire walkthrough ou pattern space en français et que personne n'en comprendrait les traductions:

h Save pattern space to hold space s/…/…/ Edit the name in the pattern space H Append the edited name to the hold space x Exchange hold and pattern space s/\n/|/ Replace the newline by a field separator

Bien-sûr on peut utiliser n'importe quel autre langage que sed pourvu qu'on soit capable d'écrire un filtre transformant

Quel @! de patron

en

Quel @! de patron|Quel --censored-- de patron

Finalement la procédure de renommage ressemble à

job_rename() { local oldname newname while IFS='|' read oldname newname; do if [ "$oldname" = "$newname" ]; then printf 'Skipping %s\n' "$oldname" >&2 else mv "$oldname" "$newname" fi done }

Oui je sais, on peut faire la même chose avec rename '/@!/--censored--/' * ou avec la commande @! de zsh, mais il s'agit d'un exemple un peu scolaire pour illustrer la méthode.

Un effet secondaire très appréciable de cette organisation est qu'on peut tester chaque morceau individuellement et faire du mocking facilement.

Ainsi, si au lieu d'exécuter job_select | job_strategy | job_perform à la fin de mon script j'utilise simplement job_select je peux m'assurer que la liste de fichiers est correcte, et avec job_select | job_strategy je peux vérifier que mon plan de travail est correct. Aussi, je peux créer des données artificielles pour tester job_strategy, par exemple

mock_issue_42_job_select() { cat <<'EOF' This is an example of pathological input causing issue 42 EOF } mock_issue_42_job_select | job_strategy Exemple de l'analyse de contenu de fichier vidéo

Un exemple plus amusant est celui de cette fonction, issue d'un programme de vidéothèque que j'ai écrit en shell.

# cinema_identify FILE # Identify the given file. # # Identifying the file causes a content index to be dumped on # stdout. This content index describes the content of the file. # There is two types of records, for Tracks and for Attachments. # # Track|INDEX|TYPE|CODEC # Attachment|INDEX|TYPE|SIZE|FILENAME # # An output example is: # # Track|0|video|V_MPEG4/ISO/AVC # Track|1|audio|A_VORBIS # Track|2|audio|A_VORBIS # Track|3|audio|A_VORBIS # Track|4|subtitles|S_VOBSUB # Track|5|subtitles|S_VOBSUB # Attachment|1|image/jpeg|93405|+POSTER # Attachment|2|text/plain|54|+INDEX cinema_identify() { env LANG=C mkvmerge --identify "$1" \ | sed -e ' s/'//g /^File/{ d } /^Track/{ s/ ID /|/ s/: /|/ s/ (\(.*\))/|/ } /^Attachment/{ s/ ID /|/ s/: type /|/ s/. size /|/ s/ bytes, file name /|/ }' }

Cette commande prend un fichier vidéo en argument et écrit sur la sortie un truc du genre

Track|0|video|V_MPEG4/ISO/AVC Track|1|audio|A_VORBIS Track|2|audio|A_VORBIS Track|3|audio|A_VORBIS Track|4|subtitles|S_VOBSUB Track|5|subtitles|S_VOBSUB Attachment|1|image/jpeg|93405|+POSTER Attachment|2|text/plain|54|+INDEX

Bien-sûr dans le vrai script, le script sed est dans un fichier auxiliaire pour, pour le test et la lisibilité.

Voici comment traiter de façon polymorphe cette sortie:

cinema_polymorph_example() { local field_type rest while IFS='|' read field_type rest; do IFS='|' set -- $rest case "$field_type" in Track) process_track "$@";; Attachment) process_attachment "$@";; *) >&2 printf 'Unknown field type %s\n' "$field_type"; exit;; esac done }

Dans cet exemple chaque ligne commençant par Track est traitée par process_track et chaque ligne commençant par Attachment est traitée par process_attachment.

Liste des commandes travaillant avec des données tabulaires

Voici une liste pêle-mêle de fonctions travaillant sur des données tabulaires.

awk(1) - pattern-directed scanning and processing language sed(1) - stream editor paste(1) - merge corresponding or subsequent lines of files join(1) - relational database operator comm(1) - select or reject lines common to two files cut(1) - cut out selected portions of each line of a file lam(1) - laminate files sort(1) - sort or merge records (lines) of text and binary files uniq(1) - report or filter out repeated lines in a file

Il faut bien noter que toutes ces fonctions n'utilisent pas forcément les mêmes options pour définir le délimiteur.

Introspection

Oui, vous lisez bien, le shell permet de faire l'introspection, de façon limitée. Par exemple, voyons comment définir une mini base de données de repositories git à sauvegarder:

project1_repo='/var/git/project1.git' project1_refs='master v1.0 v2.0' project2_repo='/var/git/project2.git' project2_refs='master v1.0 v2.0' gitdb_list() { set | sed -n -e 's/_repo$//p' } gitdb_tabular() { local repo dir refs gitdb_list | while read repo; do eval printf '%s|%s|%s\n' "$repo" "\$${repo}_dir" "\$${repo}_refs" done } gitdb_backup() { local repo dir refs gitdb_list | while read repo dir refs; do git bundle create "/backup/$repo" "$repo_dir" HEAD $refs done }

Dans ce cas particulier, je préfèrerais utiliser directement une base de données tabulaires, mais si pour une raison ou une autre on ne devait utiliser que des variables shell pour transmettre l'information alors cette technique est utilisable.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de Paperwork 0.2

Lundi 22 Septembre

Paperwork est l'outil idéal pour les flemmards qui veulent scanner tous leurs documents papiers. Il s'agit d'une interface graphique conçue avec une idée en tête : "scan&forget" (« numériser et puis voilà fini »). Lire, trier et indexer les papiers est un travail de machine, pas d'humain.

Un peu plus d'un an après Paperwork 0.1, voici Paperwork 0.2. Cette nouvelle version apporte essentiellement des améliorations de l'interface graphique, ainsi que de l'ajout d'une fonctionnalité appelée "prédiction des labels" (histoire de pouvoir être encore plus flemmard lorsqu'on scanne ses documents).

Les principaux changements sont :

  • Recherche améliorée
  • L'apparence des labels a été améliorée
  • La barre de menu a été remplacée par un menu d'application
  • Prédiction de label : lors du scan d'un nouveau document, Paperwork tente de deviner les labels à appliquer en se basant sur les documents déjà scannés
  • Les pages ne sont plus affichées une à une. Il est désormais possible de faire défiler d'une page à l'autre.
  • Nouvelles options :
    • source du scan (plateau, bac d'alimentation, etc)
    • le nombre d'orientation de pages à essayer
    • l'OCR peut être complètement désactivée
  • Les scans sont affichés en temps réel
  • Et bien entendu, plein de nouveaux bugs … :-)

Il y aussi quelques nouvelles dépendances (utilisées pour la prédicition de labels) :

  • joblib
  • numpy
  • scipy
  • scikit-learn
  • scikit-image
Télécharger ce contenu au format Epub

Lire les commentaires

GNU Dr. Geo 14.10

Dimanche 21 Septembre

Dr. Geo est un studio de géométrie interactive et de programmation. À l'image des logiciels classiques de géométrie dynamique, il permet de créer des figures géométriques à la souris. En revanche, dans sa dimension programmation, une figure géométrique est décrite à l'aide d'une API sous la forme d'un code informatique.

Avec cette dernière fonctionnalité, des modèles informatiques ou des simulations sont créés dans un canevas de géométrie interactive, voir par exemple l'article en lien du Problème des 3 portes.
Enfin dernier point, Dr. Geo est auto-modifiable (modify-me-ready) : l'utilisateur peut modifier Dr. Geo depuis lui même et le redistribuer.

Télécharger ce contenu au format Epub

Lire les commentaires

Vindinium, un concours d'intelligence artificielle bien sympathique

Dimanche 21 Septembre

Vindinium est un concours d'intelligence avec des règles simples mais beaucoup de possibilités. D'après le site web :

Vindinium est un concours de programmation d'intelligence artificielle. Vous devez prendre le contrôle d'un héro légendaire en utilisant le langage de votre choix. Vous combattrez d'autres IA pendant un nombre de tours fixé à l'avance et le héro qui aura amassé le plus de pièces d'or gagnera.

Que vous soyez débutant(e) ou confirmé(e), c'est très amusant et très instructif. Rejoignez-nous !

Comme les bots sont hébergés sur votre machine et communiquent avec le serveur par HTTP, il est possible de développer en utilisant l'environnement de son choix. Cependant, pour gagner du temps, des kits de démarrage sont disponibles pour une foule de langages tels que Scala, Go, Haskell, Lua, Javascript et même Idris.

Les règles complètes sont disponibles là (en anglais) : http://vindinium.org/doc

Le code du serveur (licence MIT) ainsi que les kits de démarrage sont open-source et hébergés sur Github. Les participants communiquent soit sur freenode (IRC) sur le chaîne #vindinium, soit sur reddit (http://redit.com/r/vindinium).

Télécharger ce contenu au format Epub

Lire les commentaires

Prix Ig Nobel de 2011 à 2014

Dimanche 21 Septembre

Les prix Ig Nobel (jeu de mot sur ignoble et Nobel) 2014 ont été attribués le 18 septembre dernier. Rappelons qu’ils récompensent des publications ou des travaux scientifiques qui font des recherches inusuelles et imaginatives. Les vainqueurs ont tous fait des choses qui ont d’abord fait rire, puis réfléchir les gens.

Liste des prix 2014 :
  • nutrition : la caractérisation d'une bactérie liée à l'acide lactique, isolée depuis les selles d'un enfant, comme démarreur de culture probiotique pour saucisses fermentées ;
  • psychologie : les couche-tard plus égocentriques, manipulateurs et psychopathes que les couche-tôt ;
  • santé publique : les risques mentaux d'avoir un chat ;
  • médecine : le traitement des saignements de nez incontrôlés par la tranche de porc ;
  • science arctique : la réaction des rennes face à des humains déguisés en ours polaires ;
  • biologie : l'alignement nord-sud des chiens durant la défécation et la miction ;
  • physique : étude des frictions lorsque l'on marche sur une peau de banane ;
  • art : la différence de souffrance à regarder une mauvaise peinture par rapport à une belle peinture, lorsque l'on est pointé par un laser puissant ;
  • économie : la croissance de l'économie nationale en prenant en compte la prostitution, les ventes de drogues, la contrebande et autres transactions financières illégales ;
  • neuroscience : ce qui se passe dans votre cerveau lorsque vous voyez un toast avec un visage de Jésus dessus.
D’abord faire rire puis réfléchir les gens ?

On rappellera, comme l’avait fait Malicia en 2010, que « Andre Geim a été récompensé par le Prix Nobel de Physique 2010 (avec Konstantin Novoselov) après avoir eu une récompense Ig Nobel en 2000 (avec Sir Michael Berry), pour avoir fait léviter une grenouille avec des aimants ». On peut aussi citer le professeur Keller qui a reçu deux prix Ig Nobel en physique en 1999 et en 2012.

Historique

Ces prix sont évoqués depuis plusieurs années sur LinuxFr.org (2001, 2002, 2004, 2005, 2006, 2008, 2010, 2011).

Et puis, ça change des Prix FSF du logiciel libre (Awards for the Advancement of Free Software) (2001 et 2001, 2005, 2008, 2013, etc.), ou même des plus pessimistes Big Brother Awards (2000, 2001 et 2001, 2002, 2003, 2005, 2007, 2009, 2010, 2012 Belgique, 2013, etc.) ou Darwin Awards.

Et en bonus,

comme ça serait dommage d'avoir manqué des avancées scientifiques notables, voici le palmarès Ig Nobel depuis la dépêche précédente :

2013
  • médecine : l'écoute de l'opéra durant la transplantation cardiaque chez les souris ;
  • psychologie : la confirmation que les personnes saoules se pensent séduisantes ;
  • astronomie et biologie : la réorientation des coccinelles perdues par l'observation de la Voie lactée ;
  • ingénierie sûre : la capture et le parachutage automatique de pirates aériens en vol ;
  • physique : la possibilité pour certaines personnes de courir à la surface d'une mare, sur la Lune ;
  • chimie : la complexité inattendue des processus biochimiques entraînant les larmes lors de l'épluchage d'oignons ;
  • archéologie : la cuisson et l'ingurgitation sans mâcher d'une musaraigne et l'étude des selles les jours suivant ;
  • paix : le président du Belarus Alexander Lukashenko pour avoir rendu les applaudissements en public illégal et la police d'État Belarus pour avoir arrêté un manchot pour applaudissement ;
  • probabilité : plus une vache est restée longtemps couchée, plus il est probable qu'elle se lève, et ensuite il est impossible de savoir quand elle va se recoucher ;
  • santé publique : la chirurgie lors de l'épidémie d'amputations de pénis au Siam, sauf dans les cas d'ingurgitation par un canard ;
2012
  • psychologie : se pencher vers la gauche rend la Tour Eiffel plus petite ;
  • paix : l'entreprise russe SKN qui convertit des anciennes munitions en diamants ;
  • acoustique : le brouilleur de communication SpeechJammer, qui vous répète vos paroles avec un délai ;
  • neuroscience : les neuro-chercheurs peuvent mesurer l'activité du cerveau, même sur un saumon mort ;
  • chimie : la solution de l'énigme du pourquoi à Anderslöv en Suède certains cheveux sont devenus verts ;
  • littérature : la « Cour des comptes » (GAO) américaine pour la publication d'un rapport sur les rapports concernant les rapports recommandant l'écriture d'un rapport sur le rapport sur les rapports à propos des rapports ;
  • physique : le calcul de l'équilibre des forces qui s'applique sur une coupe queue de cheval ;
  • dynamique des fluides : la tasse de café durant la marche ;
  • anatomie : l'identification entre chimpanzés en voyant des photos de leur postérieur ;
  • médecine : comment aider les médecins à limiter l'explosion des patients durant la coloscopie.
2011
  • psychologie :
    • l'absence de preuve de la contagion du bâillement chez la tortue charbonnière à pattes rouges ;
    • pourquoi les gens soupirent dans la vie de tous les jours ;
  • chimie : la densité idéale de wasabi aéroporté pour réveiller les gens en cas de feu ou d'urgence ;
  • médecine : la démonstration que les gens prennent des décisions meilleures concernant certaines choses et d'autres plus mauvaises, lorsqu'elles sont pressées d'uriner ;
  • littérature : la théorie de la procrastination structurée ;
  • biologie : le rapprochement de certaines coccinelles avec certaines bouteilles de bières australiennes ;
  • physique : pourquoi les lanceurs de disque deviennent étourdis alors que les lanceurs de marteaux non ;
  • mathématiques : la prédiction de la fin du monde en 1954, 1982, 1990, 1992, 1994, 1999 et 2011 ;
  • paix : le maire de Vilnius pour le traitement du stationnement illégal de voitures de luxe par l'écrasement au véhicule blindé ;
  • santé publique : la conduite sur autoroute lors d'aveuglements.
Télécharger ce contenu au format Epub

Lire les commentaires

webOS se relance en LuneOS

Samedi 20 Septembre

webOS (avec un "web" minuscule et un "OS" majuscule), après avoir été créé par Palm, racheté par HP, revendu à LG, renommé en Open webOS, se nomme désormais LuneOS. Plus précisément, il s'agit du renommage du projet « WebOS Ports Open webOS ».

Le projet LuneOS

Pourquoi "Lune" ? C'est le français de LunaSysMgr, le system manager, qui présente les applications en cours sous forme de cartes que l'on peut jeter par un balayage vers le haut pour les tuer.

Cette première version, nommée "Affogato", vise principalement des personnes intéressées à participer au développement du système. En effet, après avoir effectué un gros travail de fond pour se baser sur des technologies plus récentes (Qt 5.2, systemd, Wayland, nouvelle interface LunaNext utilisant QtQuick…), l'accent est mis sur le développement d'applications.

Il faut noter cependant que le but n'est pas de concurrencer Android ou iOS, mais bien de faire revivre sur d'autres appareils mobiles cette expérience unique qu'était webOS. Le projet se construit autour du logiciel libre et de sa communauté, et son développement peut être suivi sur Github et sur IRC (#webos-ports sur Freenode).

Nouveautés depuis la dernière release (Alpha 2, en juin 2013)

Beaucoup de choses ont changé en un an. Voici une liste de quelques-uns de ces changements, donnant une idée du chemin accompli.

Améliorations du cœur du système
  • Réécriture avec QtQuick 2 et Qt 5.2 du compositeur de fenêtres : le gestionnaire de « cartes » LunaSysMgr est remplacé par LunaNext pour la partie graphique, tandis que la partie « infrastructure» de LunaSysMgr a été conservée pour éviter les réécritures inutiles de code.

  • Utilisation de la bibliothèque libhybris pour faciliter le portage de l'OS sur des appareils Android ; les éléments suivants d'Android sont actuellement réutilisés :

    • Système de téléphonie (rild)
    • Pilotes graphiques
  • Il est prévu d'utiliser plus d'éléments encore d'Android via libhybris :

    • Accélération matérielle vidéo et audio
    • Intégration des capteurs
    • Capture photo
  • Il n'est actuellement pas prévu de faire tourner des applications Android dans LuneOS (via par exemple ACL ou AndroidChroot)

  • Utilisation de systemd comme système d'init à la place d'Upstart, permettant de raccourcir le temps de démarrage et de mieux contrôler les différentes tâches de l'init

  • Pour les tests et le développement, une image compilée pour VirtualBox est disponible

  • Tout est construit par la communauté (Système de compilation OpenEmbedded)

Améliorations des applications
  • Preware 2 est maintenant fonctionnel et permet l'installation d'applications additionnelles
  • Corrections de bugs dans les applications Memo, Calculator et Email
  • Une nouvelle application PDF a été créée, basée sur l'implémentation de PDF.js de Mozilla
  • Un gestionnaire de fichiers basique est disponible
  • Un mécanisme de mise à jour a été mis en place pour permettre de passer facilement à une version plus récente de LuneOS
Comment l'essayer ?

Les Nexus 4 et HP TouchPad sont pleinement pris en charge, tandis que les Galaxy Nexus et Nexus 7 (2012 Wifi) sont pris en charge par Affogato, mais ne seront pas activement maintenus à l'avenir.

Les appareils éligibles à un portage sont ceux qui peuvent faire tourner Android 4.2.2, dont une partie des pilotes est réutilisée via la bibliothèque libhybris pour fournir la prise en charge du matériel, indispensable à son fonctionnement.

Pour ceux qui ne possèdent aucun de ces appareils mais qui souhaiteraient quand même essayer LuneOS, une image pour VirtualBox est également disponible.

La suite

LuneOS est un projet vaste, porté actuellement par un groupe assez réduit de développeurs. Sur de nombreux sujet, les contributions sont donc évidemment les bienvenus, notamment au niveau des applications.

Le projet prévoit maintenant de publier des versions de façon régulière (une version par mois environ), sous forme de rolling release.

Télécharger ce contenu au format Epub

Lire les commentaires

Le Capitole du Libre, jusqu'au dimanche 21 septembre pour proposer votre participation !

Samedi 20 Septembre

Vous le savez sûrement, le Capitole du Libre 2014 aura lieu les samedi 15 et dimanche 16 novembre prochains.

Le Capitole du Libre est l'événement du Libre à Toulouse ; il accueille cette année notamment Adrienne Charmet de La Quadrature du Net, Lionel Maurel juriste et bibliothécaire, et Benjamin Bayart de FFDN. Il y aura également Pierre Ficheux d'Open Wide, auteur du livre Linux Embarqué et Christophe Blaess, ingénieur indépendant qui aide régulièrement à la conception de systèmes Linux embarqués ou nécessitant des contraintes temps réel fortes.

Des conférences et ateliers sont proposés au travers de diverses thématiques telles que les enjeux du Libre, le Multimédia, Internet Libre, la Bureautique, l'Embarqué et DevOps.

Le Capitole du Libre accueille également deux événements hébergés :

  • la communauté LibreOffice pour un Hackfest ;
  • la communauté KDE au travers d'Akademy-FR.

Il ne reste que quelques jours pour proposer une conférence ou un atelier à cet événement. Alors n'hésitez pas.

Thématiques de conférences et ateliers

Cette année les thèmes abordés seront :

  • Grand Public et Enjeux du Libre (découverte, éducation, juridique, biens communs…) ;
  • Technique (système, développement, réseau…) ;
  • Multimédia & Bureautique (graphisme, vidéo, son, ainsi que les logiciels de bureau) ;
  • Internet Libre (outils libre pour l'auto-hébergement de site, de mail…) ;
  • Open Hardware et Embarqué (Arduino, Raspberry Pi…) ;
  • DevOps (déploiement et intégration automatisée).

Les propositions sont encore ouvertes jusqu'au 21 septembre à minuit. Nous remercions celles et ceux qui ont déjà proposé leur participation, ils seront notifiés de notre décision la semaine du 22 septembre au plus tard.

Événements hébergés LibreOffice Hackfest

Dans un Hackfest, les contributeurs se réunissent afin de coordonner dans un temps donné et dans une atmosphère détendue, le développement du produit et faire avancer le projet.

Akademy-FR

Événement français de la communauté KDE, l'objectif est de permettre aux contributeurs francophones de se retrouver, mais également de promouvoir les produits de la communauté à l'échelle française.

Pour les novices, c'est l'occasion rêvée de découvrir cet environnement libre et complet. Pour les personnes souhaitant contribuer, elles pourront rencontrer des contributeurs d'horizons divers qui les aideront à se lancer dans le grand bain KDE. Vous retrouverez donc à la fois des conférences orientées contribution mais également grand public.

Télécharger ce contenu au format Epub

Lire les commentaires

Atelier framebuffer à Bordeaux le 29 septembre 2014

Vendredi 19 Septembre

Le lundi 29 septembre 2014 se tiendra le deuxième atelier CLI dont le thème porte sur le framebuffer.

Le but de ces ateliers, proposés par des membres d’associations et collectifs Bordelais, est de progresser ensemble autour d'un outil ou d'un thème, toujours en ligne de commande. Les ateliers de type spécial débutants reprendront le 13 octobre.

Cet atelier se déroulera dans les locaux du L@BX, à la fabrique POLA (Rue Marc Sangnier, 33130 Bègles).

Télécharger ce contenu au format Epub

Lire les commentaires

Cartopartie OpenStreetMap pour la Fête du Parc du Verdon - dimanche 28 septembre 2014 à La Verdière

Vendredi 19 Septembre

APITUX vous emmène à la découverte de la cartographie libre OpenStreetMap. Venez dessiner avec nous le plan de La Verdière, ses rues et ses chemins, ses places et ses fontaines, ses points d'intérêt et ses services. Un atelier proposé dans le cadre de la Fête du Parc du Verdon, dimanche 28 septembre 2014 de 14h à 17h. Inscription gratuite au 04 92 74 68 00.

OpenStreetMap est une base de données géographique construite de manière collaborative et publiée sous licence libre. Le projet reprend les principes qui ont fait le succès de Wikipédia. La contribution est ouverte à tous, chacun peut cartographier sa commune, son quartier, sa randonnée préférée. La carte du monde se dessine progressivement par l'assemblage de toutes les contributions.

Le Parc naturel régional du Verdon est un territoire de projets qui regroupe 46 communes des Alpes-de-Haute-Provence et du Var. Il compte plus de 30 000 habitants pour une surface de 180 000 hectares. Les missions, les objectifs, l'organisation du Parc font l'objet d'une charte qui fédère les collectivités adhérentes et l'État autour d'un projet concerté de développement durable conclu pour une période de 12 ans.

APITUX est spécialisé dans la formation et le conseil en informatique libre. Il intervient en tant qu'expert auprès des collectivités sur les logiciels libres adaptés à leurs métiers, la mise en place et l'animation de leurs démarches opendata et la cartographie collaborative avec OpenStreetMap.

Télécharger ce contenu au format Epub

Lire les commentaires

Aperi’tic logiciel libre en milieu professionnel - jeudi 25 septembre 2014 à Gap

Vendredi 19 Septembre

Un Aperi’tic consacré au logiciel libre en milieu professionnel, jeudi 25 septembre 2014 de 10h à 12h à la CCI 05, 16 rue Carnot à Gap.

Né au MIT en 1983, le logiciel libre est aujourd'hui sorti des laboratoires de recherche pour s'établir très largement dans tous les domaines de l'informatique. On trouve des logiciels libres dans les « Box » qui gèrent nos connexions Internet, sur nos ordinateurs personnels et nos postes de travail mais aussi dans nos téléphones et autres objets technologiques qui peuplent notre quotidien. L'histoire du logiciel libre est intimement liée à celle du réseau Internet. Saviez-vous que la majorité des serveurs web fonctionnent avec des logiciels libres ?

Comment fonctionnent les licences de ces logiciels que chacun peut utiliser, copier, étudier et modifier librement en toute légalité ? Quels sont les modèles économiques du logiciel libre ? Quels sont les enjeux dans le cadre d'une utilisation professionnelle ?

D'un point de vue pratique, quels sont les logiciels libres utilisables ? Pour la bureautique ? Pour l'internet et le multimédia ? Pour le travail collaboratif et le partage de données en réseau ? Quel est l'état de l'art en matière de logiciels libres pour la gestion d'entreprise ? Comment s'y prendre pour tirer le meilleur parti de ces solutions ? Telles sont les questions auxquelles répondra Jean-Christophe Becquet, directeur d'APITUX et vice-président de l'April, expert du logiciel libre en milieu professionnel depuis 1997.

Télécharger ce contenu au format Epub

Lire les commentaires

Formation, Certification et Technologie Libre

Vendredi 19 Septembre

L'Institut de Technologie Libre (ITL) organise sur Perpignan et (bientôt) sur Montpellier une formation menant au Titre Professionnel Concepteur(trice) Développeur(se) Informatique de niveau 2 délivré par le Ministère du Travail, de l'Emploi, de la Formation Professionnelle et du Dialogue social.

L'ITL est agréé par la Direction Régionale des Entreprises, de la concurrence, de la Consommation du Travail et de l'Emploi (Languedoc-Roussillon), pour organiser des sessions de validation pour ce Titre Professionnel.

Dans le cadre de cette formation, l'ITL utilise exclusivement des logiciels libres (e.g. PostgreSQL) et des standards ouverts (e.g. HTML5).

Le programme de formation couvre les trois Certificats de Compétences Professionnelles composant le Titre Professionnel :

  • développer des composants d'interface ;
  • développer la persistance des données ;
  • développer une application n-tiers.

La prochaine session de formation démarre le 21/01/2015 et finit le 19/07/2015, tandis que celle de validation démarre le 27/07/2015 pour une durée de cinq jours.

Comme l'ITL accueille des candidats non informaticiens (en reconversion professionnelle), une préparation (facultative) est organisée. La prochaine session de préparation démarre le 21/10/2014 et finit le 20/01/2015.

L'ITL organise également une session de validation blanche (facultative), laquelle démarre le 20/07/2015 et dure cinq jours. De plus amples informations, un formulaire de demande d'information et un formulaire de candidature figurent sur le site de l'ITL.

Télécharger ce contenu au format Epub

Lire les commentaires

Sortie de Odoo 8 (anciennement OpenERP)

Jeudi 18 Septembre

Odoo, la suite libre d'applications de gestion, vient de sortir sa version 8. Dans les nouvelles fonctionnalités, on retrouve un point de vente fonctionnant aussi sur iPad et Android, un outil de création de site internet, une boutique en ligne, un moteur de rapports statistiques, un système de blogue (clone open source de Medium).

Quelques applications marketing ont également été publiées : envois de mails, une gestion d'événements, un outil de création de sondages et un clone de Stackoverflow (Q&A)

Le cadriciel Python a été totalement réécrit permettant d'être plus efficace pour créer des modules personnalisés.

Toutes les applications de gestion d'Odoo ont été complétées d'une interface frontend (site web). Quelques exemples de fonctionnalités qui sont apparues grâce à la partie web :

  • ventes : une boutique en ligne ;
  • événement : un site web de publication d'événements et vente de tickets ;
  • recrutements : publication des offres d'emploi et formulaires pour postuler ;
  • devis : version en ligne des devis construite sur base de modèles ;
  • composition graphique d'e-mails pour l'envoi massif ;
  • gestion de la relation client : formulaires de contact.

Cette version est le résultat de 18 mois de recherche et développement avec une collaboration efficace entre l'éditeur et la communauté. Une bonne partie des modules communautaires ont d'ailleurs déjà été portés à la nouvelle API.

Télécharger ce contenu au format Epub

Lire les commentaires

Numba 1.4

Jeudi 18 Septembre

Numba, l'optimiseur Python spécialisé dans le calcul numérique, est sorti en version 1.4. Numba est un compilateur juste-à-temps (JIT) pour Python, basé sur LLVM, permettant d'optimiser du code de calcul numérique, notamment basé sur Numpy. Il est compatible avec CPython 2.6, 2.7, 3.3 et 3.4. Des paquets binaires sont disponibles via Anaconda, la distribution de paquets binaires dédiée au calcul scientifique maintenue par Continuum Analytics, l'entreprise qui développe Numba.

Sommaire Qu'est-ce que Numba ?

Numba est un compilateur juste à temps pour CPython spécialisé dans l'optimisation de code scientifique.

… CPython ?

CPython est l'implémentation par défaut (ou "de référence", en langage politiquement correct) de Python. Les autres implémentations s'appellent PyPy, Jython, etc.

… Spécialisé ?

Numba ne prétend pas être capable d'optimiser tous les types de code Python, ni même toutes les constructions du langage (même si cela n'est pas exclu comme objectif à long terme). Numba est capable d'optimiser les calculs numériques et scientifiques impliquant des entiers, des flottants, des complexes ; il est capable de reconnaître certaines types de données bien connus, comme les tableaux Numpy.

La liste des fonctionnalités optimisables grandit évidemment de version en version, par exemple la version 0.14 supporte désormais les types numpy.datetime64 et numpy.timedelta64, qui permettent de faire des calculs sur des séries temporelles.

… Juste à temps ?

Numba fonctionne lors de l'exécution de votre code Python. Il suffit d'apposer le décorateur "@numba.jit" à une fonction pour la faire optimiser par Numba (certains aiment prier pour qu'il arrive à l'optimiser). Il n'y a pas de phase de compilation séparée, ni de ligne de commande à lancer.

Plateformes supportées

Numba utilise LLVM, ce qui permet une portabilité relativement aisée. Actuellement, les systèmes sous Linux, OS X et Windows sont supportés. Côté matériel, x86, x86-64 sont supportés et il y a également un backend CUDA (avec des limitations).

Un exemple

Partons de notre ami l'ensemble de Mandelbrot. Pour cela, posons la fonction suivante dans un fichier nommé mandel.py :

import numpy def mandelbrot(width, height): x_min, x_max = -2.0, 1.0 y_min, y_max = -1.0, 1.0 arr = numpy.zeros((height, width), dtype=int) xs = numpy.linspace(x_min, x_max, num=width) ys = numpy.linspace(y_min, y_max, num=height) max_iters = 20 for idx_x, x in enumerate(xs): for idx_y, y in enumerate(ys): c = complex(x, y) z = 0.0j for i in range(max_iters): z = z * z + c if z.real * z.real + z.imag * z.imag >= 4: # Hors de l'ensemble break else: # Dans l'ensemble arr[idx_y, idx_x] = 1 return arr

Cette fonction renvoie un tableau d'entiers Numpy indiquant si un point fait partie de l'ensemble de Mandelbrot (1) ou non (0).

Maintenant, lançons un Python depuis le même répertoire :

>>> import mandel >>> print(mandel.mandelbrot(20, 15)) [[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]

Ouf, ça ressemble :-) Maintenant compilons cette même fonction avec Numba :

>>> from numba import jit >>> opt = jit(mandel.mandelbrot) >>> print(opt(20, 15)) [[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]

Et lançons un benchmark d'une scientificité rigoureuse sur un tableau de 200x200 :

>>> import timeit >>> timeit.timeit("mandel.mandelbrot(200, 200)", setup="import mandel", number=1) 0.20483311700081686 >>> timeit.timeit("opt(200, 200)", setup="from __main__ import opt", number=1) 0.003343598000355996

Sur ce cas d'usage d'une grande importance, Numba est ainsi 60 fois plus rapide que l'interpréteur CPython !

Principe de fonctionnement

Numba est un optimiseur fonction par fonction. Il part de la fonction que vous décorez avec numba.jit et lance une inférence de types pour essayer d'assigner un type précis à chaque variable et valeur intermédiaire dans la fonction. Pour cela, il utilise des règles dédiées à chaque opérateur, fonction standard, etc.

Pour définir les types de départ du processus d'inférence, il y a en réalité deux possibilités :

  • Dans l'utilisation de base de numba.jit, l'utilisateur ne passe pas de paramètres : c'est alors lors de l'appel de la fonction décorée que les types des arguments sont utilisés pour lancer le processus d'inférence (la compilation est ici paresseuse).
  • Dans une utilisation avancée, l'utilisateur peut décrire explicitement les types à l'entrée de la fonction (cela lui permet, par exemple, de choisir des flottants simple précision plutôt que double précision) ; dans ce cas, la compilation a lieu immédiatement.

L'inférence de type est l'étage fondamental qui permet ensuite de produire du code travaillant sur des types bas niveau, plutôt qu'au niveau du modèle objet de Python, qui est beaucoup plus difficile à optimiser. Bien entendu, la chaîne de traitement (pipeline) est constituée de multiples étages :

  1. décodage du bytecode CPython
  2. construction d'un graphe de flot de contrôle (CFG)
  3. génération d'une représentation intermédiaire (IR) spécifique à Numba
  4. inférence de types, produisant une détermination du type de chaque variable manipulée par la fonction
  5. génération de code LLVM correspondant à l'exécution de l'IR sur les types déterminés précédemment
  6. appel à LLVM pour la génération du code machine, et encapsulation du tout dans un objet dédié (wrapper) qui lance le code machine quand il est appelé

Grâce à LLVM, Numba n'a pas à se charger des optimisations bas niveau (propagation de constantes, vectorisation SIMD, etc.) et peut se concentrer sur les traitements spécifiques au langage Python.

Pour une présentation plus détaillée, il convient de lire la documentation (en anglais) : architecture de Numba.

Limitations

À l'heure actuelle, plutôt que de se lancer dans une liste interminable de limitations, il est plus raisonnable de lister ce qui est supporté.

Types supportés
  • les scalaires numériques, que ce soit les types Python (int, float, complex…) ou NumPy (numpy.complex64, etc.)
  • les booléens
  • les dates et intervalles de temps NumPy (numpy.datetime64 et numpy.timedelta64)—mais pas les types standard datetime.datetime et datetime.timedelta
  • les tuples des types ci-dessus
  • les tableaux NumPy des types ci-dessus
Constructions supportées

Numba supporte la plupart des constructions syntaxiques du langage, sauf le traitement des exceptions (try... except, etc.), les gestionnaires de contexte (with), les générateurs (yield) et quelques autres détails.

Fonctions supportées

Numba supporte une grande partie des opérateurs numériques, des fonctions standard (notamment le module math), et certaines fonctions de NumPy. Il est également capable d'optimiser les appels à des fonctions externes via ctypes ou cffi.

Différences sémantiques

Le caractère volontaire (opt-in) de la compilation permet à Numba de présenter des différences sémantiques par rapport au langage Python. Je ne les listerai pas ici, mais une différence évidente a trait aux entiers : les entiers de Python sont de largeur arbitraire, ceux de Numba sont de largeur fixe (déterminée à l'inférence de types, ou forcée par l'utilisateur). Un dépassement lors d'opérations mathématiques entraîne simplement une troncation.

Notons qu'une grande partie de ces différences reflète en réalité le comportement de NumPy (dont les entiers sont aussi à largeur fixe, par exemple).

Numba et l'écosystème Python

Le fait que Numba fonctionne au-dessus de CPython lui permet de s'intégrer facilement à l'écosystème existant. Comme on l'aura compris, l'intégration avec NumPy est également une fonctionnalité de premier plan. D'une manière générale, la stratégie de Continuum (cf. ci-dessous) est de maximiser les possibilités d'interaction entre les multiples briques de calcul scientifique disponibles pour Python.

Statut du projet

Numba est supporté par Continuum Analytics, qui paye à cet effet plusieurs développeurs (dont l'auteur de cette dépêche). Le développement est en partie financé par des clients et des fonds de recherche américains. Nous recevons également des contributions extérieures. Bien entendu, le projet est libre (licence de type MIT).

Contribuer

Numba est un projet jeune auquel manquent de nombreuses fonctionnalités ; il y a donc beaucoup d'opportunités de contribution. Le processus est détaillé dans la documentation. Les compétences nécessaires dépendent de ce à quoi vous vous intéressez :-) La majeure partie du code de Numba est en Python ; il y a quelques parties en C, mais on les évite assez facilement. Nul besoin d'être en expert en NumPy ou en LLVM pour commencer (je ne les connaissais presque pas).

Au débotté, voici quelques directions possibles de contribution, par ordre de difficulté :

  • améliorer la documentation
  • améliorer le retour utilisateur, qui est actuellement assez fruste (messages d'erreur, informations sur la fonction compilée)
  • corriger des bugs (!)
  • ajouter le support de nouvelles fonctions (de la bibliothèque standard ou de NumPy)
  • ajouter le support de nouveaux types
  • ajouter le support de nouvelles constructions (comme la gestion des exceptions ou les générateurs)
Télécharger ce contenu au format Epub

Lire les commentaires

Pages