Etude et développement des applications RTLNet

Dimension: px
Commencer à balayer dès la page:

Download "Etude et développement des applications RTLNet"

Transcription

1 Ecole Centrale Marseille RTLNet Paris, France Travail de Fin d Etudes Du 2 avril au 27 septembre 2013 Etude et développement des applications RTLNet Angela Prestaux 3ème année promotion 2013 Parcours S2I Tuteur école : François Brucker Tuteur entreprise : Damien Bourdette 1

2 Remerciements En premier lieu, je remercie Tristan Jurgensen, le directeur général de RTLNet, de m avoir accueillie dans son entreprise. Je tiens particulièrement à remercier Damien Bourdette, mon tuteur entreprise, pour son accompagnement et sa patience tout au long de celui-ci. Un grand merci également à Olivier, Thomas et Cédric, mes collègues de bureau, pour leurs explications et leur bonne humeur. Je remercie aussi Sébastien Bisch et Michel Depeige qui m ont toujours expliqué de bon coeur le fonctionnement de la maison RTL, du robot de stockage longue durée aux studios d enregistrement. Enfin, je remercie toutes les personnes qui ont contribué à faire de ce stage une expérience agréable et enrichissante. 2

3 Résumé / Abstract RTLNet est la filiale digitale de l entreprise RTL, qui s occupe du développement et de la maintenance des applications Web du groupe, que ce soit les portails Web ou les produits internes. Lors de mon stage, j ai pu participer au développement d un nouveau produit de la phase d expression du besoin à la mise en production, mais aussi au développement de nouvelles fonctionnalités sur des produits déjà existants. Les produits sont essentiellement basés sur le langage Java et le framework Spring MVC. L équipe de développement dispose néanmoins d une liberté technique qui leur permet d expérimenter régulièrement de nouvelles technologies, comme les outils GWT ou le langage Groovy. RTLNet is the digital subsidiary of the company RTL, the first radio broadcaster in France. RTLNet deals with the development and support of the group web applications, web portals for the radio stations or backoffice products. During my internship, I took part in the development of a brand-new product, from the specification phase to its actual production deployment. I was also involved in the development of new features and bug resolving in the existing projects. RTLNet s applications mainly rely on the Java programming language and the Spring MVC framework. The team of developers nevertheless enjoy a technical liberty which allows them to try many different technologies, such as GWT or the Groovy programming language. 3

4 Mots-clé Agilité - SCRUM - Lean - Déploiement continu - Intégration continue - Xtreme Programming - Tests unitaires Java - Spring MVC - Groovy - GWT - MongoDB 4

5 Glossaire Framework : (littéralement cadre de travail ) ensemble cohérent de composants logiciels structurels, qui sert à créer les fondations ainsi que les grandes lignes de tout ou d une partie d un logiciel. Design pattern : (littéralement patron de conception ) arrangement caractéristique de modules, reconnu comme bonne pratique en réponse à un problème de conception d'un logiciel. Il décrit une solution standard, utilisable dans la conception de différents logiciels. Inversion de contrôle (IoC) : il s agit d un design pattern commun à tous les frameworks, qui stipule que le flot d exécution de l application n est pas sous contrôle direct de l application mais que c est le framework lui-même qui gère les liens entre les objets. Le principe est de découpler les liens de dépendances entre objets. 5

6 A. L entreprise : RTLNet 1. RTLNet : une filiale de RTL 2. Le rôle de RTLNet 2.1 Organigramme 2.2 Espace de travail 3. Produits 3.1 Portails 3.2 Les sites thématiques 3.3 Les produits backoffice 4. Architecture applicative 4.1 Infrastructure 4.2 Monitoring 4.3 Trafic 4.4 RTLNet dans le paysage technologique Web B. Organisation et pratiques 1. Organisation : processus Agile 1.1 Origines diverses 1.2 Manifeste Agile 1.3 Dans la pratique 1.4 Outil utilisé : Jira/GreenHopper 2. Le développement par les tests 2.1 Une pratique Agile 2.2 Limites 2.3 JUnit 2.4 Mocking 3. Design & refactoring 4. Principes & lois 5. Intégration continue 5.1 Principe 5.2 Outil

7 6. Déploiement continu 6.1 Principe 6.2 Outils 7. Vue d ensemble C. Projets 1. Participation aux projets RTLNet 2. Application mobile : Snappy 2.1 Contexte 2.2 Modèle de données 2.3 Communication avec une application externe 2.4 Distribution 2.5 Conclusion 3. La consommation des players : tic.rtl.fr 3.1 Contexte 3.2 Fonctionnement général d une application de tracking 3.3 Challenge technique 4. Nouveau site thématique : pronostics.rtl.fr 4.1 Contexte 4.2 Modèle de données 4.3 Algorithmes 4.4 Prototype 4.5 Conclusion 5. Refonte du CMS interne : revo.rtl.fr 5.1 Contexte 5.2 Outil utilisé : GWT 5.3 Programmation Orientée Aspect 5.4 Flat design 5.5 Fonctionnalités HTML Conclusion

8 Introduction Ce stage au sein de RTLNet m a été proposé à la suite de mon projet de filière S2I, qui consistait en l élaboration d un moteur de recommandations de contenu pour le site de Fun Radio. J ai ainsi eu l occasion d intégrer l équipe de développement backend, d observer leur processus de travail et de me former aux technologies qu ils utilisent. L équipe à effectif réduit (4 personnes) produit et maintient plus de 20 produits, ce qui offre une grande variété dans les problématiques rencontrées ainsi que dans les solutions techniques adoptées pour répondre à ces problèmes. Ce stage m a également donné un aperçu des challenges techniques particuliers aux sociétés de média comme une station de radio : la mesure de leur audience ou la distribution de leurs contenus par exemple. 8

9 A. L'entreprise : RTLNet 1. RTLNet : une filiale de RTL RTL est une station de radio généraliste nationale privée française, créée en Elle est régulièrement designée comme la première radio française en terme d audience par les sondages Mediamétrie. La radio et ses filiales comptent plus de 460 collaborateurs pour 3 antennes : RTL, RTL2 radio pop-rock ciblant les jeunes adultes et FunRadio, radio au son dancefloor visant essentiellement les jeunes. RTL France est une filiale à 100 % du groupe de média RTL Group, qui fait lui-même partie du groupe multinational Bertelsmann. Organigramme Pole Radio RTL RTL compte également 3 marques filiales : IP France, la régie publicitaire, MediaPanel, la filiale de recherche stratégique et musicale et enfin RTLNet, la filiale digitale dans laquelle j ai effectué mon stage. 9

10 2. Le rôle de RTLNet RTLNet est la filiale digitale de RTL, fondée en 2000, elle compte plus de 30 salariés. Créée à l origine pour éditer les sites du groupe (rtl.fr, rtl2.fr et funradio.fr), l entreprise gère maintenant plus de 20 applications différentes. 2.1 Organigramme Organigramme RTLNet Le pole développement de RTLNet se compose de : - l équipe système, qui maintient les serveurs d application. L équipe n est pas uniquement dédiée à RTLNet. Elle ne maintient les serveurs que d une partie des applications RTLNet : une grande partie des services systèmes & réseaux nécéssaires a été externalisée il y a 2 ans. 10

11 - l équipe de développement frontend, le studio, qui s occupe de la conception graphique des portails et de la réalisation HTML/CSS et Javascript des projets. - l équipe de développement backend, au sein de laquelle j ai effectué mon stage. Elle s occupe de l architecture, du developpement et du maintien des applications. La technologie utilisée majoritairement est Java, avec le framework Spring MVC. Les tâches de l équipe de dévéloppement sont initiées par des sources diverses : - l antenne (portails des radios, outil en ligne de tracking des sons diffusés) - la rédaction web (correction de bugs sur les sites et sur le gestionnaire de contenus) - les équipes marketing (tracking du trafic des sites, intégration de contenu partenaire) - les éditeurs (proposition de nouvelles fonctionnalités sur les portails, et de nouveaux sites thématiques) 2.2 Espace de travail Les locaux de RTLNet se situent dans l immeuble de RTL, 22 rue Bayard à Paris (8ème). C est au même endroit que sont enregistrées les émissions des trois radios de la marque. Studio d enregistrement RTL Le bureau des développeurs est un open space au 4ème étage, où tous les développeurs backend travaillent. La chef de projet se trouve dans le même bureau que le DSI (Directeur des Systèmes d Information) au rez-de-chaussée, avec les bureaux des équipes systèmes et réseaux. L open-space des développeurs frontend se situe à l étage en-dessous de celui du backend, ce qui permet de communiquer assez facilement en face-à-face en cas de besoin, les deux équipes travaillant souvent en collaboration. 11

12 Bureau des développeurs Des outils de monitoring ont été installé, afin de pouvoir suivre en temps réel l état des applications et leur trafic : - un écran affiche un roulement sur plusieurs pages du produit de suivi du trafic maison, appellé otto. Ces pages présentent entre autre des graphiques avec les articles les plus lus ou les podcasts les plus téléchargés. - un autre écran est rélié à Jenkins, un outil d intégration continue directement relié à l outil de versionnement des sources GitHub. Cet écran est rouge lorqu un projet ne build pas, ou que sa suite de tests ne passe pas totalement. - un feu tricolore permet également de voir en un coup d oeil la santé du repository Git. Ecrans de monitoring 12

