3. ECMAScript 2015 / ES6 : c’est maintenant !
o ES6 : plus grosse évolution du langage JavaScript depuis 20 ans
• Plus facile : moins de piège, mode strict
• POO : classes, héritage, accesseurs, constructeur …
• Fonctionnalités : déstructuration, rest & spread, fonctions fléchées, modules
…
o ES5 : supporté par IE9+, navigateurs Evergreens, NodeJS, IDE, outils de
builds …
o Utilisation de ES6 via le transpileur Babel
o Zoom sur la syntaxe : http://lebab.io/try-it
3
4. Architecture technique Stack Overflow
• 2 423 requêtes HTTP / seconde
• 504 millions de requêtes SQL / jour
• 3 To de données émises / jour
• Temps de réponse moyen : 22,21 ms
x4 x2 x3
x9
x4
5. Angular 2@Component({
providers: [
new Provider(QuestionsStore, {
useFactory: () => new QuestionsStore(SessionStore.read())
})
],
selector: 'summary',
template: `
<div class="mdl-card_sup-text">
<h4>Your score is {{ score }}/{{ total }}</h4>
</div>
<question-card [preview]="true" [question]="question" *ngFor="#question of questions"></question-card>
`,
directives: [QuestionCard]
})
export class Summary implements OnInit {
private questions: IQuestion[];
private score: number;
private total: number;
private questionsStore: IQuestionsStore;
constructor(questionsStore: QuestionsStore) {
this.questionsStore = questionsStore;
this.questionsStore.fetch().then( (questions) => this.questions = questions );
}
ngOnInit() {
this.total = this.questions.length;
this.score = this.questionsStore.computeResult(this.questions);
}
}
Orienté composants
Associé à un selector CSS3
Template HTML inline
Injection de dépendance
Callback sur cycle de vie
Composant enfant
Binding de propriétés
6. 6
Apache Kafka
0 1 2 3
0 1
Topic A
Partition 1
Partition 2
Topic B
0 1 2 Partition 1
Consommateur Ω
Consommateur µ
Zookeeper
Client
A
Client
B
7. 7
Spring Boot & Spring Cloud
“ make jar not war ”Service Discovery
(Eureka)
Config Server
(Spring Cloud)
Micro-service
de réservations
REST
H2
Client de
réservation
GET http://reservation-service/reservations
RabbitMQ
10. React
10
var HelloMessage = React.createClass({
render: function() {
return <div>Hello {this.props.name}</div>;
}
});
ReactDOM.render(<HelloMessage name="John" />, mountNode);
• Le V de MVC
o Déclaratif
o Composants
• Virtual DOM
o Performance
o Server Side rendering
• React Native
o Learn once, write anywhere
o iOS et Androïd
12. Rendre la doc aussi fun que le code
• Conversations over documentation
• Pair programming, mob-programming, revues de code
• Savoir métier et DDD
• Scénarios fonctionnels dans Cucumber, SpecFlow, JGiven
• Session d’Event Storming
• La documentation passe également par le code
• Conventions de nommage, package-info.java
• Annotations Java avec sémantique (ex: @BoundedContext)
• Gérer la documentation comme le code
• Versionnée dans le référentiel de code source
• Présente dans l’IDE pour prendre en compte les refactoring
• Outils de génération de diagrammes : Ditaa, DOT …
12
13. Bonnes pratiques des revues de code
13
• Prendre le temps, à tête reposée et à un rythme soutenable
• Echangez de vive voix pendant les revues
• L’auteur corrige, en binôme si nécessaire
• Ecrivez vos standards et les faire évoluer
• Critiquez le code, pas le développeur
• Pas de discussions à rallonge
• Trouvez des compromis et en faire un standard
“ 1h de revue = 4h de debug économisée ”
14. 14
Vidéos librement disponibles sur le channel « Devoxx FR 2016 » de Youtube
https://www.youtube.com/channel/UCsVPQfo5RZErDL41LoWvk0A
D’après le talk ES6+ maintenant ! de Christophe Porteneuve
Slides : http://tdd.github.io/devoxx-es6-maintenant/
D’après le talk Stack Overflow behind the scenes. How it’s made de Oded Coster
Slides : http://OdedCoster.com/Devoxx.fr-2016
Extrait simplifié du fichier Summary.ts https://github.com/manekinekko/angular2-codelab
Syntaxe TypeScript
D’après le Hand’s on Lab sur Kafka animé par Matthieu Blanc & Sylvain LequeurKafka est un journal de log distribué, hautement disponible et performant.
Cette solution peut être considérée comme une base de donneés. Son stockage de données est sûr et la persistance est au cœur même du système.
GitHub : https://github.com/mblanc/hands_on_kafka
Basé sur la conférence The Bootiful Microservice de Josh Long (Pivotal)Présentation : http://github.com/joshlong/bootiful-microservices
D’après la conférence String Concaténation de 1 à 9 animée par Rémi Forax
Slides : https://speakerdeck.com/forax/string-concatenation-de-1-a-9
N’utiliser les StringBuilder que pour les boucles, sinon l’opérateur + : le compilateur et la JVM s’occupent de tout.
Dans Java 9, à cause de la JEP 254, les chaines de caractères ne sont plus codées avec des char mais avec des tableaux de bytes. Il y’a un paramètre supplémentaire qui indique l’encodage (LATIN, UTF16)
Inspiré du Tools in action De Jenkins Maven / Freestyle à Pipeline animé par Adrien Lecharpentier
Slides : https://speakerdeck.com/alecharp/freestyle-a-pipeline
Exemple de script Groovy extrait de https://github.com/jenkinsci/workflow-aggregator-plugin/blob/master/demo/repo/Jenkinsfile
D’après la conférence Let’s React animée par Mathieu AncelinYoutube : https://www.youtube.com/watch?v=IFM8krjbKmQ
Exemple JSX du Hello World extrait de https://facebook.github.io/react/
Photo prise lors de la conférence Comment faire tourner une JVM de 16 To animée par Antoine Chambille et Romain Colle (Quartet FS)
Big Memory Servers avec architecture NUMA :
- Bullion 24 TB – 288 Cores – Linux : serveur modulaire qu’on peut étendre, assemblé en France
- Oracle Sparc M7-16 : 16 TB – 512 Cores – Solaris
D’après la conférence Live Documentation : vous allez aimer la documentation animée par Cyrille Martraire
D’après le quickie Ratez ses revues de code en 5 leçons animée parMichel Domenjoud (Octo)
Partager les connaissances et les standards
3 types de revue de code : par un pair, collective ou pair programming