SlideShare une entreprise Scribd logo
1  sur  64
PAGESJAUNES
TOOLBOX"
PAGESJAUNES.FR
David DE CARVALHO
@dedece35
@PagesJaunesTech
QUI SUIS-JE
•
•
•
David DE CARVALHO
@dedece35
@PagesJaunesTech
PAGESJAUNES.FR
PAGESJAUNES.FR
PAGESJAUNES.FR
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
~812 M€ CA
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
~812 M€ CA
~ 80% CA sur le digital
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
+ 250 K sites Web
~812 M€ CA
~ 80% CA sur le digital
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
#1 sur le web en contenu
digital pour les PME
+ 250 K sites Web
~812 M€ CA
~ 80% CA sur le digital
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
#1 sur le web en contenu
digital pour les PME
+ 250 K sites Web
~812 M€ CA
~ 80% CA sur le digital
4,5 M d’avis
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
#1 sur le web en contenu
digital pour les PME
+ 250 K sites Web
~812 M€ CA
~ 80% CA sur le digital
4,5 M d’avis 775 K photos
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
#1 sur le web en contenu
digital pour les PME
+ 250 K sites Web
~812 M€ CA
~ 80% CA sur le digital
4,5 M d’avis 775 K photos
1,6 M de comptes
utilisateur
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
#1 sur le web en contenu
digital pour les PME
+ 250 K sites Web
~812 M€ CA
~ 80% CA sur le digital
4,5 M d’avis 775 K photos
75 K prises de
rdv médicale / mois
1,6 M de comptes
utilisateur
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
#1 sur le web en contenu
digital pour les PME
+ 250 K sites Web
~812 M€ CA
~ 80% CA sur le digital
4,5 M d’avis 775 K photos
75 K prises de
rdv médicale / mois
1,6 M de comptes
utilisateur
2016 : 6ème audience
Web en France
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
#1 sur le web en contenu
digital pour les PME
+ 250 K sites Web
~812 M€ CA
~ 80% CA sur le digital
4,5 M d’avis 775 K photos
75 K prises de
rdv médicale / mois
1,6 M de comptes
utilisateur
2016 : ~140 M de visites
/ mois (200 M -> Solocal)
2016 : 6ème audience
Web en France
PAGESJAUNES.FR
5 M de professionnels
dont 490 K annonceurs
#1 sur le web en contenu
digital pour les PME
+ 250 K sites Web
~812 M€ CA
~ 80% CA sur le digital
4,5 M d’avis 775 K photos
75 K prises de
rdv médicale / mois
1,6 M de comptes
utilisateur
2016 : ~140 M de visites
/ mois (200 M -> Solocal)
2016 : 45% audience
sur mobile
2016 : 6ème audience
Web en France
MICRO-
SERVICE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
STACK TECHNIQUE
RÈGLES DE DEV (JAVA)
- Règles PMD :
- règles de la communauté (GITHUB : 290) : sélection PJ (113)
RÈGLES DE DEV (JAVA)
- Règles PMD :
- règles de la communauté (GITHUB : 290) : sélection PJ (113)
- règles PJ historique (custom) : 18
RÈGLES DE DEV (JAVA)
- Règles PMD :
- règles de la communauté (GITHUB : 290) : sélection PJ (113)
- règles PJ historique (custom) : 18
- Suppression Checkstyle : transfo vers PMD
RÈGLES DE DEV (JAVA)
- Règles PMD :
- règles de la communauté (GITHUB : 290) : sélection PJ (113)
- règles PJ historique (custom) : 18
- Suppression Checkstyle : transfo vers PMD
- Dans nos outils :
- Sonar (5.X) : import des règles PMD
RÈGLES DE DEV (JAVA)
- Règles PMD :
- règles de la communauté (GITHUB : 290) : sélection PJ (113)
- règles PJ historique (custom) : 18
- Suppression Checkstyle : transfo vers PMD
- Dans nos outils :
- Sonar (5.X) : import des règles PMD
- Eclipse :
- plugin PMD installé + maven (création fichiers conf .ruleset et .pmd)
RÈGLES DE DEV (JAVA)
- Règles PMD :
- règles de la communauté (GITHUB : 290) : sélection PJ (113)
- règles PJ historique (custom) : 18
- Suppression Checkstyle : transfo vers PMD
- Dans nos outils :
- Sonar (5.X) : import des règles PMD
- Eclipse :
- plugin PMD installé + maven (création fichiers conf .ruleset et .pmd)
- contrôle auto du dev via maven
IL FAUT QUAND MEME SE FACILITER LA VIE …
… AVEC 3 FRAMEWORKS JAVA
Lombok
https://projectlombok.org/
Selma
http://www.selma-java.org/
Podam
https://devopsfolks.github.io/podam/
PODAM
https://devopsfolks.github.io/podam/
- Objectif
- Remplir des beans avec des valeurs aléatoires
PODAM
https://devopsfolks.github.io/podam/
- Objectif
- Remplir des beans avec des valeurs aléatoires
- Quand et pourquoi utiliser ?
- Très utilisé dans le cadre de Tests (TU, TI, TF)
- Énorme gain de temps de dev lors de la création des beans pour les tests
PODAM
https://devopsfolks.github.io/podam/
- Objectif
- Remplir des beans avec des valeurs aléatoires
- Quand et pourquoi utiliser ?
- Très utilisé dans le cadre de Tests (TU, TI, TF)
- Énorme gain de temps de dev lors de la création des beans pour les tests
- Facile d’utilisation
- De base fonctionne bien (en 2 lignes on a un Bean utilisable)
- Possibilité de customiser la génération (stratégies de génération)
- Simple dépendance maven
PODAM
https://devopsfolks.github.io/podam/
- Objectif
- Remplir des beans avec des valeurs aléatoires
- Quand et pourquoi utiliser ?
- Très utilisé dans le cadre de Tests (TU, TI, TF)
- Énorme gain de temps de dev lors de la création des beans pour les tests
- Facile d’utilisation
- De base fonctionne bien (en 2 lignes on a un Bean utilisable)
- Possibilité de customiser la génération (stratégies de génération)
- Simple dépendance maven
- Astuces PJ
- Attention à la "memoization" : gestion d’un cache de valeur générée dans le bean
(forcer à false si pas volonté de cache)
PODAM
https://devopsfolks.github.io/podam/
- Objectif
- Remplir des beans avec des valeurs aléatoires
- Quand et pourquoi utiliser ?
- Très utilisé dans le cadre de Tests (TU, TI, TF)
- Énorme gain de temps de dev lors de la création des beans pour les tests
- Facile d’utilisation
- De base fonctionne bien (en 2 lignes on a un Bean utilisable)
- Possibilité de customiser la génération (stratégies de génération)
- Simple dépendance maven
- Astuces PJ
- Attention à la "memoization" : gestion d’un cache de valeur générée dans le bean
(forcer à false si pas volonté de cache)
- Pas "fan" annotation Podam dans Bean métier (intrusif) => utilisation d’une classe de
gestion des stratégies pour la génération des valeurs
LOMBOK (1/2)
https://projectlombok.org/
- Objectifs
- Simplifier le contenu des classes de Bean (seulement les attributs)
LOMBOK (1/2)
https://projectlombok.org/
- Objectifs
- Simplifier le contenu des classes de Bean (seulement les attributs)
- Faciliter la maintenance des classes de Bean
LOMBOK (1/2)
https://projectlombok.org/
- Objectifs
- Simplifier le contenu des classes de Bean (seulement les attributs)
- Faciliter la maintenance des classes de Bean
- Faciliter la vie du développeur 
LOMBOK (1/2)
https://projectlombok.org/
- Objectifs
- Simplifier le contenu des classes de Bean (seulement les attributs)
- Faciliter la maintenance des classes de Bean
- Faciliter la vie du développeur 
- Quand et pourquoi utiliser ?
- Énorme gain de temps de dev (création et maintenance Bean)
- Plus besoin de méthodes getter, setter, constructeur, toString, hashcode, equals
=> une annotation par besoin
LOMBOK (1/2)
https://projectlombok.org/
- Objectifs
- Simplifier le contenu des classes de Bean (seulement les attributs)
- Faciliter la maintenance des classes de Bean
- Faciliter la vie du développeur 
- Quand et pourquoi utiliser ?
- Énorme gain de temps de dev (création et maintenance Bean)
- Plus besoin de méthodes getter, setter, constructeur, toString, hashcode, equals
=> une annotation par besoin
- Facile d’utilisation : annotations souhaitées en entête de classe
- Encore plus facile : utiliser "@Data" (getter, setter, hashcode, equals, toString et
constructeur par défaut positionné)
LOMBOK (1/2)
https://projectlombok.org/
- Objectifs
- Simplifier le contenu des classes de Bean (seulement les attributs)
- Faciliter la maintenance des classes de Bean
- Faciliter la vie du développeur 
- Quand et pourquoi utiliser ?
- Énorme gain de temps de dev (création et maintenance Bean)
- Plus besoin de méthodes getter, setter, constructeur, toString, hashcode, equals
=> une annotation par besoin
- Facile d’utilisation : annotations souhaitées en entête de classe
- Encore plus facile : utiliser "@Data" (getter, setter, hashcode, equals, toString et
constructeur par défaut positionné)
- Pour les service utilisant un LOGGER SLF4J : "@Slf4j" + fichier lombok.config
LOMBOK (1/2)
https://projectlombok.org/
- Objectifs
- Simplifier le contenu des classes de Bean (seulement les attributs)
- Faciliter la maintenance des classes de Bean
- Faciliter la vie du développeur 
- Quand et pourquoi utiliser ?
- Énorme gain de temps de dev (création et maintenance Bean)
- Plus besoin de méthodes getter, setter, constructeur, toString, hashcode, equals
=> une annotation par besoin
- Facile d’utilisation : annotations souhaitées en entête de classe
- Encore plus facile : utiliser "@Data" (getter, setter, hashcode, equals, toString et
constructeur par défaut positionné)
- Pour les service utilisant un LOGGER SLF4J : "@Slf4j" + fichier lombok.config
- Site Web bien fait avec des exemples
LOMBOK (2/2)
https://projectlombok.org/
- Astuces PJ
- Attention avec le "@Data", comportement qu’il faut connaitre :
- si ajout annot de constructeur "@AllArgsConstructor" alors le
constructeur par défaut disparait (à rajouter aussi si besoin)
LOMBOK (2/2)
https://projectlombok.org/
- Astuces PJ
- Attention avec le "@Data", comportement qu’il faut connaitre :
- si ajout annot de constructeur "@AllArgsConstructor" alors le
constructeur par défaut disparait (à rajouter aussi si besoin)
- Intégration Lombok
- Dépendance maven (pour la compilation)
LOMBOK (2/2)
https://projectlombok.org/
- Astuces PJ
- Attention avec le "@Data", comportement qu’il faut connaitre :
- si ajout annot de constructeur "@AllArgsConstructor" alors le
constructeur par défaut disparait (à rajouter aussi si besoin)
- Intégration Lombok
- Dépendance maven (pour la compilation)
- Eclipse ("eclipse.ini") : ajout lombok.jar comme un agent java
SELMA
http:// www.selma-java.org /
- Objectifs
- Supprimer les classes de type Factory sans perdre en performance
- Faciliter la vie du développeur 
SELMA
http:// www.selma-java.org /
- Objectifs
- Supprimer les classes de type Factory sans perdre en performance
- Faciliter la vie du développeur 
- Quand et pourquoi utiliser ?
- Énorme gain de temps de dev (création et maintenance des Factory)
- Une interface permet de décrire la Factory
- Classe d’implémentation générée par Selma
SELMA
http:// www.selma-java.org /
- Objectifs
- Supprimer les classes de type Factory sans perdre en performance
- Faciliter la vie du développeur 
- Quand et pourquoi utiliser ?
- Énorme gain de temps de dev (création et maintenance des Factory)
- Une interface permet de décrire la Factory
- Classe d’implémentation générée par Selma
- Performance quasiment similaire à une Factory manuelle
- Comparatif effectué en interne via JMH (micro-benching) : Selma VS Dozer VS Oreka VS
Jmapper VS factory manuelle (pas fait MapStruct)
SELMA
http:// www.selma-java.org /
- Objectifs
- Supprimer les classes de type Factory sans perdre en performance
- Faciliter la vie du développeur 
- Quand et pourquoi utiliser ?
- Énorme gain de temps de dev (création et maintenance des Factory)
- Une interface permet de décrire la Factory
- Classe d’implémentation générée par Selma
- Performance quasiment similaire à une Factory manuelle
- Comparatif effectué en interne via JMH (micro-benching) : Selma VS Dozer VS Oreka VS
Jmapper VS factory manuelle (pas fait MapStruct)
- Facile d’utilisation :
- Site Web bien fait avec des exemples
SELMA
http:// www.selma-java.org /
- Objectifs
- Supprimer les classes de type Factory sans perdre en performance
- Faciliter la vie du développeur 
- Quand et pourquoi utiliser ?
- Énorme gain de temps de dev (création et maintenance des Factory)
- Une interface permet de décrire la Factory
- Classe d’implémentation générée par Selma
- Performance quasiment similaire à une Factory manuelle
- Comparatif effectué en interne via JMH (micro-benching) : Selma VS Dozer VS Oreka VS
Jmapper VS factory manuelle (pas fait MapStruct)
- Facile d’utilisation :
- Site Web bien fait avec des exemples
- Interface de description se basant sur la signature des méthodes
- nom des méthodes pas très important (sauf pour la lisibilité du DEV)
- sur les types des objets en entrée et en sortie
SELMA
http:// www.selma-java.org /
- Objectifs
- Supprimer les classes de type Factory sans perdre en performance
- Faciliter la vie du développeur 
- Quand et pourquoi utiliser ?
- Énorme gain de temps de dev (création et maintenance des Factory)
- Une interface permet de décrire la Factory
- Classe d’implémentation générée par Selma
- Performance quasiment similaire à une Factory manuelle
- Comparatif effectué en interne via JMH (micro-benching) : Selma VS Dozer VS Oreka VS
Jmapper VS factory manuelle (pas fait MapStruct)
- Facile d’utilisation :
- Site Web bien fait avec des exemples
- Interface de description se basant sur la signature des méthodes
- nom des méthodes pas très important (sauf pour la lisibilité du DEV)
- sur les types des objets en entrée et en sortie
- Pas d’oubli d’implem dans une factory :
- Selma s’en occupe ou avertit si pb lors de la génération de la classe d’implem
LOMBOK + SELMA : ATTENTION
https://projectlombok.org/
- Selma et Lombok ne font pas bon ménage si on ne fait rien pour qu’ils
discutent ensemble
- Lombok : modifie les ".class" et y ajoute les getter, setter, …
- Selma utilise le code source afin de générer les factories
LOMBOK + SELMA : ATTENTION
https://projectlombok.org/
- Selma et Lombok ne font pas bon ménage si on ne fait rien pour qu’ils
discutent ensemble
- Lombok : modifie les ".class" et y ajoute les getter, setter, …
- Selma utilise le code source afin de générer les factories
- PB : lors du lancement de la génération par Selma, l’agent Java pour
lombok n’est pas encore passé => SELMA : pb de compilation
LOMBOK + SELMA : ATTENTION
https://projectlombok.org/
- Selma et Lombok ne font pas bon ménage si on ne fait rien pour qu’ils
discutent ensemble
- Lombok : modifie les ".class" et y ajoute les getter, setter, …
- Selma utilise le code source afin de générer les factories
- PB : lors du lancement de la génération par Selma, l’agent Java pour
lombok n’est pas encore passé => SELMA : pb de compilation
- Astuce : via maven et dans l’ordre
- Utiliser le plugin "lombok-maven-plugin" : pour générer les sources
de Lombok ("delombok")
- Indiquer au plugin Selma d’utiliser les sources "delombok"
POUR FINIR …
- Temps de DEV grandement amélioré
- Plus de factory (SELMA)
- Plus de POJO à maintenir (sauf les attributs bien entendu) (LOMBOK)
- Plus de POJO à remplir pour les tests (PODAM)
- Nb de lignes de code grandement réduit
- Maintenance et fiabilité du DEV améliorées
- Couverture de code par les tests fortement augmentés
- Et surtout …surtout … les développeurs râlent beaucoup moins 
- DONC … essayez … essayez … ESSAYEZ
David DE CARVALHO
@dedece35
@PagesJaunesTech

