Вы находитесь на странице: 1из 84

ditorial Au cur de la programmationJava et C++

Au cur de la programmation Java et C++

E
Aneta Mazur Rdactrice en chef aneta.mazur@lpmagazine.org

t nous voil en priode de pluie et de temprature basse. L'automne est bien installe avec ses pluies et brumes matinales. Pour gayer vos soires dautomne et dhiver, nous avons prpar un dossier spcial sur la programmation. Nous allons nous concentrer dans ce dossier sur les langages Java et C++. En effet, Java est un langage de programmation informatique qui offre de nombreuses possibilits de dveloppement d'applications. Grce son efficacit, scurit et portabilit de la plate-forme, Java est devenu le langage de prdilection des dveloppeurs. Je vous recommande l'article Java, problmes de performace qui vous prsentera les stratgies dployer lorsqu'un problme apparat dans une application. Dcouvrez JavaFX, technologie qui augmente la puissance de Java ! Dans l'article de Pascal Barbier Dbuter avec JavaFX, vous allez apprendre, entre autres, dvelopper les interfaces utilisateur et crer des effets graphiques. ne pas manquer l'article sur le langage C++ qui traitera essentiellement de la programmation gnrique. Pour ceux qui veillent la scurit de leurs donnes, je vous conseille vivement l'article de Rgis Senet Chiffrement des donnes avec EncFS. Vous allez apprendre comment garder la confidentialit de vos donnes grce EncFS, un gestionnaire de chiffrement des donnes efficace et simple d'utilisation. L'article du mme auteur La mise en place d'un pot de miel avec Honeyd vous montrera comment se protger efficacement contre les pirates informatiques. Il montrera comment tendre un pige aux hackers grce un projet libre et gratuit Honeyd. Dans la section Pratique, dcouvrez l'article Oracle dans la cour des pingouins qui vous montrera comment installer Oracle 11g sur un systme Linux et vous guidera dans la cration d'une base de donnes. Dans ce numro, nous avons prpar galement une rubrique ddie aux entreprises. Dcouvrez les capacits et les fonctionnalits qu'offre OpenERP : gestion des stocks, gestion de la relation client ou la comptabilit ! Cet ERP (Progiciel de gestion intgr en franais) deviendra le facteur cl de succs de votre entreprise. Je vous recommande galement la lecture de l'article sur l'utilisation des logiciels libres en entreprise de Philippe Scoffoni. Vous allez srement apprcier l'article plein de conseils pour la mise en place de logiciels libres en entreprise. A loccasion de Nol qui approche, je vous prsente mes meilleurs voeux. Joyeux Nol et Bonne Anne 2010 ! Bonne lecture tous !

www.lpmagazine.org

Sommaire

Dans ce numro

Actus

3
Actus
Julien Rosal

Dveloppement d'application RCP


Pascal Barbier

6 8 9

Mandriva
Fabrice Facorat

La performance de l'interface utilisateur de la plateforme Eclipse permet de dvelopper rapidement des applications portables. Cet article vous expliquera l'architecture de la platforme Eclipse et les principes du dveloppement d'une application portable base sur RCP.

Debian
Julien Rosal

Dossier

1

Comment utiliser les logiciels libres en entreprise


Philippe Scoffoni

Les logiciels Open Source remplaceront-ils les logiciels propritaires ? Existe-t-il des logiciles Open Source pour tous les besoins de l'entreprise ? Cet article ddi essentiellement aux solutions Open Source en entreprise vous expliquera leurs avantages ainsi que leur mise en place. Un article plein de conseils pour ceux qui souhaitent raliser un projet Open Source.

0

Programmation Gnrique C++


Robert Nowak

Le C++, langage de programmation est le 3me langage le plus utilis dans le monde entier. Tout le monde peut l'utiliser sans besoin de payer ou demander une autorisation. Cet article traitera essentiellement de la programmation gnrique C++. Vous allez connatre entre autres l'utilisation des classes de traits ou apprendre slectionner un algorithme lors d'une compilation.

Scurit Programmation



18

Dbuter avec JavaFX


Pascal Barbier

La mise en place d'un pot de miel avec Honeyd


Rgis Senet

Dcouvrez JavaFX ! Cet article vous montrera les principes de la technologie JavaFX, la portabilit multiplatforme et surtout la cration des interfaces utilisateur et d'effets graphiques.

Peut-on se protger efficacemment contre les pirates informatiques ? Le programme Honeypot vous montrera que l'on peut aller plus loin : tendre un pige aux hackers. Grce cet article, vous allez apprendre installer et configurer Honeyd afin de vous en servir facilement.

22

Java, problmes de performance


Marcin Kalas

8

ProFTPd, MySQL, TLS la scurit des tranferts


Rgis Senet

Rencontrez-vous souvent des problmes lis la performance de vos applications ? Marre de devoir rdemarrer l'application qui reste sans rponse ? Cet article vous prsentera les stratgies et outils dployer si un problme apparat dans une application. Vous allez apprendre galement comment diagnostiquer les problmes lis la performance et trouver la solution.

La mise en place d'un serveur FTP stable et scuris relve parfois d'un exploit. L'article de Rgis Senet vous montrera comment installer ProFTPd, un serveur FTP complet. Vous allez connatre galement les faiblesses du protocole FTP et les moyens pour les palier.

Linux+ 6/2009

Sommaire

Dossier

Programmation Java et C++

6

Chiffrement des donnes avec EncFS


Rgis Senet

70

Avec SVN, ne perdez plus rien


Adel Safi

Comment assurer la confidentialit de vos donnes ? Vous trouverez la rponse dans cet article qui vous montrera comment chiffrer efficacement vos donnes grce l' EncFS. Dcouvrez la simplicit d'utilisation et les nombreux avantages d'EncFS.

La gestion des diffrentes versions d'un document devient un gest invitable lorsque vous tes un dveloppeur. Cet article vous montrera comment utiliser SVN, un outil incontournable pour grer les diffrentes verions d'un fichier.

Pratique

60

Oracle dans la cour des pingouins


Jonathan Fussner

De nos jours, les bases de donnes sont omniprsentes que ce soit derrire des logiciels ou en application directe. Cet article prsente l'installation d'Oracle 11g sur un systme Linux. Apprenez installer Oracle 11g et crer votre base de donnes.

Entreprise

7

Dployez OpenERP
Jonathan Fussner

Dcouvrez les capacits et les functionnalits d'OpenERP ! Cette solution informatique vous aidera grer l'ensemble de processus oprationnels d'une entreprise. Au menu entre autres : la Gestion d'activit, Gestion des Ressources Humaines ou encore Gestion Financire.

6

Rvision de code avec Eclipse et Jupiter


Adel Safi

Pour fournir un logiciel de qualit, il faut produire un code source de qualit. La revue de code permet d'identifier les erreurs avant la relecture du code par un dveloppeur expriment. L'auteur de cet article vous prsentera le processus de revue de code travers Jupiter, plugin pour Eclipse.

Fiche Technique

79

Jeux
Laurent Derosier

www.lpmagazine.org

NE WS

Actus news Section dirige par : Julien Rosal news@lpmagazine.org

De la libert est venue l'lgance

Linux Mint se dclare ouvertement driv d'Ubuntu, une distribution reprsentative d'un mouvement Linux qui tient dmontrer que son systme est mme de rpondre prsent une utilisation du PC comme outil multimdia sans connaissance informatique pralable. Mais l'utilisateur qui veut quitter Windows est habitu voir tout fonctionner sur base du principe click and run . Linux Mint a dcid de faciliter la transition de Windows vers Linux en incorporant ces lments ds l'installation. Linux Mint n'est-il qu'un Ubuntu modifi ? Non. D'abord c'est une main tendue vers les Windoziens en leur montrant qu'autre chose est possible mme le libre. Ensuite, des outils trs pratiques (Mint Install, Mint Menu...) qui apportent une aide immdiate trs prise. Enfin un soin apport au design nous dmontre que l'lgance n'est pas absente de la banquise. Site officiel http://www.linuxmint.com Communaut francophone http:// www.linuxmint-fr.org
Trahison

IE dans le viseur

La nouvelle PS3 devrait sortir dbut septembre, elle aura une taille et un poids rduit, une consommation lectrique amoindrie et un prix qui devrait tre revu la baisse (enfin!). Que de bonnes nouvelles ! Enfin il y a quand mme une ombre au tableau car Sony a dclar ceci : "Le nouveau systme PS3 va se concentrer sur la mise disposition de jeux et autre contenu de loisir, et les utilisateurs n'auront pas la possibilit d'y installer d'autres systmes d'exploitation". L'aventure Linux sur PS3 devrait donc prendre fin avec la PS3 Slim, une triste nouvelle pour tous ceux qui s'taient investis dans le dveloppement de logiciels autour du processeur Cell. Il semblerait mme que la mise jour du firmware des PS3 "original" supprimerait galement la possibilit d'installation de Linux. Une vritable trahison de la part de Sony envers la communaut du libre qui supprime encore une fois un atout prcieux de sa console.
Frag donf !

Vous tes amateur de FPS, vous aimez frager toute la journe, tirer, exploser, dcouper, dtruire sont des mots courant pour vous... Alors soyez heureux car Quake vient enfin d'tre port sous Linux. Une bonne nouvelle qui fait suite une promesse d'id Software, ce dernier avait promis le portage de Quake live sous MacOS et sous Linux et bien c'est chose faite. Il est rare qu'un diteur tienne ce genre de promesse alors saluons cette initiative qui devrait faire le bonheur de bon nombre de gamers. Quake Live est totalement gratuit, il est compos de pas moins de 40 niveaux et se base trs largement sur Quake III Arena. Le jeux est trs simplement accessible via un navigateur web, donc la simplicit est de rigueur pour ce jeux et c'est tant mieux, l'important c'est le fun et le frag.

cidment il n'y a pas un mois o le monde des navigateurs ne fait pas parler de lui. Mais non il ne s'agit pas de classique la voile ou de tour du monde et encore moins de la coupe de l'America. Il s'agit de navigateur internet, vous savez c'est ce que vous utilisez tout les jours pour lire vos mails ou pour regarder des sites pas toujours trs avouables. Ok je vois que l'on s'est compris. Pendant de longues annes c'est Internet Explorer qui a domin le march des navigateurs. Microsoft est assez malin et avait russit imposer, par le biais de FrontPage, des sites web non conformes aux normes du W3C (World Wide Web Consortium). Quel intrt me direz vous ? Et bien, tout simplement, ces sites ne pouvaient tre lus que par Internet Explorer 6. D'ailleurs certains sites ont encore le logo ou le label "Optimis pour Internet Explorer". Ce mode de fonctionnement de Microsoft a contribu l'mergence de nouveaux navigateurs tels que Firefox qui respectent mieux les normes W3C. Le problme c'est que beaucoup d'utilisateurs continuent utiliser IE6 et donc les sites doivent tenir compte des spcificits de ce navigateur. Ce qui veux dire inclure des lignes de code pour que le site ne s'affiche pas en "vrac". Pour de petits sites, ce genre de maintenance est tout fait jouable, mais pour des sites importants cela demande un gros effort et surtout normment de travail en plus. IE6 est tout de mme sorti en 2001, cela fait donc 8 ans que ce navigateur est en fonction, soit une ternit en informatique. IE6 est devenu le cauchemar des dveloppeurs avec notamment un comportement plus qu'alatoire en ce qui concerne le JavaScript et un support incomplet des CSS (voir tout les gros bugs de IE6 sur cette page : http://www.sitepoint.com/ blogs/2009/04/14/10-cool-things-well-beable-to-do-once-ie6-is-dead/). En fvrier 2009, un mouvement d'origine norvgienne a dcid de faire la peau ce navigateur obsolte (http://www.wired.com/ epicenter/2009/02/norwegian-websi/).Leprincipe est simple, il suffit de ne plus supporter IE6 mais surtout de l'afficher publiquement sur le site. Ce mouvement commence a prendre de l'ampleur et des bandeaux commencent apparatre sur les sites web invitant les utilisateurs mettre jour leur navigateur ou tout simplement en les avertissant que leur navigateur ne permet pas un affichage correct de

ies4linux pour faire tourner IE sous Linux

la page. Le phnomne ne touche pas de petits sites, bien au contraire, des sites importants sont concerns tels que Youtube, Facebook, Twitter, Gmail, Dailymotion, Okrut... Bref, les jours de IE6 sont compts. Un plugin WordPress a mme t cr pour avertir les utilisateurs d'IE6 que leur navigateur est obsolte (http://www.incerteza.org/blog/projetos/shockinglybig-ie6-warning/). Plus tonnant encore, la campagne norvgienne contre IE6 est trs largement soutenue par... Microsoft... Vous savez Microsoft, la petit entreprise familiale qui a cre IE6... Tout cela bien entendu dans le but de promouvoir IE7 qui est, il faut l'avouer, un peu mieux en ce qui concerne les normes W3C. La disparition de IE6 va tout de mme prendre du temps, car bon nombre d'entreprises, d'coles ou les administrations utilisent des applications faites pour IE6 (les intranet par exemple). Cela va demander beaucoup de travail et donc d'argent pour migrer ses applications vers des standards plus propres. Une enqute a, d'ailleurs, t faite pour comprendre pourquoi les gens utilisait IE6 (http://blog. digg.com/?p=878). Il apparat de faon vidente que c'est le monde du travail qui soutient grandement IE6. Microsoft d'ailleurs ne brusque pas vraiment les entreprises sur ce terrain car XP SP3 est encore livr avec IE6. Une faon encore de maintenir son influence et empcher tout basculement vers un autre systme d'exploitation. Il faudra certainement du temps pour radiquer IE6, esprons seulement que les sites ddis IE6 disparaitront au plus vite pour que justement les linuxiens puissent pleinement profiter d'internet sans payer les "conneries" de Microsoft. Mais si vous voulez vous amuser installer IE sur votre Linux, sachez que c'est possible, allez faire un petit tour a cette adresse : http://www.tatanka.com.br/

Linux+ 6/2009

Actus Section dirige par : Julien Rosal news@lpmagazine.org news

NE WS

ans le paysage informatique, il existe un systme d'exploitation qui a 40 ans de recul, vous voyez de qui je veux parler : Unix bien entendu. Ce papy de l'informatique continue sa route tranquillement et conserve une image trs apprcie dans le monde de l'entreprise. 40 ans c'est un bel anniversaire et il est normal de revenir sur le systme qui a inspir Linus Torvalds. Tout ce passe en 1969, l'homme marche sur la lune pour la premire fois mais Ken Thompson s'en fiche royalement car il vient de dvelopper le premier OS mono-utilisateur : le New Ken's System. C'est cet OS qui est la premire version d'Unix. Ce systme a t install sur un mini ordinateur DEC PDP-7 (http:// fr.wikipedia.org/wiki/PDP-7). En ce qui concerne le nom Unix proprement dit, Wikipedia nous claire quelque peu : le nom Unics fut suggr par Brian Kernighan suite un jeu de mot latin avec Multics; "Multi- car Multics faisait la mme chose de plusieurs faons alors qu'Unics faisait chaque chose d'une seule faon". Ce nom fut par la suite contract en Unix (pour au final tre dpos sous le nom UNIX par AT&T), cependant personne ne se souvient de qui est l'origine de la modification du " cs" en "x". Unix fut crit l'origine en langage d'assemblage mais il fut rcrit en langage C en 1971. le langage C a d'ailleurs t invent pour Unix. Deux ans plus tard, en 1973, l'entreprise AT&T qui possdait les laboratoires Bell qui avaient mis au point Unix, dcida de "donner" le code source de leur OS aux universits moyennant une licence au prix drisoire. C'est l que les choses se compliquent... Arriv l'universit, le succs fut immdiat et AT&T commena voir qu'il y avait moyen de gagner beaucoup d'argent. La sortie de la version 7 interdisait aux universits d'utiliser le code source d'Unix. Ce fut donc partir de la version 6 que les clones d'Unix ont commenc pulluler et notamment la branche BSD (Be-

40 ans de succs

Visa pour Linux

Les hritiers d'Unix

rkeley Software Distribution) qui a donn des systmes d'exploitation assez connus comme FreeBSD, NetBSD, OpenBSD et peut tre plus tonnant : MacOS... Et oui la marque la pomme est un driv d'Unix, autant dire que c'est un cousin de Linux. Vous avouerez qu'Unix continue bien se porter au vu du nombre de iPod ou de iPhone qui sont vendus travers le monde ;) Les distribution BSD (version 6) taient plus rserves un monde universitaire mais a n'est pas pour autant que la version 7 d'Unix fut tombe aux oubliettes. De grosses socits telles qu'IBM ou Sun par exemple ont commenc customiser leur Unix pour crer des solutions serveur rpondant aux attentes du monde de l'entreprise. Ainsi des systmes tels que AIX, HP-UX ou UnixWare ont commenc voir le jour. En 1985, un professeur amricain domicili aux Pays-Bas, Andrew S. Tanenbaum, a dvelopp un OS bas sur Unix V6 qui se voulait minimal, il fut d'ailleurs baptis Minix. Pourquoi je mets l'accent sur cette distribution particulirement ? Et bien tout simplement car en 1991, un petit gars du nom de Linus Torvalds s'inspira de se systme pour cre un OS, ou plutt un embryon d'OS qui devait devenir Linux. Attention Linux ne contient aucune ligne de code d'Unix, c'est un systme qui a t totalement rcrit mais qui s'inspire grandement d'Unix. Nous sommes en 2009 et Unix est toujours l, c'est le systme d'exploitation qui a le plus de recul. C'est l'OS qui a le plus inspir toute notre informatique moderne, mme Microsoft s'est inspir des grands principes d'Unix. En revanche le futur d'Unix ne semble plus vraiment trs rose, un sondage de Gartner Group montre qu'Unix est en dclin depuis plusieurs annes et cela cause de Windows et Linux. Nanmoins ce dclin devrait tre long car beaucoup d'entreprises sont encore dpendantes de leur architecture Unix. Selon ce mme sondage, prs de 50% des entreprises utilisant Unix ont dclar : "Unix est une plateforme essentielle pour nous et le restera indfiniment". Des paroles qui montrent bien qu'Unix est vraiment sans conteste le systme qui bnficie de la plus grande stabilit et le plus grand recul pour ce qui est de la monte en charge. Mme si Linux est un systme surprenant, il faut bien avouer qu'Unix a un pass assez glorieux et qui force le respect. Souhaitons juste que Linux souffle aussi un jour ses 40 bougies...

a c'est la classe, imaginez-vous : vous tes au restaurant avec votre petite amie, arrive le moment de l'addition et vous lui dites "laisse c'est pour moi, je suis informaticien". Une phrase qui pourrait sembler ridicule si ce n'est que votre carte visa est l'effigie de Tux. Depuis peu, une carte Visa Platinium avec tux en logo est disponible. Cette carte est clairement faite pour soutenir la fondation Linux car celle-ci recevra 50$ l'ouverture d'un compte et touchera un pourcentage des achats effectus par ses clients. Une excellente nouvelle mais qui malheureusement ne concerne que les Etats Unis, mais la fondation Linux assure que ce genre de carte devrait faire son apparition prochainement dans d'autre pays. Esprons que les pingouins passeront par la France.
Xtrem

La solution de stockage en ligne XtremFS vient de passer en version 1.0. Cette solution est europenne et permet plusieurs utilisateurs d'utiliser un disque virtuel. Seul contrainte : avoir internet, vous avouerez que cette contrainte devient drisoire de nos jours. XtremFS fonctionne comme un Raid 0 mais au lieu de disque, c'est plusieurs serveurs qui composent ce raid, autre avantage vos donnes sont dupliques sur plusieurs serveurs, ce qui garantit une plus grande scurit en cas de plantage d'un serveur. Ce projet a t command par la commission europenne et a t dvelopp sous licence GPLv2, et de grands groupes tels que la Caisse des dpts et consignations, l'Inria, EDF ou encore EADS ont particip ce projet. La solution est sduisante et volue trs vite alors ne manquez pas le train : http://www.xtreemfs.org/.
Dangereuse Pomme

Suite des incidents tranges qui se sont produits sur des iPhone, la commission europenne a demand des comptes Apple. Rappelons tout de mme qu'un iPhone a vu son cran se fissurer de toute part, tandis que d'autres ont tout simplement vu leur iPhone exploser suite une surchauffe de la batterie. Apple a rpondu qu'il s'agissait de cas isols et qu'il ne considrait pas qu'il y ai un problme gnral. Nanmoins la firme la pomme dcide de poursuivre les tests et surtout de trouver les causes de "ces cas isols". Ce genre de problme pourrait vite couter cher Apple car la commission europenne ne rigole pas avec ce genre de chose et si les cas d'iPhone dangereux venaient se multiplier et bien Apple devrait tout simplement retirer ses iPhone et ses iPod des rayons de nos supermarchs. Alors attention si on vous vend un iPhone c'est peut tre un pige ;) Respectons tout de mme ces pauvres produits qui se sont suicids car ils n'avaient pas Linux comme systme d'exploitation.

www.lpmagazine.org

Actus mandriva

Section dirige par : Fabrice Facorat linux@lpmagazine.org

Disponibilit de la Mandriva Flash 2009 Spring

Suite la sortie de la Mandirva 2009 Spring, la Mandriva Flash 2009 Spring est aussi disponible. Cette version, base sur la Mandriva 2009 Spring, utilise une cl USB de 8Go et est fournie avec des logiciels commerciaux tels que Skype. http://store.mandriva.com/product_ info.php?products_id=407

a Mandriva 2010.0 est prvue pour Novembre 2009. Cette version apportera de nombreuses amliorations et de nouveaux outils Mandriva seront disponibles pour les utilisateurs. Cette version continuera de mettre l'accent sur la scurit. Nous allons donc voir dcouvrir 2 outils qui sont en cours de dveloppement pour la Mandriva 2010.

Les nouveauts venir de la Mandriva 2010.0

Intgration de Plymouth

Pour la Mandriva 2010, Plymouth sera utilis en lieu et place de Splashy pour grer l'affichage lors du dmarrage du systme. Plymouth offre de nombreuses fonctionnalits telles que le support de Kernel Mode Settings, la possibilit d'utiliser des plugins pour les thmes, etc Frederic Crozat sur son blog en a profit pour expliquer les diffrents types de gestionnaires de dmarrage utiliss sous Mandriva, et les possibilits offertes par Plymouth. http://blog.crozat.net/2009/08/boot-splashevolution-in-mandriva-linux.html

MIB Live Educational 2009.1

La communaut des utilisateurs de MIB (Mandriva Italia Backports) met disposition MIB Live Educational 2009.1. Ce DVD, bas sur la Mandriva 2009.1 Spring, utilise l'environnement GNOME et contient un large chantillon de logiciels ducatifs, ainsi que toutes les mises jour de Mandriva jusqu'au mois d'aot. http://mib.pianetalinux.org/mib/fr/mibnews/31-mib/412-mib-live-educational20091.html

La Mandriva 2010 marque un tournant au niveau du support de solutions avances de scurit, notamment avec le support du systme de TOMOYO Linux. Celui-ci a t intgr au noyau 2.6.30, et pour la Mandriva 2010.0, une interface graphique sera propose. Tomoyo est une implmentation MAC (Mandatory Access Control) pour Linux. En cela il a pour but d'offrir les mmes possibilits de restrictions que SELinux, mais en se basant sur les noms des fichiers, et non plus sur les attributs associs aux fichiers : cela permet de simplifier la prise en main et la gestion de TOMOYO. Cependant TOMOYO Linux, bien que plus simple prendre en main que SELinux, ne dispose toujours pas d'une interface graphique simple d'utilisation pour le configurer. Avec la Mandriva 2010.0, ce problme devrait tre rgl grce Tomoyo GUI. Pour tester Tomoyo GUI, il convient d'installer le paquetage tomoyo-gui, puis de red une architecture modulaire permettant marrer votre ordinateur afin que le support de d'ajouter des fonctionnalits via un sys- tomoyo soit activ. Ensuite il faut gnrer les tme de plugins, fichiers de configuration par dfaut de TO un outil en ligne de commande portable MOYO avec la commande suivante : sur toutes les distributions (netprofile), une interface graphique spcifique Man- /usr/lib/ccs/init_policy.sh fileonly-profile driva pour le grer (draknetprofile), le support des profils rseaux au sein de Une fois ceci fait, vous pouvez alors lancer tol'applet rseau de Mandriva. moyo-gui. Vous aurez alors la possibilit de Pour ajouter un nouveau profil rseau, c'est dfinir les restrictions par domaines. Tout d'asimple. Tout d'abord il convient de lancer bord, le mieux consiste passer en mode apdraknetprofile via le centre de Contrle Man- prentissage afin de connatre la liste des accs driva dans la section Rseau & Internet . du domaine. Ensuite, il vous suffira d'appliquer Une fois ceci-fait, il suffit de crer un nou- vos restrictions. Pour que ces restrictions soient veau profil rseau et de lui donner un nom. respectes, vous devrez passer le domaine dans Ensuite, il suffit de configurer vos diffrents le mode contraignant ( enforcing mode ). paramtres rseaux. Selon les plugins que Vous pourrez avoir plus d'informations vous aurez activs, vous pourrez alors sauve- sur TOMOYOP et ses possibilits sur le site garder les paramtres des connexions rseaux, du projet : http://tomoyo.sourceforge.jp/ Depuis pas mal de temps dj, Mandriva Linux disposait d'un outil permettant de grer les profils rseaux : draknetprofile. Cet outil permettait de sauvegarder les informations rseaux, et les services lancs au dmarrage afin de pouvoir les restaurer ultrieurement. On pouvait ainsi imaginer le cas simple d'un profil rseau professionnel avec les services ncessaires et la configuration rseau lorsque l'on est dans son entreprise ( authentification rseau, pare-feu ), et celui d'un profil rseau personnel avec ses propres paramtres. Cependant au fil du temps, cet outil ne fut plus maintenu, et il comportait de plus de nombreuses limitations. Pour la Mandriva 2010, Eugeni Dodonov a pour mission la rcriture du gestionnaire de profils rseaux, et de rendre celui-ci facilement extensible. Cette nouvelle version supporte les fonctionnalits suivantes :

Netprofile 2 : gestionnaire de profils rseaux

du pare-feu, des proxies, et ainsi de suite. chaque fois que vous allez configurer un lment, il vous sera rappeler pour quel profil rseau ces modifications seront appliques. Pour basculer d'un profil l'autre, on peut utiliser l'applet rseau de Mandriva (Clic droit ->Paramtres->Profil), ou alors utiliser le menu de gestion des profils rseaux qui s'affichera au dmarrage du systme.

Tomoyo-GUI

Linux+ 6/2009

Section dirige par : Julien Rosal linux@lpmagazine.org

Actus debian

