slanted W3C logo

Denis Clot, <clot@univ-lyon1.fr>


Mathématiques et Informatique

Mathématiques et Informatique

Environnement informatique…

Communications et Technologies Internet

Plan

Présentations

Communications et Technologies Internet

Ressources numériques

(X)HTML&CSS

Synthèse - Réseaux

Architecture client/serveur

Construction du Web 2.0

Bonnes pratiques de programmation

Frameworks et API

Présentations

Coordonnées

Communications et Technologies Internet

Contexte & objectifs

web app is the future

Communications et Technologies Internet

Aperçu du programme

Communications et Technologies Internet

Déroulement des séances de travail

Mode d'évaluation

Ressources numériques

Liens

Synthèse - Réseaux

Cours

Cf. Support (Rezo.pdf)

Exemple de trafic de navigation

Pb: obtenir la ressource http://www710.univ-lyon1.fr/~dclot.

Vue 1 wireshark Vue 1 wireshark

Pouvez-vous répondre à ces questions?

Quelques outils

Architecture client/serveur

Contexte

Développement des réseaux informatiques

Modèle préexistant : maître-esclave

  • Le modèle maître-esclave permet de lier deux entités (appareils, processus, hôtes…). Lors de la mise en place de ce schéma, l'une des entités joue le rôle du maître et l'autre l'esclave. Les requêtes/instructions/ordres sont toujours émis du maître vers l'esclave et l'esclave renvoie éventuellement des données en réponse.
  • Quelques applications aux niveaux matériel et logiciel:
    • contrôleur (maître) / périphériques (esclaves) via un bus;
    • CPU (maître) / contrôleurs (esclaves) via un bus;
    • SETI@Home et NetSolve sont deux logiciels visant à partager les ressources d'une machine connectée à internet dans des buts divers (recherche des ET, calculs scientifiques). Un maître / des millions de machines de particuliers (esclaves) via internet.

Positionnement du modèle client/serveur relativement au modèle maître-esclave

  • Les entités communicantes dans ce modèle sont des processus, et ils sont à priori distincts (un programme serveur/un programme client);
  • le serveur rend un «service» (donne l'heure, receptionne des mails, diffuse des pages web, permet d'exécuter des commandes…);
  • l'établissement de la communication est initiée par le client, et le serveur qui est à l'écoute répond aux sollicitations des clients;
  • une fois la communication établie, les requêtes constituant le dialogue peuvent être émises par chacune des parties en fonction des objectifs de l'application.

Positionnement du modèle «peer2peer» relativement au modèle client/serveur

  • Ce modèle dépasse le cadre des communications entre deux entités : on parle d'un réseau P2P formé de nœuds, les échanges prenant place entre les nœuds;
  • chaque nœud peut être à la fois et en même temps client et serveur dans ce sens où il peut solliciter un service et rendre un service : la notion de service est décentralisée;
  • chaque processus exécuté en un nœud peut être issu d'un même programme.

Architecture client/serveur

Beware

Un serveur est une machine puissante, dédiée à certains services…

Architecture client/serveur

Conception d'un service

La conception d'un service conduit à divers choix parmi lesquels:

Deux modes de communication

Architecture client/serveur

Conception d'un service

Conception d'un client

Elle consiste en général en l'implémentation d'une interface pour l'utilisateur et du protocole d'échange avec le serveur.

Conception d'un serveur

La conception d'un serveur passe par l'implémentation du service, mais aussi la gestion des différents clients

Architecture client/serveur

En pratique

Côté programmation, divers objets existent pour permettre la réalisation d'un service via le réseau

Les sockets

Les sockets sont utiles pour matérialiser le support d'échange d'information entre deux processus.

Les RPC

Les appels de procedure distants (Remote Procedure Call) sont utilisées pour la mise au point d'applications distribuées, i.e. dont l'ensemble est éclaté en morceaux répartis sur différents hôtes. Le service rendu est alors l'exécution de la procédure et la transmission du résultat de cette procédure au client, i.e. au programme qui a appelé cette procédure.

Les Java RMI

A la manière des RPC, Java permet l'invocation de méthodes distantes (Remote Method Invocation), i.e. les méthodes d'un objet exécuté par une autre machine virtuelle Java.

