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
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
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