ebian est une distribution Linux mais c'est surtout une norme machine compose de bnvoles runis dans un systme extrmement dmocratique. La moindre dcision doit tre dbattue avec la communaut pour avoir une distribution qui reflte au mieux le visage de tous les dveloppeurs. Une fois cela dit, vous imaginez bien qu'une dcision prise en comit restreint peut vite crer une polmique. La dcision (ou plutt l'ide) coupable est la suivante : Debian a dcid de rguler la sortie de ces versions. Ainsi tous les deux ans, en dcembre, la version de Debian sera gele pour permettre une sortie en dbut d'anne suivante. Cela permettra aux utilisateurs de se baser sur des plannings connus l'avance. Une ide qui a mis le feu aux poudres et les mailings-liste de Debian ont commenc se gonfler de posts polmiques. Selon Pierre Habouzit, membre de la "Release Team", il s'agit bien d'une ide, le dbat reste ouvert et il n'est pas question de "passer en force". Ce mme Pierre Habouzit explique d'ailleurs comment cette ide est arrive dans une des runions de la "Release Team" : "Pendant une runion de la release team Cambridge il y a quelques semaines, l'quipe est arrive la conclusion qu'il fallait rflchir selon deux axes : une release base sur une priode de freeze une date connue l'avance et une ventuelle synchronisation avec la version LTS (Long Time Support) d'Ubuntu pour donner plus de traction. On voulait voir si les gens du projet taient d'accord. C'est toujours discut". Ubuntu n'est pas tranger la mauvaise comprhension de la communaut de Debian sur ce sujet. En effet, Mark Shuttleworth, le fondateur d'Ubuntu, a entendu l'ide de la "Release Team" et l'a publiquement rvle comme s'il s'agissait d'une dcision dfinitive. Debian est une communaut trs particulire qui refuse toute forme de pouvoir, ds qu'une dcision est prise sans l'avis "global" des membres de la communaut il y a forcment des dchirements. Le dbat reste ouvert mais la "Release Team" semble vraiment vouloir se battre pour ce projet : "Les termes de notre annonce en ricochet sont encore trop forts. Ce n'est pas un fait accompli, mais la release team va se battre pour cette ide car ce serait plus lisible pour les gens de l'extrieur d'avoir un planning connu l'avance" explique Pierre Habouzit.

Democratie.deb

ia32-libs

Squeeze devrait tre la prochaine version de Debian

Ce qui a rellement choqu c'est que les membres de Debian ont appris la nouvelle par des personnes extrieures (dont Mark Shuttleworth). Sur le fond, le dbat donnera certainement raison la "Release Team" mais les formes n'y taient pas, la procdure a t court-circuite. Un autre petit problme consiste mettre en parallle les distributions Debian et Ubuntu. Les relations entre ses deux distributions ont toujours t tendues et le simple fait d'voquer une possible synchronisation des sorties des versions LTS (Long Time Support) et des versions Stable de Debian irrite beaucoup de dveloppeurs. Le dbat risque d'tre houleux comme l'explique Pierre Habouzit : "Il va y avoir des discussions sur les mailing-lists. Oui, des gens vont rler et il va y avoir de l'opposition. Les releases de Debian, c'est un mythe et ce changement serait un gros truc. Certains sont allergiques la synchronisation avec Ubuntu car historiquement les relations sont difficiles. Certains ont de vrais arguments". Il semblerait qu'un des principes de base de Debian commence vaciller : "une nouvelle version sort quand elle est prte". Un principe qui est certes trs sage mais qui ne correspond pas aux attentes des utilisateurs toujours en recherche de dernires versions de logiciels et cela mme au dtriment de la stabilit de leur systme. La dmocratie n'est pas morte chez Debian comme le souligne Pierre Habouzit : "Si la majorit est contre, on s'arrte l. Si on ne parvient pas un consensus, il y aura un rfrendum". Une tat d'esprit qui fait plaisir, les dbats d'ides sont importants dans un projet comme Debian et malgr les polmiques, le projet continue avancer sereinement. Affaire suivre...

Vous aviez certainement remarqu que les packages ia32-libs et ia32-libs-gtk avaient disparu des dpts Debian et cela au profit d'un autre package : ia32-apt-get. Et bien cela est termin, les deux packages qui avaient disparu retrouvent leur place et c'est tant mieux car ia32-apt-get avait beaucoup de dfaut et bon nombre de systmes se sont vus inutilisables aprs sont utilisation. Les packages ia32-libs et ia32-libsgtk permettent d'installer des applications 32 bits sur les architectures amd64, ce n'est certes pas parfait mais il faut bien avouer que a dpanne bien. Debian ne perd pas de vue que ces packages ne sont pas une solution en soi et travaille sur un support "multiarch" qui permettra d'installer les package debain 32bits directement sur votre architecture 64bits et cela en utilisant la puissance d'apt et de ses drivs. Une bonne nouvelle qui permettra de patienter jusqu' ce que toutes les applications soient disponibles en 64 bits... C'est pas encore gagn.
Happy Birthday

Le temps passe vite, Debian devient chaque jour de moins en moins jeune et le 16 aot dernier Debian a souffl sa 16me bougie. Un anniversaire qui montre que Debian n'est pas une distribution anecdotique, elle a russi traverser les ages ce qui est assez impressionnant vu les moyens financiers quasi nuls dont elle disposait l'poque. Remercions tous les bnvoles qui ont russi faire de Debian la distribution qu'elle est aujourd'hui. Petit dtail, amusant, Debian est n 16 ans exactement aprs la mort du King... Elvis Presley bien entendu... Je savais bien que le King n'tait pas mort, il a juste chang de mtier pour devenir dveloppeur Linux, enfin tout s'claire.
PureOSlight

Chaque jour une distribution Linux voit le jour et beaucoup sont bases sur Debian. PureOSLight n'chappe pas la rgle et sort la premire version de son OS (en version bta pour le moment). Cette distribution se base sur Debian Squeeze (version testing) et intgre les dernires versions des grand noms du logiciel libre. Cela permet d'avoir une distribution en Live qui est lgre et parfaitement fonctionnelle pour la plupart de vos besoins de tous les jours. Bref c'est une distribution glisser dans sa poche, en plus c'est du Debian, que demander de plus, euh non je voulais dire "what else ?". Pour la tlcharger : http://www.pureos.org/.

www.lpmagazine.org

Sur le DVD DVD

Installer Fedora 11 Leonidas


edora (ex Fedora Core) est l'une des distributions GNU/Linux les plus populaires. Parraine par la socit nord-amricaine Red Hat (qui dite une distribution GNU/Linux du mme nom), Fedora utilise le systme de paquetage (paquage) RPM. La distribution Red Hat se destine ouvertement aux entreprises tandis que Fedora vise clairement le grand public. Fedora propose donc uniquement des paquetages open-source et sans support. Toutefois, le fait qu'il n'existe aucune assistance officielle pour l'utilisateur particulier ne pose aucun problme puisqu'il existe une trs forte communaut Fedora mme de vous aider (forums, Wiki, documentation, etc...). La Fedora sort avec une compatibilit pour les processeurs i386 (et suprieurs), x86_64. Il existe 2 solutions pour installer la Fedora 11 : via un DVD contenant GNOME et KDE ou, via un Live CD utilisant GNOME ou KDE. renseignez-vous donc auparavant sur la procdure. D'autre part, restez vigilant lors de Dans ces deux cas de figure, le mode d'instal- cette tape afin de ne pas drgl le BIOS lation demeure quasiment identique ( peu de ce qui pourrait ensuite nuire au dmarrage dtails prs). de l'ordinateur. Dmarrez sur le DVD ou le CD puis :
Figure 2. Choix du type de partitionnement

Initialisation de l'installation

Vous devez avoir pralablement rgl le BIOS de votre machine pour pouvoir dmarrer avec le lecteur / graveur de CD / DVD. Ce paramtrage est fonction de votre BIOS ;

si vous utilisez le DVD, choisissez la premire option : Install or upgrade an existing system. Cliquez sur Next (Suivant) (Figure 1) afin de valider le test du DVD Cliquez sur Next (Suivant) ce qui vous permettra de slectionner :

(afin d'en vrifier l'intgrit). Un DVD l'intgrit corrompue conduira invitablement un chec de l'installation. Cette tape de test du mdia peut cependant tre saute si vous tes certain de son tat (test dj effectu), d'autant qu'elle dure 2 3 minutes, si vous utilisez le Live CD cliquez sur l'icne Install to Hard Drive (ou Installer sur le disque dur) situe sur le bureau.

la langue puis le clavier avec une installation par DVD, le clavier en installant via le Live CD.

Au sujet du choix du clavier, prfrez le Latin-9 qui vous donnera plus de possibilit que le Latin 1 (intgration du signe notamment) (Figure 2). Dsormais, les deux modes d'installation sont identiques.

Activation du rseau

Figure 1. Choix du clavier

Le priphrique rseau est paramtr automatiquement si vous tes connect en mode ethernet mais si vous tes en mode USB, il se peut que les pilotes ncessaires ne soient pas prsent sur le DVD. Vous pouvez aussi activer le rseau en mode manuel (nom du domaine, passerelle, DNS primaire et secondaire). Cliquez ensuite sur Suivant.

10

Linux+ 6/2009

Sur le DVD DVD

Fuseau horaire

Un mappemonde permet de slectionner le fuseau horaire. Il suffit de cliquer sur l'un des points jaunes. A moins que vous ne vouliez choisir dans une liste choix (fort longue). Si l'horloge doit tre mise l'heure automatiquement, validez l'option Horloge systme en UTC mais la machine devra tre alors connecte sur internet. Cliquez ensuite sur Suivant.

Mot de passe administrateur

Dans un systme GNU/Linux, l'administrateur s'appelle root. C'est le moment d'entrer son mot de passe et de le confirmer. Pour rappel, puisque l'administrateur a tous les droits : ne vous connectez jamais graphiquement en mode administrateur, n'utilisez le mode root que pour les oprations de maintenance (pas de bureautique, d'internet...), ne laissez pas traner le mot de passe administrateur et changez-le ds que quelqu'un l'aura dcouvert, choisissez un mot de passe assez long, avec des chiffres et des lettres en proscrivant les dates de naissance et les noms de vos proches (vraiment trop classique comme choix !).

Figure 3. Slection des partitions

et vous pourrez dfinir, outre son point de montage et son systme de fichier, sa taille en dfinissant le cylindre de dpart et celui d'arrive. Vous pouvez aussi dtruire une partition existante via le bouton Supprimer afin de librer de l'espace car il est impossible de reCliquez ensuite sur Suivant. dimensionner une partition existante. Si vous dtruisez une partition, soyez sr de ce que Partitionnement vous faites ! Finalement, cet installateur AnaCliquez sur Suivant pour parvenir l'tape du conda permet de crer vos partitions avec bien choix des partitions. Une fentre vous montre peu d'ergonomie et de souplesse. Mieux vaut alors les diffrents disques durs utilisables donc partitionner pralablement avec GParted (Figure 3). C'est donc ici que nous allons partitionner (si les partitions ne sont pas encore cres). Quatre choix s'offrent dans le menu droulant en haut de la fentre : Utiliser la totalit du disque, Remplacement du systme Linux existants, Rduire la taille du systme actuel, Utiliser l'espace disque, Crer un partitionnement personnalis.

Live CD, GParted tant une application open source (et gratuite) qui sait grer, outre les systmes de fichiers GNU/Linux, les systmes de fichiers Windows Fat32 et NTFS. Pour monter une partition, cliquez sur la partition voulue puis sur le bouton Modifier et dfinissez le point de montage (Figure 4). Vous spcifierez aussi si vous dsirez formater et dans quel systme de fichier (Formater comme) ou ne pas formater. La partition swap est dtecte et monte automatiquement si elle existe dj.

Pour les quatre premires options, vous resterez vigilant lors de la slection des disques durs voulu afin de ne pas perdre vos prcieuses donnes. Cliquez ensuite sur Suivant. Nous allons maintenant crer et monter nos partitions de faon personnalise. Par monter les partitions, comprenez dfinir leur place dans le systme. Si vous avez choisi l'option du partitionnement personnalis, c'est ici mme que nous allons crer les partitions. Pour crer une partition partir d'un espace vide, cliquez sur l'espace libre puis sur le bouton Nouveau Figure 4. Choix du type de partition

www.lpmagazine.org

11

Sur le DVD DVD

Ext3, outre la partition de swap. L'installation par DVD ne pose pas ce problme. Par prudence, continuez utiliser le format Ext4 pour la partition Home (/home). Sachez cependant (et par exprience !) que vous ne pourrez installer Fedora si l'un de vos disques durs possde plus de 15 partitions. De mme, il est possible que vous deviez abandonner provisoirement le montage de vos partitions Windows afin de russir votre installation. Si vous adoptez un partitionnement par dfaut, l'installateur Anaconda utilisera le schma suivant : /boot, / (racine), swap.

Figure 5. Le choix par dfaut avec la partition racine en Ext4 et la partition boot en Ext3

Prcisons que, gnralement, un systme GNU/Linux se dcompose en plusieurs partitions : Partition swap : systme de fichier Linux Swap : change de donne en complment de la mmoire RAM : obligatoire : jusqu' 1 Go, Partition / (racine) : systme de fichier Ext4 (sous Fedora) : contient le systme : obligatoire : une installation complte du DVD prend environ 9 Go, Partition /home : systme de fichier Ext3 ou Ext4 (sous Fedora) : contient les donnes utilisateurs : recommande : selon vos besoins, Partition /usr : systme de fichier Ext3 ou Ext4 (sous Fedora) : contient les applications non administratives au format RPM : optionnelle : 5 9 Go pour ne pas tre l'troit ventuellement mais cet espace pourra alors venir en rduction de la partition racine,

Partition /usr/local : systme de fichier Ext3 ou Ext4 (sous Fedora) : contient les applications non administratives compiles par l'utilisateur d'aprs les sources : optionnelle : selon les besoins mais cet espace pourra alors venir en rduction de la partition racine, Partition /tmp : systme de fichier Ext3 ou Ext4 (sous Fedora) : contient les fichiers temporaires : optionnelle, Partition /boot : systme de fichier Ext3 (sous Fedora) : contient les fichiers ncessaires au dmarrage : optionnelle sachant que 100 Mo devraient suffire.

Si vous avez dfini vos partitions, vous pouvez cliquez sur Suivant. Si vous avez demand le formatage des partitions, une demande de confirmation vous sera affiche (tant mieux !). Validez par Ecrire les modifications sur le disque ou abandonnez avec Revenir en arrire. BOREL Thierry

Sur le rseau
Projet Fedora : http://fedoraproject.org Site Fedora Francophone : www.fedora-fr.org Communaut Planet Fedora Francophone : http://planet.fedora-fr.org Documentation : http://doc.fedora-fr.org/wiki/Accueil GRUB : http://doc.fedora-fr.org/wiki/GRUB_: _Les_bases_pour_Fedora Windows XP et Fedora : http://doc.fedora-fr.org/wiki/Dual_ boot_Windows_XP_-_Fedora Tlcharger Fedora : http://doc.fedora-fr.org/wiki/ Tlcharger_Fedora Liste d'applications : http://doc.fedora-fr.org/wiki/Liste_ de_logiciels Yum : http://doc.fedora-fr.org/wiki/YUM_: _Configuration_du_gestionnaire_ de_paquets

Figure 6. Derniers rglages post-installation

C'est galement dans cette fentre que vous pourrez monter vos partitions Windows en systme de fichier Fat32. On monte ces partitions dans /mnt/votre_partition. Attention : si vous installez depuis un LiveCD, vous obtiendrez un message d'erreur critique (impossible de continuer sans revenir en arrire pour corriger la cause) si la partition racine (/) n'est pas formate en Ext4 ! Le format de fichier Ext4 est le nouveau choix par dfaut de Fedora 11. Cependant, la version actuelle du chargeur GRUB n'est pas compatible avec l'Ext4 et il faut donc crer galement et obligatoirement une partition /boot au format Ext3 sous peine de ne pouvoir dmarrer Fedora. C'est pourquoi si vous choisissez de remplacer un systme Linux existant, l'installateur proposera un nouveau partitionnement incluant une partition racine (/) en Ext4 et une partition boot (/boot) en

12

Linux+ 6/2009

Sur le DVD DVD

Sil vous est impossible de lire le DVD alors quil na pas de dfaut apparent, essayez de le lire dans un autre lecteur.

6/2009

Pour tout problme concernant le DVD, crivez-nous ladresse : dvd@lpmagazine.org

10

Linux+ 5/2009

Dossier Logiciels Libres

Comment utiliser
Philippe Scoffoni

des logiciels open source en entreprise


Les logiciels open source sont en train d'envahir les entreprises grande vitesse. Tous les compartiments du systme d'information de l'entreprise sont concerns, des services rseau aux logiciels de gestion. Mais qui sont-ils ? D'o viennent-ils et comment les met-on en place ? Autant de questions sur lesquelles nous allons nous pencher dans cet article.

ommenons par dfinir ce qu'est un logiciel open source. Avant cela, il est important d'voquer les logiciels libres. Ces derniers ont t dfinis par Richard Stallman fondateur de la Free Foundation Software et rpondent des rgles au nombre de quatre : Libert 0 : La libert d'excuter le programme pour tous les usages ; Libert 1 : La libert d'tudier le fonctionnement du programme ce qui suppose l'accs au code source ; Libert 2 : La libert de redistribuer des copies ce qui comprend la libert de vendre des copies ; Libert 3 : La libert d'amliorer le programme et de publier ses amliorations ce qui suppose, l encore, l'accs au code source.

linux@software.com.pl

Cet article explique...


Le principe des logiciels open source et les avantages que l'on peut tirer de leur utilisation en entreprise.

connue aussi sous lacronyme GPL. Mais bien souvent, idologie et monde des affaires ne vont pas de pairs. C'est alors qu'est apparu le terme open source avec la volont de mettre en avant la mthode de dveloppement plutt que la finalit philosophique ou politique. Il s'agissait aussi de lever l'ambigut du terme anglais Free qui signifie aussi Gratuit et ainsi rappeler aux utilisateurs qu'un logiciel a un cot. Un organisme a t cr : l'Open Source Initiative qui a valid un certain nombre de licen-

On voit en ces rgles le caractre idologique qui soustend le logiciel libre. Richard Stallman a galement rdig une licence destine faire respecter ces rgles pour tout logiciel qui l'utiliserait : la licence publique gnrale GNU

Ce qu'il faut savoir...


Connaissance des bases de l'informatique et des rseaux.

14

Linux+ 6/2009

Dossier Logiciels Libres

ces tout comme l'a fait la Free Foundation Software. Dans la pratique, un logiciel dont la licence est libre au sens de la Free Foundation Software est galement open source, mais il peut arriver qu'une licence open source ne soit pas libre, mais c'est plutt rare. Bien qu'il existe une relle divergence d'opinions entre les deux communauts, dans la pratique cela ne les empche pas de collaborer et de travailler ensemble, car elles partagent le mme mode de fonctionnement bas sur l'ouverture du code et la collaboration.

Topologie des logiciels open source

Dans cette partie, nous allons expliquer la topologie des logiciels Open Source. Commenons par les logiciels communautaires.

Les logiciels communautaires


Il s'agit de logiciels dont le dveloppement, la maintenance et la documentation sont raliss par une communaut de personnes lies entre elles par l'intrt commun qu'elles partagent pour celui-ci. Les petits projets sont en gnral ports par quelques personnes qui assurent la coordination des dveloppements et la gestion des sources de l'application sans qu'il existe de relles structures juridiques. Lorsque les projets prennent une ampleur un peu plus consquente, la communaut adopte souvent la forme d'une organisation but non lucratif pour structurer son fonctionnement. Il s'agit souvent de fondations. Parmi les plus clbres, on peut citer la fondation Apache ou encore la fondation Mozilla qui gre le dveloppement du navigateur web Firefox ou encore le client de messagerie Thunderbird.

Les logiciels de socits commerciales


L'organisation classique qui sous-tend les logiciels propritaires repose en gnral sur des socits commerciales. Certains projets de logiciels open source ont galement choisi ds leur origine ou au cours de leur volution d'adopter ce statut. L'objectif est de financer le dveloppement du logiciel open source en vendant des prestations de services autour de celui-ci ou bien grce des investisseurs privs. C'est un modle qui est en passe de devenir prdominant dans le secteur du logiciel open source pour les entreprises. On assiste galement une vague de rachat de ces diteurs open source depuis quelques annes par les grands noms historiques de l'informatique. Ainsi, ORACLE a rachet rcemment SUN et tous les logiciels open

source dits par ce dernier dont le moteur de source ne prsente que peu voir pas de risbase de donnes MySQL ou encore la suite ques juridiques. Il en va autrement lorsque bureautique Open Office. lon utilise ces mmes logiciels dans le cadre de solutions mises disposition de tiers. Ce Existe-t-il des logiciels open sont donc principalement les diteurs de logisource pour tous les besoins ciels ou de services utilisant des briques open de l'entreprise ? source qui doivent faire preuve de vigilance. Mme s'il est toujours possible de trouver un Les conseils dun bon juriste ne sont donc pas exemple de domaine logiciel ou l'open source carter bien au contraire. est peu prsent, il n'en demeure pas moins vrai Bien entendu, le rappel du Gartner Group qu'ils savent aujourd'hui rpondre la quasi- de la ncessit dune gouvernance propre aux totalit des besoins d'une entreprise. logiciels open source est justifie. Elle est cePour l'infrastructure, les solutions pour pendant tout aussi ncessaire que pour les lomonter un rseau local avec tous les services giciels propritaires dont les licences peuvent de base existent et sont parfaitement matures et galement comporter des risques juridiques. robustes : gestion de la couche rseau (adressage IP, gestion des noms de machines), partage Quels sont les freins l'adoption couramment avancs ? de fichiers, d'imprimante, authentification. On trouve bien sr des systmes d'exploi- Le Forrester Research a publi une tude rtation complets pour les ordinateurs de bureau vlant les deux principaux freins ladoption avec tous les outils classiques comme les trai- du logiciel open source : tements de textes, tableur, gestionnaire de base de donnes, client de messagerie, navigateur La scurit, Le support logiciel, web, etc... Viennent ensuite les logiciels mtiers : Il semblerait donc quil y ait toujours un im Des ERP (Enterprise Resource Planning portant dficit de communication auprs des ou Progiciel de gestion intgr) qui entreprises sur le modle open source et son prennent en charge la gestion commer- fonctionnement. quoi cela peut-il tenir ? ciale, gestion des stocks, la facturation, Lopen source ou le Logiciel Libre nest-il vu la comptabilit, la paie. que comme un rducteur de cot ? Probable Des CRM (Customer Relationship Mana- ment. gement ou Gestion de la Relation Client) Il est vident que la comprhension que souvent coupls avec les logiciels prc- peut avoir une entreprise de lopen source dents. ne peut se construire en un seul jour. Lopen Des GED (gestion lectronique de docu- source est bien trop souvent valu sur les ment). mmes critres que les logiciels propritaires Et toute sorte de programme rpondant masquant ainsi leurs avantages. des besoins moins gnraux... Revenons aux points prcdents. Les logiciels open source sont-ils moins srs que Y-a-t-il des risques les utiliser ? les logiciels propritaires? Dans une tude de novembre 2008, le Gartner Tout dabord, la question en elle-mme Group pointe du doigt les entreprises en les ac- na que peu de sens. Un logiciel reste un logicusant de ne pas mesurer les risques inhrents ciel. Un dveloppeur a tout autant de chance lutilisation des logiciels open source en en- de faire un code peu scuris dans les deux vironnement critique. En cause la multiplicit modles. La diffrence rside dans louvertudes licences de ces logiciels et le peu datten- re du code qui permettra un audit ais par des tion que leur accorderaient les entreprises tiers externes. Un logiciel propritaire devra prenant le risque de se voir attaquer pour des faire appel un prestataire pour cela. problmes dutilisation illicites de brevets. Il serait prfrable de mettre plus en On se souviendra que Microsoft avait ac- avant le mode de conception et damlioracus lopen source de violer 235 de ces bre- tion centr sur lutilisateur ou plutt le convets, ainsi que des menaces de procs suite tributeur. Il sagit comme lexplique Bernard l'accord pass entre Novell et Microsoft. Stiegler dans une rcente interview, dun Ces affaires ont marqu les esprits. basculement entre deux modles conomiDans le cadre dune utilisation pour des ques : on est pass dun processus hirarbesoins internes y compris dans des applica- chique, produit par le haut pour redescendre tions critiques comme la messagerie, lopen vers les applications, l innovation ascen-

www.lpmagazine.org

15

Dossier Logiciels Libres

dante . Lopen source rpond bien cette dfinition. Une autre mtaphore exprimant cette diffrence est celle d'Eric Raymond l'un des fondateurs du mouvement open source qui a intitul son ouvrage phare : La cathdrale et le bazar en rfrence aux logiciels propritaires et open source. N'allez cependant pas croire qu'il n'y a pas d'organisation ni de chef dans un projet open source. Il existe une organisation souvent tout aussi stricte que dans les projets traditionnels. Cette rupture avec des logiques traditionnelles et accepte depuis des annes pourrait tre lorigine de cette incomprhension par les entreprises du modle de lopen source. En ce qui concerne le support, les socits de services sont capables de proposer des tierces maintenances pour toutes les solutions open source avec lavantage pour lentreprise de pouvoir changer de prestataire plus simplement.

Les arguments en faveur des logiciels open source

Voici une rapide synthse des arguments en faveur des logiciels open source.

Respect des standards ouverts


Cest une des forces des logiciels libres et open source. Les protocoles et formats de donnes quils utilisent sont ouverts donc documents. Pas dobscurs formats qui vous empcheront lavenir de changer de solutions.

Interoprabilit
Ce point rejoint le prcdent. Les protocoles et formats ouverts permettent aux logiciels open source de communiquer entre eux plus facilement. Vous pouvez ainsi construire des solutions en additionnant les briques tout en gardant des flux cohrents ou changer facilement de logiciel sans devoir convertir toutes vos donnes au nouveau format.

Flexibilit
Louverture du code permet denvisager des modifications afin de personnaliser un logiciel open source. Cependant, il faut penser les volutions de faon ce quelles puissent tre reverses dans le logiciel. Lavantage est ensuite de voir ce dveloppement maintenu par la communaut. La participation au projet reste un point important pour les entreprises, mme si au premier abord cela ne semble pas vident.

Scurit
Toujours grce louverture du code, des corrections de scurit peuvent tre propo-

ses rapidement par nimporte quel membre Les aspects budgtaires et choix des prestations d'accompagnement de la communaut associe au logiciel. Le volet budgtaire doit tre tout particuPrennit lirement soign surtout si vous tes amen Deux cas distinguer : les logiciels issus de comparer des solutions propritaires et open communauts et ceux des diteurs commer- source. Il faut montrer et mettre en vidence ciaux. Dans le premier cas la prennit est lie les diffrences qui existent dans la structure la diffusion du logiciel et limportance de sa des cots entre ces deux solutions. Cest soucommunaut offrant le potentiel dune relve vent le chapitre qui est le plus pluch lorsque en cas de dfaillance dun des membres actifs. lon en arrive au stade de la dcision mme Pour les diteurs open source la question sil nest pas le seul critre. est un peu plus dlicate. Sans communaut Pour une solution open source, le poste les paulant, la prennit peut se poser dans les licence est en gnral nul. Je dis en gnral, mmes termes que les diteurs propritaires. De car certaines solutions open source ont un plus, la concentration des logiciels open source cot de licence lorsque lon souhaite les utidans les mains de quelques gros diteurs com- liser des fins commerciales ou encore dismerciaux accentue encore cette problmatique. poser de certaines fonctions avances. Citons En effet dans ce modle les dveloppeurs sont par exemple la base de donnes MySQL. en gnral rmunrs par la socit. Si la socit Viennent ensuite les prestations . Si vous dcide d'arrter les dveloppements, il y a une dcidez de prendre en charge la mise en rupture possible dans la continuit de service. uvre, assurez-vous den avoir rellement Cependant, c'est un aspect qu'il faut nua- les comptences et ne vous contentez pas ncer, car bien souvent ces grands diteurs sont des tutoriels que vous pourriez avoir trouvs lis avec leurs clients par des contrats de main- sur Internet pour faire baisser le cot de votre tenance qui les obligent fournir au moins des projet. correctifs pour une priode donne. Enfin derNhsitez pas intgrer des cots de fornier argument et pas des moindres, la licence mation que ce soit pour vous ou pour les utiliopen source permet potentiellement une sateurs surtout si vous touchez aux outils qui autre socit de reprendre tout ou partie du leur sont mis disposition. Dautant que ces logiciel son compte. formations peuvent passer sur le budget correspondant dans votre socit et amliorer de Matrise du Systme d'Informations de cette faon le cot final. lentreprise Les conomies ralises sur les licences Consquence des points noncs prcdem- doivent vous permettre de vous faire accomment, vous matrisez davantage les volu- pagner techniquement alors, faites appel une tions de votre SI. Socit de Service en Logiciel Libre (SSLL Les arguments cits peuvent aussi sappli- ou SS2L). quer des solutions propritaires, mais il est Il s'agit de Socit de Services en Ingplus rare de les voir cumuler tous ces avan- nierie Informatique (SSII) qui se sont spciatages en mme temps dautant que certains lises dans les logiciels libres ou open source. comme louverture du code restent spcifiques Cependant, les SSII classiques proposent de aux logiciels open source. plus en plus des prestations autour des logiciels open source. Comment construire son projet Finissons par les cots de maintenance. open source L encore deux solutions : vous l'assurez en Dans labsolu, la conduite dun projet open interne ou vous souscrivez un contrat de supsource ne diffre gure de celle dun projet port auprs de lditeur du logiciel open sourmettant en uvre des outils propritaires. ce. Ils le proposent tous aujourdhui. Dans Vous n'chapperez donc aucune des phases le cas des logiciels communautaires, vous classiques de recueil des besoins, danalyse, pouvez aussi faire appel une SSLL pour de recherche de solutions et de vrification cela. de ladquation du logiciel au besoin. En rsum, ne faites pas dconomie sur Car ne nous y trompons pas, choisir un les prestations. Cest un point mettre en logiciel open source juste parce quil est open avant : plus de service grce aux conomies source sans sassurer de son adquation aux sur les licences, pour un projet en principe besoins est un bon moyen de faire chouer mieux accompagn donc aux chances de un projet. Il peut y avoir des situations o un succs optimal. Ce nest pas une garantie, logiciel propritaire sera mieux adapt. mais cest mieux que de partir avec un d-

16

Linux+ 6/2009

Dossier Logiciels Libres

ficit en assistance parce que les licences ont dvor tout le budget. La prsentation budgtaire doit au final montrer une comparaison des cots sur au moins trois ans voire cinq ans, car cest l aussi que les solutions open source se distinguent surtout si vous prvoyez une extension du primtre de dploiement de votre application dans les annes qui suivent.

Sur Internet
http://www.journaldunet.com/ solutions/dossiers/libre/ sommaire.shtml Le Journal du Net : Dossier Logiciels Libres / Open source http://fr.wikipedia.org/wiki/Open_ source Wikipdia : Open source http://www.opensource.org/ Open source Initiative http://www.fsf.org/ Free Software Fundation http://www.osalt.com/ Trouver une alternative open source un logiciel propritaire http://fr.wikipedia.org/wiki/Eric_Steven_Raymond Wikipdia : Eric Raymond http://seddisoft.kelio.org/cathedralebazar.htm La Cathdrale et le Bazar : traduction franaise

Participer au mouvement des logiciels open source


Les entreprises peuvent aussi participer, on dit plutt contribuer au dveloppement d'un logiciel open source. Soit directement en proposant les modifications apportes un logiciel la communaut ou l'diteur qui le maintient. Soit en demandant explicitement au prestataire de faire cette opration. Agir ainsi est se donner une possibilit de profiter de ce que l'on peut appeler une externalit positive. En effet si la communaut accepte d'intgrer vos modifications dans le logiciel, vous bnficiez de fait d'une maintenance gratuite et prenne de votre investissement. C'est donc un point qui doit aussi tre intgr dans les spcifications d'un projet open source. Comment faire en sorte que le dveloppement que je m'apprte raliser soit ensuite intgr au logiciel. Bien sr ce n'est pas toujours possible, il peut s'agir de modifications lies votre infrastructure informatique et qui de fait n'intresseront personne d'autre. La meilleure solution est toujours d'interroger la communaut des utilisateurs pour avoir leur avis sur la fonctionnalit que vous souhaitez dvelopper. Ainsi en anticipant cette possibilit vous vous donnez la possibilit d'amliorer le retour sur investissement. Une dmarche qui n'est d'ailleurs par toujours facile, car bien souvent elle peut dclencher la crainte de voir un avantage concurrentiel potentiel rutilis par la concurrence. Dans ce cas il est possible de diffrer le reversement du code source dvelopp la communaut.

investissement. Il est d'ailleurs important de noter que les grands industriels de l'conomie numrique que sont Amazon ou Google utilisent massivement les logiciels open source. Mme Microsoft, figure emblmatique du logiciel propritaire commence reconnatre ce modle des vertus et publie de plus en plus de codes sous licence open source. Les logiciels open source remplacerontils les logiciels propritaires ? Probablement pas. Mais un mixte des deux modles va continuer d'exister. Nous assistons actuellement un r-quilibrage des parts de marchs qui n'est pas encore fini. Cet article est mis disposition sous contrat Creative Commons paternit et partage des conditions initiales lidentique version 3.0 France.

propos de l'auteur
Philippe Scoffoni est responsable informatique. Son exprience d'une quinzaine d'annes acquise en socit de services et dans son poste actuel lui a permis de se confronter une grande diversit d'environnements techniques. Il a dcouvert les logiciels open source il y a maintenant plus de 6 ans et a pu de nombreuses reprises les mettre en uvre que ce soit titre personnel ou dans le cadre de son activit professionnelle.

Conclusion

Comme nous venons de le voir la mise en place de logiciels open source rpond bien souvent aux mmes rgles et bonnes pratiques que celles de leurs homologues propritaires. La couverture fonctionnelle de ces derniers est extrmement large. Ils offrent aux entreprises une opportunit pour amliorer leur comptitivit grce leur trs bon retour sur

www.lpmagazine.org

17

Programmation Programmation Java

Dbuter avec JavaFX


Pascal Barbier

Le but initial de la technologie JavaFX est de simplifier la conception dapplications avec des interfaces riches et de permettre leur distribution facile sur de nombreuses plateformes connectes : tlphones portables, PC sous Windows, Linux ou Mac-OS. Nous allons montrer dans cet article lavantage de la simplicit pour le dveloppeur, la portabilit multiplateforme, les capacits offertes en effets graphiques et en animations et enfin la souplesse procure par la possibilit dinterfacer toutes les technologies Java existantes.

vant de commencer dvelopper des interfaces avec JavaFX, il nous faut installer le Framework. Plusieurs possibilits soffrent ladresse : http://javafx.com/downloads. Cette page propose le tlchargement dun plugin JavaFX pour NetBean, celui pour Eclipse ainsi que les add-ons pour les logiciels de dessin Illustrator et Photoshop. Pour ma part, je conseille aux dbutants de tlcharger le SDK qui propose lensemble complet doutils pour dmarrer avec la technologie. Il ne faudra quun JDK 1.6 pour travailler. En effet le SDK contient : les librairies et leurs sources, le compilateur et ses outils, lexcutif pour Windows, un mulateur de tlphone portable, la documentation et des exemples. Pour aller plus loin, linstallation de lenvironnement de dveloppement Netbean ou dEclipse avec le plugin JavaFX permettront daugmenter la productivit. Dans le cadre de cet article, je nutiliserai que le SDK. Plongeons maintenant dans la syntaxe de ce nouveau langage. Avec un diteur de texte quelconque, plaons les lignes suivantes dans un fichier dont lextension devra

obligatoirement tre .fx. Attention ; le nom du fichier deviendra le nom de la classe Java gnre par le compilateur. Si le code doit gnrer plusieurs classes (gestionnaires d'vnements par exemple), les autres classes seront automatiquement nommes en utilisant le nom du fichier source suivi du signe $ et d'un suffixe. Pour crer une fentre dinterface utilisateur, nous utilisons un objet Stage (voir listing 1). Pour compiler le code ainsi rdig, nous lanons la commande :
javafxc Prog.fx

linux@software.com.pl

Cet article explique...


Les principes de la technologie JavaFX. Sa mise en uvre pour raliser des interfaces utilisateur. La cration d'effets graphiques et d'animations. Le dploiement multi-plateforme.

18

Linux+ 6/2009

Programmation Programmation Java

javafxpackager pour crer un package de dploiement :


javafxpackager -src rep -appClass Prog -p mobile

Figure 1. Une interface simple

Pour lancer le programme, nous utilisons lexcutif javafx :


javafx Prog

Allons un peu plus loin et plaons dans cette fentre quelques contrles. Pour cela, nous allons placer une scne dans la fentre. La scne reprsente lespace utile de la fentre. Dans cette scne, nous allons utiliser un lment VBox pour disposer des lments les uns au dessous des autres. En haut, un label, au milieu un bouton et en bas un second bouton. Ajoutons une variable compteur de type entier. Cette variable est lie llment label. Cette liaison permet au label dafficher en permanence et automatiquement la valeur de la variable. Les deux boutons sont caractriss par une fonction de traitement qui modifie la valeur de la variable. Voici le code, et le rsultat (cf. Listing 2). Voici le code (cf Liting 2), et le rsultat (cf. Figure 1). Le principe gnral du langage apparat ici clairement. Jai dcrit la disposition des lments graphiques. Je nai, aucun moment, dfini les procdures et dtails de la mise en uvre de cette interface graphique. JavaFx est un langage plutt dclaratif. Le databinding permet de saffranchir galement de dtails rptitifs dans le traitement des interfaces utilisateur. Une autre caractristique intressante du langage est sa portabilit. En effet, nous venons en quelques lignes de raliser une petite application de type Desktop. C'est--dire une application qui sexcute sur un poste de travail de type PC dans une interface utilisateur graphique. Pour installer cette application dans un tlphone portable dot dun excutif JavaFX, il suffit dutiliser la commande

Attention, le rpertoire rep sera entirement explor et tous les fichiers source dextension fx seront compils et intgrs dans le package. La commande gnre un rpertoire dist dans lequel on trouvera deux fichiers : un jar et un jad. Ces fichiers doivent tre dploys sur le portable. Pour simplifier le dveloppement, Sun nous fournit un mulateur de portable (cf. Figure 2). Pour excuter notre application dans cet environnement, il faut lancer la commande :
emulator -Xdescriptor:dist/Prog.jad

Des effets sans efforts

Ce qu'il faut savoir...


Pour comprendre cet article vous devrez connatre. La syntaxe de Java. Les grands principes des interfaces homme-machine (IHM) graphiques.

Une des caractristiques les plus intressantes de JavaFx est la facilit de mise en uvre deffets graphiques plus ou moins sophistiqus. Pour exemple, un simple dgrad de couleur va donner un peu de relief notre fentre lapparence bien plate (cf. Listing 3). Ici leffet est un dgrad vertical qui donne une apparence cylindrique. Les coordonnes sont donnes en relatif la taille de la fentre grce des valeurs comprises entre 0 et 1. La valeur 0 est en haut ou gauche, la valeur 1 en bas ou droite de la fentre. La proprit stops fournit un tableau de deux ou plusieurs valeurs de couleur ainsi que leur position relative dans le dgrad. Ici jai choisi de placer du bleu au dbut et la fin du dgrad (positions 0 et 1) et le gris au milieu de ce dgrad (position 0.5). L'interpolation des couleurs est ralise automatiquement par l'environnement excutif. Pour obtenir un autre effet, lexemple qui suit utilise un dgrad radial qui donne un rendu sphrique (cf Figure 4). Un autre effet de base, trs pris, est lombre. Plusieurs possibilits soffrent au designer pour cela. Ici jai choisi leffet DropShadow qui dessine une sorte de halo autour du bouton (cf. Figure 5). Cet effet est plus efficace sur un fond clair et uni.
Button {text:"Augmente" action: function(){compteur++} effect: DropShadow{radius:10} }

Figure 2. Application JavaFx dans un tlphone

des traitements simples ou sophistiqus d'images tels que la rotation, l'agrandissement ou le rtrcissement, les dformations diverses... Tous ces effets sont appliqus par une simple description des oprations souhaites, comme dans l'exemple prcdent. Sur le mme principe, les animations vont complter la palette d'outils mis disposition du dveloppeur d'interfaces utilisateur riches.

Cration d'animations

JavaFX permet facilement d'ajouter des animations dans les applications. Pour aborder simplement ce sujet, j'ai choisi d'afficher un petit rectangle qui va grandir et rtrcir rgulirement. Je commence par crer une variable rect de type Rectangle et une scne qui contient ce rectangle. L'animation est constitue d'une variable de type TimeLine qui comporte des KeyFrame. Chaque KeyFrame

Figure 3.

JavaFX propose en standard un grand nom- Effet cylindre bre d'autres effets graphiques. En particulier (gradient)

Figure 5. Figure 4. Effet sphrique Ombre sur un bouton (gradient)

www.lpmagazine.org

19

Programmation Programmation Java

Listing 1. Cration d'une fentre


import javafx.stage.Stage; Stage { title: "Contrles JavaFX" }

Intgration de toutes les technologies Java

Listing 2. Code pour une fentre avec quelques contrles


import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; var compteur : Integer; Stage { title: "JavaFX" scene: Scene { width: 100 height: 100 content: VBox { translateX: 20 translateY: 10 spacing: 10 content: [ Label { text: bind compteur.toString() } Button {text: "Augmente" action: function() { compteur++ } } Button {text: "Diminue" action: function() { compteur-- } } ]} } }

Listing 3. Crer un effet de dgrad vertical

fill: LinearGradient { startX: 0 startY: 0 endX: 0 endY: 1 stops: [ Stop { offset: 0.0 color: Color.BLUE}, Stop { offset: 0.5 color: Color.DARKGRAY }, Stop { offset: 1.0 color: Color.BLUE}, ] }

Listing 4. Effet dgrad sphrique


fill: RadialGradient { centerX: 0.5 centerY: 0.5 stops: [ Stop { offset: 0.0 color: Color.rgb(150,150,150) }, Stop { offset: 1.0 color: Color.rgb(30,30,30)}, ] }

Arriv ce stade, on pourrait imaginer que JavaFX est un tout nouveau langage : nouvelle syntaxe, nouvelle commande de compilation, nouvelle commande d'excution. Pourtant, en examinant les fichiers crs par le compilateur Javafxc, on aperoit des fichiers bien familiers : le compilateur gnre des fichiers class, au mme format que leurs anctres gnrs par notre bon vieux compilateur javac. Mais alors, pourquoi n'utiliset-on pas la commande java.exe ou javaw.exe pour excuter l'application ainsi construite ? Pour bnficier d'un nouvel environnement excutif qui intgre toutes ces technologies graphiques. Partant de ce constat, il parat vident que la compatibilit avec les autres librairies Java pouvait tre facilement conserve. C'est ce qu'a prvu Sun. Heureusement d'ailleurs car en parcourant rapidement la documentation de l'API de JavaFX, on constate que la syntaxe est trs limite. Pour utiliser une classe d'une librairie Java traditionnelle, il suffit dans le code d'en importer la classe. Par exemple, si je veux afficher un texte sur la console, je peux appeler la mthode println de l'objet out dclar statique dans la classe System (en fait cette mthode est dconseille car elle ne fonctionnera que sur certaines plateformes disposant d'une console. Un TVSet ou un tlphone portable n'offriront pas cette fonctionnalit. ce propos, il existe une classe javafx.lang.FX qui donne accs, comme en java la classe System, au systme d'exploitation. Voici le code pour utiliser la mthode println :
import java.lang.System; System.out.println(err_mess);

Conclusion

est une tape de l'animation. Elle est dfinie par une date dans l'animation et une action applique cette tape. Ici, l'action est de changer la taille du carr. L'attribut autoReverse dtermine si la squence est reprise dans le mme sens ou en sens inverse chaque fois. L'attribut repeatCount dfinit le nombre de rptitions (cf. Listing 5). Cette animation ne brille pas par sa fluidit. Je pourrais ajouter des KeyFrame inter-

mdiaires pour amliorer la situation mais le code va rapidement grossir inutilement. Heureusement, JavaFX a prvu un mcanisme d'interpolation. Le code qui suit reprend les deux tapes prcdentes mais la notation => demande l'excutif de crer une interpolation de valeurs. J'ai galement profit de cette seconde version pour montrer une notation plus concise pour dfinir les KeyFrames simples (la notation at; cf.Listing 6).

Ce bref article ne peut remplacer une formation complte ou les documentations de l'diteur. Si vous voulez explorer les possibilits de cette nouvelle technologie, je vous conseille d'aller visiter le site Internet de Sun : http://javafx.com. En examinant de prs cette nouvelle technologie d'interface utilisateur, on s'aperoit qu'elle a visiblement t conue pour concurrencer les Flex et autres Silverlight. Le langage de script parat plutt vieillot dans sa conception, compar des langages plus modernes comme Action Script 3. Toutefois, il faut reconnatre qu'il reste assez simple et donc rapidement as-

20

Linux+ 6/2009

Programmation Programmation Java

Listing 5. Animation
import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.paint.*; import javafx.scene.shape.*; import javafx.animation.*; var rect = Rectangle {x: 50,y: 50,height:50,fill: Color.GREEN};

Sur le Net
http://javafx.com Le site officiel de Sun http://java.developpez.com/faq/ javafx Quelques rponses trs utiles aux premires questions qu'on se pose quand on utilise JavaFX http://www.sun.com/software/javafx Une prsentation (en Anglais) de JavaFX http://java.sun.com/javafx Le site de ressources des dveloppeurs JavaFX. http://java-javafx-iipt.blogspot.com Un blog plein de ressources. http://www.javafx.fr Un site Franais qui, on l'espre, continuera s'enrichir.

var anim = Timeline { repeatCount: Timeline.INDEFINITE; autoReverse: true; keyFrames: [

action: function():Void { rect.width=30; } } action: function():Void { rect.width=50; } }

KeyFrame { time: 0s; KeyFrame { time: 1s; ] } anim.playFromStart(); Stage { title: "JavaFX"

scene: Scene { width: 150 height: 150 content: rect; } }

Listing 6. Animation avec interpolation


import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.paint.*; import javafx.scene.shape.*; import javafx.animation.*; var rect = Rectangle {x: 50,y: 50,height:30,fill: Color.GREEN}; var anim = Timeline { repeatCount: Timeline.INDEFINITE; autoReverse: true; keyFrames: [

similable, contrairement ses concurrents. Pour le dveloppeur Java traditionnel, il prsente l'norme intrt de faire disparatre une grande quantit de code rptitif et fastidieux li au traitement des interfaces utilisateur trs graphiques (traitement de l'image, animations). Pour des actions plus procdurales et moins graphique anim, il est toutefois plus prudent de se rabattre sur le bon vieux code Java. Pour le moment, les deux mondes (Java et JavaFX) s'ignorent plutt. Certes des progrs ont t faits dans les plugins pour NetBean et pour Eclipse mais cela reste grandement amliorer. Gageons que Sun saura faire le ncessaire dans les annes venir pour rendre ce nouvel environnement de dveloppement d'interfaces utilisateur riches un environnement incontournable.

at(0s) { rect.width=>30 } at(1s) { rect.width=>50 } ] } anim.playFromStart(); Stage { title: "JavaFX" scene: Scene { width: 150 height: 150 content: rect; } }

propos de l'auteur
L'auteur est formateur en informatique depuis plus de 25 ans. Ses principaux domaines d'intervention sont les systmes (Unix, Linux et Windows), les rseaux, les langages et les bases de donnes. Il forme surtout des personnels techniques dans les grandes entreprises franaises et trangres. Il est galement consultant sur des projets de dveloppement et assure le support technique d'une quipe de dveloppeurs en Roumanie.

www.lpmagazine.org

21

Programmation Java, problmes de performance

Java
Marcin Kalas

problmes de performance
Mme une application trs bien crite peut donner une mauvaise impression un utilisateur si elle a des problmes lis la performance. Les longues priodes sans rponse de la part du programme ou la ncessit de redmarrer l'application au bout de quelques heures de travail peuvent dcourager l'utilisateur. Cet article prsente les outils et les stratgies utiliser lorsque ce type de problme apparat dans votre application.

Garbage Collector optimisation des paramtres de la gestion de la pile

Garbage collector est responsable du processus de la gestion automatique de la mmoire. Parmi ses tches se trouvent l'allocation et la libration de mmoire derrire les objets auxquels les rfrences n'existent plus dans le code de l'application lance (et la garantie que les objets utiliss par l'application resteront dans la mmoire). La gestion de la mmoire est une tche complexe et peut avoir un impact considrable sur la performance de l'application. cause d'une configuration incorrecte des paramtres du garbage collector, la machine virtuelle peut passer la plupart de temps grer la mmoire et non excuter le code de votre application. Heureusement, le cas contraire est galement possible : grce une configuration correcte, il est possible d'augmenter considrablement la performance de votre application. Afin d'valuer la performance du garbage collector, il est possible d'utiliser les mtriques suivantes : dbit relation de la dure, exprime en pour cents, pendant laquelle la machine virtuelle excutera le

code de l'application, par rapport la dure totale du travail du programme. Le dbit ne doit pas tre infrieur 98 % pour une application dont lesparamtres de la pile sont configurs correctement ;

Cet article explique


Comment identifier les symptmes des problmes lis la performance dans une machine virtuelle Java ; Quelles donnes diagnostiques sont indispensables pour rsoudre un problme donn ; Comment collecter les informations diagnostiques indispensables ; Quels outils utiliser pour diagnostiquer un problme ; Comment rsoudre un problme et vrifier la solution implmente.

22

Linux+ 6/2009

Programmation Java, problmes de performance

dure de la pause dure pendant laquelle la machine virtuelle Java n'excute pas le code de l'application et est charge de grer la mmoire ; dure entre chaque cycle conscutif du garbage collector ; frquence des cycles du garbage collector ; taille de la pile.

Listing 1. Logs verbose:gc gnrs par la machine virtuelle IBM (stratgie par dfaut du garbage collector)

<af type="tenured" id="240" timestamp="Apr 29 23:53:23 2009" intervalms="1343.508"> <minimum requested_bytes="1016" /> <time exclusiveaccessms="0.015" meanexclusiveaccessms="0.015" threads="0" lastthreadtid="0x39F88300" /> <refs soft="2" weak="5" phantom="1" dynamicSoftReferenceThreshold= "10" maxSoftReferenceThreshold="32" /> <tenured freebytes="8320096" totalbytes="943718400" percent="0" > <soa freebytes="0" totalbytes="934281216" percent="0" /> <loa freebytes="8320096" totalbytes="9437184" percent="88" /> </tenured> <gc type="global" id="240" totalid="240" intervalms="1343.562"> <timesms mark="162.169" sweep="13.252" compact="0.000" total="175.480" /> <tenured freebytes="312675064" totalbytes="943718400" percent="33" > <soa freebytes="304054920" totalbytes="934281216" percent="32" /> <loa freebytes="8620144" totalbytes="9437184" percent="91" /> </tenured> </gc> <tenured freebytes="312674048" totalbytes="943718400" percent="33" > <soa freebytes="304053904" totalbytes="934281216" percent="32" /> <loa freebytes="8620144" totalbytes="9437184" percent="91" /> </tenured> <refs soft="2" weak="5" phantom="1" dynamicSoftReferenceThreshold= "10" maxSoftReferenceThreshold="32" /> <time totalms="175.545" /> </af>

N'oubliez pas que la performance de votre application doit toujours tre value du point de vue de l'utilisateur. De son point de vue, les exigences peuvent concerner une dure minimale de la pause, un dbit maximal ou les deux. En ce qui concerne les applications de fentres, la dure de la pause constitue un paramtre critique. De longs cycles de travail du garbage collector peuvent avoir un impact dsavantageux sur le confort du travail de l'utilisateur qui peut tre irrit par l'absence d'une rponse rapide de la part de l'application ou par le fait qu'elle plante (dans le cas des cycles suprieurs 1[s]). Dans les applications JEE, le dbit de l'application (autrement dit le nombre maximal de transactions que le systme est capable de grer en une second) constitue le facteur le plus important.

Symptmes d'un choix incorrect des paramtres du garbage collector


Les problmes relatifs un choix incorrect des paramtres du travail du garbage collector entranent avant tout la baisse de la performance de l'application. Parmi les paramtres critiques se trouvent notamment : taille maximale et minimale de la pile, stratgie du garbage collector ainsi que taille de toutes les zones de la pile dans le cas des stratgies utilisant les gnrations. Le travail de l'application peut se terminer par une exception OutOfMemoryError ou bien le processus de la gestion de la mmoire s'excutera plus longtemps que

le code de l'application dans les situations extrmes (en pratique le dbit infrieur 90 % signifie un travail incorrect du garbage collector). Parmi les symptmes les plus importants d'un choix incorrect des paramtres du garbage collector se trouvent : baisse de la performance de l'application aprs un travail prolong ( cause d'un choix incorrect de la taille de chaque zone de la pile, dans le cas des stratgies du garbage collector qui utilisent les gnrations, les piles peuvent tre remplies rapidement lors du travail de l'application et les cycles du garbage collector seront plus longs et plus frquents) ; augmentation de la performance de l'application aprs le redmarrage de la machine virtuelle (un redmarrage de la machine virtuelle peut par exemple supprimer la fragmentation de la pile) ;

dure ressentie par l'utilisateur pendant laquelle l'application ne rpond pas ses commandes (potentiellement longs cycles du garbage collector) ; analyse des logs verbose:gc indique que le dbit est infrieur 90 %.

Collecter les donnes diagnostiques


Afin d'valuer la performance du garbage collector, il faut collecter les logs verbose: gc. Ils fournissent toutes les informations indispensables l'analyse. Malheureusement, le format de ces logs n'est pas standard et ils sont diffrents non seulement dans les implmentations diffrentes de la machine virtuelle mais aussi dans les versions conscutives. Il est possible d'activer les logs verbose:gc au moyen de l'option -verbose:gc transmise la machine virtuelle Java lors du dmarrage de l'application (cette option active les logs verbose:gc sur la machine virtuelle d'IBM et de Sun). titre d'exemple, pour collecter les logs

Ce qu'il faut savoir


Comment compiler et lancer une application Java ; Comment la machine virtuelle Java gre la mmoire ; Comment collecter les informations relatives l'utilisation du processeur, de la mmoire, des ressources disque, de la mmoire swap.

www.lpmagazine.org

23

Programmation Java, problmes de performance

verbose:gc, il faut lancer votre application de taille des objets copis entre les gnrations manire suivante : diverses. De plus, les logs contiennent une trace du temps du cycle et la dure de l'excujava -verbose:gc tion de toutes les phases. MyJavaApplication Dans la version 5.0, la pile est divise en trois zones : young generation, old generaL'emplacement des logs verbose:gc dpend tion et permanent generation les logs verbode l'implmentation de la machine virtuelle. se:gc contiennent des informations lies touJava fourni par Sun redirige par dfaut les tes ces zones. Si le cycle du garbage collector logs verbose:gc la sortie standard. Dans le concerne une zone destine aux objets d'une cas de la machine virtuelle d'IBM, les logs dure de vie courte (en anglais nursery), le verbose:gc seront redirigs au flux standard format des logs se prsentera de manire suid'erreurs. Nous recommandons toutefois vante : d'enregistrer les logs dans un fichier concret (il faut alors s'assurer que le disque contient [GC [<collector>: un espace suffisant pour enregistrer les fi- <starting_occupancy1> -> chiers). Il est possible de le faire sur la machine <ending_occupancy1>(<size1>), virtuelle de Sun au moyen d'une option <pause_time1> secs] supplmentaire -Xloggc:gcLogFile.log. <starting_occupancy3> -> En ce qui concerne la machine IBM, vous <ending_occupancy3>(<size3>), obtiendrez le mme rsultat grce l'option <pause_time3> secs] -Xverbosegclog:gcLogFile.log. Il est possible de transmettre des paramtres sup- Voici les significations des symboles : plmentaires avec l'option -verbose:gc ; ces paramtres permettent d'obtenir des infor- collector nom interne du rcuprateur mations plus dtailles relatives au procesutilis pendant le cycle ; sus de la gestion de la mmoire. Il faut tou- starting_occupancy1 occupation du jours s'assurer que les logs contiennent une nursery avant le dbut du cycle ; trace du temps de chaque cycle du garbage ending_occupancy1 occupation du collector ainsi que l'information relative nursery aprs le dbut du cycle ; l'occupation de toutes les zones de la pile size1 taille de la zone destine aux objets d'une dure de vie courte ; (c'est particulirement important lorsque la pause_time1 dure de rcupration de pile est divise en plusieurs gnrations). la zone destine aux objets d'une dure de vie courte ; Interprtation

starting_occupancy3 utilisation totale de la pile avant le dbut du cycle ; ending_occupancy3 utilisation totale de la pile une fois le cycle termin ; size3 taille totale de la pile ; pause_time3 dure totale.

Nous vous prsentons ci-dessous un fragment des logs verbose:gc contenant les informations sur deux cycles qui concernent la zone destine aux objets d'une dure de vie courte :
0.257: [GC 0.257: [DefNew: 3648K->448K(4096K), 0.0175056 secs] 36187K->36183K(58332K), 0.0175841 secs] 0.281: [GC 0.281: [DefNew: 4096K->448K(4096K), 0.0061237 secs] 39831K->39829K(58332K), 0.0062072 secs]

des logs verbose:gc

Le premier cycle a commenc 257[ms] aprs le lancement de la machine virtuelle. 3,64 [Mo] de 4,1 [Mo] au total taient utiliss dans la zone destine aux objets d'une dure de vie courte avant le dbut du cycle. Suite au travail du garbage collector, 3,2[Mo] de la mmoire ont t libr ; une fois le cycle termin, 0,44[Mo] de cette zone tait occup. La dure de la rcupration s'lve 17[ms]. L'utilisation totale de la pile avant le dbut du cycle tait gale 36,187[Mo] de 58,3[Mo]

Les logs verbose:gc contiennent toutes les informations relatives au processus de la gestion automatique de la mmoire. Pour les analyser, nous utilisons principalement les outils spcialiss (par exemple, IBM Garbage Collection and Memory Visualizer) qui permettent non seulement d'effectuer une analyse graphique mais qui contiennent aussi un rapport gnral avec les conseils concernant les paramtres de la pile. Nous recommandons toutefois de faire connaissance du format de ces logs et des options supplmentaires qui peuvent faciliter l'analyse.

SUN JVM
Il est ncessaire de transmettre l'option -XX: et -XX:+PrintGCTimeStamps avec l'option -verbose:gc. Cette dmarche vous permettra d'obtenir des informations supplmentaires relatives la taille de toutes les zones de la pile (avant et aprs la fin du cycle), la taille totale de la pile et la Figure 2. Utilisation de la pile par l'application test
+PrintGCDetails

24

Linux+ 6/2009

Programmation Java, problmes de performance

disponibles. Une fois le travail du garbage collector termin, l'utilisation totale de la pile n'a pratiquement pas diminu et s'lve 36,183[Mo]. La question se pose alors : que s'est-il pass avec la mmoire libre dans la zone des objets d'une dure de vie courte ? Dans ce cas-ci, ces objets n'ont pas t supprims mais copis dans la zone des objets d'une dure de vie plus longue (en anglais tenured).

IBM JVM
Le Listing 1 prsente des exemples de logs verbose:gc. La balise d'ouverture <af> vous informe de l'origine du cycle du garbage collector. Dans l'exemple mentionn il s'agissait d'une allocation de la mmoire choue (en anglais allocation failure). Parmi d'autres possibilits se trouvent <con> (si le garbage collector travaille au mme temps que l'application) ou <sys> (si le cycle est le rsultat de l'appel de la mthode System.gc()). Pour contrler l'occupation de la pile, nous utiliserons les balises <tenured>. Le log joint comprend trois balises de ce type. La premire d'entre elles contient l'information sur l'occupation de la pile avant le dbut du cycle. La balise suivante (intgre dans l'lment <gc>) est une utilisation de la pile une fois le cycle termin. La dernire rptition de la balise <tenured> vous parle de l'tat de la pile aprs que l'allocation choue de la mmoire (qui a provoqu le cycle du garbage collector) a russi. La balise <minimum

constitue la de transaction, o la transformation de la taille de cette allocation. demande de l'utilisateur exige un accs la Toutes les situations ne sont pas bien vi- base de donnes et le retard dans le rseau demment propices au redmarrage de la ma- a aussi un impact sur la dure de la rponse, chine virtuelle avec l'option -verbose:gc (en l'activation des logs verbose:gc n'aura particulier dans le cas d'un environnement qu'une influence minime sur la perforde production). Il est possible d'activer dy- mance de l'application. Dans le cas des namiquement la connexion d'informations applications qui utilisent principalement les relatives la gestion automatique de la ressources du processeur pendant le travail, mmoire aussi bien sur la machine virtuelle cette influence peut tre plus grande. Avant de Sun que d'IBM. Nous pouvons le faire d'activer les logs verbose:gc dans un envien utilisant le Management API ou JVM ronnement de production, nous recommanTool Interface. Un exemple d'utilisation du dons de raliser un test et d'valuer un imManagement API pour suivre le travail du pact rel de la gnration des logs sur la pergarbage collector se trouve dans le rper- formance de notre application. En gnral, toire suivant : $JAVA_HOME/demo/manage- aprs l'activation des logs verbose:gc, la dure ment (o $JAVA_HOME est le rpertoire du cycle du garbage collector ne doit pas o JDK, l'installation de Sun, a t install). augmenter de plus que 2 %. titre d'exemIl est galement possible d'activer les logs ple, si la relation de wla dure passe la gesau moyen de l'outil fourni avec JDK (par tion de la mmoire la dure totale du traexemple, Sun avec JDK fournissent l'outil vail de l'application s'lve 5 %, ce temps graphique Jconsole) ou, dans le cas des ser- systme augmentera jusqu' 5,1 %. veurs de l'application, au moyen de la console d'administration (par exemple, dans le Outils de diagnostic serveur de l'application WebSphere, nous Pour analyser compltement les logs veractiverons les logs verbose:gc de manire bose:gc, il est indispensable d'tre muni suivante : Servers->ApplicationServers-> des outils chargs de prsenter les donnes serverName->Java and Process Manage- collectes sous forme graphique et de crer ment->Process Definition->Java Virtual Ma- un rapport sommaire. Nous recommandons chine->Runtime->Verbose garbage collec- Garbage Collection and Memory Visualizer tion). pour analyser les logs verbose:gc. Cet outil Le temps systme de gnration des est fourni avec le paquet IBM Support Aslogs verbose:gc dpend en grande partie de sistant. Mis part la prsentation graphique notre application. Dans le cas des systmes de diffrents paramtres de la gestion automatique de la mmoire (notamment, la taille de la pile utilise avant la fin du cycle et le nettoyage aprs la fin du cycle, la dure de la pause), l'outil analysera les logs et suggrera les paramtres susceptibles d'amliorer le travail du garbage collector.
requested_bytes="1016" />

IBM Support Assistant

Figure 3. Les logs verbose:gc de l'application o une fuite de la mmoire a t simule

IBM Support Assistant est un paquet d'outils permettant de diagnostiquer les problmes relatifs au logiciel WebSphere. Si vous n'utilisez pas ce logiciel (par exemple WebSphere Application Server), il est possible d'opter uniquement pour les outils permettant de diagnostiquer les problmes relatifs la machine virtuelle Java. Vous pouvez tlcharger IBM Support Assistant gratuitement depuis les sites Web d'IBM. Les mises jour automatiques des outils de diagnostic ainsi que la possibilit d'utiliser la plupart d'entre eux avec la machine virtuelle Sun constituent une qualit supplmentaire lie l'utilisation de ce paquet.

www.lpmagazine.org

25

Programmation Java, problmes de performance

Afin d'utiliser les outils de diagnostic de la machine virtuelle, il faut dans un premier temps installer le support du produit qui utilise la machine virtuelle Java (par exemple WebSphere Application Server). Pour ce faire, slectionnez dans le menu Update>Find new>Product Add-ons. Ensuite, slectionnez WebSphere Application Server (par exemple, version 7.0) dans l'arbre et slectionnez les outils de diagnostic demands l'cran suivant. Parmi les outils les plus intressants se trouvent : Garbage Collection and Memory Visualizer il permet de diagnostiquer les problmes relatifs la gestion automatique de la mmoire ; IBM Thread and Monitor Dump Analyzer for Java il permet de diagnostiquer les problmes relatifs l'arrt de la machine virtuelle ; Java Health Center cet outil permet de se connecter la machine virtuelle dmarre et d'obtenir des informations sur : le nettoyage (dure de la pause, dbit, taille de la pile), les moniteurs utiliss par l'application et les statistiques de mthodes effectues par l'application (frquence de l'excution du code d'une mthode donne, frquence de l'apparition d'une mthode dans la trace de la pile des threads).

Optimisation des paramtres du garbage collector


Le choix des paramtres appropris du travail du garbage collector s'effectue en trois tapes. La premire tape consiste slectionner une taille correcte de la pile : sa taille minimale et maximale. Ensuite, en fonction des exigences par rapport notre application (dbit maximal ou dure de la pause minimale), nous slectionnons la stratgie approprie du garbage collector.

Stratgies du Garbage Collector

La machine virtuelle IBM, version 5.0, vous propose au choix quatre stratgies optimises du point de vue des scnarios dfinis : optthruput stratgie par dfaut du garbage collector. Elle est recommande pour les applications o le dbit est plus important qu'une brve dure de la pause. Le nettoyage de la pile s'effectue par les threads parallles (appels threads

sert d'un thread individuel pour nettoyer esclaves), dont le nombre est infrieur les zones de deux gnrations. Il est au nombre de processeurs logiques, possible d'utiliser le collecteur dans les et par le thread matre. Il est vit dans applications qui ne demandent pas une cette stratgie d'effectuer la dfragmencourte dure de pause et qui sont pourtation de la pile et la plupart de cycles vues d'une taille relativement petite de la ne comprennent que les tapes mark pile (en dessous de 256 [Mo]). et sweep. optavgpause l'objectif de cette stratgie Parallel Collector collecteur par dfaut consiste minimiser la dure de la pause dans la machine serveur. Pour nettoyer la du garbage collector (mme au prix de zone d'objets d'une dure de vie courte, la dgradation du dbit). Une partie du le collecteur utiliser les threads paraltravail du garbage collector est effectu lles, ce qui permet de bnficier de la dans cette stratgie paralllement au code puissance des processeurs supplmentaide l'application. Cette stratgie se prte res. Grce cette dmarche, la dure de trs bien aux programmes qui ncessila pause est rduite et le dbit est amtent des pauses minimales, provoques lior. La zone d'objets d'une dure de vie par le travail du garbage collector. Il plus longue est nettoye au moyen d'un est possible d'activer la stratgie optathread individuel (de manire analogivgpause en transmettant le paramtre que au Serial Collector). Le collecteur Xgcpolicy:optthruput lors du dmarrage peut tre utilis dans les applications de la machine virtuelle. qui ne demandent pas une courte dure gencon cette stratgie traite diffremde la pause. ment les objets d'une courte dure de vie Parallel Compacting Collector collecteur utilisant les threads parallles pour par rapport aux objets d'une dure de vie nettoyer la zone de deux gnrations. plus longue. Un autre collecteur est utiLes threads parallles qui nettoient la lis pour chacun de ces groupes d'objets zone d'objets d'une dure de vie plus lon(collecteur qui copie et nettoie la zone gue permettent d'amliorer le dbit (et de d'objets d'une courte dure de vie et colminimiser la dure pendant laquelle l'aplecteur qui travaille paralllement avec parition s'arrtera). Le collecteur se prte l'apparition et qui nettoie la zone d'objets trs bien aux applications o le dbit est d'une dure de vie plus longue). Cette le plus important. Pour en bnficier, il stratgie se prte parfaitement aux applifaut transmettre le paramtre -XX:+Usecations de transaction (dans lesquelles la ParallelOldGC lors du dmarrage de la plupart d'objets ont une courte dure de machine virtuelle. vie qui correspond la dure de l'excution de la transaction). Pour activer Concurrent Mark-Sweep Collector collecteur le plus avanc qui excute une la stratgie gencon, il faut transmettre partie du travail paralllement avec l'aple paramtre -Xgcpolicy:gencon lors du plication. Cette solution permet de minidmarrage de la machine virtuelle. miser la dure pendant laquelle l'appari subpool l'algorithme d'allocation de la mmoire a t optimis dans cette strattion s'arrtera. Le collecteur est destin gie. Le nettoyage de la pile s'effectue de aux applications ncessitant la plus courte manire analogique la stratgie optthrudure de la pause possible. Pour l'utiliser, put. Pour activer la stratgie subpool, il faut transmettre le paramtre -XX: il faut transmettre le paramtre -Xgc+UseConcMarkSweepGC lors du dpolicy:subpool lors du dmarrage de la marrage de la machine virtuelle. machine virtuelle. La dernire tape consiste slectionner les Dans la machine virtuelle Sun, version 5.0, autres paramtres de gestion de la pile tels toutes les stratgies utilisent les gnrations que : taille de toutes les gnrations (dans le (dans la machine virtuelle IBM, seule la stra- cas de la stratgie utilisant les gnrations) et tgie gencon utilise les gnrations). La stra- seuil d'occupation de la pile (une fois le seuil tgie par dfaut dpend du type de la machine dpass, la pile sera rduite ou augmente). o l'application sera lance. Vous avez les De plus, la machine virtuelle Sun fournit des mcanismes permettant d'optimiser types suivants de collecteurs au choix : automatiquement les paramtres du travail Serial Collector collecteur par dfaut du garbage collector : dure minimale de la dans la machine client. Le collecteur se pause (option -XX:MaxGCPauseMillis=n) ou

26

Linux+ 6/2009

Programmation Java, problmes de performance

dbit maximal (option -XX:GCTimeRatio=n). D'aprs les valeurs transmises, la machine virtuelle slectionne automatiquement les paramtres supplmentaires afin d'atteindre l'objectif demand. Aprs toute modification des paramtres, il est indispensable d'effectuer des tests de performance et d'valuer l'impact des paramtres utiliss. La vrification est indispensable avant d'utiliser les paramtres slectionns dans l'environnement de production. Afin de paramtrer la taille maximale et minimale de la pile, il est indispensable de dfinir la taille maximale et minimale de la zone occupe par notre application. Le garbage Collector tentera de choisir la taille de la pile de sorte que l'occupation de la pile (une fois le cycle termin) ne dpasse pas le seuil o son travail optimal est possible (dure du cycle et sa frquence). Les limites par dfaut de ce seuil sont diffrentes pour la machine virtuelle IBM et Sun. Dans la machine virtuelle IBM, la priode d'occupation de la pile est comprise entre 40 % et 70 %. Ces limites peuvent tre modifies au moyen des paramtres -Xmaxf (quantit maximale de la zone libre qui entrane la rduction de la pile si elle est dpasse) et -Xminf (taille minimale de la zone libre qui entrane l'augmentation de la pile si elle est dpasse). Dans la machine virtuelle Sun, les limites par dfaut de cette priode (version 32-bits, systme d'exploitation Solaris) sont comprises entre 30 % et 60 %. Ces limites peuvent tre modifies au moyen des paramtres -XX:MinHeapFreeRatio (lorsque la limite suprieure de cette priode est dpasse, la taille de la pile est augmente) et -XX:MaxHeapFreeRatio (lorsque la limite infrieure de cette priode est dpasse, la taille de la pile est rduite). La taille maximale de la pile (qu'il est possible de dterminer au moyen du paramtre -Xmx) doit tre choisie de manire permettre le travail du garbage collector dans la priode dcrite ci-dessus. Si l'utilisation de la pile dpasse la limite suprieure de la priode (70 %), la pile se remplira rapidement et provoquera des cycles trs frquents du garbage collector. Nous pouvons admettre la zone maximale de la mmoire, utilise par notre application + 50 %, en tant que point de dmarrage de la taille maximale de la pile. Ensuite, une fois les tests effectus, cette taille peut tre augmente. Si l'occupation de la pile descend endessous de la limite infrieure de la priode

(40 %), la frquence des cycles du garbage collector se rduira (nous avons notre disposition une grande zone de la mmoire donc le remplissage de la pile sera plus lent). Ces cycles peuvent tre en revanche plus longs en raison de la zone tendue nettoyer. Le dbit de l'application sera galement dtrior. La taille minimale de la pile (qu'il est possible de dfinir au moyen du paramtre -Xms) ne doit pas tre trop grande (nous dconseillons de paramtrer une taille minimale et maximale de la pile avec la mme valeur). Grce cette dmarche, lors du dmarrage de la machine virtuelle et de l'augmentation de la taille de la pile, la dfragmentation s'effectuera sur une zone rduite. Sinon, le premier dmarrage du processus du garabage collector peut prendre beaucoup de temps et tre onreux.

menter avec la version 6.0 de la machine virtuelle.

Zone maximale de la pile trop petite


Dans un premier temps, nous analyserons le comportement de la machine virtuelle IBM lorsque la taille maximale de la pile est trop petite et les objets placs sur la pile dpassent 70 % de sa taille maximale. Avec une telle configuration et pour rpondre aux demandes de cration de nouveaux objets, le garbage collector essayera : de supprimer la fragmentation de la pile ; d'augmenter sa taille.

Application test
La suite de l'article prsentera les exemples de problmes relatifs au processus de la gestion automatique de la mmoire et les manires pour les rsoudre. Pour ce faire, nous utiliserons une application test qui simule l'utilisation de la pile. L'application cre quatre tableaux dont la taille totale s'lve 350 [Mo] comprenant les tableaux d'octets de tailles diverses (l'application allouera les objets des tailles 100 [o], 1 [ko] et 64 [ko]. Les objets dans ces tableaux seront rafrachis dans une boucle une frquence variable (30 % d'objets changera durant le travail de l'application, les 70 % restants constitueront les objets qui vivent tout au long de son fonctionnement). L'application sera galement utilise dans la suite de l'article au moment o nous analyserons la fuite mmoire et les arrts de l'application Java.

Configuration des applications test


Avant de lancer l'exemple, il faut ouvrir le fichier conf.bat pour l'dition et paramtrer les variables suivantes : IBM_JVM_5_ROOT, SUN_JVM_5_ROOT.

Les variables doivent pointer sur le rpertoire d'accueil de la machine virtuelle (la premire variable pointe sur la machine virtuelle d'IBM et la seconde sur la machine virtuelle de Sun). Les exemples ont t tes- ts sur la machine virtuelle, version 5.0 ; nous vous encourageons toutefois expri-

Puisque nous dpassons la priode du travail optimale du garbage collector, les cycles seront frquents, ce qui rduira la performance. De plus, la dfragmentation effectue par le garbage collector augmentera la dure des cycles (les tests seront effectus pour la stratgie optthruput pour laquelle la dfragmentation n'est effectue dans aucun cycle). Nous lanons l'application au moyen du script startExample_1.bat qui se trouve dans le rpertoire Example1-GarbageCollector. Les logs verbose:gc seront enregistrs dans le fichier heapTooSmall.log. L'application travaillera pendant 4 minutes. Pendant cette priode, nous pouvons prendre connaissance des paramtres transmis lors du dmarrage de la machine virtuelle (il est possible d'ouvrir le fichier pour l'dition dans notre diteur texte prfr). Pour effectuer l'analyse, nous optons pour l'outil Garbage Collection and Memory Visualizer [GCMV] disponible dans le paquet IBM Support Assistant (avant de commencer l'exercice, il est indispensable de configurer le paquet IBM Support Assistant et d'installer les outils ncessaires ; nous avons dcrit la configuration dans l'encadr IBM Support Assistant). Une fois le paquet IBM Support Assistant lanc, nous slectionnons Analyze Problem->Garbage Collection and Memory Visualizer dans l'onglet Home et indiquons le fichier gnr avec les logs verbose:gc. Afin d'valuer l'occupation de la pile, il faut apporter sa taille ainsi que le degr de son occupation aprs la fin du cycle du garbage collector sur le schma : VGC Heap Data>Heap size. VGC Heap Data>Used heap (after global collection).

www.lpmagazine.org

27

Programmation Java, problmes de performance

De plus, il faut apporter les points suivants seulement dans l'environnement de production sur le schma : en provoquant l'augmentation progressive de l'utilisation de la pile. un moment, la VGC Data > Summary, zone de la pile occupe est tellement grande VGC Data > Tunning recommendation, que le garbage collector n'est plus capable VGC Pause Data > Pause time. de travailler de manire efficace (ce qui entrane des cycles longs o l'application ne rLa Figure 2 prsente l'occupation de la m- pond plus aux actions de l'utilisateur). Dans moire par l'application test. Puisque notre le cas du serveur de l'application, nous pouapplication utilise 83 % de la pile (il est vons souvent avoir l'impression que le serpossible de le vrifier d'aprs les informa- veur s'est soudainement plant (par exemtions rcapitules dans l'onglet Report aprs ple, au bout de quelques jours de travail). avoir ajout le rapport VGC Data Sum- Et la machine virtuelle termine le travail mary), les cycles seront trs frquents, ce avec l'exception java.lang.OutOfMemory qui dtriorera la performance de notre ap- Error. plication. Avec la taille maximale de la pile Bien videmment, l'exception susmengale 500 [Mo], le dbit ne s'lve qu' tionne ne doit pas forcment constituer un 91,5 % (pendant 9 % de la dure de l'excu- synonyme d'une fuite de la mmoire (il est tion du programme, l'application tait donc peut tre possible de rsoudre le problme arrte). en augmentant la taille maximale de la pile). Il est possible d'amliorer la situation Tout incident de ce type dans un environneen augmentant la taille de la pile de manire ment de production doit toutefois tre vri permettre le travail lorsque l'occupation de fi. Augmenter la taille maximale de la pile la pile est infrieure 70 %. Nous ouvrons peut s'avrer une solution temporaire cadonc le fichier startExample_1.bat pour chant le vrai problme qui rapparatra plus l'dition et modifions la taille maximale de la tard. pile 900 [Mo] (paramtre -Xmx). Nous lanons de nouveau le test et nous vrifions les Symptmes de la fuite rsultats ( l'aide de GCMV). Grce l'aug- de la mmoire mentation de la taille maximale de la pile, la L'augmentation progressive de l'utilisation de performance de l'application s'est considra- la pile par l'application, qui mne jusqu' l'exblement amliore : seulement 3 % de la dure ception java.langOutOfMemoryError (cette ont t utiliss pour grer automatiquement exception est gnre lorsque la pile n'a plus la mmoire. La Figure 2 prsente la taille de suffisamment de mmoire pour y placer un la pile, la zone de la pile utilise par l'appli- nouvel objet), est un symptme typique cation une fois le cycle termin ainsi que la d'une fuite de la mmoire. De plus, le travail dure de la pause. Les points symbolisent les de l'application ne justifie pas l'augmentacycles respectifs. tion observe de l'utilisation de la mmoire (par exemple, cache de l'application). L'apFuites de la mmoire parition de cette exception est trs souvent La gestion automatique de la mmoire permet prcde par un travail plus lent de l'applide rsoudre la plupart de problmes qu'un cation provoqu par les cycles frquents du programmeur rencontrera lors de l'alloca- garbage collector. tion et la dsallocation des objets sur une pile. Il est toutefois possible (et dans les ap- Collecter les donnes plications Java cela arrive trs souvent mal- diagnostiques heureusement) que des rfrences l'objet, Afin de diagnostiquer la fuite de la mmoire, qui ne sera plus utilis dans la suite du pro- nous pouvons utiliser les logs verbose:gc dgramme, ne sont pas supprimes. Ces rf- crits dans le chapitre prcdent. Ils nous perrences peuvent bloquer la possibilit de d- mettront de constater l'augmentation progsallouer cette zone. Le fait que la rfrence ressive de l'utilisation de la mmoire par un objet donn est supprime uniquement notre application. Malheureusement, il sera dans certains cas (par exemple, lorsqu'une impossible de dterminer d'aprs ces logs si erreur de l'application est incorrectement cette augmentation rsulte du travail normal traite par un programmeur qui ne dsalloue de l'application (par exemple, l'augmentation pas toutes les ressources utilises) compli- de la charge gnre par les utilisateurs) ou que trs souvent la situation. Le problme bien s'il s'agit d'une fuite mmoire classique. n'apparat pas souvent pendant les tests mais Afin de confirmer une fuite de la mmoire,

il faut collecter des informations supplmentaires. Pour ce faire, nous utiliserons des clichs mmoire (en anglais heap dump), contenant des informations relatives tous les objets sur la pile. Le clich mmoire gnr par la machine virtuelle contient des informations relatives : aux objets qui se trouvent sur la pile ; aux classes ; aux objets auxquels la machine virtuelle a un accs direct (en anglais garbage collector roots) : aux variables locales (paramtres transmis l'entre de la mthode ou objets locaux prsents dans la trace de la pile du thread) ; aux classes systmes ; aux variables locales dans le code natif (dfini par l'utilisateur ou la machine virtuelle) ; aux variables globales dans le code natif (dfini par l'utilisateur ou la machine virtuelle) ; aux moniteurs actifs.

Il est possible de raliser les clichs mmoire de plusieurs manires diffrentes : en transmettant des paramtres supplmentaires lors du dmarrage de la machine virtuelle, en envoyant ensuite un signal appropri ou bien en utilisant les outils de diagnostic (solution plus simple). Afin de raliser un clich mmoire en envoyant le signal la machine virtuelle, il faut lancer notre application avec les paramtres suivants (Sun JVM 5.0) :
-XX:+HeapDumpOnOutOfMemoryError

cette option fera gnrer un clich mmoire lors de l'apparition de l'exception java.lang.OutOfMemoryError (nous recommandons de lancer la machine virtuelle avec cette option. En cas de problmes, nous disposerons alors des donnes permettant d'analyser le problme). -XX:+HeapDumpOnCtrlBreak cette option fera gnrer un clich mmoire (ainsi que le clich de l'tat de tous threads) aprs l'envoi d'un signal appropri la machine virtuelle. Il s'agit du signal SIGBREAK (par exemple, la combinaison des touches [Ctrl+Brk] dans la fentre de notre application) dans le systme d'exploitation Windows. Dans le systme Linux, il faut envoyer le signal SIGQUIT (par exemple, via la commande kill -3 JVM_PID).

28

Linux+ 6/2009

Programmation Java, problmes de performance

listes) par notre application. De plus, il est combinaison des paramtres possible d'crire nos propres questions qui ci-dessus (nous dconseillons d'utiliser analyseront la pile la recherche des objets cette option). qui nous intressent.
-agentlib:hprof=heap=dump, format=b

Une autre manire de raliser un clich mmoire consiste galement utiliser les outils comme Jconsole et Jmap. Malheureusement, les options disponibles changent en fonction de la version de la machine virtuelle et du systme d'exploitation (Jconsole peut tre utilis dans la version 6.0 de Java, Jmap ne fonctionnera en revanche que dans les environnements Linux et Solaris). N'oublions pas que l'excution du code de notre application s'arrtera pendant la dure du clich mmoire (dans le cas des environnements de production, il faut tre particulirement attentif en gnrant les clichs mmoire car ils peuvent dstabiliser le travail de la machine virtuelle). Le meilleur cas consiste rpter le problme avec un des environnements test o la gnration des clichs mmoire ne prsente aucun risque supplmentaire.

Analyse de la fuite de la mmoire


Afin d'analyser une fuite mmoire typique, nous nous servirons de l'application utilise dans le chapitre prcdent (nous utiliserons la machine virtuelle Sun des fins de test). Le code du programme a t modifi de manire ce que des rfrences une partie d'objets ne soient pas supprimes. Pour ce faire, une liste objectsNoLongerUsed a t cre. Des rfrences aux objets inutiles y seront ajoutes au fur et mesure. Avant de lancer l'exemple, assurons-nous que le fichier de configuration conf.bat a t correctement dit. Ensuite, nous lanons l'apparition. Nous excutons le script startExample_2.bat depuis le rpertoire Example2-MemoryLeak. Une fois l'application dmarre, nous ralisons des clichs mmoire : le premier aprs environ deux minutes et le second aprs trois minutes et demi environ. Pour ce faire, nous appuyons sur la combinaison de touches [Ctrl+Brk] dans la fentre de la console o est lance notre application (dans le systme d'exploitation Linux, nous envoyons le signal kill -3 JVM_PID). Le clich mmoire sera enregistr dans le chemin courant (format du fichier : java_pid<pid>. hprof.<yyyymmdd>.<hhmmss>, o pid est l'id du processus de la machine virtuelle et <yyyymmdd>.<hhmmss> est une dure pendant laquelle a t gnr le clich mmoire. Pour analyser le fonctionnement du programme, nous commenons par les logs verbose:gc qui constituent une premire source d'informations sur la consommation de la mmoire. Nous lanons Garbage Collector and Memory Visualizer et nous ouvrons le fichier memoryLeak.log contenant les logs verbose:gc. Il est recommand de commencer l'analyse par la zone de la mmoire occupe par l'application aprs la fin du cycle du garbage collector (VGC Heap Data > Used heap (after collection)). Il est galement recommand d'illustrer sur le schma la taille de la pile (VGC Heap Data > heap > Heap Size) et les informations supplmentaires telles que : nombre de cycles (VGC Data > Summary), dure de la pause (VGC Pause Data > Pause times), frquence des cycles pour chaque zone de la pile (VGC Data > GC scopes (nursery or global)). La Figure 3 prsente une augmentation constante de la

Outils de diagnostic
Eclipse Memory Analyzer (MAT) constitue un outil parfait pour analyser les clichs mmoire. Il permet d'analyser les clichs mmoire gnrs aussi bien par la machine virtuelle Sun (format HPROF) que IBM (format PHD Portable Heap Dump). Traiter les clichs gnrs par la machine virtuelle IBM demande toutefois qu'un plugin appropri soit install (le lien la procdure dcrivant son installation se trouve dans les rfrences). MAT nous permettra de dtecter et de diagnostiquer les fuites de la mmoire et d'analyser une grande consommation de la mmoire par l'application. Parmi les rapports gnrs par MAT se trouvent galement les informations sur l'utilisation des collections (cartes,

Figure 4. Arbre dominateur. Les bords de l'arbre ne refltent pas toutes les rfrences entre les objets

consommation de la mmoire (la mmoire utilise aprs la fin du cycle du garbage collector), ce qui rsulte d'un fonctionnement incorrect de l'application. Suite cette augmentation, la frquence des cycles du garbage collector augmente, ce qui a un impact ngatif sur la performance de l'application (l'utilisateur considre une telle situation comme un arrt de l'application). Si nous avions lanc notre application avec une taille maximale de la pile infrieure, le programme aurait termin son travail avec l'exception OutOfMemoryError. Le schma (cf. Figure 3) prsente la taille des objets qui se trouvent dans la zone de la gnration ancienne une fois le cycle termin (le cycle qui supprime les objets de cette zone). L'augmentation constante de la consommation de la mmoire peut signifier la fuite de la mmoire. Lorsque les objets occupent plus de 600 [Mo], nous pouvons remarquer une augmentation soudaine du nombre de cycles du Garbage Collector (les cycles sont marqus par les cercles sur le schma). Lors de l'analyse des logs verbose:gc et mis part nos propres conclusions, nous avons galement la possibilit de nous servir de l'analyse effectue par l'outil ; les rsultats s'affichent l'aide de l'option VGC Data > Tuning recommendation. Une augmentation constante de la consommation de la mmoire peut suggrer une fuite il faut toutefois le vrifier. Pour ce faire, nous analyserons les clichs mmoire gnrs. Nous lanons Memory Analyzer et nous ouvrons ensuite les clichs mmoire gnrs (File > Open Heap Dump). L'analyse commencera par l'histogramme (onglet Overview > Histogram) qui prsente le nombre d'instances d'une classe donne (nous pouvons ainsi apprendre si le nombre d'objets d'une classe donne rsulte du fonctionnement correct de l'application ou bien s'il rsulte d'une fuite potentielle de la mmoire). L'histogramme prsente galement des informations relatives la zone occupe par les instances (ainsi que leur traille accumule). Aprs avoir ouvert l'histogramme, nous paramtrons le filtre de la taille accumule 30 [Mo]. Avant de raliser le clich mmoire, la machine virtuelle a lanc un cycle complet de nettoyage. Le clich ne comprend donc que les objets qui ne pouvaient pas tre supprims de la pile. Puisque notre application simule les objets occupant 350 [Mo], il faut trouver les objets responsables de l'augmentation de la consommation de la

www.lpmagazine.org

29

Programmation Java, problmes de performance

mmoire, qui, au moment du clich, s'levait 514 [Mo] (si le clich est ralis un autre moment, le rsultat sera diffrent). Notre application simule l'utilisation de la pile au moyen des tableaux d'octets et des tableaux d'objets. La taille accumule des objets de ce type s'lve respectivement 503 [Mo] et 514 [Mo]. Une partie des objets allous n'a donc pas t supprime de la mmoire et l'application contient leurs rfrences (en cas d'un travail correct, la taille accumule des types susmentionns doit s'lever environ 350 [Mo]). La classe ArrayList, dont la taille accumule s'lve 123 [Mo], peut rveiller des soupons. Cette taille rsulte d'un fonctionnement incorrect de l'application. Nous continuons notre analyse en vrifiant les objets qui occupent la zone la plus grande de la pile. Pour ce faire, nous ouvrons le rapport prsentant les objets sous forme d'un arbre dominateur (onglet Overview > Dominator Tree). L'analyse commence par les objets dont la taille dpasse un certain seuil qui sont considrs comme source potentielle de la fuite mmoire. Ensuite, nous parcourons tous les sommets sortant de chaque sommet constituant une source potentielle de la fuite mmoire afin de trouver un sommet dont la taille et dont la taille de ses sommets enfants prsentent une grande diffrence. Il s'agit d'un point d'accumulation. Pour continuer l'analyse, nous utiliserons le couple de sommets ainsi localiss : source potentielle de la fuite mmoire et point d'accumulation. La Figure 4 prsente un exemple d'un point d'accumulation dans l'application Java. La suite de l'analyse demande de parcourir le fonctionnement de l'application (en nous basant sur les logs, le code source et la description de l'action effectue par l'utilisateur) et de dcider s'il s'agit d'un comportement correct de l'application (et donc de dfinir si la mmoire occupe par les objets

doit tre libre). Les rsultats de l'analyse peuvent dmontrer une fuite mmoire vidente (situation d'erreur qui demande une correction du code de l'application) ou une consommation exagre de la mmoire et donc de suggrer une modification du code de l'application. Dans notre exemple, l'instance de la classe MemoryLeak (objet gcTest) est notre principal suspect. Elle occupe 96,6 % de la pile. L'tape suivante consiste trouver les points d'accumulation. L'objet gcTest domine quatre objets. Trois d'entre eux sont des tableaux dont l'utilisation rsulte d'un travail normal de l'application (simulation de l'utilisation de la pile). Ces tableaux occupent respectivement 45 %, 9,8 % et 6,5 % de la mmoire accumule par l'objet gcTest. Le quatrime objet est une classe source de la fuite dans notre application. Aprs la comparaison avec le code source, nous pouvons constater qu'elle contient des rfrences aux objets qui ne sons plus utiliss par l'application. Dans certaines situations, trouver la fuite mmoire peut tre facilit par la comparaison de plusieurs clichs mmoire raliss diffrents moments. D'aprs la comparaison de ces clichs, nous pouvons vrifier quels objets sont responsables de l'augmentation de la consommation de la mmoire. Nous ouvrons le deuxime clich mmoire dans notre exemple. La quantit de la mmoire bloque par la liste a bien videmment augment. Dans de nombreux cas, cette analyse facilite l'identification de la fuite de la mmoire.

objets qui seront supprims de la pile si X est supprim (mmoire alloue par l'objet X) ; sommets majeurs (en anglais leading set of objects) ensemble d'objets d'une classe donne ou tous les objets (des classes diffrentes) crs par un classloader.

Nous illustrerons les dfinitions de ces termes sur un simple exemple. Les objets A et B sont des racines (en anglais garbage collector roots) depuis lesquelles le garbage collector commencera analyser la pile (il peut s'agir des paramtres de mthodes, des objets locaux, des objets utiliss pour appeler la mthode wait(), notify() ou synchronized()). La Figure 5 prsente un exemple de graphe d'objets prsents sur la pile. Nous pouvons distinguer des objets non accumuls dans la mmoire pour chaque sommet majeur : sommet D : D, G ; sommet E : E ; sommet F : F, I ; sommet C : C, D, E, F, G, H, I ; sommet A et B : A, B, C, D, E, F, G, H, I.

Termes utiliss dans Memory Analyzer

Avant de commencer l'analyse des clichs mmoire, il est recommand de prendre connaissance de la terminologie basique utilise par Memory Analyzer. Voici les termes de base : taille de l'objet (en anglais shallow heap) zone de la mmoire occupe par un objet donn. titre d'exemple, l'objet aura besoin de 32 ou 64 bits pour une rfrence (en fonction de l'architecture), 4 bits pour le type Integer, 8 bits pour le type Long etc. ; ensemble d'objets accumuls par l'objet X (en anglais retained set of X) ensemble d'objets qui seront supprims de la pile si l'objet X est supprim ; taille accumule de l'objet X (en anglais retained heap of X) taille de tous les

Tous les objets prsents sur le graphe constituent l'ensemble d'objets accumuls pour les sommets majeurs A et B (supprimer les objets A et B fera supprimer de la mmoire tous les objets appartenant cet ensemble). Il est possible de faciliter l'analyse des objets sur la pile en transformant le graphe cidessus en arbre dominateur. Supposons que l'objet X domine l'objet Y si tous les chemins mnent au sommet Y (dont le dbut se trouve dans la racine de l'arbre) par le somme X. Dans un arbre ainsi construit, trouver les dpendances entre les objets est trs simple. L'arbre dominateur d'objets aura les dpendances suivantes : les sommets sur lesquels domine l'objet X constituent un ensemble d'objets accumuls par l'objet X ; si le sommet X domine le sommet Y, le sommet dominant le sommet X domine automatiquement le sommet Y ; les bords de l'arbre dominateur ne reprsentent pas toutes les rfrences entre les objets.

Figure 5. Graphe prsentant les objets sur la pile et les dpendances entre eux (rfrences)

La Figure 4 prsente le graphe transform en arbre dominateur.

30

Linux+ 6/2009

Programmation Java, problmes de performance

Arrt de l'application Java

L'absence des rponses de la part de l'application aux demandes de l'utilisateur peut signifier un arrt du programme. L'arrt de l'application peut arriver dans les situations suivantes : une boucle infinie se trouve dans le code de notre application ; un interblocage de threads a lieu (en anglais deadlock).

Afin de vrifier laquelle de ces situations nous avons affaire, il faut utiliser les outils du systme d'exploitation qui fournissent les informations sur l'utilisation du processeur par tous les processus. Process Explorer ( tlcharger depuis les sites Web de Microsoft) sera utile sous Windows. Sous Linux il est recommand de faire la commande top. Si le temps du processeur utilis par l'application Java s'lve 100 % (dans le cas des machines quipes de plusieurs processeurs logiques, 100 % diviss par le nombre de processeurs) et l'ensemble du systme travail-

le trs lentement, il est fort probable que notre application fait une boucle infinie. Dans le cas contraire, si l'utilisation du processeur est normale, c'est la prsence de l'interblocage qui est probable. Nous pouvons rencontrer la seconde situation le plus souvent lorsque plusieurs threads parallles tentent d'obtenir un accs une ressource dfinie. Si une partie de ces threads est bloque (en attendant la libration de cette ressource), cette situation mnera une famine de threads. L'interblocage constitue une forme finale de la famine et arrive lorsque les threads attendent qu'une condition soit remplie alors qu'elle ne peut pas tre remplie. Les deux situations dcrites ci-dessus rsultent d'une erreur du programmeur et ncessitent des modifications dans le code de l'application. Il est trs simple de corriger la condition de la fin de la boucle. Malheureusement, rsoudre le problme de la synchronisation des threads (qui restent bloqus lors de l'accs une ressource partage) peut tre une tche plus complexe.
PUBLICIT

Figure 6. Analyse du clich de threads. L'outil nous prsentera un rcapitulatif gnral de l'tat des threads et les mthodes excutes au moment o le clich a t pris

Symptmes du blocage de la machine virtuelle


Parmi les symptmes du blocage de l'application Java se trouvent : absence de la rponse de l'application aux demandes de l'utilisateur ;

www.lpmagazine.org

31

Programmation Java, problmes de performance

absence d'une activit dans les logs de l'application et sur la sortie et l'entre standards d'erreurs de la machine virtuelle ; utilisation 100 % du temps processeur par l'application Java.

bre de threads qui se trouvent dans l'tat donn. Ensuite, nous pouvons passer une analyse plus dtaille de chaque thread et moniteur utiliss par l'application.

Collecter des donnes diagnostiques


Afin de diagnostiquer les problmes relatifs au blocage de l'application, nous utiliserons le clich de threads. Il contient des informations sur l'tat de tous les threads et de sa trace de la pile. Le clich comprendra galement des informations relatives aux moniteurs utiliss par notre application. D'aprs ce clich, nous pourrons dfinir quels moniteurs sont en possession d'un thread donn. Nous pourrons constater galement sur quel moniteur est bloqu un ou plusieurs threads et quel thread est dot du moniteur actuel. Nous ralisons le clich de threads en envoyant le signal appropri la machine virtuelle. Nous envoyons le signal SIGBREAK sous Windows (par exemple, en appuyant sur la combinaison de touches [Ctrl+Brk] dans la fentre de la console de notre application). Sous Linux il faut envoyer le signal SIGQUIT (par exemple, via la commande kill -3 JVM_PID). Gnrer plusieurs clichs en intervalles identiques peut tre utile pour analyser un problme (par exemple, il est possible de gnrer 5 clichs en intervalles de 10 minutes).

Diagnostic de l'application Java qui plante


Nous effectuerons le diagnostic de l'application Java qui plante sur l'exemple d'une application utilise dans les exemples prcdents. Nous modifions toutefois le code de sorte que l'application lance dix threads parallles. En mme temps, la boucle, dans laquelle l'application effectue les oprations sur les tableaux, sera comprise dans le bloc synchronized. Avant de faire une nouvelle itration de la boucle, le thread devra obtenir un moniteur et excuter le code qui se trouve dans le bloc synchronized. Les threads se bloqueront ainsi en attendant l'accs au moniteur. L'interblocage sera donc ici impossible mais nous pourrons observer la famine de threads. Afin de lancer le dernier exemple du rpertoire Example3-Hangs, nous dmarrons le script startExample3.bat. Aprs plusieurs dizaines de secondes de travail, nous envoyons le signal SIGBREAK (nous appuyons sur la combinaison de touches [Ctrl+Brk] dans la fentre de la console). Cette opration gnrera un clich de threads de la machine virtuelle. Ce clich sera redirig la sortie standard de la machine virtuelle. Le script l'enregistrera dans le fichier hungApplication.log. Afin d'analyser le clich de thread, nous lanons IBM Support Assistant et ensuite, l'outil IBM Thread and Monitor Dump Analyzer for Java (nous slectionnons Analyze Problem > IBM Thread and Monitor Dump Analyzer for Java dans l'onglet Home). Nous ouvrons le log gnr par l'application et nous procdons l'analyse. Aprs avoir ouvert le log, nous verrons s'afficher l'analyse du statut des threads et des mthodes effectues par les threads. La figure 6 prsente cette situation. Pour obtenir des informations dtailles sur un thread donn, nous ouvrons la fentre contenant l'analyse de tous les threads (Analysis->Thread Detail). Ensuite, nous pouvons parcourir tous les threads et analyser la trace de la pile du thread, les moniteurs en sa possession et le moniteur o le thread est bloqu. Si le thread possde un moniteur attendu par d'autres threads, nous verrons s'afficher une liste de ces threads. Si en revanche, le thread attend un moniteur, l'outil affichera le nom du thread qui le possde. Puisque dans notre application test tous les 10 threads utilisent le mme moniteur, un

thread bloquera tous les autres. D'aprs ces informations, nous pouvons diagnostiquer l'origine du blocage de l'application. La solution consisterait rcrire la boucle o se trouve le bloc synchronized dans l'application test de sorte liminer le blocage de threads.

Conclusion
Diagnostiquer les problmes relatifs la performance n'est pas une simple tche et ncessite une exprience. Les exemples prsents dans l'article peuvent tre donc considrs comme une introduction et un entranement avant de faire face et de rsoudre un vrai problme. Nous recommandons aussi de tester les scnarios dcrits avec d'autres applications. Gnrer des clichs dans un environnement test ou analyser des logs verbose:gc sera enrichissant et permettra d'conomiser le temps lorsqu'un problme rel apparatra dans votre application. Nous esprons que cet article vous encouragera mener ce type d'exprimentations.

Sur le Net
http://www.ibm.com/software/ support/isa/ IBM Support Assistant site officiel ; http://eclipse.org/mat/ Memory Analyzer Tool site officiel du projet ; http://www.ibm.com/developerworks/ java/jdk/tools/mat.html plugin permettant d'utiliser l'outil Memory Analyzer Tool pour analyser les clichs mmoire gnrs par la machine virtuelle IBM ; http://java.sun.com/docs/hotspot/ gc5.0/gc_tuning_5.html rglage de performance de la machine virtuelle Sun 5.0 ; http://java.sun.com/j2se/ reference/whitepapers/ memorymanagement_ whitepaper.pdf gestion mmoire dans la machine virtuelle Sun HotSpot 5.0 ; http://java.sun.com/j2se/1.5/pdf/ jdk50_ts_guide.pdf diagnostiquer les problmes dans la machine virtuelle Sun ; http://www.ibm.com/developerworks/ java/jdk/diagnosis/ diagnostiquer les problmes dans la machine virtuelle IBM.

Outils de diagnostic

Afin d'analyser le clich de threads, nous pouvons nous servir de IBM Thread and Monitor Dump Anaylyzer for Java. Cet outil est fourni avec le paquet IBM Support Assistant et permet d'analyser le clich de threads aussi bien depuis la machine virtuelle de Sun que d'IBM. Aprs avoir ouvert le clich de threads, l'outil affichera le nombre de threads et le nom-

A propos de l'auteur
Marcin Kalas est diplm de la facult de l'Electronique, de la Tlcommunication et de l'Informatique de l'Ecole Polytechnique de Gdansk. Il s'intresse Java et son dition d'entreprise depuis plus de 5 ans. Ses centres d'intrt : jouer de la guitare, faire du vlo tout terrain et de la plonge. Contact avec l'auteur : marcin.kalas@gmail.com

32

Linux+ 6/2009

Formations Java Objis

OBJIS :
Douglas MBIANDOU : Porteur du projet Objis depuis 2005, Douglas Mbiandou est Ingnieur diplom de lINSA Lyon.

spcialiste en formations Java


Objis est un centre de formation informatique, spcialiste du transfert de comptences JAVA. Depuis 2005, nous amliorons la productivit de nos clients diffrentes phases de leur intervention dans un projet JAVA/ J2EE. Objis propose une approche innovante de la formation, base sur 3 dimensions : lexpertise, la pdagogie et le partage. Notamment travers la mise disposition de plus de 100 tutoriaux JAVA/J2EE.
Loffre est trs flexible. Nous avons par exemple mis en place en moins de 24h, une sance de coaching de 2H via Skype pour lun de nos consultants sur une nouvelle technologie. Tmoignage client : socit Ocane consulting.
Public Matin : sessions initiation JAVA / J2EE (Public : dveloppeurs 0-1 an exprience Java ) Aprs-Midi : sessions frameworks et serveurs J2EE (Public : dveloppeurs 3 ans exp+)

travers nos formations et cours du soir, nous apportons nos clients les rflexes, mthodes et les outils contribuant une meilleure productivit. Vous pouvez consulter nos horaires dans le tableau ci-contre. Douglas Mbiandou aprs 10 annes dexprience dans les projets systmes dinformation en France et ltranger (USA, Genve...), il propose, en collaboration avec la direction de votre entreprise, une stratgie de formation rpondant aux besoins JAVA/JEE des applications modernes. Garant de la satisfaction de service Objis, il est larchitecte de lapproche innovante de la formation Objis.

cours de sessions collectives dans nos locaux : il a su remporter lunanimit auprs des collaborateurs forms de part son dynamisme et linteractivit quil sait instaurer. Afin de rpondre aux attentes de nos collaborateurs et clients, nous avons mis en place des sessions de formation en cours du soir dont le format a t spcialement adapt avec notamment 70% de pratique. Douglas intervient galement 2 jours par mois chez nous en salle dintercontrats pour coacher nos collaborateurs dans leur parcours de formation interne. Grce ce partenariat, Objis met notre disposition lensemble de ses supports de cours Java.

Dcouvrez en live lexpertise, la pdagogie et le sens du partage dObjis, spcialiste de la formation JAVA. A travers nos sances Tutoriel Objis live de 30 minutes durant le salon Solutions linux 2010, montez en comptences JAVA/J2EE et rencontrez les formateurs Objis. Choisissez le thme de votre tutoriel live et rservez votre fauteuil sur notre stand B14. Tmoignage client : socit So@t Notez la prestation des formateurs. Obtenez Boris Pouderous, responsable formations So@t enfin 10% de rduction sur votre prochaine formation JAVA/J2EE Objis ! (SSII, 220 personnes). Paris Depuis le dbut de lanne 2009, nous avons totalement revu notre stratgie du point Tutoriaux Objis Live ! de vue de la formation et nous nous investissons Exclusivit stand Objis (stand B14) : travers beaucoup pour quelle soit la hauteur de nos des sessions de 30 minutes (15 min demo attentes et ambitions. SOAT accorde une gran- +15 min questions/rponses), lensemble des de importance au suivi de ses collaborateurs, formateurs Objis permettront aux novices cest pourquoi nous nous sommes tourns vers comme aux confirms de monter en compObjis qui a su nous proposer une offre corres- tences Java/j2ee et damliorer leur culture pondant nos besoins, de part sa souplesse et la gnrale sur les frameworks java/jee du moractivit de Douglas MBIANDOU, formateur ment. Rendez-vous les 16,17,18 mars 2010 , et co-fondateur dObjis. Nous avons en amont paris portes de Versailles au salon solutions pu apprcier la qualit de ses formations au linux 2010, dont nous sommes sponsor.

Tutoriel Objis live au salon Solutions linux 2010

MATIN (dbutants) : 10h : Tutoriel JAVA (Installation JDK) 10h30 : cours J2EE (comprenez J2ee en 6 points cls) 11h : Tutoriel JAVA (Votre premier programme JAVA) 11h30 : Tutoriel J2EE : cration et dploiement WAR

Invitation l'anniversaire Objis !

Rencontrez les clients et les partenaires d'Objis lors du cocktail 5me anniversaire Objis qui se tiendra dans le cadre du salon Solutions linux 2010 (15, 16 , 17 mars 2010 Paris Porte de Versailles).
Ojis France 425 cours Emile Zola 69100 Villeurbanne Tl : +33(0)4 78 29 37 26 Fax : +33(0)9 56 22 89 49 www.objis.com

APRES-MIDI (intermdiaires) : 14h : Tutoriel GWT : votre premire application GWT 14h30 : Tutoriel Spring : Injection de dpendances 15h : Tutoriel Hibernate : votre premire application Hibernate 15h30 : Tutoriel JBoss : Installation Jboss 5 et analyse 16h : Tutoriel ExtJS : votre premire application ExtJS 16h30 : Tutoriel Wicket : votre premire application Wicket 17h : Tutoriel Flex : votre premire application Flex Responsable formations : Douglas Mbiandou

www.lpmagazine.org

33

Programmation RCP

Dveloppement d'application RCP


Pascal Barbier

La plateforme Eclipse tait l'origine conue pour dvelopper des environnements de dveloppement. Son systme modulaire de plugins et la performance de son interface utilisateur ont fait de cet environnement la base idale pour dvelopper rapidement des applications portables dotes de riches interfaces utilisateur. Dans cet article, nous allons dcrire les principes fondamentaux du dveloppement d'applications bases sur l'environnement RCP qui est au coeur d'Eclipse.

e projet Eclipse est n au dbut du sicle chez IBM qui voulait rcrire en Java son environnement de dveloppement multi-langage Visual Age dvelopp en Smaltalk. Eclipse est construit selon deux principes originaux : le logiciel Open Source est trs indpendant de la plateforme sur laquelle il est excut (dvelopp en Java) et il est trs modulaire avec un concept avanc de plugins respectant une norme prcise (OSGi). Rapidement, cet outil a gagn en notorit pour devenir un des acteurs majeurs du monde du dveloppement. En parallle, sa conception ultra modulaire a permis de dpasser le cadre troit des outils de dveloppement et den faire la base de dveloppements dapplications trs varies comme des IDE (environnements de dveloppement intgr), le client de courrier Notes de Lotus, BrainBox (un outil de simulation de modles mathmatiques), uDig (un SIG : systme d'information gographique), EasyMonitoring (un logiciel de visualisation 3D temps rel) et des dizaines dautres logiciels. Une grande partie du succs de la plateforme tient son architecture la fois polyvalente, modulaire

et performante. la base de cette architecture, le runtime est un noyau applicatif lger qui implmente le standard OSGi de plugins. Les plugins sont des modules dextension qui apportent les diffrentes fonctionnalits de lapplication. On peut les comparer aux briques de base de lapplication. Les plugins sont regroups dans des fonctionnalits (les features). Les features sont les units de dploiement. Elles dfinissent un jeu de plugins ainsi que leurs dpendances avec les autres features. Les features dfinissent galement une mthode de mise jour automatique ou semi automatique par lintermdiaire de sites Internet.

linux@software.com.pl

Cet article explique...


L'architecture de la plateforme Eclipse. L'organisation d'une application RCP. Le processus de dveloppement d'une application portable base sur RCP.

34

Linux+ 6/2009

Programmation RCP

Figure 1. Architecture de la plateforme Eclipse

Larrive de RCP (Rich Client Plateform) en 2004 a permis de simplifier le dveloppement dapplications avec interface utilisateur graphique. Les applications dveloppes avec RCP peuvent bnficier des avantages de la modularit de la plateforme Eclipse et en mme temps de la performance des librairies graphiques SWT et JFace qui ont t incorpores sous forme de plugins. ces avantages, on doit ajouter galement le fait que les applications RCP sont indpendantes du systme cible (donc faciles dployer) et fondes sur des bases Open Source.

Dcomposition dune application RCP

En fait, au dpart, RCP nest que la rduction de lIDE Eclipse auquel on avait t les plugins spcifiques au dveloppement (compilateurs, dbuggers etc.). Les applications RCP sont constitues dune part du framework RCP (Core runtime, SWT et JFace) et dautre part dun jeu de plugins, souvent assembls dans une ou plusieurs features. Chaque plugin est un module binaire (un jar) qui offre des points dextension (pour permettre dautres plugins de se connecter) et qui utilise les points dextension dautres plugins (pour en utiliser les fonctionnalits). Les features, de leur ct, dfinissent les dpendances dautres features ncessaires. Ceci permet dautomatiser la rsolution des dpendances lors de l'installation et des mises jour. En plus du runtime qui fournit la logistique de gestion des plugins, les applications

RCP utilisent la librairie SWT pour faciliter le dveloppement des interfaces utilisateur. SWT ressemble AWT ou Swing sans en subir les inconvnients. AWT est une librairie graphique totalement indpendante de la plateforme, ce qui la rend peu performante au niveau du rendu (elle est gourmande en temps CPU). La librairie Swing gre elle mme de nombreuses oprations graphiques de base, ce qui la rend plus performante. Cependant, cause de cela elle produit des interfaces qui ne sont plus fondues dans lenvironnement cible. Pour faire simple, AWT demande au systme de dessiner et grer les widgets graphiques. Swing dessine lui-mme ces widgets graphiques. Pour rsoudre ces difficults, SWT est une librairie standard qui prend en charge les widgets (comme Swing) mais qui est implmente spcifiquement sous forme dune librairie dynamique pour chacun des systmes cible. Elle est donc optimise en performance et en rendu visuel. De son ct, la librairie JFace ajoute SWT des composants graphiques de plus haut niveau comme les treeviews. Sur option, lapplication RCP dispose de composants standard trs utiles tels que le systme Install (gestion du dploiement, des dpendances et des mises jour), le systme daide et un systme de proprits et de configuration centralis. Dautres composants issus de lIDE dorigine peuvent savrer trs utiles (par exemple les diteurs ou le gestionnaire de projets). Lapplication sera gnralement constitue dun programme principal, dun jeu dune ou plusieurs perspectives qui organisent lapparence dune srie de Vues (Views). Un dernier composant essentiel restera cach pour lutilisateur : le Workbench Advisor qui contrle lapparence de linterface utilisateur : menus, barres dou-

tils, perspectives etc. Chaque plugin, quil soit fourni par le framework ou dvelopp pour lapplication, est dcrit par un fichier nomm plugin.xml. Depuis quEclipse a adopt le standard OSGi, le fichier plugin.xml a t remplac par un nouveau format de fichier : MANIFEST.MF. Lancien format reste toutefois utilisable. Pour dployer un plugin, il suffit de placer les fichiers qui le composent dans un sous-rpertoire du rpertoire plugin dEclipse ou de les regrouper dans un jar plac dans la racine de ce mme rpertoire. Tous les plugins prsents sont numrs au lancement dEclipse. Enfin, signalons quEclipse fait une diffrence entre lApplication qui est lensemble logiciel excutable constitu dune fonction main et le produit qui est lensemble compos de lapplication et des ressources associes (icnes, fichiers de configuration ou de dploiement etc.).

Mise en place de la plateforme de dveloppement

Pour dvelopper avec le framework RCP, il est indispensable dinstaller confortablement son environnement de travail. En effet, la plateforme Eclipse sera utilise la fois comme cadre de base de loutil de dveloppement et comme cadre de lapplication dveloppe. Il est donc vivement conseill dinstaller sparment ces deux environnements (lIDE et la plateforme de Test). Pour la suite de larticle, jutiliserai comme IDE la version 3.5 (Galileo) dEclipse qui vient de sortir. La premire tape consiste tlcharger loutil de dveloppement. Sur la page daccueil du site eclipse.org, on va dans la section download pour aller chercher lenvironnement Eclipse for RCP/Plugin deve-

Ce qu'il faut savoir...


La syntaxe de Java. Les grands principes des interfaces homme-machine (IHM) graphiques.

Figure 2. Configuration des points d'extension pour une vue

www.lpmagazine.org

35

Programmation RCP

loppers (le fichier fait moins de 200Mo). Cest un zip que on dcompresse dans un rpertoire de mon disque (par exemple la racine). Si vous possdez dj un IDE Eclipse (quelle que soit la version ou le langage) vous pouvez galement utiliser le gestionnaire intgr de mise jour pour ajouter le feature PDE (Plugin Development Environment) si vous ne lavez pas dj. Avec les versions 3.4 et 3.5 dEclipse, il faut au moins la version 5 de Java. Vous pouvez la tlcharger sur le site java.com. La seconde tape est donc dinstaller la cible. Cest une version de la plateforme Eclipse munie des plugins qui seront utiliss par lapplication. La cible et lIDE peuvent tre de deux versions diffrentes (par exemple on dveloppe avec Galileo mais la cible reste en version Europa : 3.2 pour tre compatible avec Java 1.4). Le plus simple est de tlcharger le projet Eclipse RCP-SDK et de le dcompresser dans un rpertoire spcifique (par exemple c:\ cible). Il sera galement utile de tlcharger le Delta pack de la mme version dEclipse. Ce package permet de grer le dploiement multiplateforme (Windows, Linux, Mac, etc.). Le delta pack doit tre install dans le rpertoire de la cible. Le site Eclipse.org change assez rgulirement. Jviterai donc de donner des adresses qui risquent de devenir rapidement obsoltes. On prconise plutt de faire une recherche avec le moteur de recherche du site. Lorsque vous cherchez, indiquez le nom du

Listing 1. Code vnement quitter l'application

package org.lpmagazine.tutorial.commands; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; import org.eclipse.ui.handlers.HandlerUtil; @Override public class ExitHandler extends AbstractHandler implements IHandler { public Object execute(ExecutionEvent event) throws HandlerUtil.getActiveWorkbenchWindow(event).close();

ExecutionException {

} }

return null;

Listing 2. Code cration d'une vue


package org.lpmagazine.tutorial.views; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.part.ViewPart; @Override public class MaVue extends ViewPart { public void createPartControl(Composite parent) { text.setText("Bonjour tout le monde !"); } } Text text = new Text(parent, SWT.BORDER);

Figure 3. Configuration du point d'extension d'une commande

Figure 4. Configuration du point d'extension pour associer une commande un menu

package ainsi que le numro de version. Une fois chargs ces trois projets, on peut se lancer pour une premire application. Dmarrez Eclipse, crez un nouveau projet Plugin project. Pour le nom, il est de coutume dutiliser la convention de nommage des plugins Eclipse. Cette convention fonctionne comme le nommage DNS, mais en sens inverse. Si par exemple, la socit utilise le nom de domaine DNS lpmagazine. org, le nom du projet peut tre org.lpmag azine.tutoriel.appli1. Ainsi, le plugin sera facile retrouver parmi ses nombreux confrres. Dans lassistant de cration de nouveau projet, pensez bien choisir la version dEclipse cible ainsi que de cocher la case Yes la question Would you like to create a rich client application. Pour le moment, les autres paramtres ont peu dimportance. la dernire tape, on peut choisir un modle dapplication. Cela fournit un point de dpart pour les dbutants. Choisissez lapplication Hello. Enfin, cochez la case Add

36

Linux+ 6/2009

Programmation RCP

branding. Cette option ajoute laffichage dune image au dmarrage quon appelle un splash screen. Si tout va bien, lditeur du manifeste a t ouvert sur longlet overview. Le manifeste est un fichier texte situ la racine du plugin et qui le dcrit. Avant de dmarrer cette application, nous allons ajouter deux lments : une commande et un menu. Une commande est un objet de traitement qui peut tre associ un lment de linterface utilisateur (un menu, une barre doutils par exemple). Pour crer la commande, nous devons utiliser le point dextension org.eclipse.ui.commands. Allons dans longlet Extensions du manifeste. Dans la liste, le point dextension voulu napparat pas car il na pas t encore utilis. Nous lajoutons avec le bouton add. Pour crer une commande, il nous suffit maintenant dtendre ce point dextension. Sur lextension, appelez le menu contextuel avec un clic droit et utilisez le menu New/Command pour crer votre extension. Changez lID de votre commande. Dans une application relle, il y aura beaucoup de commandes. Il est donc ncessaire dutiliser une rgle de nommage consistante. On prfre classer les ID dobjet par catgorie dabord, par objet ensuite dans chaque catgorie. On choisit donc le nom org.lpmagazine.tutorial.commands. Exit pour ma commande. Il faut galement dfinir le nom de la classe associe. Jutilise la mme convention de nommage. Ma classe sappelle donc org.lpmagazine.tutorial.commands.ExitHandler. En cliquant sur le lien ct du nom de la classe, lassistant cre la classe. Pour cette classe, on remplace la classe de base par org.eclipse.core.commands. AbstractHandler pour simplifier. Il ne reste plus qu la complter (voir listing 1). La ligne close() que jai ajoute demande fermer lapplication (ou plus exactement le Workbench qui sert de support aux plugins de lapplication). Crons maintenant un menu pour excuter cette commande. La dmarche est la mme : nous allons tendre le point dextension org.eclipse.ui.menus et attacher la commande au menu ainsi cr. Dans longlet extension du manifeste, utilisez le bouton add pour ajouter le point dextension des menus. En utilisant le clic droit sur ce point dextension, ajoutez une nouvelle contribution de menu (new/menu contribution). LURL de cet objet doit tre menu:org.eclipse.ui.main.menu. Cest lendroit dans lequel notre menu va sinsrer. Sur cette contribution, ajoutez (toujours avec le menu contextuel) un menu (new/menu) et

changez son texte et son identit (par exemple label : Fichier, Id : menuFichier). Enfin, sur ce menu, encore avec le menu contextuel, ajoutons une commande (new/ command). Changeons lidentit de la commande associe pour y mettre lId prcdemment attribue la commande Exit (on peut la chercher dans la liste avec le bouton browse). Vous pouvez galement choisir librement le texte (label) et le message daide (tooltip). Voil, notre application est prte faire le grand saut. Dans longlet overview de lditeur de manifeste, cliquez le lien launch an
Listing 3. Code exemple d'une application SWT
import org.eclipse.swt.widgets.*; import org.eclipse.swt.*; public class TestSWT {

eclipse application pour dmarrer votre premire application.

Crer une vue

Les applications RCP sont constitues de vues qui sont disposes dans linterface utilisateur. La disposition est mmorise dans une perspective. Lapplication peut comporter une ou plusieurs perspectives. Par exemple, Eclipse IDE propose une perspective Java, une perspective debug, une perspective resource etc. Notre application, dans sa premire version, dispose dune seule perspective mais pas

public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display);

text.setText("Bonjour tout le monde"); text.pack(); shell.pack(); while( !shell.isDisposed() ) display.sleep(); shell.open();

Text text = new Text(shell, SWT.CENTER);

if( !display.readAndDispatch() )

display.dispose(); text.dispose(); } }

Listing 4. Code appel de la dialog standard ouvrir un fichier


package com.iristechnologies.rcp.app1.commands; import org.eclipse.core.commands.*; import org.eclipse.swt.widgets.*; import org.eclipse.ui.handlers.HandlerUtil; @Override public class FileOpen extends AbstractHandler implements IHandler { public Object execute(ExecutionEvent event) throws Shell shell = HandlerUtil. getActiveWorkbenchWindow(event).getShell(); fileDialog.setText("Choisir un fichier"); FileDialog fileDialog = new FileDialog(shell);

ExecutionException {

fileDialog.setFilterExtensions(new String[] { "*.txt" }); fileDialog.setFilterNames(new String[] { "Fichiers texte (*.txt)" }); String selected = fileDialog.open(); System.out.println(selected); } } return null;

www.lpmagazine.org

37

Programmation RCP

Ressources sur Internet


http://eclipse.org/articles/ArticleRCP-1/tutorial1.html Un tutoriel Eclipse-RCP assez complet mais relativement ancien (bas sur eclipse 3.1) http://www.vogella.de/articles/ RichClientPlatform Un tutoriel plus rcent, bas sur la version 3.5 http://www.jmdoudoux.fr/java/dej Un ouvrage trs complet sur Java, qui aborde lutilisation de SWT et JFace http://mbaron.developpez.com Un site o trouver de bons tutoriels Java et Eclipse

A lire galement sur le sujet, le livre de McAffer et Lemieux Eclipse Rich Client Platform chez Addison-Wesley (ISBN : 0-321-33461-2).

de vue. Nous allons en crer une. Pour cela, le principe est toujours le mme : crer une extension du point dextension org.eclipse. ui.views. Ajoutez le point dextension avec le bouton add, puis, avec le menu contextuel, ajoutez une vue. Pour lId on se rfre ma convention de nommage : org.lpmagazine. tutorial.views.MaVue. Mme nom pour la classe associe. On utilise le lien ct du nom de la classe pour crer le code. On me dbarrasse du constructeur, ici inutile, et ajoute un composant Text (nous parlerons des widgets SWT plus loin). Le rsultat est dans le listing 2. Si le texte ne saffiche pas, ce n'est pas grave. Effectivement, nous avons cr une vue mais nous navons nullement indiqu quand et comment lutiliser. Il nous faut donc maintenant ajouter cette vue la perspective. Pour cela, nous allons tendre le point dextension org.eclipse.ui.perspectiveExtensions. Nous ne vous donnons pas de dtails, nous lavons dj fait plusieurs fois. Avec le menu contextuel, ajoutons une nouvelle vue cette extension de perspective. Slectionnez lID de votre vue, choisissez une position top par rapport aux diteurs (org.eclipse.ui.editorss) et un ratio de 0.95f (voir la figure 2 pour les dtails).

Utiliser SWT

La librairie SWT est une alternative aux librairies AWT et Swing. En deux mots et sans entrer dans les dtails, la librairie AWT est historiquement la premire proposer

des objets dinterface utilisateur graphique pour Java. Elle est ne avec Java. Le principal reproche que lon fait cette librairie est son manque de richesse et de performance (vitesse dexcution et rendu utilisateur). En revanche, comme elle est base sur les composants de base du systme, elle reproduit fidlement lapparence du systme. La librairie Swing, ne avec Java 2, se propose damliorer la richesse et performance. Pour cela, la librairie prend en charge tout le design de linterface et rduit donc la quantit dchanges avec le systme. Le rsultat est donc plus efficace et surtout beaucoup plus riche. Toutefois, le rendu de linterface n'volue pas avec le systme et impose donc de redvelopper un nouveau Look and Feel pour chaque nouvelle version de systme. Pour Eclipse, IBM a dvelopp une librairie graphique la fois efficace et adapte au systme dexploitation : SWT. La librairie utilise, chaque fois quils existent, les composants graphiques du systme. Les autres, sont grs dans une librairie binaire dynamique, crite en C et compile. Il existe une librairie binaire dynamique pour chaque version dOS (Windows, MacOS, GTK etc.). Toutes ses librairies dynamiques sinterfacent avec une librairie statique Java swt.jar) qui harmonise linterface avec les applications. Attention, un des dfauts de SWT est de ne pas grer la destruction des objets (car ils sont grs dans une librairie native). Il faudra donc penser utiliser la mthode dispose() pour librer les objets. Dans SWT, deux objets ont un rle central : Display et Shell. Lobjet Display traite linterface avec le systme dexploitation sous-jacent. Lobjet Shell, de son ct reprsente une fentre de linterface. Le listing 3 propose un petit exemple simple dapplication base sur SWT. Dans cet exemple, lobjet display ralise linterface avec lOS au niveau de la boucle de messages (readAnDispatch), lobjet shell reprsente la fentre et sert de parent lobjet text qui est une zone de saisie. Les autres classes qui constituent la librairie SWT sont essentiellement des gestionnaires de Widgets (Label, Button, List, Combo, Menu, MenuItem, ToolBar, ToolItem, CollBar, CoolItem, ProgressBar, Scale, Slider, TabFolder, TabItem, Table, TableColumn, TableItem, Tree, TreeItem et Canvas). Des outils permettent des oprations de base (classes GC, Image, Color et Font). Enfin les classes Composite et Group permettent de grer des ensembles. La gestion des vnements de lin-

terface utilisateur (souris, clavier) est calque sur la gestion commune AWT et Swing. Des objets Listener sont dclars linterface et reoivent des Event. Pour finir, SWT propose quelques botes de dialogue standard prdfinies (ouvrir un fichier ou confirmation par exemple). Pour la mise en uvre dans une application RCP prenons un exemple simple. Ajoutons une seconde commande dans lapplication en dfinissant une nouvelle extension du point dextensionorg.eclipse.ui.comman ds. Attention de bien respecter la convention de nommage pour lId et la classe. Crons la classe (drive de org.eclipse.core.commands.AbstractHandler suffit). Compltons la classe comme indiqu dans le listing 4. Les figures 3 et 4 montrent les dtails de la configuration des points d'extension. Ajoutons maintenant un item dans le menu Fichier. Cet item est associ (par lID) la commande que nous venons de crer.

Conclusion

Comme vous avez pu le constater, la ralisation de ce type dapplications ncessite une connaissance prcise de loutil et des interfaces de programmation des plugins. Cette connaissance demande un important investissement initial dapprentissage. Pass ce cap, il devient ais de raliser des applications plus ou moins complexes dotes dune architecture robuste et modulaire. Du ct de linterface utilisateur, RCP permet dobtenir un rendu visuel performant, lgant et trs homogne. En cela, il se dmarque des outils traditionnels Java bass sur Swing. Enfin, la conformit au standard de plugins et de features permettent au dveloppeur de minimiser son travail en ce qui concerne le cycle de vie du produit (dploiement, mise jour, gestion des dpendances).

propos de l'auteur
L'auteur est formateur en informatique depuis plus de 25 ans. Ses principaux domaines d'intervention sont les systmes (Unix, Linux et Windows), les rseaux, les langages et les bases de donnes. Il forme surtout des personnels techniques dans les grandes entreprises franaises et trangres. Il est galement consultant sur des projets de dveloppement et assure le support technique d'une quipe de dveloppeurs en Roumanie.

38

Linux+ 6/2009

Programmation Programmation C++

Programmation gnrique C++


Robert Nowak

Nous utilisons les modles ou les structures de donnes dans le langage C++ pour crer des algorithmes gnriques. Cet article prsente des techniques correspondantes aux instructions conditionnelles ralises pendant la compilation.

es modles (templates) disponibles dans le langage C++ permettent d'implmenter les Cet article explique... traits gnriques, autrement dit, indpendants des types, des algorithmes et des structures Comment slectionner un algorithme ou une valeur pendant la compilation ; de donnes. Un exemple de modle swap, prsent ci Le terme des classes de traits. dessous, remplace la valeur de deux objets. Il est possible de l'appeler pour n'importe quel objet du mme type si ces objets fournissent un constructeur de copie et un oprateur mmoire et temps ; le seul inconvnient est que la compilation dure plus longtemps mais cela ne pose pas de d'affectation. problme en gnral. La spcialisation est une version de modle utilise template<typename T> void swap(T& a, T& b) { pour la gnration du code la place de la version gT tmp = a; nrale lorsque des types appropris se trouveront dans a = b; les paramtres. Le modle swap<Foo>, prsent cib = tmp; dessous, est un exemple de spcialisation. Puisque le } seul composant du type Foo est un pointeur de l'objet contenant les composants (la classe Foo cache l'implLors de la compilation, le modle est concrtis, autre- mentation), il suffit de modifier ces pointeurs si nous ment dit, le code est gnr pour les types appropris. voulons modifier la valeur des objets. Cette dmarche Le code gnr d'aprs les modles est identique au code est plus performante que le remplacement par un objet crit la main, il est galement dpourvu des clichs temporaire.

40

linux@software.com.pl

Linux+ 6/2009

Programmation Programmation C++

utilise les classes supplmentaires de traits. par les bibliothques boost (type_traits, call_ Le Listing 1 prsente les classes numeric_ traits, function_types). traits qui sont des classes de traits. Elles fourLa fonction fastCopy est un exemple nissent une constante min_value, dont la va- d'utilisation de la classe de traits has_trivial_ Comment crire de simples leur dpend du paramtre du modle, l'aide assign, disponible dans l'ensemble analys. programmes en C++ ; de la spcialisation. La fonction find_max Le Listing 2 prsente cette fonction qui co Qu'est-ce que des modles trouve la valeur maximale dans le tableau. pie les tableaux l'aide de std::memcpy (templates). Elle initie la variable current_max l'aide des (copie des octets) si le type des lments du struct Foo { //exemple de classe classes de traits et donc des valeurs diffren- tableau permet d'effectuer l'opration de coqui cache l'implmentation tes pour les types diffrents. pie ou bien l'aide de l'algorithme std::copy struct Impl; //classe Les classes de traits sont des types dont s'il faut appeler l'oprateur d'affectation interne stocke les composants la tche principale consiste stocker des pour chaque objet. La classe de traits has_ Impl* pImpl_; //le pointeur informations sur d'autres types. Ce mca- trivial_assign analyse si le type possde un est un composant public pour nisme permet d'ordonner l'accs aux cons- oprateur trivial d'affectation, autrement simplifier le modle tantes dont la signification est similaire. La dit, si l'affectation pour le type T est quiva}; bibliothque standard fournit les classes de lente la copie de la mmoire occupe par template<> void swap<Foo>(Foo& traits std::numeric_limits qui dfinissent les l'objet, si le type de has_trivial_assign<T> a, Foo& b) { //spcialisation valeurs limites pour les types numriques in- c'est true_type et si la valeur de has_tridu modle swap tgrs. Afin de charger la valeur d'une telle vial_assign<T>::value est true. Dans le Foo::Impl* tmp = a.pImpl_; constante, nous crivons numeric_limits cas contraire, la classe de traits hrite de fal//il modifie les pointeurs <double>::min() au lieu de __DBL_MIN__ se_type et la valeur du composant value est et non les objets entiers et numeric_limits<int>::min() au lieu de false. a.pImpl_ = b.pImpl_; INT_MIN et numeric_limits<int>::max() au La fonction fastCopy utilise un quatrib.pImpl_ = tmp; lieu de INT_MAX, etc. me argument, cr lors de la compilation } Choix d'un algorithme lors de la com- d'aprs les informations sur le type. Sa vapilation leur n'est pas importante. Le type permet en Dmarrage rapide La bibliothque standard propose plusie- revanche de slectionner une fonction de Afin de lancer les solutions prsentes, il faut urs autres classes de traits et le nouveau stan- copie approprie. disposer d'un accs n'importe quel compila- dard C++200x comprendra plusieurs dizai Le modle getId est un autre exemple teur C++ et diteur texte. Certains exemples nes d'autres classes proposes actuellement d'utilisation des classes de traits. Il fournit supposent un accs aux bibliothques boost. Listing 1. Initiation d'une variable l'aide des classes de traits Pour les lancer, il faut installer ces bibliothques (version 1.36 ou suprieure) et utiliser le compilateur support officiellement, autretemplate <typename T> struct number_traits { ment dit, msvc 7.1 ou suprieur, gcc g++ 3.4 static const int min_value = 0; ou suprieur, Intell C++ 8.1 ou suprieur, //pour n'importe quel type, Sun Studio 12 ou bien Darvin/GNU C++ 4.x. //la valeur de la constante s'lve zro Les Listings prsents n'incluent pas d'ajout }; des en-ttes appropris et de partage des estemplate<> struct number_traits<int> { paces de noms. Les sources compltes sont //spcialisation pour le type int jointes au magazine. static const int min_value = INT_MIN; La programmation gnrique en C++ //il dfinit une constante approprie utilise un sous-ensemble de structures de }; langage car les tres que nous manipulons template<> struct number_traits<long> { doivent avoir une valeur dfinie, connue lors // spcialisation pour le type long de la compilation. Il est impossible d'utiliser static const long min_value = LONG_MIN; les variables, d'effectuer des itrations (de }; crer des boucles) ni d'utiliser les instructions / /il trouve la valeur maximale dans le tableau conditionnelles. la place, nous utilisons les template<typename T> find_max(const T* first, const T* last) { techniques qui donnent des rsultats quivaT current_max = number_traits<T>::min_value; lents. La suite de l'article prsente la solution //il utilise les classes de traits permettant de slectionner un algorithme, for( ;first != last; ++first) un type ou une constante, en fonction des if( current_max < *first ) paramtres du modle, ce qui correspond aux current_max = *first; instructions conditionnelles dans la programreturn current_max; mation gnrique. } La technique prsente pour slectionner un algorithme ou une valeur appropris

Ce qu'il faut savoir...

www.lpmagazine.org

41

Programmation Programmation C++

Listing 2. Utilisation des classes de traits pour slectionner l'algorithme de copie


template<typename T> //copier l'aide de memcpy void doFastCopy(const T* first, const T* last, T* result, true_type) { memcpy(result, first, (last - first)*sizeof(T) ); }

void doFastCopy(const T* first, const T* last, T* result, false_type) { std::copy( first, last, result ); }

template<typename T> //copier l'aide de std::copy

void fastCopy(const T* first, const T* last, T* result) { //il cre un nouvel argument }

template<class T> //l'algorithme utilise les classes de traits doFastCopy(first, last, result, has_trivial_assign<T>() );

Listing 3. Modle fournissant l'identifiant aux objets de la classe

l'identifiant de l'objet. Cette fonction retourne l'identifiant stock dans l'objet pour les objets du type driv de HasId ou l'adresse pour les autres objets. Afin de choisir la mthode approprie, nous utilisons la classe de traits is_base_of, cf. le Listing 3. La solution utilise la classe de traits is_base_of, dpendante de deux paramtres et fournissant des informations sur le fait si le premier type est une classe de base pour le second. Lorsque Base est une classe de base Derived, le type de is_base_of<Base, Derived> est true_type, sinon, le type de is_base_ of<Base, Derived> est false_type. Cette classe de traits est employe pour crer un objet auxiliaire qui est transmis comme un paramtre supplmentaire. Il permet de slectionner une des plusieurs fonctions surcharges lors de la compilation. La fonction getId peut tre employe pour n'importe quel objet afin d'obtenir soit l'adresse soit le rsultat de l'appel de la mthode getId.
struct ClassWithId : public HasId {

class HasId { //la classe qui fournit l'identifiant public: HasId(long id) : id_(id) { }

private: };

long getId() const { return id_; }

virtual ~HasId() { }

//le type avec son propre identifiant ClassWithId(long id) : HasId(id) { } }; struct ClassWithoutId { }; //le type sans identifiant { ClassWithId c1(1); //l'objet avec l'identifiant gal 1 ClassWithoutId c2; //l'objet sans identifiant getId(c1); // il retourne la valeur 1 getId(c2); // il retourne l'adresse de l'objet c2

long id_;

template<typename T> long doGetId(const T& t, true_type) return t.getId(); //il retourne l'identifiant interne }

template<typename T> long doGetId(const T& t, false_type) { return reinterpret\_cast<long>(&t); // il retourne l'adresse comme valeur long } template<typename T> long getId(const T& t) { //il utilise les classes de traits } return getIdInternal(t, is_base_of<HasId,T>() );

Listing 4. Fragment des classes de traits boost::call_traits

template <typename T> call_traits { //le modle pour les types de l'utilisateur typedef const T& param_type; //la manire de transmettre les paramtres du type donn }; template <typename T> call_traits<T*> { //spcialisation pour les pointeurs typedef T param_type; //il est recommand de transmettre les pointeurs via la valeur };

Optimisation l'aide des classes de traits. Les classes de traits peuvent tre employes pour optimiser la transmission des arguments. Les arguments doivent tre transmis par une rfrence constante pour les types d'utilisateurs car nous vitons ainsi de faire des copies. En revanche, pour les types intgrs et les pointeurs, nous transmettons les arguments via la valeur car crer les copies est peu onreux alors que la rfrence ajoute un clich au moment o nous nous rfrons l'objet. La classe de traits boost::call_traits, fournie par les bibliothques boost [1], dfinit notamment la manire optimale pour transmettre les arguments l'objet du type donn.

42

Linux+ 6/2009

Programmation Programmation C++

choisir le type pour lequel les oprations sur une plate-forme donne se drouleront le plus rapidement. L'exemple du Listing 5 prsente les classes de traits pour protemplate<typename T> T complicateCalculation( T input ) { //il appelle mouvoir les nombres rels proposs par les seulement une autre fonction bibliothques boost. return complicateCalculationImpl(typename promote<T>::type(input) ); Le mme code de la fonction complica} teCalculationImpl sera utilis pour les types template<typename T> T complicateCalculationImpl( T input ) { reprsentant les nombres rels qu'il est pos//le code qui calcule la valeur sible de convertir en double, car le type qui // le mme code binaire sera utilis pour les types float et double est un paramtre de ce modle, sera obtenu au moyen de la classe de traits promote. Si nous utilisons le modle pour les types difCette classe de traits dfinit, mis part les l'argument sera alors transmis via la valeur frents dans la solution prsente, le mme constantes, des types auxiliaires (le Lis- aux types intgrs (ainsi qu'aux pointeurs code binaire sera utilis. Il se servira des ting 4 prsente cette situation), en permet- et aux rfrences) ou via la rfrence cons- objets du type qui est le mieux support par tant de transmettre les paramtres de ma- tante pour les types d'utilisateur. la plate-forme donne. nire optimale. Si int est un paramtre de ce Les classes de traits peuvent tre utilimodle, le composant param_type dfi- ses pour rduire la taille du code rsultant Conclusion nira le type int (car les types intgrs sont ou bien pour optimiser la dure de son Les techniques employes dans la programtransmis via la valeur), si Foo est un para- excution. Un code est gnr pour chaque mation gnrique sont diffrentes de celles mtre de ce modle (exemple du type de type pour lequel le modle a t utilis. employes dans la programmation oriente l'utilisateur), param_type fournira le type Ce code est compil et ajout la version objets et structurelle. Leur connaissance perconst Foo&. binaire de l'application ou de la biblioth- met de rduire la taille du code source et augIl est possible de dfinir l'en-tte de notre que cre. Afin de rduire la taille du code menter ainsi sa lisibilit sans impact ngatif fonction de manire suivante : rsultant, les mmes solutions de modles sur la performance. Les modles permettent sont employes pour les types diffrents de crer des solutions gnrales. Pour cette template<typename T> s'il est autoris d'effectuer des conversions raison, cette technique domine parmi les bibvoid f(typename call_traits<T>:: entre ces types. Un autre avantage de cette liothques. param_type value) {} solution se trouve dans la possibilit de
Listing 5. Utilisation des classes de traits promote proposes par boost::type_traits

Club .PRO
Neoweb
Neoweb est une socit de service spcialise en Logiciel Libre et experte sur le Framework Joomla ! Nous proposons des solutions aux PME et Grands comptes dans le domaine des sites Internet, extranet et e-commerce. http://www.neoweb.fr

KerniX

Oblady

Club .PRO

Oblady est une socit de service en logiciel libre proposant des services dingnierie internet spcialise dans les solution de gestion de contenu CMS Ingnierie autour du logiciel libre, cration de sites Internet, formation Typo 3. www.oblady.com

KerniX est une socit franaise spcialise dans la conception dapplications web sur mesure. Loffre KerniX inclut a la fois le dveloppement, lhbergement, et le rfrencement. KerniX intervient notamment dans les domaines de le-commerce, des plateformes de march, et des rseaux sociaux.

Cresitt Industrie BINARYSEC SAS


BinarySEC dite un logiciel de protection intelligente des applications et sites Web. Ce module Apache sinstalle en 15 minutes et bloque 99,9% du trafic malicieux. Il est le garde du corps des sites Web. BinarySEC a dpos 2 brevets pour valoriser ses innovations. http://www.binarysec.com. www.lpmagazine.org

Centre de Ressources Technologiques en lectronique situ a Orlans. Plateau technique et laboratoire de R&D sur les systemes et OS embarqus, RFID et communication Wireless, informatique industrielle. Expertises, conseil, formations, montage de projets et actions collaboratives. http://www.cresitt.com et http://www.doc-en-ligne.fr

43

Scurit Scurit avec Honeypot

Mise en place dun pot de miel avec Honeyd


Rgis Senet

Comment se protger efficacement contre les attaques malveillantes ? Peut-on tendre un pige aux pirates informatiques ? Un honeypot est un programme ou machine mis en place pour attirer et piger les pirates informatiques. Une fois la machine mise en rseau et quipe d'un honeypot, elle peut dtecter les hackers.

n honeypot (en franais pot de miel) est un ordinateur ou un programme volontairement vulnrable mis en place afin dattirer et piger les pirates informatiques ainsi que les logiciels malveillants. Le but de ce subterfuge est donc de faire croire l'intrus, quil sagisse dune personne physique ou dun logiciel malveillant, qu'il peut prendre le contrle d'une vritable machine de production pour observer les moyens de compromission et ainsi donner la possibilit aux administrateurs rseau de lentreprise de se prmunir contre de nouvelles attaques et leur laisser ainsi un laps de temps supplmentaire pour ragir avant que les vrais serveurs de production ne soient touchs. Lutilisation dun honeypot s'appuie donc sur trois problmatique diffrentes, savoir : la surveillance, la collecte d'informations, l'analyse des informations. La surveillance va permettre danticiper d'ventuelles futures attaques car les pirates informatiques tentent, en

linux@software.com.pl

Cet article explique...


Lutilisation dhoneypot dans un environnement de production.

rgle gnrale, d'entrer de la mme manire dans lensemble des systmes. Pour ce qui est de la collecte dinformation et des analyses, cette tape voit rgulirement le jour lorsquil sagit danalyse doutils malveillants tels que des malwares ou autre virus.

Quest ce quHoneyd

Honeyd est un projet libre et gratuit permettant la mise en place dun systme dhoneypot de manire simple et rapide sur un serveur de pr-production ou de produc-

Ce qu'il faut savoir...


Connaissances en systme dexploitation UNIX/Linux.

44

Linux+ 6/2009

Scurit Scurit avec Honeypot

plusieurs routines rseau. farpd est un dmon ARP rpondant n'importe quelle demande d'ARP d'un ensemble d'adresses IP Les principaux fichiers installs sont : /etc/init.d/honeyd /etc/logrotate.d/honeyd /etc/default/honeyd /usr/lib/honeyd /usr/share/honeyd /usr/share/doc/honeyd /usr/include/honeyd /usr/bin/honeyd

Figure 1. Vrification des droits utilisateurs

tion. Bien quHoneyd soit nettement plus jeune que certains de ses concurrents, il a su rattraper son retard en proposant un logiciel compilable qui se lance sur lensemble des systmes de type BSD (FreeBSD, OpenBSD et NetBSD)et de type GNU/Linux et Solaris.

Mise jour du systme

Origine du projet

Aprs plusieurs annes de dveloppement, la premire version dHoneyd a vu le jour en fin danne 2005 grce la contribution de Niels Provos qui nest autre que le dveloppeur de lapplication. Actuellement sa version 1.5.c depuis le 27 mai 2007, Honeyd a la chance d'tre sous licence GNU/GPL lui permettant une volution trs rapide. Cette dernire sexplique galement grce aux nombreux utilisateurs renvoyant rgulirement aux dveloppeurs de nouveaux bugs dans lapplication elle-mme. Honeyd fut conu uniquement sur le temps libre de son diteur principal sans apport financier alors qu lheure actuelle, il existe de nombreuses entreprises lutilisant des fins commerciales en particulier pour tout ce qui est en rapport avec lanalyse doutils malveillants tels que les malwares/virus.

Il est possible tout moment quune faille de scurit soit dcouverte dans lun des modules composant votre systme que ce soit Apache ou quoi que ce soit dautre. Certaines de ces failles sont parfois critiques dun point de vue scurit pour lentreprise. Afin de contrer ce risque potentiel, il est ncessaire de rgulirement mettre jour lensemble du systme grce divers patches de scurit. Lensemble du systme est actualis grce cette commande: nocrash:~# apt-get update && apt-get upgrade.

noter galement que lors de son installation, Honeyd a cr un utilisateur honeyd ainsi quun groupe du mme nom : ainsi, le pot de miel sera lanc avec des droits limits et non pas en tant que superadministrateur (root), ce qui pourrait tre dangereux :
nocrash:~# grep honeyd /etc/passwd /etc/group /etc/passwd :honeyd :x:108:116:Honeyd daemon,,,: /var/log/honeypot:/bin/false /etc/group :honeyd:x:116:

Installation et configuration dHoneyd

Les exemples illustrant cet article s'appuient sur : Pour la distribution : une Debian 5.0 (Lenny) entirement mise jour. Attention, il est possible que certaines commandes ne soient pas tout fait identiques sur une autre distribution. Lensemble des installations est ralis grce au gestionnaire de paquets propre un systme Debian : APT (Advanced Package Tool). Pour les interfaces rseau : lo :127.0.0.1 eth0 : 192.168.1.147 Il est ncessaire, selon les configurations sur lesquelles vous travaillez, dadapter les interfaces rseau.

Une fois linstallation termine, il convient de passer la phase de configuration. Celle-ci se ralise grce au fichier /etc/honeypot/honeyd. conf qui permet de dcrire lensemble des services virtuels. Installation dHoneyd Avant de modifier les configurations, il Linstallation dHoneyd ne demande aucune est ncessaire d'autoriser lutilisateur honeyd installation pralable, il est donc possible de lire et crire dans les fichiers concerns : directement passer la phase dinstallation via nocrash:~# chown -R honeyd:honeyd / le gestionnaire de paquets Debian : nocrash: etc/honeypot/. ~# apt-get install honeyd. Vous constatez ici que les modifications Linstallation dHoneyd va galement de propritaire et de groupe ont t ralises installer les dpendances suivantes : avec succs. Reprenons le fichier de configuration ini libpcap0.8 tial (/etc/honeypot/honeyd.conf) afin de partir rrdtool dune base existante et expliquer les tapes librrd4 ncessaires la cration de service virtuel. libdumbnetl Les lignes suivantes permettent de dclarer le farpd rseau virtuel utilis en exemple : honeyd-common La libpcap est une bibliothque de fonctions servant d'interface la capture de paquets et est indpendante du systme. RRDtool est un outil de gestion de base de donnes RRD permettant la sauvegarde haute performance et le trac de graphiques, de donnes chronologiques. libdumbnet est une bibliothque rseau portative qui fournit une interface simplifie pour
route entry 10.0.0.1 route 10.0.0.1 link 10.2.0.0/24 route 10.0.0.1 add net 10.3.0.0/16 10.3.0.1 latency 8ms bandwidth 10Mbps route 10.3.0.1 link 10.3.0.0/24 route 10.3.0.1 add net 10.3.1.0/24 10.3.1.1 latency 7ms loss 0.5 route 10.3.1.1 link 10.3.1.0/24

Le systme dexploitation est maintenant compltement jour, mettre en place honeyd se fera dans de bonnes conditions. Il est possible de ne pas passer par cette tape mais elle est fortement conseille pour la scurit et la stabilit de votre systme dexploitation.

Configuration dHoneyd

www.lpmagazine.org

45

Scurit Scurit avec Honeypot

Le rseau virtuel prcdemment cr fonctionnera aprs qu'ait t dclare, dans la table de routage, une route pour l'atteindre. La passerelle utilise pour cette route est l'interface loopback afin de ne pas perturber le rseau existant (voir Figure 2).
nocrash:~# route add -net 10.0.0.0 netmask 255.0.0.0 gw localhost

Simulation de service

Entrons maintenant dans le vif du sujet avec Figure 3. Code du serveur FTP la simulation de service, c'est--dire le but <Description> premier dHoneyd.
set <Type de machine> personality # Cration d'un profil template create template set template personality "Microsoft Windows XP Professional SP1" # For a complex IIS server add template tcp port 21 add template tcp port 22 "/usr/share/honeyd/scripts/ test.sh $ipsrc $dport" add template tcp port 23 proxy $ipsrc:23add template udp port proxy 141.211.92.141:53 add template tcp port 80 "sh /usr/share/honeyd/scripts/ win32/web.sh" set template default tcp action # More parameters set template uptime 1728650 set template maxfds 35 bind 10.3.1.12 template add template tcp port 21 "/usr/ share/honeyd/scripts/ftp.sh " add template tcp port 22 "/usr/ share/honeyd/scripts/test.sh $ipsrc $dport" add template tcp port 23 proxy $ipsrc:23add template udp port 53 proxy 141.211.92.141:53 add template tcp port 80 "sh /usr/share/honeyd/scripts/ win32/web.sh" set <Type de machine> personality <Description> set <Adresse IP Honeypot personality "/usr/share/honeyd/scripts/ftp.sh" <Description>

Permet de renseigner la signature du service mul. Dans notre exemple, nous allons muler un systme dexploitation Microsoft XP SP1 :
bind <Adresse IP> <Type de machine>.

Permet de dfinir une adresse IP notre honeypot. Pour rsumer, nous avons cr des services, leur avons donn des descriptions ainsi quune identit. Cela suffit-il pour leurrer les possibles attaquants de votre systme ? 53 La rponse est NON. En effet, il est prsent ncessaire de simuler le fonctionnement du service prtendument existant. Les services sont de plusieurs types. Le fichier de configuration prcdemreset ment dit montre la mise en place de plusieurs services : un serveur web, un serveur SSH ainsi quun service Telnet.

mais pour un service distinct. La premire ligne mulera un service de type serveur FTP (Port 21), la deuxime un serveur SSH (Port 22), la troisime, quant elle, mulera un service Telnet (Port 23) ainsi quun serveur web (Port 80). Afin de leurrer lattaquant, HoneyD mule le service en question grce des scripts. Dans notre cas, pour le serveur FTP, le script en question se trouve sur le systme dexploitation cet emplacement : /usr/share/honVoici une partie du code du fichier /usr/ share/honeyd/scripts/ftp.sh. Vous constatez que ce dernier gre une fausse authentification dun serveur FTP ne renvoyant que des lignes de texte et aucune au serveur en lui-mme ; ainsi, il n'est pas dangereux (voir Figure 3). Lattaquant potentiel pensera donc stre connect avec succs au serveur FTP. Beaucoup de scripts permettant dmuler de nombreux services sont disponibles sur le site officiel : http://www.honeyd.org/contrib.php. Lorsque vous tlchargez de nouveaux scripts, il est important de ne pas oublier de leur donner les droits dexcution.
nocrash:~# chmod 755 /usr/share/ honeyd/scripts/ftp.sh eyd/scripts/ftp.sh.

Dcomposons un peu ces lignes. La directive Create sert spcifier le type de machine muler. Dans notre cas, il sagit dun template quil sera possible de rutiliser plus tard. Ensuite, il faut assigner une identit notre service virtuel. Pour cela, nous utilisons ces directives :

Les autres lignes permettent de donner encore plus de faux dtails lattaquant potentiel :
# Dfinit luptime de la machine

Analysons simplement la premire ligne puis- set template uptime 1728650 que les autres ont le mme fonctionnement # Dfinit la description des fichiers
set template maxfds 35

Afin de pouvoir grer les logs du systme dHoneyPot, il est ncessaire de crer le rpertoire et dy ajouter les droits :
nocrash:~# mkdir /var/log/honeyd

Figure 2. Rseau internet/externe

nocrash:~# chown -R honeyd:honeyd /var/log/honeyd

46

Linux+ 6/2009

Scurit Scurit avec Honeypot

Pour fonctionner correctement, Honeyd uti- honeyd[3544]: started with -p /etc/honeypot/nmap.prints lise loutil Arpd install prcdemment. Honeyd -l /var/log/honeypot/honeypot.log permet dassocier ses machines virtuelles -f /etc/honeypot/honeyd.conf des adresses IP qui ne sont pas attribues dans -i lo le rseau. Arpd rpond aux requtes ARP en -d 10.0.0.0/8 renvoyant ladresse MAC de la machine hhoneyd[3544]: listening on lo: bergeant Honeyd. Une fois ladresse MAC ip and (dst net 10.0.0.0/8) renvoye, la communication entre Honeyd et honeyd[3544]: Demoting process lautre machine dmarre :
privileges to uid 65534, gid 65534 nocrash:~# farpd 192.168.1.0/24

Sur le rseau
http://www.honeyd.org/ http://www.honeyd.org/contrib.php

Not shown: 1711 closed ports PORT STATE SERVICE ftp ssh telnet http 21/tcp open 22/tcp open 23/tcp open 80/tcp open

Lun des problmes rcurrents lors du lanceand (dst net 192.168.1.0/24) and not ment dHoneyd est la gestion des privilges ether src 00:22:15:cb:aa:5e sur les fichiers et sur les dossiers. Il est donc essentiel de donner lensemble des droits aux Si vous avez plusieurs interfaces rseau, vous fichiers/dossiers lutilisateur honeyd ainsi pouvez spcifier celle que vous voulez utiliser : quau groupe honeyd (Pensez la commande ocrash:~# farpd -i eth0 192.168.1.0/24. chown et chmod). Dans le cas contraire, cette erreur est susceptible de survenir :
arpd[3014]: listening on eth0: arp

Nmap done: 1 IP address (1 host up) scanned in 0.587 seconds

ventuellement, testons le bon fonctionnement de nos services.


nocrash:~# ftp ftp> open 10.3.0.12 Connected to 10.3.0.12. 220 debian. FTP server (Version wu-2.6.0(5) lundi 1 juin 2009, 20:27:25 (UTC+0200)) ready. Name (10.3.0.12:nocrash): anonymous

Dmarrage dHoneyd

prsent que la configuration dHoneyd est entirement termine et nos faux services paramtrs, il est ncessaire de dmarrer Honeyd. La commande de contrle de notre honeypot Honeyd comporte plusieurs options : Option d : lance en mode interactif Option f : prcise le fichier de configuration utiliser Option p : fichier contenant les empreintes dOS Option l : indique le chemin complet vers les logs de paquet Option i : indique linterface utiliser si vous en possdez plusieurs
nocrash:~# honeyd -p /etc/ -l /var/ honeypot/nmap.prints

honeyd[3536]: honeyd_logstart: fopen("/var/log/honeypot/ honeyd.log"): Permission denied

Relanons maintenant honeyd sans loption -d permettant de le lancer en tant que dmon. Vrifiez ventuellement que le dmon honeyd est effectivement prsent en listant les processus actifs.
nocrash:~# ps aux | grep honeyd nobody 3684 Ss 19:17 0.0 0.1 4636 2616 ? 0:00 /usr/bin/honeyd

Honeyd est donc entirement mis en place, il est alors possible de leurrer des attaquants potentiels.

log/honeypot/honeyd.log -f /etc/honeypot/honeyd.conf i lo 10.0.0.0/8 -d

La commande suivante permet donc de lancer Honeyd en mode interactif (option -d), en spcifiant le fichier de log /var/log/honeypot/ honeyd.log (option -l), en utilisant le fichier de configuration par dfaut /etc/honeypot/ honeyd.conf (option -f), en utilisant les em- bind 10.3.1.12 template preintes dOS prsentes dans le fichier /etc/ honeypot/nmap.prints (option -p) et avec lad- Nos faux services rpondront donc ladresresse IP 10.0.0.0/8 (option -i) comme interface lo. se 10.3.1.12. Pour vrifier le bon fonctionnement dHoneyd, lanons un nmap sur ladresnocrash:~# honeyd se 10.3.1.12.
-p /etc/honeypot/nmap.prints -l /var/log/honeypot/honeypot.log -f /etc/honeypot/honeyd.conf -i lo 10.0.0.0/8 Niels Provos -d Honeyd V1.5c Copyright (c) 2002-2007 nocrash:~# nmap 10.3.0.12 Starting Nmap 4.62 (http://nmap.org ) at 2009-06-01 20:16 CEST Interesting ports on 10.3.0.12:

Dimportants honeypots sont ralisables grce Honeyd car il est faible interaction et -l /var/log/honeypot/honeyd.log est trs complet bien quassez jeune par rap-p /etc/honeypot/nmap.prints port ses concurrents. Il a lavantage dtre -a /etc/honeypot/nmap.assoc particulirement souple grce son systme -0 /etc/honeypot/pf.os de scripts. Il nest pas forcment conseill -x /etc/honeypot/xprobe2.conf dutiliser Honeyd sur un serveur en produc-u 108 -g 116 --disable-webserver tion ayant dautres tches accomplir. En ef-i eth0 10.0.0.0/8 fet, il est prfrable de placer votre honeypot debian:/var/log# sur un serveur distinct qui lui est uniquement ddi pour ainsi raliser le maximum danaDans le fichier de configuration, il y a cette lyses sur les rsultats rcuprables. ligne :
-f /etc/honeypot/honeyd.conf

Conclusion

A propos de l'auteur...
Rgis SENET, actuellement stagiaire chez JA-PSI est tudiant en quatrime anne lcole Suprieur dinformatique Supinfo. Passionn par les tests dintrusion et les vulnrabilits Web, il tente de dcouvrir la scurit informatique dun point de vue entreprise. Il s'oriente actuellement vers le cursus CEH, LPT et Offensive Security. Contact : regis.senet@supinfo.com Site internet : http://www.regis-senet.fr

www.lpmagazine.org

47

Scurit ProFTPd, MySQL, TLS

ProFTPd, MySQL, TLS


la scurit des tranferts
Rgis SENET

Le transfert des donnes via le grand rseau qu'est Internet est, lheure actuelle, une notion tout fait indispensable ainsi que tout fait normale. En effet, chaque jour le nombre de transferts transitant via Internet augmente de manire vertigineuse.

ien que de nos jours, plus de 90% du trafic utilis sur Internet corresponde au protocole HTTP (HyperText Transfer Protocol), il existe dautres protocoles tels que FTP (File Transfer Protocol) qui ont leur part dans limmensit du trafic. Le protocole FTP est un protocole relativement ancien du fait quil est apparu en 1971 entre les machines du MIT. Le petit bmol cette technologie est que par dfaut, le protocole FTP laisse transiter en clair lensemble des donnes, que ce soit les donnes en elles-mme mais aussi les identifiants de connexion, savoir noms dutilisateur et mots de passe. Pour cela, nous allons prsenter la mise en place dun serveur FTP alliant simplicit, facilit de configuration et scurit.

des installations va se raliser grce au gestionnaire de paquets propre un systme Debian : APT (Advanced Package Tool). Il est possible tout moment quune faille de scurit soit dcouverte dans lun des modules composant votre systme que ce soit Apache ou quoi que ce soit dautre. Certaines de ces failles peuvent tre critiques dun point de vue scurit pour lentreprise. Afin de combler ce risque potentiel, il est ncessaire de rgulirement mettre jour lensemble du systme grce divers patches de scurit. Il est possible de mettre jour lensemble du systme via la commande suivante :

linux@software.com.pl

Mise jour du systme

Cet article explique...


Le fonctionnement dun serveur FTP classique, Les faiblesses du protocole FTP, Les moyens pour palier les faiblesses de ce protocole.

Au cours de cet article, la distribution utilise fut une Debian 5.0 (Lenny) entirement mise jour. Attention, il est possible que certaines commandes ne soient pas tout fait identiques sur une autre distribution. Lensemble

48

Linux+ 6/2009

Scurit ProFTPd, MySQL, TLS

nocrash:~# apt-get update && apt-get upgrade

Le systme dexploitation est maintenant compltement jour, il est donc possible de mettre en place un serveur FTP dans de bonnes conditions. Il est possible de ne pas passer par cette tape mais elle est fortement conseille pour la scurit ainsi que la stabilit de votre systme dexploitation.

ProFTPd a grandi du dsir d'avoir un serveur FTP scuris et facilement configurable. Quand le Projet a vu le jour la fin de lanne 2001, le serveur le plus utilis tait wu-ftpd. Nanmoins, bien que wu-ftpd fut le serveur le plus utilis pour ses performances, il lui manque de nombreuses caractristiques pour concurrencer les nouveaux serveurs FTP sous Windows. Les futurs dveloppeurs de ProFTPd ont donc dcid de crer un nouveau serveur FTP, scuris, facilement configurable la manire dApache et contenant les dernires nouveauts disponibles. De trs nombreuses personnes ont particip la cration du projet ProFTPd comme Jesse Sipprell, le crateur du logiciel, John Morrissey, lun des principaux dveloppeurs des modules sajoutant ProFTPd ou bien encore Andrew Houghton, crateur du module permettant ProFTPd de communiquer avec les bases de donnes MySQL. Actuellement sa version stable depuis le 30 juin 2009, la version 1.3.2a, ProFTPd dispose galement dune version avance la version 1.3.3.rc1. Son architecture est modulaire, ce qui a permis d'crire des extensions pour le support de la cryptographie SSL/TLS (protocole FTPS) et l'extension de l'authentification via des bases RADIUS, LDAP ou SQL. MySQL est un gestionnaire de base de donnes que nous ne prsentons mme plus du fait de sa grande notorit. Mme si MySQL a t adopt par de nombreuses entreprises, les dveloppeurs sont toujours aussi actifs avec la sortie dune nouvelle version stable, la version 5.1.36 le 1er Juillet 2009 alors quune autre version avec de nombreux changements est en dveloppement : la version 6.0.11. TLS ou Transport Layer Security, anciennement nomm Secure Socket Layer (SSL), est un protocole de scurisation des changes

ProFTPd, MySQL et TLS

Figure 1. Configuration de ProFTPd

sur Internet. (Cf. Wikipdia). Nous allons nous Nous ne rentrerons pas en dtail dans la scuservir de cette scurisation supplmentaire lors risation de la base de donnes MySQL, mais vous devez garder lide que celle-ci est du transfert de nos donnes extrmement importante pour la stabilit du Mise en place de la base de systme. Il vous est possible de regarder le donnes MySQL lien suivant pour ce qui est de la scurisation Comme nous avons pu le dire prcdemment, la de vos bases de donnes : http://www.regisbase de donnes MySQL va permettre de stoc- senet.fr/blog/article.php?id_article=40. ker lensemble des comptes utilisateurs pouvant se connecter au serveur FTP. Nous allons donc Cration des tables installer la base de donnes, la scuriser ainsi Il est prsent ncessaire de crer la base de donnes en rapport avec le serveur FTP ainsi que crer les tables ncessaires. que deux tables contenant les utilisateurs et Installation de MySQL les groupes. Pour cela, nous allons utiliser les Avant de parler de configuration de la base de commandes suivantes : donnes ainsi que des politiques de scurit mettre en place, il est bien videmment n- CREATE DATABASE `proftpd`; USE proftpd; cessaire dinstaller la base de donnes.
nocrash:~# apt-get install mysqlserver

Cration de la base de donnes proftpd (cf. Lisitng 1).

Ce qu'il faut savoir...


Connaissance en systme dexploitation UNIX/Linux et des bases de donnes. Figure 2. Connexion avec Filezilla

www.lpmagazine.org

49

Scurit ProFTPd, MySQL, TLS

Cration de la table ftpuser (cf. Lisitng 2). Il est prsent normalement possible de voir Afin dintgrer lensemble des tables nos deux table: ftpgroup et ftpuser. sans avoir les rcrire, il est possible dutiliPar la suite, il est ncessaire de crer un ser la technique suivante : utilisateur (proftpd) avec un mot de passe (password) qui a seulement les droits de lire Crer un fichier nomm database.sql les donnes de la base proftpd. dans votre /home et y mettre lensemble des ordres SQL prcdemment vus. GRANT USAGE ON proftpd.* TO Insrer lensemble des commandes grce proftpd@'localhost' IDENTIFIED BY password WITH GRANT la commande suivante :

ftp.de.debian.org/debian/pool/main/ p/proftpd-dfsg/proftpd-modmysql_1.3.1-17lenny2_i386.deb nocrash:~# dpkg -i proftpdmod-mysql_1.3.1-17lenny2_i386.deb

Linstallation dOpenSSL est ncessaire pour lutilisation de TLS par la suite pour chiffrer les communications. Linstallation du paquet proftpd-mod-mysnocrash:~# mysql -u root -p < / OPTION; ql permet de pouvoir faire interagir le serveur home/nocrash/database.sql FTP avec la base de donnes MySQL pour la Enter password ProFTPd gestion des utilisateurs Vrifier la prsence des tables en vous Linstallation de ProFTPd va simplement se Lors de linstallation de proftpd, il est connectant la base de donnes : raliser grce au gestionnaire de paquets pro- ncessaire de choisir Indpendamment lors du nocrash:~# mysql -u root -p pre Debian, le gestionnaire APT. choix du lancement de ProFTPd (cf. Figure 1).
Enter password: [] mysql > use proftpd; mysql > show tables; nocrash:~# apt-get install proftpd openssl nocrash:~# wget http://

Configuration de base de ProFTPd

Lisitng 1. Cration de la table ftpgroup intgrant lensemble des groupes dutilisateurs du serveur FTP.
--- Structure de la table `ftpgroup` -CREATE TABLE `ftpgroup` ( `groupname` varchar(16) NOT NULL default '', `gid` smallint(6) NOT NULL default '5500', `members` varchar(16) NOT NULL default '', KEY `groupname` (`groupname`) ) TYPE=MyISAM COMMENT='Table des groupes ProFTPd';

Nous allons commencer dans un premier temps par raliser les configurations basiques du serveur FTP. Lensemble des configurations se ralise dans un mme et unique fichier, le fichier /etc/proftpd/proftpd.conf.
nocrash:~# vi /etc/proftpd/ proftpd.conf

LIPV6 ntant pas pleinement utilis lheure actuelle, il est possible de dsactiver son utilisation grce la directive suivante :
UseIPv6 off

Lisitng 2. Cration de la table ftpuser intgrant lensemble des utilisateurs du serveur FTP.
--- Structure de la table `ftpuser` -CREATE TABLE IF NOT EXISTS `ftpuser` ( `id` int(10) unsigned NOT NULL auto_increment, `userid` varchar(32) NOT NULL default '', `passwd` varchar(32) NOT NULL default '', `uid` smallint(6) NOT NULL default '5500', `gid` smallint(6) NOT NULL default '5500', `email` varchar(255) NOT NULL, `homedir` varchar(255) NOT NULL default '', `shell` varchar(16) NOT NULL default '/bin/false', `count` int(11) NOT NULL default '0', `accessed` datetime NOT NULL default '0000-00-00 00:00:00', `dl_bytes` bigint(20) NOT NULL, `dl_count` bigint(20) NOT NULL, `ul_bytes` bigint(20) NOT NULL, `ul_count` bigint(20) NOT NULL, `modified` datetime NOT NULL default '0000-00-00 00:00:00', `LoginAllowed` enum('true','false') NOT NULL default 'true', PRIMARY KEY (`id`) COMMENT='Table des utilisateurs ProFTPd' ; ) ENGINE=MyISAM

Lensemble des directives suivantes permet de donner (ou non) des informations sur le serveur FTP
ServerName "Mon serveur FTP" ServerType standalone ServerIdent on "Bienvenue sur mon ftp. Veuillez-vous identifier" DeferWelcome on

La directive DeferWelcome on permet de ne pas donner dinformation prcise sur le serveur. ServerType quant elle permet de spcifier le type de lancement de ProFTPd.
Port 21 Umask 022 022 MaxInstances 30

La directive Port permet de spcifier le port dcoute du serveur FTP qui est 21 par dfaut. MaxInstance permet quand elle de spcifier le nombre de processus fils maximum que va grer proftpd.

50

Linux+ 6/2009

Scurit ProFTPd, MySQL, TLS

servent configurer un accs anonyme au service FTP. De cette manire, les utilisateurs anonymes se retrouveront dans un dossier spcialement prvu cet effet.
<Anonymous /home/ftp> MaxClients 5 "Nombre de clients maximum atteints: 5" User ftp Group ftp </Anonymous>

Lisitng 3. Restriction des accs aux utilisateurs anonymes

<Anonymous /home/nocrash/files/ primary/html/download> Group public User public UserAlias anonymous public UserAlias ftp public AnonRequirePassword off MaxClients 10 <Limit WRITE> DenyAll </Limit> <Directory uploads/* <Limit READ> DenyAll </Limit> <Limit STOR> AllowAll </Limit> </Directory> </Anonymous>

Figure 3. Acceptation du certificat

NB : Au del de 30, il y a un risque de Dos. Afin dviter les attaques de type Bruteforce ou de type dictionnaire lencontre de ProFTPd, il est ncessaire de dfinir la directive MaxLoginAttempts.
MaxLoginAttemps 3

La directive DefaultRoot est lune des directives les plus importantes du fichier de configuration. Elle limite le user son home directory, si son home directory est par exemple /home/nocrash, il ne pourra se balader qu lintrieur de celui-ci et ne pourra remonter plus haut. Lors de sa connexion, le user verra comme path dans son client FTP le chemin /
DefaultRoot

Les balises <Directory></Directory>, permettent quant elle davoir une configuration diffrente en fonction des rpertoires. Les dernires balises, les balises <LIMIT> </LIMIT> quant elles sont trs libres dutilisation. En effet, il est possible de limiter la connexion, lcriture des donnes, la lecture des donnes etc. (cf. Lising 3). La directive UserAlias est obligatoire dans le contexte des connexions anonymes permettant aux clients de se connecter avec le compte anonymous sans que celui-ci n'existe rellement sur le systme

Configuration de ProFTPd en rapport avec la base de donnes

Il est possible de pousser la configuration grce lutilisation de balise VirtualHost, Anonymous, Directory et Limit. Les balises <VirtualHost></VirtualHost> permettent comme leur nom lindique de crer des htes virtuels permettant des configurations diffrentes en fonction de lhte cat /etc/proftpd/proftpd.conf | grep recherch. Les balises <Anonymous></Anony- include /etc/proftpd/sql.conf mous> comme leur nom le laisse comprendre include /etc/proftpd/sql.conf

Il ny a pas de # devant la ligne, cest parfait, la ligne nest donc pas commente. Voici donc les modifications apporter Les configurations de toutes les options en dans le fichier /etc/proftpd/sql.conf: rapport avec la base de donnes vont se raliser dans le fichier /etc/proftpd/sql.conf <IfModule mod_sql.c> SQLBackend mysql qui est inclus dans le fichier de configura</IfModule> tion principal grce la directive: include /etc/proftpd/sql.conf. Veillez ce que cette ligne ne soit pas Pour plus de scurit au niveau des mots de commente dans le fichier /etc/proftpd/ passe, nous allons nous assurer que ceux-ci vont tre crypts dans la base de donnes proftpd.conf grce la fonction MySQL ENCRYPT.
SQLAuthTypes Crypt SQLAuthenticate users* groups*

Il est possible de coupler plusieurs mthodes dauthentification. Par exemple, si nous souhaitons avoir des mots de passe crypts et des mots de passe en clair dans la base de donnes :
SQLAuthTypes Crypt plaintext

Il est prsent ncessaire de spcifier la base de donnes dans le fichier de configuration. Pour cela, il est ncessaire dutiliser la directive suivante:
SQLConnectInfo proftpd@localhost root votre_mot_de_passe

Figure 4. Connexion russi

www.lpmagazine.org

51

Scurit ProFTPd, MySQL, TLS

Lisitng 4. Gestion des logs


# Enregistre les reques SQL dans /var/log/proftpd/mysql.log SQLLogFile /var/log/proftpd/mysql.log # Enregistre les authentifications LogFormat auth "%v [%P] %h %t \"%r\" %s" ExtendedLog /var/log/proftpd/auth.log AUTH auth

Figure 5. Page d'accueil de ProFTPd Admin

# Enregistre les accs aux fichiers LogFormat write "%h %l %u %t \"%r\" %s %b" ExtendedLog /var/log/proftpd/access.log WRITE,READ write # Rcupre le nom partir de l'IP de la machine de l'utilisateur ( rsolution DNS )IdentLookups on

Il faut galement donner ProFTPd le nom des colonnes pour les tables usertable et grouptable :
SQLUserInfo ftpuser userid passwd uid gid homedir shell SQLUserWhereClause "LoginAllowed = 'true'" SQLGroupInfo ftpgroup groupname gid members

Lisintg 5. Gestion des compteurs


# Met jour les compteurs chaque connexion d'un utilisateur SQLLog PASS updatecount SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser # Met jour les compteurs chaque upload ou download d'un utilisateur SQLLog STOR,DELE modified SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser # Met jour le nombre de bytes downloads SQLLog RETR SQLNamedQuery dlbytescount dlbytescount UPDATE "dl_bytes=dl_bytes+%b WHERE userid='%u'" ftpuser # Met jour le nombre de tlchargements SQLLog RETR SQLNamedQuery dlcount dlcount UPDATE "dl_count=dl_count+1

Il est galement possible de grer lensemble des logs de la base de donnes (cf. Listing 4). Les commandes suivantes vont permettre la mise jour de lensemble des compteurs (cf. Listing 5). Pour la dernire tape concernant la base de donnes, il est ncessaire de crer un utilisateur afin de pouvoir se logguer avec ce dernier.
INSERT INTO `ftpuser` ( `id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed` , `modified`, `LoginAllowed`, email` ) VALUES ('', 'NoCrash', ENCRYPT('passwd'), '5500', '5500', '/home/nocrash', '/bin/ false', '', '', '', 'true', 'nocrash@nocrash-corp.fr' );

WHERE userid='%u'" ftpuser # Met jour le nombre de bytes uploads SQLLog STOR SQLNamedQuery "ul_bytes=ul_bytes+%b SQLLog STOR SQLNamedQuery WHERE userid='%u'" ftpuser ulbytescount ulbytescount UPDATE WHERE userid='%u'" ftpuser ulcount ulcount UPDATE "ul_count=ul_count+1

# Met jour le nombre d'uploads

Configuration du TLS

Nous avons dit prcdemment que lensemble des donnes seraient cryptes via TLS afin dempcher quune personne coutant

sur le rseau ne puisse voir nos donnes en clair. Pour raliser cela, il est donc ncessaire de crer les certificats pour le mode TLS :
nocrash:~# mkdir /etc/proftpd/ssl nocrash:~# openssl req -new -x509 days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/ proftpd.key.pem

Figure 6. Liste des utilisateurs

52

Linux+ 6/2009

Scurit ProFTPd, MySQL, TLS

Une fois le certificat cr, il est ncessaire dapporter des modifications au fichier de configuration. Tout comme pour la base de donnes, les configurations de toutes les options en rapport avec lencryptage des donnes vont se raliser dans le fichier /etc/proftpd/tls.conf qui est inclus dans le fichier de configuration principal grce la directive : include /etc/proftpd/ tls.conf. Veillez ce que cette ligne ne soit pas commente dans le fichier /etc/proftpd/proftpd.conf :
cat /etc/proftpd/proftpd.conf | grep include /etc/proftpd/tls.conf include /etc/proftpd/tls.conf

Il ny a pas de # devant la ligne, cest nouveau parfait, la ligne nest pas commente. Les lignes suivantes :
<IfModule mod_tls.c> TLSEngine </IfModule> off

sont donc remplacer par :


<IfModule mod_tls.c> TLSEngine TLSLog TLSProtocol SSLv23 TLSOptions NoCertRequest TLSRSACertificateFile TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem TLSVerifyClient TLSRequired </IfModule> off on /etc/proftpd/ssl/ proftpd.cert.pem on /var/log/proftpd/tls.log

Les directives TLSRSACertificateFile et TLSRSACertificateKeyFile permettent de spcifier lemplacement de la cl ainsi que du certificat prcdemment crs sur votre systme dexploitation. La directive TLSRequired porte on permet dobliger dutilisation du TLS pour les connexions alors quun attribut off laisse le choix de lutilisation ou non de TLS par le client. En cas de problme avec TLS, des logs sont disponibles dans /var/ log/proftpd/tls.log

Configuration gnrale

Une fois lensemble des configurations faites, lensemble des lignes dcommenter faite, il est ncessaire de charger les modules en rapport avec MySQL manuellement. Pour cela, ditez le fichier /etc/modules.conf :
nocrash:~# vi /etc/modules.conf

www.lpmagazine.org

53

Scurit ProFTPd, MySQL, TLS

Veillez ce que les lignes suivantes ne soient sultat dune connexion russie (cf. Fipas commentes : gure 4). Il est possible de voir que lutilisateur LoadModule mod_sql.c NoCrash ayant comme home /home/noLoadModule mod_sql_mysql.c crash, comme dfini dans linsertion de cet utilisateur dans la base de donnes, a pour Dmarrage de ProFTPd dossier racine son propre dossier home Avant de dmarrer ProFTPd, il est nces- lempchant ainsi de remonter plus haut. saire de redmarrer la base de donnes My- (Petit clin dil la directive DefaultSQL afin que les changements soient pris Root ~) en compte puis lancer ProFTPd sereineAdministration ment.
nocrash:~# /etc/init.d/ mysql stop Starting MySQL database server : mysqld nocrash:~# /etc/init.d/ mysql start

Sur le web
Pour plus dinformations, allez directement voir le site officiel : http://www.proftpd.org/

dditer le fichier de configuration afin que ce dernier renseigne les bons renseignements de la base de donnes :
nocrash:~# vi /var/www/proftpdadmin/configs/ config.php $cfg->db_host = localhost $cfg->db_name = proftpd $cfg->db_user = mon_utilisateur $cfg->db_pass = mon_mot_de_passe

Une fois le fichier modifi et enregistr, il est maintenant possible de vous connecter mysqld linterface dadministration des utilisanocrash:~# /etc/init.d/ nocrash:~# apt-get teurs ainsi que des groupes sous ProFTPd proftpd start install apache2 (cf Figure 5). Lcran donnant toutes les Starting ftp server : proftpd. informations sur les utilisateurs, vous pouUne fois le serveur Apache prsent sur votre vez consulter en Figure 6. Pour voir linterConnexion machine, il est ncessaire de tlcharger lin- face permettant la cration des utilisateurs Afin de nous connecter notre serveur FTP terface dadministration : (cf. Figure 7). (cf. Figure 2) distance, nous allons utiliser Conclusion lun des clients le plus connu actuellement : nocrash:~# cd /var/www/ nocrash:~# wget http://www.rt74.eu/ La mise en place dun serveur FTP convenaFileZilla public/dl/proftpdadmin.tar.gz blement scuris et stable ne se fait pas en Au niveau de la configuration, il est quelques clics, il est rellement ncessaire ncessaire de choisir FTPES dans le type nocrash:~# tar xzf de prendre son temps afin davoir une confide serveur afin quil corresponde un proftpdadmin.tar.gz guration optimale. serveur FTP avec encryptage des donnes nocrash:~# rm -rf proftpdadmin.tar.gz La suivi de ce petit article vous permetvia TLS. tra donc davoir un bon dbut en matire de Lors de la premire connexion, il vous sera demand daccepter le certificat avant Avant de vous connecter linterface dad- serveur FTP scuris et stable. Il ne vous resla connexion (cf. Figure 3). Et voici le r- ministration de ProFTPd, il est ncessaire te plus qu dfinir les utilisateurs, les droits de ces derniers ainsi que dautres options suivant vos besoins. ProFTPd est un serveur FTP complet, les seules limites sont celles de votre imagination.
Starting MySQL database server :

Afin de grer lensemble des utilisateurs ainsi que des groupes lis a ProFTPd, il est possible dutiliser une interface administrative. Pour cela, il est ncessaire dtre en possession dun serveur Apache. Dans le cas ou vous nauriez pas de serveur Apache :

des utilisateurs

A propos de l'auteur
Rgis SENET, actuellement stagiaire chez JA-PSI est tudiant en quatrime anne lcole Suprieure dinformatique Supinfo. Passionn par les tests dintrusion et les vulnrabilits Web, il tente de dcouvrir la scurit informatique dun point de vue entreprise. Il s'oriente actuellement vers le cursus CEH, LPT et Offensive Security. Contact : regis.senet@supinfo.com Site internet : http://www.regis-senet.fr

Figure 7. Ajout d'un utilisateur

54

Linux+ 6/2009

Scurit Chiffrement avec EncFS

Chiffrement
Rgis Senet

des donnes avec EncFS


Le chiffrement est en cryptographie le procd grce auquel on souhaite rendre la comprhension dun document impossible toute personne qui na pas la cl de (d)chiffrement. Cet article vous montrera comment assurer la confidentialit de vos donnes avec EncFS.

e terme chiffrement est un anglicisme, tir de l'anglais encryption. L'acadmie franaise prcise bien que le mot chiffrement est bannir mme sil se retrouve assez rgulirement dans des usuels. Il est noter galement quil y a une importante diffrence entre les dfinitions des mots chiffrer/dchiffrer et chiffrer/dchiffrer. Dchiffrer dsigne le fait de retrouver le message en clair correspondant un message chiffr sans possder la cl de dchiffrement alors que le fait de dchiffrer un message permet de retrouver le message en ayant la cl en sa possession.t lheure actuelle, il est possible de chiffrer, ou pour les plus pointilleux, chiffrer, peu prs lensemble des donnes, quil sagisse des donnes prsentes sur le disque dur de nos serveurs ou de nos ordinateurs portables, que ce soit les donnes transitant sur le rseau, la VOIP etc. Le chiffrement de certaines donnes peut tre trs facilement comprhensible du fait que lon peut comprendre que ces donnes sont importantes voire vitales pour une entreprise.

En effet, depuis lavnement des ordinateurs portables, de plus en plus de donnes extrmement confidentielles se promnent sur les disques durs des techniciens, des commerciaux ou encore des dirigeants ainsi que des secrtaires. Le transport tant lun des meilleurs atouts des ordinateurs portables peut maintenant tre lun de leurs plus gros inconvnients. En effet, il est possible de voir une nette augmentation des vols dordinateur dans les locaux mme des entreprises. Il sest avr que dans plus de 90% des cas, un vol dordinateur ne possdant pas un moyen de chiffrement des donnes acceptable sest sold par des pertes financires ou alors des tentatives dattaque lencontre de lentreprise.

linux@software.com.pl

Cet article explique...


Lintrt du chiffrement des donnes dentreprise, Le chiffrement des donnes avec EncFS.

56

Linux+ 6/2009

Scurit Chiffrement avec EncFS

Les donnes dune entreprise sont rellement la clef de vote de celle-ci, il est absolument ncessaire de les protger de toutes menaces. Nous allons donc nous rapprocher dun moyen de chiffrement/dchiffrement des donnes sur un systme dexploitation de type GNU/Linux. EncFS peut sutiliser tout aussi bien sur un serveur dentreprise que sur un poste utilisateur, il convient donc quasiment lensemble des utilisateurs.

Mise jour du systme

Quest ce quEncFS

Il est possible tout moment quune faille de scurit soit dcouverte dans lun des modules composant votre systme que ce soit Apache ou quoi que ce soit dautre. Certaines de ces failles peuvent tre critiques dun point de vue scurit pour lentreprise. Afin de combler ce risque potentiel, il est ncessaire de rgulirement mettre jour lensemble du systme grce divers patches de scurit. Il est possible de mettre jour lensemble du systme via la commande suivante :
nocrash:~# apt-get update && apt-get upgrade

Installation de Fuse

Fuse ou encore Filesystem in UserSpacE est un logiciel libre permettant un utilisateur sans privilges daccder un systme de fichiers sans quil soit ncessaire de modifier le noyau Linux. Fuse est particulirement utilis pour les systmes de fichiers virtuels ce qui est exactement ce que nous allons mettre en place par la suite. En effet, EncFS est un systme de chiffrement de rpertoire utilisant la bibliothque FUSE ainsi quun module du noyau Linux. Procdons linstallation :
nocrash:~# apt-get install fuse-utils nocrash:~# apt-get install libfuse2

Le projet EncFS a vu le jour pour sa premire apparition dans le courant de lanne 2004. Aprs plusieurs annes de dveloppement, EncFS se trouve tre actuellement sa version 1.5.0 depuis le 7 Septembre 2008. Le numro de version n'est pas constamment mis jour alors que de nouvelles mises jour, bien que minimes, apparaissent. La toute dernire en date du 16 mars 2009 fixe un mini bug dans lapplication ellemme. EncFS a la chance d'tre sous licence GPL lui permettant une volution trs rapide. Cette rapide volution sexplique galement grce aux nombreux utilisateurs renvoyant rgulirement aux dveloppeurs de nouveaux bugs de lapplication. EncFS arrive se diffrencier des autres gestionnaires de chiffrement des donnes grce sa simplicit dutilisation ainsi que grce aux nombreuses options quil possde. En effet, il est possible de choisir entre plusieurs algorithmes de chiffrement des donnes.

Le systme dexploitation est maintenant compltement jour, il est donc possible de mettre en place EncFS dans de bonnes conditions. Il est possible de ne pas passer par cette tape mais elle est fortement conseille pour la scurit ainsi que la stabilit de votre systme dexploitation.
Listing 1. Ajout d'un utilisateur

Il est important de noter quun groupe fuse vient de se crer sur le systme :
nocrash:~# cat /etc/group | grep fuse fuse:x:118:

nocrash:~# adduser nocrash fuse Ajout de lutilisateur nocrash au groupe fuse Ajout de lutilisateur nocrash au groupe fuse Termin. nocrash:~# adduser nocrash fuse Ajout de lutilisateur nocrash au groupe fuse Ajout de lutilisateur nocrash au groupe fuse Termin.

Installation et configuration dEncFS

Listing 2. Chiffrer nos fichiers plus ou moins confidentiels


nocrash:~# encfs /home/nocrash/.protected/ /home/nocrash/data/ Le rpertoire "/home/nocrash/.protected/" n'existe pas. Faut-il le crer ? (y/n) y Le rpertoire "/home/nocrash/data/" n'existe pas. Faut-il le crer ? (y/n) y Cration du nouveau volume encrypt. Veuillez choisir l'une des options suivantes : entrez "x" pour le mode de configuration expert

Au cours de cet article, la distribution utilise fut une Debian 5.0 (Lenny) entirement mise jour. Attention, il est possible que certaines commandes ne soient pas tout fait identiques sur une autre distribution. Lensemble des installations va se raliser grce au gestionnaire de paquets propre un systme Debian : APT (Advanced Package Tool).

Ce qu'il faut savoir...


Connaissance en systme dexploitation UNIX/Linux.

entrez "p" pour le mode paranoaque prconfigur, toute autre entre ou une ligne vide slectionnera le mode normal. ?> x

www.lpmagazine.org

57

Scurit Chiffrement avec EncFS

Voici les commandes utiliser pour linstalla- dentiels. Pour cela, nous allons installer le tion via les sources : programme EncFS. Encore une fois, nous allons raliser cela grce au gestionnaire de panocrash:~# tar zxvf fusequets APT.
2.4.1.tar.gz nocrash:~# cd fuse-2.4.1 nocrash:~# ./configure nocrash:~# make && make ins

Configuration pour les versions Debian non rcente

Pour les versions de Debian assez anciennes, il est ncessaire de rajouter FUSE dans les lments au dmarrage du systme.
nocrash:~# echo fuse >> /etc/modules

Afin de charger le module directement sans avoir redmarrer le PC, il est ncessaire de passer par la commande suivante :
nocrash:~# modprobe fuse

Une fois le module FUSE charg grce un redmarrage ou bien grce lutilisation de modprobe, le module se matrialise par /dev/ fuse. Par dfaut, /dev/fuse nest pas correctement configur et il est ncessaire de modifier le propritaire grce la commande suivante :
nocrash:~# chgrp fuse /dev/fuse

Il est, en premier lieu, important dajouter les utilisateurs pouvant utiliser FUSE au groupe rcemment cr (cf. Listing 1). Exemple va ajouter lutilisateur nocrash dans le groupe fuse. Il est possible de vrifier que notre utilisateur est bien prsent dans le groupe fuse grce la commande groups :
nocrash:~# groups nocrash dialout cdrom floppy audio video plugdev fuse

Quelques vrifications

tions avec une partie du systme. Ce mode tant tellement restrictif quil empcherait le systme de fonctionner dans de bonnes conditions. Mode de configuration manuelle slecnocrash:~# apt-get install encfs tionn. Les algorithmes suivants sont disponiAfin davoir un exemple pratique, nous bles : allons chiffrer lensemble de nos donnes prsentes dans lun de nos dossiers. Le r- AES : 16 byte block cipher pertoire de stockage des donnes chif- -- supporte des tailles de cl de 128 256 bits fres sera /home/nocrash/.protected/ et le -- supporte des blocs rpertoire de travail (prsentant lensemde 64 4096 octets ble des donnes en clair aprs authentifi2. Blowfish : Cryptage cation) sera /home/nocrash/data/. (cf. Lisen bloc de 8 octets ting 2). -- supporte des tailles NB : Il est important de donner des de cl de 128 256 bits chemins complets EncFS et non pas des -- supporte des blocs chemins relatifs tels que ~/.data/ quil faude 64 4096 octets dra remplacer par /home/nocrash/data/. Entrez le numro correspondant Il nest pas ncessaire de se soucier de votre choix : 1 la cration des rpertoires, en effet, lors de la premire utilisation de la commande encfs les dossiers contenant les donnes chiffres et Lcran suivant nous donne la possibilit de les donnes en clair seront automatiquement choisir lalgorithme de chiffrement que nous allons utiliser pour protger nos donnes. crs. Nous allons utiliser le mode de configu- Lalgorithme AES fut choisi du fait de sa ration expert afin dtre entirement mai- robustesse. tre de nos actions et afin davoir un cryptage qui correspond rellement nos be- Algorithme slection "AES" Veuillez choisir une taille soins. NB: Il est fortement conseill lorsquil de cl en bit. sagit d'un dossier trs sensible dutiliser le L'algorithme que vous avez mode paranoaque, ce mode tant beaucoup slectionn supporte plus restrictif. Nanmoins, il est conseill de des cls de 128 256 bits par ne pas utiliser ce mode au cas o le rpertoire paliers de 64 bits. que lon souhaite chiffrer aurait des interac- Par exemple :
Listing 3. La configuration dAES

Veuillez choisir une taille de bloc en octets. L'algorithme que vous avez slectionn supporte des blocs de 64 4096 octets par paliers de 16 octets. Ou appuyez sur entre pour la valeur par dfaut (1024 octets). taille du bloc de systme de fichiers : 1024 Les algorithmes d'encodage de noms de fichiers suivants sont disponibles : Block : E 2. Null : No encryption of filenames 3. Stream : Encodage de flux, garder les noms de fichiers, aussi courts que possible. Entrez le numro correspondant votre choix : 1

Notre utilisateur est bien prsent dans le groupe fuse, il est prsent possible de passer aux tapes suivantes.

Mise en place dEncFS

Il est maintenant ncessaire dinstaller et de configurer EncFS afin de pouvoir chiffrer nos fichiers/dossiers plus ou moins confi-

58

Linux+ 6/2009

Scurit Chiffrement avec EncFS

128, 192, 256 Taille de cl slectionne : 192

cder nos donnes en clair, il va falloir rutiliser la commande que nous avions utilise prcdemment, savoir :
nocrash:~# encfs /home/nocrash/ .protected/ /home/nocrash/data/ Mot de passe :

Sur le Net
Page daccueil : http://www.arg0.net/ encfs.

Lcran suivant nous propose la configurationt dAES. Bien videment, dans le cas o vous auriez choisi un autre algorithme prcdemment, la configuration naurait pas t la mme. Dans ce cas ci, il est simplement ncessaire de spcifier la taille de la cl en bit. Une taille de 192 bits est amplement ncessaire dans ce cas de figure. La taille de la cl grandira proportionnellement limportance des donnes chiffr (cf. Listing 3). Les deux crans suivant vont toujours tre en rapport avec la manire dont nous voulons chiffrer nos donnes. Il vous est possible devalider lensemble des crans suivant avec les options par dfaut. Une fois lensemble des questions rpondues, le mot de passe ainsi quune confirmation de mot de passe vous seront demands. Ce mot de passe servira pour le chiffrement ainsi que le dchiffrement du dossier chiffr :
Vous devez entrer un mot de passe pour votre systme de fichiers. Vous devez vous en souvenir, car il n'existe aucun mcanisme de rcupration. Toutefois, le mot de passe peut tre chang plus tard l'aide d'encfsctl. Nouveau mot de passe : Vrifier le mot de passe : nocrash:~#

fichiers ainsi que leur donner la possibilit de sexcuter. Pour cela, nous allons utiliComparativement la premire fois, cette ser les commandes suivantes : fois ci, EncFS va dtecter quune initialisation a dj t faite sur ces rpertoires nocrash:~# chown nocrash /usr/bin/ et va donc se contenter de demander le encrypt /usr/bin/decrypt mot de passe fourni plus tt afin de dver- nocrash:~# chmod 700 /usr/bin/ rouiller laccs notre rpertoire de tra- encrypt /usr/bin/decrypt vail . Lensemble des donnes cres / copies Il est donc prsent possible de lancer le / dplaces en clair dans le rpertoire de chiffrement et le dchiffrement dun dossier travail (/home/nocrash/data/ dans notre simplement grce aux nouvelles commancas) sera automatiquement stock sous forme des : ./encrypt et ./decrypt. chiffre dans le rpertoire (/home/nocrash/ nocrash:~# ./encrypt .protected/) Afin de vous dconnecter, c'est--dire ne plus avoir accs aux donnes en clair, et il est ncessaire dutiliser simplement la nocrash:~# ./decrypt commande suivante :
nocrash:~# fusermount -u /home/ nocrash/data

Conclusion

Automatisons tous cela

Il existe de nombreuses manires dautomatiser le lancement ainsi que larrt dEncFS. Dans notre exemple, nous allons simplement utiliser la mthode simple se ralisant via la ligne de commande. Il est donc possible de crer deux commandes permettant douvrir ou de fermer rapidement laccs au(x) rpertoire(s) de travail :
nocrash:~# vi /usr/bin/decrypt #!/bin/bash encfs /home/home/.protected/ /home/ home/data/

Afin de vrifier que nous avons ralis lensemble des tapes dans de bonnes conditions, il est possible de vrifier le montage dans le fichier prvu cet effet :
nocrash:~# cat /proc/mounts encfs /home/nocrash/ data fuse.encfs rw,nosuid,nodev, user_id=1000, group_id=1000, default_permissions 0 0

Voila, prsent, il est possible dtre serein avec lensemble de vos donnes confidentielles grce EncFS. Bien quil existe de nombreuses mthodes de chiffrement sous les systmes UNIX/Linux, EncFS possde de nombreux avantages se dmarquant des ses concurrents. Comparativement TrueCrypt par exemple, il nest aucunement ncessaire de crer un fichier/rpertoire dune taille fixe. EncFS dispose donc de nombreuses fonctionnalits quil est possible de mettre en place aprs avoir fait le tour du logiciel.

A propos de l'auteur
Rgis SENET, actuellement stagiaire chez JA-PSI est tudiant en quatrime anne lcole Suprieure dinformatique Supinfo. Passionn par les tests dintrusion et les vulnrabilits Web, il tente de dcouvrir la scurit informatique dun point de vue entreprise. Il s'oriente actuellement vers le cursus CEH, LPT et Offensive Security. Contact : regis.senet@supinfo.com Site internet : http://www.regis-senet.fr

Ce script permet de rapidement lancer le dchiffrement du dossier chiffr :


nocrash:~# vi /usr/bin/encrypt #!/bin/bash fusermount -u /home/nocrash/data

Utilisation

Une fois lensemble des installations faites ainsi que toutes les configurations effectues, il est possible dutiliser notre dossier chiffr grce EncFS. prsent, afin dac-

Ce script quant lui permet de rapidement fermer le point de montage et donc le dossier en clair repassant en chiffr de cette manire. Il est bien videmment indispensable de configurer les droits daccs ces deux

www.lpmagazine.org

59

Pratique Oracle

Oracle dans la cour des pingouins


Jonathan FUSSNER

Dans le monde des bases de donnes, il est un produit incontournable. Depuis des annes Oracle est devenu le SGBDR de rfrence, notamment dans des environnements forte valeur ajoute. Cet article prsente linstallation de cette solution sur un systme Linux.

epuis des annes, dans le monde informatique, les bases de donnes ont reprsent un enjeu majeur en termes de prennit de linformation et de mise en relation avec des logiciels. Dans le monde de lentreprise, cette ralit est dautant plus forte, que linformation constitue une part importante de lactivit de cette dernire et reprsente un atout majeur de prennisation de lactivit. Nous sommes depuis dj plusieurs annes maintenant, entrs dans un monde de communication et d'change dinformations de masse. La rencontre entre linformation (sous toutes ses ormes) et linformatique, a bouscul nos mode de gestion et a permis le dveloppement de bases de donnes, c'est--dire un regroupement des informations traites en donnes, de manire logique, structurelle et relationnelle, selon des modles de donnes. Cette apparition dans les annes 60 des bases de donnes permettra par la suite de dvelopper un ensemble de logiciels ainsi quun langage permettant de manipuler ces bases. Ces logiciels, cest--dire un moteur de base de donnes (le logiciel principal), un interprteur de lan-

gage, une interface de programmation et une interface utilisateur, se regroupent maintenant autour dun Systme de Gestion de Base de Donnes, plus communment dsign sous le sigle SGBD. Enfin lorsque nous parlons dinterprteur, le langage qui se cache derrire est le SQL (Structured Query Language), un langage invent dans les annes 70 par IBM et qui permet dinterroger et manipuler (insrer des donnes, supprimer, grer des droits,.) les bases de donnes. De nos jours, les bases de donnes sont omniprsentes, que ce soit derrire des logiciels ou en application directe. Toute personne qui sintresse quelque peu au domaine informatique, connait la socit Oracle Corporation,

linux@software.com.pl

Ce quil faut savoir...


Administrer une distribution GNU/Linux, Un minimum de connaissances sur le langage SQL, le fonctionnement des bases de donnes, Connaitre les besoins de lentreprise.

60

Linux+ 6/2009

Pratique Oracle

Figure 1. Installez Oracle 11g !

et son Systme de Gestion de Base de Donnes Relationnelle du mme nom. Ce SGBDR dploy dans diffrents environnements de production a largement fait ses preuves depuis de longues annes. Il sagit dune solution propritaire et multiplateforme, ce qui va nous permettre de pouvoir le dployer sur un systme Linux et de crer une base exploitable ! Voil une ide quelle est bonne ! Alors avant de commencer, il convient dclaircir les choses sur deux petits points : Premirement vous allez vous demander pourquoi un magazine orient Linux parle dune solution sous licence propritaire, relativement chre, alors que dautres sont disponibles gratuitement comme MySQL ou PostgreSQL. Je ne peux pas vous donner tort, mais il faut bien comprendre, que certes MySQL et PostgreSQL sont trs biens, mais dans certains environnements trs demandeurs en performance et trs critiques en terme de services et de stockage dinformations (gnralement en grand nombre et dont laccs doit tre optimal), Oracle simpose comme la rfrence

en terme de fiabilit et de performance. Je vous rappelle, que ce SGBD est tlchargeable et utilisable dans un environnement de test, ou non personnel. Si vos souhaitez lutiliser en environnement de production entreprise, vous devrez vous acquitter de la licence dexploitation logicielle. Deuximement, il a souvent t mis en avant laspect multiplateforme des solutions Oracle. Ainsi cette version 11g est installable dans des environnements Unix/Linux. Oui mais voil, Oracle certifie ses solutions compatibles pour les Systmes dExploitation, et sous notre environnement, Oracle est

certifie compatible avec Red Hat. Sachez quil existe des solutions alternatives tout fait logiques au logiciel propritaire. La premire est de dployer cette solution sur lOS clone de la RedHat, il sagit de CentOS. Pour ceux qui ne connaissent pas CentOS, il sagit de la copie conforme de la solution propritaire, mais avec un support communautaire, donc gratuite. Alors certes sur un serveur de production, avoir un OS support est tout--fait recommandable, mais gardez lesprit cette solution. Enfin sachez quil est aussi tout fait possible de linstaller sur une autre distribution GNU/Linux, ainsi amis Debianistes et autres Ubuntistes, ne perdez pas espoir, le dploiement est envisageable, mais avec quelques adaptations supplmentaires. Attention malgr ceci, Oracle ne recommande absolument pas linstallation de son produit sur une plateforme non supporte. Ainsi selon ses dires, mieux vaut avoir une RedHat sous la main ou passer son chemin vers un autre type de systme dexploitation. Je vous propose ici dutiliser une CentOS dans sa dernire version lheure de cet article, cest--dire la 5.3. A lheure o cet article est rdig, la version en cours est la 11G (G signifie support du Grid Computing) sortie en septembre 2007. Mais attention, la sortie de la version 11G R2 est prvue courant de ce deuxime semestre 2009. Quoi quil en soit, la procdure de dploiement ne variera pas. Pour linstant, seul une poigne de chanceux bta-testeurs ont eux entre les

Cet article explique


Lintroduction au monde des bases de donnes, Linstallation dOracle 11g, La cration dune base de donnes, Lintroduction ladministration.

Figure 2. Continuez le paramtrage de linstallation !

www.lpmagazine.org

61

Pratique Oracle

simpose. Ainsi les paquets non satisfaits seront tlchargs et installs, les paquets mettre jour le seront :
yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel glibc-headers gcc gcc-c++ libaio libaio-devel libgcc libxcp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

Groupes et utilisateurs ddis Oracle


Figure 3. Check-in des pr requis indispensables

Afin de raliser ce dploiement dans les rgles de lart, nous devons maintenant crer groupe et utilisateur ddis Oracle : En ligne de commande (avec root) : environ 300 400 Mo pour la partition /usr/sbin/groupadd oinstall temporaire (/tmp) : Swap : Minimum 1,5 Go RAM : 1,5 Go
/usr/sbin/groupadd dba /usr/sbin/useradd -g oinstall -G dba oracle

mains cette nouvelle mouture, trs attendue. Ainsi ds sa sortie, je vous conseille de la tlcharger et de linstaller, mais attention uniquement dans le cadre de test, et non dans un environnement de production ! La migration dune telle infrastructure doit faire suite une batterie complte de tests pralablement organiss, car une telle application est souvent dploye dans des environnements critiques, donc vous devez tre sr de vous et de la stabilit de la version.

Prrequis au dploiement

Bien entendu, prvoyez galement sauvegarCes deux groupes vont nous servir plus tard des et redondance ! lors de linstallation. Nous y reviendrons Quelques paquetages donc ncessaires Enfin assignons un mot de passe lutiVoici maintenant une petite liste de dpen- lisateur Oracle : dances satisfaire, si cela nest pas encore le cas sur votre systme, un petit yum install passwd oracle

Vous vous doutez bien, quavant den venir au fait, nous devons satisfaire quelques prs requis indispensables la suite des oprations. Mais vous allez voir que prrequis est un mot large.

Configuration minimale

Autant vous annoncer la couleur tout de suite : Oracle est une vritable usine gaz ! Et les premiers prs requis sont bien videment dordre physique ! Alors pour satisfaire aux exigences voici un petit aperu dune configuration minimale ! Espace Disque : sans dtailler le tout prvoyez au minimum 16 Go despace libre sur votre partition / si vous avez un serveur partitionn de manire classique (une partition / une partition /home et la swap). Si vous avez plusieurs partitions (/ /opt /tmp ) prvoyez environ 10 Go sur /opt et environ 5Go sur la partition racine (/). Plus Figure 4. Installation en cours ! Prenez donc un petit caf !

62

Linux+ 6/2009

Pratique Oracle

Prparation de lenvironnement de production

Voici, trs certainement, une des parties les plus pnibles dans ce processus pr-installation dOracle. En effet, nous devons maintenant mettre les mains dans le cambouis et modifier un certain nombre de fichiers systme afin de prparer au mieux ce dernier.
/etc/sysctl.conf

Nous devons dans un premier temps diter le fichier /etc/sysctl.conf et ajouter ou modifier selon le cas les lignes suivantes afin de modifier les paramtres systme :
kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 6553600 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 262144

Par la suite, enregistrez vos modifications, et excutez dans un terminal root, la commande /sbin/sysctl p qui permettra dappliquer les changements :
/etc/security/limits.conf

Nous devons maintenant augmenter les limites du Shell pour lutilisateur Oracle, afin dobtenir de meilleures performances systme. Ceci se passe dans le fichier /etc/security/ limits.conf. Ajoutez ces lignes :
oracle oracle oracle oracle soft hard soft hard nproc nproc nofile nofile 2047 16384 1024 65536

faisant tourner un environnement graphique (bof bof sur un serveur de production), ulimit -u 16384 -n 65536 soit de vous connecter sur votre serveur umask 022 distance en SSH (donc noubliez pas le petit yum install ssh-server), et donc tablir Enregistrez les modifications ! une connexion depuis un poste (votre poste bureautique par exemple) avec le support Installation dOracle 11g du protocole X11, ce qui permettra de grer Nous y voil enfin ! Aprs moultes prpara- une installation graphique. Ainsi au cas o tions lheure est enfin venue de passer lins- utilisez la commande : tallation proprement parler de notre SGBD. ssh YX C oracle@IP_DE_VOTRE_ Cest parti ! Avant toute chose, vous devez vous rendre SERVEUR sur le site doracle. Si vous nen avez pas, crez un compte (https://profile.oracle.com Loption C permet de compresser tandis que /jsp/reg/createUser.jsp?src=135736&act=74). loption YX permet justement le support X11. Voici les diffrentes tapes suivies avec Cest indispensable pour pouvoir par la suite tlcharger larchive dOracle 11g ladresse linstallateur graphique dOracle. http://www.oracle.com/technology/software/ products/database/index.html, choisissez la Premire Etape : version Linux x86 ou x86-64 en fonction de votre architecture. Attention vous devez ac- Voil partir dici, vous avez lanc linstallateur, et une fentre apparait ! cepter un contrat de licence. Cette dernire vous informe de lemUne fois larchive tlcharge et dplacement des rpertoires de stockage. compress (attention archive de 1,8Go), Je vous conseille de laisser le chemin ouvrez un terminal et connectez-vous avec par dfaut c'est--dire dans le rperlutilisateur oracle que nous avons cr toire home de votre utilisateur Oracle tout lheure, laide de la commande su (cf. Figure 1). oracle. Positionnez-vous dans le rpertoire data- Cette fentre dcidment trs charge vous demande galement de choisir le base et excutez la commande : type dinstallation que vous souhaitez. ./runInstaller Par dfaut, jai choisi lEdition Standard, mais vous pouvez trs bien installer la Cette commande va vous lancer linstallateur version Enterprise ou alors personnaliOracle. Alors nouvelle petite mise en garde ! ser votre installation. vous de choisir ! Linstallateur dOracle est graphique, ce qui Dans le champ UNIX DBA Group, il est temps de slectionner le group dba (sousuppose soit de linstaller sur un serveur

Et ajoutez les lignes suivantes :

Enregistrez les modifications !

Profil de lutilisateur Oracle

Ne vous inquitez pas ! Nous ne sommes pas encore au bout de nos peines ! Pour ne pas changer, continuons modifier des fichiers de configuration, le dernier pour cette fois-ci. Modifiez le profil de lutilisateur Oracle que nous venons de crer, cest--dire /home/ Figure 5. Crons votre nouvelle base de donnes ! oracle/.bash_profile.

www.lpmagazine.org

63

Pratique Oracle

Pour aller plus loin...


Le livre : Oracle 11g Administration Aux ditions ENI Le livre : Oracle 11g SQL, PL/SQL, SQL*Plus Aux ditions ENI

/opt/oracle/app/oraInventory/ orainstRoot.sh

Puis :
/opt/oracle/app/oracle/product/ 11.1.0/db_1/root.sh

cole TCPCest ainsi que je vous propose maintenant de configurer cet outil. Encore et toujours, dans votre terminal connect root utilisez la commande suivante :
/home/oracle/app/oracle/product/ 11.1.0/db_1/bin/netca

venez-vous, un des groupes que nous avons crs juste avant). Dans les options de configuration, nous ne crerons pas de base de donnes tout de suite, dcochez donc Create Starter Database. Vous pouvez maintenant passer ltape suivante en cliquant sur le bouton Suivant.

Deuxime Etape :
Cette deuxime tape est relativement rapide, vous avez dj fait le plus gros (voir Figure 2). Linstallateur vous demande premirement le chemin pour lInventory Directory. Je vous conseille tout simplement de continuer sur la mme racine arborescente que tout lheure (/home/oracle/) et donc de laisser le chemin par dfaut ! Puis vous devez slectionner le groupe qui aura les droits en criture sur ce rpertoire, il sagit du deuxime groupe que nous avons cr en dbut darticle : oinstall (pour OracleINSTALL). Vous pouvez maintenant passer ltape suivante en cliquant sur le bouton Suivant.

Troisime Etape :
Passez le test des pr-requis indispensables linstallation ! Puis cliquez sur le bouton Suivant et Installer. Si un message davertissement apparait ignorez-le ! Vous pouvez maintenant prendre tranquillement une petite pause car vous lavez bien mrit, de plus le processus dinstallation va prendre quelques minutes, donc pas de panique. Illustration en Figure 3.

Voila vous avez install Oracle. Passons maintenant au paramtrage si vous le voulez Cette commande permet le lancement dun assistant de paramtrage. Lassistant est rebien ! lativement bien fait, et vous devez suivre Paramtrage dOracle 11g les tapes en adaptant votre contexte les Nous pouvons maintenant passer aux paramtres. phases post-installation, cest--dire craDans cette premire tape, nous voulons tion de base de donnes, communication tablir une procdure dcoute. Ainsi slecdu SGBDR sur le rseau. Je pense quil tionnez cette option dans la liste, puis Suivant est inutile de vous prciser, que ladminis- (Reprsent en Figure 4). tration dOracle, surtout en ligne de comSlectionnez loption Ajouter, puis Suimande, ncessite la connaissance pralable vant. du langage SQL, ce qui sera utile notamIndiquez cette fois-ci un nom pour le proment en termes dadministration dune base cessus dcoute (par exemple FUSSNER), (GRANT, REVOKE, ALTER, DROP, ). vous trouverez en Figure 6. un exemple de Vous trouverez dans lencart Sur le Rseau, ma Configuration. un lien sur le SQL. noter galement La prochaine tape consiste paramquOracle possde son propre langage pro- trer les protocoles de communication autocdural nomm PL/SQL. riss. Personnellement jai slectionn TCP car ce dernier gre le contrle des commuParamtrage du Listener nications (Mode Connect). Cliquez sur SuiNous voila maintenant avec Oracle propre- vant. ment install. Mais ce moment de la parSlectionnez le numro de port standard tie, si vous souhaitez crer tout de suite une pour les communications, puis suivant. base de donnes, cette derniere ne pourra Lassistant est termin, Voulez-vous confietre accessible sur le rseau. Et pour cause, gurer un autre processus dcoute ? Slecil nous manque un lment essentiel : Le tionnez NON. Voil le processus dcoute est actif, listener. Il sagit de loutil indispensable qui permet dtablir une connexion rseau et votre base de donnes est accessible sur a la base de donnes, et ceci via le proto- le rseau !

Je vous rassure tout de suite, la fin du processus, vous avez encore un petit travail.

Quatrime Etape :

la fin du processus dinstallation, et pour finaliser cette dernire, lassistant vous demande dexcuter en tant que super-user (root), les commandes suivantes dans un terminal : Figure 6. Nommez votre base !

64

Linux+ 6/2009

Pratique Oracle

Si vous dsirez relancer ce processus, uti- lisez la commande :


/home/oracle/app/oracle/ product/11.1.0/db_1/bin/ lsnrctl start NOM_PROCESSUS

Ou NOM_PROCESSUS est le nom que vous avez donn votre processus, dans mon cas dexemple FUSSNER.

Assistant de cration de base de donnes

Pour ce faire, nous pouvons, soit passer par les commandes, soit par un assistant. Comme tout lheure, je vous propose lassistant relativement bien fait, dans ce cas de figure, il se nomme DBCA pour Oracle Database Configuration Assistant. Donc, toujours dans votre terminal connect root utilisez la commande suivante :
/home/oracle/app/oracle/product/ 11.1.0/db_1/bin/dbca

Cette commande va lancer lassistant de cration de base de donnes. lcran daccueil cliquez sur le bouton Suivant. Sur lcran suivant, slectionnez lOption Crer une base de donnes puis cliquez sur le bouton Suivant. Reprsentation en Figure 5. Choisissez le type de base de donnes que vous souhaitez mettre en place. Cette fentre reprsente en Figure 6 vous demande dindiquer le nom que vous souhaitez attribuer votre base de donnes. Saisissez donc un nom, ainsi quun SID, un identifiant unique pour chaque instance Oracle.

Cette prochaine tape consiste a indiquer si vous le souhaitez une adresse mail de contact en cas de probleme ainsi que de configurer une sauvegarde priodique. Par la suite vous devez attribuer un mot de passe chaque utilisateur systme afin de contrler les accs la base. Vous pouvez utilisateur par utilisateur leur attribuer un mot de passe diffrent, ou alors utiliser la deuxime option et spcifier un mot de passe global pour lensemble des ces derniers. partir de l, vous avez deux possibilits. La premire est de cliquer sur le bouton Terminer, cela aura pour effet de crer votre base de donnes, soit vous pouvez poursuivre lassistant afin daller plus loin dans le paramtrage, et ainsi pour affiner les options lies votre base. vous de choisir. Pour les dbutants, il est conseill dutiliser les paramtres par dfaut et de terminer lassistant cette tape. Validez ces options. Linstallateur vous indiquera la fin de la configuration et la cration avec succs de votre nouvelle base de donnes. Noubliez jamais que cet utilitaire DBCA est loutil indispensable, non seulement pour crer des bases de donnes, mais aussi et surtout pour raliser des oprations dadministration ! Il vous sera donc trs utile.

Sur le rseau
Site dOracle : http://www.oracle.com/ global/fr/index.html

Remplacez FUSSNER par le nom de votre base. Attention, il est temps de vous souvenir du mot de passe que vous avez attribu tout lheure lutilisateur systme SYSMAN. Vous voil enfin entr dans le mode dadministration. Aprs tant defforts. partir dici, vous pouvez effectuer des requtes SQL, afin dadministrer votre base. Souvenez-vous de vos cours sur le langage SQL ! vos CREATE TABLE, DROP TABLE, INSERT INTO, SELECT FROM, GRANT, REVOKE, . Par exemple, admettons que vous souhaitez ajouter un utilisateur : Ajout de lutilisateur toto :
CREATE USER toto IDENTIFIED BY LE_MOT_DE_PASSE_DE_TOTO ;

vous par la suite de crer une requte permettant de lui assigner ce brave toto, des droits en fonction de votre politique de scurit !

Voici termine cette lgre entre en matire, dans le monde impitoyable dOraVous pouvez maintenant vous connecter cle. Comme je vous lai signal en dbut votre nouvelle base de donnes, pour lad- darticle, il sagit dune usine gaz, qui ne ministrer. sapprivoise pas du jour au lendemain. Il Pour ce faire, dans un terminal la com- vous faut donc complter vos connaissanmande : ces, par le langage SQL, et le mode complet dadministration dOracle en passant sqlplus SYSMAN@FUSSNER par la connaissance de larchitecture dun serveur Oracle ou lutilitaire de Sauvegarde RMAN. La plupart des bouquins sur le sujet comportent en moyenne pas moins de 500 pages. Bonne continuation sous le soleil linuxien

Conclusion

Connexion votre base

A propos de lauteur...
Jonathan FUSSNER est tudiant lcole Suprieure dInformatique SUPINFO, et spcialis dans le domaine de ladministration de Systmes et Rseaux. Vous pouvez le contacter au travers de son site Internet : www.fussner.net

Figure 7. Website http://www.oracle.com/global/fr/index.html

www.lpmagazine.org

65

Pratique Jupiter pour Eclipse

Rvision de code avec Eclipse et Jupiter


Adel SAFI

Dans le monde du Gnie Logiciel, plusieurs outils et mthodologies ne cessent dtre invents et crs afin damliorer la qualit des produits logiciels. Ils sont de suite mis la disposition du monde informatique afin dvaluer leur efficacit notamment dans la mise en uvre de processus systmatiques garantissant une qualit meilleure du code avant mme la phase de test.

urant les dernires dcennies, le focus ne cesse dtre mis sur la dtection des anomalies dans des phases qui prcdent mme la mise du logiciel aux scnarios de test. En effet plus lanomalie est dtecte tt au niveau du cycle de dveloppement moins important est le cot de sa correction. Les Experts du monde de lassurance qualit dans le domaine du dveloppement logiciel ont plutt mis le focus sur lassurance qualit du logiciel en sattaquant aux failles possibles au niveau de la dfinition du besoin, de la spcification, de la conception puis au niveau du test avec ses diffrents niveaux selon la mthodologie adopte. Des paradigmes et mthodologies quasi-formalises comme UML, les tests unitaires automatiss, les tests croiss ont permis davancer sur cet axe. Lune des phases qui ne cesse davoir de limportance dans lassurance qualit est la phase de codage. Lide prliminaire tait que le codage doit respecter des rgles strictes au niveau du nommage et des pratiques courantes, et ce pour donner au code plus de qua-

linux@software.com.pl

Cet article explique...


Cet article prsente Jupiter, un plugin pour Eclipse qui permet de faire de la revue de code

lit en termes de maintenabilit et de la minimisation danomalie. Cependant, ces formalismes, dune part requirent certainement un contrle du travail de lingnieur codeur ; dautre part, ils ne sont que des guidelines pour un codage lisible : les aspects performance du code, par exemple, ne pourraient pas souvent tre assurs dans le code seulement en se fiant ces formalismes.

Ce qu'il faut savoir...


Bien que cet article sadresse tout type de dveloppeurs, il prend un intrt particulier pour ceux qui dveloppent en quipe.

66

Linux+ 6/2009

Pratique Jupiter pour Eclipse

russi. Do la ncessit dinstaurer une revue de code par lEditeur dans une phase avance de la ralisation. Ainsi, la revue de code devient de plus en plus une tape part entire dans tout processus de dveloppement logiciel en particulier dans les mthodes dites agiles comme Figure 1. Identification dun reviewId l'Extrme Programming. Il devient donc Malgr ces formalismes et rgles de indispensable de disposer dun outil qui codage, il n'est souvent possible de dtec- permet deffectuer la revue de code. ter si la solution implmente est optimale que dans une phase trs avance du cycle de Processus de revue de code dveloppement : la phase de tests de perfor- Pour fournir un logiciel de qualit, il est mances qui vient souvent aprs une phase ncessaire de produire un code source de de test fonctionnel. ce stade, lEntreprise qualit. Il existe des outils pour mesurer sera oblige de nommer un dveloppeur Se- des indicateurs de qualit du code source et nior ou Expert pour optimiser le code. Le pour vrifier le respect des conventions de cot sera souvent lourd puisque tout le fonc- codage. Cependant, ces outils ont leurs litionnel doit tre test de nouveau par risque mites. Ils tendent amliorer le code source de rgression introduite par le code dopti- en contrlant le respect des normes de codage ou en identifiant les dfauts de conmisation. Lide est de prendre lavis de ses Ex- ception. Par contre, ils ne permettent pas perts/Seniors avant la phase de test : une re- didentifier les anomalies fonctionnelles. La vue de code doit tre planifie avant chaque revue de code permet didentifier des bugs livraison au moins pour le code o il y a le avant de les rencontrer au moyen dune replus de mtier (business logique) et le plus lecture du code source par un dveloppeur doptimisation. Le principe est simple : expriment. identifier le code important (d'un point de La mise en place dune revue de code vue logique mtier) ou risque (algorithme systmatique pendant la phase de dvelopcompliqu ou interfaage multiple avec des pement et de correction responsabilise encosystmes externesetc.), nommer des gens re plus les dveloppeurs, car ils savent que qualifis pour en faire la revue une date leur travail sera automatiquement valu. spcifique bien identifie au niveau du cycle Ce systme permet damliorer la qualit de ralisation. Les anomalies ou opportu- du code source crit. De plus, le relecteur nits damlioration du code doivent tre pourra identifier des bugs ou des axes clairement dcrites, analyses puis traites damlioration. avant la livraison du code pour test. Trois processus de revue de code exisCette ide prend plus dimportance dans tent : le monde de la sous-traitance logicielle trs prospre et la mode ces dernires annes. Revue de code bloquante : tout dveloppement doit tre relu avant dtre comLe processus serait le mme mais lobjectif mit dans le rfrentiel du code source. est autre. En effet, pour les socits Editeurs Ce mode est un frein au dveloppement de logiciels, la sous-traitance est risque car certains dveloppements peuvent se pour la maintenabilit du code qui pourrait retrouver en attente dune relecture de devenir dpendant du sous-traitant ce qui implique la dpendance de lEditeur de son dveloppement dont ils dpendent. sous-traitant. Il ne suffit pas de se fier la Revue de code non-bloquante : tout code source commit dans le rfrentiel du qualit de la livraison excutable : il faudrait sassurer de la qualit du code et de son aptisource doit tre relu. Cette mthode pertude dtre maintenue par une socit tierce met au dveloppeur de continuer son traet dautant plus par lEditeur mme avec le vail sans attendre la relecture. De mme, moindre cot de passation (handover). le relecteur nest pas oblig de se prciPour cet objectif, il faudrait tout dabord piter pour relire le code. respecter la rgle dor de vrifier le code Revue de code avec le dveloppement par binme : cest une consquence de lexavant mme la phase de test. En plus, il fautrme programming. Cependant le tradrait revoir le code avant de payer le sousvail en binme influence le jugement du traitant qui prtend terminer son travail et relecteur direct. demande dtre pay sur un test dacceptance

Le plugin Jupiter

Jupiter est un plugin pour Eclipse ncessitant SVN dvelopp luniversit dHawaii par Takuya Yamashita et entretenu par Julie Ann Sakuda. Jupiter est Open Source et est encore en phase de dveloppement actif. Jupiter se base sur quatre phases :

Phase de configuration :

Cette phase concerne le chef du projet (o bien le chef dquipe), selon organisation du projet, o ce dernier va prendre la dcision pour le dclenchement de la revue. Cette tape consiste paramtrer le processus de revue de code. Pour cela il va crer un nouveau reviewId en cliquant avec le bouton de la souris sur le projet qui va subir laction de revue. Ensuite il choisit loption properties puis loption review, la fentre illustre dans la figure 1 va alors tre affiche. Dans le premier champ texte lutilisateur donne un nom pour le reviewID, puis une description qui donne une ide sur la raison de la revue. En cliquant sur next la fentre de

Figure 2. Choix des fichiers rviser

Figure 3. Liste des rviseurs

Figure 4. Ajout d'un rviseur

www.lpmagazine.org

67

Pratique Jupiter pour Eclipse

Cette phase concerne lauteur qui va faire la mise jour du code selon les anomalies dtectes et acceptes (figure 8). Pour de petits projets, cest gnralement le chef de projet ou le chef dquipe qui sera lauteur de la co- Figure 5. Rvision individuelle rrection. la figure 2 souvrira qui permet de choisir les Ce cycle va se rpter jusqu lobtention classes rviser dun code source de bonne qualit. En cliquant sur le bouton next la fentre (figure 3) qui permet dajouter des rviseurs Avantages de Jupiter : Jupiter a plusieurs avantages : saffichera. Le bouton Add de la figure 3 permet dajouter un rviseur Faire un cycle de revue de code Figure 6. Marquer la ligne qui contient des anomalies complet, Phase de rvision La phase de travail collaboratif : norma Plugin qui sintgre parfaitement individuelle Eclipse, lement ce travail ne se fait pas par les rviDans cette phase (comme le montre la figure Utilise SVN pour le suivi des phases de seurs mais par un autre comit. 5), chaque rviseur va relire le code dune revue de code, Lapplication ne peut pas tre divise sur manire individuelle et va commenter les Offre des fonctionnalits optionnelles plusieurs rviseurs, dans ltat actuel, on ne ventuelles anomalies quil pourrait dtecter. et intressantes comme la possibilit peut pas envoyer les fichiers rviser vers Le rviseur peut mme marquer les lidindiquer la svrit dune erreur, plusieurs rviseurs. gnes qui contiennent les anomalies comme son type , La fixation des dates de revue nest pas nous le montre cette fentre (figure 6). Facile utiliser. possible.
Adel Safi est in ingnieur en informatique passionn de linux depuis 2002. L'administration systme et la programmation C/C++ sont ses domaines favoris.

A propos de l'auteur

Phase de reprise de travail

Phase de rvision collective :

Cest une phase (comme le montre la figure 7) de dcision. Aprs que chaque rviseur ait rvis les fichiers dune manire individuelle, les rviseurs se runissent pour dcider quels sont les bugs ou les anomalies traiter.

Limites de Jupiter :

Comme le plugin Jupiter a des avantages, il a aussi des inconvnients dont nous citons : Pas de notification : un rviseur ne sait pas quil sest fait assign des fichiers rviser.

Figure 7. Rvision collectiveective

Cet article a t ddi prsenter le processus de revue de code travers Jupiter (plugin pour Eclipse). Ce processus prend tout son intrt dans les milieux industriels o le dveloppement se fait en quipe et o plusieurs niveaux de comptences interviennent. Pour que ce processus soit efficace, il faut disposer dun outil simple et pratique offrant les fonctionnalits souhaites. Dans ce contexte, Jupiter est un plugin qui sintgre Eclipse et qui permet deffectuer un cycle complet de revue de code. Ce processus est bas sur quatre phases que Jupiter implmente efficacement. Enfin, notons que plusieurs amliorations peuvent tre effectues pour que Jupiter atteigne la maturit. titre dexemple, nous pouvons envisager une gestion plus avance des utilisateurs et des dates de revue de code.

Conclusion

Sur le net
Guide dutilisateur de Jupiter: http://csdl.ics.hawaii.edu/ techreports/03-11/03-11.html Revue de code : http:// fr.wikipedia.org/wiki/Revue_de_code

Figure 8. Reprise de travail

68

Linux+ 6/2009

Pratique SVN

Avec SVN,
Adel Essafi

ne perdez plus rien


Ldition de documents est un processus dlicat qui ncessite gnralement lintervention de plusieurs personnes et de multiples corrections. Si vous tes un dveloppeur, votre chef dquipe va certainement vous demander doptimiser le code que vous avez crit. Cet article est ddi ltude de probablement lun des logiciels le plus utilis SVN.

i vous crivez un document (article scientifique, rapport...) vos chefs hirarchiques donneront leurs avis et peuvent mme diter le document. La gestion des diffrentes versions dun document devient alors trs vite une tche trs complique. Heureusement, avec les logiciels de suivi de version, la tche devient plus facile faire. Cet article est ddi ltude de probablement lun des logiciels le plus utilis savoir subversion (SVN). Nous allons commencer par une prsentation de loutil subversion. Nous dcrirons ensuite les diffrentes oprations que fournit loutil SVN. La dernire section sera consacre la prsentation dun client SVN graphique pour Linux.

linux@software.com.pl

Dans les milieux de production, le choix de SVN se fait entre autre car : SVN est multiplateforme, SVN est un logiciel libre, SVN fonctionne de manire centralise, Lutilisation de SVN plus facile que son prdcesseur CVS, SVN supporte plusieurs modes daccs distant, dont SSH et WebDAV via Apache.

La fonction principale de Subversion est la gestion de sources et de contrle de versions. Ce type de programmes a plusieurs fonctions, notamment :

Subversion (SVN)

Il existe un grand nombre de logiciels du mme type. Le plus connu d'entre eux et le plus rpandu actuellement dans le monde des logiciels libres est sans doute SVN, mais on peut aussi citer GNU Arch, Bitkeeper, Git, Superversion, etc.

Cet article explique...


Comment utiliser SVN pour grer les diffrentes versions d'un fichier, Un outils graphique pour SVN.

70

Linux+ 6/2009

Pratique SVN

garder un historique des diffrentes versions des fichiers d'un projet, permettre le retour une version antrieure quelconque, garder un historique des modifications avec leur nature, leur date, leur auteur, permettre un accs souple ces fichiers, en local ou via un rseau, permettre des utilisateurs distincts et souvent distants de travailler ensemble sur les mmes fichiers.

Avant de passer aux dtails de lutilisation de SVN, il faut se familiariser avec la terminologie lie subversion.

Figure 1. KDESVN: une interface simple pour parcourir les dpt svn

Dpt (repository)

Un dpt Subversion est l'emplacement central o sont stockes toutes les donnes relatives aux projets grs. Le dpt est accd via une URL locale ou distante. Le dpt contient l'historique des versions des fichiers stocks, les logs enregistrs lors des modifications, les dates et auteurs de ces modifications, etc. Un dpt apparat de l'extrieur comme un systme de fichiers compos de rpertoires au sein desquels on peut naviguer, lire et crire selon les permissions accordes.

sion donne d'un ou plusieurs fichiers. Aprs cours. Pour cela, il faut effectuer un update avoir vu lessentiel des notions connaitre, l'aide de la commande svn update : nous pouvons passer maintenant la descrip$ svn update tion du fonctionnement de SVN.

La premire chose faire lors de la premire utilisation est de crer un nouveau projet. Deux cas de figure peuvent se prsenter : ou bien le projet existe dj au sein d'un dpt et il s'agit de rcuprer ce projet en local pour en faire une copie de travail, ou bien ce projet existe en local et doit tre import au sein du dpt. Projets Si le projet existe dj au sein du dpt, Au sein d'un dpt se trouvent un ou plu- une seule commande suffit pour effectuer un sieurs projets. chaque projet correspond en checkout et rcuprer la dernire version des gnral un rpertoire situ la racine du d- fichiers : il s'agit de la commande svn co. pt et qui contient lui-mme les fichiers $ svn co https://SERVEUR/svnrep/ et dossiers du projet proprement dit.

Cration d'un nouveau projet

index.htm

Updated to revision 37.

La commande indique qu'un fichier du rpertoire, vraisemblablement modifi par quelqu'un d'autre depuis notre dernier update, a t mis jour dans notre copie de travail.

Mise jour des modifications dans le dpt

Une fois qu'on a modifi des fichiers, il faut basculer ces modifications au sein du dpt pour qu'elles soient accessibles aux autres utilisateurs. Cette opration s'effectue l'aide de la commande svn commit :
$ svn commit -m "modification de page.html" Sending page.html Transmitting file data . Committed revision 38.

Copie de travail (working copy)

project . A page.html A index.htm Checked out revision 36.

La copie de travail est un rpertoire situ en local sur le poste de l'utilisateur et qui contient une copie d'une rvision donne des fichiers du dpt. C'est cette copie qui sert de base de travail et qui est modifie en local avant d'tre importe (sauvegarde) vers le dpt.

Rvisions

Chaque modification faite au dpt constitue une rvision. Le numro de rvision commence 1 et augmente de 1 chaque opration. Sa valeur n'a aucune importance, mais c'est un indicateur qui permet de revenir une ver-

La commande prcdente a effectu un checkout du projet project (situ dans un rpertoire racine du mme nom) dans le rpertoire courant. Le rsultat de la commande indique que deux fichiers ont t rcuprs et que la dernire rvision est la rvision numro 36. Si par contre le projet n'existe pas dans le dpt et qu'il faut le crer partir de fichiers locaux, la commande utiliser est svn import. Cette opration n'est en thorie effectue que par la personne charge de l'administration du dpt.

Ce qu'il faut savoir...


Cet article est adress tout informaticien qui ne connat pas SVN . Aucun prrequis n'est ncessaire pour une bonne comprhension.

Rcupration de la dernire version du projet

Toute opration de commit s'effectue en indiquant un message dcrivant les modifications effectues (ici directement dans la ligne de commande). Il est possible d'effectuer cette opration sur un rpertoire entier, ou sur seulement un ou plusieurs fichiers. Si des modifications ont eu lieu par un autre utilisateur du dpt depuis le dernier update, un message d'erreur le signale. Il faut alors effectuer un nouvel update et rsoudre d'ventuels conflits avant de relancer le commit.

Avant de travailler sur les fichiers du projet, Rcupration d'une version il faut s'assurer que l'on est bien synchronis antrieure d'un fichier avec le dpt, c'est dire que la copie de tra- Lorsqu'on travaille sur un fichier, il peut arrivail correspond bien la dernire rvision en ver que les modifications effectues ne soient

www.lpmagazine.org

71

Pratique SVN
pas bonnes et qu'on souhaite retourner au L aussi, la suppression n'est effective qu'au Afficher l'arborescence fichier tel qu'il tait lors du dernier update. La commit suivant. du dpt On utilise la commande list de svn : svn list commande svn revert est faite pour a : http://SERVEUR/mon_projet/ Renommer un fichier $ svn revert page.html Il faut utiliser svn move :
Reverted 'page.html' $ svn move page.html test.html A D test.html page.html

Cette commande annule les modifications effectues depuis le dernier update. noter que tout est effectu en local, et qu'un accs au dpt n'est pas ncessaire. On peut aussi souhaiter revenir une version antrieure d'un fichier situ dans le dpt. Il faut alors utiliser svn update en prcisant le numro de la rvision et le ou les fichiers :
$ svn update -r 36 page.html U page.html Updated to revision 36.

Afficher le contenu d'un fichier du dpt


svn cat

Pour afficher le contenu d'un fichier qui se trouve dans le dpt, on utilise la commande cat :
http://SERVEUR/mon_projet/ index.html

$ svn commit -m "Renommage d'un fichier" Deleting Adding page.html test.html

Gestion des fichiers du dpt

Subversion propose un ensemble de com- Index: taskSet mandes pour ajouter, supprimer ou renommer ==================================== --- taskSet (rvision 141) des fichiers du dpt.

Les conflits peuvent intervenir au moment d'un update, lorsque des modifications ont t faites Afficher les diffrences la fois dans la copie de travail et dans le dpt. entre la copie locale et le dpt Par exemple, si vous ditez en local un fichier Il faut lancer la commande svn diff depuis pour lui rajouter une ligne, et qu'un autre utilivotre copie de travail: sateur du dpt a commit entre temps une modification diffrente sur le mme fichier, votre $svn diff commit va gnrer l'erreur suivante :
Committed revision 41. $ svn commit Sending test.html svn: Commit failed (details follow): svn: Your file or directory 'test.html' is probably out-of-date svn: The version resource does not correspond to the resource

Rsolution des conflits

Ajout d'un fichier

+++ taskSet @@ -1,8 +1,11 @@ 65 10 60

(copie de travail)

Il faut utiliser svn add. noter que l'ajout -0 -1 n'est effectif qu'au prochain commit :
-2 $ svn add liens.htm A liens.htm "Ajout du fichier de liens" Adding liens.htm Transmitting file data . Committed revision 39. $ svn commit -m

Afficher les le numro de version de votre within the transaction. copie locale depuis la copie locale du projet Either the requested version resource is out of date on excute la commande :
(needs to be updated), $svnversion 137:142M or the requested version resource is newer than the transaction root (restart the commit).

Suppression d'un fichier


Il faut utiliser svn delete :
$ svn delete liens.htm D liens.htm "Suppression d'un fichier" Deleting liens.htm Committed revision 40. $ svn commit -m

Afficher l'historique d'un fichier


$svn blame http://SERVEUR/index.html 138 78 78 77 adel 3 adel 65 adel 60 adel 51 3 90 85 76 1 1 1

Il vous faut alors effectuer un update, ce qui va mettre en concurrence les deux versions du ou des fichiers concerns. Deux cas de figure peuvent alors se prsenter. Dans le premier cas, le conflit peut tre rsolu automatiquement par subversion car les modifications ne concernent pas les mmes parties du fichier. Dans ce cas vous obtiendrez le message suivant :
$ svn update G test.html Updated to revision 42.

Figure 2. Rcuprer la rvision la plus rcente

Il est quand mme conseill de vrifier manuellement le rsultat de cette rsolution automatique. Dans le deuxime cas, les modifications ne peuvent tre fusionnes automatiquement car

72

Linux+ 6/2009

Pratique SVN

elles concernent les mmes parties d'un fichier. toujours disposer d'une interface graphique. Dans ce cas un conflit est signal lors de KDESVN est un projet qui vise rendre l'utilisation de svn encore plus facile travers une l'update : interface graphique conviviale et intuitive. $ svn update Nanmoins, il faut quand mme avoir dj C test.html compris le fonctionnement de svn pour pouvoir Updated to revision 43. utiliser cette interface. Comme son nom laisse entendre, KDESDans ce cas, deux nouveaux fichiers font leur VN est une application dveloppe au sein du apparition dans votre copie de travail. Dans projet KDE et qui hrite donc de toutes les qual'exemple prcdent, on se retrouve avec : lits de ce projet et est distribue sous la licence test.html.mine : copie du fichier tel qu'il se trouvait dans votre copie de travail, en local, avant de faire l'update. C'est la version que vous souhaitiez commiter avant de dtecter un conflit ; test.html.r42 : version du fichier pour la rvision 42, c'est dire lors de votre dernier update. C'est la version qui a servi de base pour les deux utilisateurs du dpt qui ont travaill en parallle ; test.html.r43 : version du fichier pour la revision 43, c'est dire la version actuellement dans le dpt. Il s'agit de la version modifie par un autre utilisateur, commite avant votre update, et dont le contenu est l'origine du conflit. test.html : il s'agit d'une version qui, en quelque sorte rsume les trois autres en faisant apparatre les diffrences entre versions au sein d'un seul fichier.
GNU General Public License Version 2.

Pour mettre jour les modifications dans le dpt, on slectionne l'option subversion-> copie de travail->propager. Comme nous l'avons signal prcdemment, KDESVN est en fait une interface graphique pour svn et offre par consquent toutes les oprations offertes par svn. L'ensemble de ces oprations est regroup dans le menu subversion et organis comme suit: gnral: contient les opration gnrales de svn (historique, rcupration d'une revision, diffrences entre copie de travail et copie sur le dpt .....) copie de travail: contient toutes les oprations relatives la copie de travail comme la propagation de la dernire version, la rsolution de conflit ainsi que des options plus avances comme le changement de dpt ou d'emplacement dans le dpt. Dpt: permet de rcuprer les informations sur le dpt de la copie de travail courante.

Mise jour des modifications dans le dpt (commit).

Cette application est disponible par dfaut avec la plupart des distributions Linux. Nous allons dtailler, dans le reste de cette section, deux cas d'utilisation de KDESVN et nous allons nous limiter prsenter brivement le reste des fonc- tionnalits vu que leur utilisation est triviale aprs une bonne comprhension de svn.

Ds lors, le travail consiste diter le fichier test.html jusqu' ce que le conflit soit rsolu. Une fois ce travail termin, on signale que le conflit est rsolu l'aide de la commande svn resolved :
$ svn resolved test.html Resolved conflicted state of 'test.html' On peut alors effectuer le commit final.

Le dpt contient l'historique des versions des fichiers stocks, les logs enregistrs lors des modifications, les dates et auteurs de ces modifications, etc. Un dpt apparat de l'extrieur comme un systme de fichiers compos de rpertoires au sein desquels on peut naviguer, lire et crire selon les permissions accordes.

KDESVN: une interface graphique pour svn

Bien que l'utilisation en mode ligne de commande soit triviale, certains utilisateurs prfrent

Grce aux dpts des diffrentes distributions de Linux, l'installation de KDESVN peut se faire en une seule ligne de commande. Avec la distribution Fedora, l'installation se fait avec la commande : #yum -y install kdesvn en tant que root. Vous pouvez aussi utiliser les interfaces d'administration graphique pour ra- Enfin, notons que KDESVN, comme tout loliser l'installation. giciel qui se respecte, offre un ensemble de fonctions utiles et qui facilitent la vie aux utilisateurs Utilisation comme le menu prfrences, les favoris (bookComme le montre la Figure 1, KDESVN offre marks) et les raccourcis claviers ... une interface simple et conviviale pour parcouConclusion rir et travailler avec les dpts svn. travers la barre de menu, nous pouvons Nous avons appris travers cet article traaccder toutes les fonctionnalits disponibles vailler avec un outil moderne et d'un apport dans KDESVN. Les options les plus utilises pratique qui est sSVN. Cet outil permet en sont regroupes dans la barre doutils. Le reste effet de garder les traces des diffrentes verde la fentre est divis en quatre zones qui per- sions des fichiers d'un projet et de contrler mettent respectivement d'afficher l'arborescen- toutes les modifications qui ont t faites. ce du projet, les fichiers du rpertoire courant, Il est aussi largement rpandu au sein des groupes de travail (entreprises, laboratoires les traces et les proprits d'un fichier. ...) puisqu'il rend le travail collaboratif plus Crer une copie de travail pratique et plus efficace. D'abord, signalons que la copie de travail doit Dans la seconde section nous avons prtre accessible dans le systme de fichiers local sent un outil graphique, KDESVN, qui est puisque svn ne supporte pas les protocoles une interface graphique pour SVN. Cet outil comme smb ou fish. peut rapprocher svn de certains utilisateurs Pour rcuprer un (ou une partie d'un) pro- qui ont du mal avec le mode commande. jet il faut aller dans Subversion->Gnral->rcuprer un dpt. Vous devez indiquer l'adresse du projet sur le dpt svn et le rpertoire local dans lequel votre projet sera rcupr. Vous A propos de l'auteur pouvez aussi indiquer la rvision rcuprer. Adel Safi est un ingnieur en informatique Dans la majorit des cas, c'est la dernire rvi- passionn de linux depuis 2002. L'admision que vous allez devoir rcuprer. Choisissez nistration systme et la programmation alors l'option HEAD qui permet de rcuprer la C/C++ sont ses domaines favoris. rvision la plus rcente (voir Figure 2).

Installation

www.lpmagazine.org

73

Enterprise OpenERP

Dployez OpenERP !
Jonathan Fussner

Depuis quelques annes, les Progiciels de Gestion Intgrs fleurissent de plus en plus pour grer l'ensemble des processus d'activit au sein d'une entreprise. Mais, lorsque nous voquons le terme ERP, il nous vient souvent parler de la solution propritaire. Alors certes cette solution est souvent dcrite comme une ultime, mais une poigne d'irrductibles logiciels libres performants se positionnent sur ce march, OpenERP est un de ceux l.

omme David et Goliath, Oracle vs MySql, OpenERP est l'un de ces ERP (Enterprise Ressource Planning ou PGI, Progiciel de Gestion Intgr en franais), qui se positionnant sur le march des PME, affiche des arguments non ngligeables. Alors il est vrai que des ERP libres, il en existe une bonne dizaine, mais ce dernier se positionne en tte de ces solutions. Alors, avant de rentrer dans le vif du sujet, il est bon de rappeler, ce quest un ERP, ou PGI, pour utiliser le terme franais. Il sagit tout simplement dune solution (logicielle) informatique qui a pour but de grer lensemble des processus oprationnels dune entreprise, en couvrant lintgralit des besoins de lactivit de cette dernire, que ce soit de la gestion des salaris ou du stock, la gestion de la production et des ventes. Cette solution se veut tre modulaire et flexible, afin de sadapter au mieux lactivit de lentreprise. Ainsi un ERP est un ensemble coordonn de modules (comptabilit, gestion de stocks, GRH, ple production, achats, ventes, gestion de projets, voir le Tableau 1), qui lis les uns

linux@software.com.pl

Ce quil faut savoir...


Utiliser une distribution GNU/Linux et installer des logiciels, Connaitre les besoins de lentreprise et son activit.

aux autres permettent de structurer et faciliter la gestion de lactivit, notamment en ayant un meilleur contrle de cette dernire et surtout une certaine cohrence et intgrit du systme dinformation. Aujourd'hui, je vous propose, non pas un cours exhaustif sur l'utilisation d'OpenERP, mais de commencer

Cet article explique


Lintroduction au monde des ERP libres, Linstallation dOpenERP, Le premier dmarrage de cette solution et les possibilits offertes.

74

Linux+ 6/2009

Enterprise OpenERP
mais relativement complte, offertes par ce Installation de PostgreSQL logiciel. Vous la trouverez au travers du Tab- Qui dit ERP dit donnes et donc base de donnes. OpenERP utilise le clbre SGBRO leau 1. PostgreSQL. Nous allons linstaller, touInstallation du serveur jours par la ligne de commande : Entrons maintenant dans le vif du sujet, je vous propose d'installer la partie serveur de aptitude install postgresql notre ERP, qui vous allez le voir n'est pas de postgresql-client gcc gs-gpl tout repos ! Avant de continuer, je vous propose de Aprs avoir install ceci, vous devez mettre dployer notre solution ct serveur, sur un quelque peu les mains dans le cambouis et OS GNU/Linux videmment, et pourquoi pas modifier un fichier de configuration. Je vous sur une Debian Lenny jour. Du ct d'Ope- rassure, rien de mchant, juste une petite linERP, il s'agira de la version web qui mon gne remplacer : sens est plus intressante en terme d'adminis Editez le fichier /etc/postgresql/8.3/main/ tration que le client lourd. pg_hba.conf, Prrequis Puis remplacez la ligne local all all ident Vous vous doutez bien que ce serait trop sameuser, simple s'il suffisait d'installer un paquetage Par local all all trust, serveur . Avant tout nous devons installer Enregistrez vos modifications et redquelques paquetages afin d'apporter sur notre marrez le service PostgreSQL, l'aide systme le support du langage python, utilis de la commande : /etc/init.d/postgresql-8.3 respar OpenERP. Nous rentrons donc maintetart nant dans une partie ligne de commande , donc dans un terminal connect root : aptitude install python python2.5 python- Configuration de PostgreSQL psycopg2 python-egenix-mxdatetime python- Nous allons maintenant avant de passer xml pythontz python-pychart python-vobject l'installation proprement parler d'OpenERP, python-pydot python-lxml python-libxslt1 configurer notre base de donnes et l'utilisateur correspondant. Les modifications suivantes python-reportlab python-profiler.

Pour aller plus loin.


Le livre : Tiny ERP, Open ERP Pour une gestion d'entreprise efficace et intgre -- Aux ditions Eyrolles

par le commencement : l'installation et le paramtrage du serveur et l'installation du client web. Il s'agit d'une bonne entre en matire avant de vous laisser aller plus loin. En effet, comme chaque entreprise est diffrente, chacune possde ses propres types de production, de style de management, c'est d'ailleurs le but de chaque de entreprise, tre unique, dvelopper des facteurs cls de succs qui lui permettent d'tre prenne, et de gagner des parts de march. Ainsi toute l'adaptation de l'ERP est propre chaque structure. La phase d'installation est commune, mais la phase d'adaptation du systme est unique et doit tre rflchie. C'est dans un cas de figure comme celuici que l'on reconnat les qualits d'un bon administrateur systme, car il doit possder des capacits d'coute, de comprhension, afin de pourvoir travailler avec les diffrents acteurs de l'entreprise (Responsables de production, financier, DRH, Stocks, Achats, Ventes, Management....) et pouvoir adapter au mieux sa solution ERP. Au sein d'une entit, l'informatique et plus gnralement le Systme d'Information, est une fonction transversale qui touche l'ensemble des ples d'activit de cette dernire, et l'ERP est le parfait exemple de solution transversale. Ainsi dans ce type de projet, l'homme ne doit plus tre un geek enferm dans son bureau dpanner les salaris via un logiciel de contrle distance (bien que je n'ai rien contre les logiciels de type VNC !), mais doit prendre appui sur chaque ple pour comprendre les enjeux du dploiement d'une telle solution, les attentes et les besoins des acteurs de l'entreprise. Un ERP peut devenir une force pour une entreprise, par rapport un concurrent Figure 1. OpenERP via votre Navigateur (meilleur contrle de la production, rapidit, .). OpenERP est le plus connu et le plus puissant des ERP du monde libre. Il inclut prs de 350 modules diffrents et spcifiques afin de permettre une entreprise de grer tous les ples et process de production. Je vous propose rapidement une liste des principales fonctionnalits certes non exhaustive, Figure 2. Gestion de la base de donnes

www.lpmagazine.org

75

Enterprise OpenERP

bre important de connexions rseau et d'accs disque.

Prrequis

Comme tout lheure rsolvons quelques petits soucis de dpendances et pr requis tels que python-setuptools ou TurboGears (un web framework). Cela se passe nouveau en ligne de commande :
Figure 3. propos de votre socit
aptitude install python-setuptools

seront comme notre habitude passes en ligne de commande. Si vous souhaitez avoir un outil graphique vous permettant d'administrer PostgreSQL, je vous conseille PhpPgAdmin, une interface web crite en langage PHP et qui vous permettra de la mme manire que PhpMyAdmin pour MySQL, d'administrer plus intuitivement votre SGBD. Attention, car cette application ncessitera un serveur web pour fonctionner, donc un service de plus qui tournera sur votre serveur. Dans un premier temps, nous allons crer un utilisateur propre qui aura des droits sur notre future base de donnes. Pour se faire, entrons d'abord avec la console, dans le mode d'administration de PostgreSQL :
su - postgres

Je vous fait confiance pour extraire l'ar- Puis : chive et vous positionner dessus l'aide de easy_install TurboGears la commande :
cd

Puis installons l'aide de la commande :

Installation du client web

python setup.py install

Il est grand temps de passer la dernire partie des phases d'installation : le client web ! Pour ce faire, je vous propose de changer un peut de mthode de travail, et d'utiliser easy_install (attention avec prcaution !!) pour la gestion du client web :
easy_install -U openerp-web

L'installation se droule correctement, et la partie serveur est maintenant installe. Voyez que le plus lourd dans cette procdure est bien l'installation de toutes les dpendances, ncessaires l'installation et au bon fonctionnement du serveur.

Puis crons un nouvel utilisateur nomm Installation du client Web Il est l'heure chers lecteurs, de passer la OPENERP : deuxime partie de cet article, l'installation createuser --createdb --nodu client. Mais attention, pas n'importe quel createrole --pwprompt openerp client, le client web ! Alors comme je vous l'ai spcifi plus tt, je ne vais pas rentrer Bien entendu, un mot de passe vous sera dans des dbats qui tourneraient en rond, demand, saisissez-en un ! Lorsque l'assistant mais mon sens, le client web possde plus vous demande si l'utilisateur doit tre un "su- d'avantages en terme d'administration (cenper utilisateur" saisissez O pour Oui. tralisation des ressources). Mais ne perdez La commande exit permet maintenant pas de vue, que cela demande nanmoins de quitter le mode d'administration de Pos- un serveur relativement correct en terme de tgreSQL. performance, car il devra supporter un nomJe vous rassure, nous n'avons pas oubli de crer la base de donnes, cela se fera plus tard, via l'interface d'OpenERP !

Voila, une fois cette opration (relativement longue) complte avec succs, la phase d'installation est termine. Je vous rassure tout de suite, il nous reste encore du travail, car aprs l'installation, place au paramtrage.

Dmarrage des services

Je vous propose maintenant d'ouvrir deux terminaux, afin de lancer deux commandes :
lancement du serveur

Via la commande :
openerp-server lancement du client web

Installation du serveur

Nous y voil ! Maintenant nous allons installer le serveur proprement parler. Pour ce faire, commenons par aller sur le site d'OpenERP tlcharger l'archive de la dernire version (la version 5.0.2 l'heure o j'cris ces lignes) ceci se passe l'adresse http: Figure 4. Grez vos partenaires ! //openerp.com/en/downloads.html

76

Linux+ 6/2009

Enterprise OpenERP

Figure 5. Vos salaris !

Via la commande :
openerp-web

Voila, partir de maintenant vous pouvez atteindre l'application via votre navigateur, en saisissant dans la barre d'adresse, soit, l'adresse IP de votre serveur, soit son nom de machine, suivi du numro de port, ici 8080. Donc par exemple : http://localhost:8080 ou http://10.68.1.100:8080 Vous trouverez en Figure 1, la reprsentation de la page d'accueil d'OpenERP.

Attendez une minute, nous avons oubli quelque chose de trs important ! Les informations doivent tres contenues et organises dans une base donnes, il faut donc grer maintenant ceci. Cela tombe bien, car c'est justement la Tableau 1. Principales fonctionnalits offertes par OpenERP prochaine tape, que nous allons raliser via Gestion Logistique notre navigateur. Sous vos yeux l'interface Gestion dactivit Ventes Gestion de produits, services d'OpenERP. Afin de crer une nouvelle base Achats Gestion de stocks de donnes, veuillez cliquer sur le bouton Facturation Gestion de la qualit Base de donnes. Gestion de points de vente Nous allons maintenant renseigner un certain nombre de variables, qui pour certaines Gestion des Ressources Gestion de la Relation Client d'entre elles sont par dfaut (mot de passe Humaines super administrateur), d'autres sont adapter Paie Relation clientle votre contexte : Reprsentation d'exemple Absences Marketing en Figure 2. Vacances Gestion des Contacts Mot de passe super administrateur: admin, Nom de la nouvelle base de donnes: fussner, Installer les donnes de dmonstration: dcochez cette case, si vous souhaitez partir sur une base vierge afin de paramtrer l'ERP en fonction de vos paramtres et besoins. Si cette case est coche, la base nouvellement cre sera enrichie
Recrutement . ECommerce Gestion de lEDI (Echange de donnes Informatises) Business Management Gestion de flux de travail (Workflows)

Base de donnes et paramtrages

Dans la continuit du paramtrage d'OpenERP, passons maintenant la gestion de votre premier client (ou utilisateur !), renseignez son nom, login et mot de passe. Je vous rappelle que dans cette phase, la cration d'un utilisateur est vivement conseille, vous pourrez grer par la suite une liste complte La premire partie est termine, cliquez sur d'utilisateurs et de droits d'accs. Ainsi, par exemple : le bouton OK, la base de donnes est ce moment en cours de cration. Vous voil maintenant de retour sur la Nom d'utilisateur: Jonathan FUSSNER page d'accueil, veuillez vous authentifier Login: jonathan.fussner avec l'utilisateur par dfaut c'est--dire admin Mot de passe: *******
Gestion Financire Gestion de comptes (comptabilit) Analyse de comptes Gestion de budgets et paiements Gestion de projets Gestion doprations Gestion du temps Plannings Diagrammes (Gantt) Gestion des flux Calendriers Optimisation de lactivit et de la communication Tableaux de bord Possibilit de mise en place dun WebMail Gestion dAlertes Pour plus dinformations et de dtails : http://openerp.com/en/discover/features.html

de donnes indicatives titre d'exemple, afin de vous montrer les possibilits du produit. Langue par dfaut : French (Langue Franaise, moins que vous souhaitiez utiliser le produit dans une autre langue, l'anglais par exemple), Mot de passe administrateur: Le_Mot_ De_Passe_d'Admin (Il s'agit du mot de passe de l'administrateur de la base de donnes. Vous pourrez toujours par la suite changer ce dernier ainsi que le login administrateur, en fonction de vos stratgies de scurit).

et son mot de passe que vous avez renseign juste avant. Dans les parties suivantes, il s'agit de paramtrer la solution au profil de votre entreprise, notamment en slectionnant le profil le plus appropri afin de commencer le paramtrage. Une fois cette opration termine, cliquez sur le bouton suivant situ en haut gauche de votre cran. Saisissez maintenant les informations relatives votre socit, telles que sa Raison Sociale, ladresse postale, etc...Un petit aperu en Figure 3 ! Lorsque le rsum apparat en page suivante, cliquez sur le bouton installer, pour complter la base de donnes. Puis sur le bouton Commencer la configuration, afin de slectionner dans un premier temps, le type de vue de votre interface. Par dfaut je vous recommande le mode simplifi.

Utilisateurs et modules

www.lpmagazine.org

77

Enterprise OpenERP

relance en cas de dfaillance de la base ou du serveur. Sur le rseau Pensez galement qu'il s'agit d'une appli Site dOpenERP : cation critique, donc inutile de rappeler aux http://openerp.com/ administrateurs systmes que l'utilisation de Demo OpenERP technique de redondance notamment RAID http://www.openerp.com/forum/topic sur votre machine est indispensable en cas de 9773.html?sid=9e21a94397447ad5 crash disque ou autres. Aprs, il est vident 021150ddb92b9097 que les solutions de sauvegarde et de scurit Site de dmonstration dOpenERP : ne manquent pas, mais c'est vous de trouver http://openerp.com/en/discover/ la meilleure pour votre infrastructure. demonstration.html Prvoyez galement de dmarrer OpenERP, en tant que service (dmon) ! Vous trouCliquez maintenant sur Ajouter un utilisateur verez dans l'encart "Sur le rseau" un lien vers puis sur Passer si vous voulez continuer avec une procdure relativement bien explique. cet unique utilisateur pour l'instant. Puis sur Quelques exemples pour Continuer. L'heure est maintenant venue de ce sou- embrayer le pas ! venir de ce que j'ai dit propos de l'administra- Vous pouvez dores et dj vous connecter teur qui doit sortir de sa salle de brassage, quit- pour utiliser OpenERP. Voici aprs connexion, ter quelques temps ses serveurs. Il est temps quelques premiers petits exemples d'utilisade passer faire un petit coucou au gentil Chef tion (attention lgers exemples !) comptable, car vous devez pour la suite des oprations tre en possession des informa- Configurer des partenaires et des catgories tions fiscales (aie !). Pour le Type de plan de compte, pour une Lorsque nous parlons de partenaires dans une entreprise franaise, vous devrez en toute lo- entreprise, cela englobe plusieurs personnes, gique choisir le PCG (Plan Comptable Gn- telles que des clients, des fournisseurs ou ral). Par la suite, rdigez un message qui sera encore des prospects. Vous allez ici pouvoir li au paiement des factures et configurez la grer vos partenaires, saisir des informations gestion des commandes (un petit tour chez le les concernant, .... Pour ce faire, lorsque responsable des ventes ou des expditions ?). vous vous tes connects OpenERP, le Dcidment, c'est dans ces moments l menu situ gauche de l'cran vous propose que je suis content d'avoir fait deux ans d'tu- un certain nombre de modules. Dans cette situation, cliquez sur "Partedes en comptabilit. Une fois rcoltes et saisies, il ne vous naires". Maintenant avant de saisir des partenaireste plus qu' passer l'tape suivante et slectionner les modules que vous souhaitez uti- res, vous devez crer des catgories afin de les liser au sein d'OpenERP. Souvenez-vous en classer. Ainsi, pour une nouvelle catgorie : dbut d'article, je parlais de plus de 350 modu- Cliquez sur nouveau. Saisissez le nom de votre nouvelle les diffrents, il est temps de connaitre clairement les objectifs du dploiement de cette catgorie : vous pouvez bien entendu grer solution pour slectionner les modules qui une arborescence avec des catgories parents et enfants. seront utiles l'exploitation. Cliquez sur sauvegarder ! Voil votre Voil aprs ceci, vous pourrez enfin commencer utiliser OpenERP, continuer de ma- catgorie est cre. Vous pouvez maintenant en grer pour nire plus fine le paramtrage, notamment en terme de gestion des utilisateurs et droits tous vos types de partenaires.... Situation prsente en Figure 4. d'accs. Crons par exemple, la fiche d'un client : N'oubliez pas que vous grez en plus de l'ERP, une base de donnes, donc pensez aux sauvegardes, prparez un plan. Gar- Cliquez sur partenaires puis partenaires, dez l'esprit que cette base contiendra des Cliquez sur Nouveau, informations essentielles de l'entreprise (en- Saisissez les informations telles que la raison sociale, les adresses..., registrements comptables, facturation, gestion commerciale, gestion du personnel, pro- Vous pouvez saisir les champs d'information contact..., duction .....) soyez donc extrmement prudent, afin d'tre sr d'avoir une garantie de Cliquez sur enregistrer.

Dernier exemple pour la route. Comme tout ERP qui se respecte, OpenERP inclue la gestion de vos salaris. Vous pouvez ainsi en saisir, cela est intressant dans la mesure o vous pourrez non seulement faire de la GRH (Gestion des Ressources Humaines) mais surtout grer des projets, affecter des tches vos salaris enregistrs, grer des plannings... bref les possibilits deviennent nombreuses. Ainsi, pour ajouter un salari : reprsentation en Figure 5. Cliquez sur Ressources humaines, Cliquez sur Employs et droulez la liste, Cliquez sur Nouvel Employ, Saisissez les informations le concernant ainsi que la socit et ventuellement l'utilisateur OpenERP qui lui est associ ! Enregistrez !

Ajoutez vos salaris

Voil votre salari est fich dans votre liste. Vous pouvez galement grer des catgories d'employs, galement dans le menu Ressources Humaines. noter que les utilisateurs de l'ERP s'administrent via le menu Administration -> utilisateurs. Dans cette partie vous pourrez grer les accs et les rles (donc pouvoirs) de chacun de vos utilisateurs, ainsi que dans le menu scurit pour grer vos listes de contrles d'accs.

Conclusion

Evidemment, nous avons omis de vous par ler de la gestion des factures, des commandes, du stock, des WorkFlows... mais les possibilits et les capacits d'OpenERP sont tellement importantes qu'elles sont impossibles dtailler dans cet article. Nanmoins, vous avez maintenant un serveur avec un ERP disponible, vous de l'exploiter au maximum afin que cela devienne un vritable facteur cl de succs pour votre entreprise ! bientt sous le soleil du monde libre...

A propos de lAuteur...
Jonathan FUSSNER est tudiant lcole Suprieure dInformatique SUPINFO, et spcialis dans le domaine de ladministration de Systmes et Rseaux. Vous pouvez le contacter au travers de son site Internet : www.fussner.net

78

Linux+ 6/2009

Section dirige par Laurent DEROSIER

Fiche technique jeux

CLIM CITY

Linstitut Cap Sciences de Bordeaux lance un jeu en ligne de simulation pour sensibiliser le public au rchauffement climatique. Vous allez donc prendre en main une ville de 115.000 habitants durant une priode de 50 ans. Vous ne disposez seulement que de ce temps pour rduire de 75% lmission de gaz effet de serre, de 40% la dpense en nergie et passer 60% dnergies renouvelables ! Bref, un vrai travail qui ne sera pas de tout repos ! Il ne suffira pas d'appliquer les actions proposes btement mais il faudra trouver une vritable tactique de jeu. Fermer les industries les plus polluantes sans penser une solution de substitution ne servira donc rien ! Il vous faudra aussi par exemple prvoir une future pnurie de ptrole ou la disparition des poissons. Le jeu se droule en tape d'une anne. A la fin de celle-ci, vous gagnez un certain nombre de points qui vous permettront d'effectuer un certain nombre d'actions. Attention aux catastrophes que vous nauriez pas prvues, elles vous feraient perdre des points ! Vous allez vite comprendre que la situation est complexe et qu'il est impossible de gagner du premier coup...la plante est-elle dsesprment perdue ?

Vous pouvez jouer de suite ou crer un compte qui vous permettra de sauver votre partie et donc de jouer de temps en temps. Le jeu dvelopp en flash est trs bien ralis. Le site comporte une norme partie pdagogique avec de nombreuses explications sur les enjeux climatiques. Du trs bon travail ! Site du jeu : http://climcity.cap-sciences.net/

PONEY TRON

Aprs quelques parties de CLIM CITY o vous n'arrivez dcidment pas sauver la plante, voici un petit jeu 3D et multijoueurs compltement loufoque destin vous dtendre les neurones ou occuper vos petits bouts de chou. PONEY TRON reprend donc le principe bien connu du jeu TRON. La moto est ici remplace par un poney qui court dans les plaines verdoyantes ! Vous devrez donc, comme dans le jeu original, couper la route votre adversaire, viter votre propre trace et viter les dcors. Ce jeu est simple mais amusant et vous offre une bonne libert au niveau de vos dplacements. La prise en main est des plus aises mme pour les plus petits. Votre parcours ne se matrialise pas par un rayon lumineux mais par un nuage de curs ! C'est mignon tout plein et laisse bien loin les histoires d'nergie et de gaz carbonique de CLIM CITY ! Le tout est agrment de la clbre musique des petits poneys... la longue un peu agaante ???

Pink Poney est Open Source et utilise le moteur 3D Ogre, pour fonctionner. Il vous faudra donc OpenGL 2.0. Site du jeu : http://code.google.com/p/pink-pony/

LEMMINGBALL Z 3D

L, stop, vous n'en pouvez plus ! Entre CLIM CITY et PONEY TRON, vous frisez la crise de nerfs ! Ce n'est pas grave, il reste LEMMINGBALL Z pour vacuer tout votre stress ! Bien videmment, vous l'aurez compris, il s'agit d'un jeu de baston comme vous les aimez ! Il reprend l'atmosphre de la srie Dragon Ball Z et y mlange un peu le graphisme des Lemmings ! Dtonnant ! 4 modes de jeu sont possibles : deathmatch, team deathmatch, one vs all et lemming ball. Le jeu offre aussi la possibilit de jouer en rseau jusqu' 4 joueurs. Du pur bonheur ! Pourtant les graphismes ne sont pas transcendants mais suffisent apprcier un bon kamama et autres attaques dmoniaques ! Le zoom de la camra s'adapte automatiquement la distance sparant les combattants. Les coups spciaux ne sont pas forcment simples mettre en uvre. N'hsitez pas jeter un coup d'il au site donn ci-dessous pour de plus amples explications.

Tous les coups et les astuces : http://www.gamerzonline.fr/forums/jeux-multi-joueurs-en-ligne/ 2038-lemming-ball-z-dbz-online.html Site du jeu : http://www.lbz3d.com/

www.lpmagazine.org

79

Archives Linux+DVD 2008


sont dj arrivs !

Votre collection de Linux+DVD 2008 nest pas complte ? Vous avez rat un numro particulirement intressant ? Rien de plus simple! Nous vous proposons en PDF tous les numros de Linux+DVD parus en 2008 Abonnez-vous Linux+DVD et choissez en cadeau les ARCHIVES 2008 !

Pour le recevoir : envoyez-nous le bulletin dabonnement avec information sur le choix de cadeau joint (voir site web) ou bien abonnez-vous directement sur le site du magazine http://www.lpmagazine.org/fr

Ne tardez pas ! La collection unique vous attend !

BULLETIN DABONNEMENT
* Pour voir loffre actuelle des cadeaux, visitez notre site http://lpmagazine.org/prt/view/abonnement.html

Merci de remplir ce bon de commande et de nous le retourner par fax : (+48) 22 244 24 59 ou par courrier : Software-Wydawnictwo Sp. z o.o., Bokserska 1, 02-682 Varsovie, Pologne Tl. (0033) 09.75.18.03.58 E-mail : abo_fr@software.com.pl Yahoo Messenger : software_abonnement
Prnom et Nom ........................................................................................ Socit ............................................................................................. Adresse ................................................................................................. ................................................................................................................ Code postal .......................................................................................... Ville ........................................................................................................ Tlphone ............................................................................................. Fax ......................................................................................................... Je souhaite recevoir l'abonnement partir du numro .................... ................................................................................................................ En cadeau, je souhaite recevoir* ..................................................... ................................................................................................................ E-mail (indispensable pour envoyer la facture) ................................ ................................................................................................................

PRIX DABONNEMENT LiNUX+ DVD : 38


Je rgle par : Carte bancaire n CB

code CVC/CVV
expiration _______________ date et signature obligatoires type de carte (MasterCard/Visa/Diners Club/Polcard/ICB) Chque lordre de : Software-Wydawnictwo Sp z o.o. Bokserska 1, 02-682 Varsovie Pologne Virement bancaire :
Nom banque : Socit Gnrale Chasse/Rhne banque guichet numro de compte cl Rib 30003 01353 00028010183 90 IBAN : FR76 30003 01353 00028010183 90 Adresse Swift (Code BIC) : SOGEFRPP

Abonnez-vous et recevez un cadeau !

Dans le prochain numro

Le dossier spcial

SugarCRM

Autres articles : Bash dans ladministration Nagios en entreprise Programmation Java


Sur le DVD La meilleure distribution pour les dbutants

Ubuntu 9.10 Karmic Koala


Linux+ DVD est publi par Software Press Sp. z o.o. SK Bokserska 1, 02- 682 Varsovie, Pologne tl. : +33 170 610 717 fax : +48 22 244 24 59 http://www.lpmagazine.org Prsident deSoftware Press Sp. z o.o. SK : Pawe Marciniak Directrice de la publication Ewa ozowicka Tirage : 10 000 Imprimerie, photogravure ArtDruk www.artdruk.com Imprim en Pologne/Printed in Poland Abonnement (pour la France mtropolitaine et le monde entier) 1 an (soit 6 numros) 38 abonnement@software.com.pl Dpt lgal : la parution ISSN : 1732-4327 Distribution : MLP Parc dactivits de Chesnes, 55 bd de la Noire -BP 59 F - 38291 SAINT-QUENTIN-FALLAVIER CEDEX (c) 2009 Software Press Sp. z o.o. SK, tous droits rservs Rdactrice en chef Aneta Mazur, aneta.mazur@lpmagazine.org DTP Graphics & Design Studio http://www.gdstudio.pl Prparation DVD Andrzej Kuca Couverture Agnieszka Marchocka Graphisme de la couverture ukasz Pabian - insane Correction Clment Quinton Bta-tests Wajih LETAIEF, Nadia Baltimore, Thierry Borel, Olivier Olejniczak, Christophe Martel, Alexandre Alberic,

La rdaction se rserve le droit de modifier le contenu du magazine

Fabrication Andrzej Kuca andrzej.kuca@software.com.pl Diffusion Ilona Lepieszka ilona.lepieszka@software.com.pl Publicit publicite@software.com.pl Les personnes dsireuses de cooprer peuvent nous contacter ladresse : cooperation@lpmagazine.org La rdaction a fait tout son possible pour sassurer que les logiciels sont jour, pourtant, elle dcline toute responsabilit concernant leur utilisation. Elle ne fournit pas de support technique li linstallation ou lutilisation des logiciels enregistrs sur le DVD. Tous les logos et marques dposes sont la proprit de leurs propritaires respectifs. Le DVD joint au magazine ont t test avec AntiVirenKit de la socit G Data Software Sp. z o.o. Linux est une marque dpose par Linus Torvalds.

La rdaction dcline toute responsabilit concernant le contenu des publicits.

Вам также может понравиться