Cours-Gratuit
  • Accueil
  • Blog
  • Cours informatique
home icon Cours gratuits » Cours informatique » Cours développement web

Formation d'initiation au web development tools

Formation d'initiation au web development tools
Participez au vote ☆☆☆☆☆★★★★★

Formation d'initiation au web development tools

...

Traiter la requête (cas simples) ou la rediriger à un autre programme (cas complexes).

Apache. Logiciel libre et gratuit. Lancé en 1995 !

IIS. Fourni avec Windows, propriétaire.

nginx. Haute performance, libre et gratuit, lancé en 2002.

(Cependant, en août 2013, lancement de Nginx Plus, payant.)

GWS. Google Web Server, interne. (Trafic de Google !)

lighttpd Alternative légère à Apache.

Autres Rares, expérimentaux, embarqués...

...

Logs

Souvent, le serveur Web loggue toutes les requêtes traitées !

NCSA Common log format :

Adresse IP du client

Identité ident (obsolète)

Identité authentification HTTP (rarement utile)

Date et heure de fin de traitement

Première ligne de la requête HTTP

Code d’état retourné au client

Taille (octets) de la réponse

Ajouts fréquents :

User-Agent pour identifier le client

Referer pour connaître la page précédente.

208.115.113.88 - - [22/Jan/2012:06:27:00 +0100] "GET /robots.txt HTTP/1.1" 404 266 "-" "Mozilla/5.0 (compatible; Ezooms/1.0;)"

Utilisation des logs

Pages les plus visitées.

Chemin sur le site, temps passé sur les pages, entrées, sorties (mais avec les onglets ?)

Distinguer humains et robots (pas de garanties !)

Emplacement géographique des visiteurs

Mots-clés saisis dans les moteurs de recherche

Liens vers son site

Nombre d’abonnés à un flux RSS dans User-Agent.

Spam dans Referer

Et plus ?

Logiciels pour exploiter directement les logs du serveur.

Tracking en PHP.

Tracking tiers en JavaScript (Google Analytics).

Tracking possible du pointeur de la souris en JavaScript, etc

Sites Web statiques simples

Les différentes ressources sont stockées dans des fichiers :

→ /var/www/page.html, /var/www/style.css...

Les pages sont organisées en une arborescence de répertoires.

Les chemins demandés correspondent à l’arborescence :

→ GET /a/b.html correspond à /var/www/a/b.html.

Si un répertoire est demandé :

Servir index.html s’il existe.

Sinon, produire une liste des fichiers du répertoire.

→ Pérennité des URLs ?

Sites Web statiques simples

Les différentes ressources sont stockées dans des fichiers :

→ /var/www/page.html, /var/www/style.css...

Les pages sont organisées en une arborescence de répertoires.

Les chemins demandés correspondent à l’arborescence :

→ GET /a/b.html correspond à /var/www/a/b.html.

Si un répertoire est demandé :

Servir index.html s’il existe.

Sinon, produire une liste des fichiers du répertoire.

→ Pérennité des URLs ?

(Démo : naviguer dans une arborescence.)

Extensions Apache

Les fichiers .htaccess permettent de paramétrer Apache : deny from all pour interdire un répertoire.

Authentification HTTP

URL rewriting :

RewriteRule (.*\.png) /images/$1

Server Side Includes :

<!--#include virtual="/footer.html" -->

... ...

CGI

Moyen historique pour un serveur Web d’invoquer un programme externe (n’importe quel langage).

Exécute le programme sur les paramètres de la requête.

Le résultat de la requête est ce que renvoie par le programme.

Inconvénient : créer un processus par requête est trop lourd.

→ FastCGI et autres mécanismes.

→ Intégrer le langage au serveur (par exemple PHP).

PHP

Lancé en 1995 ; des centaines de millions de sites l’utilisent 2.

Langage de programmation complet.

S’ajoute aux pages HTML. Exemple :

<ul>

< ?php

$from = intval($_POST['from']);

$to = intval($_POST['to']);

for ($i = $from ; $i < $to ; $i++) {

echo "<li>$i</li>" ;

}

?>

</ul>

Inconvénients de PHP

Pas prévu comme un langage complet à l’origine.

→ À l’origine, Personal Home Page.

→ Difficile d’assurer la compatibilité...

Promeut de mauvaises pratiques de sécurité.

→ Historiquement, $_POST['from'] accessible comme $from !

→ Facile d’oublier de (re)valider les données utilisateur...

Mauvaises performances ?

→ À l’origine, langage interprété.

