Agile Scrum
L’Agilité, c’est quoi ?
- Les racines de l’Agilité (Manifeste Agile),
- Un cycle de vie différent
La méthode Scrum
- Présentation de la méthode Scrum,
- L’équipe Scrum et ses rôles : le Product Owner, le ScrumMaster et l’équipe, le stakeholder,
- Les responsabilités de chaque rôle
- Les pratiques d’ingénierie agiles du logiciel
Le Scrum Master en détail
- Un facilitateur et un garant de la méthode
- Responsabilités croisées entre Scrum Master et Product Owner
- Accompagnement de l’équipe de développement
- Accompagnement de l’organisation dans la mise en oeuvre de l’agilité
- Orientation solution / Servant Leadership
Le Backlog de produit
- Identifier les Features et les Acteurs (Personas)
- Introduction aux «User Stories»
- Cycle de vie d’une User Story
- Rédiger les Users Stories à partir des Features
- Découper et détailler et prioriser les Users Stories dans le Backlog de produit
- Business Value et Effort quelles différences ?
Gestion du backlog et préparation du Sprint
- Techniques d’estimations des Users Stories
- Priorisation & plans (Périmètre fixé, Date fixée)
- Vélocité estimée & mesurée de l’équipe
- Définition de prêt et de fini
Démarrage et déroulé du Sprint
- Planification de sprint
- Atelier : Session de planification de sprint : Création des tâches
- Le Daily Scrum : 3 questions quotidiennes
- Gestion des impondérables
- L’avancement du sprint
- Les tests dans un contexte Agile
Fin du Sprint
- Livraison d’un incrément
- S’améliorer à intervalles réguliers
- La « sprint retrospective»
Les outils du Scrum Master
- Suivi du projet et gestion du temps
- Indicateurs et Key Performance Indicators (KPI)
- Suivre la qualité
- Comprendre les différents graphiques
Préparation à la certification
- Passage d’un test à blanc en situation réelle
- Travail de groupe et correction collective
- Préconisations et mode d’emploi, les pièges à éviter et le vocabulaire
Algorithme
Maîtriser les outils de l’algorithmique (Schémas de programme, types et structures de données, modules)
Acquérir les bases des méthodes de programmation structurée nécessaires à l’apprentissage de tout langage de programmation
Apprendre à raisonner sur un algorithme
Maîtriser les notions de fichiers
Découvrir et mettre en œuvre la traduction d’un algorithme dans un langage de programmation
Développement basé sur la réalisation de modèles avec UML
Modélisation objet
- Objectifs et principes d’un développement basé sur la réalisation de modèles objets (MDE/MDA)
- Les concepts généraux de modélisation objet (abstraction, classe, encapsulation, …)
Présentation UML & méthode (UP)
- Unified Modeling Language (UML)
- UML et les processus méthodologiques
- Présentation d’Unified Process (UP)
UML pour la maîtrise d’œuvre
- Architecture
- Différents modèles d’architecture
- Composants, programmation métier
Conception Préliminaire
- De l’analyse à la conception
- Projection du modèle d’analyse sur l’architecture
- Définition de contrats entre modules fonctionnels
- Interface d’architecture, de métier, de contrôle
Conception de l’implémentation métier
- Avantage du modèle objet
- Design Pattern métiers : adapteur, décorateur, etc.
- Framework, logiciels et outils
Conception détaillée
- Diagramme de communication
- Diagramme de structure composite
Conception de l’IHM
- Le Design Pattern d’IHM : Model View Controller
- Framework d’IHM
Conception d’architecture
- Styles et patterns d’architecture
- Architecture logicielle à base de composants
L’approche par frameworks et composants
- Cycle de vie des logiciels et problèmes d’évolution et de maintenance
- Comment concevoir et réaliser des applications rapidement à partir de frameworks et de composants réutilisables ?
Programmation Java – Fonctions Essentielles
Présentation de Java
- Historique
- La machine virtuelle (JVM)
- Focus sur la gestion mémoire (pile, tas, garbage collector)
- Présentation de J2SE
- Bien utiliser l’aide en ligne
- Caractéristiques du langage
- La variable Classpath
- Les fichiers .jar
Présentation d’Eclipse
- Espace de travail et projet
- Organisation de l’outil (perspectives, vues, éditeurs)
- La perspective Java
- La perspective Debug
- Installer un plugin
Structure et syntaxe du langage
- Constructions de base du langage
- Types, identificateurs et variables
- Constantes
- Tableaux à N dimensions
- Instructions conditionnelles/itératives et opérateurs
Notions Objet en Java
- Notions élémentaires (classes, objet, attributs, méthodes, constructeurs)
- Relations de composition, associations
- Organisation du code (package, visibilité et encapsulation)
- Notions avancées (héritage, polymorphisme, classes et méthodes abstraites, interfaces)
- Autoboxing des types primitifs
- Transtypage des objets
- Les classes internes
Gestion des exceptions
- Hiérarchie des classes d’exceptions
- Exceptions contrôlées et non contrôlées
Mécanisme try-catch, rôle de finally, try-with-ressources
- Propagation d’exceptions
Librairies standards
- La classe Object
- La classe System
- Chaînes de caractères (String et StringBuffer)
- Types élémentaires (classes wrapper, formatage des nombres, manipulation des dates / heures)
- Collections (Collection, List, Set, Map, Iterator)
- Classes ArrayList, HashSet, TreeSet, HashMap
- Les types génériques
Les flux d’entrées-sorties
- Flots d’octets, de caractères
- Manipulation de fichiers en lecture/écriture
- Manipulation de répertoires
- Bufferisation des données
- Sérialisation d’objets
Les évolutions de Java
- Les nouveautés des dernières versions Java
- Les expressions Lambda
- Stream, Date & Time, Teeing Collectors…
Programmation Java – Fonctions Avancées
Syntaxe avancée
- Les classes internes et anonymes
- Les constructeurs
- Les blocs d’initialisation
- Les types génériques
- La syntaxe des lambdas
- La syntaxe des références de méthode
Le package java.lang
- La classe Object
- L’interface Comparable : égalité et comparaison
- L’interface Clonable : copie d’objet
- Les wrappers et l’autoboxing : conversions de type
- Les chaînes : String, CharSequence, Appendable, StringBuffer, StringBuilder, …
- Les extensions syntaxiques : Iterable, AutoCloseable
- Les énumérations : classe Enum
- Les opérations mathématiques : Math et StrictMath
- Les annotations standards (@Deprecated, @Override, …)
- Les exceptions : Throwable, Exception, Error, RuntimeException, …
- Les classes utilitaires : System, Runtime, Process et ProcessBuilder
- Les bases du parallélisme : Runnable, Thread, …
- L’introspection : Class, Package, ClassLoader …
- Les autres éléments du package java.lang
Le package java.math
- Les nombres réels et les erreurs d’arrondis
- Les nombres étendus : BigInteger, BigDecimal
- La gestion des arrondis : MathContext et RoundingMode
Le package java.util
- Les collections : Collection, List, Queue, Set, Map, …
- Itérer sur les collections : Enumeration et Iteration
- Les classes d’implémentations de collections
- Les classes utilitaires : Collections et Arrays
.La gestion du temps : Date, Calendar, …
.La représentation de la monnaie : Currency
.Le paramétrage : Properties
.L’internationalisation : Locale, ResourceBundle, Formatter, …
.Les classes utilitaires : Scanner, StringTokenizer, Random, …
.Les autres éléments du package java.util : Observer, Observable, ServiceLoader, …
Le package java.text
- La comparaison des chaînes de caractères : Collator, RuleBasedCollator
- Le formatage textuel : Format, MessageFormat, NumberFormat, DateFormat, …
Le package java.io
- La gestion de fichiers : File, FileFilter, FilenameFilter, …
- La gestion des flux binaires : InputStream, OutputStream, …
- La gestion des flux textes : Reader, Writer, …
- La gestion des flux d’objets : Serializable, Externalizable, …
- Les classes utilitaires : Console, StreamTokenizer, RandomAccessFile
Le package java.nio
La “nouvelle” gestion de fichiers : FileStore, FileSystem, Path, FileSystems, Files, Paths, PathMatcher, WatchService, …
- Les transferts de données : Buffer, Channel, Channels, …
- Le package java.net
- Les accès réseau : URL, URLConnection, URLEncoder, URLDecoder
- Les protocoles TCP et UDP : InetAddress, NetworkInterface, Socket, ServerSocket, …
Le package java.time
- Les nouvelles classes temporelles : Instant, Duration, LocalDate, LocalTime, Period, YearMonth, Temporal, …
- Les packages java.util.fonction et java.util.stream
- Les FonctionalInterface : Consumer, Predicate, Fonction, Supplier, …
- Les interfaces de streams : BaseStream, Stream, Collector, …
.La construction des streams : stream(), paralleleStream(), iterate(), generate(), …
.Les fonctions d’aggregats : forEach, filter, sorted, map, collect, …
- Aperçu de quelques autres packages
.Le package java.util.logging : les traces
.Le package java.util.prefs : la gestion des préférences utilisateurs
.Le package java.util.jar : la gestion des jar
.Le package java.util.zip : la gestion des zip
.Le package java.util.regex : les expressions regulières
.Le package java.awt : les interfaces graphiques natives
.Le package javax.swing : les interfaces graphiques riches
Projet contenus Java SE
- Les stagiaires travaillent en toute autonomie, en binôme. Ils sont libres d’effectuer les choix adaptés, de développer les parties dont ils jugent avoir le plus besoin et d’apporter leurs propres solutions aux problèmes posés.
- Le formateur encadre les stagiaires par sa présence et répond aux questions. Il intervient pour épauler un binôme en difficulté ou pour faire le point à l’ensemble du groupe sur des notions non acquises. Il peut être amené à approfondir ou compléter certaines connaissances.
Langage SQL
Introduction
Les requêtes simples
- Connaître la syntaxe de l’ordre SELECT
- Connaître les prédicats simples
- Savoir écrire des requêtes sur une seule table
- Comprendre ce qu’est une jointure
- Savoir écrire des requêtes sur plusieurs tables
- Connaître les fonctions utilisées dans les requêtes
Les requêtes avec regroupement
- Comprendre le regroupement
- Savoir écrire une requête utilisant le regroupement
Les requêtes ensemblistes
- Connaître les opérateurs ensemblistes
- Savoir écrire une requête utilisant des opérateurs ensemblistes
Les requêtes imbriquées
- Connaître les opérateurs utilisés pour les sous requêtes
- Savoir écrire des requêtes imbriquées
Le langage de manipulation des données
- Savoir insérer une ligne dans une table
- Savoir modifier une ligne dans une table
- Savoir supprimer une ligne dans une table
Programmation Java et Base de données
JDBC: API SQL pour Java
- JDBC, Java, ODBC, SQL
- Architecture, interfaces, exemples
Java et le client-serveur
- Architecture “classique”
- Architecture revisitée: Java côté client, Java côté serveur
Accès aux bases de données JDBC
- Utilisation de l’API JDBC
- Sélection des pilotes de base de données
- Connexion à une base de données
Mise en œuvre
Sécurité Owasp
Sécurité de la machine virtuelle Java
- Chargement des classes. Concept de « bac à sable »
- SecurityManager, AccessController et définition des permissions (fichiers .policy)
- Créer ses permissions avec Java Security Permission
- Mécanismes de protection de l’intégrité du bytecode, la décompilation et l’obfuscation du code
- Spécificités des Applets en matière de sécurité
Java Authentication and Authorization Service
- Architecture de JAAS
- Authentification via le PAM, notion de Subject et de Principal
- Gestion des permissions, les fichiers .policy
- Utiliser JAAS avec Unix ou Windows, JNDI, Kerberos et Keystore. Le support du SSO
Les vulnérabilités des applications Web
- Pourquoi les applications Web sont-elles plus exposées ? Les risques majeurs des applications Web selon l’OWASP.
- Les attaques « Cross Site Scripting » ou XSS. Pourquoi sont-elles en pleine expansion ? Comment les éviter ?
- Les attaques en injection (commandes injection, SQL Injection, LDAP injection…). Les attaques sur les sessions.
- Exploitation de vulnérabilités sur le frontal HTTP (ver Nimda, faille Unicode). Attaques sur les configurations standard
- Comment effectuer la recherche des vulnérabilités
- Comment effectuer la recherche des vulnérabilités.
- Rechercher les vulnérabilités les plus répandues. Le Cross-Site Scripting. L’injection SQL.
- Les erreurs de logique applicative. Le buffer overflow (débordement de tampon). L’exécution de commandes arbitraires.
Les bonnes pratiques
- Quels sont les différents types d’entrées ? Comment effectuer la validation des entrées ?
- Quels sont les types d’opérations qui peuvent être effectuées sur les types numériques ?
- Les classes et les exceptions.
- Multi-threading et synchronisation.
- Les entrées-sorties, la sérialisation.
- Savoir effectuer la gestion des permissions.
Test IT, Le TDD
Les méthodes Agiles
- Présentation des méthodologies Agiles
- Approche en cascade vs approche itérative
- Le manifeste Agile
- La définition de « Terminer »
- Ce qu’il faut mettre en place pour itérer sur un projet
- La méthode SCRUM
Initiation au TDD
- Présentation du TDD
- Tests traditionnels et TDD
- Impact sur la documentation
- Impact des tests sur la conception
- Le développement orienté comportement
- Coûts et bénéfices
Mise en place du TDD dans une équipe
- Signaux externes de qualité d’un produit
- Résistances fréquemment rencontrées
- Mise en place d’un processus vertueux
- Rétrospectives
- Mythes et incompréhension
Présentation des outils de test
- Les outils xUnit
- Les Matchers Hamcrest
- Mock/fake/stub/dummy
- Différence entre simulacre et bouchons
- Présentation de l’outil easy-mock
- Bonnes pratiques
Re-factorisation
- Principes
- Niveaux de re-factorisation
- Quand doit-on re-factoriser ?
- Évaluer la qualité du code par des métriques
- La couverture de tests
- Les règles d’un design simple
Aller plus loin
- TDD et interfaces utilisateurs
- Spécificité de TDD et le développement d’une base de données
- L’intégration continue
- Exemple d’usine logicielle
- Les tests de charges
Dépendance avec Maeven
Introduction Maven
- Définition de Maven pour un développeur
- Définition de Maven pour un chef de projet
- Règle du « Convention over configuration » dans Maven
- Valeur ajoutée de Maven par rapport à ANT
Le POM (Project Object Model)
- Définition de Maven pour un développeur
- Présentation du modèle POM Maven et notion de coordonnées
- Détails et sections du fichier pom.xml de Maven
- Le « super POM » et les mécanismes d’héritage de Maven
- Exploration de la structure des projets Maven
- Les types de projets Maven
- Notion de propriétés et de filtre des ressources dans Maven
Repository Maven et coordonnées
- Repository local de Maven : .m2/repository
- Mécanisme de localisation d’une librairie dans Maven
- Notion de repositories distants
- Outillage pour la gestion du cache et de la sécurité avec Nexus
- Mise en place de Maven
- Présentation du modèle POM Maven et notion de coordonnées
- Détails et sections du fichier pom.xml de Maven
- Le « super POM » et les mécanismes d’héritage de Maven
- Exploration de la structure des projets Maven
- Les types de projets Maven
- Notion de propriétés et de filtre des ressources dans Maven
Gestion de dépendances
- Dépendance transitive dans Maven
- Optimisation des dépendances dans Maven
- Le cycle de construction d’un projet Maven
- Les différents cycles de construction
- Comprendre les phases / goals /cycles Maven
JPA avec Hibernates
Introduction
- Notion de mapping Objet/Relationnel
- Historique d’hibernate
- Hibernate et les spécifications JPA
- Concurrents : EclipseLink, iBatis
- Versions d’hibernate
Persistance avec JPA
- Spécification JPA 2.0
- Fournisseur de persistence
- EntityManagerFactory
- EntityManager
- persistence.xml
- Persistence unit
- @ManyToOne, @ManyToMany
- Eager, Lazy
- Implications Jee
- Fetching
Persistance avec Hibernate
- Processus de développement
- Top-down, Bottom-up, Meet in the meedle
- Connexion à la base de données
- Configuration d’Hibernate et Session Factory
- Création, ajout et suppression d’objets
- Session Hibernate
- HibernateUtils
Conception avec Hibernate
- Design Patterns pour couche de persistance
- Persistance du modèle objet
- Gestion de l’héritage
- Gestion des associations
HQL et JPQL
- Clauses des requêtes
- Les fonctions d’aggrégation
- Les requêtes polymorphes
- Les sous requêtes
Utilisation avancée d’Hibernate
- Transactions
- Exceptions
- Gestion du cache
- Lazy-Loading
Mapping objet relationnel
- Ecriture du fichier de mapping
- Gestion de l’identifiant
- Types de données et personnalisation
- GTypes de mapping (Top-Down, Bottom-Up, Meet in the Midlle)
- Mapping d’héritage (une table par classe, une table par hiérarchie… )
- Mapping d’association (par clé étrangère, par table de jointure…)
Architectures techniques
- Hibernate dans une application client / serveur
- Hibernate dans une application Web
- Hibernate dans une architecture distribuée
Intégration frameworks
- Introduction Hibernate et Spring
- Intégration hibernate et Struts
- Designs pattern MVC, Business Delegate
Cache
- Stratégies de cache
- Cache niveau 1
- Cache niveau 2
- Types de Cache
- Configuration statique
- Configuration dynamique
Transactions
- Problématique
- Design pattern
- Niveau d’isolation
- Appli multi bases
- Mise en oeuvre
- Implémentations
Initiation Web avec HTML5, CSS3, JavaScript, Bootstrap
Introduction protocole HTTP
- Requêtes et Réponse HTTP
- En tête HTTP
- Codes retour serveur
- Analyse avec F12
Introduction langage HTML
- Contexte : web statique
- Balises HTML
- HTML et HTML 5
- Formulaire
- Audio et Vidéo
- Validation de champs
Introduction CSS
- Contexte : ergonomie et habillage web statique
- Feuille de style externe, interne et inline
- Notion de cascade
- Notion de class
- Notion de id
- Notion de block
- Sizing et Positionning
Introduction Javascript
- Contexte : web dynamique
- Spécification ECMA Script
- Les objets javascript
- Les objets du navigateur
- Validation des champs
- Gestion DOM : Document Object Model
- Gestion Evénements
Introduction BOOTSTRAP
- Notion de framework
- Augmenter la productivité et l’ergonomie des écrans web
- CSS et Javascript BOOTSTRAP
- Installation et mise en oeuvre
Java EE et les API Sevlet et les JSP
L’API Servlet
Présentation
- Principales classes de l’architecture Servlet (ServletContext, ServletRequest, ServletResponse, …)
- Le cycle de vie d’une servlet et la gestion des servlets par le conteneur.
- Méthodes doGet et doPost
Déploiement des applications sur le serveur Web
- Fichiers WAR et EAR
- Fichier de configuration web.xml
- Déploiement sur un serveur à l’aide de Ant
Paramétrisation des servlets
- Paramètres d’initialisation
- Exploration du client et du serveur
- Récupération des paramètres http
Suivi de session
- Récriture d’URL
- Champs cachés de formulaires
- Cookies
- Utilisation d’un objet session
- Contexte d’une servlet
Les JSP
Présentation des JSP
- Forme des JSP
- Les étapes d’une requête JSP
Composants d’une JSP
- Directives
- Scripts JSP (déclarations, expressions et scriplets)
- Les objets implicites et leur portée
- Traitement des erreurs JSP
Les bibliothèques de balises
- Les taglibs et leur descripteur XML
- Balises personnalisées
- Balises d’actions prédéfinies
- Utilisation des JavaBeans dans les JSP
Java Server Tags Librairies et Java Server Pages
- Langage EL
- Les librairies standards (core, fmt, …)
- Ecriture de librairies spécifiques
Commande Linux
Introduction
- Présentation des shells
- Premières commandes
- Les différents Shell
- Comparaison de sh, bash, ksh et dash
Aide
- L’aide locale
- À savoir
- Freenode
- Usage IRC
Commandes de base
- Accéder au contenu des fichiers
- Commandes de compression, d’impression et de gestion du temps
- Gestion administration
- Commandes composites pipes et redirections
Variables
- Présentation
- Variables utilisateur
- Prompt
- Substitutions
Commandes internes
- Set
- cd, pushd, popd, umask, type, enable
- Historique et Alias
- Commande sur les processus : kill, jobs, wait, ulimit
Utilitaires
- Commandes cut, tr, uniq, sort, wc, find, grep
- Commandes de transformation : iconv, od, nl, basename, diff
- Commandes utilitaires : xargs, tee, cmp, comm, paste, sed
- Expressions régulières
Docker
De la virtualisation à Docker
- Les différents types de virtualisation.
- La conteneurisation : LXC, namespaces, control-groups.
- L’évolution de Dotcloud à Docker.
- Le positionnement de Docker.
- Docker vs virtualisation
Présentation de Docker
- L’architecture de Docker.
- Disponibilité et installation de Docker sur différentes plateformes (Windows, Mac et Linux).
- Création d’une machine virtuelle pour maquettage.
- La ligne de commande et l’environnement.
- Travaux pratiques
- Créer une machine virtuelle pour réaliser un maquettage
Mise en oeuvre en ligne de commande
- Mise en place d’un premier conteneur.
- Le Docker hub : ressources centralisées.
- Mise en commun de stockage interconteneur.
- Mise en commun de port TCP interconteneur.
- Publication de ports réseau.
- Le mode interactif.
- Travaux pratiques
- Configurer un conteneur en ligne de commande
Création de conteneurs personnalisé
- Produire l’image de l’état d’un conteneur.
- Qu’est-ce qu’un fichier DockerFile ?
- Automatiser la création d’une image.
- Mise en oeuvre d’un conteneur.
- Conteneur hébergeant plusieurs services : supervisor.
- Travaux pratiques
- Créer un conteneur personnalisé
Mettre en oeuvre une application multiconteneur
- Utilisation Docker Compose.
- Création d’un fichier yaml de configuration.
- Déployer plusieurs conteneurs simultanément.
- Lier tous les conteneurs de l’application.
- Travaux pratiques
- Mettre en oeuvre une application multiconteneur
Interfaces d’administration
- L’API Docker et les Webservices.
- Interface d’administration en mode Web.
- Docker Registry : construire et utiliser son propre hub.
- Exercice
- Construire et utiliser son propre hub
- Automatiser le démarrage des conteneurs au boot.
- Gérer les ressources affectées aux conteneurs.
- Gestion des logs des conteneurs.
- Sauvegardes : quels outils et quelle stratégie ?
- Travaux pratiques Administrer les conteneurs
Introduction à Kubernetes
Gestion des versions sources avec Git
Le contrôle de version
- Pourquoi versionner son code source ?
- Les concepts de base du contrôle de version
Le principe DVCS
- Qu’apporte la décentralisation ?
- Principe de fonctionnement
- Branche, dépôt, merge, rebase et tous les concepts DVCSLe contrôle de version
- Pourquoi versionner son code source ?
- Les concepts de base du contrôle de version
Utilisation au jour le jour
- Créer/cloner un dépôt
- Consulter l’état de l’arbre de travail
- Visualiser les modifications
- Enregistrer les modifications
- Parcourir l’historique des révisions
- Retrouver l’auteur d’une modifications
- Les concepts de base du contrôle de version
Gestion de dépôt et branches
- Créer une branche
- Passer de branche en branche avec les merges ou le rebase
- Mettre à jour un dépôt
- Exporter son dépôt
- Les dépôts distants
Spring Core et Data
Introduction à Spring
- Concepts de conteneur léger
- Vue d’ensemble et exemples d’utilisation
- Pattern « Inversion de Contrôle (IoC) ; Injection de dépendance »
- Tests unitaires en isolation
- Approche MVC avec Spring MVC
Mise en oeuvre de Spring
- Les Beans, BeanFactory et ApplicationContext
- Modes singleton ou prototype
- Gestion des propriétés, « collaborators »
- Méthodes d’injection de dépendance
- Configuration de Beans spécifiques à Spring, cycle de vie
- Définition de Bean abstrait et héritage
Spring et l’accès aux données
- Pattern DAO avec JDBC et les Classes abstraites de Spring
- Implémentation DAO avec les APIs Hibernate
- Démarcation de transactions par programmation et déclaration
Gestion des transactions
- Concept de transaction
- Gérer les transactions avec Spring
- Transactions programmatiques
- Transactions déclaratives
Spring MVC/REST
Présentation de Spring
- Introduction à la configuration Spring
- Cycle des objets Spring
- Simplification de la configuration
- Test d’intégration avec Spring
Les bases de Spring Web MVC
- Pattern modèle-vue-contrôleur dans Spring MVC
- La DispatcherServlet
- Présentation du modèle de programmation des contrôleurs
- Les vues dans Spring MVC
- Simplication de la configuration
Options de configuration de Spring MVC
- Beans d’infrastructure dans Spring MVC
- Mapping d’URL
- Intercepteurs et adaptateurs
- Résolution des exceptions
- Source de messages
Gestion de la présentation dans Spring MVC
- Structuration des pages
- Modèles réutilisables avec Apache Tiles
- Configuration de Tiles dans Spring MVC
Utilisation des vues dans Spring MVC
- Vues et résolution
- Chaîne de résolution des vues
- Alterner les vues
- Vues JSON
Formulaires avec Spring MVC
- Rendu des formulaires
- Conversion des données
- Data binding
- Validation avec Spring et Bean Validation (JSR 303)
- Gestion des objets de formulaire
Personnalisation de l’apparence avec Spring MVC
- Support de l’internationalisation
- Changement du look-and-feel avec les thèmes
Applications Web riches avec Ajax
- Ajax et Spring MVC
- Utilisation des frameworks JavaScript
- Spring MVC et jQuery
- Création de tag pour diminuer la taille des JSP
Sécurité des applications Web avec Spring Security
- Motivations derrière Spring Security
- Spring Security dans un environnement Web
- Utilisation des tags de Spring Security
- Sécurisation des méthodes Java
REST avec Spring MVC
- Contrôleur et mapping d’une requête
- Filtres
- Gestion des erreurs
- Vues
Spring Boot et Security
Introduction
- Le module Spring Boot
- Les requis
Les principales fonctionnalités
- Le support de différents types d’application
- Convention over configuration
- L’auto-configuration
- La gestion simplifiée des dépendances avec les starters
- Le support de Maven et Graddle
La création d’une application
- La création d’un projet dans STS
- La création avec Spring Initializr
- La création d’un projet avec Maven
Une application Spring Boot
- Une application standalone
- La classe SpringApplication
- La configuration d’une application
- Une application de type webapp
Les dépendances
La configuration des propriétés
- Les propriétés
- L’utilisation de fichier .properties
- L’utilisation de fichier YAML
- La définition de valeurs aux propriétés
- La bannière ASCII
Le support de Spring Boot dans STS
Spring Boot Devtools
- Des propriétés par défaut
- Le redémarrage automatique de l’application
- Le débogage distant
- Le support du Live Reload
- La persistance des sessions HTTP entre les redémarrages
Mise en œuvre de fonctionnalités
- REST
- Spring Data REST
- Spring Security
- Le logging
- Le cache
- Le scheduling
- Les Servlets
Le déploiement d’une application
- Le packaging
- L’exécution d’une application
- Une application Autoexecutable
- Les Profiles
Spring Boot Actuator
- L’activation
- Les endpoints
- Les métriques personnalisées
Spring CLI
React
Introduction à l’ES6 et aux modules
- Rappels
- Design patterns
- Nouveautés de la syntaxe ES6
- Compilation du code ES6 avec Babel
- Typescript et Flow
- Gestion des modules avec Webpack
Introduction à React
- Ecosystème des frameworks JavaScript
- Différentes approches du data-binding
- Philosophie de React
- Environnement de développement
- Outils de debug
Développer avec React
- Création d’un composant
- La syntaxe JSX
- JSX vs JavaScript
- Comprendre JSX en détails
- Gestion du « state » du composant
- Les méthodes du cycle de vie
Interactivité des composants
- Gestion des événements
- Imbrication de composants
- Utilisation des « props »
- Composants réutilisables
- Manipulation du DOM
- Gestion des formulaires
- Design pattern des composants
Application monopage avec Flux ou Redux
- Présentation de Flux
- Installation de Redux
- Les différentes entités du pattern Flux
- Principe du « one way data flow »
- Présentation de Redux
- Utilisation du store
- Les actions et le reducer
- Extensions utiles de Redux
- Intégration dans React
- L’internationalisation
La navigation avec React Router
- Présentation de React Router
- Installation de React Router
- Configurer les routes
- Récupérer les paramètres de l’URL
- Créer des liens
- Déclencher une navigation
Application isomorphique
- Principe et bénéfice du développement isomorphique
- Écosystème du Javascript côté serveur
- Configuration de NodeJS pour React
- Récupérer les paramètres de l’URL
Introduction à React Native
- L’hétérogénéité des OS mobiles
- Natif vs hybride vs cross-platform
- Principales solutions cross-platform
- React Native
- Démonstration d’application React Native
Présenter ses nouvelles compétences
Les bases de la communication
- Ecoute active
- Le questionnement
- Reformulation et feedback
La communication verbale et non verbale
- Importance de la communication non verbale
- Savoir se présenter à l’oral
- Postures – Attitudes – Discours
Les profils comportementaux
- Les 4 profils
- Auto évaluation
- Développer son adaptabilité relationnelle
Développer son Capital Talents
- Définition d’un talent
- Talent vs points forts
- 5 stratégies pour gérer ses points faibles
Projet final
- Les stagiaires travaillent en toute autonomie, en binôme. Ils sont libres d’effectuer les choix adaptés, de développer les parties dont ils jugent avoir le plus besoin et d’apporter leurs propres solutions aux problèmes posés.
- Le formateur encadre les stagiaires par sa présence et répond aux questions. Il intervient pour épauler un binôme en difficulté ou pour faire le point à l’ensemble du groupe sur des notions non acquises. Il peut être amené à approfondir ou compléter certaines connaissances.