Contenu connexe

Similaire à PJ Tool Box

Comment évaluer la qualité d'un site web selon les techniques d'intégration w...
Comment évaluer la qualité d'un site web selon les techniques d'intégration w...Comment évaluer la qualité d'un site web selon les techniques d'intégration w...
Comment évaluer la qualité d'un site web selon les techniques d'intégration w...Renoir Boulanger
 
PrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShopPrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShopPrestaShop
 
Je configure mes serveurs avec fabric et fabtools
Je configure mes serveurs avec fabric et fabtoolsJe configure mes serveurs avec fabric et fabtools
Je configure mes serveurs avec fabric et fabtoolsRonan Amicel
 
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.320180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3Benoit Fillon
 
What's Next Replay! Lyon 2011 - A. Cogoluegnes
What's Next Replay! Lyon 2011 - A. CogoluegnesWhat's Next Replay! Lyon 2011 - A. Cogoluegnes
What's Next Replay! Lyon 2011 - A. CogoluegnesZenika
 
ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)Nicolas Aguenot
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferaySébastien Le Marchand
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performanteJean-Pierre Vincent
 
Comment un e-commerçant a multiplié son trafic SEO par 9,8 en 12 mois !
Comment un e-commerçant a multiplié son trafic SEO par 9,8 en 12 mois !Comment un e-commerçant a multiplié son trafic SEO par 9,8 en 12 mois !
Comment un e-commerçant a multiplié son trafic SEO par 9,8 en 12 mois !David Dragesco
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Aurelien Navarre
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Brigitte Marandon
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudAlain Ganuchaud
 
JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 telosys
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Laurent Guérin
 
L'ABC d'un déploiement réussi - WordCamp Montréal 2018
L'ABC d'un déploiement réussi - WordCamp Montréal 2018L'ABC d'un déploiement réussi - WordCamp Montréal 2018
L'ABC d'un déploiement réussi - WordCamp Montréal 2018Maxime Jobin
 
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...pierredargham
 

Similaire à PJ Tool Box (20)

Comment évaluer la qualité d'un site web selon les techniques d'intégration w...
Comment évaluer la qualité d'un site web selon les techniques d'intégration w...Comment évaluer la qualité d'un site web selon les techniques d'intégration w...
Comment évaluer la qualité d'un site web selon les techniques d'intégration w...
 
HashMyTweets
HashMyTweetsHashMyTweets
HashMyTweets
 
PrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShopPrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShop
 
Je configure mes serveurs avec fabric et fabtools
Je configure mes serveurs avec fabric et fabtoolsJe configure mes serveurs avec fabric et fabtools
Je configure mes serveurs avec fabric et fabtools
 
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.320180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3
 
What's Next Replay! Lyon 2011 - A. Cogoluegnes
What's Next Replay! Lyon 2011 - A. CogoluegnesWhat's Next Replay! Lyon 2011 - A. Cogoluegnes
What's Next Replay! Lyon 2011 - A. Cogoluegnes
 
ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferay
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performante
 