→ Cependant, compilation vers C++ (HipHop, pour Facebook).

Autres langages côté serveur

ASP Microsoft, add-on à IIS, propriétaire.

ASP.NET Microsoft, successeur d’ASP pour .NET.

ColdFusion Adobe, commercial, propriétaire.

JSP Intégration entre Java et un serveur Web.

Servlet classe Java suivant une API

Web container serveur pour gérer les servlets (par exemple Apache Tomcat)

node.js Moteur JavaScript V8 (de Chrome) et serveur Web.

→ Même langage pour le client et le serveur.

→ Orienté événements, et VM performante.

Python Frameworks Web : Django, CherryPy, Flask.

Ruby Frameworks Web : Ruby on Rails (influent !), Sinatra.

Bases de données

SGBD : Système de Gestion de Bases de Données

Abstraction de la tâche de stocker de l’information, la mettre à jour, et la récupérer suivant des requêtes.

Modèle historique et le plus courant : modèle relationnel, SQL.

Avantages :

Gérer simplement les données sans s’occuper du stockage

Remplacer plutôt facilement un SGBD par un autre

Facilement déléguer la tâche à des machines séparées

Optimiser les SGBD plutôt que les usages ad hoc

Déviations du modèle relationnel : NoSQL.

Modèle relationnel : structure

Relations (tables), par exemple Clients, Produits...

Attributs (colonnes), par exemple Prénom, Identifiant...

Enregistrements (lignes).

Exemple : table clients :

id prenom nom cp ville conseiller

1 Jean Dupont 75013 Paris 42

2 François Pignon 75005 Paris 42

Les attributs ont un type (chaîne de caractères, nombre entier, décimal, date, blob binaire...)

SQL

Structured Query Language

Sémantique et modèle propre, liens avec la logique.

Standardisé (1986, mis à jour en 2011) mais extensions...

Sélection :

SELECT ville, COUNT(*)

FROM clients

WHERE conseiller=42

GROUP BY ville ;

Mise à jour :

UPDATE clients

SET conseiller=43

WHERE conseiller=42 AND cp=75013 ;

SGBDs

Oracle Commercial et propriétaire. Lancé en 1979.

IBM DB2 IBM, commercial et propriétaire. Lancé en 1983.

IBM Informix Autre système IBM. Lancé en 1981 (rachat).

SQL Server Microsoft, commercial et propriétaire. Lancé en 1989.

MySQL Libre (mais éditions commerciales), le plus courant

sur le Web. Lancé en 1995. Fork : MariaDB.

PostgreSQL Libre, concurrent de MySQL. Lancé en 1995.

... ... ...

Modèle relationnel : idées importantes

Contraintes d’intégrité :

Clés primaires : identifiant unique, détermine l’enregistrement.

Clés étrangères : valeur qui fait référence à une clé primaire.

Formes normales : éviter la répétition des données.

Procédures stockées : code pour des requêtes complexes

Vues : table virtuelle définie par une requête. (Matérialisée ?)

Triggers : répondre à un événement

Transactions : atomicité pour éviter les inconsistances.

Distribution : répartir entre plusieurs machines

Concurrence : traiter des requêtes simultanées

Performance : index, caches mémoire, etc.

Utilisateurs et droits d’accès (toujours relégué à PHP ou au

framework Web en pratique).

NoSQL

Beaucoup d’expressivité avec le modèle relationnel.

Structure très contrainte et peu modifiable.

Exigences fortes de cohérence sur du relationnel distribué.

→ NoSQL : renoncer au modèle relationnel pour de meilleures performances et un meilleur passage à l’échelle.

Quelques exemples :

Stockage de documents entiers peu structurés.

Stockage de graphes.

Stockage de couples clé-valeur.

Stockage de triplets pour le Web sémantique.

Système le plus populaire 3

: MongoDB, utilisé par Craigslist, le CERN, Shutterfly, Foursquare, etc.

Injections SQL

Une application serveur fabrique souvent des requêtes à partir de données utilisateur :

SELECT nom, telephone FROM employes WHERE nom='$nom'

Si l’utilisateur soumet toto, on veut exécuter la requête :

SELECT nom, telephone FROM employes WHERE nom='toto'

Maintenant, imaginons qu’un utilisateur soumette :

toto' UNION ALL SELECT nom, mdp FROM employes --

La base de données va recevoir et exécuter :

SELECT nom, telephone FROM employes WHERE nom='toto' UNION ALL SELECT nom, mdp FROM employes

-- '