CORBA

CORBA (Common Object Request Broker Architecture) est une implémentation du modèle des composants répartis. Ici, ce sont les objets qui peuvent être répartis sur différents hôtes, mais corba réalise un enrobage des objets, permettant ainsi une indépendance relative au langage d'implémentation de l'objet, relative à la plateforme et à l'hôte. Cet enrobage d'un objet (dénommé ORB - Object Request Broker, pour intermédiaire d'accès à l'objet) et l'objet lui même constituent un composant.

Architecture client/serveur

Pouvez-vous répondre à ces questions?

Du modèle client-serveur vers le modèle des composants répartis - Synthèse

(X)HTML&CSS - Introduction

Un peu d'histoire

SGML - Standard Generalised Markup Language

(X)HTML&CSS

Un peu d'histoire

HTML - HyperText Markup Language

(X)HTML&CSS

Un peu d'histoire

XHTML - Extensible HyperText Markup Language

CSS - Cascading Style Sheet

(X)HTML&CSS

Web Browsers

Et les navigateurs?

(X)HTML&CSS - HTML

HTML - HyperText Markup Language

Squelette d'un document HTML

Cas classique

<!DOCTYPE HTML PUBLIC "-...">
<html>			
  <head>			
    <title>Titre de la page</title>	
    <meta .... />				
    …
  </head>			
  <body>			
    …
  </body>			
</html>			
1 - Déclaration de DTD
2 - ouverture du code html
3 - ouverture de l'entête
4 - titre de la page
5 - balise meta

6 - fin de l'entête
7 - ouverture du corps

8 - fermeture du corps
9 - fermeture du code html 

Cas reposant sur les frames (cadres)

<!DOCTYPE HTML PUBLIC "-...">
<html>			
  <head>			
    <title>	Titre de la page</title>
    <meta .... />				
    …
  </head>			
  <frameset rows="…" >			
    <frame id="…" src="…"/>
    …
  </frameset>			
  <noframe>			
    <body>
      …
    </body>
  </noframe>			
</html>			
1  - Déclaration de DTD
2  - ouverture du code html
3  - ouverture de l'entête
4  - titre de la page
5  - balise meta

6  - fin de l'entête
7  - déclaration de la disposition des cadres
8  - premier cadre

9  - fin de la déclaration des cadres
10 - ouverture de noframe 
11 - ouverture de body

12 - fermeture du body
13 - fermeture du noframe
14 - fermeture du code html 

(X)HTML&CSS

HTML - HyperText Markup Language

Entête

Les informations placées dans l'entête sont des méta-informations par rapport à la page web.

(X)HTML&CSS

HTML - HyperText Markup Language

Premiers éléments de structuration

Ci-dessous, les balises les plus courantes pour la conception de code HTML :

Titre2

Titre3

un paragraphe suivi d'un trait horizontal


un paragraphe
coupé en deux

repeter
   faire un code valide
   mettre en evidence la structure
   a l'aide d'indentation
fin

il existe différents types de liste:

rouge orange
Un tableau
images et liensexemple
imagespace invader
lienspace invader
lien
<h2>Titre2</h2>
<h3>Titre3</h3>
<p>un paragraphe suivi d'un trait horizontal</p>
<hr/>
<p>un paragraphe <br/> coupé en deux</p>
<pre>repeter
   faire un code valide
   mettre en evidence la structure
   a l'aide d'indentation
fin</pre>
<p> il existe différents types de liste:</p>
<ul> 
  <li>ordonnées</li>
  <li>non-ordonnées</li>
  <li>emboitement
    <ol>
    	<li>un martien 
		<img alt="space invader" title="martiens" src="images/martien.jpg" style="width : 30px;height: 30px;" />
	</li>
	<li>deux couleurs
		<img alt="space invader" title="martiens" src="images/bicouleur.jpg" style="width : 60px;height: 30px;" usemap="#MaCarte"/>
	</li>
    </ol>
  </li>
