Beruflich Dokumente
Kultur Dokumente
Numro 56
Magazine en ligne gratuit
Diffusion de copies conformes loriginal autorise
Ralisation : Alexandre Pottiez & Sbastien Lataix
Rdaction : la rdaction de Developpez
Contact : magazine@redaction-developpez.com
Sommaire
Article JavaScript
JavaScript Page 2
CSS Page 14
Delphi Page 16
Java Page 25 JavaScript pour les Jedis, pisode I : au
JavaWeb Page 27 cur des fonctions
Libres & Open Source Page 37
ALM Page 48 Cet article parle de la boucle dvnements, du callback, des
fonctions anonymes, en JavaScript
par Wassim Chegham
Page 2
ditorial
Le meilleur des magazines IT re-
Article Delphi
vient dans un nouveau numro
o vous retrouverez une slection
darticles de notre site. Profitez-en
bien ! Comment implmenter un Singleton
avec Delphi 7
Le patron de conception Singleton est un modle visant
limiter linstanciation dune classe un seul et unique objet.
Il est couramment utilis pour coordonner des oprations
dans un systme.
par Jrmy Laurent
La rdaction Page 16
JavaScript
Les derniers tutoriels et articles
1 Introduction
Comme vous le savez tous, 2015 est lanne de sorte de haine contre JavaScript.
JavaScript. Cest pour cette raison que jai dcid
de me consacrer la rdaction dune srie darticles JavaScript, tu lapprends ou tu le
concernant les fondamentaux de JavaScript, un lan- quittes.
gage trs populaire, mais en mme temps encore m-
connu. Ces articles auront pour but de vous expli- Vous vous demandez srement pourquoi nous
quer en dtail le fonctionnement de ce langage afin commenons cette srie par les fonctions, et non pas
de faire de vous des JavaScript Jedis. par les objets. Eh bien ! tant donn la nature fonc-
En effet, grce cette srie darticles, nous allons tionnelle de JavaScript, pour moi, matriser cet as-
apprendre et comprendre JavaScript afin de tirer le pect du langage fera de vous des Jedis. En effet,
meilleur de ce langage. vrai dire, jen ai un peu la plupart des dveloppeurs via dautres langages
marre de voir beaucoup de dveloppeurs traiter ce orients objet essayent plus de reproduire des para-
langage de tous les noms, car ils narrivent pas faire digmes propres ces langages et font limpasse sur
ce quils ont lhabitude de produire avec leurs lan- les fonctions et les fermetures (closures). JavaScript
gages favoris. Mais en ralit, cela vient du fait que est compos de ces trois concepts : les objets, les
ces mmes personnes ne prennent mme pas la peine fonctions et les closures. Matriser JavaScript passe
dapprendre le langage, probablement cause de sa par lapprentissage de cet aspect fonctionnel du lan-
syntaxe trs ressemblante Java. Par consquent, gage ; et croyez-moi, le niveau de sophistication du
ces dveloppeurs finissent donc par dvelopper une code que vous crirez dpend de cet apprentissage.
Lune des raisons qui font que les fonctions et la des objets, elles peuvent donc tre :
nature fonctionnelle de JavaScript sont des concepts cres via des littrales ;
trs importants vient du fait que la fonction est
assignes des variables ou proprits dun ob-
le premier module dexcution en JavaScript. Cest-
jet ;
-dire que lorsque votre code est excut, il lest au
sein dune fonction ; lexception des scripts qui sont passes en paramtre ;
interprts lorsque le code HTML est en train dtre retournes comme rsultat.
valu par le navigateur. Je fais videmment allusion Ces fonctions peuvent aussi possder des objets
lemblmatique document.write() qui permet- ou mthodes.
tait de crer du DOM au runtime, obligeant le navi- En plus dtre traites comme des objets, les
gateur bloquer linterprtation du code HTML. fonctions ont galement une capacit spciale : elles
Revenons nos moutons, une chose trs impor- peuvent tre invoques (on en reparlera plus en d-
tante connatre sur les fonctions en JavaScript, ce tail dans la suite de cet article). Cette invocation
sont des objets de premier ordre (first-class objects). est souvent effectue de manire asynchrone. Voil
Cela veut dire que les fonctions sont traites comme pourquoi. . .
Si vous avez dj cod une interface graphique vnements sont donc traits un par un, tour de
auparavant, vous avez srement procd comme rle. Voici un schma trs simplifi de ce processus :
ceci :
mettre en place linterface graphique ;
se mettre dans une boucle dvnements en at-
tendant quun vnement se produise ;
invoquer les actions excuter pour chaque
vnement.
La programmation en JavaScript dans un
navigateur suit quasiment ces tapes, sauf que
la gestion des vnements est totalement prise en
charge par le navigateur. Nous avons juste besoin de
spcifier les actions (listeners) pour les diffrents v-
nements qui peuvent tre dclenchs toujours au
sein du navigateur. Ces vnements sont placs dans
une file au fur et mesure quils se produisent, et
le navigateur traite ces vnements en invoquant les
actions associes. noter que ce principe reste iden- Un exemple typique du fonctionnement de cette
tique pour dautres environnements JavaScript, par boucle : lorsque vous bougez le curseur de votre sou-
exemple NodeJS. Puisque ces vnements peuvent ris dans votre page web, le navigateur dtecte ces
se produire nimporte quel moment et dans nim- dplacements de souris et place cette srie dvne-
porte quel ordre, la gestion de ces vnements, et ments (mousemove) dans la FIFO. Ensuite, la boucle
donc linvocation de leurs actions, se fait de manire dvnements soccupera du traitement de ces v-
asynchrone. Pourquoi me diriez-vous ? nements en excutant les actions associes.
Une chose savoir, la boucle dvnements du Ce principe dactions associer une fonction qui
navigateur est monothreade , ce qui veut dire sera excute plus tard, lorsque lvnement se pro-
que chaque vnement se trouvant dans la file dat- duira illustre un mcanisme que lon appelle les
tente est trait dans lordre darrive (FIFO). Les fonctions de callback.
4 Le principe de callback
Les fonctions de callback sont une partie trs es- 5 function bonjour () {
sentielle dans la bonne comprhension de JavaScript. 6 return " Bonjour , JavaScript ! " ;
7 }
Explorons ce point. . . 8
Dans la partie prcdente, nous avons dit que 9 function e x e c u t e r A u C h a r g e m e n t () {
lon pouvait associer des actions aux diffrents v- 10 return dire ( bonjour )
nements se produisant au sein du navigateur. Voici 11 }
12
un exemple dune action : 13 window . onload = e x e c u t e r A u C h a r g e m e n t ;
1 function e x e c u t e r A u C h a r g e m e n t () { / * ...
*/ }; Voil un exemple intressant ! Nous pouvons
2 aussi appeler les fonctions de callback dans nos
window . onload = e x e c u t e r A u C h a r g e m e n t ;
Ici, nous avons attach une action (listener) qui propres fonctions, pas besoin quelles soient associes
sera excute lorsque la page est compltement char- des vnements. Dans cet exemple, nous avons at-
ge par le navigateur. Parce que les fonctions sont tach une fonction de callback lvnement onload.
des first-class objects , nous pouvons affecter cette Lorsque la boucle dvnement excutera ce listener,
fonction la proprit onload de lobjet window (re- son tour il excutera la fonction dire laquelle
prsentant le navigateur). nous avons pass la rfrence vers la fonction bon-
Aussi, nous avons dit que les fonctions peuvent jour . Une fois excute, la fonction dire in-
tre passes en paramtre. Ce qui veut dire que lon voquera la fonction bonjour , ce qui provoquera
peut crire ceci : laffichage du message Bonjour, JavaScript ! .
Mieux encore ? La nature fonctionnelle de Ja-
1 function dire ( callback ) {
2 alert ( callback () ) ;
vaScript nous permet de crer des fonctions en
3 } tant quentit part entire, comme nimporte quel
4 autre type, et les passer directement en paramtres.
6 Dclaration de fonctions
En JavaScript, les fonctions sont dclares Toutes les fonctions dclares ont une proprit
name qui contient le nom de la fonction (de type
laide du mot-cl function qui cre une valeur de
type fonction. Rappelez-vous que les fonctions sont String). Pour les fonctions anonymes, cette proprit
est prsente, mais elle est vide.
des objets de premier ordre, elles peuvent tre mani-
pules dans le langage comme nimporte quel autre Lorsquune fonction a t dclare avec un nom,
type. De ce fait, il nous est possible dcrire ceci (en
ce dernier reste valide dans tout le contexte dans
reprenant lexemple prcdent) : lequel cette fonction a t dclare. Aussi, si cette
1 var dire = function ( callback ) { fonction a t dclare dans le contexte global, une
2 alert ( callback () ) ; nouvelle proprit portant le nom de la fonction est
3 }; ajoute dans le window ; cela est galement vrai
La valeur de la variable dire est une fonc- pour les variables ; ce qui nous amne donc la suite
tion ! Nous avons donc dclar et cr une fonction de cet pisode concernant le contexte et la porte des
anonyme rfrence par la variable dire . fonctions.
Lorsque nous dclarons une fonction, nous de- En JavaScript, les portes sont cres par les
vons avoir lesprit, non seulement le contexte dans fonctions, et non pas par les blocs.
lequel cette fonction existe, mais galement quelles La porte dune variable cre au sein dun
sont les portes que cette fonction cre. Nous devons bloc continue dexister en dehors de ce dernier. Par
galement faire trs attention aux dclarations faites exemple :
au sein de ces portes.
1 if ( true ) {
2
La gestion des portes en JavaScript est trs dif- var foo = bar ;
3 }
frente de la plupart des autres langages dont la syn- 4 console . log ( foo ) ; // = > bar
taxe a t influence par le langage C. Plus prci-
sment, ceux utilisant les accolades pour dlimiter Ce simple exemple prouve bien que la porte de
la porte des variables dans les blocs. Dans ces lan- la variable foo est globale, car elle a t dclare
gages, chaque bloc cre son propre contexte. Ce nest dans le contexte global qui est window . Elle nest
pas le cas de JavaScript. pas lie au bloc if . Regardons un exemple un peu
Nous avons tous invoqu des fonctions en JavaS- Avant dexpliquer chaque type dinvocation, pre-
cript. Mais avez-vous dj essay de comprendre ce nons quelques minutes et essayons de comprendre ce
qui se passe lorsque vous invoquez une fonction ? Il qui se passe lors dune invocation de fonction (cela
existe quatre faons dinvoquer une fonction en Ja- est vrai pour les cas 1, 2, et 3).
vaScript. Chaque type dinvocation a un effet direct
sur le contexte dexcution de cette fonction. Plus 8.1 Arguments et paramtres
prcisment, le type dinvocation agit sur le para-
mtre this pass la fonction lors de son in- Lorsquune liste darguments est fournie lors
vocation. crire du code digne dun Jedi repose sur dune invocation de fonction, ces arguments sont af-
la comprhension et la bonne matrise de ces mca- fects aux paramtres (spcifis lors de la dclara-
nismes dinvocations. tion) de la fonction, dans le mme ordre. Jusque-l
Voici les diffrents types dinvocations en JavaS- rien de bien sorcier.
cript : Maintenant, si le nombre darguments est diff-
rent de celui des paramtres, aucune erreur nest d-
1. En tant que fonction (cest le cas le plus r- clenche : JavaScript sait comment traiter ce cas :
pandu) ;
sil y a plus darguments que de paramtres,
2. En tant que mthode, ce qui permet de lier alors lexcdent est ignor ;
linvocation un objet (POO) ; sil y a moins darguments que de paramtres,
3. En tant que constructeur, ce qui permet de alors les paramtres qui nont pas dargument
crer un objet (instance) ; seront mis undefined .
4. Via apply et call (voir explication plus De plus, au moment de linvocation, deux pa-
loin). ramtres additionnels sont passs implicitement :
9 Rsum
3 Intgration de lAPI
3.1 Cls de dveloppement
Pour crer une application cliente, il vous faudra les cls de dveloppement qui vous seront donnes
aprs votre inscription et qui ressembleront par exemple a :
CONSUMER_KEY : _kdvsazaaphmytp4gzoi8jdbal02pfgfh5l0w12iud
CONSUMER_SECRET : _vofna5navs92smal88obo2c2s4mah1k99i5r1xls
*cls factices
4 Liens utiles
Le site de la Poste pour trouver toutes les infos cation sur le compte Github de BeMyApp
utiles sur comment intgrer votre API : Dve- France : lien 13 ; .
loppeurs IDN La Poste (lien 11) ;
Utilisez le hashtag #LaPostedev sur Twitter
Le site Developpez.com pour les tutos pour changer avec La Poste sur ce service.
Node.js : lien 12 ;
Retrouvez le code source de lintgration de Vous pouvez contacter La Poste pour toutes vos
lAPI IDentit Numrique dans une appli- questions techniques via Contact : lien 14
1 Traduction
Ce tutoriel est la traduction la plus fidle pos- a animated download icon in CSS : lien 16.
sible du tutoriel original de Paul Underwood, Create
2 Introduction
3 Le code HTML
Dabord, nous crons le code HTML pour licne 1 <a href = " http :// www . example . com / download
de tlchargement. Nous allons avoir besoin dun - content . html " class = " download - icon "
>
lien, et lintrieur de cet espace, dune zone pour 2 < span > </ span >
licne de tlchargement. 3 Download
4 </ a >
Pour commencer, nous adapterons le texte au bas gulaire utilisant les proprits width et height
de licne. Ce texte est utilis pour expliquer ce que , puis nous ajoutons une bordure cet lment.
cet appel action sera. En plaant un border-top transparent, cela va
1 a . download - icon
masquer la bordure suprieure de la vue, crant le
2 { style visuel de la bote de tlchargement.
3 color : # 3 3 3 ; 1 . download - icon span
4 font - size : 1 . 3 rem ; 2 {
5 font - weight : bold ; 3 display : block ;
6 text - decoration : none ; 4 cursor : pointer ;
7 } 5 position : relative ;
6 width : 6 0 px ;
Ensuite, nous pouvons styliser licne en modi- 7 height : 3 0 px ;
fiant la balise span pour crer une bote rectan- 8 margin : auto ;
5 Lanimation de rebond
6 Conclusion
Nous avons vu, dans ce tutoriel, comment crer Nhsitez pas faire dautres icnes animes et
simplement une icne de tlchargement anime. les partager !
7 Liens
Vous pouvez consulter la dmonstration pour Nhsitez pas consulter nos autres
avoir un aperu du rendu dans un navigateur : Nhsitez pas consulter nos autres tutoriels CSS
lien 20 pour amliorer le visuel de vos sites : lien 21.
Retrouvez larticle de Paul Underwood traduit par Danick Ct-Martel en ligne : lien 22
Puisque linstance ne peut pas tre stocke dans ter une aide en ligne.
la classe. La seule option qui reste consiste la pla- 1 unit G l o b a l V a r i a b l e S i n g l e t o n ;
cer ailleurs dans lunit. Il faut juste savoir o. 2
Le choix le plus simple rside dans lutilisation 3 interface
4
dune variable globale accessible de nimporte o. 5 type
Voici par exemple un singleton cens contenir des 6
informations sur une configuration pour se connec- 7 T O n l i n e H e l p C o n f i g u r a t i o n = class
4 Utilisation de lhritage
5 Singleton avanc
Afin de voir fonctionnellement les diffrences type dimplmentation tester et de trois boutons
entre les diverses implmentations du singleton, le pour vrifier si les implmentations rpondent aux
plus simple consiste crer une petite application caractristiques dun singleton. Ce nest quune pr-
de test. sentation parmi tant dautres et je maccorderai vo-
lontiers avec ceux qui estimeront que ces donnes ne
Limage ci-dessous reprsente linterface que jai
devraient pas tre saisies par lutilisateur. Cela reste
choisie. Elle se prsente sous la forme dun groupe
cependant plus simple comprendre sans la probl-
permettant la saisie des donnes du singleton (mais
matique du chargement des donnes.
non ditable pour ne pas perturber les tests), dun
groupe de boutons radio permettant de choisir quel
Ces boolens sont privs, de mme que les pro- Le code ci-dessous montre laffichage des don-
cdures appeler pour les tests, car ces lments nes du singleton implment laide de lhritage.
ne sont pas censs tre appels ailleurs que dans la Le boolen sassure que les donnes sont affectes
fentre. une seule fois.
Le code ci-dessous montre laffichage des donnes 1 procedure TMainForm .
du singleton implment avec une variable globale. ManagedByClassSingletonShowData ;
Le boolen sassure que les donnes sont affectes 2 var Msg : String ;
une seule fois. 3 Instance : M a n a g e d B y C l a s s S i n g l e t o n .
TOnlineHelpConfiguration ;
1 procedure TMainForm . 4 begin
GlobalVariableSingletonShowData ; 5 Instance : = M a n a g e d B y C l a s s S i n g l e t o n .
2 var Msg : String ; T O n l i n e H e l p C o n f i g u r a t i o n . Create ;
3 Instance : G l o b a l V a r i a b l e S i n g l e t o n . 6 try
TOnlineHelpConfiguration ; 7 if not (
4 begin FDataExistInManagedByClassSingleton
5 Instance : = G l o b a l V a r i a b l e S i n g l e t o n . ) then
OnlineHelpConfiguration ; 8 begin
6 if not ( 9 Instance . Uri : = Uri . Text ;
FDataExistInGlobalVariableSingleton 10 Instance . Offer : = Offer . Text ;
) then 11 Instance . Version : = Version . Text ;
7 begin 12
8 Instance . Uri : = Uri . Text ; 13 FDataExistInManagedByClassSingleton
9 Instance . Offer : = Offer . Text ; : = True ;
10 Instance . Version : = Version . Text ; 14 end ;
11 15
1 Introduction
WebMotion est un framework Java Web : lien 28. ncessaire pour dcrire les vues ;
Il soccupe des interactions entre le client (naviga- des excs dannotations qui polluent le code
teur en gnral) et des services Java. Il repose sur Java, par exemple pour Spring MVC vous pou-
JEE, en particulier sur lAPI des servlets. WebMo- vez vous retrouver avec 5-6 annotations sur les
tion va vous permettre de simplifier la mise en place mthodes de vos classes.
dun serveur, cest--dire : la conversion des para-
mtres, la gestion des URL. . . en proposant une ap- WebMotion sinpire des bons concepts des dif-
proche KISS (Keep it Simple, Stupid ). frents frameworks en utilisant une syntaxe proche
Dautres frameworks Java Web existent comme de Play ! pour la configuration, en tant compatible
Struts, Spring MVC, Play ! ils comportent des fai- sur diffrents serveurs dapplications (Tomcat, Jetty
blesses comme : et Glassfish), en nimposant pas de contraintes au
niveau des vues et en utilisant bon escient les an-
des fichiers de configuration volumineux, par notations.
exemple pour Struts avec les fichiers de confi- De plus, WebMotion sinscrit dans une architec-
guration en XML qui deviennent vite verbeux ; ture oriente outils. Il nimpose pas de persistance,
une architecture contraignante fixe par le fra- dinjection de dpendances. . . bien quil existe des
mework, par exemple pour Play ! il impose intgrations sous forme dextras vers Spring, Hi-
lutilisation dun serveur dapplications parti- bernate. . . Il est aussi compatible avec divers IDE
culier ; (Eclipse, Netbeans. . . ).
une forte dpendance au niveau des vues, par Ce tutoriel va vous permettre de lancer une pre-
exemple pour Struts un ensemble de tags est mire application base sur WebMotion.
2 Prrequis
3 Cration du projet
WebMotion utilise Maven pour vous permettre possible dutiliser un autre systme de build.
de gnrer un squelette de votre projet. Mais il est 1 $ mvn archetype : generate \
4 Lancer le projet
Vous pouvez ds prsent lancer le projet sur un dans votre navigateur prfr. Vous allez voir ap-
serveur dapplications type Tomcat, Jetty ou Glass- paratre Hello myapp ! lcran. Le nom de la
fish. Dans le cas du tutoriel, nous allons le lancer webapp correspond au nom de lartefact id.
grce Maven et au plugin Jetty. Pour cela, rien de
plus simple, il suffit de taper :
1 $ mvn jetty : run
5 Principe de fonctionnement
6 Configuration
Le premier composant concerne la configuration 2 xmlns = " http :// java . sun . com / xml / ns /
pour le serveur dapplications. WebMotion repose javaee "
3 xmlns : xsi = " http :// www . w 3 . org / 2 0 0 1 /
sur les fragments des servlets 3, ce qui lui per- XMLSchema - instance "
met de navoir aucune configuration dans le fichier 4 xsi : schema Locati on = " http :// java . sun .
web.xml : com / xml / ns / javaee
5 http :// java . sun . com / xml / ns / javaee / web -
app_ 3 _ 0 . xsd " / >
1 < web - app version = " 3 . 0 "
7 Le fichier de routes
Le point central du serveur avec WebMotion est Le fichier de routes peut contenir les rubriques
le fichier de routes (nomm mapping). Il se trouve suivantes :
dans le rpertoire des ressources de votre applica-
config : contient la configuration (les chemins
tion. Ce fichier vous permet de centraliser lensemble
par dfaut des fichiers. . . ) ;
des interactions sur le serveur. Remarque impor-
tante, la recherche se fait en fonction de lordre dap- actions : contient les actions lies des URL ;
parition des rgles. errors : contient les actions lies en cas der-
8 Les contrleurs
Les actions Java associes dans le fichier de Le scope par dfaut des contrleurs est de type
routes sont appeles contrleurs. La classe Java doit singleton, cest--dire le mme contrleur est utilis
hriter de WebMotionController pour tre consid- pour toutes les requtes. Vous pouvez modifier le
re comme un contrleur. la fin de votre mthode, cycle de vie des contrleurs dans la section config
vous spcifiez la rponse pour le client, ici vers une dans le fichier de routes, pour quun contrleur soit
page JSP. cr pour chaque requte ou quune mme instance
soit utilise pour toutes les requtes dun utilisateur.
1 public class Base extends En hritant de la classe WebMotionController,
WebMotionController {
2 public Render index () {
vous disposez de lensemble des Renders dis-
3 return renderView ( " index . jsp " ) ; ponibles dans WebMotion. Un Render reprsente le
4 } retour effectuer vers le client. Il existe plusieurs
5 } types de retours, redirections, JSON, XML, conte-
nus, tlchargements. . .
11 Conclusion
1 Prsentation de Grails
2 Dfinition du projet
Pour les besoins pdagogiques de larticle, lap- une liste prcise. Lensemble des votes permet de d-
plication nomme it-resto, va tre dveloppe. finir le restaurant qui accueillera lvnement.
Mais, dans tout projet, il faut un cahier des Un cas dutilisation simple serait, au sein dun
charges. Alors, dcrivons rapidement ce que nous groupe de collgues, de permettre de slectionner le
souhaitons. lieu o ils choisissent de manger durant leurs pauses
de midi.
It-resto permet aux utilisateurs de participer
Lutilisateur pourra :
un vnement. Pour chaque vnement, il est pos-
sible de voter pour un ou plusieurs restaurants parmi sauthentifier ;
En parallle de la cration des diffrentes classes le nom du restaurant sont bien respectes (ni null,
de domain (quatre fichiers dans it-resto/grails- ni blank).
app/domain/it/resto), Grails a galement g-
1 void test constraint Restaurant () {
nr des classes de test (dans it-resto/grails- 2 given :
app/test/unit/it/resto). Elles se prsentent toutes 3 mockForConstraintsTests
de la mme manire avec une mthode setup, qui Restaurant
4
sera excute avant chaque mthode de test, ainsi 5 when : the restaurant name is
quune mthode cleanup excute aprs le test. null
Il ne reste plus qu crire les mthodes de test 6 def restaurant = new Restaurant
pour valider le bon fonctionnement des classes du ()
7 restaurant . name = null
domain. 8
Ces mthodes doivent tre crites en plusieurs 9 then : validation should fail
sections, connues sous le nom de given-when-then : 10 ! restaurant . validate ()
11 restaurant . hasErrors ()
la section given dcrit ltat du systme avant 12 print restaurant . errors [ name ]
13
de dbuter le scnario. Ce sont les conditions
14 when : the restaurant name is
pralables ; blank
la section when est le droulement du scnario 15 restaurant . name =
16
spcifier ; 17 then : validation should fail
la section then va dcrire et tester les change- 18 ! restaurant . validate ()
19 restaurant . hasErrors ()
ments attendus suite au scnario ralis dans 20 print restaurant . errors [ name ]
la section when. 21
22 }
Un test sur la cration et la validation du domain
Restaurant ressemblera ce qui suit. Dans ce pre- Dans la section given, la seule chose dfinie est
mier test, nous allons vrifier que les contraintes sur le mockForConstraintsTests qui mocke la classe
6 Peuplement de la base
Le squelette de lapplication a t ralis et le Attention ! Si vous utilisez cette base pour votre
modle de donnes est prt (dfinition des objets do- application de production, noubliez pas de changer
main ainsi que les tests unitaires sur les contraintes). le mot de passe admin et de bloquer laccs la
Avant de raliser les premiers crans et pour avoir console, sinon cela revient exposer tout le contenu
des lments y afficher, il faut peupler la base de de la base sur Internet.
donnes. La configuration de la base se fait dans le fichier
Cela se fait simplement, depuis le fichier grails- grails-app/conf/DataSource.groovy, au niveau de la
app/conf/BootStrap.groovy qui contient la mthode proprit environments.development.datasource :
init excute au lancement de lapplication et la m- 1 dataSource {
thode destroy quand lapplication est arrte. 2 dbCreate = " create - drop "
Il suffit de mettre en place le code suivant dans 3 url = " jdbc : h 2 : mem : devDb ; MVCC = TRUE ;
la mthode init : LOCK_TIMEOUT = 1 0 0 0 0 "
4 }
1 if (! Restaurant . count () ) {
2 print Create Initialement, la proprit dbCreate est create-
3 new Restaurant ( name : King Croissant
) . save ( failOnError : true ) drop, mais elle peut prendre dautres valeurs, selon
4 new Restaurant ( name : Les trois mi - le besoin :
temps ) . save ( failOnError : true )
5 } create : supprime les tables, les index, etc.
avant de recrer le schma au dmarrage ;
Restaurant.count() dnombre les restaurants en
base. Cette condition vite de crer systmatique- create-drop : semblable create, mais en sup-
ment les mmes lments chaque lancement de primant les tables larrt de lapplication ;
lapplication (ce qui arrive rgulirement en phase update : met jour la table en crant les tables
de dveloppement). et les index manquants, sans perdre les don-
Pour crer un nouveau Restaurant et le stocker nes existantes ;
en base, on le fera de cette faon :
validate : ne fait aucun changement dans la
1 new Restaurant ( name : King Croissant ) .
save ( failOnError : true ) base de donnes, mais compare le schma exis-
tant avec le schma configur dans lapplica-
La mme chose doit tre faite pour les autres l- tion (objet domain) et gnre un rapport.
ments du modle : User, Event et Vote.
Pour la base de donnes sous-jacente, Grails pro- Attention : create-drop et create sont manier
pose une connexion la base H2 en natif, en mode avec prcaution en dehors dun environnement de
stockage en mmoire et une console dadministra- dveloppement.
tion accessible via lien 34. Lidentifiant par dfaut On retrouve des configurations quivalentes pour
est admin et il ny a pas de mot de passe. les environnements de test et de production.
7 Conclusion
Voil, nous venons de voir comment : crer une application Grails partir de zro ;
1 Dfinition
La dfinition dun mot de passe est une squence Si vous tes intresss la scurit de
de caractres, de mots, de chiffres ou dun mlange vos donnes, la suite de ce tutoriel va
de tout, vous permettant ainsi de vous identifier vous servir.
pour accder un service. Je ne vous donnerai pas la recette
miracle , mais juste des pistes pour
amliorer la robustesse de vos mots de
passe.
123456 ;
2.1 Le nombre de caractres
000000 ;
password ; Cest un mot qui doit contenir un certain nombre
de caractres et de diffrents types : lettres minus-
12345678 ; cules et majuscules, chiffres et caractres spciaux.
qwerty ; Un bon mot de passe doit contenir au moins huit
azerty ; caractres. Comme le dmontre cette synthse :
Pour que le mot de passe soit sr, il va falloir 3.2.a Voici quelques cas possibles
passer par diffrentes tapes.
3.2.a.a Cas 1
Vous pouvez crer un code, en dfinissant cer-
3.1 tape 1
tains caractres par dautres, par exemple :
La premire va consister dfinir une trame pour c par ;
le mot de passe. d par 1 ;
Il existe pour cela diffrentes faons de faire, les
v par Z ;
plus connues sont :
etc.
la mthode phontique qui consiste trouver Inutile de faire tout lalphabet, quelques carac-
une phrase facile retenir et de se servir des tres suffiront. Vous pourrez ainsi introduire des
sons des syllabes pour faire le mot de passe : chiffres et des caractres spciaux.
Jai achet 8 CD pour 100 euros cet aprs-midi Par exemple, si vous prenez les paroles dune
scrit ght8cd ?am ; chanson et avec les caractres cits ci-dessus :
la mthode des premires lettres qui consiste Je vous parle dun temps Que les moins de
trouver une phrase facile retenir et de vingt ans Ne peuvent pas connatre scrit
prendre la premire lettre de chaque mot pour jZp1utqlm1Zanpp .
faire le mot de passe : un tiens vaut mieux
que deux tu lauras scrit 1tvmq2tla . 3.2.a.b Cas 2
Vous pouvez dfinir une frquence sur les majus-
3.2 tape 2 cules, par exemple tous les trois caractres.
Et en faire de mme avec les chiffres, o vous
ce niveau, nous obtenons un mot constitu de choisissez un nombre dau moins quatre chiffres. En-
lettres minuscules. Il va donc falloir rajouter des ma- suite, il vous suffit de linclure tous les deux carac-
juscules, des chiffres et des caractres spciaux. tres ou den mettre un au dbut, un la fin et deux
Cette tape est la plus complexe, car elle va d- au milieu.
pendre de votre personnalit, et cest ce qui va en Par exemple, si vous prenez les paroles dune
faire votre mot de passe, et il sera ainsi unique. chanson : Je vous parle dun temps Que les moins
ltape prcdente.
Pour cela, il vous suffit de rajouter des infor-
mations la fin, au dbut ou au milieu de votre
3.2.a.c Cas 3 mot de passe, en prenant lexemple du cas 1
jZp1utqlm1Zanpp , cela donne :
Vous pouvez aussi dcaler les lettres de lalpha-
bet dun nombre de caractres ou en faire de mme de prendre la premire et la dernire lettre
avec les touches du clavier. du systme (Facebook en fk , Orange
en oe , etc.) : ce qui peut donner
Par exemple, si vous prenez les paroles dune
jZp1utqlm1Zanpp_fk ;
chanson : Je vous parle dun temps Que les moins
de vingt ans Ne peuvent pas connatre avec le cla- de prendre deux derniers caractres du sys-
vier en dcalant dune case scrit kb^(iysmfbz,^^ tme (Facebook en ok , Orange en
ge , etc.) : ce qui peut donner
jZp1utqlm1Zanpp_ok ;
de prendre certains caractres et de les insrer
3.2.b Conclusion la suite dun caractre spcial : ce qui peut
donner jZp1fk utqlm1Zanpp ;
Il existe beaucoup dautres mthodes, et vous etc.
pouvez crer la vtre. Le but est quune fois que
vous tes arriv cette tape vous obteniez Vous pouvez aussi rajouter des carac-
un mot de passe personnalis et dont vous tres spciaux pour introduire le sys-
pouvez vous souvenir facilement. tme.
5 Conclusion
Nous venons de voir comment vous pouvez dfi- ramtres sur un ordinateur public, de ne pas
nir un mot de passe. Mais un mot de passe ne sera oublier de vous dconnecter la fin.
jamais sr, cest pourquoi il est important de le mo- Maintenant vous pouvez trouver sur Internet des
difier rgulirement. sites qui vous permettront den tester la robustesse.
La frquence du changement dpend prin- Le rsultat peut varier dun site lautre, en voici
cipalement des donnes contenues, mais il est quelques-uns :
prconis de le faire tous les trois mois, et
pour les systmes contenant des informations site 1 : lien 41 ;
bancaires, il est conseill de le faire plus sou- site 2 : lien 42 ;
vent. site 3 : lien 43 ;
Il est aussi bien important de ne pas le no-
ter sur un bout de papier qui pourrait finir Vous avez maintenant en main certains lments
dans de mauvaises mains . . . qui vous permettront de crer des mots de passe cor-
Il en est de mme, si vous utilisez vos pa- rects.
1 Le but de ce manuel
Le but de ce manuel est de fournir les lments Emmabunts pour lui permettre de bien dbuter.
de base tout nouvel acqureur dune machine sous
2 Distribution : Emmabunts
Les distributions GNU (lien 45)/Linux (lien 46) premires (pour de plus amples informations, voir
Emmabunts ont t conues pour faciliter le re- info.emmabuntus.org : lien 50).
conditionnement des ordinateurs donns aux asso-
Page principale : lien 51 ;
ciations humanitaires, en particulier aux commu-
nauts Emmas (do son nom) (lien 47), et favo- Forum : lien 52 ;
riser la dcouverte de GNU ()/Linux (lien 49) par Wikipdia : lien 53 ;
les dbutants. Un troisime objectif est de prolon- Articles sur Emmabunts dans la blogosphre :
ger la dure de vie du matriel pour limiter le gas- lien 54 ;
pillage entran par la surconsommation de matires
Revues de presse : lien 55.
3 Partie matrielle
4 Partie logicielle
4.4 Dock
Le Dock ou lanceur dapplications est la pierre
angulaire dEmmabunts, et lui apporte indpen-
dance et originalit par rapport aux distribu-
tions Ubuntu dont elle est issue. Cest Cairo-Dock
(lien 71) qui est utilis depuis la premire version
dEmmabunts.
4.3 Rinitialiser son mot de passe
La rinitialisation du mot de passe est ncessaire
si vous lavez oubli. Pour cela, lors du dmarrage
de la machine, maintenez enfonce la touche Shift Pour changer de niveau dutilisateur du Dock,
droite du clavier (Touche majuscule droite) cliquez sur Aide , puis Changer le type du dock
Niveau expert
Niveau dbutant
Niveau enfant
Il suffit de mettre un CD ou un DVD dans le 4.10 Ajout de logiciels fonctionnant sur Li-
lecteur, et au bout de quelques secondes le lecteur nux
Audacious (lien 87) souvre pour la lecture des CD
Audio, ou Kaffeine (lien 88) pour les DVD. Le systme Emmabunts (comme tout systme
Linux) fonctionne avec des paquets . Un paquet
(lien 97) contient tous les fichiers ncessaires au fonc-
Par dfaut nous avons configur Em- tionnement dun programme. Pour installer un pa-
mabunts pour lancer les mdias avec quet, il existe plusieurs mthodes :
les logiciels ci-dessus, mais si vous
la logithque Ubuntu (pour les dbutants) :
prfrez utiliser par exemple VLC
lien 98 ;
(lien 89) la place de Kaffeine, voici
la marche suivre. Linterface graphique de gestion de paquets Sy-
Cliquez sur licne Paramtrage naptic (pour les utilisateurs avancs) : lien 99 ;
sous Utilitaires dans le dock, puis La ligne de commande apt-get de gestion de
dans la nouvelle fentre sur Disques paquets (pour les experts) : lien 100.
amovibles et mdias , et sur longlet
Pour les dbutants linstallation de nouveaux lo-
Multimdia .
giciels a t simplifie grce lutilisation de la lo-
Remplacez la ligne concernant le lec-
githque incluse dans le systme. Pour cela, cliquez
teur Kaffeine par la ligne suivante :
sur Maintenance , puis Logithque (icne re-
/usr/bin/vlc playlist-autostart
prsentant un sac). Ensuite, faire une recherche avec
dvd ://
le nom du programme, ou en utilisant la navigation
par catgories.
5 Aide
Emmabunts intgre laide hors ligne directe- Si vous ne trouvez pas de solution votre pro-
ment partir du Dock, mais aussi lensemble des blme, voir :
tutoriels directement accessible partir du bureau,
F.A.Q : lien 109 ;
cliquez sur licne Emmabunts Information.
Forum : lien 110.
1 Avant-propos
2 Inauguration du pont
Depuis plusieurs annes, lesprit et les pratiques professionnelle et la performance de vos quipes.
agiles vous ont permis damliorer votre satisfaction Mais voil : il reste encore des sources de frustra-
3 Structure du livre
Ce guide comprend trois chapitres : Trois cas rels dquipes agiles ayant intgr
le management lean dans leurs pratiques. Ils
1. Comprendre lattente du client : lien 112 ; dcrivent leur contexte, les exercices quils ap-
2. Visualiser le challenge et les problmes : pliquent, et ce quils y gagnent. la fin de
lien 113 ; chaque cas, nous analysons et dveloppons les
principes lean mis en uvre.
3. Trouver les leviers de lamlioration : lien 114.
Une description des pratiques lean sur le thme
Chaque chapitre est organis de la faon sui- du chapitre.
vante. Les premiers pas que nous proposons de
Une description des pratiques agiles sur le mener pour se lancer.
thme abord. Des rfrences de lecture pour aller plus loin.
4 Conclusion
Le lean est une pratique. La valeur de ce guide venez partager vos dclics et vos questions avec les
rside dans les premiers pas , les exercices que autres praticiens pour que nous progressions tous
nous avons slectionns pour vous. Commencez les ensemble.
mettre en uvre ds maintenant, pas aprs pas, et
Retrouvez larticle de Philippe Blayo, Antoine Contal, Dominique De Premorel, Pierre Jan-
nez, Christophe Keromen, Rgis Medina, Sandrine Olivencia, Christophe Ordano, Raphal
Pierquin et Bruno Thomas en ligne : lien 115