13 3. Produits L équipe de développement de RTLNet se charge du développement et du maintien de plus de 20 applications web. Celles-ci peuvent être classées en 3 grandes catégories : 3.1 Les portails Il s agit des sites les plus connus, associés directement à une marque de l antenne : et On peut également mentionner le portail de la régie publicitaire du groupe. Il arrive de temps en temps qu un site soit réalisé pour un grand évènement de l antenne, comme poprockparty.rtl2.fr. 3.2 Les sites thématiques Il s agit de sites dédiés à un thème bien particulier, ils sont parfois réalisés en partenariat avec un sponsor. Il existe ainsi un site dédié à l astrologie, astro.rtl.fr, ainsi qu un site dédié à l automobile, auto.rtl.fr. Le site onrefaitlescourses.rtl.fr est une application de concours de pronostics sur des courses hippiques, qui a été réalisé en partenariat avec le PMU. La participation est gratuite et les meilleurs joueurs peuvent remporter des cadeaux. 3.3 Les produits backoffice Il s agit des produits à l usage exclusif du personnel RTL. Le plus important est le gestionnaire de contenus (ou CMS, Content Management System), revo.rtl.fr. Il comporte plus de 30 modules, qui permettent par exemple aux journalistes d écrire leurs articles pour les portails, aux éditeurs d éditer directement le contenu des certaines pages des sites ou aux équipes marketing d insérer leurs liens de tracking sans passer par l équipe de développement. otto (otto.rtl.fr) est une application qui effectue des statistiques sur les articles les plus lus, les podcasts les plus téléchargés, etc... Chronos (chronos.rtl.fr) est un planificateur de tâches, une sorte de cron 1 permettant de lancer des jobs à intervalles réguliers sur toutes les applications. Il permet par exemple de mettre à jour les données en base qui viennent de flux externes. 1 Programme qui permet d éxécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l avance, ou selon un cycle prédéfini (http://fr.wikipedia.org/wiki/cron) 13

14 4. Architecture applicative 4.1 Infrastructure Architecture Tout le trafic des applications passe à travers un load balancer et un serveur de cache Varnish. Le load balancer permet de répartir les requêtes HTTP entre les trois serveurs de production jfront. Varnish (https://www.varnish-cache.org/) permet de cacher entièrement les pages pour une durée prédéterminée, ce qui permet aux sites passant à travers de très bien tenir la charge, car les serveurs ne sont sollicités que lorsque le cache expire. Il est possible de flusher le cache Varnish manuellement, il est également vidé lors des mises à jour de contenus. Les fichiers statiques et les médias sont stockés sur deux serveurs à part, avec un moteur Nginx (http://nginx.org/). Un script spécial est également installé sur ces serveurs, qui permet de redimensionner les images à la volée afin d améliorer la performance des applications. Les trois serveurs de production jfront comportent, en plus des applications, une base MongoDB. Un des 14

15 serveurs héberge la base primaire et les deux autres hébergent les bases secondaires ou replica sets. Réplication dans MongoDB Les applications n écrivent que sur la base primaire et toutes les modifications sont automatiquement reportées dans les bases secondaires. Les applications peuvent lire indiféremment sur les trois bases, sauf dans certains cas où elles sont forcées de lire la base primaire car il faut etre sûr de lire des données à jour. C est le cas du CMS par exemple. Si la base primaire tombe, une des bases secondaires sera automatiquement élue base primaire. Ce système permet ainsi de mieux répartir la charge en lecture des applications, de redonder les données et d offrir une solution de secours en cas de problème avec un des serveurs. Le système de basculement est également utile lors des opérations de mise à jour de la base. Les serveurs de production hébergent également des slaves Solr (http://lucene.apache.org/solr/), le master étant hébergé sur les serveurs de développements jback. Solr est une base d indexation, répliquée sur un modèle master/slave. Cette technologie permet d effectuer des recherches full-text de manière performante, ce qui est particulièrement pertinent dans le cas du moteur de recherche sur les articles. Solr utilise un procédé de 2 lemmatisation pour indexer son contenu. Enfin, les serveurs de production comportent un bus ActiveMQ (http://activemq.apache.org/), qui 2 Analyse lexicale du contenu d un texte pour regrouper les mots de même famille. La lemmatisation regroupe les différentes formes que peut revêtir un mot : nom, verbe à l infinif ou conjugué, singulier ou pluriel (http://fr.wikipedia.org/wiki/lemmatisation) 15

16 implémente la spécification Java Messenging Service, ou JMS. Ce service permet d envoyer des messages entre les applications. Il est par exemple utilisé par le gestionnaire de contenu qui envoie un message capté par le planificateur de tâches Chronos lorsqu un contenu est mis à jour pour que Chronos vide le cache Varnish. L architecture compte également une base de données Oracle redondée. Afin de protéger les données, elle n est pas accessible directement de l extérieur mais uniquement par les serveurs d application. C est le cas également pour les ports de la base de données MongoDB, qui ne sont pas visibles pour les connexions extérieures. 4.2 Monitoring En plus des écrans indiquant la santé des builds, l équipe dispose de deux autres sources d information pour surveiller ses produits. Logstash & Kibana Les logs des serveurs sont collectés et indexés en continu par l outil Logstash (http://logstash.net/) et sont consultables sur une interface Kibana (http://kibana.org/), qui permet de faire des recherches dans les logs, de trouver les logs sur une certaine période etc Ces outils sont extrêmement pratiques en cas de problème sur les applications en production, puisqu ils permettent de retrouver facilement les stacktraces des erreurs. Interface Kibana des logs d un serveur de production 16

17 otto est une application maison qui collecte un certain nombre de données business sous forme d évènements envoyés par les portails. Il est ainsi possible de consulter sur cette interface des métriques comme le nombre de vues d un article ou le nombre de téléchargements d un podcast. Interface otto, graphique de présentation des hits articles 4.3 Trafic Le site qui attire le plus de trafic est rtl.fr, avec environ deux millions de visiteurs uniques par mois (ou 5 millions de pages vues). Graphique Google Analytics, on observe une fréquentation entre et 300 pages vues par jour pour RTL Les pages les plus visitées sont la page d accueil et la page du player live, permettant d écouter la radio sur Internet. 17

18 Graphique Google Analytics, pages les plus consultées sur RTL Les portails des deux autres radios de la marque (funradio.fr et rtl2.fr) ont des fréquentations moyennes respectives de 1,5 million et visiteurs uniques par mois. Un site thématique comme onrefaitlescourses.rtl.fr enregistre une fréquentation moyenne de pages vues par jour, pour environ 700 participants réguliers au concours de pronostics. Interface Google Analytics de onrefaitlescourses.rtl.fr, données depuis janvier

19 4.4 RTLNet dans le paysage technologique Web L équipe de développement de RTLNet se tient au courant des évolutions technologiques du monde du Web et utilise globalement des outils récents et reconnus dans le milieu. Nous pouvons le constater en plaçant les technologies utilisées par l équipe dans le techradar ThoughtWorks. ThoughtWorks est une société de consultants réputée, impliquée dans les derniers changements sur le marché du développement logiciel. Ils publient régulièrement sur leur site internet un radar des technologies à adopter/tester/évaluer/abandonner (http://www.thoughtworks.com/radar). Sur celui de Mai 2013, RTLNet utilise : - 5 technologies ou pratiques classées A adopter : ElasticSearch, MongoDB, un processus de déploiement continu automatisé est en place, le studio utilise des frameworks CSS (LESS et SASS). Le passage à l outil de build Gradle est actuellement étudié, en remplacement de Maven. - 3 technologies ou pratiques classées A essayer : Logstash, l utilisation de bases de données NoSQL telles que MongoDB. le design responsive, c est-à-dire qui s adapte dynamiquement au format de l écran de l utilisateur, est progressivement mis en place sur les projets - 2 technologies classées A évaluer : Twitter Bootstrap, une librairie CSS qui permet d avoir un design élégant et unifié sans efforts est utilisé dans tous les projets backoffice et les icons fonts, les icônes sous forme de police de caractères, sont utilisées par le studio. - 2 technologies classées A abandonner : Maven et les tests basés sur un navigateur, tels que Selenium. Les développeurs de RTLNet sont libres de tester les technologies qui les intéressent sur les projets, ce qui permet à l entreprise de ne pas se laisser dépasser dans le domaine, et on observe en effet que l ensemble des technologies utilisées sont globalement récentes et à la pointe de ce qui se fait. L équipe cherche effectivement des solutions de remplacement aux technologies classées A abandonner. Gradle est notamment en cours d évaluation pour remplacer Maven. 19

20 B. Organisation et pratiques Le travail quotidien de l équipe de développement est organisé grâce à une méthodologie Agile. Cette méthodologie implique la mise en place de processus de tests, d intégration et de déploiement continus qui assurent un niveau de qualité et de confiance dans le code produit. 1. Organisation : processus Agile 1.1 Origines diverses L équipe de développement a adopté une organisation de travail basée sur la méthodologie Agile. La méthode en place est une méthode Scrum (réference bibliographique [4]) teintée de principes venant de l approche Lean et de XP (Xtreme Programming, référence bibliographique [3]). L idée est de développer sur des cycles courts appellés itérations (dans notre cas des périodes de deux semaines) avec des mises en production fréquentes, dès qu une fonctionnalité est implémentée. Cette méthode procure une plus grande souplesse aux demandeurs. En effet, ils ont la possibilité de voir le travail avancer presque en temps réel, ce qui n est pas possible avec les méthodologies plus classiques type cycle en V où la livraison se fait en un bloc. Ainsi, il est beaucoup moins coûteux d ajouter une fonctionnalité qui aurait pu être oubliée ou de faire des modifications. On évite les longues phases de spécifications et d écriture de documentation en début de projet pour privilégier le prototypage et la technique des tracer bullets : commencer rapidement le code de manière à affronter les problèmes concrets rapidement. Il est ainsi possible de découvrir et isoler les éventuels points délicats en début de projet (référence bibliographique [2]). 1.2 Manifeste Agile Ces principes s appuient sur les grandes lignes du manifeste Agile, rédigé en 2001, qui a dégagé 4 valeurs principales pour mettre en place un développement applicatif plus centré sur les demandeurs et leurs besoins. Manifeste Agile (http://agilemanifesto.org) 20

21 1.3 Dans la pratique Le travail est planifié suivant la méthodologie Scrum. Lorsqu ils souhaitent un travail de développement (résolution d un bug, modification d un produit existant ou création d un nouveau produit), les demandeurs doivent ouvrir un ticket spécifiant leur besoin. Ce ticket passe en backlog (liste d attente) : la demande sera étudiée lors de la prochaine réunion de priorisation. Méthode Scrum Cette réunion se tient à la fin de chaque itération, toutes les deux semaines. On y décide de l ensemble des tickets qui seront traités lors de la prochaine itération. Elle rassemble : - le responsable de l équipe de développement - le responsable du studio - la chef de projets de la DSI - le directeur général de RTLNet - les responsables des pôles demandeurs, notamment les directeurs éditoriaux et de la rédaction Elle apporte de la visibilité à tous les acteurs de l entreprise sur ce qui est fait par l équipe de développement et pourquoi. Le dialogue est également facilité entre les équipes techniques et éditoriales. A la fin de cette réunion, le ticket reçoit un statut : - Ouvert dev : des développeurs vont travailler dessus - Etude en cours demandeur : mis en attente par manque de détail - Ne sera pas résolu : la demande est refusée Préalablement à chaque réunion, l équipe de développement et le studio doivent charger les tickets, c est-à-dire estimer, dans une unité arbitraire assimilée au jour-homme, le temps nécessaire à sa résolution. Cette partie est assez délicate, en particulier sur les gros projets. C est l expérience et une bonne connaissance des 21

22 produits qui permettent de faire des estimations de plus en plus fiables. Avec ces charges, il est donc théoriquement possible de décider d un nombre de tickets qui devraient pouvoir être traités sur une période de deux semaines. Pour les gros projets, comme la création d une nouvelle application, le ticket est sous-divisé en plusieurs tickets correspondant chacun à une tâche. Ces tickets peuvent être répartis sur plusieurs itérations, avec un produit livré à la fin de chaque. Il est ainsi possible d affiner le besoin et les estimations de charge de travail à chaque itération. En cas de bug ou de modification mineure peu impactante en terme de charge de travail pour les développeurs, un ticket peut passer directement dans l itération en cours. Après plusieurs années de pratique, l estimation de charge est plutôt précise mais la tenue des délais dépend aussi parfois d acteurs externes, des partenaires ou d autres services de l entreprise. S il reste des tickets à la fin de l itération, ils sont remis dans l itération suivante. 1.4 Outil utilisé : Jira/GreenHopper Il s agit d une interface qui permet à la fois de créer les tickets et de les visualiser sous forme d un tableau 3 Kanban. Tous les collaborateurs peuvent se connecter à cette interface avec leur compte entreprise, et peuvent ainsi ouvrir des tickets et suivre l évolution de leurs demandes. Les communications entre les demandeurs et les développeurs pour chaque ticket se font essentiellement à travers l interface de commentaires de chaque Jira. L interface est également connectée à GitHub, l outil de contrôle de version en ligne, ce qui permet d associer chaque ticket aux modifications de le code liées. Cela facilite grandement le processus de relecture du code par un pair, avant la mise en production. 3 Tableau de gestion des tâches inspiré des méthodologies Lean dans l industrie (http://en.wikipedia.org/wiki/kanban_(development)) 22

23 Le tableau Kanban dans l interface GreenHopper Le tableau est partagé entre le studio et le développement backend : - les trois colonnes de gauche ( A faire studio, A faire maquette et En cours studio ) correspondent au flux de travail frontend. Les tickets qui nécéssitent un travail graphique sont donc placés dans la colonne A faire studio et lorsque les graphistes et intégrateurs ont fini leur travail, ils ferment le ticket ou le passent dans la colonne A faire dev si du travail de développement côté serveur est également requis. - la colonne A faire dev correspond à la liste des tickets qui doivent être réalisés par l équipe de développement backend pendant l itération - la colonne En cours dev liste les tickets qui sont en cours de résolution. Lorsqu un développeur prend en charge un ticket il passe donc le ticket dans cette colonne. Il doit également se l attribuer, c est-à-dire inscrire sur le tableau qu il est la personne en charge de la résolution. En un seul coup d oeil sur le Kanban il est ainsi possible de savoir qui fait quoi à un instant donné. - la colonne Sur le lab liste les tickets théoriquement résolus. Les développements engendrés ont été deployés sur l environnement de test, le lab, ce qui permet aux demandeurs d aller vérifier si leur problème de départ à été effectivement résolu. - la colonne Revue effectuée liste les tickets pour lesquels les développements ont été vérifiés par un autre développeur que celui ayant résolu la demande. Cette étape est systématique pour tous les tickets avant leur mise en production. 23

24 - la colonne En production et Résolu, dans laquelle on retrouve tous les tickets fermés de l itération, après leur mise en production. 2. Le développement par les tests 2.1 Une pratique Agile Le développement par les tests est une technique de développement qui préconise d écrire en premier lieu des tests unitaires avant de commencer à coder la fonctionnalité à proprement parler. Cette technique et ses bénéfices sont développés dans le livre référence de Kent Beck (référence bibliographique [1]).Procéder de cette manière permet dans un premier temps de mieux spécifier ce que l on cherche à accomplir. Les tests font office de fil rouge, qui permet au développeur de toujours tendre vers un but concret : faire passer les tests. Les tests servent également de documentation pour les autres développeurs : s il veulent savoir à quoi sert une fonction, aller regarder ses tests unitaires permet de découvrir son but ainsi que ses cas limites. Enfin, l avantage majeur du recours aux tests unitaires est qu ils permettent d assurer un standard de qualité pour les applications. Ainsi, les développeurs peuvent se permettre de faire de grandes modifications dans le code, comme des refactorisations, sans avoir peur de provoquer un bug par inadvertance. Red / Green / Refactor Kent Beck Le motto du développement par les tests est donc d écrire d abord un test qui rate (test rouge), pour le faire ensuite passer (test vert) et ensuite s atteler à la refactorisation, c est-à-dire écrire un code de meilleure qualité (nom de variable plus explicite, mise en commun d éléments de logique ) tout en gardant la même fonctionnalité. Les tests représentent un filet de sécurité lorsque l on modifie le code. 2.2 Limites Cependant, malgré leur forte valeur ajoutée, les tests ne garantissent pas l absence de bug dans le code. Ils assurent que dans les scénarios d utilisation envisagés et retranscrits sous forme de tests, l application se comporte comme on s attend à ce qu elle le fasse.. Program testing can be used to show the presence of bugs, but never to show their absence! Edsger W. Dijkstra 24

25 Un problème récurrent de l équipe de développement RTLNet était notamment les échecs à répétition des tests d interface Selenium. Selenium est un framework de test qui pilote un navigateur Web. Il permet par exemple de simuler un clic sur un bouton et de vérifier que les changements de structures dans l arbre DOM qui s ensuivent sont bien ceux attendus. Framework de test Selenium Cependant, sur les pages lourdes à charger comme celles de RTL (notamment à cause des blocs de publicité des partenaires) les tests échouent souvent en timeout : la clause de test attendait une réponse plus rapide que le temps de chargement de la page. Les tests Selenium sont des tests assez fragiles qui cassent facilement, après le moindre changement de structure dans la page. RTLNet songe à les abandonner, car s habituer à avoir des tests en erreur risque de masquer un éventuel problème important sur les applications. 2.3 JUnit En Java, le principal framework pour écrire des tests unitaires est JUnit. Il permet d écrire des suites de tests unitaires et de les lancer simplement, d autant plus qu il est intégré nativement dans de nombreux IDEs, dont IntelliJ, utilisé à RTLNet. Des modules complémentaires permettent également de faciliter l écriture des tests, comme le module FEST Assertions qui permet d écrire les assertions avec une syntaxe proche du langage naturel. import org.junit.test; import static org.junit.assert.*; public class TestAssertions public void testassertions() { String str1 = new String ("abc"); String str2 = new String ("abc"); String str3 = null; String str4 = "abc"; String str5 = "abc"; int val1 = 5; int val2 = 6; String[] expectedarray = {"one", "two", "three"}; String[] resultarray = {"one", "two", "three"}; //Check that two objects are equal assertequals(str1, str2); //Check that a condition is true 25

26 asserttrue (val1 < val2); //Check that a condition is false assertfalse(val1 > val2); //Check that an object isn't null assertnotnull(str1); //Check that an object is null assertnull(str3); //Check if two object references point to the same object assertsame(str4,str5); //Check if two object references not point to the same object assertnotsame(str1,str3); //Check whether two arrays are equal to each other. assertarrayequals(expectedarray, resultarray); } } Assertions JUnit int removed = employees.removefired(); assertthat(removed).iszero(); List<Employee> newemployees = employees.hired(today); assertthat(newemployees).hassize(6).contains(frodo, sam); assertthat(yoda).isinstanceof(jedi.class).isequalto(foundjedi).isnotequalto(foundsith); Assertions FEST Avoir des tests unitaires faciles à écrire et à comprendre incite également à avoir un code bien découplé, ce qui est bénéfique pour l application. L idéal est de pouvoir tester morceau par morceau, et d éviter l imbrication au maximum pour qu en cas de problème, la source de l erreur soit évidente. Pour tester des applications construites sous forme de modules et de services suivant cette philosophie, on peut utiliser des mocks. 2.4 Mocking Les mocks sont des objets de tests qui remplacent les véritables objets utilisés dans l application, et auxquels on peut dicter de manière autoritaire le comportement lors de chaque test. En effet, on peut avoir besoin de faire interagir les objets qu on teste avec d autres objets ou services, mais sans vouloir tester ces objets-là en même temps. On peut alors simuler leur comportement, en forçant des mocks à répondre ce que l on voudrait que le véritable objet réponde dans les circonstances testées. Savoir si l objet mocké répondrait réellement ce que l on attend est le sujet d une autre suite de tests. 26

27 Mockito est un framework Java qui permet de mettre en place cette technique. import static org.mockito.mockito.*; import static public void iteratorwillreturnhelloworld(){ //arrange Iterator i=mock(iterator.class); when(i.next()).thenreturn("hello").thenreturn("world"); //act String result=i.next()+" "+i.next(); //assert assertequals("hello World", result); } Exemple de mock avec Mockito 3. Design & refactoring Dans les projets RTLNet, l idée est de commencer rapidement à coder dès que le minimum d information nécessaire est disponible sur le produit. Le code est ensuite modifié au fil des changements dans l expression du besoin et des discussions avec le client du projet. Même après la sortie d un projet, son code peut être repris et parfois beaucoup changé, selon les retours des utilisateurs et l évolution du besoin du client. Commencer rapidement avec du code ne veut pas dire qu il n y a pas de réflexion sur l architecture de l application, mais au contraire que cette réflexion est continue sur toute la vie du produit et non pas cantonnée à une seule phase de spécifications au début du projet (référence bibliographique [5]). Don't worry about design, if you listen to your code a good design will appear. Martin Fowler Cette grande souplesse est permise par la présence de tests unitaires qui constituent une sorte de filet de sécurité et assurent au développeur que l application est toujours fonctionnelle après ses changements. 27

28 4. Principes & lois - La règle du boy-scout Il s agit d une règle simple qui incite à se placer dans une démarche d amélioration continue : Toujours laisser un endroit dans un meilleur état que celui dans lequel vous l avez trouvé. En pratique, cela signifie que lorsque l on modifie un morceau de code, il ne faut pas hésiter à procéder aux améliorations qui nous semblent possibles même si elles ne sont pas strictement nécessaires. On obtient ainsi globalement un code de meilleure qualité petit à petit. - Law of Demeter ou principe de connaissance minimale Un objet devrait faire aussi peu d'hypothèses que possible à propos de la structure de quoi que ce soit d'autre, y compris ses propres sous-composants. En particulier, un objet doit éviter d'invoquer des méthodes d'un objet retourné par une autre méthode. On l appelle également la règle du point de manière simplificatrice, en disant qu il faut le moins de points possible (c est-à-dire d appel à un getter) pour éviter une trop grande interdépendance entre les objets. En effet, plus les objets connaissent en détail un autre et s appuient sur cette connaissance pour construire leurs propres méthodes, plus le code cristallise et devient difficile à modifier simplement. - Hollywood principle Il s agit d un principe basé sur la réponse classique aux castings hollywoodiens : Don t call us, we ll call you - Ne nous appelez pas, nous vous appelerons. C est un principe particulièrement pertinent dans le cas d un programme qui doit respecter les contraintes d un framework, le développeur ne maîtrise pas le flux de l application de A à Z mais doit implémenter des interfaces et enregistrer ses composants, qui seront appellés lorsque nécessaire. Ce principe est très important dans le cas de framework à inversion de contrôle, où les liens entre les composants sont décidés par des fichiers de configuration lors de l exécution. - Simple responsability principle Ce principe indique qu une classe dans un programme orienté objet ne devrait avoir qu une seule responsabilité, et prendre en charge la totalité de cette responsabilité. Ainsi, lorqu on veut modifier l aspect d un programme il suffit de modifier une seule classe, ce qui ne risque pas de casser une autre fonctionnalité. - Don t Repeat Yourself (DRY) Chaque représentation de savoir doit être unique dans un programme, il faut éviter la duplication de code pour faciliter le maintien de l application en cas de changement dans la logique. 28

29 - You Ain t Gonna Need It (YAGNI) Lorsqu on développe une fonctionnalité, il ne faut pas ajouter de code inutile immédiatement en prévision du développement d une autre fonctionnalité qui n est pour l instant pas demandée : il y a de grandes chances que ce code reste inutilisé. Lorsqu une fonctionnalité supplémentaire est effectivement demandée, on ajoutera du code là où c est nécessaire. 5. Intégration continue 5.1 Principe Un processus d intégration continue est mis en place : il s agit d un ensemble de pratiques utilisées en génie logiciel consistant à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression dans l'application développée. Pour appliquer cette technique, il faut d'abord que : - le code source soit partagé, grâce à un outil de versionnement. RTLNet utilise Git, les projets sont hébergés sur la plate-forme GitHub, mais ne sont pas visibles par le public comme le sont habituellement les projets GitHub open-source. - les développeurs intègrent (commit) au moins quotidiennement leurs modifications, afin de ne jamais avoir sur son poste en local une version de l application totalement différente de celle partagée, ce qui pourrait arriver en travaillant plusieurs jours, voire semaines, sans se resynchroniser avec les autres. - des tests soient inclus dans les projets pour valider l application. 5.2 Outil Un outil d intégration continue permet ensuite de récupérer automatiquement le code lorsqu une modification est poussée sur le repository GitHub, de lancer un build afin de vérifier que l ensemble du code compile correctement, puis de lancer la suite de tests. RTLNet utilise Jenkins. Ce processus permet de tester immédiatement les unités modifiées. Ainsi, il est possible de détecter rapidement le code incompatible, manquant ou erroné. Les problèmes d'intégration étant détectés et réparés de façon continue, ils ne sont pas accumulés au fur et à mesure du projet. C'est pourquoi il est possible d'effectuer un test ou une démonstration sur une version fonctionnelle, en permanence. De plus, Jenkins déploie automatiquement toutes les applications en environnement de test (le lab) chaque nuit, 29

30 pour s assurer que les applications sont buildées au moins une fois par jour. Panneau de commande de Jenkins 6. Déploiement continu 6.1 Principe Le déploiement continu est un prolongement de l intégration continue, visant à réduire au maximum le temps entre l écriture d une nouvelle ligne de code et l utilisation réelle de ce même code par les utilisateurs finaux. Pour cela, il s agit d automatiser les étapes de la mise en production. Les avantages d une telle pratique sont multiples : le retour sur investissement pour chaque nouveau développement commence plus tôt et il est possible d obtenir très rapidement des retours d utilisateurs sur une nouvelle fonctionnalité. De cette manière, il est possible de tester plusieurs hypothèses afin de retenir celle qui convient le mieux au client. De plus, des déploiements automatisés et réguliers diminuent grandement la peur de la mise en production chez les développeurs. RTLNet a mis en place des outils de déploiement continu de telle sorte qu une mise en production se résume à appuyer sur deux boutons : un pour effectuer un build Maven du projet et un pour effectivement déployer ce tag sur les serveurs de production. 30

31 6.2 Outils Rundeck, console Web L outil utilisé à cette fin est Rundeck, une console Web qui permet de lancer des scripts sur différents serveurs, considérés comme les noeuds d un réseau. L équipe a développé un ensemble de scripts en Groovy qui sont donc exécutés par cette application sur les serveurs visés (lab ou production). Interface de Rundeck Groovy est un langage qui se prête particulièrement bien aux scripts de par ses facilités d écriture qui le rendent particulièrement agréable à utiliser. Le script de déploiement est unique pour toutes les applications et s appuie sur un fichier de configuration en YAML, créé lui pour chaque projet. Ce script spécifie notamment le port utilisé sur le serveur ou la taille allouée pour la permgen, l emplacement mémoire utilisé par la JVM (Java Virtual Machine) pour stocker les définitions de classes. Cet emplacement ne bénéficie pas du ramasse-miettes, et en cas de dépassement de la taille définie, l application lance une exception OutOfMemoryError. Pour les gros projets, il faut donc définir un espace plus grand que les 64MB définis par défaut, par exemple pour rtl.fr, la permgen est fixée à 256MB. 31

32 def deploywebapp(string version, String tomcatconfresolver) { mkdirs() assertexists() log "Deploying $name $version" intempdirectoy { File tempdir > def war = new File(tempDir, "ROOT.war") new NexusArtifact(name: name, version: version, extension: 'war').downloadto(war) stoptomcat() updatetomcatconf(version, tomcatconfresolver) new File("$webappDir/webapps").deleteDir() new File("$webappDir/work").deleteDir() new File("$webappDir/webapps").mkdirs() new File("$webappDir/work").mkdirs() log "Copying war to $webappdir/webapps/root.war" new AntBuilder().move(file: war, tofile: new File(webappDir, "webapps/root.war"), overwrite: true) starttomcat() }} Extrait du script de déploiement Groovy port: serverport: xms: 256m xmx: 2048m maxpermsize: 256m monitoringpaths: '/,/secured/monitoring/version' monitoringuserpasswd: user:password YAML de configuration Lorsqu on lance un tag Maven avec Jenkins, l artefact obtenu est automatiquement poussé vers un serveur Nexus (http://www.sonatype.org/nexus/) qui stocke tous les builds. C est sur ce serveur que le script Groovy va chercher l application à déployer. La gestion des serveurs en dehors des applications (installation des bases de données, mise à jour des machines virtuelles etc ) est déléguée à BCS, le prestataire en charge de la partie système et réseaux. L outil Puppet (http://puppetlabs.com/) est utilisé à cette fin. Puppet 32

33 Puppet est un outil de gestion de configuration, qui fonctionne sur les environnement Unix et Microsoft. Il utilise un langage déclaratif : l utilisateur indique l état souhaité de son système dans des Puppet manifests, Puppet se charge ensuite d installer les ressources nécessaires et leurs dépendances sur chaque machine. Cela permet de gérer en un fichier unique des machines pouvant être dans des états très différents au départ. Puppet se définit ainsi en opposition à un système impératif, où l utilisateur doit spécifier ce qui doit être installé sur la machine, ce qui dépend de l état initial de celle-ci. Chef (http://www.opscode.com/chef/) est un outil similaire. 7. Vue d ensemble Processus d intégration et déploiement continu Le processus d intégration et de déploiement continu est résumé dans la figure ci-dessus : - en premier lieu, la demande client est exprimée à travers un ticket dans JIRA - si le ticket est accepté lors de la réunion de priorisation, il est résolu par les développeurs - le code produit est versionné dans Github - il est alors automatiquement compilé et testé par Jenkins, le résultat des tests étant relié à des écrans dans le bureau des développeurs afin de détecter rapidement le moindre problème - lorsque les tests et la compilation réussissent, Jenkins envoie un artefact à un serveur Nexus - cet artefact est ensuite disponible pour le déploiement à partir de l interface Rundeck - les logs des serveurs sont enregistrés dans kibana et des statistiques sur leur utilisation sont sauvées dans otto 33

34 C. Projets 1. Participation aux projets RTL Lors de ce stage, j ai participé aux tâches quotidiennes de développement et de maintenance des applications réalisées par l équipe de développement, ce qui m a permis de me familiariser avec de nouveaux concepts et technologies, principalement en environnement Java. Les applications sont majoritairement développées avec le langage Java, qui est un langage de programmation objet à typage fort. C est un langage utilisé de manière étendue dans le monde de l entreprise car il est bien maintenu et surtout développé de manière à assurer la compatibilité entre les versions en permanence. Cela peut présenter des inconvénients car le langage est moins dynamique qu un autre qui s affranchit de ces contraintes - comme Ruby -, mais la perennité du code écrit est assurée. De plus en plus, les tests unitaires et les services Web sont écrits en Groovy, un autre langage s exécutant également sur la JVM (Java Virtual Machine), ce qui permet donc de mélanger dans un même projet des classes Java et des classes Groovy. Le langage Groovy autorise plusieurs facilités d écriture très appréciables, comme les closures, ou le constructeur à paramètres nommés qui augmente de façon importante la lisibilité des tests unitaires. L IDE (Integrated Development Environment, environnement de développement intégré) utilisé est IntelliJ IDEA. C est un éditeur payant très fonctionnel au quotidien. Ses fonctionnalités les plus appréciables sont notamment le gestionnaire de refactorisation, très complet, et le moteur de recherche d usage pour une fonction. Il dispose également de multiples plugins. 4 La majorité des projets est réalisée avec le framework Spring MVC. Spring est un conteneur dit léger car les classes n ont pas besoin d implémenter une interface pour être prises en compte (contrairement aux serveurs d applications J2EE), la création d objets et leur mise en relation se fait à travers un fichier de configuration. 4 Modèle Vue Contrôleur : design pattern répondant au problème de l organisation d une interface graphique. L idée est de bien séparer les données, la présentation et les traitements (http://fr.wikipedia.org/wiki/mod%c3%a8le-vue-contr%c3%b4leur) 34

35 La grande force du framework Spring est son implémentation de l inversion de contrôle par injection de dépendance. Les dépendances peuvent s écrire très facilement par annotation public class AdminController private SessionService private DataExtractor private RandomSessions randomsessions; De nombreux modules permettent aussi de traiter des problématiques fréquentes dans les applications, comme Spring Security pour gérer l authentification et la sécurisation. 2. Application mobile : Snappy Nom : Snappy Besoin : Application mobile pour permettre aux journalistes sur le terrain de prendre rapidement une photo, une vidéo ou une séquence audio et de les envoyer accompagnées d un titre et d un texte directement dans le CMS Etat actuel : en cours Technologies utilisées : objective-c, framework Cocoa Touch 2.1 Contexte Snappy est la première application iphone réalisée en interne par les équipes de développement RTLNet, les applications mobiles des radios ayant été sous-traitées à des prestataires spécialisés. Cette application est dédiée à être exclusivement distribuée en interne, aux journalistes - potentiellement des trois radios. Le parc de téléphonie mobile de RTL étant à très grosse majorité composé d iphone 4 et 4S, il a été décidé de développer une application ios 5. Les fonctionnalités demandées étaient assez basiques : pouvoir éditer et sauver un sujet, avec un titre, un peu de texte et la possibilité d ajouter des images, des vidéos et des sons. Un sujet devait ensuite pouvoir être 35

36 envoyé directement sur le gestionnaire de contenu Revo. 2.2 Modèle de données Pour la partie média, nous avons utilisé les frameworks et composants natifs mis à disposition par Apple : AV Foundation pour la gestion des vidéos/sons et le composant UIImagePicker pour l accès à la librairie de photos de l iphone, ainsi qu à sa caméra. Pour la partie persistence des données, nous avons utilisé le framework CoreData, qui fournit une interface de persistence directement couplée à une base locale SQLite. Il est alors très aisé de sauvegarder un objet après avoir mis en place un contexte de persistence dans l application : //Instancier l object dans le contexte de persistence NSEntityDescription *entity = [NSEntityDescription inmanagedobjectcontext:context]; Subject* subject = [[Subject alloc] initwithentity:entity insertintomanagedobjectcontext:context]; //Traitement de l objet _subject.title = _txttitle.text; _subject.text = _txttext.text; _subject.medias = [[NSOrderedSet alloc] initwitharray:_medias]; //Sauvegarde NSError *error = nil; NSManagedObjectContext *managedobjectcontext = self.managedobjectcontext; if (managedobjectcontext!= nil) { if ([managedobjectcontext haschanges] &&![managedobjectcontext save:&error]) { error error, [error userinfo]); abort(); } } Le modèle de données se définit directement dans XCode, l IDE dédié développé par Apple. Le modèle de données que nous avons utilisé pour Snappy est le suivant : Un objet Subject contient toutes les données du formulaire (titre et texte), ainsi que la date de création et la date de publication (ce qui est utile pour la fonctionnalité qui supprime au démarrage de l application tous les sujets 36

37 publiés depuis plus de 7 jours). Cet objet possède également une relation de type one-to-many avec des objets Medias, correspondant logiquement aux médias attachés. Cet objet contient uniquement le type du média, utilisé pour déterminer le type d affichage utilisé dans l application, ainsi que le chemin absolu du média dans le gestionnaire de fichiers de l application (NSFileManager). L interface utilisateur que nous avons développée utilise très largement les composants natifs ios et s inspire de l interface de l application iphone de Gmail. 2.3 Communication avec une application externe Un autre fonctionnalité demandée pour cette application était la création d un pont permettant à Snappy de recevoir des sons provenant d une autre application du groupe RTL qui permet justement l enregistrement et le montage d extraits sonores. ios définit une zone neutre entre les applications, l UIPasteboard, sur laquelle les applications peuvent déposer des données avec un système de clé-valeur de façon à pouvoir les retrouver ensuite. Il faut donc que l application tierce dépose le son sur l UIPasterboard avec une clé connue - nous avons décidé d utiliser l identifiant de Snappy - et déclenche ensuite l ouverture de Snappy. L ouverture de l application par appel d une certaine URL prédéfinie est une option qu il est possible d activer dans la configuration. Il est ensuite possible de déterminer dans le code si l application a été ouverte directement par l utilisateur ou par une autre application. Dans le cas d une ouverture externe, nous allons donc voir sur l UIPasteboard s il existe des données associées à la clé connue, si oui nous les rapatrions dans Snappy. //méthode appellée lors d une ouverture externe (BOOL)application:(UIApplication *)application openurl:(nsurl *)url sourceapplication:(nsstring *)sourceapplication annotation:(id)annotation { // vérification de la source de l appel if ([sourceapplication { // récupération des données 37

38 } UIPasteboard *pasteboard = [UIPasteboard generalpasteboard]; NSData *data = [pasteboard if (data) { //ajout des données à l application } } return YES; 2.4 Distribution La distribution de Snappy ne passe pas par l App Store car il ne s agit pas d une application grand public, nous avons donc opté pour une distribution dite Ad Hoc. Il suffit de packager l application sous forme d un fichier.ipa, n importe quel idevice peut ensuite ouvrir ce fichier, qui se comporte comme un utilitaire d installation pour 5 l application. Les.ipa de RTL sont distribués via une page Web protégée par l authentification Active Directory de l entreprise. 2.5 Conclusion Ce projet a permis de diversifier les compétences de l équipe de développement, avec l utilisation de technologies nouvelles. L IDE que nous utilisons habituellement, IntelliJ, n étant pas compatible avec du développement objective-c, nous avons du nous rabattre sur l IDE par défaut XCode. Nous avons alors pu nous rendre compte des limitations des IDEs offrant beaucoup d interfaces graphiques. Si cela présente des avantages en début de développement car il est possible d obtenir rapidement un prototype fonctionnel, ce type d interface se révèle peu pratique lorsque le développement devient plus fin. En effet, il est parfois difficile de trouver l option à activer pour obtenir le comportement recherché alors qu une ligne de code serait plus claire. L interface écrit la configuration dans des fichiers cachés assez obscurs à relire, et il est donc également difficile d écrire du code collaboratif sur ce type de projets car en cas de conflit de version, il est très délicat de réaliser la fusion du fichier à la main. 3. La consommation des players : tic.rtl.fr Nom : tic.rtl.fr Besoin : Mesurer l audience des players live des trois radios, RTL, RTL 2 et Fun Radio. Etat actuel : échec Technologies utilisées : Java, Spring MVC, MongoDB 3.1 Contexte Les mesures d audience sont essentielles dans les métiers de la radio, car ils permettent de négocier le prix des spots publicitaires, la principale source de revenus de l entreprise. Actuellement, les mesures d audience 5 Service centralisé d identification et d authentification à un réseau d ordinateurs utilisant le système Windows, mis en place à RTL 38

39 des players live des 3 radios sont réalisées avec la technologie estat, un produit de la société Mediamétrie. Cette technologie ayant un coût assez élevé, l idée du projet était de construire un prototype d application avec les mêmes fonctionnalités de base qu estat pour tester la faisabilité de réalisation d une solution de remplacement. 3.2 Fonctionnement général d une application de tracking Le modèle de fonctionnement d une telle application est assez simple : lorsque le player se connecte au flux audio, il envoie un POST HTTP sur une adresse de l application qui correspond à un évènement début. 6 L application enregistre cet évènement, et répond avec un cookie qui permet d identifier la session de lecture. Tant que le player est en lecture, il envoie un évènement début à l application à intervalles réguliers. L application qui reçoit l appel vérifie si un cookie est attaché, si c est le cas la session peut alors être identifiée et sa durée d écoute est mise à jour. S il n y a pas de cookie, on en déduit qu il s agit d une nouvelle session. Lors de la première mise en production de l application, nous nous sommes rendus compte qu un nombre conséquent de sessions n étaient pas suivies au-delà du premier évènement début. Nous en avons déduit qu une part non négligeable d utilisateurs n autorisaient pas le stockage de cookies dans leur navigateur. Nous avons donc rajouté une règle de comparaison de l adresse IP pour effectuer le suivi des sessions. Cette règle a ses limites car certains réseaux ont une unique adresse IP de sortie, et donc les sessions de plusieurs utilisateurs peuvent être confondues. C est pourquoi la règle d identification par cookie est prioritaire lorsque celui-ci est présent. Les sessions sont engistrées dans une base MongoDB, particulièrement adaptée pour répondre à ce type de problématique car il est possible de les capper, c est-à-dire de définir une limite haute sur l espace que peut prendre la base. Lorsque cette limite est atteinte, la base remplace les enregistrements les plus anciens par les nouveaux. En effet, le but n était pas de conserver l archive de toutes les connexions au flux audio, mais plutôt de conserver des métriques globales, comme le nombre d utilisateurs connectés simultanément ou la durée moyenne d une session d écoute. Les données brutes étaient donc retraitées régulièrement pour en extraire ces métriques et les présenter sous forme de graphes. 3.3 Challenge technique Lors de sa mise en production, l application a remonté une moyenne de sessions quotidiennes par lecteur, pour une charge sur le serveur autour de 500 requêtes par seconde. L importance du volume de données à entraîné plusieurs problèmes de performance. La première stratégie était de traiter toutes les requêtes en temps réel pour mettre à jour les métriques, ce qui n était pas viable car il fallait plusieurs minutes au serveur pour répondre lorsque l on souhaitait afficher le graphique. Dans un deuxième temps, les événements étaient stockés immédiatement, mais traités de manière asynchrone : nous avons pris la décision de ne plus afficher les données en temps réel mais avec un décalage de quelques heures pour assurer un temps de chargement de la page raisonnable. Cependant, la base de données grossissant de manière non négligable, nous avons été confrontés au problème du stockage dans le temps des données. Finalement, par manque de temps, le projet a été laissé de côté. 6 ou témoin de connexion, suite d informations envoyée par un serveur HTTP à un client HTTP, que ce dernier retourne lors de chaque interrogation du même serveur HTTP 39

40 4. Nouveau site thématique : pronostics.rtl.fr Nom : pronostics.rtl.fr Besoin : Site de concours de pronostics sur les matches de football de Ligue 1 Etat actuel : en production Technologies utilisées : Java, Spring MVC, MongoDB 4.1 Contexte Une des tâches de RTLNet est de produire les sites thématiques de la radio. En se basant sur le principe d un de ces sites ayant réussi à fidéliser son public dans un domaine de niche - les pronostics de courses hippiques avec onrefaitlescourses.rtl.fr - l idée était de proposer un produit similaire dans un domaine plus grand public : le football, et plus particulièrement, le championnat de Ligue 1. Les données nécéssaires concernant le championnat sont fournies par un partenaire, qui met à notre disposition un flux XML avec les rencontres, les joueurs, ainsi que les résultats en temps réel. Un job en cron permet de mettre régulièrement à jour notre propre base de données avec ces informations. 4.2 Modèle de données Selon les règles du jeu, il est donc possible de parier sur les débouchés (égalité, victoire ou défaite de l équipe à domicile) sur tout ou une partie des matches d une journée de championnat. Sur un match par journée, il est également possible de pronostiquer le score, et les buteurs. Cela permet aux joueurs de gagner des points et d être classés en conséquence. Il y a deux types de classements : un classement par manche, qui correspond à 4 journées de championnat et un classement sur toute la saison. Pour répondre à ces règles, le modèle de données mis en place est le suivant : 40

41 Séparer l objet Pari de l objet Rang permet de séparer la partie persistence du formulaire de jeu de la partie calcul des points et classements. Ainsi, en cas de problème dans l implémentation de l algorithme de traitement, il est possible de relancer tous les calculs de points et de classement car les données de départ ne sont pas altérées. L objet Rang contient également un certain nombre de statistiques, comme le nombre total de bons pronostics du joueur sur la période. La référence à la compétition dans les objets du modèle permet d imaginer facilement une extension du jeu à d autres compétitions que la ligue 1, et même à d autres sports que le football. 4.3 Algorithmes Le développement par les tests a été utilisé pour l algorithme de calcul et de classement. Cette technique a été particulièrement appréciée lorsqu il a fallu changer certaines règles du jeu peu après le lancement officiel du site, car elle nous a rassuré sur le fait que nous n avions pas cassé la mécanique du jeu avec nos modifications. public static FootballBetEarnings computeearnings(footballbetpronostic pronostic, FootballGame game, String favoriteteamexternalid) { FootballBetEarnings result = new FootballBetEarnings(); if (game.getresult() == null pronostic == null pronostic.getgameoutcome() == null game.ispostponed()) { return null; } result.setexplanation(game.getliteralfullresult() + " :"); if (game.hasoutcome(pronostic.getgameoutcome())) { result.increaseamount("résultat", game.isgameoftheday()? FootballEarnings.GAMEOFTHEDAY_GAME_OUTCOME : FootballEarnings.GAME_OUTCOME); result.setgoodpronosticcount(1); if (game.hasteam(favoriteteamexternalid)) { result.increaseamount("bonus équipe favorite", FootballEarnings.FAVORITE_TEAM_BONUS); result.increasegoodpronosticcountforfavoriteteam(); } } else { result.increaseamount("résultat", game.isgameoftheday()? FootballBetCharges.GAMEOFTHEDAY_GAME_OUTCOME : FootballBetCharges.GAME_OUTCOME); } if (game.isgameoftheday()) { if (pronostic.hasscore()) { int scoreearnings = FootballBetCharges.SCORE; if (game.hasoutcome(pronostic.getgameoutcome())) { if (game.hasscore(pronostic.getscore())) { scoreearnings = FootballEarnings.SCORE; } else { scoreearnings = 0; } } } result.increaseamount("score", scoreearnings); if (pronostic.hasstrikers()) { result.updatestrikersearnings(pronostic, game.getresult()); } } return result;} Algorithme de calcul des points pour un match 41

42 @Test public void computeearningsforgame1maxscore() { FootballBetPronostic pronostic = FootballBetPronostic.forGame(gameOfTheDay1()); int expectedamount = 0; String explanation = "Webdev 2 1 Studio (56' Damien, 87' Olivier, 88' Fred)"; pronostic.setgameoutcome(footballgameoutcome.home_victory); expectedamount += FootballEarnings.GAMEOFTHEDAY_GAME_OUTCOME + FootballEarnings.FAVORITE_TEAM_BONUS; explanation += " : résultat +" + FootballEarnings.GAMEOFTHEDAY_GAME_OUTCOME; explanation += " bonus équipe favorite +" + FootballEarnings.FAVORITE_TEAM_BONUS; pronostic.setscore(new FootballScore(2, 1)); expectedamount += FootballEarnings.SCORE; explanation += " score +" + FootballEarnings.SCORE; pronostic.withhomestrikers(damien, olivier); pronostic.withawaystrikers(fred); expectedamount += 3 * FootballEarnings.STRIKER; explanation += " buteurs +" + 3 * FootballEarnings.STRIKER; FootballBetEarnings result = FootballEarningsComputer.computeEarnings(pronostic, gameoftheday1(), "webdev"); } assertthat(result.getamount()).isequalto(expectedamount); assertthat(result.getgoodpronosticcount()).isequalto(1); assertthat(result.getguessedstrikercount()).isequalto(3); assertthat(result.getgoodpronosticcountforfavoriteteam()).isequalto(1); assertthat(result.getexplanation()).isequalto(explanation); Un test unitaire associé à l algorithme Le processus total de classement des joueurs à l issue d une journée de championnat est le suivant : - une phase de calcul des points, de complexité linéaire par rapport au nombre de joueurs qui ont participé dans l objet Pari - une première phase de mise à jour des objets Classement des participants avec les points gagnés, de complexité linéaire également. - les participants sont classés. Pour le classement, on utilise directement la base MongoDB avec une clause order. Avec un index sur les colonnes pertinentes ce processus est également linéaire. Passer par la base nous assure de la scalabilité de notre algorithme de tri : lorsqu on trie une liste dans le code Java tous les objets sont montés en mémoire. - deuxième phase de mise à jour des objets Classement, car certains points bonus dépendent du rang de classement des joueurs - les participants sont reclassés pour prendre en compte les points bonus éventuellement attribués Ce processus est donc potentiellement long selon le nombre de participants, c est pourquoi il a été prévu sur le site des mécaniques d affichage pour signaler aux usagers que le calcul est en cours. 42

43 4.4 Prototype Pour ce projet, un prototype a été réalisé rapidement afin de mettre en place et de tester les mécaniques du jeu. En l absence des composants graphiques du studio, le prototype a été réalisé avec Bootstrap (http://getbootstrap.com/), une sorte de librairie CSS libre réalisée par l équipe de Twitter, permettant d obtenir un graphisme élégant, sans effort. Cet outil est particulièrement utile pour le développement de prototypes ou d interfaces administrateur. Formulaire de pari réalisé avec Bootstrap Page de classement réalisée avec Bootstrap 43

44 Design final du site 4.5 Conclusion Le lancement officiel du produit a eu lieu le jour du premier match de la saison de Ligue 1, le 9 août En septembre, le jeu enregistrait une moyenne de 1200 paris par journée de championnat pour une fréquentation quotidienne moyenne de 800 visiteurs uniques. 44

45 Métriques Google Analytics depuis le lancement du site jusqu au 7 septembre On observe sur le graphique que le site enregistre un pic de fréquentation tous les vendredis, ce qui correspond au premier match de chaque journée de championnat. En effet, des mails de relance sont envoyés à toutes les personnes ayant déjà joué au moins une fois mais n ayant pas encore parié sur la journée en cours, le vendredi avant le premier match. Ces mails ont un impact important, ce qui montre que les gens qui ont joué sont plutôt enclins à revenir. Cette tendance est aussi visible lorsque l on s intéresse à la proportion de nouveaux visiteurs par rapport aux visiteurs qui reviennent (45/55 %). Cependant le bilan actuel du projet est malgré tout mitigé, les objectifs de fréquentation d un tel produit étant plutôt fixés sur une base de paris par journée de championnat. 5. Refonte du CMS interne Revo Nom : revo.rtl.fr Besoin : Refonte du gestionnaire de contenu, pour obtenir une application plus ergonomique, plus agréable à utiliser et avec un code plus facilement maintenable Etat actuel : en cours Technologies utilisées : Java, Spring MVC, MongoDB GWT, Bootstrap 5.1 Contexte Le gestionnaire de contenus des sites RTLNet a été entièrement développé en interne pour répondre à 45

46 des problématiques précises pour chaque marque utilisatrice. Il a été lancé il y a 5 ans, et modifié continuellement depuis. Au fil des années et des demandes, celui-ci s est enrichi de nombreuses fonctionnalités dont certaines ne sont plus utilisées et polluent l expérience utilisateur. Typiquement, lorsqu il crée un article, un journaliste doit actuellement uploader 6 formats différents pour une même image, et les interfaces sont remplies de boutons et de champs de recherches dont il est parfois difficile de déceler le sens. Le but du projet de refonte était donc d épurer l interface en se posant la question de l utilité et de l usage de chaque fonctionnalité lors de la migration de chaque module. Une reflexion sur l interface utilisateur a également été menée en essayant de créer des composants graphiques facilitant la vie des usagers. L occasion a également été saisie de passer à un graphisme Bootstrap, ce qui a réduit le coût de développement d une charte graphique à quasiment 0, tout en présentant un design moderne et sympathique. 5.2 Outil utilisé : GWT Google Web Toolkit (GWT) La première version de Revo a été réalisée avec GWT, une suite d outils développée par Google permettant de compiler du code écrit en Java en Javascript. Ainsi, il est possible d obtenir une interface client dynamique en Javascript en profitant des facilités du langage Java pour le développement et la maintenance du code. Pour la refonte, le framework Dart (https://www.dartlang.org/) a été envisagé, mais n a pas été jugé assez mature, le nouveau projet se base donc également sur GWT, bien que son développement ait été mis de côté par Google. Néanmoins, la refonte a été l occasion d utiliser la dernière version de GWT qui apporte de nouvelles fonctionnalités intéressantes, notamment l UIBinder. L UIBinder permet de créer des interfaces graphiques avec une structure très proche de l HTML, ce que ne permettaient pas les premières versions de GWT. Avant, il était nécessaire d instancier une classe Java pour chaque composant graphique, à la manière de la suite d outils graphiques Java Swing. Maintenant, il est possible de décrire totalement un module dans un fichier pseudo-html. <!DOCTYPE ui:uibinder SYSTEM "http://dl.google.com/gwt/dtd/xhtml.ent"> <ui:uibinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:revo='urn:import:fr.rtl.revo.commons.client.ui' xmlns:field='urn:import:fr.rtl.revo.commons.client.ui.field'> <ui:style>.controls { padding top: 5px; 46

47 } </ui:style> <g:htmlpanel> <form class="form horizontal" onsubmit="return false;"> <g:htmlpanel ui:field="idpanel" stylename="form group"> <label class="col lg 3 control label">id</label> <div class="col lg 9 {style.controls}"> <revo:objectidlabel ui:field="id"/> </div> </g:htmlpanel> <div class="form group"> <label class="col lg 3 control label">name</label> <g:htmlpanel stylename="col lg 6" > <field:textfield ui:field="name" maxlength="255" /> </g:htmlpanel> </div> <g:htmlpanel> Extrait d UIBinder public class SecurityGroupsEditor extends Composite implements EntityEditor<GwtRevoGroup> { interface MyUiBinder extends UiBinder<HTMLPanel, SecurityGroupsEditor> { } private static MyUiBinder uibinder = GWT.create(MyUiBinder.class); interface Driver extends SimpleBeanEditorDriver<GwtRevoGroup, SecurityGroupsEditor> { } private final HTMLPanel ObjectIdLabel TextField name; public SecurityGroupsEditor() { initwidget(uibinder.createandbindui(this)); driver = GWT.create(Driver.class); driver.initialize(this); name.setrequired(true); RevoGroupRevoServiceAsync service = GWT.create(RevoGroupRevoService.class); } } Classe Java associée Les champs ui:field= permettent de référencer l élément dans le code Java avec une Il existe une librairie native de composants basiques comme les <div>, les <button>, etc Il est également possible 47

48 de créer ses propres composants et de les réutiliser dans les UIBinder. C est le cas du composant <field:textfield> dans l exemple, il s agit d un champ texte customisé pour enforcer une longueur maximale. Cette approche permet de se concentrer sur la partie fonctionnelle dans le code, et donc de réduire de manière conséquente celui-ci. 5.3 Programmation Orientée Aspect 7 Nous avons utilisé la Programmation Orientée Aspect (AOP) pour résoudre des problématiques telles que la nécessité de garder une trace de tous les appels aux bases de données. Cela permet ainsi de retrouver les appels qui ont posé problème dans le cas de bug par exemple. Les aspects sont alors appelés grâce à la définition de points d insertion dans le code. L idée est de définir un système d expressions rationnelles pour les points d insertion, de manière à ne pas devoir tous les insérer manuellement dans public class LogAspect && target(service)") public void method(joinpoint joinpoint, RemoteService service) throws Throwable { log(joinpoint, service); } } public void log(joinpoint joinpoint, RemoteService service) throws Throwable { // save logs } Dans ce cas, l aspect de log est exécuté avant les méthodes de toutes les classes - contenant le mot Service dans leur nom - situées dans un package server de Revo - qui implémentent l interface RemoteService Cet aspect résout une problématique générale à toute l application mais il est également possible d écrire des aspects sous forme d annotations à appliquer ponctuellement sur une méthode. C est la stratégie qui a été choisie pour la sécurisation des appels à la base. Chaque action demandant des permissions particulières, l aspect de sécurité est appliqué à la main lors du développement de = "netia") public class NetiaExportedSoundRevoServiceImpl implements NetiaExportedSoundRevoService { Exemple d utilisation de l aspect Security 5.4 Flat design L utilisation de Bootstrap a grandement contribué à la clarification de l interface. Nous avons utilisé 7 Paradigme de programmation qui permet de traiter séparément les préoccupations transverses qui relèvent souvent de la technique des préoccupations métier constituant le coeur de l application (http://fr.wikipedia.org/wiki/programmation_orient%c3%a9e_aspect) 48

49 Bootstrap 3, qui implémente un flat design, c est-à-dire sans effet de relief sur les composants. Bootstrap 3 fournit également des outils pour obtenir un site responsive, dont l interface s adapte à la taille de l écran de l utilisateur. Cette fonctionnalité est très importante car les utilisateurs de Revo souhaitent pouvoir s en servir sur tablettes et téléphones. Si le site se dégrade de manière très acceptable sur tablette, certaines interfaces restent malgré tout trop riches pour offrir une expérience utilisateur satisfaisante sur le petit écran d un téléphone portable. Page d accueil de l ancienne version Page de modules de la nouvelle version 49

50 Tous les formulaires ont été revus afin de les rendre plus lisibles, un seul champ de recherche a par exemple été laissé en haut de la liste des objets d un module, les champs de recherche avancée ont été isolés dans une pop-up. Pop-up de recherche avancée 5.5 Fonctionnalités HTML 5 Il est possible dans GWT de créer directement des fonctions en Javascript avec le mot-clé native. Cela permet de tirer partie des API Javascript, comme par exemple la File API qui permet de gérer les évènements de drag&drop en HTML 5. Cela nous a permis de créer un module d upload de fichiers images en glisser/déposer qui a été très bien accueilli par les utilisateurs. private native JavaScriptObject newformdata(string domain, JsArrayString tags, String maxwidth, String maxheight)/* { var formdata = new FormData(); formdata.append('domain', domain); formdata.append('tags', tags); formdata.append('maxwidth', maxwidth); formdata.append('maxheight', maxheight); return formdata; } */; Fonction Javascript incluse dans une classe Java 5.6 Conclusion Le CMS Revo compte actuellement plus de 350 comptes utilisateurs, avec des disparités dans les fréquences d utilisation. L application enregistre plusieurs dizaines de connexions par jour. La refonte se fait en collaboration avec les utilisateurs, qui ont assisté à une présentation du projet et ont été invité à communiquer leurs besoins et les éventuels problèmes avec la nouvelle interface. 50

Professeur-superviseur Alain April

Professeur-superviseur Alain April RAPPORT TECHNIQUE PRÉSENTÉ À L ÉCOLE DE TECHNOLOGIE SUPÉRIEURE DANS LE CADRE DU COURS LOG792 PROJET DE FIN D ÉTUDES EN GÉNIE LOGICIEL PHP PROJECT TRACKER GESTIONNAIRE DE PROJECT LOGICIEL LOUIS-ALEXANDRE

Plus en détail

Créez votre premier site web De la conception à la réalisation

Créez votre premier site web De la conception à la réalisation Chapitre 1 : Introduction A. Introduction 17 Chapitre 2 : Les langages A. L objectif 21 B. L HTML 21 1. L état des lieux 21 2. Les éléments HTML 21 3. Les attributs 22 4. Les caractères 23 5. Les espaces

Plus en détail

Rapport d Étude Pratique : Site Web pour conférence scientifique

Rapport d Étude Pratique : Site Web pour conférence scientifique Rapport d Étude Pratique : Site Web pour conférence scientifique Quentin Dufour, Thomas Hareau, Laurent Aymard, Jean Chorin Encadrant : Jean-François Dupuy 2015 Site Web de conférence scientifique 2 Résumé

Plus en détail

Tutoriel Ionic framework

Tutoriel Ionic framework INGÉNIEURS EN SCIENCES INFORMATIQUES ADAPTATION DES INTERFACES A L ENVIRONNEMENT Tutoriel Ionic framework Tutoriel et présentation du framework IONIC : technologie permettant la réalisation d applications

Plus en détail

INF2015 Développement de logiciels dans un environnement Agile. Examen final 24 avril 2014 17:30 à 20:30

INF2015 Développement de logiciels dans un environnement Agile. Examen final 24 avril 2014 17:30 à 20:30 Examen final 24 avril 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Qu'est-ce qu'un test de régression? Question #2 5% Selon extreme Programming,

Plus en détail

ELASTICSEARCH MAINTENANT EN VERSION 1.4

ELASTICSEARCH MAINTENANT EN VERSION 1.4 ELASTICSEARCH MAINTENANT EN VERSION 1.4 firm1 29 octobre 2015 Table des matières 1 Introduction 5 2 Les principaux atouts 7 2.1 Moteur de recherche vs Moteur d indexation.................... 7 2.2 Du

Plus en détail

Reporting Services - Administration

Reporting Services - Administration Reporting Services - Administration Comment administrer SQL Server Reporting Services Cet article a pour but de présenter comment gérer le serveur depuis le "portail" de Reporting Services. Nous verrons

Plus en détail

Rapidité, économies et sécurité accrues : comment améliorer la souplesse, le coût total de possession (TCO) et la sécurité grâce à une planification

Rapidité, économies et sécurité accrues : comment améliorer la souplesse, le coût total de possession (TCO) et la sécurité grâce à une planification Rapidité, économies et sécurité accrues : comment améliorer la souplesse, le coût total de possession (TCO) et la sécurité grâce à une planification des tâches sans agent Livre blanc rédigé pour BMC Software

Plus en détail

Créez et administrez vos sites Web

Créez et administrez vos sites Web Joomla! 3.3 Créez et administrez vos sites Web Didier MAZIER Table des matières.. 1 Chapitre 1 : Découvrir Joomla! A. Les raisons de créer un site sous Joomla!.. 9 B. Se documenter sur Joomla! 9 C. La

Plus en détail

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Les formations. Développeur Logiciel. ENI Ecole Informatique

Les formations. Développeur Logiciel. ENI Ecole Informatique page 1/8 Titre professionnel : Inscrit au RNCP de Niveau III (Bac + 2) (J.O. du 19/02/13) 24 semaines + 8 semaines de stage (uniquement en formation continue) Développer une application orientée objet

Plus en détail

INTEGRATEUR DEVELOPPEUR

INTEGRATEUR DEVELOPPEUR www.emweb.fr INTEGRATEUR DEVELOPPEUR FORMATION ELIGIBLE AU DIF/CIF DURÉE : 700 h de formation PRE REQUIS Avoir un esprit logique Etre motivé(e)! OBJECTIF A l issue de cette formation, vous serez capable

Plus en détail

Institut Paul Hankar

Institut Paul Hankar BES WEBDESIGNER ACTIVITE En utilisant des outils informatiques, le web designer réalise des éléments graphiques fixes ou animés, en 2 ou 3 dimensions, en respectant le schéma de navigation du site et sa

Plus en détail

Serveur d intégration continue Jenkins et d analyse de code Sonar couplés à la forge logiciel SourceSup

Serveur d intégration continue Jenkins et d analyse de code Sonar couplés à la forge logiciel SourceSup Serveur d intégration continue Jenkins et d analyse de code Sonar couplés à la forge logiciel SourceSup Sébastien MEDARD GIP RENATER 263 avenue du Général Leclerc CS 74205 35042 Rennes Cedex Résumé L intégration

Plus en détail

Compte-Rendu SDL. «Reprise de l application de gestion de listes de présences des alternants»

Compte-Rendu SDL. «Reprise de l application de gestion de listes de présences des alternants» Compte-Rendu SDL Auteurs : BOUTROUILLE Alexis BAILLEUL Pierre Tuteur : Ioan Marius Bilasco «Reprise de l application de gestion de listes de présences des alternants» Master MIAGE 1 Année 2012/2013 1 Remerciements

Plus en détail

Projet de Java Enterprise Edition

Projet de Java Enterprise Edition Projet de Java Enterprise Edition Cours de Master 2 Informatique Boutique en ligne L objectif du projet de JEE est de réaliser une application de boutique en ligne. Cette boutique en ligne va permettre

Plus en détail

Présentation. 2010 Pearson Education France Adobe Flash Catalyst CS5 Adobe Press

Présentation. 2010 Pearson Education France Adobe Flash Catalyst CS5 Adobe Press Présentation 1 Adobe Flash Catalyst CS5 vous permet de produire du contenu totalement interactif d une grande qualité graphique pour le web ou le bureau sans écrire une seule ligne de code. Cette leçon

Plus en détail

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage Technologies du Web Créer et héberger un site Web Page 1 / 26 Plan Planification Choisir une solution d hébergement Administration Développement du site Page 2 / 26 Cahier des charges Objectifs du site

Plus en détail

Projet DataCity. Documentation Utilisateur. Version 4

Projet DataCity. Documentation Utilisateur. Version 4 Projet DataCity Documentation Utilisateur Version 4 Cyril Moralès Marc Soufflet Lionel Hamsou Cédric Merouani Cyntia Marquis Ryan Legasal Guillaume de Jabrun morale_c souffl_m hamsou_l meroua_c marqui_c

Plus en détail

Atelier E-TOURISME 2013. Optimiser la visibilité de son site sur les moteurs de recherche. ecotourismepro.jimdo.com

Atelier E-TOURISME 2013. Optimiser la visibilité de son site sur les moteurs de recherche. ecotourismepro.jimdo.com Atelier E-TOURISME 2013 Optimiser la visibilité de son site sur les moteurs de recherche ecotourismepro.jimdo.com Optimiser la visibilité de son site sur les moteurs de recherche Audrey Piquemal Chargée

Plus en détail

PROJET D INFORMATISATION DE LA GESTION DES ABSENCES EN STARTER

PROJET D INFORMATISATION DE LA GESTION DES ABSENCES EN STARTER Année 2008/2009 PROJET D INFORMATISATION DE LA GESTION DES ABSENCES EN STARTER Licence Professionnelle Système informatique et logiciel Responsable du projet : Françoise GREFFIER SOMMAIRE I. PRESENTATION

Plus en détail

Génie logiciel, conduite de projets... Mémo. Utilisation de subversion et de forge. Bruno Zanuttini, Jean-Luc Lambert, François Rioult

Génie logiciel, conduite de projets... Mémo. Utilisation de subversion et de forge. Bruno Zanuttini, Jean-Luc Lambert, François Rioult Université de Caen Basse-Normandie Département d informatique Tous diplômes, 2012 2013 Unité : N/A Génie logiciel, conduite de projets... Mémo. Utilisation de subversion et de forge Bruno Zanuttini, Jean-Luc

Plus en détail

INTRODUCTION À L INJECTION DE DÉPENDANCES EN JAVA

INTRODUCTION À L INJECTION DE DÉPENDANCES EN JAVA INTRODUCTION À L INJECTION DE DÉPENDANCES EN JAVA Andr0 29 octobre 2015 Table des matières 1 Introduction 5 2 Qu est ce que l injection de dépendances? 7 2.1 Mais une dépendance, c est quoi?.........................

Plus en détail

Comparaison Entre la technologie «TAG» et l analyse de fichiers logs

Comparaison Entre la technologie «TAG» et l analyse de fichiers logs Comparaison Entre la technologie «TAG» et l analyse de fichiers logs Laurent Patureau Co-fondateur d IDfr Editeur de Wysistat 16, Boulevard Winston CHURCHILL 25 000 BESANCON Tel : 03 81 48 03 05 Fax :

Plus en détail

Visual Studio 2013 Concevoir et développer des projets Web, les gérer avec TFS 2013

Visual Studio 2013 Concevoir et développer des projets Web, les gérer avec TFS 2013 Introduction 1. Présentation du cas d étude 13 1.1 Présentation générale 13 1.2 Présentation des applications 13 2. Déroulement du projet 14 3. Pré-requis et fondamentaux techniques à connaître 15 3.1

Plus en détail

Sommaire. 1 Introduction 19. 2 Présentation du logiciel de commerce électronique 23

Sommaire. 1 Introduction 19. 2 Présentation du logiciel de commerce électronique 23 1 Introduction 19 1.1 À qui s adresse cet ouvrage?... 21 1.2 Comment est organisé cet ouvrage?... 22 1.3 À propos de l auteur... 22 1.4 Le site Web... 22 2 Présentation du logiciel de commerce électronique

Plus en détail

Les formations. Développeur Logiciel. ENI Ecole Informatique

Les formations. Développeur Logiciel. ENI Ecole Informatique page 1/5 Titre professionnel : Reconnu par l Etat de niveau III (Bac), inscrit au RNCP (arrêté du 12/10/07, J.O. n 246 du 23/10/07) (32 semaines) Unité 1 : Structurer une application 6 semaines Module

Plus en détail

Symfony 2. 1.Définition de symfony 2. 2.Installation. 3.Structure. 4.Symfony et les commandes

Symfony 2. 1.Définition de symfony 2. 2.Installation. 3.Structure. 4.Symfony et les commandes Symfony 2 Sommaire : 1.Définition de symfony 2 2.Installation 3.Structure 4.Symfony et les commandes 5.Le fonctionnement : le routeur (les url), les bundles, twig(templates) 6.L architecture de symfony2

Plus en détail

NVU, Notepad++ (ou le bloc-note), MySQL, PhpMyAdmin. HTML, PHP, cas d utilisation, maquettage, programmation connaissances en HTML, PHP et SQL

NVU, Notepad++ (ou le bloc-note), MySQL, PhpMyAdmin. HTML, PHP, cas d utilisation, maquettage, programmation connaissances en HTML, PHP et SQL Prise en main de NVU et Notepad++ (conception d application web avec PHP et MySql) Propriétés Intitulé long Formation concernée Matière Présentation Description Conception de pages web dynamiques à l aide

Plus en détail

Gestion du serveur WHS 2011

Gestion du serveur WHS 2011 Chapitre 15 Gestion du serveur WHS 2011 Les principales commandes Windows Home Server 2011 reprend l ergonomie de Windows 7 et intègre les principales commandes de Windows Server 2008 R2. Les commandes

Plus en détail

WordPress : Guide à l édition

WordPress : Guide à l édition WordPress : Guide à l édition WordPress : Guide à l édition... 1 Présentation... 2 1. Accès au site... 2 2. Le tableau de bord... 2 3. Editez les contenus... 4 Quelle est la différence entre les pages

Plus en détail

Cursus 2013 Déployer un Content Management System

Cursus 2013 Déployer un Content Management System Cursus 2013 Déployer un Content Management System Les critères d évaluation d un CMS Les utilisateurs, après examen de la taille de la base d utilisateurs en France. La communauté, selon son dynamisme

Plus en détail

Premières applications. Web 2.0. avec Ajax et PHP. J e a n - M a r i e D e f r a n c e. Groupe Eyrolles, 2008, ISBN : 978-2-212-12090-5

Premières applications. Web 2.0. avec Ajax et PHP. J e a n - M a r i e D e f r a n c e. Groupe Eyrolles, 2008, ISBN : 978-2-212-12090-5 Premières applications Web 2.0 avec Ajax et PHP J e a n - M a r i e D e f r a n c e Groupe Eyrolles, 2008, ISBN : 978-2-212-12090-5 8 Applications Ajax-PHP synchrones Pour commencer simplement, je vous

Plus en détail

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de En partenariat avec Webinar Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL avec la participation de 19 mars 2013 Qui sommes-nous? INTRODUCTION

Plus en détail

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS Avant de commencer 1. Introduction 15 2. HTML5 oui, mais pas que... 15 2.1 HTML5 16 2.2 JavaScript 17 2.3 CSS 18 3. Les outils 18 Préparation des outils et création du projet 1. Introduction 21 2. Team

Plus en détail

EISTI. Oracle Toplink. Manuel d installation et d utilisation

EISTI. Oracle Toplink. Manuel d installation et d utilisation EISTI Oracle Toplink Manuel d installation et d utilisation VILLETTE Charles, BEQUET Pierre, DE SAINT MARTIN Cédric, CALAY-ROCHE Vincent, NAUTRE Francois 20/05/2010 Ce manuel d installation et d utilisation

Plus en détail

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse THÉMATIQUES Comprendre les frameworks productifs Découvrir leurs usages Synthèse 2 LES ENJEUX DES FRAMEWORKS D ENTREPRISE EN 2012 LE CONSTAT Ressources Recrutement Flexibilité Intérêt Montée en compétence

Plus en détail

Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009

Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009 Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009 «Web. De l intégration de pages statiques HTML à un CMS, à la dynamisation d un site grâce au Javascript et l utilisation de nouvelles technologies

Plus en détail

Point sur les solutions de développement d apps pour les périphériques mobiles

Point sur les solutions de développement d apps pour les périphériques mobiles Point sur les solutions de développement d apps pour les périphériques mobiles Par Hugues MEUNIER 1. INTRODUCTION a. Une notion importante : le responsive web design Nous sommes en train de vivre une nouvelle

Plus en détail

Marché à Procédure adaptée. Tierce maintenance applicative pour le portail web www.debatpublic.fr

Marché à Procédure adaptée. Tierce maintenance applicative pour le portail web www.debatpublic.fr Marché à Procédure adaptée Passé en application de l article 28 du code des marchés publics Tierce maintenance applicative pour le portail web www.debatpublic.fr CNDP/ 03 /2015 Cahier des clauses techniques

Plus en détail

Création d un catalogue en ligne

Création d un catalogue en ligne 5 Création d un catalogue en ligne Au sommaire de ce chapitre Fonctionnement théorique Définition de jeux d enregistrements Insertion de contenu dynamique Aperçu des données Finalisation de la page de

Plus en détail

Spring par la pratique

Spring par la pratique Spring par la pratique 2 e édition Spring 2.5 et 3.0 Arnaud Cogoluègnes Thierry Templier Julien Dubois Jean-Philippe Retaillé avec la contribution de Séverine Templier Roblou et de Olivier Salvatori Groupe

Plus en détail

la réalisation d'un site d'inscriptions

la réalisation d'un site d'inscriptions Rapport du projet la réalisation d'un site d'inscriptions Réaliser par : Fatimaezzahra Yazough Année :2014 /2015 1/9 Yazough INTRODUCTION Le but de ce projet et de réaliser une maquette de site web pour

Plus en détail

BES WEBDEVELOPER ACTIVITÉ RÔLE

BES WEBDEVELOPER ACTIVITÉ RÔLE BES WEBDEVELOPER ACTIVITÉ Le web developer participe aux activités concernant la conception, la réalisation, la mise à jour, la maintenance et l évolution d applications internet/intranet statiques et

Plus en détail

Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium. Comparatif Choco/Drools dans le cadre du projet JASMINe

Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium. Comparatif Choco/Drools dans le cadre du projet JASMINe Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium dans le cadre du projet JASMINe Avril 2008 Table des matières 1 Introduction 3 1.1 Rappel sur JASMINe.......................................

Plus en détail

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE 1 Introduction aux tests de performance et de charge Sommaire Avertissement...2 Aperçu...3 1. Création du scénario de navigation web (Test web)...4 2.

Plus en détail

CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, RhoMobile)

CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, RhoMobile) INGENIEUR EN SCIENCES INFORMATIQUES RAPPORT D ETUDE TECHNOLOGIQUE SUR LES SOLUTIONS WEB CROSS PLATEFORM MOBILE DEVELOPMENT (Phonegap, ) Student : Jiachen NIE Parcours: IHM Subject : Adaptation des Interfaces

Plus en détail

Avant-Propos Sencha Touch

Avant-Propos Sencha Touch Avant-Propos Développeurs web, vous qui souhaitez vous diversifier et appréhender simplement le développement mobile, mais redoutez un apprentissage long d un langage que vous ne connaissez pas, vous allez

Plus en détail

Plan. 1 Cycles de développement. 2 Méthodes agiles, principes généraux. 3 Comment se passe un Sprint?

Plan. 1 Cycles de développement. 2 Méthodes agiles, principes généraux. 3 Comment se passe un Sprint? Plan nitiation au Génie Logiciel Cours 5 ntroduction au π développement agile T. Genet (genet@irisa.fr) (STC/RSA) GEN-5 1/ 28 T. Genet (genet@irisa.fr) (STC/RSA) GEN-5 2/ 28 Bibliographie Plan L informatique

Plus en détail

AlterPoker.com. Conception

AlterPoker.com. Conception Conception AlterPoker AlterPoker.com Conception Date de mise à jour : 16 / 06 / 2013 Version : 1.0 Nom VIAU Antoine Numéro d auditeur 1/18 Table des matières AlterPoker.com... 1 Conception... 1 1. Objectif

Plus en détail

Joomla : un système de gestion de contenu

Joomla : un système de gestion de contenu CHAPITRE 2 Joomla : un système de gestion de contenu Si SGC est l abréviation française pour système de gestion de contenu, l abréviation CMS de l anglais Content Management System est le terme le plus

Plus en détail

Offre FlowUnit by CGI Tests automatisés de flux de données inter-applicatifs

Offre FlowUnit by CGI Tests automatisés de flux de données inter-applicatifs Offre FlowUnit by CGI Tests automatisés de flux de données inter-applicatifs CGI Group Inc. 2013 Agenda 1 2 3 4 5 6 7 Problématiques et enjeux Solutions et fonctionnalités Concepts Exécution et rapport

Plus en détail

SQL Server Installation Center et SQL Server Management Studio

SQL Server Installation Center et SQL Server Management Studio SQL Server Installation Center et SQL Server Management Studio Version 1.0 Grégory CASANOVA 2 SQL Server Installation Center et SQL Server Management Studio [03/07/09] Sommaire 1 Installation de SQL Server

Plus en détail

Unité de formation 1 : Structurer une application. Durée : 3 semaines

Unité de formation 1 : Structurer une application. Durée : 3 semaines PROGRAMME «DEVELOPPEUR LOGICIEL» Titre professionnel : «Développeur Logiciel» Inscrit au RNCP de niveau III (Bac+2) (JO du 23 Octobre 2007) (32 semaines) Unité de formation 1 : Structurer une application

Plus en détail

Joomla! Création et administration d'un site web - Version numérique

Joomla! Création et administration d'un site web - Version numérique Avant-propos 1. Objectifs du livre 15 1.1 Orientation 15 1.2 À qui s adresse ce livre? 16 2. Contenu de l ouvrage 17 3. Conclusion 18 Introduction 1. Un peu d histoire pour commencer... 19 1.1 Du web statique

Plus en détail

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1. Plateforme PAYZEN Intégration du module de paiement pour la plateforme Magento version 1.3.x.x Paiement en plusieurs fois Version 1.4a Guide d intégration du module de paiement Multiple Magento 1/24 SUIVI,

Plus en détail

Rapport projet TOP Test automatique de la plate-forme Grid 5000

Rapport projet TOP Test automatique de la plate-forme Grid 5000 Rapport projet TOP Test automatique de la plate-forme Grid 5000 Arthur Garnier Encadré par Lucas Nussbaum 1 er Juin 2015 Table des matières 1 Contexte 2 2 Description du problème 3 3 Présentation du travail

Plus en détail

Développer une application pour iphone et ipad

Développer une application pour iphone et ipad 22 Développer une application pour iphone et ipad Dans ce chapitre, nous abordons la création d applications pour ipad, iphone et ipod Touch à partir de documents au format Flash codés en ActionScript

Plus en détail

TECHNIQUES D INTÉGRATION MULTIMÉDIA DIFFUSION EN LIGNE (582-KGB-JQ) 1-3-2

TECHNIQUES D INTÉGRATION MULTIMÉDIA DIFFUSION EN LIGNE (582-KGB-JQ) 1-3-2 TECHNIQUES D INTÉGRATION MULTIMÉDIA DIFFUSION EN LIGNE (582-KGB-JQ) 1-3-2 Enseignant : Serge Parent Bureau : 841.3G Téléphone : 418-547-2191, poste 7134 Courriel: serge.parent@cjonquiere.qc.ca Élève 2

Plus en détail

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Les forges logicielles et leurs outils. Avec SourceSup en exemple

Les forges logicielles et leurs outils. Avec SourceSup en exemple Les forges logicielles et leurs outils Avec SourceSup en exemple 1 Naissance des forges Avant Chacun installait les outils dont il avait besoin Peu de mutualisation des outils et technologies Collaboration

Plus en détail

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013 Rapport de stage Création d un site web Stage du 20/01/2013 au 21/02/2013 Auteur : Antoine Luczak Tuteur professionnel : M. Tison Tuteur scolaire : Mme Girondon Année scolaire : 2013/2014 1 Table des matières

Plus en détail

SAS Studio SAS pour tous, SAS sur n importe quel périphérique.

SAS Studio SAS pour tous, SAS sur n importe quel périphérique. SAS Studio SAS pour tous, SAS sur n importe quel périphérique. SAS Studio est le dernier né des produits SAS, avec son utilisation, écrire et exécuter du code SAS n aura jamais été aussi simple. Il a pour

Plus en détail

Introduction MOSS 2007

Introduction MOSS 2007 Introduction MOSS 2007 Z 2 Chapitre 01 Introduction à MOSS 2007 v. 1.0 Sommaire 1 SharePoint : Découverte... 3 1.1 Introduction... 3 1.2 Ce que vous gagnez à utiliser SharePoint... 3 1.3 Dans quel cas

Plus en détail

Installation et configuration de base de l active Directory

Installation et configuration de base de l active Directory SCHMITT Année 2012/2014 Cédric BTS SIO Installation et configuration de base de l active Directory Description: Ce projet a pour but d installer l active directory et de créer une redondance en cas de

Plus en détail

Versus Etude Technologique

Versus Etude Technologique VS Versus Etude Technologique 1 VS Contents Introduction... 3 Présentation des technologies... 3 Phonegap... 3... 3 Pour quels besoins?... 4 Comment ça fonctionne? Les models... 4 Phonegap... 5... 6 Comparatif...

Plus en détail

AXIS Camera Station Guide d installation rapide

AXIS Camera Station Guide d installation rapide AXIS Camera Station Guide d installation rapide Copyright Axis Communications AB Avril 2005 Rev. 1.0 Référence 23793 1 Table des matières Informations importantes................................ 3 AXIS

Plus en détail

Cours en ligne Développement Java pour le web

Cours en ligne Développement Java pour le web Cours en ligne Développement Java pour le web We TrainFrance info@wetrainfrance Programme général du cours Développement Java pour le web Module 1 - Programmation J2ee A) Bases de programmation Java Unité

Plus en détail

Introduction @ 1. La gamme Microsoft Expression

Introduction @ 1. La gamme Microsoft Expression La gamme Microsoft Expression Microsoft propose déjà dans son catalogue des outils orientés graphisme ou destinés à la création de sites web. Avec l arrivée de Vista et plus précisément d une couche nommée

Plus en détail

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles Laurent PY CEO, Smartesting Laurent.py@smartesting.com @py_laurent www.smartesting.com Guillaume Coquelle Testeur,

Plus en détail

ETNA Projet de Fin d Étude 2005-2007 RimElse Cahier des charges. c Copyleft 2006, ELSE Team

ETNA Projet de Fin d Étude 2005-2007 RimElse Cahier des charges. c Copyleft 2006, ELSE Team ETNA Projet de Fin d Étude 2005-2007 RimElse Cahier des charges c Copyleft 2006, ELSE Team 18 avril 2006 Table des matières 1 Introduction 2 2 Présentation du projet 3 2.1 Une distribution Évolulable..................

Plus en détail

SOMMAIRE. Préambule... 3. 1 - Présentation... 3

SOMMAIRE. Préambule... 3. 1 - Présentation... 3 Académie de Grenoble DSI Division des Systèmes d Information 7, place Bir- Hakeim 38021 Grenoble Cedex CAHIER DES CLAUSES TECHNIQUES PARTICULIERES MARCHE N : 2012-09 OBJET : prestations de maintenance

Plus en détail

SOMMAIRE. I. Introduction 02. II. Glossaire 03 a. Glossaire technique 03 b. Glossaire fonctionnel 04

SOMMAIRE. I. Introduction 02. II. Glossaire 03 a. Glossaire technique 03 b. Glossaire fonctionnel 04 SOMMAIRE I. Introduction 02 II. Glossaire 03 a. Glossaire technique 03 b. Glossaire fonctionnel 04 III. Présentation de l'association 05 a. Présentation juridique et géographique 05 b. Présentation de

Plus en détail

Gestion de projet avec ATLAS

Gestion de projet avec ATLAS Gestion de projet avec ATLAS L3 Information projet informatique (S5) Extrait de la V1.4 (04/Nov/2014) Table des matières Mettre à jour son profil utilisateur dans Crowd et JIRA Créer des tâches, des livrables

Plus en détail

Formation au logiciel Typo3, pour les rédacteurs.

Formation au logiciel Typo3, pour les rédacteurs. 1 Formation au logiciel Typo3, pour les rédacteurs. 1 Accéder au système 2 1.1 Configuration du navigateur 2 1.2 Identification 2 2 L interface 2 2.1 Le module Web 3 2.2 Le module Media 3 2.3 Le module

Plus en détail

Résoudre les problèmes PHP, les meilleures (et les pires) techniques

Résoudre les problèmes PHP, les meilleures (et les pires) techniques Résoudre les problèmes PHP, les meilleures (et les pires) techniques Xavier Gorse Architecte - Expert PHP (ELAO) xavier.gorse@elao.com Un peu d ordre dans la maison! Toutes les lignes téléphoniques sont

Plus en détail

Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour.

Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour. Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour. Date : 10 avril 2015 Format : Conférence Speakers : Dimitri Baeli, Benjamin Degerbaix de Les Furets

Plus en détail

2013/2014. Nathan RENAULT BTS SIO SISR

2013/2014. Nathan RENAULT BTS SIO SISR 2013/2014 Nathan RENAULT Sommaire I. Active Directory (A.D.) a. Promotion du Windows Serveur en contrôleur de domaine b. Ajouts des rôles au contrôleur de domaine c. Consoles d administration MMC d. Utilisateurs

Plus en détail

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7 Sommaire 1-Introduction 2 1-1- BPM (Business Process Management)..2 1-2 J-Boss JBPM 2 2-Installation de JBPM 3 2-1 Architecture de JOBSS JBPM 3 2-2 Installation du moteur JBoss JBPM et le serveur d application

Plus en détail

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement COREYE CACHE Solution d absorption de charge pour une disponibilité et une performance optimales des applications Web En bref Architecture technique La plateforme Coreye Cache délivre la majeure partie

Plus en détail

Introduction JOOMLA. Fonctionnalités. Avantages. Hainaut P. 2013 - www.coursonline.be 1. Joomla est un système de gestion de contenu CMS open source

Introduction JOOMLA. Fonctionnalités. Avantages. Hainaut P. 2013 - www.coursonline.be 1. Joomla est un système de gestion de contenu CMS open source JOOMLA Introduction Joomla est un système de gestion de contenu CMS open source Il permet la conception rapide de sites Web avec une présentation soignée et une navigation très simple C est l outil idéal

Plus en détail

Techniques de Développement

Techniques de Développement Techniques de Développement Quelques définitions relatives au développement de logiciel Sébastien Faucou Université de Nantes (IUT de Nantes, département Informatique) Licence Professionnelle Systèmes

Plus en détail

ES Enterprise Solutions

ES Enterprise Solutions Strategic Media Technologies ES Enterprise Solutions Plateforme centralisée de collaboration en ligne www.dalim.com accès total au contenu indépendamment du lieu et fuseau horaire. N importe quand et n

Plus en détail

Développement itératif, évolutif et agile

Développement itératif, évolutif et agile Document Développement itératif, évolutif et agile Auteur Nicoleta SERGI Version 1.0 Date de sortie 23/11/2007 1. Processus Unifié Développement itératif, évolutif et agile Contrairement au cycle de vie

Plus en détail

COMMENT METTRE A JOUR SON SITE WEB?

COMMENT METTRE A JOUR SON SITE WEB? Un site web est d autant plus intéressant pour l internaute qu il est actualisé. A contrario, une information obsolète peut ternir l image de l entreprise (manque de dynamisme, manque de rigueur ). Différentes

Plus en détail

Fonctions. Solution professionnelle pour le stockage de données, la synchronisation multi- plateformes et la collaboration

Fonctions. Solution professionnelle pour le stockage de données, la synchronisation multi- plateformes et la collaboration Fonctions Synchronisation dynamique des fichiers : mise à jour automatique des documents sur tous les équipements Partage et collaboration : partage simple des fichiers entre employés, clients et partenaires

Plus en détail

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information. PACBASE «Interrogez le passé, il répondra présent.». Le Module e-business Les entreprises doivent aujourd hui relever un triple défi. D une part, elles ne peuvent faire table rase de la richesse contenue

Plus en détail

SOMMAIRE EXMERGE. Chapitre 1 Installation EXMERGE 2. Chapitre 2 Modification ExMerge 6. Chapitre 3 Exécution sans erreur 23

SOMMAIRE EXMERGE. Chapitre 1 Installation EXMERGE 2. Chapitre 2 Modification ExMerge 6. Chapitre 3 Exécution sans erreur 23 Exchange 2003 Page 1 sur 32 SOMMAIRE Chapitre 1 Installation 2 1.1 Téléchargement 2 1.2 Installation 4 1.3 1 er lancement 5 Chapitre 2 Modification ExMerge 6 2.1 2 nd lancement 6 2.2 3ème lancement 11

Plus en détail

DONNEES PERSONNELLES ET COOKIES HIKINGONTHEMOON.COM

DONNEES PERSONNELLES ET COOKIES HIKINGONTHEMOON.COM DONNEES PERSONNELLES ET COOKIES HIKINGONTHEMOON.COM I - Collecte de données par HIKINGONTHEMOON.COM A quoi servent vos données? Vos données font l objet de traitements informatiques permettant la gestion

Plus en détail

Notre offre Système. systemes@arrabal-is.com

Notre offre Système. systemes@arrabal-is.com systemes@arrabal-is.com Généralités Généralités des systèmes Windows Les systèmes Microsoft sont au cœur du système d information de la majorité des entreprises, si bien qu environ 90% des postes utilisateurs

Plus en détail

WordPress : principes et fonctionnement

WordPress : principes et fonctionnement CHAPITRE 1 WordPress : principes et fonctionnement WordPress est à l origine un outil conçu pour tenir un blog, c est-à-dire un journal ou carnet de bord en ligne. Mais il a évolué pour devenir un système

Plus en détail

Joomla et VirtueMart

Joomla et VirtueMart Valérie Isaksen Avec la contribution de Thierry Tardif Joomla et VirtueMart Réussir sa boutique en ligne Groupe Eyrolles, 2008, ISBN : 978-2-212-12381-4 Table des matières 1. VOTRE PROJET DE BOUTIQUE EN

Plus en détail

PHP/MySQL avec Dreamweaver CS4

PHP/MySQL avec Dreamweaver CS4 PHP/MySQL avec Dreamweaver CS4 Dreamweaver CS4 Jean-Marie Defrance Groupe Eyrolles, 2009, ISBN : 978-2-212-12551-1 7 Étude de cas : un site marchand Dans ce dernier chapitre, nous allons exploiter Dreamweaver

Plus en détail

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES WEB & DÉVELOPPEMENT LES BASES DU WEB HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES LE LANGAGE HTML STRUCTURE D UNE PAGE En-tête et corps Syntaxe INSÉRER DES CONTENUS Texte : formatage (titre,

Plus en détail

Retour d expérience Inria sur sa GED

Retour d expérience Inria sur sa GED Retour d expérience Inria sur sa GED DSI SESI 13 octobre 2015 SOMMAIRE 1. Solution Alfresco 2. Implémentation Alfresco chez Inria 3. Cas d usage 13 octobre 2015-2 1 Solution Alfresco 13 octobre 2015-3

Plus en détail

PRATIC Création site internet descriptif fonctionnel

PRATIC Création site internet descriptif fonctionnel PRATIC Création site internet descriptif fonctionnel Référence : Auteur : Marion Verlaine Overscan 091222_Pratic_DF Date : 22/12/2009 Diffusion : Marion Verlaine (Overscan) Claire Buisine (PRATIC). Historique

Plus en détail

HelpDesk. Sept avantages de HelpDesk

HelpDesk. Sept avantages de HelpDesk HelpDesk Artologik HelpDesk est l outil rêvé pour ceux qui recherchent un programme de support et de gestion des tickets alliant facilité d utilisation et puissance. Avec Artologik HelpDesk, vous pourrez

Plus en détail

Cours ios. Cours en ligne Développement d Apps sur iphone e ipad. Académie Libre info@academielibre.fr

Cours ios. Cours en ligne Développement d Apps sur iphone e ipad. Académie Libre info@academielibre.fr Cours ios Cours en ligne Développement d Apps sur iphone e ipad Académie Libre info@academielibre.fr Programme général du Cours ios Module 1 Introduction à la programmation Unité 1 Introduction aux ordinateurs

Plus en détail

Développer de nouvelles fonctionnalités

Développer de nouvelles fonctionnalités 19 Développer de nouvelles fonctionnalités Chaque site e-commerce est unique. Bien que Magento soit une application riche, des besoins spécifiques apparaîtront et l ajout de modules deviendra nécessaire.

Plus en détail

Installation Client (licence de site) de IBM SPSS Modeler 14.2

Installation Client (licence de site) de IBM SPSS Modeler 14.2 Installation Client (licence de site) de IBM SPSS Modeler 14.2 Les instructions suivantes permettent d installer IBM SPSS Modeler Client version 14.2 en utilisant un licence de site. Ce présent document

Plus en détail