Flash informatique 2010 - no 9

Page 1

9

23.11.2010

http://dit.epfl.ch

Deuxième prix

p/a EPFL - Domaine IT - CP 121 - CH 1015 Lausanne 15 - tél. +41 21 69 322 11

La Souris d'Or 2010

Analyse

page 12

Scala

Actualités Lift11

5

Forum IT d'automne

15 Gilles.Dubochet@epfl.ch, EPFL – Faculté IC – Laboratoire des méthodes de programmation, assistant

FlashiPhone – Symétrie cristalline I. Orlov, G. Chapuis & S. Burlot

12

Secure-IT votre affaire P. Saladino

24

Analyse Scala G. Dubochet

Scala is a programming language developed at EPFL. Today, it is amongst the 50 most popular languages, attracting over 100,000 visitors per month to its website. To explain its success: flawless compatibility with Java and superb scalability — thanks to programming language research.

1

HDL_Draw, outil de conception de circuits numériques intégrés J. Songo Priso

16

À votre service Politique de support des OS GNU/Linux à l’EPFL B. Barras

2

Qui suis-je? L. Venries

8

Le DIT vous forme ! l'équipe des cours

15

Scala est un langage de programmation développé à l’EPFL, qui se trouve aujourd’hui parmi les 50 langages les plus populaires. Son site Web reçoit plus de 100’000 visites par mois. Les raisons de son succès? sa parfaite compatibilité avec Java et son extrême polyvalence — grâce à l’application de la recherche sur les langages.

Comment faire? Itinérance de profils GNU/Linux à 3

l’EPFL S. Bancal Faites bonne image ! F. Roulet

9

Récupération de données avec un live CD 100% libre P. U. Peña Dall’Orso

20

Mot-croisé: FILTRE M. Ojanguren, 21

M. Ouwehand & E. Rosales Installation de Linux avec PXE et

22

Grub2 V. Rezzonico

Prochaines parutions No Délai de rédaction

Parution

10

02.12.10

21.12.10

1

06.01.11

25.01.11

2

03.02.11

22.02.11

tout public public averti expert

gage pratique, par exemple en assurant une compatibilité parfaite avec l’ensemble des bibliothèques et outils Java existants. Ce choix — à la pointe des connaissances, mais sans rejeter ce qui existe — a permis à Scala de gagner une forte popularité, particulièrement depuis deux ans. Ainsi, le langage de l’EPFL est un prétendant crédible pour devenir un langage de premier plan. Aujourd’hui, il est déjà parmi les 50 langages les plus populaires selon l’index TIOBE 1; il est utilisé par de grandes entreprises dans le Web social (Twitter, LinkedIn, FourSquare), dans l’édition (The Guardian, Nature Publishing), dans les jeux ou dans la finance; presque 20 livres de tous niveaux sur Scala sont disponibles ou annoncés; de plus en plus d’universités donnent des cours de Scala à leurs étudiants. Mais qu’est-ce qui explique ce succès?

Une question de niche La compétition pour devenir le langage de programmation le plus populaire est intense. Mais l’EPFL est bien placée dans cette course grâce à Scala, développé depuis 2001 au laboratoire des méthodes de programmation du professeur Martin Odersky. Il faut dire que, de tous les prétendants, Scala est l’un des plus évolués grâce à son ancrage dans la recherche. Toutefois, il a dès le début été conçu comme un lan1

www.tiobe.com/content/paperinfo/tpci/

Pour commencer à comprendre cette réussite, il faut ausculter les tendances actuelles de la programmation. Avec l’avènement de Java, au début des années 2000, on avait pu croire à une fin de l’histoire des langages. À cette époque, Java disposait d’une popularité de presque 30 % (index TIOBE), 10 points au dessus de son plus proche rival. De plus en plus d’universités, dont la .. /.. Suite page 6


À votre service

Politique de support des OS GNU/Linux à l’EPFL Benjamin.Barras@epfl.ch, EPFL – Domaine IT , responsable de la plate-forme Linux à l’EPFL

Support GNU/Linux

donné le prix important par abonnement demandé par Canonical pour le support Ubuntu et le nombre croissant et important de problèmes survenant avec ce système d’exploitation, ces derniers seront signalés au team Unix qui se chargera de les résoudre (avec l’aide de Canonical si besoin). Le support payant de Canonical et RedHat ne garantit pas une solution à un problème posé.

Le team Unix du DIT-EPFL supporte les systèmes d’exploitation GNU/Linux suivants: ❚ Red Hat Enterprise Linux ❚ Fedora ❚ Ubuntu. Seules les versions qui ne sont pas en fin de vie sont supportées. Cela peut s’étendre jusqu’à 7 ans pour RedHat, pour Ubuntu les versions LTS 1 workstation/serveur seront respectivement de 3 ans/5 ans et de 18 mois pour les versions non LTS, Fedora a un cycle de vie de 13 mois environ. Toutes les distributions citées cidessus sont disponibles sur le site Linux de l’EPFL 2.

Recommandations Pour tout ce qui concerne les serveurs, le team Unix recommande RedHat. Pour les stations de travail, Fedora et Ubuntu seront très bien adaptés pour ces besoins. Il n’est pas recommandé de prendre Ubuntu pour des serveurs qui doivent assurer un service critique. Le team Unix, (linux.support@ epfl.ch) est à disposition pour toutes vos questions concernant le choix d’une distribution. Pour plus d'informations: linux.epfl.ch. ■

Principe Le principe sera toujours le même, les abonnés Red Hat bénéficient du support et des mises à jour pour toutes les versions pendant la durée de vie de leur système d’exploitation. Il n’y a pas d’abonnement pour Fedora, et seule la communauté libre de Fedora peut intervenir en cas de problème sérieux. Étant

Distribution

Serveur

Workstation

Disponible

Recommandé

Disponible

Recommandé

Oui

Oui

Oui

Oui

Oui

Oui

RedHat Fedora Ubuntu

N/A

4

Oui

Non Non

5

Oui

Oui

5

Licences

Support payant 3

Oui

Oui

Non

Non

Non

Oui

1

Long Term Support

2

linux.epfl.ch

3

Le DIT a acheté un certain nombre de licences avec support Not Applicable: Fedora ne fait pas de distinction entre serveur et workstation, il n’y a qu’une seule distribution. Attention aux limitations importantes concernant le déployement massif ou automatisé via kickstart: https://help.ubuntu.com/10.04/installationguide/i386/automatic-install.html#kickstart/ ou debian-installer: https://help.ubuntu.com/10.04/installation-guide/i386/preseed-intro.html#preseed-li-

4 5

mitations

Impressum Les articles ne reflètent que l’opinion de leurs auteurs. Toute reproduction, même partielle, n’est autorisée qu’avec l’accord de la rédaction et des auteurs. Abonnement à la version électronique du FI en envoyant un courrier à: fi-subscribe@listes.epfl.ch

2 flash informatique

Rédacteur en chef: Jacqueline Dousson, fi@epfl.ch Mise en page & graphisme: Appoline Raposo de Barbosa Comité de rédaction: Aristide Boisseau, Paulo de Jesus, Patrice Fumasoli, Jean-Damien Humair, Laurent Kling, Julia Paolini, Vittoria Rezzonico, François Roulet,

Christophe Salzmann, Predrag Viceic & Jacques Virchaux Impression: Atelier de Reprographie EPFL Tirage: 4000 exemplaires Adresse Web: dit.epfl.ch/FI-spip Adresse: Domaine IT EPFL CP 121, CH-1015 Lausanne 15 Téléphone: +4121 69 32246 & 32247


Comment faire ?

Itinérance de préférences GNU/Linux à l’EPFL Samuel.Bancal@epfl.ch, EPFL - ENAC-IT, concepteur et développeur de epfl_roaming

How to make application and desktop settings roam on the GNU/Linux self-service workstations at EPFL for a selected set of applications . This article describes the tool (named epfl_roaming) developped by both ENAC and I&C which fulfills these needs. Cet article décrit la technique (dénommée epfl_roaming) développée par les facultés ENAC et I&C pour conserver et rendre itinérantes les préférences utilisateur d’un ensemble choisi d’applications sur les postes GNU/Linux en libre service.

Préambule

Stockage centralisé, approche 1 Une première possibilité consiste à monter directement l’espace personnel sur le home directory , concrètement sur le point de montage /home/username . C’est une pratique très courante.

avantages ❚ ❚

Facile à mettre en place, avec l’outil autofs par exemple. Les préférences des applications se trouvent automatiquement sur le serveur de fichiers, elles sont donc itinérantes par défaut.

inconvénients ❚ ❚

Pas possible de choisir quelles préférences sont conservées, toutes le sont. Dans le cas où plusieurs environnements vont accéder à ce même répertoire comme home directory, les préférences applicatives vont être mélangées. Prenons à titre d’exemple concret deux salles, gérées indépendamment, qui mettent chacune à disposition une version différente de Firefox. Le passage de la version plus ancienne à la plus récente se fera par une migration à chaud des préférences utilisateur, tandis que le passage inverse débouchera sur une incompréhension complète ou partielle des fichiers de préférences. Dans la version de GNOME d’aujourd’hui, un dossier particulier $HOME/.gvfs est utilisé pour effectuer des montages dynamiques (stockage externe USB/FireWire ou lecteurs réseau), ceci sans être obligé de passer par le fichier classique /etc/ fstab et d’utiliser le compte root. Pour que cette fonctionnalité soit active, il est nécessaire que ce dossier soit local (l’explication sort de l’objectif de cet article).

Lorsque l’on considère le déploiement de salles de PC mises à disposition d’un ensemble d’utilisateurs, plusieurs sujets doivent être abordés. Cela commence par l’identification de l’utilisateur, son authentification, puis son accès à des ressources telles que réseau, stockage, impression... Arrivent ensuite le choix des applications à installer et leur paramétrage. Finalement vient la question qui nous intéresse ici: comment conserver, pour chaque utilisateur, ses préférences d’applications et/ou de bureau ? Ce dernier point pourrait tout à fait être éludé en appliquant lors de chaque nouvelle session des préférences par défaut. L’utilisateur se retrouve alors systématiquement dans un environnement neuf.

Les préférences applicatives

Stockage centralisé, approche 2

Toute application souhaitant conserver une information pour un utilisateur peut le faire en suivant deux standards sur GNU/Linux. ❚ Créer un fichier ou un dossier caché dans le home de l’utilisateur. Exemple pour le client ssh: $HOME/.ssh/ . ❚ Dans l’environnement de bureau GNOME, créer une ou plusieurs clefs gconf dans une branche dédiée à cette application. Exemple pour shotwell: /apps/shotwell/preferences/editing/external_raw_editor .

L’espace de stockage Avant de régler la question des préférences à sauver, il est nécessaire de résoudre celle plus générale du stockage (qui inclut aussi les données utilisateur). En considérant un espace de stockage centralisé, tel qu’offert par le nouveau service de fichiers EPFL files[0-9].epfl.ch , deux possibilités s’ouvrent à nous:

Une seconde possibilité consiste à monter l’espace dans un dossier enfant du home directory, concrètement: /home/username est local, et /home/username/myfiles est le point de montage.

avantages/inconvénients ❚ ❚

Montage géré par des scripts maison -> davantage de souplesse. Pas de préférences itinérantes par défaut -> mécanisme à implémenter.

Le choix Les trois inconvénients de la première approche étant bloquants dans notre cas, l’utilisation du stockage centralisé des données utilisateur va s’appuyer sur la seconde.

23 NOVEMBRE 2010 - N°9

3


Itinérance de préférences GNU/Linux à l’EPFL

CENTRAL

LOCAL

files[0..9].epfl.ch/data/username

/home/username ... .bashrc .mozilla/

Desktop

My Documents

myfiles

epfl_roaming

My Documents

enacit it1 ... .bashrc .mozilla/

Légende: Montage (CIFS / NFS / ...) Lien symbolique

L’itinérance Des fichiers et dossiers Pour rendre une application itinérante, il suffit de placer ses fichiers/dossiers de préférence dans l’espace de stockage centralisé de l’utilisateur. Ceux-ci sont rendus accessibles à leur emplacement par défaut grâce à des liens symboliques, tel que présenté par la figure ci-dessus.

cas particulier: la condition initiale Par défaut un utilisateur n’a de préférences que pour les applications qu’il a déjà utilisées. Pour cette raison, lors du login, il se peut que certains fichiers/dossiers itinérants n’existent pas encore. La façon la plus souple est alors de ne rien faire pour ces éléments lors du login. S’ils sont créés durant la session, la procédure de logout les placera pour qu’ils soient retrouvés lors de la prochaine session.

