Index de connaissances pour le cours de programmation serveur – l'IUT de Paris Descartes – début 2017
Liste et contenu des exercices disponible dans le dossier exercices
- Frontend = client
- Backend = serveur
- Le client peut être une app desktop, app mobile, webapp, site internet...
- Le serveur peut être une machine hébergée dans un datacenter, ou n'importe quel ordinateur accessible depuis internet
- En développement, le client et le serveur peuvent être sur la même machine
- Anciens termes : front-office / back-office (plutôt liés à la notion de métiers, ou aux types d'utilisateurs)
- Ne pas confondre avec les notions de
front = utilisateur final
etback = administrateur
- Ici, nous parlons de frontend et backend development
- Ne pas confondre avec les notions de
- Frontend vs. Backend (anglais)
- Différence entre developpeur front-end et back-end (français)
- Mainframes (puissant serveur central avec des écrans d'accès)
- P2P (système de communication et échange de données de client à client)
- 2 niveaux, 3 niveaux, N niveaux
- SOA et microservices
- Serverless (type FaaS)
- Microservices (anglais)
- Serverless (anglais)
- Différence entre client lourd, client léger, client riche
- Protocoles : HTTP, FTP, SMTP (+ WS)
- Compréhension du processus de requête (client) -> réponse (serveur)
- Connaître les différents modes de requête et le rôle de chaque partie : synchrone, asynchrone, push / temps réel
- Comprendre les notions de DNS (Domain Name System), cache, CDN (Content Delivery Network)
- Formats de données pour les échanges : HTML, JSON, XML
- Différence entre GET et POST, utilisation de la bonne method selon le besoin (+ DELETE / PUT)
- Basic concepts of web applications, how they work and the HTTP protocol (vidéo en anglais)
- WebSockets | MDN
- Architecture 3 tiers
- Installation et configuration d'un bundle pour Windows : EasyPHP
- Connaissance des outils individuels :
- Apache, PHP, MySQL
- Alternatives : Nginx, MariaDB, PostgreSQL
- phpMyAdmin, outils de développement de Chrome ou Firefox
- Conception d’interfaces web en HTML et CSS
- Création de liens dynamiques entre pages HTML
- Gestion des requêtes et URLs avec un serveur web (Apache)
- Connaître les différences basiques entre les versions de PHP, et savoir quelle version utiliser en priorité : 5.x / 7.x
- Connaître les bases du langage : conditions
if
/elseif
/else
/switch
, bouclesforeach
/for
/while
, structures de donnéesarray()
/[]
- Utiliser la syntaxe orientée vue (HTML) :
if ():
…endif;
- Superglobales :
$_GET
,$_POST
,$_SERVER
,$_SESSION
,$_FILES
- Utiliser des fonctions standards :
include()
etrequire()
(+_once
),isset()
/empty()
,intval()
,date()
,is_string()
,array_push()
,die()
/exit()
… - Transformation de données avec
json_encode()
/json_decode()
et manipulation de fichiers avecfile_put_contents()
etfile_get_contents()
- Créer une class et manipuler des objets
- Savoir chercher et utiliser la documentation
- Awesome PHP
- PHP: The Right Way (anglais)
- Comprendre le principe d’une architecture MVC, ses avantages et limitations
- Installer et configurer un framework MVC (CodeIgniter)
- Utiliser un micro-framework (Lumen)
- Installer et configurer un CMS (WordPress)
- Concevoir une API
- Comprendre la différence entre REST et RPC
- MVC architecture
- A comparison of REST and RPC (anglais)
- Différence entre les principaux moteurs de stockage : MyISAM et InnoDB
- SELECT, INSERT, UPDATE, DELETE / LIMIT
- Utilisation des jointures : LEFT JOIN, INNER JOIN
- Connexion à une base de donnée (MySQL)
- Passer des paramètres PHP
- MySQL LIMIT (anglais)
- MySQL Joins (anglais)
- What is the difference between "INNER JOIN" and "OUTER JOIN"? (anglais)
-
Sensibilisation aux problématiques courantes
- Validation des données saisies par l'utilisateur
- Injections SQL
- Attaques XSS et CSRF
- Prévention de l'accès direct aux dossiers et fichiers de l'application, protection des données de session, gestion de l'affichage des erreurs...
-
Introduction aux tests avec PHPUnit (<- non réalisé en cours)
- Tests : PHPUnit (anglais)
- 8 Practices to Secure Your Web App (anglais)
- Savoir utiliser Git et un repository en ligne
- Comprendre le fonctionnement d’un gestionnaire de sources
- Connaître les alternatives et leurs avantages/inconvénients
- Importance de déployer le plus tôt possible (anticiper les difficultés, réorienter les choix d’outils et d’architecture…)
- Solutions, outils, optimisations
- Plateformes : Heroku, DigitalOcean
- Outils : Deployer, Docker
- Utiliser une configuration de "production" (vs. "development") : activation du cache, désactivation de l'affichage des erreurs…