</ul>
<map id="MaCarte">
	<area href="http://images.google.fr/images?um=1&hl=fr&q=couleur+rouge&btnG=Recherche+d'images"  shape="poly" coords="0, 0,30,0,15,15,45,15,30,30, 0,30, 0,0" alt="rouge"/>
	<area href="http://images.google.fr/images?um=1&hl=fr&q=couleur+orange&btnG=Recherche+d'images" shape="poly" coords="60,0,30,0,15,15,45,15,30,30,60,30,60,0" alt="orange"/>
</map>
<table border="1" summary="exemple d'image, de liens et de mélange des deux">
	<tr> <th colspan="3">Un tableau</th></tr>
	<tr> <th colspan="2">images et liens</th><th>exemple</th> </tr>
	<tr> <td rowspan="2">image</td><td></td><td><img alt="space invader" title="martiens" src="images/martien.jpg" style="width : 30px;height: 30px;" /></td> </tr>
	<tr> <td rowspan="2">lien</td><td><a href="images/martien.jpg"><img alt="space invader" title="martiens" src="images/martien.jpg" style="width : 30px;height: 30px;" /></a></td></tr>
	<tr><td></td><td><a href="images/martien.jpg">lien</a></td></tr>
</table>
	

(X)HTML&CSS

HTML - HyperText Markup Language

Frames

Ci dessous, deux inserts : l'insert de gauche donne le code html permettant de produire l'exemple de réalisation de frames de l'insert de droite.


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Frames example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="copyright" content="Copyright © 2008 CLOT Denis - clot@univ-lyon1.fr" />
<meta name="font-size-adjustment" content="-1" />
<!--link rel="stylesheet" href="../Slidy/w3c-blue2.css"
 type="text/css" media="screen, projection, print" />
<script src="../Slidy/slidy.js" type="text/javascript">
</script-->
</head>
<frameset cols="20%,80%">
	<frameset rows="20%,80%">
		<frame id="menu" src="menu.html"/>
		<frame id="sous-menu" src="sous-menu-init.html"/>
	</frameset>
	<frame id="main" src="images/martien.jpg"/>
	<noframes>
		<body>
		<p>ICI IL FAUDRAIT LE CODE POUR GERER UN NAVIGATEUR NE SACHANT PAS AFFICHER DES FRAMES</p>
		</body>
	</noframes>
</frameset>
</html>

smile

Pour finir, la présente page utilise l'élément générique object pour réaliser l'insertion de la page contenant les frames ci-dessus. Enfin de multiples div permettent de structurer les éléments affichés pour cette présentation, cette structuration étant associée à des règles de mise en forme qui seront décrites plus loin. N'oubliez pas de consulter le code source de cette présentation.

(X)HTML&CSS

HTML - HyperText Markup Language

Les i-frames

Une i-frame permet d'insérer une frame (i.e. liée à une ressource comme une frame classique) en dehors du contexte d'un frameset, e.g. un bloc de texte.

<iframe src="Presentation_ComTechnoInt.html" width="50" height="40" scrolling="auto" frameborder="1" >Missing IFrame</iframe>
<iframe src="Presentation_ComTechnoInt.html" width="250" height="200" scrolling="auto" frameborder="1" >Missing IFrame</iframe>
<iframe src="Presentation_ComTechnoInt.html" width="500" height="400" scrolling="auto" frameborder="1" >Missing IFrame</iframe>

Les formulaires

Attributs supplémentaires

Les éléments présentés ici disposent de nombreux attributs dont l'objet est de définir une propriété de mise en forme. Tout ce qui concerne la mise en forme d'une page devrait être relégué à un langage de mise en forme tel que CSS. Avec ce dernier, il est possible de définir des règles de mise en forme qui peuvent être liées aux éléments d'une page. Pour cela, deux attributs peuvent être utiles :

(X)HTML&CSS

Conception de pages web respectant XHTML1.0

Règles de base

Passer de HTML4.01 à XHTML1.0 pour la rédaction de pages web

Le passage du HTML 4.01 vers XHTML 1.0 se fait par le respect d'un petit nombre de règles lors de l'écriture de code HTML. Ci-dessous, quelques-unes de ces règles :


(X)HTML&CSS

Différences entre HTML4 et HTML5