doit être choisi en fonction de l’entité de gestion de ces salles. Par exemple, pour les salle ENAC-SSIE gérées par le groupe ENAC-IT1, nous les placerons dans un dossier créé à cet effet epfl_roaming/enacit/it1/ . Dans le cas où un couplage fort se fait entre plusieurs gestionnaires de salles sur la version déployée d’une application et ses paramétrages, il est alors possible d’utiliser un dossier plus global, tel que epfl_roaming/global .

La procédure opérations lors du login ❚ ❚ ❚ ❚

Création du home directory $HOME . Montage de $HOME/myfiles . Pour tous les éléments définis et déjà existants: création des liens symboliques. Restauration des clefs gconf utilisateur précédemment sauvées .

Des clefs gconf

opérations lors du logout

Les clefs gconf peuvent être vues comme un ensemble de fichiers placés dans une arborescence dédiée. Il n’est cependant pas possible de les traiter comme de simples fichiers/dossiers. Exemple concret avec la clef la plus connue pour GNOME, /desktop/ gnome/background/picture_filename . Sa valeur est stockée dans le fichier %gconf.xml du dossier $HOME/.gconf/desktop/ gnome/background/ . Dans le cas où nous souhaitons conserver uniquement cette clef, nous aurons deux problèmes: ❚ Ce fichier %gconf.xml contient l’information d’autres clefs gconf que l’on ne souhaite pas conserver. ❚ Chaque dossier contenant une partie de la base de données gconf doit contenir un fichier %gconf.xml . Il ne suffit donc pas de restaurer le fichier en bout d’arborescence. La solution consiste alors à traiter les clefs gconf indépendamment des fichiers/dossiers de préférences en faisant un export des clefs désirées lors du logout et de les restaurer lors du login.

Itinérant, mais cohérent L’EPFL ayant plusieurs gestionnaires de salles (dans plusieurs facultés), l’emplacement pour stocker les préférences itinérantes

4 flash informatique

❚ ❚ ❚

Pour tous les éléments définis, inexistants lors du login: copie des préférences locales vers le stockage centralisé. Export des clefs gconf utilisateur désirées. Démontage de $HOME/myfiles . Suppression de $HOME (il ne reste ainsi plus aucune trace locale, tout ce qui reste est itinérant).

Le fichier de configuration epfl_roaming.conf ❚

Les lignes 2 et 5 décrivent des instructions de montage. Les paramètres en majuscules entourés de soulignés (_USERNAME_, _SCIPER_, ...) sont remplacés à la volée par les attributs correspondants de l’utilisateur. Ces 2 exemples couvrent les 2 protocoles les plus probables pour cette application. En production, il faudra en choisir un seul. Les lignes 8 à 10 décrivent des liens symboliques. Le premier argument donne la cible du lien, le second l’emplacement où créer ce lien (les 2 relatifs au home directory). Le + de la ligne 8 force la création de la cible dans le cas où celle-ci n’existait pas encore.


Itinérance de préférences GNU/Linux à l’EPFL 1. # Montage possible en NFSv4: 2. mount -t nfs4 files_SCIPER_.epfl.ch:/dit-files_SCIPER_-t1/data/_USERNAME_ /home/_USERNAME_/myfiles -o proto=tcp,sec=krb5,port=2049 3. 4. # Montage possible en CIFS: 5. mount -t cifs //files_SCIPER_.epfl.ch/data/_USERNAME_ /home/_USERNAME_/myfiles -o user=_USERNAME_,uid=_USERNAME_,gid=_GROUP_,file_mode=0770,dir_mode=0770, rw,nobrl,noserverino,iocharset=utf8 6. 7. # Liens symboliques: 8. link "+myfiles/My Documents/" "Desktop/My Documents/" 9. link "myfiles/epfl_roaming/enacit/it1/.bashrc" ".bashrc" 10. link "myfiles/epfl_roaming/enacit/it1/.mozilla/" ".mozilla/"

La surprise de parcours

Un développement générique EPFL

Les séquences de login et de logout sont les éléments-clefs de ce projet. Durant les phases de tests, il était crucial de vérifier que le transfert des données se faisait entièrement avant que l’accès à certaines ressources ne soit coupé. La plus grande surprise a été de constater qu’une extinction de la machine shutdown se faisait sans suivre la procédure d’appels standards de logout. Il s’est avéré que le shutdown et le reboot sont considérés comme des opérations système qui ne déclenchent pas la procédure de déconnexion du compte utilisateur (à travers les PAM ). C’est un raccourci qui peut passer inaperçu dans la majorité des cas, mais qui est handicapant pour ce projet. La solution a été de définir un service système qui, lors de l’extinction de la machine, fait le tour de tous les utilisateurs encore connectés et initie le travail de logout au sens epfl_roaming.