→ Préparation pour placer les paramètres dans les requêtes.

→ Sinon, échapper ou retirer les caractères dangereux.

Frameworks

Ensemble de fonctions et d’outils, organisé autour d’un langage, pour les applications Web.

Intégration AJAX, production de code JavaScript...

MVC :

Modèle La structure des données de l’application et les fonctions pour les manipuler.

Vue La présentation des données destinée au client.

Contrôleur Le contrôle de l’interaction avec les données du modèle à travers la vue.

ORM

Object Relational Mapping.

Les frameworks Web utilisent souvent la programmation objet.

Persistence des objets dans une base de données relationnelle.

Ne concerne pas les méthodes!

Historiquement : tentatives de bases de donnée objet.

Exemple d’un ORM (Django)

Définir une classe (table) avec des attributs :

from django.db import models

class Blog(models.Model):

name = models.CharField(max_length=100)

tagline = models.TextField()

Créer un objet (insérer un enregistrement) :

b = Blog(name='Beatles', tagline='Latest Beatles news.')

b.save()

Récupérer un objet (faire une requête) :

b = Blog.objects.filter(name='Beatles')

Templates

Modèles avec champs de Pages HTML.

Exemple (avec Jinja2) :

<h1>Résultats pour "{{ recherche }}"</h1>

<ul>

{% for objet in resultats %}

<li>

<a href="details/{{ objet.id }}">

{{ objet.nom }}

</a>

</li>

{% endfor %}

</ul>

Routage des URLs

Router suivant le chemin et la méthode.

Exemple (avec Flask) :

@app.route('/')

def index():

pass # Préparer la page d'accueil

@app.route('/message/<int:message_id>')

def message(message_id):

pass # Préparer l'affichage du message <message_id>

@app.route('/upload', methods=['POST'])

def upload():

pass # Traiter un upload

CMS

Content Management System

Faire un site sans programmation :

Édition de page avec un texte riche, ou langages simplifiés

(Markdown, Textile, BBCode...).

Hébergement d’images, vidéos, etc.

Gestion d’utilisateurs.

Choix du thème graphique.

Différents types :

Wikis (contrôle de version, massivement éditable) :

MediaWiki, MoinMoin, PmWiki...

Forums phpBB, PunBB, Phorum, vBulletin...

Blogs WordPress, Movable Type, Drupal, Blogger...

QA (comme StackOverflow) : Shapado, OSQA,

AskBot.

Commerce Magento, PrestaShop...

Identifier les technologies serveur

Sur le client, le code HTML, JavaScript, CSS est accessible (modulo minification et obfuscation). Sur le serveur, on n’a rien !

whois : base de données fournissant (souvent) des infos sur le propriétaire d’un nom de domaine.

Localisation géographique des IP des serveurs.

traceroute, pour connaître le chemin réseau vers un hôte.

Outils de scan (nmap) pour localiser les machines et identifier le système d’exploitation (fingerprinting).

Header Server, possiblement faux.

Forme des identifiants de session, cookies...

Chemins d’accès et extensions : .php, .asp, ...

Commentaires dans le code HTML.

→ Utilisé par les pirates pour identifier des services vulnérables.

Decouvrir ces documents

  • Learning web development with react and bootstrap download

    Learning web development with react and bootstrap download

  • Advanced PowerPoint presentation template for training and development

    Advanced PowerPoint presentation template for training and development

  • Initiation à a programmation orienté objet avec le langage C++

    Initiation à a programmation orienté objet avec le langage C++

  • EXCEL 365 tutorial for beginners

    EXCEL 365 tutorial for beginners

  • Cours de programmation Visual Basic 6

    Cours de programmation Visual Basic 6

  • Initiation à VBA cours

    Initiation à VBA cours

  • Initiation au langage C support pedagogique avec exemples d’application

    Initiation au langage C support pedagogique avec exemples d’application

  • Guide de formation complet et detaille pour s’introduire avec le sourcing

    Guide de formation complet et detaille pour s’introduire avec le sourcing

Articles connexes

  • Exercice comptabilité : initiation aux techniques de consolidation
  • Formation en acupuncture : les critères de sélection
  • Quels sont les meilleurs logiciels de gestion de planning de formation ?
  • Comment établir un plan de formation efficace pour votre entreprise ?
  • Comment faire une convocation pour une formation ?
  • Tutorial : How to convert Excel tables to HTML
  • Formation de conducteur de bus : les bonnes adresses
  • Comment devenir développeur Web 3?
  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Science et Tech
  • Titans de la Tech
id 11354 02