>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
- <title>Programmation Internet</title>
+ <title>Systèmes d'exploitation (1/2)</title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
- <title>Programmation Internet</title>
+ <title>Systèmes d'exploitation (2/2)</title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
</style>
</head>
<body>
-
+ <a href="prog_internet_01.xhtml" class="sws-previous" />
<div class="sws-slide sws-cover sws-option-nofooter">
<h1>Programmation Internet</h1>
<h1>Cours 2</h1>
>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
- <title>Programmation Internet</title>
+ <title>Réseaux, TCP/IP</title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
</style>
</head>
<body>
-
+ <a class="sws-previous" href="prog_internet_02.xhtml" />
<div class="sws-slide sws-cover sws-option-nofooter">
<h1>Programmation Internet</h1>
<h1>Cours 2</h1>
<a href="http://www.lri.fr/~kn/">http://www.lri.fr/~kn</a>
</div>
- <div class="sws-slide" >
- <h1> Plan </h1>
- <ol >
- <li> Systèmes d'exploitation ✔
- <li class="hi"> Réseau et Internet
- <ul class="empty">
- <li class="hi"> 2.1 Principes des réseaux</li>
- <li> 2.2 TCP/IP</li>
- <li> 3
- </ul>
- </li>
- </ol>
- </div>
-
- <div class="sws-slide">
- <h1> Définitions </h1>
- <table class="desc">
- <tr>
- <td style="width:6.5em;">Programme</td> <td>séquences d'instructions effectuant
- une tâche sur un ordinateur</td>
- </tr>
- <tr>
- <td>Exécutable</td> <td>fichier binaire contenant des
- instructions machines interprétables par le
- microprocesseur</td>
- </tr>
- <tr>
- <td><i>Thread</i> </td>
- <td>plus petite unité de traitement (≡
- séquence d'instructions) pouvant être ordonnancée par
- l'OS
- </td>
- </tr>
- <tr>
- <td>Processus</td>
- <td> instance d'un programme (≡ « un
- programme en cours d'exécution »). Un processus est constitué
- de un ou plusieurs <i>threads</i>.</td>
- </tr>
- </table>
- </div>
-
- <div class="sws-slide">
- <h1> Exemple: programme </h1>
- <p>Dans un fichier « <code> counter.c </code> »
- (<span style="color:red;">attention c'est du pseudo
- C</span>)</p>
- <div style="float:left;clear:both;vertical-align:top;width:45%;display:inline-block;border-right: 1pt solid #494948;">
-<code > int count = 0;
- int exit = 0;
- void <span style="color:green;">display()</span> {
- while (exit == 0) {
- sleep (3);
- printf("%i\n", count);
- }
- }
- void <span style="color:red;">listen()</span> {
- while (exit == 0) {
- wait_connect(80);
- count++;
- }
- }</code>
- </div> <div style="vertical-align:top;display:inline-block;width:45%;">
-<code> void <span style="color:blue;">main ()</span> {
- run_function(display);
- run_function(listen);
- while (getc () != '\n') { };
- exit = 1;
- return;
- }</code>
- </div>
- </div>
- <div class="sws-slide">
- <h1> Exemple: programme </h1>
- <p>Compilation <br/>
- <code>
- gcc -o counter.exe counter.c
- </code><br/>
- Le <em>fichier</em> « <code>counter.exe</code> » est un
- exécutable (fichier binaire contenant du code machine)<br/>
- <code>
- ./counter.exe <span style="margin-left:2em;font-size:smaller;color:red;"> ← il faut la permission +x sur le fichier</span>
- </code>
- <br/>
- Le contenu de l'exécutable est copié en mémoire et le processeur
- commence à exécuter la première instruction du programme.
- </p>
- </div>
- <div class="sws-slide">
- <h1> Exemple: <i>threads</i> </h1>
- <ol>
- <li class="sws-pause" ><span style="color:white;background:blue">main</span> </li>
- <li class="sws-pause" ><span style="color:blue;">attente d'un évènement clavier
- →</span><span style="color:red;">←changement de <i>thread</i></span>
- </li>
- <li class="sws-pause" ><span style="color:white;background:red">listen</span> </li>
- <li class="sws-pause" ><span style="color:red;">attente de connexion →</span><span style="color:green;">←changement de <i>thread</i></span>
- </li>
- <li class="sws-pause" ><span style="color:white;background:green">display</span> (<span style="color:green;">affiche
- 0 à l'écran)</span> </li>
- <li class="sws-pause" ><span style="color:green;">attente pendant 3s →</span> (les
- 3 <i>threads</i> attendent un évènement externe)<br/>
- <span class="sws-pause" >nouvelle connexion sur le port 80</span> <span style="color:red;">←
- réveil du <i>thread</i> <code style="color:red;">listen</code></span>
- </li>
- <li class="sws-pause" ><span style="color:white;background:red">listen</span>
- (<span style="color:red;">incrémente <code style="color:red">count</code></span>)<br/>
- <span style="color:red;">attente de connexion →</span><br/>
- <span>… fin des 3s</span><br/>
- <span style="color:green;">←
- réveil du <i>thread</i> <code style="color:green;">display</code></span>
- </li>
- <li class="sws-pause" ><span style="color:white;background:green">display</span> (<span style="color:green;">affiche
- 1 à l'écran)</span> </li>
- </ol>
- <p class="sws-pause" >Les <i>threads</i> partagent leur mémoire (variables communes)</p>
- </div>
- <div class="sws-slide">
- <h1>Exemple: processus</h1>
- <p>(différence: les processus
- <em>ne partagent pas leur espace mémoire</em>)</p>
- <ol>
- <li>Exécution de <code><span style="color:blue;">coun</span><span style="color:red;">ter</span><span style="color:green;">.exe</span></code> pendant 50㎲
- </li>
- <li > Exécution
- de <code><span style="color:orange;">firefox.exe</span></code>
- pendant 50㎲ </li>
- <li > Exécution du processus qui dessine le bureau pendant 50
- ㎲<br/> … </li>
-
- </ol>
- <p>C'est le <em>gestionnaire de processus</em> qui décide quel
- programme a la main et pour combien de temps (priorité aux
- tâches critiques par exemple)<br/>
- Le système d'exploitation stocke pour chaque processus un
- ensemble d'informations, le PCB (<i>Process Control Block</i>).
- </p>
- </div>
- <div class="sws-slide">
- <h1>Proccess Control Block</h1>
- <p>Le PCB contient:</p>
- <ul>
- <li>l'<em>identificateur du processus</em> (pid)</li>
- <li>l'<em>l'état</em> du processus (en attente, en exécution,
- bloqué, …)</li>
- <li>le compteur d'instructions (<i>i.e.</i> où on en est dans
- le programme)</li>
- <li>le <em>contexte courant</em>(état des registres, …)</li>
- <li>position dans <em>la file d'attente de priorité
- globale</em></li>
- <li>informations mémoire (zones allouées, zones accessibles,
- zones partagées)</li>
- <li>listes des fichiers ouverts (en lecture, en écriture),
- liste des connexions ouvertes, … <br/> … </li>
- </ul>
- </div>
- <div class="sws-slide">
- <h1>Opérations sur les processus</h1>
- <ul>
- <li><em>création</em> et <em>destruction</em> de
- processus</li>
- <li><em>suspension</em> et <em>reprise</em></li>
- <li><em>duplication</em> (<i>fork</i>)</li>
- <li>modification de la <em>priorité</em></li>
- <li>modification des <em>permissions </em></li>
- </ul>
- </div>
- <div class="sws-slide">
- <h1>États d'un processus</h1>
- <p>Un processus change d'état au cours de son exécution</p>
- <table class="desc">
- <tr><td style="width:6em;">Nouveau</td> <td>le processus est en cours de création</td></tr>
- <tr><td>Exécution</td> <td>le processus s'exécute</td></tr>
- <tr><td>En attente</td> <td>le processus attend un évènement
- particulier (saisie au clavier, écriture sur le disque,
- …)</td></tr>
- <tr><td>Prêt</td> <td>le processus est prêt à reprendre son
- exécution et attend que l'OS lui rende la main</td></tr>
- <tr><td>terminé</td> <td>le processus a fini son exécution</td></tr>
- </table>
- </div>
- <div class="sws-slide">
- <h1>États d'un processus</h1>
- <p>L'OS détermine et modifie l'état d'un processus:</p>
- <ul>
- <li>En fonction d'évènements internes au processus:
- <ul><li>lecture d'un fichier (si le contenu n'est pas
- disponible, le processus passe de « prêt » à « en attente
- »)</li>
- <li>le processus attends volontairement pendant x
- secondes<br/>…</li>
- </ul>
- </li>
- <li>
- En fonction d'évènements externes au processus:
- <ul><li>un fichier devient disponible</li>
- <li>un <i>timer</i> arrive à 0</li>
- <li>le matériel déclenche une <em>interruption</em></li>
- </ul>
- </li>
- </ul>
- </div>
- <div class="sws-slide">
- <h1>États d'un processus</h1>
- <svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="340.10629"
- height="207.70399"
- viewBox="0 0 350 208"
- id="svg2"
- >
- <defs
- id="defs4">
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="Arrow2Mend"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path3842"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- </defs>
- <g
- transform="translate(-43.8,-16.162183)"
- id="layer1">
- <g
- transform="translate(2.8953552e-6,-2.2416992e-6)"
- id="g4956">
- <text
- x="50"
- y="32.362183"
- id="text2985"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="50"
- y="32.362183"
- id="tspan2987">Nouveau</tspan></text>
- <text
- x="140"
- y="102.36218"
- id="text2989"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="140"
- y="102.36218"
- id="tspan2991">Prêt</tspan></text>
- <text
- x="255"
- y="102.36218"
- id="text2993"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="255"
- y="102.36218"
- id="tspan2995">En exécution</tspan></text>
- <text
- x="195"
- y="187.36218"
- id="text2997"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="195"
- y="187.36218"
- id="tspan2999">En attente</tspan></text>
- <rect
- width="65"
- height="20"
- rx="5"
- ry="5.25"
- x="45"
- y="17.362183"
- id="rect3007"
- style="fill:none;stroke:#ffff05;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <rect
- width="45"
- height="20"
- rx="5"
- ry="5.25"
- x="130"
- y="87.362183"
- id="rect3007-2"
- style="fill:none;stroke:#009eff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <rect
- width="90"
- height="20"
- rx="5"
- ry="5.25"
- x="250"
- y="87.362183"
- id="rect3007-8"
- style="fill:none;stroke:#5aff0b;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <rect
- width="68"
- height="19"
- rx="5"
- ry="5.25"
- x="192"
- y="173.36218"
- id="rect3007-7"
- style="fill:none;stroke:#ff7b00;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 70,42.362183 c 0,35 20,55 55,55"
- id="path3809"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 150,82.362183 c 30,-30 120,-30 145,0"
- id="path3809-2"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 295,112.36218 c -30,30 -121.15954,29.51126 -146.15954,-0.48874"
- id="path3809-2-8"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 305,112.36218 c 0,35 -10,70 -45,70"
- id="path3809-9"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 185,182.36218 c -35.00001,0 -45,-35 -45,-70"
- id="path3809-9-6"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <text
- x="325"
- y="217.36218"
- id="text2997-5"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="325"
- y="217.36218"
- id="tspan2999-3">Terminé</tspan></text>
- <rect
- width="58"
- height="19"
- rx="5"
- ry="5.25"
- x="322"
- y="203.36218"
- id="rect3007-7-6"
- style="fill:none;stroke:#ff0000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 315,112.36218 c 13.42024,11.32439 24.04764,43.74151 35,85"
- id="path3809-9-6-7"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 225,197.36218 c 15,15 60,15 95,15"
- id="path3809-9-6-2"
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 1;stroke-dashoffset:0;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 135,112.36218 c 5,85 20,100 185,105"
- id="path3809-8"
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 1;stroke-dashoffset:0;marker-end:url(#Arrow2Mend)" />
- <text
- x="225"
- y="37.362183"
- id="text4821"
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="225"
- y="37.362183"
- id="tspan4823">mise en route</tspan><tspan
- x="225"
- y="48.612183"
- id="tspan4825">par l'ordonnanceur</tspan></text>
- <text
- x="220"
- y="117.36218"
- id="text4821-3"
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="220"
- y="112.36218"
- id="tspan4823-1">interruption</tspan><tspan
- x="220"
- y="123.61218"
- id="tspan4825-7">par l'ordonnanceur</tspan></text>
- <text
- x="300"
- y="187.36218"
- id="text4821-0"
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="300"
- y="187.36218"
- id="tspan4825-74">attente E/S</tspan><tspan
- x="300"
- y="198.61218"
- id="tspan4864">interruption</tspan></text>
- <text
- x="180"
- y="152.36218"
- id="text4821-0-2"
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="180"
- y="152.36218"
- id="tspan4864-7">fin E/S</tspan><tspan
- x="180"
- y="163.61218"
- id="tspan4892">int. traitée</tspan><tspan
- x="180"
- y="174.86218"
- id="tspan4894">…</tspan></text>
- <text
- x="360"
- y="147.36218"
- id="text4821-0-29"
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="365"
- y="147.36218"
- id="tspan4864-1">terminaison</tspan><tspan
- x="365"
- y="158.61218"
- id="tspan4909">normale</tspan></text>
- <text
- x="170"
- y="212.36218"
- id="text4821-0-7"
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="170"
- y="212.36218"
- id="tspan4864-75">terminaison</tspan><tspan
- x="170"
- y="223.61218"
- id="tspan4935">anormale</tspan></text>
- </g>
- </g>
- </svg>
- </div>
- <div class="sws-slide">
- <h1>La commande <code><em>ps</em></code></h1>
- <p>Permet d'avoir des informations sur les processus en cours
- d'exécution (voir « <code>man ps</code> » pour les
- options):<br/>
- <code>$ ps -o user,pid,state,cmd x
- USER PID S CMD
- …
- kim 27030 Z [chrome] <defunct>
- kim 27072 S /opt/google/chrome/chrome --type=renderer
- kim 29146 S bash
- kim 29834 S evince
- kim 29858 S emacs cours.xhtml
- kim 29869 R ps -o user,pid,state,cmd x
- </code><br/>
- </p>
-
- </div>
- <div class="sws-slide">
- <h1>États des processus (sous Linux)</h1>
- <table class="desc">
- <tr> <td>R</td> <td> <i>Running</i> (en cours d'exécution)</td> </tr>
- <tr> <td>S</td> <td> <i>Interruptible sleep</i> (en attente,
- interruptible) </td> </tr>
- <tr> <td>D</td> <td> <i>Uninterruptible sleep</i> (en attente,
- non-interruptible) </td> </tr>
- <tr> <td>T</td> <td> <i>Stopped</i> (interrompu)</td></tr>
- <tr> <td>Z</td> <td> <i>Zombie</i> (terminé mais toujours
- listé par le système)</td> </tr>
- </table>
- </div>
-
- <div class="sws-slide">
- <h1>Signaux</h1>
- <p>L'OS peut envoyer des <em>signaux</em> à un processus. Sur réception
- d'un signal, un processus peut interrompre son comportement normal
- et exécuter son <em>gestionnaire de signal</em>. Quelques signaux:
- </p>
- <table class="simple">
- <tr><th>Nom</th> <th>Code</th> <th>Description</th> </tr>
- <tr><td>HUP</td> <td>1</td> <td>demande au processus de
- s'interrompre</td></tr>
- <tr><td>INT</td> <td>2</td> <td>demande au processus de se
- terminer</td></tr>
- <tr><td>ABRT</td> <td>2</td> <td>interrompt le processus et produit
- un <i>dump</i></td></tr>
- <tr><td>KILL</td> <td>9</td> <td>interrompt le processus immédiatement
- </td></tr>
- <tr><td>SEGV</td> <td>11</td> <td>signale au processus une erreur mémoire
- </td></tr>
- <tr><td>STOP</td> <td>24</td> <td>suspend l'exécution du processus
- </td></tr>
- <tr><td>CONT</td> <td>28</td> <td>reprend l'exécution d'un processus suspendu
- </td></tr>
- </table>
- </div>
- <div class="sws-slide">
- <h1>Processus et terminal</h1>
- <p >Un processus est lié au <em>terminal</em> dans lequel il est
- lancé. Si on exécute un programme dans un terminal et que le
- processus ne rend pas la main, le terminal est bloqué
-<code >
-
- $ gedit
-
-</code>
- On peut envoyer au processus le signal <em>STOP</em> en
- tapant <code>ctrl-Z</code> dans le terminal:
-<code>
-
- $ gedit
- ^Z
- [1]+ Stopped gedit
-</code>
- Le processus est suspendu, la fenêtre est gelée (ne répond plus).
- </p>
- </div>
- <div class="sws-slide">
- <h1>Processus et terminal</h1>
- <p> <span>On peut reprendre l'exécution du programme de deux
- manières:<br/>
- <code> $ fg </code><br/>
- Reprend l'exécution du processus et le remet en avant plan (terminal
- bloqué)</span><br/>
- <span class="sws-pause"><code> $ bg </code><br/>
- Reprend l'exécution du processus et le remet en arrière plan (terminal
-libre)</span><br/>
- <span class="sws-pause">On peut lancer un programme
- directement en arrière plan en faisant:<br/>
-<code> $ gedit & </code><br/></span>
- <span class="sws-pause">On peut envoyer un signal à un
- processus avec la commande « <code>kill [-signal] pid</code> »<br/>
-<code> $ kill -9 2345 </code></span>
- </p>
- </div>
- <div class="sws-slide">
- <h1>Processus et entrées/sorties</h1>
- <p>Le terminal et le processus sont liés par trois fichiers
- spéciaux:</p>
- <ol>
- <li> L'entrée standard (<code><em>stdin</em></code>), reliée
- au clavier</li>
- <li> La sortie standard (<code><em>stdout</em></code>), reliée
- à l'affichage</li>
- <li> La sortie d'erreur (<code><em>stderr</em></code>), reliée
- à l'affichage</li>
- </ol>
- <p>Dans le <i>shell</i>, on peut utiliser les
- opérateurs <code><em><</em></code>, <code><em>></em></code>
- et <code><em>2></em></code> pour récupérer le contenu
- de <code><em>stdin</em></code>, <code><em>stdout</em></code>
- et <code><em>stderr</em></code>:<br/>
-<code>
-$ sort < toto.txt
-$ ls -l > liste_fichiers.txt
-$ ls -l * 2> erreurs.txt
-</code>
-</p>
-</div>
- <div class="sws-slide">
- <h1>Processus et entrées/sorties</h1>
- <p>Dans le <i>shell</i>, l'opérateur <em>|</em> permet
- d'enchaîner la sortie d'un programme avec l'entrée d'un
- autre:<br/>
-<code> $ <span style="color:green;">ls -l *.txt</span> | <span style="color:blue">sort -n -r -k 5</span> | <span style="color:orange">head -n 1</span></code>
- </p>
- <ol>
- <li style="color:green;">affiche la liste détaillée des
- fichiers textes</li>
- <li style="color:blue;">trie (et affiche) l'entrée standard par ordre
- numérique décroissant selon le 5ème champ</li>
- <li style="color:orange;">affiche la première ligne de
- l'entrée standard</li>
- </ol>
- <div style="height:5em;position:relative;margin:0 0;padding:0 0;">
-<code class="sws-onframe-1" style="position:absolute;color:green;"> -rw-rw-r 1 kim kim 471 Sep 14 16:25 bd.txt
- -rw-rw-r 1 kim kim 234 Sep 15 17:46 foo.txt
- -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt</code>
-<code class="sws-onframe-2" style="position:absolute;color:blue;"> -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt
- -rw-rw-r 1 kim kim 471 Sep 14 16:25 bd.txt
- -rw-rw-r 1 kim kim 234 Sep 15 17:46 foo.txt
-</code>
-<code class="sws-onframe-3" style="position:absolute;color:orange;"> -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt
-</code>
- </div>
-
- </div>
-<div class="sws-slide">
- <h1>Processus de type <i>daemon</i></h1>
-<p>
- Un <i>daemon</i> (prononcé démon) est un processus
- qui <em>non-interactif</em> qui tourne en tâche de fond (pas
- d'entrée/sortie sur le terminal, pas d'interface graphique, …). On
- communique avec ce processus via des <em>signaux</em> ou en lisant
- ou écrivant dans des fichiers ou connexions réseau. Le plus souvent,
- leur but est de fournir un <em>service</em>
-</p>
-<p>Exemple de scénario: « <i> Les utilisateurs doivent interagir avec
- le matériel. L'accès au matériel demande des droits
- administrateur.</i> »
-</p>
-<ul class="empty">
- <li>Solution 1 : tout le monde est administrateur (DOS, Win XP,
- …)</li>
- <li>Solution 2 : on crée un programme particulier qui a les
- privilèges suffisants pour la tâche en question. Les utilisateurs
- communiquent avec ce programme</li>
-</ul>
-</div>
-<div class="sws-slide">
- <h1>Quelques <i>daemons</i> sous Linux</h1>
-<table class="simple">
-<tr><th>Nom</th> <th>Description</th> </tr>
-<tr><td>sshd</td> <td><i>shell</i> distant sécurisé</td> </tr>
-<tr><td>crond</td> <td>exécution périodique de programmes</td> </tr>
-<tr><td>cupsd</td> <td>serveur d'impressions</td> </tr>
-<tr><td>pulseaudio</td> <td>serveur de son (mixe les sons des
- différentes applications)</td> </tr>
-<tr><td>udevd</td> <td>détection de matériel <i>hotplug</i></td></tr>
-<tr><td>nfsd</td> <td>serveur de fichier réseau</td></tr>
-<tr><td>smtpd</td> <td>livraison des e-mail</td></tr>
-<tr class="sws-pause"><td><em>httpd</em></td> <td>serveur de pages Web</td></tr>
-</table>
-</div>
-<div class="sws-slide">
-<h1>Architecture client-serveur</h1>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="256"
- height="163.70399"
- id="svg3">
- <defs
- id="defs3115">
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="Arrow2Mend"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path3842"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="Arrow2Mend-9"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path3842-7"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="Arrow2Mend-2"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path3842-3"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="Arrow2Mend-1"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path3842-71"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="marker4143"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path4145"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="Arrow2Mend-11"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path3842-39"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="marker4143-8"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path4145-9"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="Arrow2Mend-6"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path3842-1"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="marker4245"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path4247"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="Arrow2Mend-7"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path3842-8"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="marker4353"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path4355"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="Arrow2Mend-8"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path3842-4"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- id="marker4353-5"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)"
- id="path4355-9"
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
- </marker>
- </defs>
- <g
- transform="translate(-158.9,-91.262203)"
- id="layer1">
- <g
- id="g3947">
- <g
- transform="translate(-1.1999969,-3.4960022)"
- id="g4068">
- <text
- x="166.2"
- y="180.85818"
- id="text2985"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="166.2"
- y="180.85818"
- id="tspan2987">Client</tspan></text>
- <rect
- width="43.800003"
- height="21.503998"
- rx="5"
- ry="5.25"
- x="161.2"
- y="165.85818"
- id="rect3007"
- style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- </g>
- </g>
- <g
- transform="translate(-1.2000122,1.5039978)"
- id="g3942">
- <text
- x="266.20001"
- y="175.85818"
- id="text2985-1"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="266.20001"
- y="175.85818"
- id="tspan3164">Serveur</tspan></text>
- <rect
- width="53.799988"
- height="21.503998"
- rx="5"
- ry="5.25"
- x="261.20001"
- y="160.85818"
- id="rect3007-8"
- style="fill:none;stroke:#0000ff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- </g>
- <g
- id="g4097">
- <path
- d="m 210,177.36218 c 15,10 30,10 45,0"
- id="path3809"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
- id="path3809-5"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- </g>
- <g
- transform="translate(210,0)"
- id="g3947-5">
- <g
- transform="translate(-1.1999969,-3.4960022)"
- id="g4068-3">
- <text
- x="166.2"
- y="180.85818"
- id="text2985-0"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="166.2"
- y="180.85818"
- id="tspan2987-3">Client</tspan></text>
- <rect
- width="43.800003"
- height="21.503998"
- rx="5"
- ry="5.25"
- x="161.2"
- y="165.85818"
- id="rect3007-5"
- style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- </g>
- </g>
- <g
- transform="translate(109.96827,1.0864348)"
- id="g4097-7">
- <path
- d="m 210,177.36218 c 15,10 30,10 45,0"
- id="path3809-3"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
- id="path3809-5-7"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- </g>
- <g
- transform="matrix(0.56532555,0.82486788,-0.82486788,0.56532555,266.51188,-153.17986)"
- id="g4097-0">
- <path
- d="m 210,177.36218 c 15,10 30,10 45,0"
- id="path3809-2"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
- id="path3809-5-5"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- </g>
- <g
- transform="translate(40,-70)"
- id="g3947-3">
- <g
- transform="translate(-1.1999969,-3.4960022)"
- id="g4068-36">
- <text
- x="166.2"
- y="180.85818"
- id="text2985-2"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="166.2"
- y="180.85818"
- id="tspan2987-4">Client</tspan></text>
- <rect
- width="43.800003"
- height="21.503998"
- rx="5"
- ry="5.25"
- x="161.2"
- y="165.85818"
- id="rect3007-7"
- style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- </g>
- </g>
- <g
- transform="translate(165,-70)"
- id="g3947-1">
- <g
- transform="translate(-1.1999969,-3.4960022)"
- id="g4068-1">
- <text
- x="166.2"
- y="180.85818"
- id="text2985-9"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="166.2"
- y="180.85818"
- id="tspan2987-6">Client</tspan></text>
- <rect
- width="43.800003"
- height="21.503998"
- rx="5"
- ry="5.25"
- x="161.2"
- y="165.85818"
- id="rect3007-6"
- style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- </g>
- </g>
- <g
- transform="matrix(-0.56532555,0.82486788,0.82486788,0.56532555,302.25486,-153.17986)"
- id="g4097-0-8">
- <path
- d="m 210,177.36218 c 15,10 30,10 45,0"
- id="path3809-2-9"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
- id="path3809-5-5-7"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- </g>
- <g
- transform="translate(40,70)"
- id="g3947-3-1">
- <g
- transform="translate(-1.1999969,-3.4960022)"
- id="g4068-36-8">
- <text
- x="166.2"
- y="180.85818"
- id="text2985-2-8"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="166.2"
- y="180.85818"
- id="tspan2987-4-1">Client</tspan></text>
- <rect
- width="43.800003"
- height="21.503998"
- rx="5"
- ry="5.25"
- x="161.2"
- y="165.85818"
- id="rect3007-7-3"
- style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- </g>
- </g>
- <g
- transform="translate(160,70)"
- id="g3947-1-7">
- <g
- transform="translate(-1.1999969,-3.4960022)"
- id="g4068-1-2">
- <text
- x="166.2"
- y="180.85818"
- id="text2985-9-4"
- xml:space="preserve"
- style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
- x="166.2"
- y="180.85818"
- id="tspan2987-6-0">Client</tspan></text>
- <rect
- width="43.800003"
- height="21.503998"
- rx="5"
- ry="5.25"
- x="161.2"
- y="165.85818"
- id="rect3007-6-4"
- style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- </g>
- </g>
- <g
- transform="matrix(0.56532555,0.82486788,-0.82486788,0.56532555,327.54691,-80.416181)"
- id="g4097-0-2">
- <path
- d="m 210,177.36218 c 15,10 30,10 45,0"
- id="path3809-2-3"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
- id="path3809-5-5-5"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- </g>
- <g
- transform="matrix(-0.56532555,0.82486788,0.82486788,0.56532555,242.10224,-81.191343)"
- id="g4097-0-3">
- <path
- d="m 210,177.36218 c 15,10 30,10 45,0"
- id="path3809-2-7"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- <path
- d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
- id="path3809-5-5-9"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
- </g>
- </g>
-</svg>
-<p>
- <br/><br/>
- Des processus <span style="color:blue;">clients</span> communiquent
- avec le <span style="color:orange;">serveur</span> à travers le
- réseau. Les clients sont indépendant et ne communiquent pas entre
- eux. <em>Attention</em> plusieurs clients peuvent se trouver su la
- même machine physique!
-</p>
-</div>
-<div class="sws-slide">
- <h1>Architecture client-serveur</h1>
-<ul>
- <li>Le serveur attend des connexions entrantes</li>
- <li>Les clients peuvent se connecter à tout moment</li>
- <li>L'application client est généralement légère, envoie une
- requête au serveur et attend un résultat</li>
- <li>Le serveur est une application plus lourde qui:
- <ul><li>effectue des calculs trop coûteux pour le client</li>
- <li>gère l'accès à une ressource distante partagée<br/>…</li>
- </ul>
- </li>
-</ul>
-<p>Exemples: serveur de bases de données, serveur mail, serveur Web,
- terminal de carte bancaire, …</p>
-</div>
</body>
</html>
>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
- <title>Programmation Internet</title>
+ <title>Web et HTML</title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
</script>
</head>
<body>
-
+ <a class="sws-previous" href="prog_internet_03.xhtml" />
<div class="sws-slide sws-cover sws-option-nofooter">
<h1>Programmation Internet</h1>
<h1>Cours 4</h1>
</li>
</ol>
</div>
-
+ <h1>Internet et ses services </h1>
<div class="sws-slide">
<h1> Bref historique d'Internet (1/2)</h1>
<table class="desc">
</li>
</ol>
</div>
-
+ <h1> Fonctionnement du Web </h1>
<div class="sws-slide">
<h1>Fonctionnement du Web</h1>
<div style="text-align:center;">
</li>
</ol>
</div>
+ <h1> Adressage des documents Web </h1>
<div class="sws-slide">
<h1>Adressage des documents Web (1/3)</h1>
<table class="desc">
<p>devient</p>
<code> /home/kn/public_html/index.html</code>
</div>
+
+ <h1>Le protocole HTTP</h1>
<div class="sws-slide" >
<h1> Plan </h1>
<ol >
</li>
</ol>
</div>
+
<div class="sws-slide">
<h1>Caractéristiques du protocole HTTP</h1>
<ul>
<div class="sws-slide">
<h1>Démo</h1>
</div>
+ <h1>HTML, le format des documents</h1>
<div class="sws-slide" >
<h1> Plan </h1>
<ol >
>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
- <title>Programmation Internet</title>
+ <title>CSS</title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
</script>
</head>
<body>
+ <a href="prog_internet_04.xhtml" class="sws-previous"/>
<div class="sws-slide sws-cover sws-option-nofooter">
<h1>Programmation Internet</h1>
<a href="mailto:kn@lri.fr">kn@lri.fr</a><br/>
<a href="http://www.lri.fr/~kn/">http://www.lri.fr/~kn</a>
</div>
-
- <div class="sws-slide" >
- <h1> Plan </h1>
- <div>
- <ol >
- <li class="done"> Systèmes d'exploitation</li>
- <li class="done"> Réseaux et Internet</li>
- <li class="done"> Le Web </li>
- <li > CSS
- <ul class="empty">
- <li class="hl">4.1 Introduction</li>
- <li>4.2 Boîtes</li>
- <li>4.3 Selecteurs</li>
- </ul>
- </li>
- </ol>
- </div>
- </div>
-
+ <h1>Introduction</h1>
<div class="sws-slide">
<h1>Cascading Style Sheets (CSS)</h1>
<table class="desc">
</ul>
</div>
<div class="sws-slide">
- <h1> L'attribut <tt>style</tt></h1>
- <code> <![CDATA[ <a href="http://www.u-psud.fr" style="color:red">Un lien</a>]]>
+ <h1>L'attribut <tt>style</tt></h1>
+ <code> <![CDATA[ <a href="http://www.u-psud.fr" style="]]><em>color:red</em><![CDATA[">Un lien</a>]]>
</code>
<p>Apperçu: </p>
<p style="width:80%; margin-left:5%; border-style:solid;border-width:1pt;border-color:gray;">
<a href="http://www.u-psud.fr" style="color:red;text-decoration:underline;">Un lien</a>
</p>
- <p class="sws-pause">Inconvénient: il faut copier l'attribut
- style pour tous les liens de la page.
- </p>
+ <p class="sws-pause">Inconvénients :</p>
+ <ul> <li>il faut copier l'attribut
+ style pour tous les liens de la page</li>
+ <li>modification de tous les éléments difficiles</li>
+ </ul>
</div>
<div class="sws-slide">
- <h1> Internet </h1>
- <ul>
- <li> Ensemble de logiciels et protocoles basés sur <em>TCP/IP</em>
- </li>
- <li> Modèle Client/Serveur</li>
- <li> Un serveur fournit un service:
- <ul>
- <li>courriel</li>
- <li>transfert de fichier (ftp)</li>
- <li>connexion à distance (ssh)</li>
- <li>Web (http)</li>
- </ul>
- </li>
- <li> Plusieurs services peuvent être actifs sur la même
- machine (serveur). Un <em>port (identifiant numérique)</em>
- est associé à chaque service. Sur Internet, un service est
- identifié par:
- <ul>
- <li>L'adresse IP de la machine sur lequel il fonctionne</li>
- <li>Le numéro de port sur lequel le programme attend les
- connexions</li>
- </ul>
- </li>
- </ul>
+ <h1>L'élément <tt>style</tt></h1>
+ <code><![CDATA[ <html>
+ <head>
+ <title>…</title>
+ <style>
+]]> <em>a { color: red; }</em>
+<![CDATA[ </style>
+ </head>
+ <body>
+ <a href="…">Lien 1</a> <a href="…">Lien 2</a>
+ </body>
+ </html>]]></code>
+ <p>Apperçu :</p>
+ <p style="width:80%; margin-left:5%; border-style:solid;border-width:1pt;border-color:gray;">
+ <a href="…" style="color:red;text-decoration:underline;">Lien
+ 1</a>
+ <a href="…" style="color:red;text-decoration:underline;">Lien 2
+ </a>
+ </p>
+ <p>Inconvénient : local à une page</p>
</div>
<div class="sws-slide">
- <h1> Exemples de services </h1>
- <table class="simple" style="width:100%">
- <tr><th style="width:10%">Service</th>
- <th style="width:40%">Protocole</th>
- <th style="width:5%">Port</th>
- <th style="width:45%;">Description</th>
- </tr>
- <tr>
- <td>ftp</td> <td >File Transfer Protocol</td> <td>
- 20,21 </td> <td>Transfert de fichiers</td> </tr>
- <tr> <td>telnet</td> <td>Network Virtual
- Terminal</td> <td>23</td> <td>Shell à distance</td></tr>
- <tr> <td>ssh</td> <td>Secure Shell</td> <td>22</td><td>Shell à
- distance crypté</td></tr>
- <tr> <td>mail</td><td>Simple Mail Transfer
- Protocol</td> <td>25</td> <td>Envoi de mail</td></tr>
- <tr><td>pop</td> <td>Post Office
- Protocol</td> <td>110</td><td>Récupération de mail</td></tr>
- <tr><td>imap</td> <td>Internet Message Access
- Protocol</td> <td>143</td><td>Synchronisation de mails</td></tr>
- <tr><td>nslookup</td> <td>Domain Name
- System</td> <td>42</td> <td>Serveur de noms</td></tr>
- <tr ><td><em>http</em></td> <td>Hyper Text Transfer Protocole</td><td>80</td><td>Web</td></tr>
-
- </table>
+ <h1>Fichier <tt>.css</tt> séparé</h1>
+ <p>Fichier <tt>style.css</tt>:</p>
+ <p style="margin-left:5%;width:80%;margin-right:5%;border-width:1pt;border-style:solid">
+ <code >a { color: red; }</code>
+ </p>
+ <p>Fichier <tt>test.html</tt>:</p>
+ <p style="margin-left:5%;width:80%;margin-right:5%;border-width:1pt;border-style:solid">
+ <code > <![CDATA[<html>
+ <head>
+ …
+ ]]><em><link href="style.css" type="text/css" rel="stylesheet" /></em>
+<![CDATA[ </head>
+ …
+ </html>]]></code>
+ </p>
+ <p class="sws-pause">Modifications & déploiement aisé</p>
</div>
<div class="sws-slide">
- <h1> World Wide Web (1/2)</h1>
+ <h1>Syntaxe</h1>
+ <p>Une <em>propriété</em> CSS est définie en utilisant la
+ syntaxe:
+ </p>
+ <p style="text-align:center"><tt> nom_prop : val_prop
+ ; </tt></p>
<ul>
- <li>Service de distribution de page <em>hypertexte</em></li>
- <li>Une page <em>hypertexte</em> contient des références
- immédiatement accessibles à d'autres pages (pointeurs
- ou <em>liens hypertextes</em>)</li>
- <li>Les pages sont décrites dans le
- langage <em>HTML</em> (HyperText Markup Language) </li>
- <li>Architecture client/serveur:
- <ul>
- <li>Les pages sont stockées sur le serveur</li>
- <li>Les pages sont envoyées au client (navigateur Web) qui
- en assure le rendu</li>
- </ul>
+ <li>Si on utilise l'attribut <tt>style</tt> d'un
+ élément:<code>
+ <![CDATA[<a href="…" style="]]><em>color:red;border-style:solid;border:1pt;</em><![CDATA[">Lien 1</a>]]>
+ </code>
</li>
- <li>Utilise le protocole <em>HTTP</em> pour les échanges entre
- le client et le serveur</li>
+ <li>Si on utilise un fichier <tt>.css</tt> ou une feuille de
+ style:<code>
+ a {
+ <em>color : red;
+ border-style: solid;
+ border: 1pt;</em>
+ }
+ h1 { /* Le style des titres de niveau 1 */
+ text-decoration: underline;
+ color: green;
+ }
+</code></li>
</ul>
</div>
-
+<h1>Boîtes</h1>
<div class="sws-slide">
- <h1> World Wide Web (2/2)</h1>
- <p>Concepts clé:</p>
+ <h1> Unités de longueur</h1>
+ <p>CSS permet de spécifier des longueurs comme valeurs de
+ certaines propriétés (position et taille des éléments, épaisseur
+ des bordures, …). Les longueurs <em>doivent</em> comporter une
+ unité. Les unités reconnues sont:</p>
<table class="desc">
- <tr><td>URL</td> <td>localisation d'une page Web (« adresse de
- la page »)</td> </tr>
- <tr><td>HTTP</td> <td>protocole de communication entre un
- client et un serveur Web</td> </tr>
- <tr><td>HTML</td> <td>langage de description des pages
- Web</td> </tr>
+ <tr><td style="width:3em" >px</td> <td>pixel</td> </tr>
+ <tr><td>in</td> <td>pouce (2,54cm)</td> </tr>
+ <tr><td>cm</td> <td>centimètre</td> </tr>
+ <tr><td>mm</td> <td>millimètre</td> </tr>
+ <tr><td>pt</td> <td>point (1/72<up>ème</up> de pouce, 0,35mm) </td></tr>
+ <tr><td>pc</td> <td>pica (12 points)</td></tr>
+ <tr><td>em</td> <td>facteur de la largeur d'un caractère de la police
+ courante</td></tr>
+ <tr><td>ex</td> <td>facteur de la hauteur d'un caractère « x »
+ de la police courante</td></tr>
+ <tr><td>%</td> <td>pourcentage d'une valeur particulière
+ (définie par propriété)</td></tr>
+ <tr><td >vh</td> <td class="css3"><i>viewport height</i> (% de la
+ hauteur de la partie visible de la page)</td></tr>
+ <tr style="background:white"><td>vw</td> <td class="css3"><i>viewport
+ width</i> (% de la largeur de la partie visible de la
+ page)</td></tr>
</table>
- <p>Évolutions récentes (Web 2.0, internet mobile, <i>Cloud</i>, …)</p>
- <ul>
- <li>Standardisation du contenu multimédia (images, vidéos et
- sons en <i>streaming</i>)</li>
- <li>Contenu interactif avancé (stockage de fichier coté
- client, rendu 3D, …)</li>
- <li>Uniformisation de nombreuses extensions <i>ad-hoc</i>: HTML5</li>
- </ul>
</div>
- <div class="sws-slide" >
- <h1> Plan </h1>
- <ol >
- <li class="done" > Systèmes d'exploitation</li>
- <li class="done" > Réseaux et Internet </li>
- <li> Le Web
- <ul class="empty">
- <li class="done">3.1 Internet et ses services</li>
- <li class="hl" >3.2 Fonctionnement du Web</li>
- <li class="">3.3 Adressage des documents Web </li>
- <li>3.4 Le protocole HTTP</li>
- <li>3.5 HTML, le format des documents</li>
- </ul>
- </li>
- </ol>
- </div>
-
<div class="sws-slide">
- <h1>Fonctionnement du Web</h1>
- <div style="text-align:center;">
- <img style="width:90%;height:50%;" src="cours_4.svg"
- type="image/svg+xml" />
- </div>
+ <h1>Boîte</h1>
+ <p >Chaque élément de la page HTML possède une <em>boîte
+ rectangulaire</em> qui délimite le contenu de l'élément:
+ </p>
+ <div style="text-align:center;vertical-align:text-bottom;">
+ <span class="b0" style="color:black;">← <span style="padding:0 24vh 0
+ 25vh;"> width </span><span style="padding-right:10vh">→</span><br/>
+ <span id="b1" style="display:inline-block;
+ color:black;
+ padding:0 4vh 4vh 4vh;
+ border:dotted 2pt black;"><i>margin</i> (marge)<br/>
+ <span id="b2" style="display:inline-block;
+ padding:0 4vh 4vh 4vh;
+ color:white;background:black">
+ <i>border</i> (bordure)<br/>
+ <span id="b3" style="display:inline-block;padding:0 3vh 3vh 3vh;
+ background:white;color:black;border:dotted
+ 2pt black">
+ <i>padding</i> (ajustement)<br/>
+ <span style="border:dotted 2pt black;
+ background:white;
+ position:relative;
+ display:inline-block;
+ font-size:15vh;
+ width:2.8em;
+ height:12vh;">
+ <span style="color:red;
+ top:-5vh;
+ left:0vh;
+ position:absolute;
+ text-decoration:underline;
+ padding:0 0 0 0;
+ margin: 0 0 0 0;
+ ">Lien 1
+ </span>
+ </span>
+ </span>
+ </span>
+ </span>
+ </span><span class="b0" style="color:black;vertical-align:top;display:inline-block;font-size:large;height:100%;">↑<br/><br/><br/><br/>
+ height<br/><br/><br/><br/>↓
+ </span>
+ </div>
+ <script type="text/javascript">
+ function all(e) {
+ return $(e).children("*").addBack()
+ }
+ function hide(e) {
+ all(e).css('visibility', 'hidden');
+ };
+ function show(e) {
+ all(e).css('visibility', 'visible');
+ }
+ SWS.Presentation.registerCallback("0", function(c) {
+ hide(".b0");hide("#b1"); hide("#b2"); hide("#b3");
+
+ });
+ SWS.Presentation.registerCallback("1", function(c) {
+ hide(".b0");hide("#b1"); hide("#b2"); show("#b3");
+ });
+ SWS.Presentation.registerCallback("2", function(c) {
+ hide(".b0");hide("#b1"); show("#b2"); show("#b3");
+ });
+ SWS.Presentation.registerCallback("3", function(c) {
+ hide(".b0");show("#b1"); show("#b2"); show("#b3");
+ });
+ SWS.Presentation.registerCallback("4", function(c) {
+ show(".b0");show("#b1"); show("#b2"); show("#b3");
+ });
+ </script>
+ <p class="sws-onframe-5">La <em>taille t du contenu</em> est calculée pour que:<br/>
+ <tt>(height|width) = padding + margin + border + t</tt>
+ </p>
</div>
-
- <div class="sws-slide">
- <h1>Côté client</h1>
- <p>Le navigateur :</p>
- <ul>
- <li>Analyse l'URL demandée</li>
- <li>Obtient l'adresse IP auprès du serveur DNS</li>
- <li>Établit une connexion (potentiellement sécurisée) avec le serveur</li>
- <li>Envoie une <em>requête HTTP</em> au serveur</li>
- <li>Récupère la page envoyée par le serveur dans
- sa <em>réponse</em></li>
- <li>Analyse la page et récupère les éléments référencés :
- images, sons, …</li>
- <li>Effectue le traitement du code client</li>
- <li>Met en forme le contenu et l'affiche dans la fenêtre</li>
- </ul>
- </div>
-
<div class="sws-slide">
- <h1>Côté serveur</h1>
- <ul>
- <li>Un <i>listener</i> (<i>thread</i> particulier) attend les
- connexions sur un port par défaut (80 dans le cas de HTTP)</li>
- <li>À chaque nouvelle connexion, le <i>listener</i> crée
- un <i>thread</i> de traitement et se remet en attente
- </li>
- <li>Le <i>thread</i> de traitement vérifie la validité de la
- requête :
- <ul>
- <li>le document demandé existe ?
- </li>
- <li>le client est autorisé à accéder au document ?
- </li>
- <li>…</li>
- </ul>
- </li>
- <li>Le <i>thread</i> de traitement répond à la requête :
- <ul>
- <li>Exécution de code côté serveur, récupération de
- données dans une BD, …
- </li>
- <li>Envoi de la page au client
- </li>
- </ul>
- </li>
+ <h1>Marge, bordure, ajustement</h1>
+ <p>On peut spécifier jusqu'à 4 valeurs:</p>
+ <ul><li>1 valeur: toutes les dimensions égales à cette
+ valeur</li>
+ <li>2 valeurs: haut et bas égal à la première valeur, gauche
+ et droite égale à la deuxième</li>
+ <li>3 valeurs: haut à la première valeur, gauche
+ et droite égale à la deuxième, bas égal à la troisième</li>
+ <li>4 valeurs: haut, droit, bas, gauche</li>
</ul>
- </div>
-
- <div class="sws-slide" >
- <h1> Plan </h1>
- <ol >
- <li class="done" > Systèmes d'exploitation</li>
- <li class="done" > Réseaux et Internet </li>
- <li> Le Web
- <ul class="empty">
- <li class="done">3.1 Internet et ses services</li>
- <li class="done" >3.2 Fonctionnement du Web</li>
- <li class="hl">3.3 Adressage des documents Web </li>
- <li>3.4 Le protocole HTTP</li>
- <li>3.5 HTML, le format des documents</li>
- </ul>
- </li>
- </ol>
+ <code style="font-size:smaller;"> span {
+ padding:10pt 20pt 5pt 0pt;
+ margin:10pt 5pt;
+ border-width:3pt;
+ border-color:red blue green;
+ border-style:solid dotted;
+ } </code>
+ <div style="text-align:center;">Du <span style="padding:10pt
+ 20pt 5pt 0pt;margin:10pt 5pt;border-style:solid dotted;border-width:3pt;border-color:red blue green;">texte</span> dans une boite
+ </div>
</div>
<div class="sws-slide">
- <h1>Adressage des documents Web (1/3)</h1>
+ <h1>Modes d'affichage</h1>
+ <p>La propriété <em><i>display</i></em> contrôle le mode
+ d'affichage d'un élément:
+ </p>
<table class="desc">
- <tr><td>URL</td><td> <i>Uniform Resource Locator</i>
- identifie un document sur internet</td></tr>
+ <tr><td>none</td><td>l'élément n'est pas dessiné et n'occupe
+ pas d'espace</td></tr>
+ <tr><td style="width:4em;">inline</td><td>l'élément est placé sur la ligne
+ courante, dans le flot de texte. La taille du contenu (avec
+ les marges, ajustements et bordures) dicte la
+ taille de la boîte, <tt>height</tt> et <tt>width</tt> sont
+ ignorés (<tt><![CDATA[<i>, <b>, <span>, <em>, …]]></tt>
+ sont <i>inline</i> par défaut). </td></tr>
+ <tr><td>block</td><td>l'élément est placé seul sur sa
+ ligne. La taille est calculée automatiquement mais peut être
+ modifiée par <tt>width</tt> et <tt>height</tt>
+ (<tt><![CDATA[<div>, <h1>, <p>, …]]></tt>
+ sont <i>block</i> par défaut)</td></tr>
+ <tr><td>inline-block</td><td>positionné comme <i>inline</i>
+ mais la taille peut être modifiée comme pour <i>block</i></td></tr>
+
</table>
- <p>Une URL se décompose en 3 partie</p>
- <ul><li><em>protocole</em> (comment ?)</li>
- <li><span style="color:orange;">adresse</span> (où ?)</li>
- <li><span style="color:blue;">document</span> (quoi ?)</li>
- </ul>
- <p>Syntaxe (simplifiée) :</p>
- <code> <em>protocole</em>://<span style="color:orange">adresse</span>/<span style="color:blue;">document</span></code>
- <p>Exemple :</p>
- <code> <em>http</em>://<span style="color:orange">www.lri.fr</span>/<span style="color:blue;">~kn/teach_fr.html</span></code>
</div>
-
<div class="sws-slide">
- <h1>Adressage des documents Web (2/3)</h1>
- <p>On peut aussi préciser <span style="color:purple;">un numéro
- de port</span>, des <span style="color:black;">paramètres</span>
- et un <span style="color:red;">emplacement</span> :
- </p>
- <code> <em>protocole</em>://<span style="color:orange">adresse</span>:<span style="color:purple">port</span>/<span style="color:blue;">document</span>?<span style="color:black;">p1=v1</span>&<span style="color:black;">p2=v2</span>#<span style="color:red">empl</span></code>
- <p class="sws-pause" >Exemple :</p>
- <code> <a style="color:gray" href="http://www.youtube.com:80/results?search_query=tbbt#search-results"><em>http</em>://<span style="color:orange">www.youtube.com</span>:<span style="color:purple">80</span>/<span style="color:blue;">results</span>?<span style="color:black;">search_query=tbbt</span>#<span style="color:red">search-results</span></a></code>
- <p>Le serveur utilise les paramètres passés par le client dans
- l'URL pour <i>calculer</i> le contenu de la page (changer la
- chaîne « <code>tbbt</code> » ci-dessus et essayer)</p>
+ <h1>Modes d'affichage (exemples)</h1>
+ <div>
+ <div style="width:39%;margin:0 5%;border-style:solid; border-width:0 1pt 0 0;border-color:black;float:left;">
+ <tt>a { display: inline; … } </tt>
+ </div>
+ <div style="width:50%;float:left;">
+ Le <span style="border:solid 1pt
+ blue;color:blue;text-decoration:underline;">lien 1</span>,
+ le <span style="border:solid 1pt
+ blue;color:blue;text-decoration:underline;">lien 2</span> et
+ le <span style="border:solid 1pt
+ blue;color:blue;text-decoration:underline;">lien 3</span>.
+ </div>
+ </div>
+ <div >
+ <div style="width:39%;margin:0 5%;border-style:solid; border-width:0 1pt 0 0;border-color:black;float:left;">
+ <tt>a { display: block; … } </tt>
+ </div>
+ <div style="width:50%;float:left;">
+ Le <span style="display:block;border:solid 1pt
+ blue;color:blue;text-decoration:underline;">lien 1</span>,
+ le <span style="display:block;border:solid 1pt
+ blue;color:blue;text-decoration:underline;">lien 2</span> et
+ le <span style="display:block;border:solid 1pt
+ blue;color:blue;text-decoration:underline;">lien 3</span>.
+ </div>
+ </div>
+ <div>
+ <div style="width:39%;margin:0 5%;border-style:solid; border-width:0 1pt 0 0;border-color:black;float:left;">
+ <code>a { display: inline-block;
+ width: 4em;
+ height: 2em;
+ … } </code>
+ </div>
+ <div style="width:50%;float:left;">
+ Le <span style="display:inline-block;width:4em;height:2em;border:solid 1pt
+ blue;color:blue;text-decoration:underline;">lien 1</span>,
+ le <span style="display:inline-block;width:4em;height:2em;border:solid 1pt
+ blue;color:blue;text-decoration:underline;">lien 2</span> et
+ le <span style="display:inline-block;width:4em;height:2em;border:solid 1pt
+ blue;color:blue;text-decoration:underline;">lien 3</span>.
+ </div>
+ </div>
</div>
<div class="sws-slide">
- <h1>Adressage des documents Web (3/3)</h1>
- <p>
- La <em>racine</em> d'un site Web
- (ex: <em><code>http://www.lri.fr/</code></em>) correspond
- à un répertoire sur le disque du serveur
- (ex: <em><code>/var/www</code></em>). Le fichier</p>
- <code> http://www.lri.fr/index.html</code>
- <p>se trouve à l'emplacement</p>
- <code> /var/www/index.html</code>
- <p>Le serveur Web peut aussi effectuer des <em>réécritures
- d'adresses</em> :</p>
- <code> http://www.lri.fr/~kn/index.html</code>
- <p>devient</p>
- <code> /home/kn/public_html/index.html</code>
- </div>
- <div class="sws-slide" >
- <h1> Plan </h1>
- <ol >
- <li class="done" > Systèmes d'exploitation</li>
- <li class="done" > Réseaux et Internet </li>
- <li> Le Web
- <ul class="empty">
- <li class="done">3.1 Internet et ses services</li>
- <li class="done" >3.2 Fonctionnement du Web</li>
- <li class="done">3.3 Adressage des documents Web </li>
- <li class="hl">3.4 Le protocole HTTP</li>
- <li>3.5 HTML, le format des documents</li>
- </ul>
- </li>
- </ol>
+ <h1>Positionnement</h1>
+ <p>Le type de positionnement est donné par la
+ propriété <em>position</em></p>
+ <table class="desc">
+ <tr><td>static</td><td>positionnement « automatique
+ » </td></tr>
+ <tr><td>fixed</td><td>positionnement par rapport à la fenêtre
+ du navigateur (la boîte est supprimée du flot)</td></tr>
+ <tr><td>relative</td><td>positionnement « relatif » par
+ rapport à la position normale</td></tr>
+ <tr><td style="width:5em;">absolute</td><td>positionnement « absolu » par rapport
+ à l'ancêtre le plus proche qui n'est pas <i>static</i></td></tr>
+ </table>
+ <p>Pour <tt>fixed</tt>, <tt>relative</tt> et <tt>absolute</tt>,
+ les propriétés <tt>top</tt>, <tt>bottom</tt>, <tt>left</tt>
+ et <tt>right</tt> dénotent les décalages respectifs.
+ </p>
</div>
<div class="sws-slide">
- <h1>Caractéristiques du protocole HTTP</h1>
- <ul>
- <li>Sans connexion permanente:
- <ul>
- <li>Le client se connecte au serveur, envoie sa requête,
- se déconnecte</li>
- <li>Le serveur se connecte au client, envoie sa réponse,
- se déconnecte</li>
- </ul>
- </li>
- <li>Indépendant du contenu : permet d'envoyer des documents
- (hyper) texte, du son, des images, …</li>
- <li>Sans <em>état</em>: chaque paire requête/réponse est
- indépendante (le serveur ne maintient pas d'information sur le
- client entre les requêtes)</li>
- <li>Protocole en mode <em>texte</em></li>
+ <h1>Positionnement (exemple)</h1>
+ <div>
+ <div style="45%;margin:0 4%;float:left;"><code>
+<span style="color:#02a"> a { position: static;
+ … }</span>
+<span style="color:#0a2"> a { position: fixed;
+ right:10pt;
+ top: 10pt;
+ }</span></code></div>
+ <div style="width:50%;float:left;"><code>
+<span style="color:#a20"> a { position: relative;
+ left: 10pt;
+ bottom: -5pt;
+ … }</span>
+<span style="color:#a2a"> a { position:absolute;
+ right:0pt;
+ bottom: 10pt;
+ }</span></code>
+ </div><code><![CDATA[ <ul style="position:relative;"><li>…</li> …</ul>]]></code>
+ </div><br/>
+ <ul style="position:relative;float:right;background:#ddd;">
+ <li>Positionnement <span style="position:static;color:#02a">static</span></li>
+ <li>Positionnement <span style="position:fixed;right:10pt;top:10pt;color:#0a2">fixed
+ (right:10pt,top:10pt)</span></li>
+ <li>Positionnement <span style="position:relative;left:10pt;bottom:-5pt;color:#a20">relative
+ (left:10pt,bottom:-5pt)</span></li>
+ <li>Positionnement <span style="position:absolute;right:0pt;bottom:10pt;color:#a2a">absolute
+ (right:10pt,bottom:10pt)</span></li>
+
</ul>
</div>
+ <h1>Autres propriétés</h1>
<div class="sws-slide">
- <h1>Format des messages HTTP</h1>
- <p>Les messages ont la forme suivante</p>
- <ul><li>Ligne initiale CR LF</li>
- <li>zéro ou plusieurs lignes d'option CR LF</li>
- <li>CR LF</li>
- <li>Corp du message (document envoyé, paramètres de la
- requête, …)</li>
- </ul>
- <ul><li><em>Requête</em> la première ligne contient un nom
- de <em>méthode</em> (GET, POST, HEAD, …), le paramètre de la
- méthode et la version du protocole</li>
- <li><em>Réponse</em> la version du protocole, le code de la
- réponse (200, 404, 403, …) et un message informatif
- </li>
+ <h1>Couleurs</h1>
+ <p>Les couleurs peuvent être données:</p>
+ <ul>
+ <li>par nom
+ symbolique: <span style="color:red">red</span>,
+ <span style="color:blue">blue</span>,
+ <span style="color:purple">purple</span>,
+ …</li>
+ <li>en
+ hexadécimal: <tt>#<span style="color:red">xx</span><span style="color:green">yy</span><span style="color:blue">zz</span></tt>, avec
+ <tt>00 ≤ xx,yy,zz ≤ ff</tt></li>
+ <li>en
+ décimal: <tt>rgb(<span style="color:red">x</span>, <span style="color:green">y</span>, <span style="color:blue">z</span>)</tt>,
+ avec <tt>0 ≤ x,y,z ≤ 255</tt></li>
+ <li class="css3">en
+ décimal avec
+ transparence: <tt >rgba(<span style="color:red">x</span>, <span style="color:green">y</span>, <span style="color:blue">z</span>,
+ a)</tt>,
+ avec <tt>0 ≤ x,y,z ≤ 255</tt> et <tt>0 ≤ a ≤ 1 </tt></li>
+
</ul>
</div>
<div class="sws-slide">
- <h1>Démo</h1>
- </div>
- <div class="sws-slide" >
- <h1> Plan </h1>
- <ol >
- <li class="done" > Systèmes d'exploitation</li>
- <li class="done" > Réseaux et Internet </li>
- <li> Le Web
- <ul class="empty">
- <li class="done">3.1 Internet et ses services</li>
- <li class="done" >3.2 Fonctionnement du Web</li>
- <li class="done">3.3 Adressage des documents Web </li>
- <li class="done">3.4 Le protocole HTTP</li>
- <li class="hl">3.5 HTML, le format des documents</li>
- </ul>
- </li>
- </ol>
- </div>
- <div class="sws-slide">
- <h1>HTML</h1>
- <p>
- <em>HyperText Markup Language</em> : langage de mise en forme
- de documents hypertextes (texte + liens vers d'autres
- documents). Développé au CERN en 1989.<br/>
- <em>1991</em> : premier navigateur en mode texte<br/>
- <em>1993</em> : premier navigateur graphique (mosaic)
- développé au NCSA (National Center for Supercomputing
- Applications)
- </p>
+ <h1>Propriétés du texte</h1>
+ <p>Certaines propriétés permettent d'alterer le rendu du texte
+ d'un élément</p>
+ <table class="desc">
+ <tr><td>direction</td><td><tt>ltr</tt> ou <tt>rtl</tt>
+ (orientation du texte)</td></tr>
+ <tr> <td>text-transform</td> <td><tt>capitalize</tt>, <tt>uppercase</tt>, <tt>lowercase</tt>
+ </td></tr>
+ <tr> <td>text-decoration</td> <td><tt>underline</tt>, <tt>overline</tt>, <tt>line-through</tt> </td></tr>
+ <tr> <td>text-align</td> <td><tt>left</tt>, <tt>right</tt>, <tt>center</tt>, <tt>justify</tt></td></tr>
+ <tr><td>text-indent</td> <td><tt>longueur du retrait de paragraphe</tt></td></tr>
+ </table>
</div>
<div class="sws-slide">
- <h1>Document HTML</h1>
- <ul><li> est un document <em>semi-structuré</em></li>
- <li> dont la structure est donnée par
- des <em>balises</em></li>
- </ul>
- <div>
- <table class="btable simple" style="width:90%;margin-left:5%">
- <thead>
- <tr><th style="width:65%;">Exemple</th> <th>Rendu par défaut</th></tr>
- </thead>
- <tr><td ><tt><![CDATA[Un texte <b>en gras</b> ]]></tt></td><td>Un
- texte <b>en gras</b></td></tr>
- <tr><td ><code><![CDATA[<a href="http://www.u-psud.fr">Un lien</a> ]]></code></td>
- <td><a style="color:blue;text-decoration:underline;"
- href="http://www.u-psud.fr">Un lien</a></td></tr>
- <tr><td><code><![CDATA[<ul>
- <li>Premièrement</li>
- <li>Deuxièmement</li>
-</ul> ]]></code></td> <td><ul>
-<li>Premièrement</li>
-<li>Deuxièmement</li>
-</ul>
+ <h1>Propriétés de la police</h1>
+ <table class="desc">
+ <tr><td>font-family</td><td>liste de nom de polices séparées
+ par des virgules (<tt>Helvetica, sans, "Times New Roman"</tt>)</td></tr>
+ <tr> <td>font-style</td> <td><tt>normal</tt>, <tt>italic</tt> </td></tr>
+ <tr> <td>font-weight</td> <td><tt>normal</tt>, <tt>lighter</tt>, <tt>bold</tt>, <tt>bolder</tt> </td></tr>
+ <tr> <td style="width:6.5em;">font-size</td> <td> soit une longueur
+ soit <tt>xx-small</tt>, <tt>x-small</tt>, <tt>small</tt>, <tt>medium</tt>,
+ <tt>large</tt>, <tt>x-large</tt>, <tt>xx-large</tt>
</td></tr>
</table>
- </div>
-<p>On dit que <em><tt><![CDATA[<toto>]]></tt></em> est une balise <em>
- ouvrante</em> et <em><tt><![CDATA[</toto>]]></tt></em> une
- balise <em>fermante</em>. On peut
- écrire <em><tt><![CDATA[<toto/>]]></tt></em> comme raccourci pour
- <tt><![CDATA[<toto></toto>]]></tt>.
-</p>
- </div>
- <div class="sws-slide">
- <h1>Historique du langage HTML</h1>
-<table class="desc">
- <tr><td style="width:3em;">1973</td> <td>GML, Generalised Markup Language développé chez
-IBM. Introduction de la notion de balise.</td></tr>
-<tr><td>1980</td><td> SGML, Standardised GML, adopté par l'ISO</td></tr>
-<tr><td>1989</td><td> HTML, basé sur SGML. Plusieurs entreprises (microsoft,
-netscape, ... ) interprètent le standard de manière
-différente</td></tr>
-<tr><td>1996</td> <td>XML, eXtensible Markup Language norme pour les
-documents semi-structurés (SGML simplifié)</td></tr>
-<tr><td>2000</td><td> XHTML, version de HTML suivant les conventions
- XML</td></tr>
-<tr><td>2008</td><td> Première proposition pour le nouveau standard,
- HTML5</td></tr>
-<tr><td>2014</td><td>Standardisation de HTML5</td></tr>
-</table>
+ <p class="css3" >On peut aussi spécifier un descripteur de
+ police</p>
+ <code>
+ @font-face {
+ font-family: Toto;
+ src: url(toto.ttf);
+ }
+ a { font-family: Toto; }
+ </code>
</div>
-
+ <h1>Selecteurs</h1>
<div class="sws-slide">
- <h1>XHTML <i>vs</i> HTML</h1>
- <p>On utilise XHTML dans le cours. Différences avec HTML:</p>
- <ul>
- <li>
- Les balises sont <em>bien parenthésées</em>
- (<tt><![CDATA[<a> <c> </c> ]]> <span style="color:red"></b></span></tt> est interdit)
- </li>
- <li>Les balises sont en minuscules</li>
- </ul>
- <p>Les avantages sont les suivants</p>
- <ul><li>HTML autorise les mélanges majuscule/minuscule, de ne
- pas fermer certaines balise … Les navigateurs corrigent ces
- erreurs de manières <em>différentes</em></li>
- <li>Le document est <em>structuré</em> comme un programme
- informatique (les balises ouvrantes/fermantes correspondent à
- { et }). Plus simple à débugger.</li>
- </ul>
+ <h1>Selecteurs</h1>
+ <p>On peut sélectionner finement les éléments auxquels un style
+ s'applique</p>
+ <table class="desc">
+ <tr><td><tt>x</tt></td><td>tous les éléments dont la balise
+ est <tt>x</tt></td></tr>
+ <tr> <td><tt>.foo</tt></td> <td>tous les éléments dont
+ l'attribut <tt>class</tt> vaut <tt>foo</tt></td></tr>
+ <tr><td><tt>#foo</tt></td><td>l'élément dont l'attribut
+ <tt>id</tt> vaut <tt>foo</tt> (les <tt>id</tt> doivent être uniques)</td></tr>
+ <tr> <td><tt>X Y</tt></td> <td>tous les éléments
+ selectionnés par <tt>Y</tt> qui sont des descendants d'éléments
+ sélectionnés par <tt>X</tt></td></tr>
+ <tr> <td><tt>X > Y</tt></td> <td>tous les éléments dont
+ selectionné par <tt>Y</tt> qui sont des fils d'éléments
+ sélectionnés par <tt>X</tt></td></tr>
+ <tr><td style="width:7em;"><tt>a:visited</tt></td><td>les liens déjà
+ visités</td></tr>
+ <tr><td><tt>a:link</tt></td><td>les liens non
+ visités</td></tr>
+ <tr><td><tt>X:hover</tt></td><td>élément selectionné
+ par <tt>X</tt> et survollé par la souris</td></tr>
+ </table>
+ <code> div.foo ul li a:visited { color: red; } </code>
</div>
-<div class="sws-slide">
- <h1>Rôle d'(X)HTML</h1>
- <p>Séparer la <em>structure</em> du document de
- son <em>rendu</em>. La structure donne une <em>sémantique</em> au
- document :</p>
- <ul>
- <li>ceci est un titre</li>
- <li>ceci est un paragraphe</li>
- <li>ceci est un ensemble de caractères importants</li>
- </ul>
- <p>Cela permet au navigateur d'assurer un rendu en fonction de la
- sémantique. Il existe différents types de rendus:</p>
- <ul>
- <li>graphique interactif (Chrome, Firefox, Internet Explorer,
- …)</li>
- <li>texte interactif (Lynx, navigateur en mode texte)</li>
- <li>graphique statique (par ex: sur livre électronique)</li>
- <li>rendu sur papier</li>
- <li>graphique pour petit écran (terminal mobile)</li>
- </ul>
-</div>
-<div class="sws-slide">
- <h1>Exemple de document</h1>
- <p style="text-align:center;font-size:smaller;">(liste des balises
- données sur la feuille de TD 4!)</p>
-<div style="margin-left:10%;">
-<code style="font-size:smaller;"><![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
- <head>
- <title>Un titre</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- </head>
- <body>
- <h1>Titre de section</h1>
- <p> premier paragraphe de texte. On met
- un <a href="http://www.lri.fr">lien</a> ici.
- </p>
- <!-- on peut aussi mettre des commentaires -->
</body>
- </html>]]></code>
-</div>
-</div>
- </body>
</html>
p { width: 100%; }
+/* counters for the toc */
+
+.sws-toc ul {
+ counter-reset: list-item;
+}
+
+.sws-toc li {
+ counter-increment: list-item;
+
+}
+.sws-toc li::marker {
+ content : counters(list-item, '.');
+}
/* Control Panel */
if (_initialized) return;
//jQuery does not seem to work well
//on a partial DOM
-
- var slide_num = $(".sws-slide").length - 1;
+ var slides = $(".sws-slide");
+ var h1s = $("body").children("h1");
+ var slide_num = slides.add(h1s).length - 1;
SWS.Utils.push2(_slide_callbacks, slide_num,{ 'fn': f, 'frame': i });
}
+ self.buildFullTOC = function () {
+
+ var build_sections = function (doc) {
+ var res = [];
+ var h1s = doc.find("body").first().children("h1");
+ var slides = doc.find("body").first().children(".sws-slide");
+ var slide_num = 1;
+ var collection = h1s.add(slides);
+ collection.each (function () {
+ if ($(this).is("h1")) {
+ res.push({ 'title' : $(this).text(),
+ 'slide' : slide_num });
+ } else {
+ slide_num++;
+ }
+ });
+ return res;
+ };
+
+ var toc = [];
+
+ var append = function (a,e) {
+ return a.push(e);
+ };
+ var prepend = function (a,e) {
+ return a.unshift(e);
+ };
+
+ var loop = function (doc, dir, add, ignoreFirst) {
+ if (ignoreFirst !== true) {
+ var this_toc = { 'title' : doc.find("title").first().text(),
+ 'sections' : build_sections(doc) };
+ add(toc, this_toc);
+ };
+ var url = doc.find(dir).first().attr("href");
+ if (!SWS.Utils.isUndefined(url) && url != "") {
+ $.ajax({ 'url' : url, 'async' : false ,'success' : function (page) {
+ loop ($(page), dir, add, false);
+ }});
+ };
+ };
+ loop ($(document), ".sws-previous", prepend, false);
+ return toc;
+
+ };
+
+
var _xstart = 0;
self.inputHandler = function (event) {
$("html").addClass("sws-display");
//$(window).resize(self.redraw);
+ var slides = $(".sws-slide");
+ var h1s = $("body").children("h1");
+ var slide_num = slides.add(h1s).length - 1;
-
- _total_slides = $(".sws-slide").length;
+ _total_slides = $(".sws-slide").add($("body").children("h1")).length;
var cur = self.getCurrentSlide();
+ var toc = self.buildFullTOC();
+ var common_html = "<div class='sws-slide sws-toc'><h1>Plan</h1><ul style='list-style-type:none'>";
+ var i;
+ for (i= 0; i < toc.length - 1; i++)
+ common_html += "<li class='done'>" + (i+1) +
+ ' ' + toc[i].title + "</li>";
+
+ common_html += "<li>" + toc.length + ' ' + toc[toc.length - 1].title;
+ common_html += "<ul style='list-style-type:none' >";
+ var sections = toc[toc.length - 1].sections;
+ $("body").children("h1").each(function (i) {
+ var this_html = common_html;
+ var j;
+ var secnum = toc.length + '.';
+ for (j = 0; j < i; ++j)
+ this_html += "<li class='done'>" + secnum + (j+1) + ' ' +
+ sections[j].title + "</li>";
+ this_html += "<li class='hl'>" + secnum + (i+1) + ' ' +
+ sections[i].title + "</li>";
+ for (j = i+1; j < sections.length; j++)
+ this_html += "<li>" + secnum + (j+1) + ' '
+ +sections[j].title + "</li>";
+ this_html += "</ul></li></ul></div>";
+ $(this).after(this_html);
+ });
$(".sws-slide").each(function (i) {
_slide_callbacks = null; /* avoid a leak */
var passed_theme = SWS.Utils.getParameterByName("theme");
+
+
//workaround weird chrome CSS loading bug
var f =
function () {
background: white;
padding: 0 0 0 0;
margin: 0 0 0 0;
+ /* allows the canvas to cover the logo needed */
+ z-index:2;
}
.sws-footer {
display:block;
width:10vh;
height:10vh;
+ color:red;
content:"";
background-size: 10vh;
background-image: url("upsud.png");
background-repeat: no-repeat;
+ z-index: -1;
}
.sws-slide-num-sep:after {
text-align:justify;
}
+
+
code, pre, tt {
font-family: 'Inconsolata', monospace;
color: #494948;
}
table.desc tr {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+
}
table.desc td {
vertical-align: top;
text-align: justify;
- padding-bottom: 3vh;
-}
-
-table.desc tr:last-child td {
- padding-bottom:0;
+ margin: 0 0 0 0;
}
table.desc td:first-child {
table.simple th,
table.simple tr {
vertical-align:top;
+}
+.css3:after {
+ content:"CSS3";
+ color:white;
+ background: #0a64a4;
+ border-radius:0.25em;
+ font-size:small;
+ margin: 0.25em;
+ padding:0.1em;
}
\ No newline at end of file