Dans le but que la solution soit utilisable dans d’autres contextes que celui de leurs auteurs, elle est ajustable grâce au fichier de configuration (tel que l'exemple). Ainsi avec le même outil, deux salles distinctes peuvent avoir un comportement qui leur est propre. La solution présentée ici est en production depuis le semestre d’automne 2010 dans les salles GNU/Linux en ENAC-SSIE et I&C, excepté pour la partie gérant les clefs gconf qui devrait le devenir tout prochainement. Les distributions utilisées sont Ubuntu 10.04LTS et Ubuntu 10.10. Tout administrateur intéressé par ce mécanisme est encouragé à contacter l’auteur. ■

GLOSSAIRE

autofs: outil open-source permettant de faire des montages automatiques lorsque les ressources sont accédées. (plus d’info: help.ubuntu.com/community/ Autofs) gconf: base de données GNOME utilisée pour stocker/appliquer des paramètres d’applications. Les informations sont classées dans une arborescence et enregistrées sous forme de clef-valeur.

Chaque clef possède en outre des attributs tels que son propriétaire et sa description (plus d’info: en.wikipedia.org/ wiki/GConf). Home directory: répertoire dédié à l’utilisateur, noté généralement $HOME ou /home/username. Tout ce qui s’y trouve est sensé lui appartenir. L’utilisateur par défaut ne devrait pas travailler hors de ce répertoire. Les applications y déposent aussi les préférences utilisateur.

2-4 février 2011 Conférence Lift à Genève Lift11 is a three-day conference about current and emerging usage of digital technologies such as online communities, social media and casual games. Participants come to better understand the challenges and opportunities presented by digital technologies, and meet the people who drive these innovations.

Monter: action qui consiste à faire correspondre à un emplacement local choisi le contenu d’un autre (local ou distant). Dans le monde Windows l’équivalent est Connecter un lecteur réseau. PAM: Pluggable Authentication Modules, mécanismes gérant toutes les étapes du login et du logout d’un utilisateur. (plus d’info: en.wikipedia.org/wiki/Pluggable_Authentication_ Modules).

20 tickets offerts à des étudiants Envoyez avant le 30 novembre 2010 un mail à students@liftconference.com avec vos coordonnées (nom, université, copie de votre carte d'étudiant), et un court texte précisant ce que vous pouvez faire pendant la conférence, éventuellement un lien vers ce que vous avez déjà écrit. En échange d'un ticket gratuit, les étudiants joueront les minireporters (blogs, sites Web,…). Toutes les infos sur liftconference.com/lift11.

23 NOVEMBRE 2010 - N°9

5


Scala .. /.. Suite de la première page

section I&C de l’EPFL, focalisaient leur cursus de programmation sur Java. Il était naturel d’imaginer que ce langage deviendrait à terme hégémonique. Il n’en est rien ! Au contraire, on observe aujourd’hui un écosystème de langages très varié. En particulier des langages dits agiles — par exemple PHP, Python ou Ruby —, dotés de systèmes de types dynamiques, sont en pleine progression depuis quelques années. Ces langages compensent une faible performance par un style de programmation décontracté, que les programmeurs apprécient et qui accélère l’écriture des logiciels. Le langage Java, statiquement typé, est plus rigide que les langages agiles. Quoique disposant depuis quelques années de types génériques, la forme de programmation orientée objet qu’il propose reste relativement simple. Mais Java est une plate-forme autant qu’un langage, et cette plate-forme est remarquable. Au centre, la machine virtuelle (JVM) permet d’exécuter le même code binaire sur toutes sortes d’ordinateurs. Elle prend également en charge la gestion de la mémoire, une tâche difficile que les langages comme C++ délèguent au programmeur lui-même. Si la JVM originale souffrait d’une certaine lenteur, celle de 2010 est une bête de course qui, dans de bonnes conditions, interprète les programmes plus rapidement que l’ordinateur ne le ferait directement – en optimisant le code en fonction des performances mesurées. Quant à la bibliothèque standard, il s’agit d’une boite à outils extrêmement pratique pour le programmeur, complétée par une multitude de bibliothèques tierces, dont la compatibilité apportée par la JVM facilite le partage. Finalement, la rigidité du langage est en partie contournée en supportant le code par des logiciels d’intégration. Par exemple, la norme Java EE ne modifie pas le langage Java, mais exécute les programmes dans un conteneur qui fournit une série de services facilitant, entre autres, la programmation Web et la communication entre composants. On peut donc observer dans la situation actuelle une double tendance: D’un côté, une grande valeur d’usage dans les platesformes (Java et .Net de Microsoft, en particulier) du fait de la concentration de bibliothèques et d’outils autour des machines virtuelles. De l’autre côté, un très grand attrait des programmeurs

Apprendre Scala Le point de départ pour apprendre Scala est le site Web du langage: www.scala-lang.org/. La page learning Scala contient une multitude de liens vers diverses ressources d’apprentissage sur le site et sur le Web. ❚ Si vous êtes un professionnel de la programmation, la société Scala Solutions propose des cours d’introduction ou des cours avancés de Scala. ❚ Si vous êtes étudiants, inscrivez-vous au cours CS-205 de programmation avancée qui est donné en Scala par le laboratoire des méthodes de programmation. Il existe plusieurs livres sur Scala (en anglais). Pour n’en citer que deux, dont celui de Martin Odersky: ❚ M. Odersky, L. Spoon,et B. Venners: Programming in Scala; Artima. ❚ A. Payne et D. Wampler:Programming Scala; O’Reilly.

6 flash informatique

Un langage de l’EPFL Le compilateur Scala et sa bibliothèque standard sont des projets libres, portés par le laboratoire des méthodes de programmation de l’EPFL. Si le cœur du projet, et la majorité des développeurs se trouvent à Lausanne, la communauté Scala fait aujourd’hui le tour du monde. On trouve des contributeurs en Europe, bien sûr, mais également aux États-Unis, au Japon, ou encore au Brésil. En avril de cette année, plus de 150 personnes, chercheurs et utilisateurs de toutes nationalités se sont rendus aux premières journées Scala organisées au Polydôme de l’EPFL. Quant à l’avenir industriel de Scala, il est assuré par Scala Solutions, une jeune pousse enracinée depuis quelques semaines au parc scientifique de l’EPFL, à quelques dizaines de mètres du laboratoire des méthodes de programmation. Cette entreprise, composée en partie d’anciens membres du laboratoire, fourni du conseil et des services autour de Scala, afin de transférer au mieux sa technologie vers les utilisateurs industriels. Le lien du langage avec l’école est même présent dans le logo, directement inspiré du site de l’EPFL. Scala, qui veut dire escalier en italien, se devait de mettre en valeur l’architecture locale. Ce sont les escaliers en colimaçon du bâtiment BC qui ont servi de modèle pour le logo. et des entreprises pour les langages agiles, plus décontractés, moins normatifs et généralement considérés comme plus productifs. Malheureusement, les deux tendances semblaient contradictoires, car les machines virtuelles imposent de fortes contraintes sur le code binaire qu’elles exécutent, ce qui est contraire aux besoins des langages agiles. D’ailleurs, les langages qui ont essayé avant Scala de résoudre cette contradiction l’ont fait au détriment de la performance ou de la compatibilité. Scala prend acte de cette situation et tente de trouver le bon équilibre entre ces besoins contradictoires par un design et un compilateur à la pointe de la technologie. Pour commencer, la syntaxe de Scala est beaucoup plus flexible et tolérante que celle de Java — un exemple anecdotique, mais fort apprécié, est qu’elle rend les points-virgules optionnels. Mais plus fondamentalement, c’est le système de types qui offre la solution (voir encart page 8). Scala est en effet doté d’un système de types statiques, nécessaire pour satisfaire les exigences de la machine virtuelle. De l’autre côté, pour avoir un langage agile, le compilateur infère automatiquement la plupart des types, laissant ainsi le programmeur se concentrer sur ses algorithmes. Pour les utilisateurs plus avancés, Scala offre des types extrêmement polyvalents et expressifs qui permettent, suivant les besoins, soit une grande liberté de conception proche des langages dynamiquement typés soit au contraire une vérification rigoureuse des propriétés du programme.


Scala

La programmation extensible Si le positionnement de Scala dans une niche particulièrement compétitive explique sans doute une partie de son succès, il faut également considérer ses qualités propres. Elles sont multiples, mais à la racine se trouve la polyvalence de Scala, sa capacité intrinsèque à s’adapter à de multiples tâches. Cette volonté de polyvalence a été présente dès le début de la conception de Scala. Le rapport technique de 2004 qui présente pour la première fois le langage, mentionne dans son introduction l’idée d’un langage extensible (scalable), où les mêmes concepts peuvent décrire des petits éléments aussi bien que des grands. Pour comprendre ce que cela signifie, revenons encore une fois aux tendances de la programmation actuelle.

L’Histoire nous dit que la construction de la tour de Babel s’arrêta le jour où les hommes cessèrent de parler la même langue. Il se pourrait bien que l’on observe le même effet dans la construction de logiciels. Prenons l’exemple d’une application Web moderne: le nombre de langages utilisé est énorme. On peut y trouver du JavaScript pour le client, du Python pour scripter le serveur, du Java pour la logique métier, du SQL pour l’accès à la base de données, le tout maintenu par du XML. Chaque langage est choisi pour son efficacité dans une tâche spécifique, mais, pour communiquer, ces langages dépendent d’un plus petit dénominateur commun, souvent du XML, ou pire, de simples chaînes de caractères sans réelle structure. Cela complique le déploiement, rend les systèmes fragiles et est une grande source d’erreurs. La conception extensible de Scala ne cherche pas à optimiser son utilisation dans un domaine, mais à le rendre aussi universel que possible. Par exemple, une application Web utilisant la technologie Lift — un logiciel d’intégration Web en Scala — peut être entièrement définie à l’aide d’un seul langage. En effet, les bibliothèques de Lift fournissent au programmeur des boites à outils spécifiques à chacune des tâches requises, qui sont toutes manipulées avec le même langage: Scala. Ainsi, l’obstacle de la communication disparaît, pour ainsi dire, car tous les éléments de l’application parlent la même langue. La prise en compte simultanée de la recherche en programmation fonctionnelle et celle en programmation orientée objet, deux do2

maines qui évoluaient jusque-là dans une relative ignorance mutuelle, a permis un langage unique capable de résoudre un large spectre de problèmes. La programmation orientée objet avancée, utilisée par Scala, introduit des idées telles que les membres abstraits de types, les annotations de type individuel et la composition par mixin. Ensemble, ces techniques permettent de structurer un programme sous forme de services abstraits et modulaires, configurés librement selon les besoins spécifiques du programme. Cette modularité participe à l’extensibilité de Scala, d’autant plus que ces techniques remplissent leur rôle aussi bien pour de simples méthodes que pour des composants considérables. Quant à la programmation fonctionnelle, elle apporte en particulier les fonctions de première classe qui font du code une valeur qui peut se déplacer dans le programme. Cela favorise l’extensibilité en permettant de contrôler l’exécution du code suivant les besoins. Par ailleurs, les fonctions ouvrent la voie au filtrage de motifs (pattern matching) qui enrichit l’accès aux objets, abordés du point de vue des structures complexes qu’ils forment au lieu de les observer individuellement. La contribution de Scala à la recherche dans les langages vient de la mise en commun de concepts et de techniques jusque-là séparés. Il parvient à unifier des éléments similaires, et à reconnaître ceux qui diffèrent et leur rôle dans l’ensemble. Le résultat de cette recherche est ce que l’on pourrait appeler un langage universel. Ce n’est plus un simple langage d’usage général, comme Java, car il permet par son extensibilité de séparer les tâches et les domaines, et de les résoudre de la façon qui leur convient le mieux. En d’autres termes, la capacité du langage à entourer intimement le code avec des librairies est telle que chaque tâche peut être menée à bien dans un milieu qui lui convient spécialement. Certains langages agiles comme Python sont également presque universels, mais Scala crée cette capacité dans le cadre beaucoup plus exigeant d’un système de types statique et de la JVM.

Un exemple de programme Scala On passe à ce programme une série de couleurs, en toutes lettres. Le programme retourne le code hexadécimal correspondant à chaque couleur qu’il connaît. object ColorCode { val colors = Map "rouge" -> "turquoise" -> "noir" -> "orange" -> "brun" -> )

( 0xFF0000, 0x00FFFF, 0x000000, 0xFF8040, 0x804000

def main(args: Array[String]) { for (name <- args) println ( (colors get name) match { case Some(code) => name + " est encodé par: " + code case None => "couleur inconnue: " + name } ) } }

Le principal auteur de la bibliothèque d’acteurs est Philippe Haller.

23 NOVEMBRE 2010 - N°9

7


Scala

Qu’est-ce qu’un système de types ?

Un langage pour la programmation distribuée Un des exemples les plus convaincants de l’extensibilité du langage a été l’implantation d’une infrastructure de programmation distribuée de premier plan pour Scala 2. En effet, avec la multiplication des cœurs dans les processeurs, la programmation dans le nuage et les fermes de serveurs, il n’est aujourd’hui plus possible de programmer sans prendre en compte la distribution des calculs. Plusieurs modèles de programmation distribuée existent, l’un des plus prometteurs étant la programmation par acteurs. Dans ce modèle, certains objets deviennent des acteurs qui disposent de leur propre fil d’exécution (thread) et qui communiquent entre eux à l’aide de messages. Traditionnellement, l’implantation d’un nouveau modèle de programmation aussi fondamental que les acteurs aurait requis le développement d’un nouveau langage afin de ne pas en compromettre l’ergonomie ou la performance. Pas en Scala: quoique son système d’acteurs soit largement considéré comme le standard actuel, tant du point de vue des performances que de celui de l’ergonomie, il a été entièrement défini à l’aide d’une bibliothèque. Le langage n’a pas été modifié. Sa capacité d’usage universel a permis au concepteur de la bibliothèque de contrôler l’exécution de façon à en assurer la performance, et de maîtriser le milieu de programmation de façon à en assurer le confort. Aujourd’hui, d’autres implantations d’acteurs, comme Akka ou Lift, sont disponibles pour Scala. Lift fournit des acteurs simplifiés aux performances plus élevées. Akka est un environnement plus

Un système de types statique est un composant du compilateur qui vérifie que les programmes sont cohérents. Cela permet d’éviter un grand nombre d’erreurs avant même que le programme ne soit exécuté. Pour cela, le compilateur donne à chaque élément du programme un type, qui est une approximation de sa valeur réelle. Par exemple, Fleurette aura le type vache, ce qui permettra au compilateur d’éviter qu’on ne tente de la tondre, mais permettra qu’on la traie. Les types peuvent être plus ou moins puissants dans leur capacité descriptive, c’est-à-dire dans la façon dont ils approximent les vraies valeurs. Par exemple, avant les types génériques en Java, il n’était pas possible de différencier une liste de poules d’une liste de vaches, car les deux étaient simplement considérées comme des listes sans autres qualifications. Par ailleurs, le système de types peut disposer d’opérateurs plus ou moins puissants pour agir sur les types. Par exemple, en Scala, il est possible de joindre plusieurs types dans un mixin, ce type composé disposant de toutes les propriétés des types originaux. En joignant les types d’un cheval, d’une carriole et d’un cocher, on peut obtenir un type représentant un attelage qui permettra de hennir (du cheval) aussi bien que de fouetter (du cocher). large dont les acteurs ne sont qu’une partie. Cette diversité démontre la flexibilité d’un langage universel qui ne force pas l’utilisation de certains modèles de programmation, mais permet au contraire d’étendre ceux-ci en fonction des besoins, sans changer le langage. ■

À votre service

Qui suis-je ? Luc.Venries@epfl.ch EPFL - Domaine IT, responsable du service Exchange

Chaque utilisateur d'une boîte aux lettres au DIT a désormais la possibilité de changer le nom affiché lors de l’envoi d’un e-mail (jusqu’à présent la modification de ce champ n’était pas possible…). Le Display Name ou Nom Affiché est le champ de l’annuaire Active Directory pour renseigner le champ from des personnes qui envoient un e-mail (en quelque sorte ce Display Name cache ou précède l’adresse e-mail pour plus de lisibilité), il est utilisé par: ❚ MS Outlook (uniquement avec le protocole MAPI), ❚ le webmail ewa.epfl.ch, ❚ Apple Mail (en mode Exchange), ❚ Entourage. Dans le cas de l’utilisation des protocoles POP ou IMAP, les programmes de messagerie (y compris MS Outlook) laissent le choix à l'utilisateur de choisir le nom affiché. Le Display Name est renseigné automatiquement lors de la création d’un compte au format: Nom Prénom.

8 flash informatique

C’est également ce champ qui est affiché lors d’une recherche dans la GAL (Global Address List) qui est l’annuaire LPAD interne à MS Exchange et qui référence toutes les adresses e-mail de l’EPFL. Marche à suivre pour changer le nom affiché: ❚ se connecter au webmail ewa.epfl.ch; ❚ aller sous options (bouton en haut à droite de la fenêtre) puis Voir toutes les options…; ❚ dans les informations sur le compte choisir modifier; ❚ Editer le champ nom d’affichage puis enregistrer. Le fait que des Display Name soient modifiés entraînera une désorganisation de la GAL. La recherche par ordre alphabétique deviendra alors problématique puisqu’une partie des utilisateurs sera classée par leur nom, alors qu’une autre le sera par leur prénom. C’est pourquoi nous conseillons aux utilisateurs qui utilisent la GAL d’effectuer une recherche en tapant quelques caractères du nom et/ou du prénom de la personne recherchée (sous Outlook, dans la boîte de la recherche de contacts, sélectionner le critère autres colonnes plutôt que Nom uniquement). ■


Comment faire ?

Faites bonne image ! Francois.Roulet@epfl.ch, EPFL – Domaine IT, responsable Apple EPFL

Best practices in image format choice for the Web and press edition. Bonnes pratiques dans le choix des formats d'encodage pour la publication presse et Web.

Préambule Cet article s'intéresse à nos habitudes quotidiennes pour la manipulation d'illustrations, essentiellement en vue de publication sur le Web, mais aussi sur papier. En observant nombre de publications, notamment les modes d'emploi illustrés par des extraits d'écran, on déplore trop fréquemment la mauvaise qualité des images. S'il s'agit comme souvent de copies d'écran, cela est impardonnable. Avant de comprendre l'origine de ces dégradations picturales, dressons rapidement un catalogue des principales familles de formats d'enregistrement d'images et illustrations, en les classant succinctement en 3 catégories principales (liste non-exhaustive): 1 les encodages/compresseurs sans perte (lossless compressor): FAX , GIF , PNG , TIFF ; 2 les encodages/compresseurs avec perte (lossy compressor): JPEG ; 3 les encodages vectoriels: SVG , EPS .

Les lossless Un des premiers formats répandus d'encodage d'image numérique est celui du FAX, contraction de FaCSimilé, ou télécopieur en français, dont la large diffusion remonte aux années 80. L'image est échantillonnée par balayage de ligne, comme la télévision analogique, mais en noir et blanc (1 seul bit) avec une résolution de 100 points par pouce (dpi). L'importante proportion de surface blanche contenue dans les pages de texte à télécopier a incité à en réduire la quantité d'informations transmises, en supprimant les redondances par compression entropique. Par exemple, lorsqu'une ligne, ou un fragment de ligne, est constitué d'une succession de pixels blancs, on comptabilise alors les octets identiques afin de n'en transmettre qu'un seul, que l'on répétera lors de la restitution jusqu'à reconstituer la ligne originale, ne transmettant ainsi que le nombre d'octets récurrents et

non les octets eux-mêmes. Cette simple méthode s'applique aussi à tout motif répétitif, tel que surfaces noires, ou lignes verticales en peigne. Cette manière de procéder garantit une reproduction intacte de l'image échantillonnée, chaque pixel étant fidèlement restitué, mais ne serait pas applicable à une image couleur de résolution actuelle, car le taux de compression demeure beaucoup trop faible. Néanmoins, ce type d'encodage était adopté en 1984 par logiciel de dessin MacPaint, pour enregistrer des images en noir et blanc, sans niveaux de gris toujours, à une taille fixe de 576x720 pixels. Le cousin du FAX dans le monde informatique, le format GIF (Graphic Interchange Format), proposé en 1987 par l'opérateur CompuServe, supporte la couleur indexée et limitée à 256 nuances (8 bits). C'est pourquoi, 9 ans plus tard, un successeur, le format PNG (Portable Network Graphics) est apparu, offrant l'entière palette de 16 millions de couleurs (24 bits) et la transparence (couche Alpha), aujourd'hui indispensable. Il présente aussi l'avantage d'être libre de droits d'auteur, alors que le format GIF est tributaire d'un brevet de Unisys s'appliquant sur la compression LZW. En revanche, le nouveau format PNG ne gère pas les images animées (groupe d'images séquentielles). Les encodages sans perte sont parfaitement adéquats pour les copies de boites de dialogue à l'écran, dont le fond est quasiment toujours uni, ainsi que plusieurs éléments les constituant.

Les lossy Le déferlement d'images photographiques numérisées a nécessité de leur trouver un format d'enregistrement plus adéquat, c'est à dire les comprimant beaucoup plus efficacement. Le format le plus répandu est incontestablement le JPEG apparu en 1992, basé sur la transformée cosinus bi-dimensionnelle discrète (DCT) de pavés de 8x8 pixels, afin d'en extraire les fréquences spatiales. Ensuite, chaque terme de cette matrice carrée est quantifié différemment en fonction de sa fréquence, afin d'écarter les fréquences spatiales élevées (filtre passe-bas), imperceptibles à l'oeil humain à partir d'une certaine distance, réduisant ainsi drastiquement la taille du document numérique. Lors de la lecture du document, on applique la transformée cosinus bi-dimensionnelle inverse, afin de reconstruire l'image originale, malheureusement dépourvue de ses composantes de fréquence spatiale élevée, définitivement perdues durant sa compression. Inconvénient majeur de cette méthode, les régions frontière fortement contrastées laisseront malheureusement apparaître des artéfacts caractéristiques et aisément reconnaissables, sorte d'échos visuels, typiquement au contour d'un objet sur fond uni, tel que du ciel bleu. 23 NOVEMBRE 2010 - N°9

9


Faites bonne image ! À l'aide des tableaux comparatifs ci-dessous, vous pourrez aisément déterminer le format d'enregistrement le mieux approprié à chacun de vos documents. Relevons quelques éléments significatifs: en comprimant la photo avec un taux respectable de

50:1, on ne remarque que peu d'altérations, alors qu'en comprimant la copie d'écran avec un taux insignifiant, voisin de 1.5:1, l'illustration apparaît déjà excessivement dégradée.

Comparaison des 3 familles d'encodages par domaine d'application

Lenna.tiff

Lenna.jpg

poids du document 787 KB

poids du document 16 KB

Qualité initiale

Dégradation imperceptible

Lenna_diff.png Différences de luminosité avec l'image reconstruite

Photo

copie.png

copie.jpg

poids du document 27 KB

poids du document 25 KB

Restitution parfaite

Dégradation inacceptable

Copie d'écran

GLOSSAIRE

EPS: Encapsulated PostScript, format créé par Adobe Systems en 1992, en langage PostScript pour décrire des images et des objets vectoriels. FAX: format d'image pour la transmission de FaCSimilé via ligne téléphonique, normalisé par l'ITU.

10 flash informatique

GIF: Graphic Interchange Format, introduit en 1987 par CompuServe, premier service commercial sur le réseau téléphonique. JPEG: Joint Photographic Experts Group, compresseur à perte et proposé en 1992 par le comité du même nom. PNG: Portable Network Graphics, spécifié par le consortium W3 en 1996.

SVG: Scalable Vector Graphics, proposé en 2001 par le consortium W3. TIFF: Tagged Image File Format, spécifié en 1986 par Aldus, créateur de PageMaker.


Faites bonne image !

logo.svg

logo.png

logo.jpg

poids du doc. 4 KB

poids du doc. 50 KB

poids du doc. 50 KB

Restitution parfaite même agrandie

Apparition d'escaliers

Dégradation inacceptable

Graphique Le logo EPFL a été préféré à un dessin technique, en raison de sa pureté, mettant mieux en évidence les dégradations caractéristiques propres aux encodages non-vectoriels.

C'est pourquoi ce format n'est résolument pas adapté à l'enregistrement de texte ou de graphiques, dont les contours déteindront inévitablement comme de l'encre fraîche, dégradant sévèrement le document original. Les compresseurs avec perte sont parfaitement adaptés à l'enregistrement d'images photographiques, de par leur très fort taux de compression (jusqu'à 100:1), et parce que les artéfacts qu'ils engendrent demeurent imperceptibles sur des images naturelles, à condition de respecter des taux de compression acceptables. fréquence spatiale croissante

fréquence spatiale croissante

0

Spectre de fréquences d'une DCT bi-dimensionnelle de pavé de 8x8 pixels

Les vectoriels Les formats vectoriels, sont parfaits pour les graphiques, les schémas mécaniques, électriques et logiques, ainsi que les cartographies, car non seulement ils préservent intégralement la qualité du dessin, mais surtout, autorisent de l'agrandir indéfiniment

(zoom), sans jamais laisser apparaître le moindre artéfact, typiquement de tracés en escalier (aliasing) dus à une résolution finie. La presse recourt fréquemment au format EPS (pour les logos et les textes, mais nous ne l'abordons pas ici, car cet encodage n'est supporté par aucun navigateur Web, seul le format SVG, proposé par le consortium W3, étant accepté et affiché. Heureusement, les principaux navigateurs Web, tels que Safari, Chrome, Opera et Firefox, sont désormais capables d'afficher le format SVG. En revanche, seul Internet Explorer de Microsoft ne peut encore l'afficher, sinon au travers de plug-ins supplémentaires. Les formats vectoriels confèrent au document graphique la possibilité de l'agrandir infiniment, mais par nature, ne s'appliquent qu'à des dessins synthétiques.

Pour l'histoire, mentionnons que la photo utilisée ici pour illustrer les compressions JPEG est devenue la référence universelle pour tester les algorithmes de traitement d'images depuis 1972, année de sa parution dans le feuillet central de l'édition de novembre du magazine PlayBoy™, son plus grand tirage jamais égalé. Par la suite, cette Playmate Lenna Sjööblom fût même conviée à la conférence du 50e anniversaire de la Society for Imaging Science and Technology (www.lenna.org).

Conclusion À chaque fois que vous souhaiterez publier une copie d'écran, tant sur papier que sur le Web, préférez le format PNG, et réservez le format JPG exclusivement aux images photographiques.

Référence en.wikipedia.org/wiki/Comparison_of_graphics_file_formats ■

23 NOVEMBRE 2010 - N°9

11


Actualités

FlashiPhone Symétrie cristalline Ivan.Orlov@epfl.ch, EPFL – SB – Laboratoire de cristallographie et Scientific Visual, Gervais.Chapuis@epfl.ch, EPFL – SB – Laboratoire de cristallographie et Stephan Burlot, développeur Coriolis Technologies, www.coriolis.ch

The first EPFL iPhone application has been selected among the best for online training. It presents crystallography in a playful way. La première application sur iPhone de l'EPFL a été sélectionnée parmi les meilleures pour la formation en ligne. La cristallographie y est présentée de façon ludique.

Pour ceux qui ne sont pas familiers avec le monde de l’éducation en ligne, la Souris d’Or est une distinction qui récompense une innovation suisse en informatique. En 2010, elle a été attribuée à la meilleure application publique pour téléphone mobile destinée à la formation ou à la formation continue et qui fait référence. Le 28 octobre lors de l’exposition WorldDidac à Bâle, le jury a sélectionné trois applications, l’une d’entre elles provenant de l'EPFL est destinée aux étudiants en physique et sciences des matériaux. La popularité des téléphones portables représente une opportunité pour améliorer l’éducation scientifique tout en utilisant des activités ludiques. Par le biais du jeu, il est possible de développer de nombreux talents et par là de fournir la motivation et l’intérêt indispensables à l’acquisition de nouvelles connaissances. Afin d’améliorer l’image de marque des sciences naturelles et de contrecarrer la diminution du nombre d’étudiants dans les cursus scientifiques, nous proposons d’utiliser les téléphones portables dans le but d’illustrer des concepts qui sont souvent perçus comme ennuyeux ou difficiles. Ceci concerne en particulier la physique et la chimie qui se basent sur des théories et des données numériques qui peuvent facilement être représentées graphiquement. Dans le but d’illustrer ce nouveau concept, une première application pour l’étude de la symétrie cristalline sur iPhone - Escher

flash informatique

Mobile - est disponible à l’adresse escher.epfl.ch/iphone/ ou sur l’AppStore. Cette application illustre le concept de symétrie d’objets périodiques à deux dimensions c’est-à-dire les 17 groupes de symétrie planaire . La connaissance de ces concepts constitue un préalable nécessaire à la compréhension de la symétrie des espaces de plus hautes dimensions. Afin d’exercer sa propre créativité, on choisit tout d’abord un des groupes de symétrie. L’aide donne tous les détails sur les caractéristiques du groupe et les opérations de symétrie. La maille est ensuite indiquée sur l’écran. Il suffit de choisir l’outil de dessin (un point, un atome, une fleur, une coccinelle) pour créer un motif. Chaque déplacement de l’outil sélectionné modifie instantanément le motif permettant ainsi d’étudier les différents modes de symétrie, le nombre de points équivalents par symétrie et toute autre propriété associée au groupe sélectionné. Une fois que le motif est terminé, il est possible de l’envoyer à des amis ou de l’inclure dans la collection virtuelle des œuvres.

Concept L’apprentissage à vie (Lifelong Learning), concept communément admis en Europe ou apprentissage continu, implique une éducation volontaire et motivée par le biais d’une variété de platesformes différentes. En termes de motivation, une activité ludique, par opposition aux manuels scolaires, est l’outil d’apprentissage le plus efficace. Il est évident qu’une personne ne peut s’asseoir en face de livres durant la vie entière. Par contre, on peut créer un environnement où l’apprentissage a lieu volontairement et de façon continue. Notre principal défi n’était pas de développer un logiciel, mais de transformer une tâche éducationnelle en une fonction agréable de la vie quotidienne au point où elle n’est plus perçue comme éducative. Et sans oublier bien sûr les avantages offerts par la plate-forme iPhone, comme l’écran tactile et l’accéléromètre.


FlashiPhone – Symétrie cristalline

Interface

Codage

L’application génère des motifs à l’instar du kaléidoscope où l’utilisateur peut déplacer un objet à l’aide d’un outil et le reproduire en temps réel suivant les lois de symétrie sélectionnées. L’utilisateur dispose au choix de 8 objets et 17 groupes de symétrie et de plus certains objets sont disponibles en plusieurs couleurs. Une fois que l’utilisateur a fait son choix, l’objet qui clignote à l’intérieur de l’unité de répétition (la maille) délimitée par deux paires de lignes parallèles peut être déplacé sur l’écran tactile ce qui entraîne un déplacement de tous les autres objets générés par les règles de symétrie. L’utilisateur peut ainsi observer les effets de symétrie en reproduisant l’objet. Mais comment voir un objet de 24 pixels si vous le masquez par votre doigt ? La solution est que l’objet clignotant est toujours attaché à votre doigt, indépendamment de son emplacement. En d’autres termes, on peut placer son doigt assez loin pour voir l’objet confortablement et l’objet va reproduire en parallèle le mouvement esquissé sur l’écran par le doigt. En appuyant sur le bouton de changement de mode, l’objet laisse une trace. Ainsi vous pouvez créer votre propre modèle selon votre imagination. Un des défis fut de trouver une sélection appropriée d’objets. Pour illustrer le rôle de la symétrie dans son ensemble, quelques-uns des objets doivent posséder une symétrie propre et d’autres pas (objet avec chiralité, par exemple une main gauche vs une main droite). En plus, chaque objet d’une taille de 24x24 pixels doit être facilement reconnaissable, être apprécié par les enfants et libre de tout droit. Certains ont été créés de toutes pièces et d’autres ont été extraits de bibliothèques publiques. Outre le mode de dessin classique, nous avons ajouté deux modes de dessin nouveaux liés à l’accéléromètre de l’iPhone. En mode gravité (Gravity Mode), l’objet principal est mu par la force de gravité et glisse vers le bas lorsque l’iPhone est incliné. Dans un autre mode, l’iPhone génère un nouveau modèle composé de trois objets choisis au hasard et répliqué par les lois de symétrie présélectionnées, chaque fois que vous secouez l’appareil (Shake Mode). Une autre partie importante concerne l’ouvrage de référence rapide expliquant le fonctionnement des règles de la symétrie et comment combiner jeu et apprentissage. Il contient également des illustrations pour toutes les opérations de symétrie et des commentaires aussi adaptés aux enfants.

Ce logiciel a été écrit en Objective-C, avec l’environnement de développement Xcode qui est distribué gratuitement par Apple. Les principales difficultés rencontrées lors du développement ont été d’une part l’adaptation des règles de symétrie qui ont dû être modifiées afin de respecter la position du point d’origine (0,0) en haut à droite de l’écran, au lieu du coin inférieur droit qui est la norme en trigonométrie. De plus, lors de la sélection de certains groupes de symétrie, il peut y avoir plus de 100 objets (ou sprites) à animer en même temps à l’écran ce qui, compte tenu de la vitesse relativement faible du processeur de l’iPhone 3G (qui utilise un processeur ARM cadencé à 400MHz) a rendu l’écriture de cette partie relativement complexe. En effet, l’animation de nombreux objets simultanément à l’écran s’apparente aux difficultés rencontrées lors de l’écriture de jeux vidéos. L’arrivée de l’iPhone 3GS avec son processeur à 600MHz et assisté par un processeur graphique plus puissant a rendu les animations plus fluides. La méthode actuellement utilisée est de pré-calculer les variations de chaque objet (en termes de rotation et réflexions) et des les afficher dans des calques (CALayer) qui sont affichés à l’écran aussi rapidement que possible. Malheureusement, lors de la sortie de la version 4 de l’OS de l’iPhone, la modification par Apple de certaines des API font que l’animation est extrêmement lente avec cette version de l’OS de l’iPhone. En particulier, le moteur actuel d’animation fait une utilisation intensive de la méthode CGContextDrawImage qui, pour une raison non communiquée par Apple, est 25x plus lente avec l’OS 4.0. Une réécriture du moteur de dessin est envisagé pour la prochaine version d’Escher Mobile v.2 (prévue janvier 2011), d’une part à cause des modifications apportées par Apple dans l’iOS 4.0 et suivants, et d’autre part afin de tirer partie des écrans plus grands de l’iPhone 4 (écran de 960x640 pixels) et de l’iPad (1024 x 768 pixels).

23 NOVEMBRE 2010 - N°9

13


FlashiPhone – Symétrie cristalline

Notes historiques

Soumission

Dès 1987, de nombreux cristallographes et autres spécialistes ont apprécié le logiciel Escher Sketch écrit pour Macintosh par Terry Flaherty de l’Université Loyola à la Nouvelle Orléans. Ce logiciel attractif avait pour but de concevoir des décorations périodiques. Cette application s’est vite avérée comme un excellent outil d’enseignement pour illustrer le cours de base de cristallographie. Il était facile de sélectionner l’une des 17 possibilités de symétrie dans l’espace à deux dimensions (les 17 groupes d’espace à deux dimensions ou groupes planaires) et d’utiliser les opérations de symétrie pour générer automatiquement des motifs périodiques à deux dimensions. Avec les différents outils disponibles, il était donc facile de générer tous les motifs périodiques possibles de papiers peints. Afin de rendre un tel programme facilement accessible aux étudiants et enseignants de la cristallographie ainsi que d’autres personnes intéressées dans l’art de décorations périodiques, le professeur Gervais Chapuis, alors directeur de l’Institut de cristallographie de l’UNIL et Wes Hardaker ont crée un nouveau logiciel, Escher Web sketch, dans le langage Java afin d’être directement accessible sur le Web. Ce logiciel permettait d’exploiter la couleur et d’autres outils ont été ajoutés pour faciliter la création de structures cristallines à deux dimensions. En 2006, G. Chapuis et ses deux collaborateurs - I. Orlov et N. Schoeni - ont publié la première version d’ Escher Web sketch pour téléphones mobiles compatibles Java 2.0, Escher Mobile (escher.epfl.ch/mobile/). Cette application est référencée sur de nombreux sites dédiés à la formation par mobile interposé et dans de nombreuses publications scientifiques. Escher Mobile permet de soumettre les nouvelles créations à la galerie Web sur le site Web de l’EPFL. Cette application fait partie des outils recommandés au cours de cristallographie.

Pour développer et soumettre l’application à l’AppStore, il a fallu souscrire au programme de développement universitaire pour iPhone (actuellement Programme Universitaire iOS). Contrairement aux programmes de développement standards et pour entreprise d’Apple, celui-ci est gratuit et permet jusqu’à 200 développeurs de travailler en équipe, de partager des ressources de développement et de travailler avec un certificat commun. On distingue deux rôles principaux pour l’équipe de développeur: a L’agent (l’auteur qui a été accepté dans le programme Apple pour développeur) est la personne de contact pour l’équipe. Il est responsable pour la gestion des membres de l’équipe, pour l’engagement de nouveaux membres et pour assigner les tâches de chacun. C’est aussi la seule personne qui peut créer et supprimer les identificateurs - certificats digitaux permettant aux membres de l’équipe de tester l’application en développement sur leur iPhone. Dès que le développement de l’application est terminé, l’agent la soumet à l’AppStore. b L’équipe de développement a accès au SDK, aux pré-release des logiciels, forums, vidéos pour tutoriels et peut signaler les problèmes éventuels au support d’Apple. L’inscription s’est déroulée sans problème jusqu’à la réception du message suivant de la part d’Apple: «We are currently in the process of reviewing your iPhone Developer Program enrollment information. Please fax the Certificate from the Commercial Register (Handelsregisterauszug) of identity for EPFL based on your company form. The fax number for submission of this information is …». Quel type de document pourrait faire l’affaire? L’EPFL n’est pas enregistrée dans le registre du commerce et une lettre avec en-tête de laboratoire ne peut pas être acceptée puisqu’elle ne comporte aucun numéro de série et est trop facile à imiter. Après quelques jours et plusieurs tentatives de recherche d’un compromis mutuellement acceptable pour prouver l’existence de l’EPFL, il a fallu se rendre à l’évidence et abandonner cette voie. Finalement nous avons abdiqué et opté pour un programme standard de développement en payant les 99 USD pour continuer le développement, tout autre détail demeurant inchangé. Pour l’instant tout fonctionne pour le mieux, excepté qu’une adresse e-mail une fois enregistrée dans une base de données d’Apple ne peut être utilisée pour une autre inscription même si la précédente inscription n’est plus ou n’a jamais été valable. Ainsi une adresse e-mail de l‘EPFL a été dégradée et il est surprenant d’apprendre que même le support d’Apple n’est pas en mesure d’éliminer cette adresse de sa base de données. Il a fallu recréer une nouvelle boîte aux lettres! Ce problème mis à part, le processus de soumission s’est déroulé normalement. Voici quelques repères sur la durée de la soumission de notre application pour la première fois: ❚ application pour le programme de développement universitaire: attente de 2 semaines. Demande d’extrait du registre de commerce. Abandon; ❚ application pour le programme de développement standard: 99 USD. Attente de 2 jours pour approbation; ❚ installation du certificat pour les tests (provisioning profile for Ad Hoc distribution): 2 heures;

14 flash informatique

création de l’icône pour l’application Escher et descriptif pour l’AppStore: 4 heures; ❚ préparation des fichiers pour soumission, copies d’écran incluses, support pour site web et correspondance: 1 jour; Les images suivantes sont requises: a icône png 57X57, arrondi et effet sont ajoutés automatiquement, b image tiff/jpeg 512x512, c jusqu’à 4 copies d’écran de l’application (on l’obtient en pressant simultanément le bouton de démarrage et le bouton d’accueil de l’appareil); ❚ soumission de l’application: attente de 3 jours pour approbation. Escher mobile a été publié le 9 mars 2010 et à fin octobre il a déjà été téléchargé plus de 2500 fois. La copie d'écran indique les pays en tête de liste des téléchargements pour les 26 dernières semaines.


FlashiPhone – Symétrie cristalline

Version future Avec son grand écran et un processeur bien plus puissant, l’iPad est une excellente plate-forme pour la formation en ligne. Des jeux mathématiques au visualisateur d’anatomie, il peut être utilisé pour une variété de sujets et de niveaux d’instruction- de l’école enfantine à l’éducation supérieure. Cela est particulièrement vrai pour la physique, la chimie et la science des matériaux où la connaissance peut être représentée graphiquement. La cristallographie empiète sur ces trois disciplines et s’adapte bien aux outils de la formation en ligne. Nous préparons une nouvelle version d’Escher Mobile qui est prévue pour janvier 2011. Outre l’utilisation des nouveaux outils -

GLOSSAIRE

Cristallographie: science qui se consacre à l’étude de la matière condensée à l’échelle atomique. Une grande partie de cette matière existe sous forme cristalline: minéraux et minerais, métaux et alliages, céramiques et dents, os, pratiquement tous les produits chimiques inorganiques et organiques, vitamines, protéines, virus… Pour cette raison, la cristallographie est une branche essentiellement interdisciplinaire qui empiète sur la physique, la chimie, les sciences de la vie et des matériaux ainsi que les géosciences. E

comme le dessin vectoriel - nous prévoyons un mode test où l’étudiant pourra tester ses connaissances en identifiant la symétrie de certains motifs. Il est également prévu une intégration avec Facebook, par l’intermédiaire duquel les nouvelles créations de motifs pourraient être soumises dans le but de promouvoir la science. Nous considérons que ces développements représentent une avancée pour un environnement d’apprentissage plus attrayant, ce qui aura pour conséquence d’améliorer la performance dans le domaine de l’éducation scientifique. En conclusion nous encourageons vivement les enseignants de l’EPFL à considérer les avantages des outils mobiles dans leurs domaines respectifs. ■

Opérations de symétrie: La symétrie est une caractéristique des figures géométriques, des équations et d’autres objets. On dit qu’un tel objet est symétrique par rapport à une opération donnée, si cette opération appliquée à l’objet, le laisse inchangé ou invariant. Deux objets sont symétriquement équivalents par rapport à un groupe donné d’opérations de symétrie si l’un est obtenu à partir de l’autre par l’une des opérations. Dans l’espace à deux dimensions, les opérations de symétrie sont essentiellement les translations, les rotations, les réflexions et les glissements (p. ex. traces régulières de pas dans la neige). E

Groupes de symétrie cristallographiques planaires: un groupe planaire (ou papier peint) est un concept mathématique permettant de classer tout type de décoration répétitive (périodique) dans le plan. De telles décorations se trouvent fréquemment dans l’architecture et dans les arts décoratifs. L’étude mathématique des décorations révèle qu’il n’existe que 17 types ou groupes différents. Ces groupes sont liés aux groupes cristallographiques plus complexes en trois dimensions, aussi appelés groupes d’espace. E E = extrait d’Escher Mobile

À votre service

Le DIT vous forme ! EPFL – Domaine IT, l’équipe des cours

Profitez des dernières formations de cette année, il reste des places dans plusieurs cours: ❚ iPhone: pour développer votre propre application, ❚ Indesign: pour l’édition et la mise en page de grands documents, plaquettes ou flyers, ❚ Inform: pour créer des formulaires vite fait-bien fait, ❚ Outlook et Mail: pour gérer sa messagerie et son temps, ❚ PowerPoint: pour faire un beau diaporama pour Noël, ❚ LabVIEW: pour l’acquisition et le traitement de données,

❚ ❚

Excel: pour faire vos tableaux et accessoirement… vos comptes, Et bien sûr toujours des cours Jahia 6 pour vous aider dans cette nouvelle interface.

Vous trouvez tous les détails sur notre site dit.epfl.ch/cours, vous pouvez réservez votre place par mail à cours.dit@epfl.ch et nous vous répondons volontiers tous les matins au 021.69.322.44. ■

N'oubliez pas la réunion du 25 novembre 2010 à 14h15 en salle SG0211 ! Les sujets à l'ordre du jour: la gouvernance ernan nce du système d'information de l'EPFL; IT@EPFL: survol des six dernier mois; Web 2010: l'envers du décor; retour sur l'opérapération de migration à Exchange 2010; puis les questions/réponses et les discussions/échanges autour d'un verre. 23 NOVEMBRE 2010 - N°9

15


Analyse

HDL_Draw, outil de conception de circuits numériques intégrés Jean.SongoPriso@hefr.ch, Collaborateur scientifique à l'École d'ingénieurs et d'architectes Fribourg

How to build ASIC’s and FPGA using XSLT language. Comment exploiter les modèles XSLT dans la conception des ASIC et FPGA .

Modéliser avant de réaliser, là est la réponse

Introduction Pensé et initié par le professeur Claude Magliocco, le projet HDL_ Draw a été développé à l’Ecole d’ingénieurs et d’architectes de Fribourg par M. Jean Priso Songo, ingénieur ETS, avec la collaboration de M. Philippe Crausaz ingénieur EPFL pour les tests unitaires et fonctionnels. Le premier objectif du projet est la conception d’un compilateur simple et accessible des points de vue fonctionnel et financier, capable de générer du code HDL à partir d’un schéma électronique. Le produit à réaliser devra donc éviter la complexité des outils de développement classique, afin de focaliser l’attention de l’utilisateur sur son travail de conception. Le second objectif est la définition d’une méthodologie simple et efficace, qui permettra aux professeurs de disposer d’un outil didactique capable de les assister dans l’enseignement des circuits numériques intégrés.

Mais qu’est donc le VHDL? Le VHDL a été développé dans les années 80 par le département américain de la défense, en vue de normaliser les langages de description matériel destinés à représenter le comportement ainsi que l’architecture d’un système électronique numérique. Les unités de conception primaires du langage correspondent à la vue externe des composants. ARCHITECTURE

DESCRIPTION

ENTITE

Vue externe du composant

relative à une entité. Elle contient les fonctionnalités et éventuellement les relations temporelles du modèle, dans une description en vue de la synthèse. Cette définition est liée à la technologie. La description est une unité de conception primaire qui permet de créer un couple entité-architecture. Plusieurs architectures pouvant être associées à une entité.

Définition du composant

La spécification d’entité, très proche de la représentation symbolique du composant en schématique, définit les signaux d’entréessorties, leur type, ainsi que leur mode input, output, in-output, et les procédures qui y sont éventuellement associées. La généricité permet de paramétrer ces définitions. Ses unités de conception secondaires correspondent aux algorithmes des modèles et des sous-programmes. L’architecture est

16 flash informatique

Actuellement, tout concepteur de système électronique de puissance doit répondre à des contraintes industrielles et économiques très sévères. Afin de garantir le succès ou, dans une moindre mesure, réduire le risque d’erreurs dans des systèmes de plus en plus complexes, l’ingénieur doit faire appel aux méthodes de modélisation et de simulations. La modélisation permet de vérifier par simulation que le système en conception répondra au cahier des charges, mais elle permet aussi d’en optimiser les performances. Les langages de modélisation numériques sont des langages de description matérielle de haut niveau, communément appelés HDL. Le HDL prend en charge la description formelle d’un circuit logique, dans le but de concevoir des ASIC et FPGA . Une modélisation efficace repose sur des outils performants, au mieux graphiques pour en faciliter l’usage, et peut se résumer en cinq étapes (voir tableau de la page suivante).

Pourquoi HDL-Draw? À la lumière des moyens à disposition de l’ingénieur pour assumer les contraintes techniques de ses projets, force est de constater que la mise en œuvre de ces moyens serait vaine si leur exploitation industrielle s’avère non rentable. Parmi les outils de rentabilité d’un projet industriel, on peut citer: ❚ la capitalisation des connaissances, ❚ la réutilisation des modèles, ❚ la modularité des systèmes, ❚ l’automatisation ou l’industrialisation des processus répétitifs. Tous ces moyens ont deux objectifs en commun: la réduction du temps de réalisation, c’est-à-dire le temps entre le cahier des charges et la fabrication du produit, et l’optimisation des ressources humaines et de sa formation. Ces deux objectifs restent de mise, quel que soit le milieu professionnel académique, ou industriel. Puisqu’il faut assurer la rentabilité et optimiser le temps de formation, on peut imaginer qu’un outil qui prend en charge tout ou partie du travail à réaliser est d’un apport appréciable, tant pour l’ingénieur que pour le chef de projet.


HDL_Draw, outil de conception de circuits numériques intégrés Etapes

Outils

Commentaires

1.

Description symbolique du cir- Editeur graphique de Cette étape n’est pas indispensable, mais facilite considérablecuit logique. schéma électronique ment la compréhension du système et la lecture des modèles.

2.

Description comportementale Editeur de texte du circuit logique en langage VHDL.

Cette étape est l’une des plus consommatrice de ressources. Ici l’ingénieur écrit ligne après ligne, le comportement de son modèle.

3.

Traduction de la description Outil de synthèse VHDL en fonctions logiques.

Le synthétiseur génère en sortie une liste d’interconnexion de composants logiques de base en fonction de la technologie choisie.

4.

Routage.

Le placeur-routeur crée à partir du fichier généré par le synthétiseur, un fichier spécifique à la technologie cible qui décrit les connexions entre les composants élémentaires à disposition dans le circuit programmable.

5.

L’intégration physique de la des- L’intégrateur cription.

Routeur

L’intégration physique de la description est effectuée à partir de ce fichier spécifique dans le circuit programmable.

les cinq étapes pour une modélisation efficace

C’est ce que va proposer HDL-Draw: générer automatiquement du code pour faire gagner du temps à l’ingénieur et à l’étudiant. HDL-Draw est donc conçu pour assister le concepteur là où il en a le plus besoin, à savoir les éditions de la schématique et du code VHDL résultant. Contrairement aux outils de référence dans le design des circuits intégrés, l’interface graphique de HDL-Draw est sobre et intuitive. On est loin de la complexité des produits propriétaires, certes plus élaborés, mais coûteux et peu adaptés à l’enseignement.

Le mode opératoire est simple. Un bouton permet à l’utilisateur de sélectionner le schéma électronique de son projet. Ensuite on transforme le schéma en un équivalent XML à l’aide du bouton Générer le XML. Le code VHDL est produit et affiché sur le navigateur Web par défaut de l’ordinateur en cliquant sur le bouton Générer le HDL. Même si la portabilité vers d’autres plates-formes n’a pas été spécifiée, HDL_Draw pourrait aisément s’adapter pour fonctionner sous Linux. Pour cela, il suffira de coder l’interface en Java par exemple. La maintenance et l’intégration des futures options sont assurées en modifiant directement le modèle XSLT .

Réalisation L’éditeur de schématique Dès les premières analyses du projet, il était clair qu’il ne serait pas possible de développer un éditeur de schéma dédié, et encore moins de s’appuyer sur un éditeur payant. Le projet s’est donc naturellement orienté vers les produits open source. Plusieurs applications potentiellement aptes à satisfaire les exigences ont été testées: Inkscape, Dia, Sodipodi, toutes avec des avantages certains dont notamment le SVG qui est une description d’images vectorielles, codées en XML. Le choix s’est finalement porté sur OpenOffice et plus précisément sur OpenDraw qui proposait de meilleurs atouts. En plus d’être libre, gratuit et multi-plateformes, l’application bénéficie d’un excellent support. Elle est facile à utiliser et jouit d’une bonne réputation dans la communauté estudiantine. Mais son meilleur atout est sa compatibilité ODF. On verra plus loin comment cet avantage a orienté la suite du projet. ODF est l’acronyme de OpenDocumentFileformat, un dérivé du XML-Projet dont est issu le langage XML. Concrètement, cela signifie qu’un document OpenOffice, comme tout fichier compatible ODF, est transformable ou exportable en fichier XML.

Le modèle de données XML - HDL XML est un langage qui sert essentiellement à stocker et à transférer des données de type texte structurées en champs arborescents. Le modèle de données étant défini, la prochaine étape fut de typer chaque nœud XML et ses attributs à un objet HDL. Par exemple, chaque objet rectangle dans XML, représentera une entité HDL. Les attributs Nom, Titre et Description du nœud seront respectivement associés au nom, à l’architecture et au label de l’entité.

De XML à HDL Les choix de l’éditeur et le modèle des données effectués, il reste encore à déterminer comment transformer les informations contenues dans le fichier XML en code VHDL. Une feuille de style 23 NOVEMBRE 2010 - N°9

17


HDL_Draw, outil de conception de circuits numériques intégrés

Nœuds

Attribut

Modèle XML des objets HDL_Draw

Représentation d’un Registre dans OpenDraw <draw:rect draw:name="Registre" draw:layer="layout" svg:width="5.226cm" svg:height="7.023cm" svg:x="11.274cm" svg:y="3.477cm"> <svg:title>behave</svg:title> <svg:desc>reg1</svg:desc> <text:p text:style-name="P1"/> <text:p text:style-name="P1"/> <text:p text:style-name="P1">Registre</text:p> </draw:rect> Code XML résultant du Registre. On peut aisément identifier les valeurs saisies dans le schéma.

Enable_i='1' and A_i='0' and B_i='0'

start_sy_s|Enable_i

A_sy_i|A_i

B_sy_i|B_i

Idle_State0 Enable_Cnt_o <= '0'; Up_o <= '0'; Down_o <= '0'; if Enable_i='1' then if A_i='1' and B_i='0' then Up_o <= '1'; Down_o <= '0'; Enable_Cnt_o <= '1'; elsif A_i='0' and B_i='1' then Up_o <= '0'; Down_o <= '1'; Enable_Cnt_o <= '1'; end if; end if;

Liste sensibilité etat_futur: enable_i,A_i,B_i, Liste sensibilité sorties: enable_i,A_i,B_i, Enable_i='1' and A_i='0' and B_i='1' Enable_i='1' and A_i='0' and B_i='0'

clk_i/r|clk_i/r

Enable_i='1' and A_i='1' and B_i='0'

Enable_i='0'

Idle_State1 Enable_Cnt_o <= '0'; Up_o <= '0'; Down_o <= '0'; if Enable_i='1' then if A_i='1' and B_i='1' then Up_o <= '1'; Down_o <= '0'; Enable_Cnt_o <= '1'; elsif A_i='0' and B_i='0' then Up_o <= '0'; Down_o <= '1'; Enable_Cnt_o <= '1'; end if; end if;

Enable_i='0' Enable_i='1' and A_i='0' and B_i='0'

Enable_i='0'

Enable_i='1' and A_i='1' and B_i='0' Initialisation Up_o <= '0'; Down_o <= '0'; Enable_Cnt_o <= '0'; Enable_i='1' and A_i='1' and B_i='1'

Enable_i='1' and A_i='1' and B_i='0'

Idle_State2 Enable_Cnt_o <= '0'; Up_o <= '0'; Down_o <= '0'; if Enable_i='1' then if A_i='0' and B_i='0' then Up_o <= '1'; Down_o <= '0'; Enable_Cnt_o <= '1'; elsif A_i='1' and B_i='1' then Up_o <= '0'; Down_o <= '1'; Enable_Cnt_o <= '1'; end if; end if;

Reset_i='1'

Enable_i='1' and A_i='0' and B_i='1'

Up_o|Up_s

Down_o|Down_s

Enable_Cnt_o|Enable_Cnt_s

Enable_i='1' and A_i='1' and B_i='1'

Enable_i='1' and A_i='1' and B_i='0'

Idle_State3 Enable_Cnt_o <= '0'; Up_o <= '0'; Down_o <= '0'; if Enable_i='1' then if A_i='0' and B_i='1' then Up_o <= '1'; Down_o <= '0'; Enable_Cnt_o <= '1'; elsif A_i='1' and B_i='0' then Up_o <= '0'; Down_o <= '1'; Enable_Cnt_o <= '1'; end if; end if;

Enable_i='1' and A_i='1' and B_i='1'

reset_i/h|reset_i/h

QEI_M_etat

Exemple d’une machine d’états réalisée avec HDL_Draw, schéma électronique (le code VHDL correspondant est visible dans la version Web de cet article ditwww.epfl.ch/ SIC/SA/SPIP/Publications/spip.php?article2218)

18 flash informatique


HDL_Draw, outil de conception de circuits numériques intégrés scriptée en XSLT assurera cette fonctionnalité, tandis qu’un navigateur Web se chargera de compiler et d’afficher le résultat.

Schéma de principe

------------------------------------------------------------- Registre FOR Cmd_Pont -----------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; ENTITY Registre IS PORT( ); END ENTITY Registre; ARCHITECTURE behave OF Registre IS BEGIN Reg1: process( ) END behave;

Code VHDL résultant du schéma du registre

Sur le principe du registre présenté, s’en est suivi l’intégration des différents processus du VHDL, associés aux objets XML pré-typés. Ainsi, objet après objet, nous avons construit des machines d’états, intégré la notion de couche de schématique, traité les signaux internes, les entités génériques, le mapping des ports, etc. Il est aussi prévu des champs de saisie permettant au concepteur d’injecter directement du code HDL de description ou de déclaration dans l’entité de son choix. Cette fonctionnalité augmente considérablement la souplesse de l’outil dans des cas de conception actuellement non couverts par l’application. Les enseignants pourront aussi s’appuyer sur ce binôme objet symbolique/code résultant pour expliquer facilement lors des travaux pratiques la conception de divers composants et systèmes numériques.

Conclusion À la fin de ce projet, force est de constater que tous les objectifs ont été atteints dans les délais. Certes il y a eu quelques doutes liés aux limites du langage XSLT et à l’usage des versions d’Inter-

GLOSSAIRE

ASIC (Application Specific Integrated Circuits): circuit intégré (micro-électronique) spécialisé. W FPGA (Field Programmable Gate Array): réseau de portes programmables in situ. W HDL (Hardware Description Language): langage informatique permettant la description d'un circuit électronique. W

net Explorer inférieures à 6. Les deux problèmes ont été résolus en consultant un grand nombre d’ouvrages et en privilégiant le navigateur Opera. Pour information, il existe un plugin Microsoft qui permet aux anciennes versions d’Internet Explorer d’interpréter le XSL. Il est à rappeler que la technologie privilégiée dans le développement de ce projet est une parmi d’autres aboutissant aux mêmes résultats, mais sans doute avec plus de complexité. On aurait pu par exemple imaginer l’usage d’une base de données pour stocker les nœuds XSL ou développer des librairies de composants dans le choix d’une programmation objet. Un workshop regroupant une douzaine de professeurs et collaborateurs de l’EIA-FR ainsi que des invités des autres HES-SO a été organisé au mois d’août. D’un point de vue général le produit a séduit par sa simplicité, son efficacité et son originalité. Cependant, quelques remarques portant à éprouver la saisie des schématiques ont été émises. Ces idées ainsi que quelques autres en cours de spécification seront intégrées dans la prochaine version de HDL_Draw. Notre souhait est de créer une communauté autour de cet outil et, si possible, le promouvoir comme outil didactique de choix dans l’enseignement et la conception des circuits numériques intégrés. D’ores et déjà, quelques projets de l’Ecole, développés avec des produits commerciaux ont positivement migrés sous HDL_Draw. Mes remerciements vont en premier au professeur Claude Magliocco (Claude.Magliocco@hefr.ch) et à l’EIA-FR qui ont porté et partiellement financé ce projet pendant plus de six mois; à Philippe Crausaz (Philippe.Crausaz@hefr.ch) qui a activement participé à la réalisation des tests unitaires et fonctionnels; et au professeur Omar Abou Khaled (omar.aboukhaled@hefr.ch) responsable des échanges internationaux à l’EIA-FR, pour la relecture et la publication de ce projet.

Bibliographie 1. Claude Magliocco - EIA Fribourg, 2004. VHDL Synthétisable pour circuits numériques intégrés. 2. Patrice Nouel – ENSEIRB Bordeaux, Langage VHDL et conception des circuits 3. Etienne Messerli – HEIG Vaud, 2007. Manuel VHDL Synthèse et simulation 4. Yannis Haralambous - ENST Bretagne, Maitriser XML et XSLT. 5. Victor Stinner – 2005, Programmation avec XSLT ■

SVG (Scalable Vector Graphic): format de données conçu pour décrire des ensembles de graphiques vectoriels et basé sur XML. W VHDL (Very high speed integrated circuit Hardware Description Language): langage de description matériel destiné à représenter le comportement ainsi que l'architecture d’un système électronique numérique. W

générique. Il sert essentiellement à stocker/transférer des données de type texte Unicode structurées en champs arborescents. W XSLT (eXtensible Stylesheet Language Transformations): langage de transformation XML de type fonctionnel. W W = tiré de Wikipédia

XML (eXtensible Markup Language): langage informatique de balisage

23 NOVEMBRE 2010 - N°9

19


Comment faire ?

Récupération de données avec un live CD 100% libre Pablo Ulises Peña Dall’Orso, pablo.pena@epfl.ch, EPFL, membre de GNU Generation

Read this article to learn how to use a Live CD in an easy and rapid way to recover data from a personal computer running MS Windows that does not start anymore. gNewSense the operating system to record on the CD, distributed under the GNU GPL, is available for immediate download at no charge. No authorization request or registration needed. Apprenez comment retrouver et sauver vos fichiers depuis un ordinateur sous MS Windows qui ne démarre plus. gNewSense, le système d'exploitation pour graver le CD, distribué sous la licence GNU GPL, est disponible sans coût pour le téléchargement immédiat. Pas besoin de demande d'autorisation ou d'inscription.

Avec la transmission fréquente de fichiers de tout type depuis Internet, le réseau ou depuis une clé USB, il peut arriver que notre ordinateur soit infecté par un virus informatique ou un ver informatique (worm). Si vous utilisez un système d’exploitation tel que MS Windows vous êtes spécialement vulnérable. Même avec un logiciel antivirus commercial installé, un virus peut infecter votre machine. Dans certains cas, une fois le virus activé, il se peut que les fichiers du système d’exploitation soient tellement endommagés qu'il ne soit plus possible de démarrer une session Windows. Dans pareille situation, vous pouvez paniquer si vous avez gardé tous vos documents de travail seulement sur le disque de la machine infectée. Si votre ordinateur est un ordinateur de travail à l’EPFL, vous pourrez demander l’aide du service informatique de votre faculté. Mais que faire si c’est votre machine privée où vous gardez vos fichiers audio, photo, vidéo personnels qui est infectée? Vous pourriez chercher une entreprise de services informatiques externes, mais elle risque d'être chère. Nous verrons dans cet article comment vous pourrez démarrer votre ordinateur, accéder au disque dur et faire une copie des dossiers où vous gardez vos documents sur un disque externe. Dans mon article du FI 8 du 10 octobre 2010 (ditwww.epfl.ch/ SIC/SA/SPIP/Publications/spip.php?article2201), j’avais mentionné l’utilisation d'un LIVE CD qui est un CD contenant un système d’exploitation exécutable sans installation, qui se lance au démarrage de l’ordinateur. Le système d’exploitation choisi était gNewSense, la raison principale étant que ce système est 100% libre et recommandé pour cette raison par la Free Software Foundation, institution qui est à la tête du mouvement du logiciel libre et qui est le seul détenteur du copyright sur la licence GNU GPL sous laquelle est distribué le noyau Linux et la majorité des logiciels libres.

flash informatique

Procédure 1 Téléchargez la distribution gNewSense du système d’exploitation GNU/Linux: www.gnewsense.org/Main.fr/HomePage. 2 Gravez le fichier sur un disque avec l’option graver une image. 3 Une fois que vous avez gravé l’image, insérez le CD dans le lecteur de l’ordinateur où se trouvent les données à récupérer. 4 Redémarrez l’ordinateur. Vous devez modifier l’ordre de démarrage pour faire que la machine démarre depuis le CD. 5 Après le démarrage la langue par défaut des menus est l'anglais. Il faut choisir la langue du clavier: System --> Preferences --> Keyboard, ouvrir la fenêtre Keyboard preferences, onglet Layouts, cliquez sur Add; puis, option Layouts, choisissez Switzerland; Variants , choisissez French et enfin Add. 6 Une fois l’ordinateur démarré et la langue du clavier choisie, branchez un disque dur externe, avec suffisamment d’espace disponible, vers lequel vous allez transférer vos données. 7 Pour accéder au disque dur de l’ordinateur dans la barre des tâches sélectionnez Places. Vous verrez au milieu de la liste les disques ou partitions disponibles avec leur taille. Si vous cliquez sur la partition qui contient vos fichiers un raccourci s’affichera sur le bureau. Allez vers cette partition ou disque et vous verrez tous vos dossiers gérés depuis Windows, spécialement le dossier Documents and Settings où vous trouverez les dossiers pour tous les utilisateurs de l’ordinateur.

8 Copiez et collez votre dossier dans le disque dur externe. Patientez quelques minutes pendant la copie. Une fois la copie finie, arrêtez l’ordinateur. Débranchez le disque dur externe et vérifiez depuis un autre ordinateur que toutes les données sont bien sur ce disque. Amenez votre ordinateur en panne chez un technicien ou si vous savez le faire, vous pouvez maintenant réinstaller le système d’exploitation. Pour installer gNewSense, lisez mon article précédent dans FI8/2010. ■


Analyse

Filtre Manuel.Ojanguren@epfl.ch, EPFL – SB, professeur honoraire Martin.Ouwehand@epfl.ch, EPFL - Domaine IT, Responsable sécurité informatique Esteban.Rosales@bluewin.ch, géologue et illustrateur

Un mot: filtre — trois regards: mathématique, informatique et illustrateur.

Filtre – MOJ À part ceux des cigarettes, du café et de l'huile à frire, il y a aussi les filtres des mathématiciens. Ils ont été inventés (et baptisés Kränze) par Leopold Vietoris en 1921, puis, comme tout le monde avait ignoré Vietoris, réinventés en français par Henri Cartan en 1937. Leur but était de mettre à disposition des analystes une notion de limite plus générale et plus souple que celle – basée sur les suites – qu'on apprend dans les cours de première année. La notion de filtre fut adoptée et diffusée par Nicolas Bourbaki, célèbre mathématicien imaginaire, sous le nom duquel un groupe de jeunes mathématiciens francophones, en 1939, commença à publier un immense traité qui finit par changer le visage des mathématiques. Au début, toutefois, Bourbaki voulait seulement écrire un traité d'analyse plus rigoureux que ceux de Goursat et de Valiron, à l'époque très en vogue. Un bourbakiste (Pierre Samuel) composa à ce propos le sonnet que voici, qui nous laisse dans l'obscurité quant à la définition de filtre, mais nous éclaire sur l'enthousiasme des bourbakistes.

LE FILTRE Ô puissant, ô formel, ô toi clair Bourbaki, Vas-tu nous déchirer dans un accès de crise Le Goursat filandreux, miroir de l’Analyse, Défenseur attardé d’un passé qui a fui? La suite d’autrefois se croyait l’infini, Inutile, et que sans la comprendre utilise Le maladroit conscrit, lui que Valiron grise De son cours ténébreux qui distille l’ennui. Ignorant les secrets de la Topologie À l’espace infligée, et toi qui l’étudies, Il nage dans l’erreur où son langage est pris. Il contemple étonné, comme enivré d’un philtre, L’adhérence, un manteau qu’il n’a jamais compris, Que vêt, sur un compact, immobile, le FILTRE.

Filtre – MO Les boucles, while ( ... ) ..., et les tests, if ( ... ) then ... else ..., font partie des éléments de base de l'informatique, c'est pourquoi ils se retrouvent dans tous les langages de programmation et qu'ils sont implémentés par des instructions de bas niveau dans les processeurs de tous les ordinateurs. En les combinant, en plaçant un test à l'intérieur d'une boucle, on obtient un filtre rudimentaire qui, selon le résultat du test, accepte, rejette ou peut-être transforme chaque élément traité par la boucle. Autant dire que tout ou presque en informatique peut être abordé à travers cet aspect du filtrage. Par exemple en infographie, on traitera chaque pixel d'une image en abaissant l'intensité du rouge si elle dépasse un certain niveau, obtenant ainsi un filtre atténuateur. Ou bien encore – puisque je suis la risée de certains de mes collègues pour mon attachement suranné, parait-il, à la ligne de commande – je me dois de mentionner cette magnifique invention d'Unix qu'est le tuyau (pipe en jargon anglo-informatique), permettant de joindre par le symbole | une série de filtres, le résultat de chacun étant fourni en entrée au suivant: grep toto * | cut -d: -f1 | uniq -c | sort -n

me donne, triés par nombre d'occurrences, les fichiers du répertoire courant contenant la chaîne toto (le premier filtre trouve les occurrences, le second retient les noms des fichiers, le troisième compte les occurrences et le dernier les classe par nombres). Enfin, pour prendre un exemple plus proche du sens étymologique de filtre (un bout de feutre utilisé par les alchimistes pour retenir les scories solides mélangées à leurs élixirs) considérons l'antispam MailCleaner: dans ma quarantaine, je ne vois même pas les messages refusés par le filtre SpamHaus (une base de données d'adresses IP d'ordinateurs n'envoyant que du spam), mais je retrouve des messages retenus par les filtres bayésiens (répertoriant les mots figurant souvent dans les messages qui ont par ailleurs été classés comme spam), les filtres sur les liens (le message pointe vers un site Web publicitaire) ou enfin les filtres comportementaux (le formatage, le thème, la falsification des entêtes démasquent le spammer). ■

23 NOVEMBRE 2010 - N°9

21


Comment faire ?

Installation de Linux avec PXE et Grub2 Vittoria.Rezzonico@epfl.ch, EPFL - SB-IT, spécialiste HPC et responsable de la salle serveur de la Faculté des Sciences de base

Anybody managing a farm of Linux machines dreams of an automatic installation method, and any user willing to install Linux on his computer would be pleased to have an assisted method of installation, or at least, to avoid burning CDs. Toute personne qui gère un parc de machines Linux rêve d’une méthode d’installation automatique, et chaque utilisateur désireux d’installer Linux sur son poste au travail serait ravi d’avoir une méthode d’installation assistée ou, au moins, d’éviter de graver des CD.

Installation (semi-)automatique de postes de travail Linux avec PXE et Grub2

lors du chargement du noyau et de l’initrd, on peut admirer un écran avec des annonces importantes ou des règles d’utilisation. En conclusion, le Grub2 est un bon choix par sa facilité d’installation et ses possibilités de configuration pour l’administrateur système, ainsi que pour sa transparence pour l’utilisateur final.

Installation de grub2pxe Contrairement au cas de Grub Legacy, il n’est pas nécessaire de recompiler Grub2 pour faire du PXE, il faut par contre en avoir une installation. Ensuite, faites grub-mkimage --output=core.img --prefix="(pxe)/ boot/grub" pxe pxecmd@ cat pxeboot.img core.img > grub2pxe@

Le fichier pxeboot.img se trouve dans notre cas dans /usr/lib/ grub/i386-pc. Il faudra ensuite copier grub2pxe ainsi que le répertoire /boot/grub dans la racine du serveur tftp. Votre répertoire racine tftp doit avoir l’aspect suivant:

Prérequis Un serveur DHCP doit être présent dans votre subnet. Ce serveur nécessitera les ajouts suivants:

/tftpboot/

boot/grub/

next-server <VOTRE_SERVEUR_DE_BOOT>@ filename "grub2pxe"@

Il faut également un serveur de démarrage, c’est-à-dire un serveur avec le service tftp. Le serveur de démarrage et le serveur DHCP ne sont pas forcément sur la même machine.

Grub2 Dans cet exemple pratique, nous utiliserons Grub2 comme Network Bootstrap Program, il n’y a pas besoin de pxelinux. Mais pourquoi Grub2 et non pas le plus standard pxelinux? D’abord, tout simplement parce que c’est possible, et cela sans trop de difficultés (contrairement à pxegrub avec grub-legacy). Deuxièmement, Grub2 a des fonctionnalités qui nous rendent bien service: ❚ la possibilité de bloquer des rubriques du menu par un mot de passe, avec en plus la gestion des utilisateurs; ❚ la possibilité d’empêcher le démarrage depuis tout autre périphérique que le réseau dans le BIOS et arriver quand même à charger un OS depuis le disque dur ou même une clef USB; ❚ un mini-environnement interactif depuis lequel on peut charger un système de secours (rescue); ❚ un excellent support PXE via le device (pxe) qui accède au serveur tftp; ❚ la possibilité de monter des images ISO. Enfin, n’oublions pas le côté end-user. Le Grub2 est un bon choix aussi pour les raisons suivantes: ❚ les utilisateurs finaux ne sont pas perturbés par un écran de démarrage non familier;

flash informatique

915resolution.mod acpi.mod ... zfs.mod locale/ en_AU.mod en_GB.mod

grub2pxe

Maintenant, il faut choisir la configuration du menu de démarrage. Voici deux cas de figure.

Serveur d’installation générique memtest, Ubuntu, Fedora Ce cas est utile pour déployer un serveur d’installation de stations de travail. Vous configurez le bios des stations de travail pour démarrer uniquement du disque dur et lorsque vous souhaitez les réinstaller, vous appuyez sur F12 au démarrage (ou similaire). Il s’agit ici d’une installation semi-automatique (ou pas du tout automatique). Commencez par préparer les fichiers nécessaires au démarrage: memtest – copiez un memtest dans le serveur tftp. Par exemple sous /tftpboot/boot/. ubuntu – copiez l’iso ubuntu mini dans /tftpboot/isos. fedora – copiez les fichiers initrd.img et vmlinuz qui se trouvent dans le répertoire images/pxeboot/ sur le CD de Fedora dans /tftpboot/fedora/. Vous pouvez aussi placer un fichier kickstart quelque part sur un serveur http pour assister l’installation. ubuntu live – copiez le contenu du cdrom ubuntu-10.04-desktop-i386.iso dans /srv/ubuntu-10.04-desktop-i386 (n’oubliez pas le répertoire caché .disk) et exportez ce répertoire par NFS. Ensuite copiez les fichiers vmlinuz et initrd.lz qui


Installation de Linux avec PXE et Grub2 se trouvent dans /srv/ubuntu-10.04-desktop-i386/casper dans /tftpboot/ubuntu-10.04. Sur votre serveur d’installation, vous aviez copié le répertoire /boot/grub. Allez chercher le fichier grub.cfg et modifiez-le comme suit: ❚ enlevez les avertissements menaçants au début du fichier. Vous allez devoir le modifier à la main. Ré-écrire des scripts qui vont le générer à votre place est une tâche bien trop longue et sans assez de valeur ajoutée pour ce cas particulier. ❚ cherchez où commencent les rubriques des menus. Enlevezles toutes et remplacez-les par celles-ci. menuentry "Memory test (memtest86+)" {@ insmod pxe@ set root='(pxe)'@ linux16 /boot/memtest86@ }@ menuentry 'Ubuntu Lucid installer' --class ubuntu --class gnu-linux --class gnu --class os {@ insmod iso9660@ insmod loopback@ loopback loop (pxe)/iso/ubuntu-lucid-i386mini.iso@ linux (loop)/linux@ initrd (loop)/initrd.gz@ }@ menuentry 'Fedora Core 13 installer' --class fedora --class gnu-linux --class gnu --class os {@ insmod pxe@ set root='(pxe)'@ linux /fedora13/vmlinuz ramdisk_ size=9216 network ks=http://128.178.131.120/ ks.ks@ initrd /fedora13/initrd.img@ }@ menuentry 'Ubuntu Lucid Live' --class ubuntu --class gnu-linux --class gnu --class os { insmod pxe@ set root='(pxe)'@ linux /ubuntu-10.04/vmlinuz boot=casper netboot=nfs nfsroot=128.178.131.120:/srv/ubuntu10.04-desktop-i386@ initrd /ubuntu-10.04/initrd.lz@ }@

Installation d’une salle Linux Dans ce cas nous considérons l’installation d’une salle de stations pour les étudiants. Les contraintes suivantes s’appliquent: ❚ les étudiants ne doivent pas avoir accès aux fonctions admin; ❚ l’écran de démarrage ne doit pas être trop perturbant pour l’utilisateur final, c’est-à-dire, il est préférable que l’utilisateur final ne remarque rien par rapport à un démarrage local standard. La première question est facilement résolue avec l’introduction d’un mot de passe dans Grub2. Le mot de passe bloquera le mode ligne de commande et toutes les entrées du menu Grub2 sauf le démarrage en local. Pour définir un mot de passe, ajoutez le suivant a votre grub.cfg: set superusers="user1"@ password_pbkdf2 user1 MOT_DE_PASSE@

Le mot de passe sera généré avec la commande grub-mkpasswd_ pbkdf2 .

Pour ne pas perturber les utilisateurs, nous allons nous restreindre pour l’instant à cacher le menu (comme cela est fait par défaut dans la plupart des distributions avec Grub Legacy). Insérez les lignes suivantes après la définition du mot de passe: echo -n "Press ESC to enter the menu... "@ if sleep --verbose --interruptible 10 ; then@ set timeout=0@ else@ set timeout=1@ fi@

Maintenant, nous pouvons nous attaquer à notre système d’installation. Nous allons utiliser la méthode plus simple possible: installer une machine modèle (master) et ensuite la cloner sur les autres avec partimage. Nous avons donc besoin d’un noyau, d’un initrd et d’un système minimal qui est juste capable de lancer partimage. La création d’un tel système n’est pas traitée ici. Ce que le mini-système doit être capable de faire est: ❚ démarrer; ❚ lancer partimage et sfdisk; ❚ exécuter quelques commandes pour par exemple copier des clefs ssh; ❚ redémarrer. Notre menu aura trois rubriques: 1 Boot local: c’est la rubrique par défaut, et la seule non verrouillée par mot de passe: menuentry 'Red Hat 6.0 Beta Desktop' --class redhat --class gnu-linux --class gnu --class os {@ insmod biosdisk@ insmod part_msdos@ insmod ext2@ set root='(hd0,1)'@ linux /boot/vmlinuz-2.6.32-19.el6.i686 ro root=/dev/sda1 ro rhgb quiet@ initrd /boot/initramfs-2.6.32-19.el6. i686.img@ }@

2 memtest, verrouillée par mot de passe: menuentry "Memory test (memtest86+)" --users user1 {@ insmod pxe@ set root='(pxe)'@ linux16 /boot/memtest86@ }@

3 réinstallation de la machine, verrouillée par mot de passe: menuentry 'PXE install' --class gnu-linux --class gnu --class os --users user1 {@ insmod pxe@ set root='(pxe)'@ linux /boot/vmlinuz-2.6.24 ip=dhcp root=/dev/ram0 init=/linuxrc ramdisk_size=130000 SERVER=192.168.2.13 insttype=ma@ initrd /boot/initrd.gz@ }@

À vous de tester Le serveur sbitsrv13 est à votre disposition pour des tests. Pour l’utiliser comme serveur d’installation, il faut que vous ayez un serveur DHCP dans votre subnet avec les paramètres: next-server 128.178.131.120@ filename "grub2pxe"@

23 NOVEMBRE 2010 - N°9

23


Installation de Linux avec PXE et Grub2 Un client qui démarre par PXE se verra proposer le menu Grub2:

Ressources Ubuntu: l’image mini.iso se trouve à l’URL: go.epfl.ch/grub2pxe-1. Fedora: le noyau et l’initrd se trouvent sur go.epfl.ch/grub2pxe-2. Ubuntu Live: l’image ubuntu-10.04-desktop-i386.iso se trouve sur go.epfl.ch/grub2pxe-3.

Depuis ce serveur vous pouvez installer une Ubuntu Lucid en mode interactif, une Fedora 13 en mode semi-automatisé et une Ubuntu Lucid depuis le LiveCD. Pour plus de renseignements, vous pouvez visiter la page Web du serveur: sbitsrv13.epfl.ch.

GLOSSAIRE

PXE (Preboot eXecution Environment, appelé aussi Pre-Execution Environment): environnement qui permet aux clients de démarrer en utilisant uniquement leur interface réseau, indépendamment des autres périphériques ou systèmes d'exploitation installés sur la machine. Le protocole PXE est une combinaison de DHCP et TFTP avec des petits ajouts. Le DHCP est utilisé (en outre que pour assigner des paramètres réseau) pour localiser le serveur de démarrage avec TFTP, qui est utilisé pour charger le

Références ❚

Netbooting Ubuntu Live Cds: https://wiki.ubuntu.com/LiveCDNetboot ■

network boot program (NBP) et éventuellement d'autres fichiers. En résumé, le démarrage par le réseau se passe ainsi: ❚ le firmware PXE du client envoie un paquet DHCPDISCOVER étendu avec des options PXE; ❚ le serveur DHCP répondra le cas échéant par un paquet DHCPOFFER étendu avec des options spécifiques PXE; ❚ si le serveur DHCP ne comprend pas le PXE, il va ignorer les options PXE; ❚ le DHCPOFFER étendu contient en particulier l'adresse du serveur TFTP et le chemin vers le NBP;

❚ le client envoie un DHCPREQUEST; ❚ le serveur envoye un DHCPACK; ❚ le client ouvre une connexion TFTP avec le serveur indiqué dans le DHCPOFFER étendu et télécharge le NBP indiqué. Dans notre cas, le NBP est grub2pxe. D'habitude, sous Linux, on utilise pxelinux; ❚ le NBP prend contrôle du client et se charge de la suite. Voir aussi: Séminaires Logiciels Libres -- PXE (elle.epfl.ch/wiki/index.php/PXE).

Actualités

https://secure-it.epfl.ch neuvième épisode

Quand c’est trop tard When it’s too late

Vous n'avez pas su prévenir, sachez rétablir How to mend what you didn't prevent

ISSN 1420-7192


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.