Comment un e-commerçant a multiplié son trafic SEO par 9,8 en 12 mois !
Comment un e-commerçant a multiplié son trafic SEO par 9,8 en 12 mois !Comment un e-commerçant a multiplié son trafic SEO par 9,8 en 12 mois !
Comment un e-commerçant a multiplié son trafic SEO par 9,8 en 12 mois !
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
 
WordPress et SEO - SEOCampus 2013
WordPress et SEO - SEOCampus 2013WordPress et SEO - SEOCampus 2013
WordPress et SEO - SEOCampus 2013
 
JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
 
L'ABC d'un déploiement réussi - WordCamp Montréal 2018
L'ABC d'un déploiement réussi - WordCamp Montréal 2018L'ABC d'un déploiement réussi - WordCamp Montréal 2018
L'ABC d'un déploiement réussi - WordCamp Montréal 2018
 
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
 

PJ Tool Box

  • 2. QUI SUIS-JE • • • David DE CARVALHO @dedece35 @PagesJaunesTech
  • 6. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs
  • 7. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs ~812 M€ CA
  • 8. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs ~812 M€ CA ~ 80% CA sur le digital
  • 9. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs + 250 K sites Web ~812 M€ CA ~ 80% CA sur le digital
  • 10. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs #1 sur le web en contenu digital pour les PME + 250 K sites Web ~812 M€ CA ~ 80% CA sur le digital
  • 11. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs #1 sur le web en contenu digital pour les PME + 250 K sites Web ~812 M€ CA ~ 80% CA sur le digital 4,5 M d’avis
  • 12. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs #1 sur le web en contenu digital pour les PME + 250 K sites Web ~812 M€ CA ~ 80% CA sur le digital 4,5 M d’avis 775 K photos
  • 13. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs #1 sur le web en contenu digital pour les PME + 250 K sites Web ~812 M€ CA ~ 80% CA sur le digital 4,5 M d’avis 775 K photos 1,6 M de comptes utilisateur
  • 14. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs #1 sur le web en contenu digital pour les PME + 250 K sites Web ~812 M€ CA ~ 80% CA sur le digital 4,5 M d’avis 775 K photos 75 K prises de rdv médicale / mois 1,6 M de comptes utilisateur
  • 15. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs #1 sur le web en contenu digital pour les PME + 250 K sites Web ~812 M€ CA ~ 80% CA sur le digital 4,5 M d’avis 775 K photos 75 K prises de rdv médicale / mois 1,6 M de comptes utilisateur 2016 : 6ème audience Web en France
  • 16. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs #1 sur le web en contenu digital pour les PME + 250 K sites Web ~812 M€ CA ~ 80% CA sur le digital 4,5 M d’avis 775 K photos 75 K prises de rdv médicale / mois 1,6 M de comptes utilisateur 2016 : ~140 M de visites / mois (200 M -> Solocal) 2016 : 6ème audience Web en France
  • 17. PAGESJAUNES.FR 5 M de professionnels dont 490 K annonceurs #1 sur le web en contenu digital pour les PME + 250 K sites Web ~812 M€ CA ~ 80% CA sur le digital 4,5 M d’avis 775 K photos 75 K prises de rdv médicale / mois 1,6 M de comptes utilisateur 2016 : ~140 M de visites / mois (200 M -> Solocal) 2016 : 45% audience sur mobile 2016 : 6ème audience Web en France
  • 31. RÈGLES DE DEV (JAVA) - Règles PMD : - règles de la communauté (GITHUB : 290) : sélection PJ (113)
  • 32. RÈGLES DE DEV (JAVA) - Règles PMD : - règles de la communauté (GITHUB : 290) : sélection PJ (113) - règles PJ historique (custom) : 18
  • 33. RÈGLES DE DEV (JAVA) - Règles PMD : - règles de la communauté (GITHUB : 290) : sélection PJ (113) - règles PJ historique (custom) : 18 - Suppression Checkstyle : transfo vers PMD
  • 34. RÈGLES DE DEV (JAVA) - Règles PMD : - règles de la communauté (GITHUB : 290) : sélection PJ (113) - règles PJ historique (custom) : 18 - Suppression Checkstyle : transfo vers PMD - Dans nos outils : - Sonar (5.X) : import des règles PMD
  • 35. RÈGLES DE DEV (JAVA) - Règles PMD : - règles de la communauté (GITHUB : 290) : sélection PJ (113) - règles PJ historique (custom) : 18 - Suppression Checkstyle : transfo vers PMD - Dans nos outils : - Sonar (5.X) : import des règles PMD - Eclipse : - plugin PMD installé + maven (création fichiers conf .ruleset et .pmd)
  • 36. RÈGLES DE DEV (JAVA) - Règles PMD : - règles de la communauté (GITHUB : 290) : sélection PJ (113) - règles PJ historique (custom) : 18 - Suppression Checkstyle : transfo vers PMD - Dans nos outils : - Sonar (5.X) : import des règles PMD - Eclipse : - plugin PMD installé + maven (création fichiers conf .ruleset et .pmd) - contrôle auto du dev via maven
  • 37. IL FAUT QUAND MEME SE FACILITER LA VIE …
  • 38. … AVEC 3 FRAMEWORKS JAVA Lombok https://projectlombok.org/ Selma http://www.selma-java.org/ Podam https://devopsfolks.github.io/podam/
  • 39. PODAM https://devopsfolks.github.io/podam/ - Objectif - Remplir des beans avec des valeurs aléatoires
  • 40. PODAM https://devopsfolks.github.io/podam/ - Objectif - Remplir des beans avec des valeurs aléatoires - Quand et pourquoi utiliser ? - Très utilisé dans le cadre de Tests (TU, TI, TF) - Énorme gain de temps de dev lors de la création des beans pour les tests
  • 41. PODAM https://devopsfolks.github.io/podam/ - Objectif - Remplir des beans avec des valeurs aléatoires - Quand et pourquoi utiliser ? - Très utilisé dans le cadre de Tests (TU, TI, TF) - Énorme gain de temps de dev lors de la création des beans pour les tests - Facile d’utilisation - De base fonctionne bien (en 2 lignes on a un Bean utilisable) - Possibilité de customiser la génération (stratégies de génération) - Simple dépendance maven
  • 42. PODAM https://devopsfolks.github.io/podam/ - Objectif - Remplir des beans avec des valeurs aléatoires - Quand et pourquoi utiliser ? - Très utilisé dans le cadre de Tests (TU, TI, TF) - Énorme gain de temps de dev lors de la création des beans pour les tests - Facile d’utilisation - De base fonctionne bien (en 2 lignes on a un Bean utilisable) - Possibilité de customiser la génération (stratégies de génération) - Simple dépendance maven - Astuces PJ - Attention à la "memoization" : gestion d’un cache de valeur générée dans le bean (forcer à false si pas volonté de cache)
  • 43. PODAM https://devopsfolks.github.io/podam/ - Objectif - Remplir des beans avec des valeurs aléatoires - Quand et pourquoi utiliser ? - Très utilisé dans le cadre de Tests (TU, TI, TF) - Énorme gain de temps de dev lors de la création des beans pour les tests - Facile d’utilisation - De base fonctionne bien (en 2 lignes on a un Bean utilisable) - Possibilité de customiser la génération (stratégies de génération) - Simple dépendance maven - Astuces PJ - Attention à la "memoization" : gestion d’un cache de valeur générée dans le bean (forcer à false si pas volonté de cache) - Pas "fan" annotation Podam dans Bean métier (intrusif) => utilisation d’une classe de gestion des stratégies pour la génération des valeurs
  • 44. LOMBOK (1/2) https://projectlombok.org/ - Objectifs - Simplifier le contenu des classes de Bean (seulement les attributs)
  • 45. LOMBOK (1/2) https://projectlombok.org/ - Objectifs - Simplifier le contenu des classes de Bean (seulement les attributs) - Faciliter la maintenance des classes de Bean
  • 46. LOMBOK (1/2) https://projectlombok.org/ - Objectifs - Simplifier le contenu des classes de Bean (seulement les attributs) - Faciliter la maintenance des classes de Bean - Faciliter la vie du développeur 
  • 47. LOMBOK (1/2) https://projectlombok.org/ - Objectifs - Simplifier le contenu des classes de Bean (seulement les attributs) - Faciliter la maintenance des classes de Bean - Faciliter la vie du développeur  - Quand et pourquoi utiliser ? - Énorme gain de temps de dev (création et maintenance Bean) - Plus besoin de méthodes getter, setter, constructeur, toString, hashcode, equals => une annotation par besoin
  • 48. LOMBOK (1/2) https://projectlombok.org/ - Objectifs - Simplifier le contenu des classes de Bean (seulement les attributs) - Faciliter la maintenance des classes de Bean - Faciliter la vie du développeur  - Quand et pourquoi utiliser ? - Énorme gain de temps de dev (création et maintenance Bean) - Plus besoin de méthodes getter, setter, constructeur, toString, hashcode, equals => une annotation par besoin - Facile d’utilisation : annotations souhaitées en entête de classe - Encore plus facile : utiliser "@Data" (getter, setter, hashcode, equals, toString et constructeur par défaut positionné)
  • 49. LOMBOK (1/2) https://projectlombok.org/ - Objectifs - Simplifier le contenu des classes de Bean (seulement les attributs) - Faciliter la maintenance des classes de Bean - Faciliter la vie du développeur  - Quand et pourquoi utiliser ? - Énorme gain de temps de dev (création et maintenance Bean) - Plus besoin de méthodes getter, setter, constructeur, toString, hashcode, equals => une annotation par besoin - Facile d’utilisation : annotations souhaitées en entête de classe - Encore plus facile : utiliser "@Data" (getter, setter, hashcode, equals, toString et constructeur par défaut positionné) - Pour les service utilisant un LOGGER SLF4J : "@Slf4j" + fichier lombok.config
  • 50. LOMBOK (1/2) https://projectlombok.org/ - Objectifs - Simplifier le contenu des classes de Bean (seulement les attributs) - Faciliter la maintenance des classes de Bean - Faciliter la vie du développeur  - Quand et pourquoi utiliser ? - Énorme gain de temps de dev (création et maintenance Bean) - Plus besoin de méthodes getter, setter, constructeur, toString, hashcode, equals => une annotation par besoin - Facile d’utilisation : annotations souhaitées en entête de classe - Encore plus facile : utiliser "@Data" (getter, setter, hashcode, equals, toString et constructeur par défaut positionné) - Pour les service utilisant un LOGGER SLF4J : "@Slf4j" + fichier lombok.config - Site Web bien fait avec des exemples
  • 51. LOMBOK (2/2) https://projectlombok.org/ - Astuces PJ - Attention avec le "@Data", comportement qu’il faut connaitre : - si ajout annot de constructeur "@AllArgsConstructor" alors le constructeur par défaut disparait (à rajouter aussi si besoin)
  • 52. LOMBOK (2/2) https://projectlombok.org/ - Astuces PJ - Attention avec le "@Data", comportement qu’il faut connaitre : - si ajout annot de constructeur "@AllArgsConstructor" alors le constructeur par défaut disparait (à rajouter aussi si besoin) - Intégration Lombok - Dépendance maven (pour la compilation)
  • 53. LOMBOK (2/2) https://projectlombok.org/ - Astuces PJ - Attention avec le "@Data", comportement qu’il faut connaitre : - si ajout annot de constructeur "@AllArgsConstructor" alors le constructeur par défaut disparait (à rajouter aussi si besoin) - Intégration Lombok - Dépendance maven (pour la compilation) - Eclipse ("eclipse.ini") : ajout lombok.jar comme un agent java
  • 54. SELMA http:// www.selma-java.org / - Objectifs - Supprimer les classes de type Factory sans perdre en performance - Faciliter la vie du développeur 
  • 55. SELMA http:// www.selma-java.org / - Objectifs - Supprimer les classes de type Factory sans perdre en performance - Faciliter la vie du développeur  - Quand et pourquoi utiliser ? - Énorme gain de temps de dev (création et maintenance des Factory) - Une interface permet de décrire la Factory - Classe d’implémentation générée par Selma
  • 56. SELMA http:// www.selma-java.org / - Objectifs - Supprimer les classes de type Factory sans perdre en performance - Faciliter la vie du développeur  - Quand et pourquoi utiliser ? - Énorme gain de temps de dev (création et maintenance des Factory) - Une interface permet de décrire la Factory - Classe d’implémentation générée par Selma - Performance quasiment similaire à une Factory manuelle - Comparatif effectué en interne via JMH (micro-benching) : Selma VS Dozer VS Oreka VS Jmapper VS factory manuelle (pas fait MapStruct)
  • 57. SELMA http:// www.selma-java.org / - Objectifs - Supprimer les classes de type Factory sans perdre en performance - Faciliter la vie du développeur  - Quand et pourquoi utiliser ? - Énorme gain de temps de dev (création et maintenance des Factory) - Une interface permet de décrire la Factory - Classe d’implémentation générée par Selma - Performance quasiment similaire à une Factory manuelle - Comparatif effectué en interne via JMH (micro-benching) : Selma VS Dozer VS Oreka VS Jmapper VS factory manuelle (pas fait MapStruct) - Facile d’utilisation : - Site Web bien fait avec des exemples
  • 58. SELMA http:// www.selma-java.org / - Objectifs - Supprimer les classes de type Factory sans perdre en performance - Faciliter la vie du développeur  - Quand et pourquoi utiliser ? - Énorme gain de temps de dev (création et maintenance des Factory) - Une interface permet de décrire la Factory - Classe d’implémentation générée par Selma - Performance quasiment similaire à une Factory manuelle - Comparatif effectué en interne via JMH (micro-benching) : Selma VS Dozer VS Oreka VS Jmapper VS factory manuelle (pas fait MapStruct) - Facile d’utilisation : - Site Web bien fait avec des exemples - Interface de description se basant sur la signature des méthodes - nom des méthodes pas très important (sauf pour la lisibilité du DEV) - sur les types des objets en entrée et en sortie
  • 59. SELMA http:// www.selma-java.org / - Objectifs - Supprimer les classes de type Factory sans perdre en performance - Faciliter la vie du développeur  - Quand et pourquoi utiliser ? - Énorme gain de temps de dev (création et maintenance des Factory) - Une interface permet de décrire la Factory - Classe d’implémentation générée par Selma - Performance quasiment similaire à une Factory manuelle - Comparatif effectué en interne via JMH (micro-benching) : Selma VS Dozer VS Oreka VS Jmapper VS factory manuelle (pas fait MapStruct) - Facile d’utilisation : - Site Web bien fait avec des exemples - Interface de description se basant sur la signature des méthodes - nom des méthodes pas très important (sauf pour la lisibilité du DEV) - sur les types des objets en entrée et en sortie - Pas d’oubli d’implem dans une factory : - Selma s’en occupe ou avertit si pb lors de la génération de la classe d’implem
  • 60. LOMBOK + SELMA : ATTENTION https://projectlombok.org/ - Selma et Lombok ne font pas bon ménage si on ne fait rien pour qu’ils discutent ensemble - Lombok : modifie les ".class" et y ajoute les getter, setter, … - Selma utilise le code source afin de générer les factories
  • 61. LOMBOK + SELMA : ATTENTION https://projectlombok.org/ - Selma et Lombok ne font pas bon ménage si on ne fait rien pour qu’ils discutent ensemble - Lombok : modifie les ".class" et y ajoute les getter, setter, … - Selma utilise le code source afin de générer les factories - PB : lors du lancement de la génération par Selma, l’agent Java pour lombok n’est pas encore passé => SELMA : pb de compilation
  • 62. LOMBOK + SELMA : ATTENTION https://projectlombok.org/ - Selma et Lombok ne font pas bon ménage si on ne fait rien pour qu’ils discutent ensemble - Lombok : modifie les ".class" et y ajoute les getter, setter, … - Selma utilise le code source afin de générer les factories - PB : lors du lancement de la génération par Selma, l’agent Java pour lombok n’est pas encore passé => SELMA : pb de compilation - Astuce : via maven et dans l’ordre - Utiliser le plugin "lombok-maven-plugin" : pour générer les sources de Lombok ("delombok") - Indiquer au plugin Selma d’utiliser les sources "delombok"
  • 63. POUR FINIR … - Temps de DEV grandement amélioré - Plus de factory (SELMA) - Plus de POJO à maintenir (sauf les attributs bien entendu) (LOMBOK) - Plus de POJO à remplir pour les tests (PODAM) - Nb de lignes de code grandement réduit - Maintenance et fiabilité du DEV améliorées - Couverture de code par les tests fortement augmentés - Et surtout …surtout … les développeurs râlent beaucoup moins  - DONC … essayez … essayez … ESSAYEZ

Notes de l'éditeur

  1. (intrusif)
  2. moif : compilation