Selon la note du W3C: HTML5 Differences from HTML4

La nouvelle recommandation HTML définit une nouvelle syntaxe, des évolutions du langage, un nouveau modele de construciton de page et des évolutions fonctionnelles à travers des API. Cf http://www.w3.org/TR/html5-diff/ pour l'ensemble des détails.

(X)HTML&CSS - CSS

CSS - Cascading Style Sheet

Le langage CSS permet la spécification de règles de mise en forme pour les éléments d'un document en fonction du support de présentation de ce document. Les spécifications dont ce langage est l'objet décrivent également le mécanisme par lequel ces règles sont utilisées pour permettre la détermination des valeurs associées aux propriétés.

L'arborescence du document et les valeurs des propriétés

Un document HTML est composé d'éléments organisés en arborescence. Ce concept d'arborescence s'accompagne des concepts de parent, enfant, descendant, ancêtre, frère… Une fois cette arborescence analysée, il faut assigner à chaque propriété de chaque élément sa valeur (correspondant au type du médium). La valeur associée à une propriété est obtenue par un processus comportant quatre étapes :

  1. La valeur associée à la propriété est déterminée : soit elle est obtenue explicitement d'après les règles énoncées et après application du processus de cascade, soit elle est héritée, soit une valeur implicite est utilisée.
  2. La valeur obtenue précédemment peut faire l'objet de calcul dissociés des calculs liés au formatage (transformation des unités en pixels…).
  3. Le formatage permet le calcul de certaines valeurs (comme celles exprimées sous forme de pourcentage d'une taille de conteneur…).
  4. Les valeurs réelles peuvent être affinées afin de tenir compte des contraintes du navigateur (qui ne dispose pas d'une police dans la taille voulue…).

(X)HTML&CSS

CSS - Cascading Style Sheet

Et la cascade?

Le terme CSS fait référence à une partie du mécanisme employé pour l'application des règles : le mécanisme baptisé de cascade. Les règles (on parle plus volontier de feuille de style) peuvent avoir trois origines :

Les règles ainsi définies peuvent se chevaucher, se contredire ou se compléter. Le processus de cascade définit le calcul d'un poids, ce poids étant utilisé pour départager des règles contradictoires (la règle de plus grand poids est retenue pour définir la valeur associée à la propriété concernée). Le mécanisme de cascade comporte quatre étapes :

  1. Trouver toutes les règles concernant la propriété d'un élément (et en relation avec le type de médium).
  2. S'il y en a plusieurs, trier par importance croissante selon l'ordre suivant (basé sur l'origine et l'importance) : règle navigateur < règle utilisateur < règle auteur < règle auteur étiquetée importante < règle utilisateur étiquetée importante
  3. S'il y a en plusieurs au premier rang, trier les règles par spécificité croissante (une méthode simple de calcul de la spécificité est définie au sein du processus de cascade et décrite ici - elle prend en compte divers éléments informatifs du sélecteurs et la localisation de la règle afin de favoriser la règle la moins «générale»).
  4. A importances, origines et spécificités respectives égales, choisir la règle énoncée en dernier (les règles issues des feuilles externes étant considérées comme placées avant celles données dans la feuille)

(X)HTML&CSS

CSS - Cascading Style Sheet

Place du code CSS

Le code CSS peut être isolé dans un fichier ou placé dans l'entête d'un document (X)HTML ou disséminé dans les élements concernés par le biais de l'attribut style, ce qui appelle quelques remarques:

<head>
…		
<link rel="stylesheet" href="../Slidy/w3c-blue2.css" type="text/css" media="screen, projection, print" />
…		
</head> 
<head>
…		
<style type="text/css">
body { color: black; background: white }
h1 { color: red; background: white }
</style>
…		
</head> 
<body style="color: black; background: white">
…		
<h1 style="color: red; background: white" >Introduction </h1>
…		
<h1 style="color: red; background: white" >Conclusion </h1>
…

La localisation d'une règle sera déterminante pour son application à un élément par rapport à des règles concurrentes comme expliqué plus haut.

(X)HTML&CSS

CSS - Cascading Style Sheet

Syntaxe

Le code CSS est formé de différents éléments :

Commentaires

Il est possible d'insérer des commentaires entre les éléments déclaratifs d'une feuille CSS. Un commentaire est délimité à gauche par /* et à droite par */.

Règles

Le principe global de CSS est de définir des règles qui permettent d'ajuster des propriétés de mise en forme en indiquant les éléments concernés avec un certain niveau de généralité et en précisant éventuellement un contexte d'application dépendant de la nature du support de restitution de l'information.

Après une présentation des différents sélecteurs, un aperçu des propriétés et des valeurs possibles sera proposé.

(X)HTML&CSS

CSS - Cascading Style Sheet

Sélecteurs

Un sélecteur permet d'identifier les éléments pour lesquels les propriétés seront ajustées.

SélecteurSignification
*selecteur universel, permettant de désigner tout élément du document
type d'élément e.g. h1, p, spantout élément du type indiqué
.Nom2Classetout élément appartenant à la classe Nom2Classe. L'appartenance d'un élément à une classe est spécifiée à l'aide de l'attribut class.
type.Nom2Classetout élément du type indiqué et appartenant à la classe
#Idl'élément dont l'attribut id a pour valeur Id
:first-letter
:first-line
:first-child
type:first-child
pseudo-éléments correspondant respectivement à la première lettre, à la première ligne et au premier enfant puis au premier enfant d'un élément de type donné
:hover, :active, :focus,
:link, :visited,
:lang
pseudo-classes correspondant à trois types de propriétés : les trois premières concernent respectivement l'élément survolé par le pointeur de la souris, celui activé et celui sélectionné (i.e. sensible aux interactions via le clavier, comme un champ de saisie), les deux suivantes distinguent les liens non encore visités de ceux déjà visités (d'après l'historique maintenu par le navigateur) et enfin les éléments pour lesquels un attribut lang a reçu une valeur particulière.
sel1 sel2désigne tout élément désigné par sel2 qui est en même temps descendant d'un élément désigné par sel1
sel1 > sel2restriction aux éléments désignés par sel2 qui sont descendants directs d'un élément désigné par sel1
sel1 +sel2désigne tout élément désigné par sel2 qui est le premier voisin suivant un élement désigné par sel1
[Attr]
[Attr="val"]
[Attr~="val"]
[Attr|="val"]
désigne respectivement les éléments pour lesquels l'attribut Attr est défini, pour lesquels l'attribut a la valeur val, pour lesquels la valeur de l'attribut contient la valeur val et enfin ceux pour lesquels la valeur de l'attribut commence par val.
sel1, sel2applique les ajustements aux éléments désignés par sel1 ou sel2

(X)HTML&CSS

CSS - Cascading Style Sheet

Propriétés et valeurs

(X)HTML&CSS

CSS - Cascading Style Sheet

Propriétés et valeurs

(X)HTML&CSS

CSS - Cascading Style Sheet

Propriétés et valeurs

(X)HTML&CSS

CSS - Cascading Style Sheet

Introduction au positionnement des éléments

(X)HTML&CSS

CSS - Cascading Style Sheet

Régles @

Il existe différents types de at-rules :

(X)HTML&CSS

CSS - Cascading Style Sheet

Exemples

Ci-dessous, quelques extraits des fichiers comportant des règles de mise en forme CSS:

(X)HTML&CSS - Pour les auteurs

Outils pour les auteurs

Pour tester rapidement un code… http://jsfiddle.net

Contrôle de la validité d'un code (X)HTML ou CSS

Il existe des outils de validation (et de correction pour HTML) pour les documents XHTML et CSS. Les outils indiqués ci-dessous peuvent être utilisés pour contrôler le code d'un document déjà en ligne ou d'un fichier local. Des références à ces outils peuvent également être insérées dans la page web pour fournir un accès plus immédiat à ces outils.

Entités HTML

Pour les curieux

Couverture de web design for dev

Le livre Web Design for Developers: A Programmer's Guide to Design Tools and Techniques édité par The Pragmatic Programmers est un ouvrage intéressant pour l'ensemble des considérations qu'il aborde.

Keep in touch!

Au fil du temps, il est important de garder un œil sur l'actualité de ces technologies, le statut des spécifications, la préparation de nouveautés (e.g. webfonts en draft au 2010-09)… Consultez par exemple par ici..

(X)HTML&CSS

Pas si vite! Goutez moi ça.

La sortie de HTML5 serait imminente est en cours…du côté des implémentations. Pour le standard, il faudra encore attendre «un peu». dépassé!!

Le HTML5 est une recommandation du W3C depuis le 28 octobre 2014! Check it out here.

logo HTML5

Les évolutions autour de CCS3 prennent forme!

Notez bien que le support par les différents navigateurs pour ces divers éléments est extrêmement variable. De nombreuses propriétés existent à travers leurs déclinaisons propres à un navigateur particulier. Cf http://www.colorzilla.com/gradient-editor/ pour un aperçu concernant les gradients. Il faut toujours prévoir la mise en forme en cas d'absence de support sur un navigateur pour la propriété souhaitée - i.e. une mise en forme reposant sur des propriétés standards.

Cherchez des exemples… il existe de nombreux sites proposant des solutions clés en main intéressantes avec un rendu remarquable (http://tympanus.net/codrops/category/tutorials/).

… et si vous cherchez à mesurer votre créativité, regardez:

(X)HTML&CSS

Pouvez-vous répondre à ces questions?

Construction du Web 2.0

Retour sur les exposés courts - critiques constructives

Et vous, qu'avez-vous appris et retenu…

Construction du Web 2.0

Du statique vers l'hyperconnectivité, en passant par le dynamique

HTML, DOM & Javascript

AJAX

Cloud

Bonnes pratiques de programmation

Versionning et outils de partage

longterm benefit

Les VCS (Version Control Systems) sont des outils permettant de suivre dans le temps un ensemble de fichiers. Ils sont construits autour de programmes simples dont l'objet est la gestion des différences entre versions d'un fichier. Tout est parti de diff

Bonnes pratiques de programmation

Versionning et outils de partage

Les outils diff et patch ne suffisent pas en général pas à gérer toute la descendance d'un fichier, car assez naturellement, une descendance prend souvent une forme d'arborescence:

Une équipe peut être amenée à corriger les bugs rencontrés par des tiers dans une version particulière d'un fichier (ce fichier pouvant être une application informatique, mais aussi le texte d'un contrat…) alors que dans le même temps, plusieurs pistes de développement, éventuellement instables ou expérimentales, sont poursuivies et qu'une version stable (au moins une) est également maintenue.

Les VCS (Version Control Systems) permettent de réaliser ce saut, en introduisant notamment la possibilité d'introduire des branchements dans l'évolution suivie par un fichier. Au fil du temps, la reflexion sous-tendant les VCS a absorbé diverses considérations dérivant de l'extension du suivi d'un fichier au contexte de la gestion de projet (plusieurs fichiers, plusieurs acteurs…):

Bonnes pratiques de programmation

Versionning et outils de partage

Outils

Pour finir…

Un VCS n'est pas un système de backup (même si cela peut y ressembler) et ne peut s'y substituer!

Vous n'appelez plus vos fichiers projet.pdf

Adoptez un VCS!!

Bonnes pratiques de programmation

Frameworks

Principe

Boîte à outil logicielle construite comme solution à un problème assez général et souvent basée sur des design patterns. Il est ainsi possible de reposer sur les éléments du framework ce qui est un gain de développement pour construire une solution pout un projet. La définition devrait être appronfondie! Ces frameworks sont souvent le résultat d'un travail prenant en compte une large expérience des solutions testées pour répondre à un besoin. Il est fréquent que la communauté d'utilisateurs fournissent un support important.

Exemples

Cherchez le framework adapté à votre projet

Ne ré-inventez pas la roue dans le langage que vous devez utiliser: Cherchez s'il existe un framework proposant une grande partie des fonctionnalités que vous cherchez, et étudiez sérieusement son intégration à votre développement.

Retour d'expérience sur jQuery et jQuery Mobile

Bonnes pratiques de programmation

Tests

Principe

Savez-vous qu'il existe de nombreux outils permettant de concevoir des tests dans le langage de programmation de votre application?

Divers objectfs