.
authorKim Nguyễn <kn@lri.fr>
Wed, 16 Sep 2015 09:27:59 +0000 (11:27 +0200)
committerKim Nguyễn <kn@lri.fr>
Wed, 16 Sep 2015 09:27:59 +0000 (11:27 +0200)
64 files changed:
themes/uPsud.css
unix_prog_web/cours_4.svg [deleted file]
unix_prog_web/password.html [deleted file]
unix_prog_web/password2.php [deleted file]
unix_prog_web/pdf/unix_prog_web_01.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_01_print.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_02.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_02_print.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_03.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_03_print.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_04.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_04_print.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_05.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_05_print.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_06.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_06_print.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_07.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_07_print.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_08.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_08_print.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_09.pdf [deleted file]
unix_prog_web/pdf/unix_prog_web_09_print.pdf [deleted file]
unix_prog_web/radar.jpg [deleted file]
unix_prog_web/ssl-cert.png [deleted file]
unix_prog_web/stat.php [deleted file]
unix_prog_web/test.php [deleted file]
unix_prog_web/unix_prog_web_01.xhtml [deleted file]
unix_prog_web/unix_prog_web_02.xhtml [deleted file]
unix_prog_web/unix_prog_web_03.xhtml [deleted file]
unix_prog_web/unix_prog_web_04.xhtml [deleted file]
unix_prog_web/unix_prog_web_05.xhtml [deleted file]
unix_prog_web/unix_prog_web_06.xhtml [deleted file]
unix_prog_web/unix_prog_web_07.xhtml [deleted file]
unix_prog_web/unix_prog_web_08.xhtml [deleted file]
unix_prog_web/unix_prog_web_09.xhtml [deleted file]
unix_prog_web/xkcd.png [deleted file]
xpi/factory_pattern_uml_diagram.jpg [deleted file]
xpi/pdf/xpi_01.pdf [deleted file]
xpi/pdf/xpi_01_print.pdf [deleted file]
xpi/pdf/xpi_02.pdf [deleted file]
xpi/pdf/xpi_02_print.pdf [deleted file]
xpi/pdf/xpi_03.pdf [deleted file]
xpi/pdf/xpi_03_print.pdf [deleted file]
xpi/pdf/xpi_04.pdf [deleted file]
xpi/pdf/xpi_04_print.pdf [deleted file]
xpi/pdf/xpi_05.pdf [deleted file]
xpi/pdf/xpi_05_print.pdf [deleted file]
xpi/pdf/xpi_06.pdf [deleted file]
xpi/pdf/xpi_06_print.pdf [deleted file]
xpi/pdf/xpi_07.pdf [deleted file]
xpi/pdf/xpi_07_print.pdf [deleted file]
xpi/pdf/xpi_08.pdf [deleted file]
xpi/pdf/xpi_08_print.pdf [deleted file]
xpi/recette.xml [deleted file]
xpi/test.xsl [deleted file]
xpi/tree.svg [deleted file]
xpi/xpi_01.xhtml [deleted file]
xpi/xpi_02.xhtml [deleted file]
xpi/xpi_03.xhtml [deleted file]
xpi/xpi_04.xhtml [deleted file]
xpi/xpi_05.xhtml [deleted file]
xpi/xpi_06.xhtml [deleted file]
xpi/xpi_07.xhtml [deleted file]
xpi/xpi_08.xhtml [deleted file]

index d9d9904..a8ba435 100644 (file)
@@ -25,12 +25,13 @@ h1 {
     background: white;
     padding: 0 0 0 0;
     margin: 0 0 0 0;
-    /* allows the canvas to cover the logo needed */
     z-index:2;
 }
+.sws-inner-canvas {     /* allows the canvas to cover the logo if needed */
+    z-index:2 }
 
 
-.sws-canvas:after {
+.sws-footer::before {
     position:absolute;
     bottom: 1vh;
     left:1vh;
@@ -41,8 +42,9 @@ h1 {
     background-size: 100%;
     background-image: url("logo_psud_psay.png");
     background-repeat: no-repeat;
-    z-index: -1;
 }
+:root.sws-display .sws-footer::before { z-index: -1; }
+/*:root.sws-print .sws-footer::before { z-index: 1; }*/
 
 .sws-slide-num-sep:after {
     content: "/";
@@ -110,7 +112,7 @@ ul  {
     list-style-type: square;
 }
 
-ul,il {
+ul, ol {
     list-style-position: inside;
     width: 92%;
     padding: 0 4% 0 4%;
diff --git a/unix_prog_web/cours_4.svg b/unix_prog_web/cours_4.svg
deleted file mode 100644 (file)
index d26b090..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="cours_4.svg"
-   preserveAspectRatio="xMinYMin meet"
-   viewBox="0 0 488 227"
-   height="100%"
-   width="100%">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mend"
-       style="overflow:visible">
-      <path
-         id="path4048"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
-         transform="matrix(-0.4,0,0,-0.4,-4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path4045"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
-         transform="matrix(0.4,0,0,0.4,4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lstart"
-       style="overflow:visible">
-      <path
-         id="path4039"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
-         transform="matrix(0.8,0,0,0.8,10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend"
-       style="overflow:visible">
-      <path
-         id="path4042"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend-0"
-       style="overflow:visible">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4042-8"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="35.363832"
-     inkscape:cy="61.224991"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     fit-margin-top="0.3"
-     fit-margin-right="0.3"
-     fit-margin-bottom="0.3"
-     fit-margin-left="0.3"
-     units="pt"
-     inkscape:window-width="1317"
-     inkscape:window-height="744"
-     inkscape:window-x="49"
-     inkscape:window-y="24"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3851"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true"
-       originx="-48.625px"
-       originy="-714.565px" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-48.625,-111)">
-    <path
-       sodipodi:nodetypes="cc"
-       inkscape:connector-curvature="0"
-       id="path6222"
-       d="m 160,192.36218 c 0,0 110,70 255,0"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:none" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       id="rect2985"
-       width="100"
-       height="110"
-       x="50"
-       y="122.36218"
-       rx="5"
-       ry="5.25" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       id="rect2987"
-       width="90"
-       height="39.285721"
-       x="55"
-       y="138.07646"
-       rx="5"
-       ry="5.25" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:none"
-       d="m 160,192.36218 c 0,0 110,70 255,0"
-       id="path3853"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:none"
-       d="m 416.70357,171.56972 c 0,0 -110,-69.99999 -255,0"
-       id="path3853-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:#d8d8d8;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       d="m 282.26208,128.4689 c -15.52034,0 -28.93338,7.33912 -35.35367,17.99919 -0.64637,-0.0258 -1.29805,-0.0499 -1.95223,-0.0499 -21.75627,0 -39.38014,14.4159 -39.38014,32.19661 0,9.76218 5.31567,18.50189 13.71136,24.4061 3.8e-4,0.004 -3.8e-4,0.008 0,0.0125 1.54765,16.62328 18.53694,29.71611 39.27338,29.71611 6.98235,0 13.53033,-1.49682 19.21727,-4.10092 6.95058,5.03082 16.08115,8.08966 26.09582,8.08966 13.08998,0 24.68235,-5.22044 31.84576,-13.25009 1.22508,0.0938 2.46634,0.14958 3.72144,0.14958 21.75627,0 39.39539,-14.4159 39.39539,-32.19661 0,-13.70651 -10.48818,-25.40777 -25.25698,-30.05266 -6.2531,-11.0236 -19.90492,-18.67229 -35.75021,-18.67229 -0.93741,0 -1.87005,0.0346 -2.79108,0.0873 -7.06455,-8.6395 -19.10727,-14.33454 -32.77611,-14.33454 z"
-       id="path3034"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-size:16px;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"
-       x="260"
-       y="182.36218"
-       id="text4503"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4505"
-         x="260"
-         y="182.36218">Internet</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:10px;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"
-       x="100"
-       y="152.36218"
-       id="text4507"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4509"
-         x="100"
-         y="152.36218">Client</tspan><tspan
-         sodipodi:role="line"
-         x="100"
-         y="164.86218"
-         id="tspan4511">(Navigateur Web)</tspan></text>
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       id="rect2985-2"
-       width="108.57141"
-       height="195"
-       x="426.42859"
-       y="112.36218"
-       rx="5"
-       ry="5.25" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       id="rect2987-8"
-       width="90"
-       height="39.285721"
-       x="435"
-       y="128.07646"
-       rx="5"
-       ry="5.25" />
-    <text
-       xml:space="preserve"
-       style="font-size:10px;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"
-       x="480"
-       y="142.36218"
-       id="text4507-4"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4509-5"
-         x="480"
-         y="142.36218">Serveur</tspan><tspan
-         sodipodi:role="line"
-         x="480"
-         y="154.86218"
-         id="tspan4511-5">(programme)</tspan></text>
-    <path
-       id="path4543"
-       style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
-       d="m 530.88892,222.97799 c 0,6.90356 -21.9929,13.52857 -49.60714,13.52857 -27.61424,0 -50.39286,-6.62501 -50.39286,-13.52857 0,-6.90356 22.77862,-11.47143 50.39286,-11.47143 27.61424,0 49.60714,4.56787 49.60714,11.47143 z m -100,0 0,30 c 0.96873,5.73041 23.81743,11.57532 50.15625,11.57532 26.33882,0 46.37503,-5.8385 49.84375,-11.57532 0,-5 0,-30 0,-30"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="sssssccscc" />
-    <text
-       xml:space="preserve"
-       style="font-size:10px;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"
-       x="100"
-       y="202.36218"
-       id="text4507-8"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4509-6"
-         x="100"
-         y="202.36218">Client</tspan><tspan
-         sodipodi:role="line"
-         x="100"
-         y="214.86218"
-         id="tspan4511-3">(Machine)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:10px;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"
-       x="456.82117"
-       y="251.13666"
-       id="text4618"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4620"
-         x="456.82117"
-         y="251.13666">Documents</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:10px;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"
-       x="480"
-       y="282.36218"
-       id="text4507-4-3"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4509-5-2"
-         x="480"
-         y="282.36218">Serveur</tspan><tspan
-         sodipodi:role="line"
-         x="480"
-         y="294.86218"
-         id="tspan4511-5-6">(machine)</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:none"
-       d="m 480,172.36218 c 0,20 0,35 0,35"
-       id="path4646"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <text
-       xml:space="preserve"
-       style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#92b938;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Bold"
-       x="470"
-       y="322.36218"
-       id="text5218"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan5220"
-         x="470"
-         y="322.36218">PHP</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:10px;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"
-       x="470.14297"
-       y="337.36218"
-       id="text5222"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan5224"
-         x="470.14297"
-         y="337.36218">Java</tspan></text>
-    <g
-       id="g5236"
-       transform="translate(17.421707,1)">
-      <text
-         sodipodi:linespacing="125%"
-         id="text5226"
-         y="251.36218"
-         x="82.578293"
-         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#92b938;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Bold"
-         xml:space="preserve"><tspan
-           y="251.36218"
-           x="82.578293"
-           id="tspan5228"
-           sodipodi:role="line">HTML</tspan><tspan
-           id="tspan5230"
-           y="263.86218"
-           x="82.578293"
-           sodipodi:role="line">CSS</tspan></text>
-      <text
-         sodipodi:linespacing="125%"
-         id="text5232"
-         y="272.36218"
-         x="60"
-         style="font-size:10px;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"
-         xml:space="preserve"><tspan
-           y="272.36218"
-           x="60"
-           id="tspan5234"
-           sodipodi:role="line">Javascript</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:10px;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"
-       x="260"
-       y="122.36218"
-       id="text5262"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan5264"
-         x="260"
-         y="122.36218">Requêtes</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:10px;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"
-       x="290"
-       y="252.36218"
-       id="text6026"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan6028"
-         x="290"
-         y="252.36218">Réponses</tspan><tspan
-         sodipodi:role="line"
-         x="290"
-         y="264.86218"
-         id="tspan6030">(pages, images, vidéos, scripts, …)</tspan></text>
-    <path
-       style="fill:#000000;fill-opacity:1;stroke:none"
-       d="m 153.69106,188.74964 7.20077,7.55969 2.97218,-5.21212 z"
-       id="path6798-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:#000000;fill-opacity:1;stroke:none"
-       d="m 422.59911,174.46563 -7.57857,-7.1809 -2.70129,5.35752 z"
-       id="path6798-2"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:#000000;fill-opacity:1;stroke:none"
-       d="m 480.06526,168.83859 -3.04557,9.98622 5.99994,0.0274 z"
-       id="path6798-2-2"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:#000000;fill-opacity:1;stroke:none"
-       d="m 480.06526,209.70337 -3.04557,-9.98622 5.99994,-0.0274 z"
-       id="path6798-2-2-4"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-  </g>
-</svg>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
diff --git a/unix_prog_web/password.html b/unix_prog_web/password.html
deleted file mode 100644 (file)
index 5d82e83..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-  <body>
-    <form method="post" action="password2.php">
-      Username: <input name="name" type="text" width="20"> </input><br/>
-      Password: <input name="pass" type="password"
-      width="20"></input><br/>
-      <button type="submit">Connect</button>
-    </form>
-  </body>
-</html>
diff --git a/unix_prog_web/password2.php b/unix_prog_web/password2.php
deleted file mode 100644 (file)
index e257b59..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-  <body>
- <?php
-if (isset($_POST["name"])) {
-       echo "Bonjour, " . $_POST["name"];
-};
-
-?>
-  </body>
-</html>
diff --git a/unix_prog_web/pdf/unix_prog_web_01.pdf b/unix_prog_web/pdf/unix_prog_web_01.pdf
deleted file mode 100644 (file)
index 22d276b..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_01.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_01_print.pdf b/unix_prog_web/pdf/unix_prog_web_01_print.pdf
deleted file mode 100644 (file)
index a3d0262..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_01_print.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_02.pdf b/unix_prog_web/pdf/unix_prog_web_02.pdf
deleted file mode 100644 (file)
index b77a498..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_02.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_02_print.pdf b/unix_prog_web/pdf/unix_prog_web_02_print.pdf
deleted file mode 100644 (file)
index c7de4cb..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_02_print.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_03.pdf b/unix_prog_web/pdf/unix_prog_web_03.pdf
deleted file mode 100644 (file)
index 6ee48f9..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_03.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_03_print.pdf b/unix_prog_web/pdf/unix_prog_web_03_print.pdf
deleted file mode 100644 (file)
index ee09e18..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_03_print.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_04.pdf b/unix_prog_web/pdf/unix_prog_web_04.pdf
deleted file mode 100644 (file)
index 312773d..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_04.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_04_print.pdf b/unix_prog_web/pdf/unix_prog_web_04_print.pdf
deleted file mode 100644 (file)
index 82e04d7..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_04_print.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_05.pdf b/unix_prog_web/pdf/unix_prog_web_05.pdf
deleted file mode 100644 (file)
index 218bd86..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_05.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_05_print.pdf b/unix_prog_web/pdf/unix_prog_web_05_print.pdf
deleted file mode 100644 (file)
index c570b37..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_05_print.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_06.pdf b/unix_prog_web/pdf/unix_prog_web_06.pdf
deleted file mode 100644 (file)
index 73bf2e5..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_06.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_06_print.pdf b/unix_prog_web/pdf/unix_prog_web_06_print.pdf
deleted file mode 100644 (file)
index 251df42..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_06_print.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_07.pdf b/unix_prog_web/pdf/unix_prog_web_07.pdf
deleted file mode 100644 (file)
index f86bd44..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_07.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_07_print.pdf b/unix_prog_web/pdf/unix_prog_web_07_print.pdf
deleted file mode 100644 (file)
index 4e22b61..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_07_print.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_08.pdf b/unix_prog_web/pdf/unix_prog_web_08.pdf
deleted file mode 100644 (file)
index 25230e0..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_08.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_08_print.pdf b/unix_prog_web/pdf/unix_prog_web_08_print.pdf
deleted file mode 100644 (file)
index aa068ae..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_08_print.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_09.pdf b/unix_prog_web/pdf/unix_prog_web_09.pdf
deleted file mode 100644 (file)
index 537ecbb..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_09.pdf and /dev/null differ
diff --git a/unix_prog_web/pdf/unix_prog_web_09_print.pdf b/unix_prog_web/pdf/unix_prog_web_09_print.pdf
deleted file mode 100644 (file)
index 0794b99..0000000
Binary files a/unix_prog_web/pdf/unix_prog_web_09_print.pdf and /dev/null differ
diff --git a/unix_prog_web/radar.jpg b/unix_prog_web/radar.jpg
deleted file mode 100644 (file)
index b4935e5..0000000
Binary files a/unix_prog_web/radar.jpg and /dev/null differ
diff --git a/unix_prog_web/ssl-cert.png b/unix_prog_web/ssl-cert.png
deleted file mode 100644 (file)
index 9810ad6..0000000
Binary files a/unix_prog_web/ssl-cert.png and /dev/null differ
diff --git a/unix_prog_web/stat.php b/unix_prog_web/stat.php
deleted file mode 100644 (file)
index 2b41efb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<html>
-<body>
-<?php
-  if ($_FILES["fichier"]["error"] > 0) {
-          echo "Erreur lors de l'envoi du fichier<br/>\n";
-
-  } else {
-          echo "<ul>\n";
-                  foreach ($_FILES["fichier"] as $k => $v)
-                     echo "<li>${k} : ${v}</li>\n";
-          echo "</ul>\n";
-}
-?>
-</body>
-</html>
\ No newline at end of file
diff --git a/unix_prog_web/test.php b/unix_prog_web/test.php
deleted file mode 100644 (file)
index 728f971..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<body>
-<form action="stat.php" method="post"
-      enctype="multipart/form-data">
-
-  <input type="file" name="fichier" size="20"/>
-
-  <button type="submit">Uploader le fichier</button>
-</form>
-</body>
\ No newline at end of file
diff --git a/unix_prog_web/unix_prog_web_01.xhtml b/unix_prog_web/unix_prog_web_01.xhtml
deleted file mode 100644 (file)
index 304a0d4..0000000
+++ /dev/null
@@ -1,784 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>Systèmes d'exploitation (1/2)</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-      a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-
-  </head>
-  <body>
-
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>Unix et Programmation Web</h1>
-      <h1>Cours 1</h1>
-      <a href="mailto:kn@lri.fr">kn@lri.fr</a>
-    </div>
-
-    <div class="sws-slide" >
-      <h1>Contenu du cours</h1>
-      <ol >
-        <li > Comprendre les bases du Web
-          <ul>
-            <li>Fonctionnement des ordinateurs Unix (cours 1 et 2) </li>
-            <li>Notions de réseau (cours 3 et 4) </li>
-          </ul>
-        </li>
-        <li class="sws-pause" style="padding:20pt 0;" > Programmer (pour) le Web
-        <ul>
-          <li>Pages statiques (HTML &amp; CSS cours 5)</li>
-          <li>Pages dynamiques avec PHP (cours 6, 7 et 8)</li>
-          <li>Notions de sécurité des sites Web (cours 9)</li>
-          <li>Bonus (cours 10)</li>
-        </ul>
-        </li>
-       <p>Cours disponible en ligne
-       sur <a href="https://www.lri.fr/~kn/teaching_fr.html">https://www.lri.fr/~kn/teaching_fr.html</a>. Les
-       supports de cours seront distribués à partir de la semaine prochaine.</p>
-      </ol>
-
-    </div>
-    <div class="sws-slide" >
-      <h1>Modalités de Contrôle des Connaissances (MCC)</h1>
-      <p>2 sessions:</p>
-      <ul >
-        <li > 1<sup>ère</sup> session
-          <ul>
-            <li> Contrôle continu (50%):
-            <ul>
-              <li> Partiel (fin octobre/début novembre) 25% </li>
-              <li> 1 interro(s) de TP (25 %) </li>
-            </ul>
-            </li>
-            <li> Examen (50%) </li>
-          </ul>
-        </li>
-        <li class="sws-pause" >
-          2<sup>ème</sup> session (examen 100%)</li>
-      </ul>
-      <p class="sws-pause" ><b>Rappel:</b>
-        <i>La défaillance fait obstacle au calcul de la moyenne
-          et implique l'ajournement.
-          La présence de l'étudiant étant obligatoire en TP [...], plus
-          d'une absence injustiée dans un enseignement peut entraîner
-          la défaillance de l'étudiant dans l'enseignement concerné
-        </i>
-      </p>
-    </div>
-
-    <div class="sws-slide" >
-      <h1>Organisation</h1>
-      <ul>
-        <li> 10 semaines de cours :
-          <ul>
-            <li> 8/9, 16/9, 23/9, 30/9, 7/9, 14/9 </li>
-            <li> partiel/toussaint </li>
-            <li>  4/11, <em>(pas de cours le 11/11)</em>, 18/11, 25/11, 2/12</li>
-          </ul>
-        </li>
-       <li> 10 semaines de TP :
-         <ul><li>18/9, 25/9, 2/10, 9/10, 16/10</li>
-           <li> partiel/toussaint</li>
-           <li>6/11, 13/11, 20/11, 27/11, 4/12</li>
-         </ul>
-       </li>
-        <li> examen début Janvier</li>
-        <li> cours tous les mardi (13h30) </li>
-        <li> TP le jeudi (9h) </li>
-      </ul>
-    </div>
-    <div class="sws-slide" >
-      <h1> Plan </h1>
-      <ol >
-        <li> Systèmes d'exploitation
-          <ul class="empty">
-            <li class="hl">1.1 Principes des systèmes
-            d'exploitation</li>
-            <li>1.2 Système de gestion de fichiers</li>
-            <li>1.3 Système de gestion de processus</li>
-            </ul>
-        </li>
-      </ol>
-    </div>
-
-    <div class="sws-slide">
-      <h1> Système d'exploitation </h1>
-      <p>Quelques systèmes:</p>
-      <ul>
-        <li>Windows XP/NT/2003/7/8, …</li>
-        <li>Linux, FreeBSD, NetBSD, OpenBSD, …</li>
-        <li>MacOS X (basé sur une variante de FreeBSD), …</li>
-        <li>Unix, AIX, Solaris, HP-UX, …</li>
-        <li>Symbian OS (Nokia), iOS, Android, …</li>
-      </ul>
-    </div>
-
-    <div class="sws-slide">
-      <h1> Système d'exploitation </h1>
-      <p>Qu'est-ce qu'un système d'exploitation ?</p>
-      <ul>
-        <li class="sws-pause" >c'est un <em>programme</em></li>
-        <li class="sws-pause" > qui <em>organise</em> l'accès aux <em>ressources</em> de la machine</li>
-      </ul>
-      <p class="sws-pause"> Quelles sont les ressources d'une machine?</p>
-      <ul>
-        <li>Processeur (temps d'exécution)</li>
-        <li>Mémoire</li>
-        <li>Accès aux périphériques de stockage</li>
-        <li>Accès aux périphériques d'entrées/sorties</li>
-        <li>…</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1> Système d'exploitation </h1>
-      <br/>
-      <div style="display:inline-block;vertical-align:middle;width:19%;text-align:center;">
-        Haut niveau<br/>
-      <span style="font-size:6cm;">↓</span><br/>
-      Bas niveau
-      </div>
-      <div style="display:inline-block; width:80%;vertical-align:middle;">
-        <ul class="empty">
-          <li><em>Applications</em>: navigateur Web, éditeur de
-          texte, anti-virus, jeu, compilateur, …</li>
-          <li style="margin-top:2em;" ><em><b>Système d'exploitation</b></em>:
-            <ul>
-              <li>Gestion des ressources</li>
-              <li>Interface avec le matériel (pilotes)</li>
-            </ul>
-          </li>
-          <li style="margin-top:2em;"><em>Matériel</em>: CPU, mémoire, périphériques, …</li>
-        </ul>
-      </div>
-    </div>
-    <div class="sws-slide centerbox">
-      <h1>Le système Unix</h1>
-      <table class="desc">
-        <tr><td>1965</td> <td>MultICS: <i>Multiplexed Information and Computing Service</i> (Bell &amp; MIT) </td>
-        </tr>
-        <tr><td>1969</td> <td>Unix: 1<sup>ère</sup> version en
-        assembleur (AT&amp;T)</td>
-        </tr>
-        <tr><td style="width:4em;">1972-73</td><td> Unix réécrit en C</td></tr>
-        <tr><td>1976</td><td> Invention de TCP/IP</td></tr>
-        <tr><td>1977</td><td> <i>Berkeley Software Distribution</i>
-        (BSD)</td></tr>
-        <tr><td>1985</td><td>Unix System V</td></tr>
-        <tr><td>1988</td><td>Minix</td></tr>
-        <tr><td>1992</td><td>Linux</td></tr>
-      </table>
-    </div>
-    <div class="sws-slide">
-      <div class="centerbox">
-      <h1>Unix : architecture</h1>
-      <table style="position:relative;left:5%;width:90%;" class="rounded">
-        <tr><td colspan="2" style="background:#ddf;width:100%;">
-            Applications
-            </td>
-        </tr>
-        <tr><td style="width:50%;background:#bbf;">
-            Interface utilisateur
-          </td>
-          <td style="width:50%;background:#bbf;">
-            Services
-          </td>
-        </tr>
-        <tr><td colspan="2" style="width:100%;background:#99f;color:white;">
-            Noyau (<i>kernel</i>)
-            </td>
-        </tr>
-        <tr><td style="border-style:none;"/> <td style="background:#88f;color:white;">
-            Micro-code
-          </td>
-        </tr>
-        <tr><td colspan="2" style="width:100%;background:#77f;color:white;">
-            Matériel
-            </td>
-        </tr>
-      </table>
-      </div>
-    </div>
-    <div class="sws-slide">
-      <h1>Zoom sur le noyau</h1>
-      <table style="position:relative;left:5%;width:90%;" class="rounded">
-        <tr> <td style="background:#ddf;width:20%;">
-            Applications
-            </td>
-        </tr>
-        <tr><td style="width:20%; border-style:none;" />
-          <td style="width:80%;background:#ddf;">
-            Bibliothèques
-            (<tt>libc</tt>, <tt>DirectX</tt>, <tt>OpenGL</tt>, …)
-          </td>
-        </tr>
-      </table>
-      <hr style="border-bottom: dashed 1pt #696968; width: 90%;border-top:none;" />
-      <table  style="position:relative;left:5%;width:90%;"
-              class="rounded sws-pause">
-        <tr><td  style="width:100%;background:#f99;color:white;">
-            Appels systèmes
-            </td>
-        </tr>
-        <tr> <td style="background:#f66;color:white;">
-            Noyau <br/>
-            <div style="font-size:smaller">
-            pilotes de périphériques <span style="display:inline-block;width:4em"> </span>
-            ordonnanceur (gestion du temps CPU)<br/>
-            gestionnaire de mémoire <span style="display:inline-block;width:4em"> </span>
-            système de fichier<br/>
-            </div>
-          </td>
-        </tr>
-        <tr><td  style="width:100%;background:#f33;color:white;">
-            Matériel
-            </td>
-        </tr>
-      </table>
-    </div>
-    <div class="sws-slide">
-      <h1>Le <i>Shell</i> Unix</h1>
-      <ul>
-        <li>Interface utilisateur <em>en mode texte</em><br/>
-        L'utilisateur écrit des commandes dont le résultat est
-          affiché à l'écran</li>
-        <li>Interface « historique » sous Unix</li>
-        <li>Expose à l'utilisateur certains concepts Unix
-        (permissions, propriétaires, processus, …)</li>
-        <li>Ces concepts sont importants pour pouvoir concevoir de
-        sites Web</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Le <i>Shell</i> Unix</h1>
-      <p>Exemple de session <i>shell</i>:</p>
-      <div>
-        <code>
-          $ ls
-          <span style="color:blue">Documents   Downloads   Public    Person</span>
-          $ cd Documents
-          $ ls
-          <span style="color:blue">compte_rendu.txt</span>
-          $ mv compte_rendu.txt cr.txt
-          $ ls
-          <span style="color:blue">cr.txt</span>
-        </code>
-      </div>
-    </div>
-
-    <div class="sws-slide" >
-      <h1> Plan </h1>
-      <ol >
-        <li> Systèmes d'exploitation
-          <ul class="empty">
-            <li >1.1 Principes des systèmes
-            d'exploitation</li>
-            <li class="hl">1.2 Système de gestion de fichiers</li>
-            <li>1.3 Système de gestion de processus</li>
-            </ul>
-        </li>
-      </ol>
-    </div>
-    <div class="sws-slide">
-      <h1>Système de gestion de fichiers (<i>filesystem</i>)</h1>
-      <ul>
-        <li> <em>Organise</em> les données sur le support
-        physique </li>
-        <li>Protège contre les <em>corruptions de données</em> </li>
-        <li>Gestion optimale de l'espace disponible</li>
-        <li><em>Accès efficace</em> aux données</li>
-        <li><em>Abstraction</em> du support physique (DVD, mémoire
-        flash, disque réseau, …)</li>
-        <li>Enregistrement des <em>méta-données</em> (date de
-        création, propriétaire, taille, …)</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Le concept de <em>fichier</em></h1>
-      <p>
-        Un fichier est une <em>collection d'infromations
-        numériques</em> réunies sous un même <em>nom</em> et
-        enregistrée sur un support de stockage
-      </p>
-      <ul>
-        <li>Manipulable comme une unité</li>
-        <li>Selon les systèmes, le <em>nom</em> a plus ou moins
-        d'importance</li>
-        <li>possède un type</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Le concept de <em>fichier</em></h1>
-      <p>Ne pas confondre:</p>
-      <ul>
-        <li>type du fichier: il influe sur le comportement du système
-        (fichier « normal », répertoire, lien (raccourcis), fichier
-        système, …). C'est une méta-donnée conservée par le système
-        de fichier</li>
-        <li>type du contenu: le type des <em>données</em> contenues
-        dans le fichier:
-          <ul>
-            <li>DOS puis Windows: l'extension (les 3 derniers
-            caractères après le « . ») détermine le type de contenu
-            </li>
-            <li>MacOS puis OS X/iOS: les premiers octets du fichier
-            déterminent son type
-            </li>
-            <li>Premiers octets ou extension, selon les interfaces
-            utilisées</li>
-          </ul>
-        </li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Les attributs d'un fichier</h1>
-      <table class="desc">
-        <tr>
-          <td style="width:7em;"><em>Nom</em></td> <td/>
-        </tr>
-        <tr>
-          <td><em>Propriétaire</em></td>
-          <td>utilisateur qui possède ce fichier</td>
-        </tr>
-        <tr>
-          <td><em>Groupe</em></td>
-          <td>groupe d'utilisateurs qui possède ce fichier</td>
-        </tr>
-        <tr>
-          <td><em>Emplacement</em></td>
-          <td>localisation du fichier sur le support physique</td>
-        </tr>
-        <tr>
-          <td><em>Taille</em></td>
-          <td>en octet (peut être la taille réelle ou la taille
-        occupée sur le support)</td>
-        </tr>
-        <tr>
-          <td><em>Permissions</em></td>
-          <td> « qui a quel droit » sur le fichier (lecture, écriture,
-          exécution, …)
-          </td>
-        </tr>
-        <tr>
-          <td><em>Type</em></td>
-          <td/>
-        </tr>
-        <tr>
-          <td><em>Dates</em></td>
-          <td>dernier accès, dernière modification, création, …</td>
-        </tr>
-      </table>
-    </div>
-<div class="sws-slide">
-<h1>Organisation logique des fichiers</h1>
-<p> Usuellement, les fichiers sont regroupés en <em>répertoires</em>. Les
-répertoires sont imbriqués les uns dans les autres de manière a former
-une <em>arborescence</em>.
-</p>
-<p>
-  <em>Sous Unix</em> il y a un répertoire racine, « <em>/</em> »
-(<i>slash</i>) qui contient toute l'arborescence du système.<br/>
-Chaque utilisateur possède aussi un répertoire personnel
-</p>
-</div>
-
-<div class="sws-slide">
-<h1>Noms de fichiers et chemins</h1>
-<p style="background:white;">
-Un chemin est une <em>liste de répertoire</em> à traverser pour
-atteindre un fichier ou répertoire donné.
-Sous Unix, le séparateur de chemin est le « <em>/</em> » <br/>
-<em>Les chemins absolus </em> commencent par un <tt>/</tt> et
-           dénotent des fichiers à partir de la racine. Exemple:
-           <code>
-             /home/kim/Documents/ProgInternet/cours01.pdf
-       </code>
-<em>Les chemins relatifs</em> dénotent des fichiers à partir du
-  répertoire courant. Exemple:<br/>
-<code>                    Documents/ProgInternet/cours01.pdf</code>
-si on se trouve dans le répertoire <tt>/home/kim</tt>
-<br/>
-<br/>
-<em>Les noms spéciaux</em>: « . » dénote le répertoire
-    courant,
-  « .. » le répertoire parent, « ~ » le répertoire de
-  l'utilisateur et « ~<tt>toto</tt> » le répertoire de l'utilisateur
-    <tt>toto</tt>
-</p>
-</div>
-
-<div class="sws-slide">
-  <h1>Utilisation du <i>Shell</i></h1>
-  <p>
-    Le <em>shell</em> affiche un <em>invite de commande</em>
-    (<i>prompt</i>). Exemple:<br/>
-    <code>kim@machine $ <span class="sws-pause" /></code><br/><br/>
-    <span>On peut alors saisir une commande:</span><br/><br/>
-    <code>   kim@machine $ ls *.txt<span class="sws-pause"/></code><br/><br/>
-    <span>Le shell affiche la <em>sortie</em> de la commande:</span><br/><br/>
-    <code>   fichier1.txt   fichier2.txt</code><br/><br/>
-    <span>Certains caractères doivent être précédés d'un « \ » (échappés):</span><br/><br/>
-    <code>   kim@machine $ ls mon\ fichier\#1.txt</code>
-  </p>
-</div>
-<div class="sws-slide">
-<h1>La ligne de commande</h1>
-<p>
-  Une ligne de commande a la forme:<br/>
-  <code>prog item1 item2 item3 item4 … </code>
-</p>
-  <ol>
-  <li class="sws-pause"> Si <tt>prog</tt> est un chemin il doit
-    dénoter <em>un fichier exécutable </em>
-  </li>
-  <li class="sws-pause"> Si <tt>prog</tt> est un simple nom, il doit dénoter un fichier
-    exécutable se trouvant dans un des <em>répertoires prédéfinis</em>
-    (<tt>/bin</tt>, <tt>/usr/bin</tt>, …)
-  </li>
-  <li class="sws-pause"> Pour chaque <tt>item<sub>i</sub></tt> (séparés par un ou plusieurs espaces
-    non échappés) le <i>shell</i> fait une <em>expansion de nom</em>
-  </li>
-  <li class="sws-pause"> La liste de toutes les chaînes de caractères expansées est
-    passée comme argument au programme <tt>prog</tt>
-  </li>
-  </ol>
-</div>
-<div class="sws-slide">
-<h1>Expansion des noms<br/>Expressions régulières glob</h1>
-<p>
-  Certains caractères sont <em>interprétés</em> de manière spéciale par le
-  <i>shell</i>. Ces caractères sont « expansés » selon des
-  règles. Si la forme <em>expansée</em> correspond a un ou plusieurs fichiers
-  existants, alors leurs noms sont placés sur la ligne de commande. Sinon
-  la chaîne de caractère de départ garde sa valeur textuelle.
-</p>
-</div>
-<div class="sws-slide">
-  <h1>Expressions régulières glob</h1>
-  <p>Règles d'expansion:
-  <tt><em>*</em></tt> n'importe quelle chaîne<br/>
-   <tt><em>?</em></tt> n'importe quel caractère
-   <tt><em>[ab12…]</em></tt> un caractère dans la liste <br/>
-   <tt><em>[^ab12…]</em></tt> un caractère absent de liste<br/>
-   <tt><em>[a-z]</em></tt> un caractère dans l'intervalle<br/>
-   <tt><em>[^a-z]</em></tt> un caractère absent de l'intervalle<br/>
-   <tt><em>{m<sub>1</sub>, m<sub>2</sub>}</em></tt>
-  motif <tt>m<sub>1</sub></tt> ou <tt>m<sub>2</sub></tt> <br/>
-  <tt><em>?(m<sub>1</sub>|…|m<sub>n</sub>)</em></tt>
-  <span style="display:inline-block;width:2em" />
-  <tt><em>@(m<sub>1</sub>|…|m<sub>n</sub>)</em></tt>
-  <span style="display:inline-block;width:2em" />
-  <tt><em>*(m<sub>1</sub>|…|m<sub>n</sub>)</em></tt>
-  <span style="display:inline-block;width:2em" />
-  <tt><em>+(m<sub>1</sub>|…|m<sub>n</sub>)</em></tt><br/>
-  <i>k</i> motifs parmi <tt>m<sub>i</sub></tt> <br/>
-  <tt><em>?</em></tt>: <tt>0 ≤ <i>k</i> ≤ 1</tt>
-  <span style="display:inline-block;width:2em" />
-  <tt><em>@</em></tt>: <tt><i>k</i> = 1</tt>
-  <span style="display:inline-block;width:2em" />
-  <tt><em>*</em></tt>: <tt><i>k</i> ≥ 0</tt>
-  <span style="display:inline-block;width:2em" />
-  <tt><em>+</em></tt>: <tt><i>k</i> ≥ 1</tt>
-  <br/>
-  <tt><em>!(m<sub>1</sub>|…|m<sub>n</sub>)</em></tt>:
-  ni <tt>m<sub>1</sub></tt>, …, ni <tt>m<sub>n</sub></tt>
-</p>
-</div>
-<div class="sws-slide">
-<h1>Expressions régulières glob<br/>Exemples</h1>
-<p><tt><em>ls  !(*[aeiouy]?)</em></tt> <span class="sws-pause">
-  La chaine « <tt>!(*[aeiouy]?)</tt> » est remplacée par la liste de tous
-  les fichiers dont l'avant dernière lettre du nom n'est pas une
-  voyelle. S'il n'y a pas de tel fichier, la chaîne
-  « <tt>!(*[aeiouy]?)</tt> » est passée à la commande <tt>ls</tt>.</span><br/><br/>
-  <span>
-  <tt><em>ls [0-9]*</em></tt> affiche la liste des fichiers commençant par un
-  chiffre<br/><br/>
-  <tt><em>ls +(abc)</em></tt> affiche la liste des fichiers dont le nom est une
-  répétition de «&nbsp;abc&nbsp;».
-</span>
-</p>
-</div>
-<div class="sws-slide">
-<h1>Commandes shell de base</h1>
-<ul class="empty">
-<li><em>cd </em><i>chemin</i>: <i>chemin</i> devient le
-  répertoire courant. Si absent, utilise le répertoire personnel
-</li>
-<li><em>ls</em> <i>chemin<sub>1</sub></i> … <i>chemin<sub>n</sub></i>:
-  affiche le nom des <i>n</i> fichiers. Si <i>n=0</i> affiche le contenu du
-  répertoire courant. Avec l'option <tt><em>-l</em></tt> affiche la liste
-  détaillée.
-</li>
-<li><em>cp</em> <i>chemin<sub>1</sub></i>  <i>chemin<sub>2</sub></i>:
-copie de fichier
-</li>
-<li><em>mv</em> <i>chemin<sub>1</sub></i>  <i>chemin<sub>2</sub></i>:
-  déplacement
-  de fichier (et renommage)
-</li>
-<li><em>rm</em> <i>chemin<sub>1</sub></i> … <i>chemin<sub>n</sub></i>:
-  supprime les fichiers (définitif)
-</li>
-</ul>
-</div>
-<div class="sws-slide">
-<h1>Droits et propriétés des fichiers</h1>
-<p>
-Sous Unix un utilisateur est identifié par son <em>login</em> (ou nom
-d'utilisateur). Chaque utilisateur est dans  un <em>groupe
-  principal</em>.<br/>
-Chaque fichier appartient à un utilisateur et à un groupe.<br/>
-Chaque fichier possède 3 permissions pour son propriétaire, son groupe
-et tous les autres. Les permissions sont lecture, écriture, exécution
-(plus d'autres non abordées dans ce cours).<br/>
-<table >
-  <tr><th style="width:20%">Permission</th> <th  style="width:40%">fichier</th> <th style="width:40%">répertoire</th> </tr>
-  <tr><td><em>lecture</em> (r)</td> <td>lire le contenu du
-  fichier</td>
-    <td >lister le contenu du répertoire</td></tr>
-
-  <tr><td style="vertical-align:top;"><em>écriture</em> (w)</td> <td style="vertical-align:top;">écrire dans le fichier</td>
-    <td style="vertical-align:top;">supprimer/renommer/créer des
-    fichiers dans le répertoire</td></tr>
-  <tr><td style="vertical-align:top;"><em>exécution</em>
-  (x)</td> <td style="vertical-align:top;">exécuter le fichier
-  (si<br/>
-
-  c'est un programme)</td>
-    <td style="vertical-align:top;">rentrer dans le répertoire
-  </td></tr>
-</table>
-<code>$ ls -l
-drwxr-x---  9 kim prof 4096 Sep  7 21:31 Documents</code>
-</p>
-</div>
-<div class="sws-slide">
-<h1>La commande <em>chmod</em></h1>
-<code>
-   chmod <i>permissions</i> <i>chemin<sub>1</sub></i> … <i>chemin<sub>n</sub></i>
-</code>
-<p> modifie les permissions des fichiers <i>1</i> à <i>n</i>. La chaîne
-<i><tt>permissions</tt></i> est soit une suite de modifications de
-permissions <em>symbolique</em> soit l'ensemble des permissions données
-de manière <em>numérique</em>: <br/>
-<code>
-    chmod 755 fichier.txt
-    chmod u-w,a+x,g=w fichier.txt
-</code>
-</p>
-</div>
-<div class="sws-slide">
-<h1>Permissions numériques</h1>
-<p>
-On groupe les <em>bits</em> de permissions par trois puis on convertit
-en décimal:<br/>
-<table style="width:100%;text-align:center;" class="btable">
-<tr> <th colspan="3" style="width:33%"> Utilisateur </th>
-  <th colspan="3" style="width:33%">
-    Groupe</th>
-  <th colspan="3" style="width:33%">Autres</th>
-</tr>
-<tr>
-  <td>r</td>   <td>w</td>    <td>x</td>   <td>r</td>   <td>w</td>    <td>x</td>   <td>r</td>   <td>w</td>    <td>x</td>
-</tr>
-<tr>
-  <td>1</td>   <td>1</td>    <td>0</td>   <td>1</td>   <td>0</td>    <td>0</td>   <td>0</td>   <td>0</td>    <td>0</td>
-</tr>
-<tr>
-<td colspan="3"> 6 </td> <td colspan="3">
-    4</td><td colspan="3">0</td>
-</tr>
-</table>
-Le fichier est lisible et modifiable mais pas exécutable par son
-propriétaire, lisible pour le groupe. Les autres ne peuvent ni le lire
-ni le modifier.</p>
-</div>
-<div class="sws-slide">
-<h1>Permissions symboliques</h1>
-<code>
-       cible modifieur permission
-</code>
-<ul class="empty">
-  <li> <em>cible</em> : u (utilisateur), g (groupe), o (others), a
-  (all)
-  </li>
-
-  <li> <em>modifieur</em> : + (autorise), - (interdit), = (laisse
-  inchangé)
-  </li>
-
-  <li><em>permission</em> : r (lecture), w (écriture), x (exécution)</li>
-</ul>
-<p>
-Exemple:<br/>
-<code>   chmod u+rw,u-x,g+r,g-wx,o-rwx fichier.txt </code>
-</p>
-</div>
-<div class="sws-slide">
-  <h1>Liens symboliques (1)</h1>
-<p>Pour des raisons d'organisation, on veut pouvoir « voir » le même
-  fichier ou répertoire sous deux noms différents (ou à deux endroits
-  différents). Par exemple:
-</p>
-<code style="background:white">
- $  ls -l <mark>Documents/Cours</mark>
- total 8
- drwxr-xr-x 3 kim prof 4096 Sep  9 11:30 <mark>Licence</mark>
- drwxr-xr-x 3 kim prof 4096 Sep  9 11:30 <mark>Master</mark>
-
- $  cd <mark>Documents/Cours/Master</mark>; ls
-  <mark>Compilation    XMLProgInternet</mark>
-
- $  cd <mark>XML_Prog_Internet</mark>; ls
- <mark>cours01 cours02  cours03 cours04 cours05  cours06</mark>   <mark style="color:turquoise">Prereq</mark>  
-
- $ ls -l Prereq
- lrwxrwxrwx 1 kim prof 28 Sep  9 11:30 <mark style="color:turquoise">Prereq</mark> -> <mark>../../Licence/UnixProgWeb/</mark>
-</code>
-
-</div>
-<div class="sws-slide">
-  <h1>Liens symboliques (2)</h1>
-  <p>La commande <em><tt>ln</tt></em> permet de créer des <em>liens
-  symboliques</em>. Un lien est un petit fichier qui contient
-  un <em>chemin</em> vers un fichier de destination.
-  </p>
-  <p>Exemple d'utilisation</p>
-<code>    $ ln -s ../foo/bar/baz/toto.txt rep/titi.txt
-</code>
-<p class="sws-pause">crée un lien vers le fichier <tt>toto.txt</tt>
-  sous le nom <tt>titi.txt</tt> (chacun placé dans des sous/sur
-  répertoires)
-</p>
-<ul>
-  <li>Ouvrir/modifier le lien &gt; ouvre/modifie la cible</li>
-  <li>Supprimer le lien &gt; supprime le lien mais pas la cible</li>
-  <li>Si la cible est un répertoire, faire <tt>cd</tt> nous place «
-  dans » la cible, mais le repertoire parent est celui d'où l'on vient</li>
-</ul>
-<p>Cela permet de créer l'illusion que la cible a été copiée à
-  l'identique, sans les inconvénients</p>
-</div>
-<div class="sws-slide">
-  <h1>À propos de la suppression</h1>
-  <p>La commande <tt>rm  fichier</tt> efface un fichier définitivement<br/>
-  La commande <tt>rm -d  rep</tt> efface un répertoire s'il est vide<br/>
-  La commande <tt>rm -r  rep</tt> efface un répertoire récursivement
-  mais demande confirmation avant d'effacer des éléments<br/>
-  La commande <tt>rm -rf rep</tt> efface un répertoire
-  récursivement et sans confirmation</p>
-  <p><s>Toute suppression est définitive</s></p>
-  <p>Gag classique :</p>
-  <code style="background:white">    $  mkdir <s>\~</s>
-    ...
-    $ ls
-     <mark> Documents  Photos  Musique   ~</mark>
-    $ rm -rf <s>~</s>
-     <mark style="font-size:200%;"> &#9760; &#9760; &#9760; &#9760; &#9760; &#9760;</mark>
-</code>
-</div>
-<div class="sws-slide">
-  <h1>Obtenir de l'aide sur une commande</h1>
-  <p>La commande <em><tt>man</tt></em> permet d'obtenir de l'aide sur
-  une commande. Lors qu'une page d'aide est affichée, on peut la faire
-  défiler avec les touches du clavier, la quitter avec « <tt>q</tt> »
-  et rechercher un mot avec la touch « <tt>/</tt> »</p>
-  <code style="position:relative;left:10%;font-size:70%">
-LS(1L)            Manuel de l'utilisateur Linux            LS(1L)
-
-
-<FONT COLOR="#000000"><B>NOM</B></FONT>
-       ls, dir, vdir - Afficher le contenu d'un répertoire.
-
-<FONT COLOR="#000000"><B>SYNOPSIS</B></FONT>
-       <FONT COLOR="#000000"><B>ls</B></FONT> <FONT COLOR="#000000"><B>[options]</B></FONT> <FONT COLOR="#000000"><B>[fichier...]</B></FONT>
-
-       Options POSIX : <FONT COLOR="#000000"><B>[-1acdilqrtuCFR]</B></FONT>
-
-       Options  GNU  (forme courte) : <FONT COLOR="#000000"><B>[-1abcdfgiklmnopqrstuxABCD­</B></FONT>
-       <FONT COLOR="#000000"><B>FGLNQRSUX]</B></FONT> <FONT COLOR="#000000"><B>[-w</B></FONT> <FONT COLOR="#0000ff"><I>cols<FONT COLOR="#000000"><B>]</B></FONT></I></FONT> <FONT COLOR="#000000"><B>[-T</B></FONT> <FONT COLOR="#0000ff"><I>cols<FONT COLOR="#000000"><B>]</B></FONT></I></FONT>  <FONT COLOR="#000000"><B>[-I</B></FONT>  <FONT COLOR="#0000ff"><I>motif<FONT COLOR="#000000"><B>]</B></FONT></I></FONT>  <FONT COLOR="#000000"><B>[--full-time]</B></FONT>
-       <FONT COLOR="#000000"><B>[--format={long,verbose,commas,across,vertical,single-col­</B></FONT>
-       <FONT COLOR="#000000"><B>umn}]</B></FONT>                  <FONT COLOR="#000000"><B>[--sort={none,time,size,extension}]</B></FONT>
-       <FONT COLOR="#000000"><B>[--time={atime,access,use,ctime,status}]</B></FONT>
-       <FONT COLOR="#000000"><B>[--color[={none,auto,always}]]</B></FONT> <FONT COLOR="#000000"><B>[--help]</B></FONT> <FONT COLOR="#000000"><B>[--version]</B></FONT> <FONT COLOR="#000000"><B>[--]</B></FONT>
-
-<FONT COLOR="#000000"><B>DESCRIPTION</B></FONT>
-       La commande <FONT COLOR="#000000"><B>ls</B></FONT> affiche  tout  d'abord  l'ensemble  de  ses
-       arguments  <FONT COLOR="#0000ff"><I>fichiers</I></FONT>  autres  que  des répertoires. Puis <FONT COLOR="#000000"><B>ls</B></FONT>
-       affiche  l'ensemble  des  fichiers  contenus  dans  chaque
-       répertoire  indiqué.   <FONT COLOR="#000000"><B>dir</B></FONT> et <FONT COLOR="#000000"><B>vdir</B></FONT> sont des versions de <FONT COLOR="#000000"><B>ls</B></FONT>
-       affichant par défaut leurs résultats  avec  d'autres  for­
-       mats.
-</code>
-
-</div>
-<div class="sws-slide">
-  <h1>Recherche de fichiers</h1>
-  <p>La commande <tt>find rep <i>criteres</i></tt> permet de trouver
-  tous les fichiers se trouvant dans le répertoire <tt>rep</tt> (ou un
-  sous répertoire) et répondant à certains critères. Exemples de
-  critères :</p>
-  <ul>
-    <li> <tt>-name '*toto*'</tt>  dont le nom
-      contient <tt>toto</tt></li>
-    <li> <tt>-size +200M</tt> dont la taille sur le disque est
-      supérieure à 200 Mo</li>
-    <li> <tt> <i>c<sub>1</sub></i> -a <i>c<sub>2</sub></i></tt> pour
-      lesquel les critères <tt> <i>c<sub>1</sub></i></tt>
-      et <tt> <i>c<sub>2</sub></i></tt> sont vrais</li>
-    <li> <tt> <i>c<sub>1</sub></i> -o <i>c<sub>2</sub></i></tt> pour
-      lesquel l'un au moins des critères <tt> <i>c<sub>1</sub></i></tt>
-      et <tt> <i>c<sub>2</sub></i></tt> est vrais</li>
-    <li> <tt>-user toto</tt> qui appartiennent à l'utilisateur <tt>toto</tt></li>
-  </ul>
-  <p> Comment trouver toutes les options de la commande <tt>find</tt>
-  ? <span class="sws-pause"><tt><em> man find</em></tt></span></p>
-</div>
-<div class="sws-slide">
-  <h1>Quelques commandes utiles</h1>
-  <ul>
-    <li> <tt>cat <i>fichier</i></tt> permet d'afficher le contenu d'un fichier dans
-    le terminal</li>
-    <li> <tt>less <i>fichier</i></tt> permet de lire le contenu d'un fichier (avec
-    défilement en utilisant les flêches du clavier si le fichier est
-    trop grand)</li>
-    <li> <tt>sort <i>fichier</i></tt> permet d'afficher les lignes d'un fichier
-    triées (on peut spécifier des options de tri)</li>
-    <li> <tt>file <i>fichier</i></tt> permet de connaître le type d'un
-    fichier</li>
-    <li> <tt>wc <i>fichier</i></tt> permet de compter le nombre de
-    caractères/mots/lignes d'un fichier</li>
-    <li> <tt>head <i>fichier</i></tt> permet de garder les <i>n</i>
-    premières lignes d'un fichier</li>
-  </ul>
-  <p>On verra comment composer ces commandes pour exécuter des
-  opérations complexes</p>
-</div>
-  </body>
-</html>
diff --git a/unix_prog_web/unix_prog_web_02.xhtml b/unix_prog_web/unix_prog_web_02.xhtml
deleted file mode 100644 (file)
index 8298226..0000000
+++ /dev/null
@@ -1,1276 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>Systèmes d'exploitation (2/2)</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-         a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-    <style>
-      #svg2,#svg3 {
-      -webkit-transform: scale(1.8) translateX(40%);
-      transform: scale(1.8) translateX(40%);
-      }
-    </style>
-  </head>
-  <body>
-    <a href="unix_prog_web_01.xhtml" class="sws-previous" />
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>Unix et Programmation Web</h1>
-      <h1>Cours 2</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>
-<h1> Gestion des processus</h1>
-
-    <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 « <tt> counter.c </tt> »
-        (<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> « <tt>counter.exe</tt> » 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 <tt style="color:red">count</tt></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> <tt style="color:green;">display</tt></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 « <tt>man ps</tt> » pour les
-        options):<br/>
-        <code>$ ps -o user,pid,state,cmd x
-          USER     PID   S CMD
-          …
-          kim      27030 Z [chrome] &lt;defunct&gt;
-          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 &amp; </code><br/></span>
-        <span class="sws-pause">On peut envoyer un signal à un
-          processus avec la commande «&nbsp;<tt>kill [-signal] pid</tt>&nbsp;»<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 (<tt><em>stdin</em></tt>), reliée
-          au clavier</li>
-        <li> La sortie standard (<tt><em>stdout</em></tt>), reliée
-          à l'affichage</li>
-        <li> La sortie d'erreur (<tt><em>stderr</em></tt>), reliée
-          à l'affichage</li>
-      </ol>
-      <p>Dans le <i>shell</i>, on peut utiliser les
-      opérateurs <tt><em>&lt;</em></tt>, <tt><em>&gt;</em></tt>
-      et <tt><em>2&gt;</em></tt> pour récupérer le contenu
-      de <tt><em>stdin</em></tt>, <tt><em>stdout</em></tt>
-      et <tt><em>stderr</em></tt>:<br/>
-<code>
-$ sort &lt; toto.txt
-$ ls -l  &gt; liste_fichiers.txt
-$ ls -l * 2&gt; 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>
-
-<h1>Écriture de script <i>shell</i></h1>
-<div class="sws-slide">
-  <h1>Script shell</h1>
-  <p><a>Mentalité Unix</a> beaucoup de petits programmes spécifiques,
-  que l'on combine au moyen de scripts pour réaliser des actions
-  complexes. Exemple de fichier script:
-  </p>
-  <code style="background:white;">
-    <s>#!/bin/bash</s>
-
-    <s>for</s> i <s>in</s>  img_*.jpg
-    <s>do</s>
-      base=$(echo "$i" | cut -f 2- -d '_')
-      nouveau=photo_"$base"
-      <s>if</s> test -f "$nouveau"
-      <s>then</s>
-         echo "Attention, le fichier $nouveau existe déjà"
-         continue
-      <s>else</s>
-         echo "Renommage de $i en $nouveau"
-         mv "$i" "$nouveau"
-      <s>fi</s>
-    <s>done</s>
-  </code>
-</div>
-<div class="sws-slide">
-<h1>Rendre un script exécutable</h1>
-<p>Si un fichier <a>texte</a> (quel que soit son extension), commence
-  par les caractères <tt>#!/chemin/vers/un/programme</tt>, on peut
-  rendre ce fichier exécutable (<tt>chmod +x</tt>). Si on l'exécute,
-  le contenu du fichier est passé comme argument à <tt>programme</tt>
-  (qui est généralement un interpréteur)
-</p>
-<p><tt>#!/bin/bash</tt> signifie que le corps du fichier est passé au
-  programme <tt>bash</tt> qui est l'interprète de commande
-  (le <i>shell</i>).
-</p>
-</div>
-<div class="sws-slide">
-<h1>Que mettre dans un script</h1>
-<ul>
-  <li> des commandes (comme si on les entrait dans le terminal)</li>
-  <li> des structures de contrôle (boucles <tt>for</tt>, <tt>if then
-  else</tt>) </li>
-  <li> des définitions de variables </li>
-</ul>
-</div>
-<div class="sws-slide">
-<h1>Définitions de variables</h1>
-<p>On peut définir des variables au moyen de la notation
-<code>VARIABLE=<i>contenu</i></code> et on peut utiliser la variable
-avec la notation <tt>$VARIABLE</tt> </p>
-<ul>
-  <li>Attention, pas d'espace autour du <tt>=</tt></li>
-  <li>nom de variable en majuscule ou minuscule</li>
-  <li>contenu est une chaine de caractères. Si elle contient des
-  espaces, utiliser <tt>" ... "</tt></li>
-</ul>
-<p>exemple de définition :</p>
-<code>    i=123
-    j="Ma super chaine"
-    TOTO=titi
-    echo $TOTO
-</code>
-<p> exemple d'utilisation: <tt> echo $j $i $TOTO </tt><br/>
-affiche « <tt> Ma super chaine 123 titi</tt></p>
-</div>
-<div class="sws-slide">
-<h1>Boucles <tt>for</tt></h1>
-<p>Les boucles <tt> for </tt> ont la syntaxe:
-<code>
-    for VARIABLE in elem<sub>1</sub> ... elem<sub>n</sub>
-    do
-        ....
-    done
-</code>
-chaque <tt>elem<sub>i</sub></tt> est expansé (comme une ligne de
-commande) avant l'évaluation de la boucle:
-<code>
-  for i in *.txt
-  do
-     echo $i est un fichier texte
-  done
-</code>
-On peut quitter une boucle prématurément en utilisant <tt>break</tt>
-et passer directement au tour suivant avec <tt>continue</tt>
-</p>
-</div>
-<div class="sws-slide">
-<h1>Conditionnelle</h1>
-<p>La syntaxe est :
-<code>   if <i>commande</i>
-   then
-        ...
-   else
-        ...
-   fi
-</code>
-<tt><i>commande</i></tt> est évaluée. Si elle se termine avec succès,
-la branche <tt>then</tt> est prise. Si elle se termine avec un code
-d'erreur, la branche <tt>else</tt> est prise. On peut utiliser la
-commande <tt>test</tt> qui permet de tester plusieurs conditions
-(existance d'un fichier, égalités de deux nombres, ...) et se termine
-par un succès si le teste est vrai et par un code d'erreur dans le
-cas contraire</p>
-</div>
-<div class="sws-slide">
-<h1>Conditionnelle (exemple)</h1>
-<p>On regarde tour à tour si fichier1.txt, fichier2.txt, ... existent :
-<code>
-  for i in 1 2 3 4 5 6
-  do
-    if test -f "fichier$i".txt
-   then
-      echo le fichier "fichier$i".txt existe
-   fi
-  done
-</code>
-</p>
-  </div>
-<div class="sws-slide">
-<h1>Sous-commandes et chaines</h1>
-<p>Il est pratique de pouvoir mettre <a>l'affichage d'une commande</a>
-  dans une variable. On utilise <tt>$( commande ... )</tt>:
-<code>
-  MESFICHIER=$(ls *.txt)
-  for i in $MESFICHIER
-  do
-       echo Fichier: $i
-  done
-</code>
-Attention à la présence de guillemets autour des variables. S'il y a
-f1.txt et f2.txt dans le répertoire courant:<br/>
-<code style="left:10%;position:relative;width:40%;float:left;">
-  MESFICHIER=$(ls *.txt)
-  for i in $MESFICHIER
-  do
-       echo Fichier: $i
-  done
-<s>affiche:</s>
-  Fichier: f1.txt
-  Fichier: f2.txt
-</code>
-<code style="width:40%;float:left;left:10%;position:relative">
-  MESFICHIER=$(ls *.txt)
-  for i in "$MESFICHIER"
-  do
-       echo Fichier: $i
-  done
-<s>affiche:</s>
-  Fichier: f1.txt f2.txt
-</code>
-</p>
-</div>
-<div class="sws-slide">
-<h1>Commandes utiles</h1>
-<ul>
-  <li><tt>seq <i>m</i> <i>n</i> </tt> : affiche la liste de tous les
-  nombres entre <i>m</i> <i>n</i> </li>
-<li><tt>echo ... </tt> affiche ses arguments sur la sortie
-  standard</li>
-<li><tt>printf "chaine" ... </tt> affiche ses arguments au moyen d'une
-  chaine de format (comme le printf de C)</li>
-<li><tt>date</tt> : affiche la date courante </li>
-<li><tt>cut</tt> : découpe une chaine selon des caractères de
-  séparations ou des positions</li>
-</ul>
-</div>
-<h1>Programmes non interactifs</h1>
-<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>
diff --git a/unix_prog_web/unix_prog_web_03.xhtml b/unix_prog_web/unix_prog_web_03.xhtml
deleted file mode 100644 (file)
index b3dd771..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>Réseaux, TCP/IP</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-         a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-    <style>
-      #svg2,#svg3 {
-      -webkit-transform: scale(1.8) translateX(40%);
-      transform: scale(1.8) translateX(40%);
-      }
-    </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="mailto:kn@lri.fr">kn@lri.fr</a><br/>
-      <a href="http://www.lri.fr/~kn/">http://www.lri.fr/~kn</a>
-    </div>
-
-
-  </body>
-</html>
diff --git a/unix_prog_web/unix_prog_web_04.xhtml b/unix_prog_web/unix_prog_web_04.xhtml
deleted file mode 100644 (file)
index 2d8f309..0000000
+++ /dev/null
@@ -1,581 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>Web et HTML</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-         a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-  </head>
-  <body>
-    <a class="sws-previous" href="unix_prog_web_03.xhtml" />
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>Unix et Programmation Web</h1>
-      <h1>Cours 4</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>
-    <h1>Internet et ses services</h1>
-    <div class="sws-slide">
-      <h1> Bref historique d'Internet (1/2)</h1>
-      <table class="desc">
-        <tr>
-          <td style="width:6.5em;">1959-1968</td> <td>ARPA
-            (<i>Advanced Research Project Agency</i>) crée un réseau
-            de quelques machines capable de résister à une attaque.</td>
-        </tr>
-        <tr>
-          <td>1969</td> <td>ARPANET. Interconnexion des ordinateurs
-            centraux des grandes universités et institutions
-            américaines. Première utilisation du concept de paquet d'information.</td>
-        </tr>
-        <tr>
-          <td>1970-1982 </td>
-          <td>Interconnexion avec la Norvège et le Royaume-Uni.
-          </td>
-        </tr>
-        <tr>
-          <td>1982</td>
-          <td> Passage au protocole TCP/IP. Naissance de l'Internet actuel.</td>
-        </tr>
-      </table>
-    </div>
-    <div class="sws-slide">
-      <h1> Bref historique d'Internet (2/2)</h1>
-      <table class="desc">
-        <tr>
-          <td style="width:6.7em;">1986</td> <td>« Autoroutes de
-            l'information ». Des super-ordinateurs et les premières
-            connexions à fibres optiques sont utilisées pour accélérer
-            le débit d'Internet.</td>
-        </tr>
-        <tr>
-          <td>1987-1992</td> <td>Apparition des premiers fournisseurs
-            d'accès. Les entreprises se connectent.</td>
-        </tr>
-        <tr>
-          <td>1993-2000 </td>
-          <td>Avènement du Web. Démocratisation du haut-débit (vers
-          2000 pour la France).
-          </td>
-        </tr>
-        <tr>
-          <td>2000-présent</td>
-          <td> Explosion des services en ligne, arrivée des réseaux
-          sociaux, internet mobile, <i>Cloud</i> (stockage et calcul
-          mutualisés accessible depuis internet).</td>
-        </tr>
-      </table>
-    </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>
-    </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>
-    </div>
-    <div class="sws-slide">
-      <h1> World Wide Web (1/2)</h1>
-      <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>
-        <li>Utilise le protocole <em>HTTP</em> pour les échanges entre
-          le client et le serveur</li>
-      </ul>
-    </div>
-
-    <div class="sws-slide">
-      <h1> World Wide Web (2/2)</h1>
-      <p>Concepts clé:</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>
-      </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>
-
-
-    <h1> Fonctionnement du Web </h1>
-    <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>
-
-    </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>
-      </ul>
-    </div>
-
-    <h1> Adressage des documents Web </h1>
-    <div class="sws-slide">
-      <h1>Adressage des documents Web (1/3)</h1>
-      <table class="desc">
-        <tr><td>URL</td><td> <i>Uniform Resource Locator</i>
-        identifie un document sur internet</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>&amp;<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>
-    </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>
-
-    <h1>Le protocole HTTP</h1>
-    <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>
-      </ul>
-    </div>
-    <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>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Démo</h1>
-    </div>
-    <h1>HTML, le format des documents</h1>
-    <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>
-    </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 style="font-family:serif;color:black;">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;font-family:serif;"
-        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 style="font-family:serif;color:black;">
-<li>Premièrement</li>
-<li>Deuxièmement</li>
-</ul>
-</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>
-    </div>
-
-    <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">&lt;/b&gt;</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>
-    </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>
-<div class="sws-slide">
-  <h1>Structure d'un document XHTML</h1>
-  <p>Pour être <i>valide</i> un document XHTML contient <a>au
-  moins</a> les balises suivantes&nbsp;: </p>
-  <ul> <li>Une balise <tt>html</tt> qui est la <a>racine</a> (elle
-  englobe toutes les autres balises). La balise <tt>html</tt>
-  contient deux balises filles: <tt>head</tt> et <tt>body</tt></li>
-    <li>La balise <tt>head</tt> représente l'en-tête du document.
-      Elle peut contenir diverses informations (feuilles de styles,
-      titre, encodage de caractères, …). La seule
-      balise <a>obligatoire</a> dans <tt>head</tt> est le titre
-      (<tt>title</tt>). C'est le texte qui est affiché dans la barre
-      de fenêtre du navigateur ou dans l'onglet.
-    </li>
-    <li>la balise <tt>body</tt> représente le contenu de la page. On y
-    trouve diverses balises (<tt>div</tt>, <tt>p</tt>, <tt>table</tt>,
-    …) qui formattent le contenu de la page</li>
-  </ul>
-</div>
-<h1>Encodage des caractères (UTF-8) (digression)</h1>
-    <div class="sws-slide">
-      <h1>Représentation des textes</h1>
-      <p>Avant de représenter des documents complexes, on s'intéresse
-      aux textes (sans structure particulière)</p>
-      <p class="sws-pause">Problématique: comment représenter du texte
-      réaliste ?</p>
-      <p>Exemple de texte réaliste:<br/>
-       <tt>&quot;</tt> و عليكم السلام,Здравей,¡Hola!, 你好,Góðan daginn,…
-       <tt>&quot;</tt>
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>Historiquement…</h1>
-      <p>Encodage 1 caractère = 1 octet (8 bits) : </p>
-      <ul><li>Encodage ASCII sur 7 bits (128 caractères)</li>
-       <li>ASCII étendu 8 bits (256 caractères, dont 128 de «
-       symboles »</li>
-       <li>Latin 1 : ASCII 7 bits + 128 caractères « ouest-européens »
-       (lettres accentuées française, italienne, …)</li>
-       <li>Latin 2 : ASCII 7 bits + 128 caractères « est-européens »
-       (Serbe, Hongrois, Croate, Tchèque, …)</li>
-       <li>Latin 3 : ASCII 7 bits + 128 caractères turques, maltais,
-       esperanto, </li>
-       <li>Latin 4 : ASCII 7 bits + 128 caractères islandais,
-       lituanien, …</li>
-       <li class="sws-pause"> … </li>
-       <li >Latin 15 : Latin 1 avec 4 caractères « inutiles »
-       remplacés (par exemple pour « € » à la place de « ¤ »)</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>… et pendant ce temps là, ailleur dans le monde </h1>
-      <p>Encodage multi-octets:</p>
-      <ul>
-       <li>Encodages spécifiques pour le Chinois (Big5, GB, …)</li>
-       <li>Encodages spécifiques pour le Japonais (Shift-JIS, EUC, …)</li>
-      </ul>
-      <p>Impossibilité de mettre plusieurs « alphabets » dans un même
-      texte</p>
-      <p>Chaque logiciel « interprétait » les séquences d'octet de
-      manière prédéfinie</p>
-    </div>
-    <div class="sws-slide">
-      <h1>UTF-8</h1>
-      <p>Universal (Character Set) Transformation Format 8 bit</p>
-      <ul><li>Encodage à taille variable « universel » (contient tous
-      les alphabets connus)</li>
-       <li>Un organisme (ISO) donne un code à chaque symbole</li>
-       <li>Compatible avec ASCII 7 bits</li>
-      </ul>
-      <p>Encodage</p>
-      <table class="withborder" style="position:relative;left:8%;">
-       <tr ><td>Nombre d'octets</td><td>Octet 1</td><td>Octet
-       2</td><td>Octet 3</td><td>Octet 4</td><td>Octet 5</td><td>Octet 6</td></tr>
-       <tr ><td>1</td><td><tt>0xxxxxxx</tt></td><td></td><td></td><td></td><td></td><td></td></tr>
-
-       <tr ><td>2</td><td><tt>110xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td></td><td></td><td></td><td></td></tr>
-       <tr ><td>3</td><td><tt>1110xxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td></td><td></td><td></td></tr>
-       <tr ><td>4</td><td><tt>11110xxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td></td><td></td></tr>
-
-       <tr ><td>5</td><td><tt>111110xxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td></td></tr>
-       <tr ><td>6</td><td><tt>1111110xx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td></tr>
-
-      </table>
-    </div>
-    <div class="sws-slide">
-      <h1>Exemples</h1>
-      <p><tt style="font-size:200%">A</tt> &nbsp;&#10230;&nbsp; 65<sub>10</sub>
-      &nbsp;&#10230;&nbsp; 0100 1010<sub>2</sub> (représenté sur un
-      seul octet)</p>
-
-      <p><tt style="font-size:200%">ễ</tt> &nbsp;&#10230;&nbsp; 7877<sub>10</sub>
-      &nbsp;&#10230;&nbsp; 0001 1110 1100 0101<sub>2</sub> (représenté
-       3 octets) : <br/>
-       <s>1110</s><em>0001</em>&nbsp;<s>10</s><em>11 10
-       11</em>&nbsp;<s>10</s><em>00 0101</em>≡ 225 187 133
-</p>
-      <p><tt style="font-size:200%">&#x1f435;</tt>
-      &nbsp;&#10230;&nbsp; 128053<sub>10</sub> &nbsp;&#10230;&nbsp; …
-      ≡ 240 237 220 181</p>
-      <p>Avantages</p>
-      <ul><li>compatible ASCII 7 bits (d'anciens documents texte en
-      anglais sont toujours lisibles)</li>
-       <li>pas d'espace gaspillé (à l'inverse d'UTF-32 ou tous les
-       caractères font 32 bits)</li>
-      </ul>
-      <p>Inconvénients</p>
-      <ul>
-       <li>Caractères à taille variable: il faut parcourir le texte
-       pour trouver le n<sup>ème</sup> caractère</li>
-       <li>Les vieux logiciels doivent être adaptés</li>
-      </ul>
-    </div>
-  </body>
-</html>
diff --git a/unix_prog_web/unix_prog_web_05.xhtml b/unix_prog_web/unix_prog_web_05.xhtml
deleted file mode 100644 (file)
index 29a7ce1..0000000
+++ /dev/null
@@ -1,668 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>CSS</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-         a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-    <style>
-      ul.menu li { padding: 10pt 0pt 10pt 0pt;
-      display:block;
-      background:orange;
-      color:blue;}
-      .sous-menu { display : none; }
-      ul.menu > li:hover ul.sous-menu { display: block;
-      }
-      ul.menu > li:hover ul.sous-menu > li {
-      background:blue;
-      color:orange;
-      }
-    </style>
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-  </head>
-  <body>
-    <a href="unix_prog_web_04.xhtml" class="sws-previous"/>
-
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>Unix et Programmation Web</h1>
-      <h1>Cours 5</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>
-    <h1>Introduction</h1>
-    <div class="sws-slide">
-      <h1>Cascading Style Sheets (CSS)</h1>
-      <table class="desc">
-        <tr>
-          <td >CSS</td> <td>
-            Langage permettant de décrire le <em>style graphique</em>
-            d'une page HTML
-          </td>
-        </tr>
-      </table>
-      <p>On peut appliquer un style CSS</p>
-      <ul>
-        <li> À un élément en
-        utilisant <em>l'attribut <tt>style</tt></em></li>
-        <li> À une page en utilisant
-        l'élément <em><tt><![CDATA[ <style>...</style> ]]></tt></em>
-                                                          dans l'en-tête
-        du document (dans la
-        balise <tt><![CDATA[<head>...</head>]]></tt>).
-                                                 </li>
-        <li>À un ensemble de pages en référençant un fichier de style
-        dans chacune des pages
-        </li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <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é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>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>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>&lt;link href="style.css" type="text/css" rel="stylesheet" /&gt;</em>
-<![CDATA[    </head>
-    …
-  </html>]]></code>
-      </p>
-      <p class="sws-pause">Modifications &amp; déploiement aisé</p>
-    </div>
-    <div class="sws-slide">
-      <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>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>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> 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 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>
-    </div>
-
-
-    <div class="sws-slide">
-      <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:xx-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>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>
-      <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>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>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>
-    </div>
-    <div class="sws-slide">
-      <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>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">
-<span style="position:absolute;right:10pt;top:10pt;color:#0a2">fixed
-      (right:10pt,top:10pt)</span>
-      <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%;"><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>
-      </div>
-<p><code><![CDATA[  <ul style="position:relative;"><li>…</li> …</ul>]]></code></p>
-<ul style="position:relative;float:right;background:#ddd;">
-  <li>Positionnement <span style="position:static;color:#02a">static</span></li>
-  <li>Positionnement </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>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>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>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>
-      <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>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 &gt; 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>exemple : menu dépliable</h1>
-  <code><![CDATA[
-  <ul class="menu">
-    <li>Entrée 1
-       <ul class="sous-menu"> <li>Sous-entrée 1.1 </li>
-        <li>Sous-entrée 1.2 </li>
-        <li>Sous-entrée 1.3 </li>
-       </ul>
-    </li>
-    <li>Entrée 2
-       <ul class="sous-menu"> <li>Sous-entrée 2.1 </li>
-        <li>Sous-entrée 2.2 </li>
-        <li>Sous-entrée 2.3 </li>
-       </ul>
-    </li>
-  </ul>
-]]></code>
-</div>
-<div class="sws-slide">
-  <h1>Analyse</h1>
-  <p>Pour que le ménu soit « dépliable » lors du survol de la souris,
-  on souhaite que : </p>
-  <ul>
-    <li>Par défaut, les éléments de sous-menu soient cachés
-    (<tt>display : none</tt>)</li>
-    <li>Les éléments se trouvant sous un élément survolé
-    (<tt>hover</tt>) soient visibles (<tt>display : block</tt>)
-    </li>
-  </ul>
-</div>
-<div class="sws-slide">
-  <h1>exemple : menu dépliable (démo)</h1>
-  <ul class="menu">
-    <li>Entrée 1
-       <ul class="sous-menu"> <li>Sous-entrée 1.1 </li>
-        <li>Sous-entrée 1.2 </li>
-        <li>Sous-entrée 1.3 </li>
-       </ul>
-    </li>
-    <li>Entrée 2
-       <ul class="sous-menu"> <li>Sous-entrée 2.1 </li>
-        <li>Sous-entrée 2.2 </li>
-        <li>Sous-entrée 2.3 </li>
-       </ul>
-    </li>
-
-  </ul>
-</div>
-<div class="sws-slide">
-  <h1>Style CSS du menu </h1>
-<p><code>
-    li { padding: 10pt 0pt 10pt 0pt;
-         display:block;
-         background:orange;
-         color:blue;
-    }
-    .sous-menu { display : none; }
-
-    ul.menu > li:hover ul.sous-menu { display: block; }
-    ul.menu > li:hover ul.sous-menu > li {
-                                    background:blue;
-                                    color:orange;
-    }
-</code>
-</p>
-</div>
-<div class="sws-slide">
-  <h1>Priorité d'application des règles (cascade)</h1>
-  <p>Les règles sont appliquées dans l'ordre suivant : </p>
-  <ul>
-    <li>On applique toutes les règles des fichiers CSS référencés,
-    dans l'ordre. Si plusieurs règles sont valides, elles sont
-    appliquées dans l'ordre (en écrasant les comportement précédents,
-    s'ils portent sur les mêmes attributs)</li>
-    <li>Puis on applique les règles se trouvant dans
-    l'élément <tt>style</tt> du fichier HTML courant</li>
-    <li>Puis on applique enfin les règles se trouvant dans
-    l'attribut <tt>style</tt></li>
-  </ul>
-</div>
-<div class="sws-slide">
-<h1><tt>z-index</tt></h1>
-<p>Il arrive que certaines boites se recouvrent : </p>
-<div style="position:relative;margin-left:30pt;height:200pt;">
-  <div style="position:absolute;top:0pt;left:0pt;background:red;
-  border: 5pt solid blackl;width:150pt; height:150pt;">
-    Du texte recouvert
-  </div>
-  <div style="position:absolute;top:10pt;left:10pt;background:blue;
-  border: 5pt solid blackl;width:150pt; height:150pt;">
-  </div>
-</div>
-<p style="position:relative;">On peut utiliser la propriété <tt>z-index</tt> pour définir l'ordre
-  d'empilement (plus elle est élevée, plus la boite est en avant plan)
-</p>
-<div style="position:relative;margin-left:30pt;height:200pt">
-  <div style="position:absolute;top:0pt;left:0pt;background:red;z-index:2;
-  border: 5pt solid blackl;width:150pt; height:150pt;">
-    Du texte recouvert
-  </div>
-  <div style="position:absolute;top:10pt;left:10pt;background:blue;
-  border: 5pt solid blackl;width:150pt; height:150pt;">
-  </div>
-</div>
-</div>
-<h1>requête <tt>media-type</tt></h1>
-<div class="sws-slide">
-  <h1>Différents styles pour différents affichages</h1>
-  <p>On peut charger un style CSS de manière conditionnelle grace à
-    l'attribut <tt>media</tt> de la balise <tt>link</tt>.
-    La valeur de l'attribut est une <a>formule logique</a> où l'on
-    peut tester le type de support d'affichage ainsi que ces
-    caractéristiques physiques :
-  </p>
-  <code style="font-size:75%;">  <![CDATA[
-    <link rel="stylesheet" type="text/css" href="style1.css" media="all" />
-    <link rel="stylesheet" type="text/css" href="style2.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="style3.css" media="screen and landscape" />
-    <link rel="stylesheet" type="text/css" href="style4.css" media="screen and min-width:480px" />
-    <link rel="stylesheet" type="text/css" href="style5.css" media="screen and max-width:479px" />
-]]>  </code>
-<p>Cela permet d'appliquer des styles spécifiques lors de l'impression
-  d'une page ou pour des terminaux mobiles (ayant une petite taille
-  d'écran) ou de changer de style si l'orientation de l'écran est modifiée.</p>
-</div>
-<div class="sws-slide">
-  <h1>Gestion du débordement</h1>
-  <p>L'attribut <tt>overflow</tt> permet de gérer le débordement. Il
-  peut prendre les valeurs <tt>visible</tt>, <tt>hidden</tt> et <tt>auto</tt>
-  : </p>
-  <div style="width:30%;float:left;overflow:visible; height:100pt;background:#ffa;" >
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
-eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
-minim veniam, quis nostrud exercitation ullamco laboris nisi ut
-aliquip ex ea commodo consequat. Duis aute irure dolor in
-reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
-pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
-culpa qui officia deserunt mollit anim id est laborum.
-  </div>
-  <div style="width:30%;float:left;overflow:hidden; height:100pt;background:#faf;" >
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
-eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
-minim veniam, quis nostrud exercitation ullamco laboris nisi ut
-aliquip ex ea commodo consequat. Duis aute irure dolor in
-reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
-pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
-culpa qui officia deserunt mollit anim id est laborum.
-  </div>
-  <div style="width:30%;float:left;overflow:auto; height:100pt;background:#aff;" >
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
-eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
-minim veniam, quis nostrud exercitation ullamco laboris nisi ut
-aliquip ex ea commodo consequat. Duis aute irure dolor in
-reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
-pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
-culpa qui officia deserunt mollit anim id est laborum.
-  </div>
-
-</div>
-  </body>
-</html>
diff --git a/unix_prog_web/unix_prog_web_06.xhtml b/unix_prog_web/unix_prog_web_06.xhtml
deleted file mode 100644 (file)
index ecdcfdc..0000000
+++ /dev/null
@@ -1,708 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>PHP : Introduction</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../libs/raphael-min.js" type="text/javascript" ></script>
-
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-         a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-  </head>
-  <body>
-    <a href="unix_prog_web_05.xhtml" class="sws-previous"/>
-
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>Unix et Programmation Web</h1>
-      <h1>Cours 6</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>
-
-    <h1>Introduction et généralités</h1>
-
-    <div class="sws-slide">
-      <h1>Avant PHP</h1>
-      <p>Constat: besoin de pages Web <em>dynamiques</em> (contenu
-       généré au chargement de la page)<br/>
-        Première solution: scripts (ou programmes) <em>CGI</em><br/>
-        <code>             http://www.example.com/foo.cgi?sort=alpha</code>
-      </p>
-      <ol>
-        <li>Programme écrit dans n'importe quel langage et exécuté par
-        le serveur Web</li>
-        <li>Le serveur passe les infos au programme par
-        des <em>variables d'environnement</em> et <em>l'entrée
-        standard</em></li>
-        <li>Le programme génère une page Web par affichage sur la
-        sortie standard</li>
-      </ol>
-      <p class="sws-pause">Inconvénients</p>
-      <ol>
-        <li>Communication difficile entre le serveur Web et le
-        programme</li>
-        <li>Les langages généralistes <em>ne sont pas faits pour le
-        Web</em> (pas de support d'HTML nativement par exemple)</li>
-      </ol>
-    </div>
-
-    <div class="sws-slide">
-      <h1>PHP (Avantages)</h1>
-      <ul>
-        <li> <em>Langage utilisé côté serveur</em> : le navigateur ne
-        « voit » jamais de PHP, uniquement du HTML (comportement
-        indépendant du navigateur)</li>
-        <li> <em>Langage interprété</em> : on ne génère pas de
-          binaire, déploiment facile (on copie les fichiers sur le
-          serveur)</li>
-        <li> <em>Intégration avec HTML</em> : PHP supporte
-        des <em><i>templates</i></em> (modèles/patrons) HTML contenant
-        du PHP</li>
-       <li> <em>Expose des Web simplement</em> (ports, URL, requêtes
-       HTTP, …)</li>
-      </ul>
-      <p>Exemple: fichier <tt>heure.php</tt> : </p><code><![CDATA[      <html>
-        <head><title>Heure</title></head>
-        <body>
-          <h1>L'heure</h1>
-          <p>Il est ]]><span style="color:orange;">&lt;?php echo date('H:i:s'); ?&gt;</span> <![CDATA[</p>
-        </body>
-      </html>]]></code>
-    </div>
-    <div class="sws-slide">
-      <h1>PHP</h1>
-      <ul>
-        <li>On compte 140,000,000 de noms de domaines enregistrés</li>
-        <li>On estime à environ 20,000,000 le nombre de sites faits en
-        PHP</li>
-        <li>Quelques gros sites:
-          <ul><li>Facebook</li>
-            <li>Portail Yahoo!</li>
-            <li>Flickr</li>
-            <li>Digg</li>
-            <li>Wikipedia</li>
-          </ul>
-        </li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Principe</h1>
-      <ul>
-        <li class="sws-onframe-1-5">Le serveur Web crée un fichier temporaire. Il copie le
-        contenu de <tt>heure.php</tt> jusqu'à trouver la balise <tt style="color:orange">&lt;?php</tt>
-        </li>
-        <li  class="sws-onframe-2-5">Le code se trouvant
-        entre  <tt style="color:orange">&lt;?php</tt>
-        et  <tt style="color:orange">?&gt;</tt> est exécuté.</li>
-        <li  class="sws-onframe-3-5">Tout ce que le code écrit
-        (instruction <tt style="color:orange">echo</tt>) est aussi
-        copié dans le fichier temporaire</li>
-        <li  class="sws-onframe-4-5">Le serveur web reprend la copie du fichier
-        après <tt style="color:orange">?&gt;</tt>
-        </li>
-        <li  class="sws-onframe-5">Le serveur renvoie le contenu du fichier temporaire comme
-        page au client</li>
-      </ul>
-      <div class="sws-onframe-0-5" style="background:white;margin:0% 5%;border:solid 1pt gray">
-<code><span class="sws-onframe-1-5"><![CDATA[      <html>
-        <head><title>Heure</title></head>
-        <body>
-          <h1>L'heure</h1>
-          <p>Il est ]]></span><span class="sws-onframe-3-5"
-          style="color:orange;">15:53:00</span><span class="sws-onframe-4-5"> <![CDATA[</p>
-        </body>
-      </html>]]></span></code>
-      </div>
-    </div>
-
-    <div class="sws-slide">
-      <h1>PHP (inconvénients)</h1>
-      <ol><li>Génère du HTML via <tt><em>echo</em></tt> (débuggage
-      difficile)</li>
-        <li>Interprété : problème de performances si beaucoup de
-        clients</li>
-        <li><em><b>NON TYPÉ</b></em> : <em style="color:red">C'est
-        HORRIBLE</em></li>
-      </ol>
-      <p>Devinette : qu'affiche l'instruction suivante ? (on ne
-      connaît pas encore PHP mais on peut utiliser son intuition)</p>
-      <code>   echo 013 + "013 c'est en fait 11 en base 8"; </code>
-      <ul style="background:white">
-        <li>013</li>
-        <li>13</li>
-        <li>013 c'est en fait 11 en base 8</li>
-        <li>013013 c'est en fait 11 en base 8</li>
-        <li>13013 c'est en fait 11 en base 8</li>
-        <li><span style="position:relative;"> <span class="sws-onframe-0"
-        style="position:absolute;
-        left:0;">24</span><span class="sws-onframe-1-2"
-        style="position:absolute;
-        left:0;"><em>24&nbsp;&#10004;&#10004;&#10004;</em></span></span></li>
-        <li>une erreur</li>
-        <li>autre chose</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Un mot sur les langages de programmation (subjectif)</h1>
-      <ol>
-       <li> Il n'y a pas d'excellent langage de programmation. Par
-       contre il y a d'excellents programmeurs</li>
-       <li> Connaître plusieurs langages aide à devenir un bon
-         programmeur (en particulier plusieurs paradigmes différents :
-         impératifs, objet, fonctionnel, logique, déclaratif, …).
-       </li>
-       <li> On ne peut pas vraiment se faire plaisir en informatique
-         en étant un mauvais programmeur</li>
-       <li>Il y a de très mauvais langages, le plus mauvais étant
-         PHP</li>
-      </ol>
-    </div>
-
-
-    <h1>Types de base et expressions simples</h1>
-    <div class="sws-slide">
-      <h1>Entiers (<tt>integer</tt>)</h1>
-      <p>Les entiers ont une taille fixe (généralement 32bits) : </p>
-      <table class="desc">
-        <tr><td>Notation décimale</td><td>10, 3444, -25, 42,
-        …</td></tr>
-        <tr><td>Notation binaire</td><td>0b10, -0b10001010,
-        …</td></tr>
-        <tr><td>Notation octale</td><td>0755, -01234567, …</td></tr>
-        <tr><td>Notation hexadécimale</td><td>0x12b, -0xb00b5,
-        0xd34db33f, …</td></tr>
-      </table>
-      <p>Opérateurs arithmétiques : </p>
-      <table class="desc">
-        <tr><td>-</td><td> « Moins » unaire </td></tr>
-        <tr><td>+, -, *, % </td><td>addition, soustraction, produit, modulo</td></tr>
-        <tr><td><span style="color:red">/</span></td><td>Division. Si
-        <tt>x</tt> et <tt>y</tt> sont des entiers et que <tt>y</tt>
-        divise <tt>x</tt> alors <tt>x/y</tt> renvoie
-        un <em style="color:red">entier</em> sinon <tt>x/y</tt> renvoie
-        un <em style="color:red">flottant</em>!
-        </td></tr>
-        </table>
-    </div>
-    <div class="sws-slide">
-      <h1>Booléens (<tt>boolean</tt>)</h1>
-      <table class="desc">
-        <tr><td>TRUE/FALSE</td><td>vrai/faux (en majuscules)</td></tr>
-      </table>
-      <p>Opérateurs logiques :</p>
-      <table class="desc">
-        <tr><td>!</td><td> négation (unaire) </td></tr>
-        <tr><td>&amp;&amp;, || </td><td>« et » logique, « ou » logique</td></tr>
-      </table>
-    </div>
-    <div class="sws-slide">
-      <h1>Flottants (<tt>float</tt>)</h1>
-      <table class="desc">
-        <tr><td>Notation scientifique</td><td>1.3, 0.99, 00.34e102, -2313.2313E-23,
-        …</td></tr>
-      </table>
-      <p>Opérateurs arithmétiques : </p>
-      <table class="desc">
-        <tr><td>-</td><td> « Moins » unaire </td></tr>
-        <tr><td>+, -, *, /, % </td><td>opérations standard</td></tr>
-        <tr><td>abs, sin, cos, sqrt, pow, …</td><td>fonctions
-          mathématiques pré-définies     </td></tr>
-    </table>
-    </div>
-    <div class="sws-slide">
-      <h1>Variables, affectations</h1>
-      <ul>
-        <li>Un nom de variable commence toujours
-        par <tt><em>$</em></tt></li>
-        <li>Pas besoin de donner le type, l'affectation détermine le
-        type</li>
-      </ul>
-      <p>Exemples :</p>
-      <code>     $foo = 123;
-     $bar = 1323e99;
-     $_toto = $bar;
-</code>
-    </div>
-    <div class="sws-slide">
-      <h1>Chaînes de caractères (<tt>string</tt>)</h1>
-      <table class="desc">
-        <tr><td>Simples quotes</td><td> <tt>'foo'</tt>, <tt>'c\'est
-              moi'</tt>, <tt>'Un antislash : \\'</tt>, …<br/>
-            <em style="color:orange">Pas d'autre séquence d'échappement</em>
-        </td></tr>
-        <tr><td style="width:8em;">Doubles quotes</td><td><tt>"foo"</tt>, <tt>"c'est
-        moi"</tt>, <tt>"Un retour chariot: \n"</tt>, <tt>"La variable
-        \$toto contient: $toto"</tt><br/>
-            <em style="color:orange">Les séquences d'échapement sont:
-            \n, \t, \\, \&quot;, \$. Les variables (sous-chaînes
-            commençant par un $) sont remplacées par leur valeur.
-            </em>
-          </td></tr>
-      </table>
-      <p>Opérations sur les chaînes : </p>
-      <table class="desc">
-        <tr><td>$foo[10]</td><td> accès au 11<sup>ème</sup> caractère </td></tr>
-        <tr><td>$foo[10] = 'A';</td><td> mise à jour</td></tr>
-        <tr><td> . </td><td>concaténation</td></tr>
-        <tr><td>strlen</td><td>longueur</td></tr>
-    </table>
-    </div>
-    <div class="sws-slide">
-      <h1>Tableaux (<tt>array</tt>)</h1>
-      <p>Les tableaux sont des tableaux <em>associatifs</em> : </p>
-      <table class="desc" >
-        <tr><td>array()</td><td>crée un tableau vide</td></tr>
-        <tr><td style="width:14.5em;">array(<tt>k<sub>1</sub> => v<sub>1</sub>, …,
-        k<sub>n</sub> => v<sub>n</sub> </tt>)</td>
-          <td>créé un nouveau tableau pour lequel
-          l'entrée <tt>k<sub>i</sub></tt> est associée à la
-          valeur <tt>v<sub>i</sub></tt>
-            </td>
-          </tr>
-        <tr><td>array(<tt>v<sub>1</sub>, …,  v<sub>n</sub> </tt>)</td>
-          <td>créé un nouveau tableau pour lequel
-            l'entier <tt>i-1</tt>
-          valeur <tt>v<sub>i</sub></tt>
-            </td>
-          </tr>
-      </table>
-      <p>Quelques fonctions : </p>
-      <table class="desc" style="background:white;">
-        <tr><td style="width:7em;">count</td><td> taille du tableau (nombre d'éléments)</td></tr>
-        <tr><td>sort, rsort</td><td> trie un tableau (<tt>rsort</tt> trie par
-        ordre décroissant) par valeurs. Les clés sont supprimées et
-        de nouvelles clées de 0 à longueur - 1 sont crées</td></tr>
-        <tr><td>ksort, krsort</td><td>trie un tableau par
-        clés</td></tr>
-        <tr><td>print_r</td><td>affiche un tableau (ne pas utiliser <tt>echo</tt>)</td></tr>
-    </table>
-    </div>
-    <div class="sws-slide">
-      <h1>Tableaux (exemples)</h1>
-            <code>        $tab1 = <em>array()</em>; //tableau vide
-        $tab2 = <em>array("zero", "un", "deux", "trois");</em>
-        $tab3 = <em>array("pi" => 3.14159, "e" => 2.71828; "phi" => 1.61803)</em>;
-        echo <em>$tab2[0]</em>; //affiche zero
-        echo <em>$tab3["phi"]</em>; //affiche 1.61803
-        <em>$tab1["dix"] = 10</em>; //affectation
-        <em>sort($tab2)</em>;
-        echo <em>$tab2[0]</em>;//affiche deux
-        <em>sort($tab3)</em>;
-        echo $tab3[0]; //affiche 1.61803
-        echo $tab3[1]; //affiche 2.71828
-        echo $tab3[2]; //affiche 3.14159
-        echo <em>count($tab2)</em>; //affiche 4 </code>
-    </div>
-    <div class="sws-slide">
-      <h1>NULL</h1>
-      <p><em>NULL</em> est une <em>constante</em> spéciale, de
-      type <em>NULL</em>. C'est la valeur d'une variable non déclarée
-      ou d'un accès invalide dans un tableau.</p>
-      <code>        $a = $b;  // $b n'est pas déclarée, $a reçoit NULL
-        $c = $tab["toto"]; // $tab existe mais n'a pas de valeur
-                           // associée à la clé "toto", $c reçoit NULL
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>Conversions de types</h1>
-      <p><span style="color:red;">☠☢☣☹</span> :
-les conversions se
-      font <em style="color:red;">implicitement</em>, en fonction du
-      contexte.
-      </p>
-      <table class="desc">
-        <tr> <td style="width:5em;">Booléen</td> <td>0, 0.0, "", "0", <tt>NULL</tt>, et le tableau
-        vide sont convertis en <tt>FALSE</tt>, le reste
-        en <tt>TRUE</tt> (en particulier "00" vaut <tt>TRUE</tt>
-        ☹)</td> </tr>
-        <tr><td>Entier</td><td> <tt>FALSE</tt> ⇝ 0, <tt>TRUE</tt> ⇝ 1,
-        les flottants sont arrondis par partie entière (1.23242 ⇝
-        1). Les chaînes <em style="color:red">dont un préfixe</em>
-        est un entier sont converties en cet entier, sinon en 0 ("123
-        bonjour" ⇝ 123) </td>
-        </tr>
-        <tr><td>Chaîne</td> <td> La chaîne contient la représentation
-        de la valeur (<tt> 1 . "ABC" </tt>
-        ⇝ <tt>"1ABC"</tt>). <tt>FALSE</tt> et <tt>NULL</tt> sont
-        convertis en <tt>""</tt>, <tt>TRUE</tt> converti en <tt>"1"</tt></td></tr>
-      </table>
-      <p> La réponse à la devinette : 013 + "013 c'est 11 en octal" : </p>
-      <ul style="background:white;">
-        <li> 013  ⇝ notation octale pour l'entier décimal 11 </li>
-        <li> "013 c'est 11 en octal" chaîne de caractères utilisées
-        dans une addition (contexte entier), le préfixe "013" est
-        transformé en <span style="color:red">décimal</span> 13</li>
-        <li> 11 + 13  ⇝ 24 (ça au moins ça a du sens)</li>
-      </ul>
-      
-    </div>
-    <div class="sws-slide">
-      <h1>Comparaisons</h1>
-      <p>Opérateurs de comparaisons</p>
-      <table class="simple">
-        <tr><td style="width:2em;"><em>Opérateur</em></td> <td style="width:13em;"><em>Description</em></td></tr>
-        <tr><td><tt> $a == $b </tt></td> <td >Égal, après conversion
-        de type     </td></tr>
-        <tr><td><tt> $a != $b </tt></td> <td>Différent, après conversion
-        de type
-        </td></tr>
-        <tr><td><tt> $a === $b </tt></td> <td>Égal et de même type
-        </td></tr>
-        <tr><td><tt> $a !== $b </tt></td> <td>Différent ou de type différent
-        </td></tr>
-        <tr><td><tt> $a &lt; $b </tt></td> <td>Strictement plus petit,
-        après conversion de type
-        </td></tr>
-        <tr><td><tt> $a &gt; $b </tt></td> <td>Strictement plus grand,
-        après conversion de type
-        </td></tr>
-        <tr><td><tt> $a &lt;= $b </tt></td> <td>Plus petit,
-        après conversion de type
-        </td></tr>
-        <tr><td><tt> $a &gt;= $b </tt></td> <td>Plus grand,
-        après conversion de type
-        </td></tr>
-        </table>
-      <p>On comparera <em style="color:red;">TOUJOURS</em> des valeurs
-      de <em style="color:red;">MÊME TYPE</em></p>
-    </div>
-    <div class="sws-slide">
-      <h1>Affichage</h1>
-      <p>On utilise l'instruction <tt><em>echo</em></tt> pour écrire
-        du texte dans la page HTML résultante : </p>
-      <table class="simple" border="1" style="margin-left:10vh; border-collapse:collapse;border-spacing: 2pt 2pt" >
-        <tr style="boder-width:0pt 0pt 3pt 0pt;
-                   border-color: gray;
-                   border-style: solid " >
-          <td  style="width: 10em;"><em>Code PHP</em></td>
-          <td  style="width: 7em;" ><em>Code HTML</em></td>
-          <td><em>Affichage dans le navigateur</em></td>
-        </tr>
-        <tr>
-          <td><tt>echo "Hello";<br/>
-              echo "World";</tt></td>
-          <td> HelloWorld</td>
-          <td>HelloWorld</td></tr>
-        <tr>
-        <td><tt>echo "Hello\n";<br/>
-            echo "World";</tt></td>
-        <td> Hello<br/>World</td>
-        <td>Hello World</td></tr>
-        <tr><td><tt>echo "Hello&lt;br/&gt;";<br/>
-            echo "World";</tt></td>
-        <td> Hello<tt>&lt;br/&gt;</tt>World</td>
-        <td>Hello<br/>World</td></tr>
-      </table>
-    </div>
-    <h1>Structures de contrôle</h1>
-    <div class="sws-slide">
-      <h1>Conditionnelle: <tt>if else</tt></h1>
-      <code>
-        <em>if (</em> c <em>) {</em>
-               // cas then
-        <em> } else { </em>
-              // cas else
-        <em>};</em>
-      </code>
-      <p>Les <em>parenthèses</em> autour de la condition <tt>c</tt> sont
-          obligatoires. La branche <tt><em>else { … }</em></tt> est
-          optionnelle. Les accolades sont optionnelles pour les blocs
-          d'une seule instruction</p>
-      </div>
-      <div class="sws-slide">
-        <h1>Boucles</h1>
-        <div class="sws-pause">
-          <code>     <em>while (</em> c <em>)  {</em>
-        //corps de la boucle while
-     <em>};</em></code>
-        </div>
-       <div class="sws-pause">
-          <code>
-     <em>do  {</em>
-        //corps de la boucle do
-     <em>} while (</em> c <em>);</em></code>
-        </div>
-
-       <div class="sws-pause">
-          <code>
-     <em>for(init ; test ; incr)  {</em>
-        //corps de la boucle for
-     <em>};</em></code>
-        </div>
-       <div class="sws-pause">
-          <code>
-     <em>foreach($tab as $key => $val)  {</em>
-        //corps de la boucle foreach
-        //$tab est un tableau, $key une clé et $val la valeur associée
-     <em>};</em></code>
-        </div>
-       <p style="background:white;">Remarque: <tt>ksort</tt> et <tt>krsort</tt> influencent
-       l'ordre de parcours par une boucle <tt>foreach</tt></p>
-      </div>
-      <div class="sws-slide">
-        <h1><tt>break</tt> et <tt>continue</tt></h1>
-        <table class="desc">
-          <tr><td><tt>break</tt></td>
-            <td>sort de la boucle
-          immédiatement</td> </tr>
-          <tr> <td><tt>continue</tt></td> <td>reprend à l'itération
-          suivante</td>
-          </tr>
-        </table>
-        <code>
-          for($i = 0; $i &lt; 10; $i = $i + 1){
-              if ($i == 2 || $i == 4) continue;
-              if ($i == 7) break;
-              echo $i . ' ';
-          }
-          </code>
-        <p>Affiche 0 1 3 5 6</p>
-      </div>
-      <h1>Passage de paramètres depuis une page</h1>
-      <div class="sws-slide">
-        <h1>Formulaire HTML (version simple)</h1>
-        <p>L'élément <tt><em>&lt;form&gt;</em></tt> permet de créer des formulaires HTML. Un
-formulaire est constitué d'un ensemble de widgets (zones de saisies
-de textes, boutons, listes déroulantes, cases à cocher, ... ) et d'un
-bouton submit. Lorsque l'utilisateur appuie sur le bouton, les
-données du formulaires sont envoyées au serveur. Exemple, fichier
-<tt>age.html</tt> :</p>
-<code><![CDATA[
-    <html>
-      <body>
-        <form method="get" action="calcul.php">
-          Entrez votre année de naissance: <input type="text" name="val_age"/>
-          <input type="submit" />
-        </form>
-      </body>
-    </html>
-    ]]></code>
-</div>
-<div class="sws-slide">
-  <h1>Paramètres</h1>
-  <p>
-    Les paramètres envoyés au serveur web par la méthode <tt>get</tt>, sont
-    accessibles en PHP dans la variable globale <tt><em>$_GET</em></tt>. C'est un tableau
-    qui associe au nom d'un input sa valeur.
-    Exemple : <tt>calcul.php</tt></p>
-<code><![CDATA[
-      <html>
-        <body>
-          <?php
-           echo "Vous êtes né il y a ";
-           echo "<b>";
-           echo date("Y") - ]]><em>$_GET["val_age"]</em><![CDATA[;
-           echo "</b> ans";
-           echo "<br/>";
-           ?>
-          </body>
-     </html>
-      ]]></code>
-</div>
-
-
-    <h1>Définitions de fonctions</h1>
-
-    <div class="sws-slide">
-      <h1>Fonctions</h1>
-      <p>Les fonctions sont déclarées à l'aide du
-      mot-clé <tt><em>function</em></tt>. On renvoie des résultats à
-      l'aide du mot-clé  <tt><em>return</em></tt>.</p>
-        <code><![CDATA[
-   <?php
-    ]]><em>function</em> double ($x)
-      <em>{</em>
-         <em>return</em> $x + $x;
-      <em>}</em>
-
-      echo double(10);
-  <![CDATA[?>]]>
-        </code>
-    </div>
-
-
-    <div class="sws-slide">
-      <h1>Portée des variables locales et globales
-        <b style="color:red">&#9888;</b>
-      </h1>
-      <div id="cont2" style="width:100%;position:relative;"
-           onresize="draw_arrows();" >
-        <div id="left2" style="display:inline-block;width:50%; position:relative;
-                               box-sizing:border-box;
-                               padding: 0 1em 0 2em;
-                               border-style:dashed;
-                               border-width: 0 1pt 0 0;
-                               border-color:gray; float:left;">
-<code>  &lt;?php
-  <em style="color:red">$a</em> = 42;
-  function add_a($x)
-  {
-        <span id="leftend" />
-    return $x + <em style="color:red">$a</em>;<span id="leftstart" />
-  }
-  echo add_a(10);
-  ?&gt;
-</code>
-        </div>
-        <div id="right2" style="display:inline-block;
-                                width:50%; position:relative;
-                                box-sizing:border-box;
-                                padding: 0 2em 0 1em;
-                                vertical-align:text-top;
-                                ">
-<code >  &lt;?php
-  <em>$a</em> = 42;<span id="rightend"/>
-  function add_a($x)
-  {
-    <em>global $a</em>;<span id="rightmid"/>
-    return $x + <em>$a</em>;<span id="rightstart"/>
-  }
-  echo add_a(10);
-  ?&gt;
-</code>
-        </div>
-      </div>
-
-      <script type="text/javascript">
-
-        function overlay(id) {
-        var w = $("#" + id)[0].offsetWidth;
-        var h = $("#" + id)[0].offsetHeight;
-        $("#svg_"+id).remove();
-        var paper = Raphael(id, w, h);
-        paper.canvas.id = "svg_" + id;
-        return paper;
-        };
-
-        function curve_to(paper, start, end, style) {
-        var x1 = $(start)[0].offsetLeft;
-        var y1 = $(start)[0].offsetTop;
-        var x2 = $(end)[0].offsetLeft;
-        var y2 = $(end)[0].offsetTop;
-
-        var path_cmd =
-        "M" + x1 + " " + y1 + " S" + x1 + " " + y2 + " " + x2 + " " +   y2;
-        var p1 = paper.path(path_cmd);
-        p1.attr(style);
-
-        };
-
-        function draw_arrows(x) {
-
-        var paper = overlay("left2");
-        $("#svg_left2").css ( { 'z-index': '2', 'top':'0', 'left':'0', 'position':'absolute' } );
-
-        curve_to (paper, "#leftstart", "#leftend", { 'stroke': "red",
-        'stroke-dasharray' : "-",
-        'stroke-width': 2,
-        'arrow-end' : "block-wide-long" });
-
-        var paper = overlay("right2");
-        $("#svg_right2").css({ 'z-index': '2', 'top':'0', 'right':'0', 'position':'absolute' });
-
-        curve_to (paper, "#rightstart", "#rightmid", { 'stroke': "green",
-        'stroke-width': 2,
-        'arrow-end' : "block-wide-long" });
-        curve_to (paper, "#rightmid", "#rightend", { 'stroke': "green",
-        'stroke-width': 2,
-        'arrow-end' : "block-wide-long" });
-        };
-        SWS.Presentation.registerCallback(0, draw_arrows);
-      </script>
-      <p>Le code de gauche <em style="color:red">affiche 10</em> !
-      Les variables ont une portée <em style="color:red">locale</em>
-      par défaut. Si <tt>$a</tt> n'est pas définie dans le corps de la
-      fonction, sa valeur est <tt style="color:red">NULL</tt>
-      (variable non définie). <span >Pour référencer
-      des variables globales, on utilise le mot clé <tt><em>global</em></tt>.</span>
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>Fonction : définition <b style="color:red">&#9888;</b></h1>
-      <p>On peut utiliser une fonction <s>« avant »</s> de la définir :</p>
-      <code>   &lt;?php
-        echo next(10);
-        echo &lt;br/&gt;;
-
-        function next($x)
-        {
-          return $x + 1;
-        }
-   ?&gt;</code>
-      <p>On définira <em>toujours</em> des fonctions <em>avant</em> de
-      les utiliser. On ne peut pas définir deux fonctions avec le même
-      nom.
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>Fonctions : passage par référence</h1>
-      <div style="position:relative;margin-top:20pt;">
-        <div style="margin-left:20pt;display:inline-block;vertical-align:top;float:left;">
-            <code>&lt;?php
-  function add_a($tab)
-  {
-    $tab["a"] = 42;
-  }
-
-  $mytab = array();
-  add_a($mytab);
-  echo $mytab["a"];
-  //<s>n'affiche rien (car NULL ⇝ "")</s>
-?&gt;</code>
-        </div>
-        <div style="margin-left:20pt;display:inline-block;vertical-align:top;">
-          <code>&lt;?php
-  function add_a(<em>&amp;</em>$tab)
-  {
-    $tab["a"] = 42;
-  }
-
-  $mytab = array();
-  add_a($mytab);
-  echo $mytab["a"];
-  //<em>affiche 42</em>
-?&gt;</code>
-        </div>
-
-      </div>
-      <br/>
-      <p style="position:relative">On utiliser le modificateur <tt><em>&amp;</em></tt> devant
-      un paramètre de fonction pour indiquer que ce dernier est passé
-      par référence.</p>
-
-      <p style="position:relative">Lorsque l'on veut <em>modifier</em> un argument de la
-      fonction (plutot que de renvoyer une version modifiée, par
-      ex. mise à jour d'un tableau, d'une chaîne, …), on doit le
-      passer  par référence.
-      </p>
-    </div>
-  </body>
-
-</html>
diff --git a/unix_prog_web/unix_prog_web_07.xhtml b/unix_prog_web/unix_prog_web_07.xhtml
deleted file mode 100644 (file)
index c0762b9..0000000
+++ /dev/null
@@ -1,645 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>PHP : expressions régulières, fichiers, sessions</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2014 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-2.0.3.min.js" type="text/javascript" ></script>
-    <script src="../libs/raphael-min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-         a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-  </head>
-  <body>
-    <a href="unix_prog_web_06.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>Programmation Internet</h1>
-      <h1>Cours 7</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>
-
-    <h1>Manipulation des chaînes et expressions régulières</h1>
-    <div class="sws-slide">
-      <h1>Quelques fonctions utilitaires sur les chaînes</h1>
-      <dl>
-        <dt><tt>explode($delim, $entree)</tt></dt>
-        <dd>Découpe la chaîne <tt>$entre
-e</tt> suivant la
-        sous-chaîne <tt>$delim</tt> et renvoie les morceaux dans un
-        tableau.</dd>
-        <dt><tt>implode($delim, $tab)</tt></dt>
-        <dd>Réunit les chaînes se trouvant dans le
-        tableau <tt>$tab</tt> en les séparant par la
-        chaîne <tt>$delim</tt>.
-        </dd>
-        <dt><tt>ltrim($entree)</tt></dt>
-        <dd>Retire les caractères blancs en début de chaîne.</dd>
-        <dt><tt>rtrim($entree)</tt></dt>
-        <dd>Retire les caractères blancs en fin de chaîne.</dd>
-        <dt><tt>trim($entree)</tt></dt>
-        <dd>Retire les caractères blancs en début et en fin de
-        chaîne.</dd>
-        <dt><tt>htmlspecialchars($entree)</tt></dt>
-        <dd>convertit les caractères <tt>&amp;</tt>, <tt>&quot;</tt>,
-          <tt>&apos;</tt>, <tt>&lt;</tt> et <tt>&gt;</tt> en
-          <tt>&amp;amp;</tt>, <tt>&amp;quot;</tt>,
-          <tt>&amp;apos;</tt>, <tt>&amp;lt;</tt> et <tt>&amp;gt;</tt>.
-        </dd>
-
-      </dl>
-    </div>
-    <div class="sws-slide">
-      <h1>Expressions régulières : syntaxe</h1>
-      <p>Les expressions régulières de PHP sont au format PCRE (Perl
-      Common Regular Expressions) <tt><em>'/r/'</em></tt>
-      où <tt>r</tt> est une expression de la forme:</p>
-<code>      <table style="margin:0em 2em">
-    <tr>
-      <td>r ::=</td>    <td>    <it>a</it>    </td>         <td>    (un caractère)</td></tr>
-    <tr><td>    |</td>     <td>    <em>.</em></td>        <td>    (n'importe quel caractère)</td></tr>
-    <tr><td>    |</td><td>    r<sub>1</sub> <em>|</em> r<sub>2</sub></td> <td>    (r<sub>1</sub> ou r<sub>2</sub>)</td></tr>
-    <tr><td>    |</td><td>    r<em>?</em></td><td>    (r répétée au plus 1 fois)</td></tr>
-    <tr><td>    |</td><td>    r<em>*</em></td><td>    (r répétée 0 fois ou plus)</td></tr>
-    <tr><td>    |</td><td>    r<em>+</em></td><td>    (r répétée 1 fois ou plus)</td></tr>
-    <tr><td>    |</td><td>    <em>[</em>c<sub>1</sub> … c<sub>n</sub><em>]</em></td> <td>    (un caractère parmis c<sub>1</sub>, …, c<sub>n</sub>)</td></tr>
-    <tr><td>    |</td><td>    <em>[</em>c<sub>1</sub><em>-</em>c<sub>n</sub><em>]</em></td> <td>    (un caractère parmis c<sub>1</sub>, …, c<sub>n</sub>)</td></tr>
-    <tr><td>    |</td><td>    <em>[^</em>c<sub>1</sub> … c<sub>n</sub><em>]</em></td> <td>    (un caractère sauf c<sub>1</sub>, …, c<sub>n</sub>)</td></tr>
-    <tr><td>    |</td><td>    <em>[^</em>c<sub>1</sub><em>-</em>c<sub>n</sub><em>]</em></td> <td>    (un caractère sauf c<sub>1</sub>, …, c<sub>n</sub>)</td></tr>
-    <tr><td>    |</td>     <td>    <em>^</em></td>        <td>    (début de texte)</td></tr>
-    <tr><td>    |</td>     <td>    <em>$</em></td>        <td>    (fin de texte)</td></tr>
-    <tr><td>    |</td>     <td>    <em>(</em>r<em>)</em></td>        <td>    (r elle même)</td></tr>
-
-<!--       |    <em>(</em>r<em>)</em>       (r elle même)
--->
-</table>
-</code>
-    </div>
-<div class="sws-slide">
-  <h1>Expressions régulières : recherche</h1>
-  <code style="text-align:center"> <em>preg_match</em>($regexp, $chaine)</code>
-  <p>renvoie <em>1</em> si une sous-chaine de <tt>$chaine</tt>
-  correspond à <tt>$regexp</tt>, <em>0</em> si aucune sous-chaine ne correspond
-  et <s><tt>FALSE</tt></s> en cas de problème (attention,
-  utiliser <tt>===</tt> pour tester le résultat).
-</p>
-<code style="margin: 0em 2em">&lt;?php
-    $chaine = <u>"ABCDEFABCDEF"</u>;
-    echo preg_match(<em>'/ABC/'</em>, $chaine);       <span class="sws-pause">// affiche 1</span>
-    <span>echo preg_match(<em>'/DEF/'</em>, $chaine);</span>       <span class="sws-pause">// affiche 1</span>
-    <span>echo preg_match(<em>'/^ABC/'</em>, $chaine);</span>      <span class="sws-pause">// affiche 1</span>
-    <span>echo preg_match(<em>'/^DEF/'</em>, $chaine);</span>      <span class="sws-pause">// affiche 0</span>
-    <span>echo preg_match(<em>'/ABC$/'</em>, $chaine);</span>      <span class="sws-pause">// affiche 0</span>
-    <span>echo preg_match(<em>'/DEF$/'</em>, $chaine);</span>      <span class="sws-pause">// affiche 1</span>
-    <span>echo preg_match(<em>'/(ABC...)+/'</em>, $chaine);</span> <span class="sws-pause">// affiche 1</span>
-    <span>echo preg_match(<em>'/[^A-Z]+/'</em>, $chaine);</span>   <span class="sws-pause">// affiche 0</span>
-    <span>echo preg_match(<em>'/[^A-Z]*/'</em>, $chaine);</span>   <span class="sws-pause">// affiche 1 !</span>
-    <span>echo preg_match(<em>'/^[^A-Z]*$/'</em>, $chaine);</span> <span class="sws-pause">// affiche 0</span>
-?&gt;</code>
-</div>
-<div class="sws-slide">
-  <h1>Expressions régulières : substitution</h1>
-  <code style="text-align:center"> <em>preg_replace</em>($regexp, $motif, $chaine)</code>
-  <p>recherche toutes les sous-chaînes de <tt>$chaine</tt> reconnues
-  par <tt>$regexp</tt> et les remplace par <tt>$motif</tt>. Ce dernier
-  peut contenir <tt>$<em>i</em></tt> pour référencer
-  le <em>i<sup>ème</sup></em> groupe de parenthèses</p>
-  <code style="margin: 0em 2em;background:white;">&lt;?php
-    $chaine = "<em>10</em>-<s>31</s>-<s style='color:blue'>1981</s>";
-    $reg1 = "/<em>(</em>[0-9]+<em>)</em>-<s>(</s>[0-9]+<s>)</s>-<s style='color:blue'>(</s>[0-9]+<s style='color:blue'>)</s>/";
-    echo preg_replace($reg1, "<em>$2</em>/<s>$1</s>/<s style='color:blue'>$3</s>", $chaine);
-    // affiche 31/10/1981
-
-    $reg2 = "/1/";
-    echo preg_replace($reg2, "toto", $chaine);
-    // affiche toto0-3toto-toto98toto
-
-    $reg3 = "/[0-9]([0-9]*)/"
-    echo preg_replace($reg3, "$1", $chaine);
-    // affiche 0-1-981 (* déplie la regexp le plus possible)
-?&gt;</code>
-</div>
-<div class="sws-slide">
-  <h1>Expressions régulières : séparation</h1>
-  <code style="text-align:center"> <em>preg_split</em>($regexp, $chaine)</code>
-  <p>renvoie un tableau des sous-chaine de <tt>$chaine</tt> séparées
-  par <tt>$motif</tt> (équivalent à <tt>explode</tt> pour
-  des <tt>$regexp</tt> constantes).</p>
-  <code style="margin: 0em 2em;background:white;">&lt;?php
-        $chaine = "Une phrase, c'est plusieurs mots.";
-        print_r (preg_split("/[ ,.']+/", $chaine));
-        //Affiche:
-        //Array ( [0] => Une [1] => phrase [2] => c [3] => est
-        //        [4] => plusieurs [5] => mots [6] => )
-?&gt;</code>
-</div>
-<div class="sws-slide">
-  <h1>Expressions régulières : recherche exhaustive</h1>
-
-  <code style="text-align:center"> <em>preg_match_all</em>($regexp, $chaine, &amp;$resultat)</code>
-  <p><tt><em>&amp;$resultat</em></tt> est un tableau <em>passé par
-  référence</em>. Après l'appel, <tt>$resultat[0]</tt> contient un
-  tableau avec <em>toutes</em> les sous-chaines reconnues
-  et <tt>$resultat[i]</tt> contient tous les résultats reconnus par le
-  i<sup>ème</sup> groupe de parenthèses. Renvoie le nombre de chaines
-  trouvées (<i>i.e.</i> la longueur de <tt>$resultat[0]</tt>).
-</p>
-  <code style="margin: 0em 2em;background:white;">&lt;?php
-    $res = array();
-    $chaine = "ABC ACD AEF AB DEF";
-    echo preg_match_all("/A([A-Z]*)/", $chaine, $res);
-    //Affiche 4
-    print_r ($res);
-    /*Affiche
-    Array ( [0] =>
-              Array ( [0] => ABC [1] => ACD [2] => AEF [4] => AB)
-            [1] =>
-              Array ( [0] => BC  [1] => CD  [2] => EF  [4] => B)
-            )
-*/?&gt;</code>
-</div>
-<h1>Manipulation de fichiers</h1>
-<div class="sws-slide">
-  <h1>Envoi d'un fichier au serveur (1/2)</h1>
-  <p>On utilise la méthode <tt><em>post</em></tt> pour les
-  formulaires. Les valeurs sont envoyées dans la requête HTTP (et non
-  pas encodées dans l'URL)</p>
-  <code>
-       &lt;form action="cible.php" <em>method="post"</em>
-             <em>enctype="multipart/form-data"</em>&gt;
-             &lt;input <em>type="file" <s>name="fichier"</s></em> size="20"/&gt;
-             &lt;button type="sumbit"&gt;Uploader le fichier&lt;/button&gt;
-      &lt;/form&gt;
-</code>
-<p>Apperçu:</p><form style="margin: 0em 1em" action="" method="post"
-                     enctype="multipart/form-data">
-  <input type="file" name="fichier" size="20"/>
-  <button type="submit">Uploader le fichier</button>
-</form>
-<p>Coté serveur, la variable <tt><em>$_FILES</em></tt> est
-  définie.  <tt><em>$_FILES[<s>"fichier"</s>]</em></tt> contient un
-  tableau avec des informations sur le fichier envoyé. Les autres
-  champs (par exemple valeur d'un champ texte) sont stockés dans la
-  variable <tt>$_POST</tt> (au lieu de <tt>$_GET</tt>).
-</p>
-</div>
-<div class="sws-slide">
-  <h1>Envoi d'un fichier au serveur (2/2)</h1>
-  <p>Étant donné un formulaire avec un champ <i>input</i> de
-  type <i>file</i> et de nom <tt>"fichier"</tt> on a accès aux
-  information suivantes:</p>
-  <dl>
-    <dt><tt>$_FILES["fichier"]["error"]</tt></dt> <dd>Code d'erreur
-    (0 si tout c'est bien passé, <tt>></tt> 0 si une erreur s'est produite. Les
-    autres champs ne sont définis que si "error" vaut 0).
-    </dd>
-    <dt><tt>$_FILES["fichier"]["tmp_name"]</tt></dt><dd>Nom du fichier
-    temporaire sur le serveur où a été sauvegardé le contenu du
-    fichier envoyé</dd>
-    <dt><tt>$_FILES["fichier"]["name"]</tt></dt><dd>Nom original du fichier</dd>
-    <dt><tt>$_FILES["fichier"]["size"]</tt></dt><dd>Taille du
-    fichier</dd>
-    <dt><tt>$_FILES["fichier"]["type"]</tt></dt><dd>Le type MIME du fichier</dd>
-  </dl>
-</div>
-<div class="sws-slide">
-  <h1>Ouverture d'un fichier</h1>
-<code style="text-align:center"> <em>fopen</em>($nomfichier, $mode)</code>
-<p>Ouvre un fichier dont on donne le nom avec un <i>mode</i>
-  particulier. Les modes sont: <em><tt>"r"</tt></em>
-  (lecture), <em><tt>"r+"</tt></em> (lecture/écriture),
-  <em><tt>"w"</tt></em> (écriture),
-  <em><tt>"w+"</tt></em> (lecture/écriture, création si non-existant),
-  <em><tt>"a"</tt></em> (écriture, ajout à la fin si existant),
-  <em><tt>"a+"</tt></em> (lecture/écriture, création si non-existant,
-  ajout à la fin si existant). <em><tt>fopen</tt></em> renvoie un
-  descripteur de fichier que l'on peut utiliser pour manipuler le
-  fichier.
-</p>.
-</div>
-<div class="sws-slide">
-  <h1>Lecture/écriture/fermeture d'un fichier</h1>
-<code style="text-align:center"> <em>fread</em>($desc, $taille)</code>
-<p>Lit au maximum <em><tt>$taille</tt></em> caractères dans un fichier
-  dont le descripteur (renvoyé par <tt>fopen</tt>)
-  est <tt>$desc</tt>. La fonction renvoie un chaine d'au
-  plus <tt>$taille</tt> caractères ou <tt>FALSE</tt> en cas d'erreur.
-</p>
-<code style="text-align:center"> <em>fwrite</em>($desc, $chaine)</code>
-<p>Écrit la chaine de caractères à la position courante dans le
-  fichier dont le descripteur est <tt>$desc</tt>. Renvoi le nombre
-  d'octets écrits ou <tt>FALSE</tt> en cas d'erreur.
-</p>
-<code style="text-align:center"> <em>fclose</em>($desc)</code>
-<p>Ferme le fichier dont le descripteur est <tt>$desc</tt>
-</p>
-</div>
-<div class="sws-slide">
-  <h1>Déplacement dans un fichier</h1>
-  <code style="text-align:center"> <em>fseek</em>($desc, $offset, $orig)</code>
-  <p>Déplace le pointeur interne de position du fichier dont le
-  descripteur est <tt>$desc</tt> de <tt>$offset</tt> octets. Le
-  paramètre <tt>$orig</tt> donne l'origine: <tt>SEEK_CUR</tt>
-  (décalage à partir de la position courante), <tt>SEEK_SET</tt>
-  (position absolue dans le fichier), <tt>SEEK_END</tt> (décalage à
-  partir de la fin de fichier).
-</p>
-</div>
-<div class="sws-slide">
-<h1>Interface simplifiée</h1>
-<code style="text-align:center"> <em>file_get_contents</em>($nomfichier)</code>
-<p>Ouvre un fichier dont on donne le nom et renvoie son contenu sous
-  forme d'une chaine de caractères</p>
-<code style="text-align:center"> <em>file</em>($nomfichier)</code>
-<p>Renvoie un tableau avec une case par ligne dans le fichier. Chaque
-  entrée contient le "\n" terminal.</p>
-</div>
-    <h1>En-tête de requêtes HTTP</h1>
-
-    <div class="sws-slide">
-      <h1>Retour sur le protocole HTTP</h1>
-      <ul><li><em>Client : </em>
-<code>GET <em>/~kn/index.html</em> HTTP/1.1
-Host: www.lri.fr
-</code>        </li>
-<li><em>Serveur : </em><br/>
-  <code style="display:inline-block;width:60%;vertical-align:top;">HTTP/1.1 200 OK
-Server: nginx/1.4.1 (Ubuntu)
-Date: Sun, 17 Nov 2013 16:44:48 GMT
-Content-Type: <em>text/html</em>
-Content-Length: 2038
-<![CDATA[
-<html>
-  <head><title>Homepage</title> </head>
-  <body>
-    …
-]]>
-  </code>
-<code style="display:inline-block;
-            black;width:30%;vertical-align:top;">} ← <em>code de retour</em>
-
-
-} ← <em>type de contenu</em>
-} ← <em>longueur du contenu</em>
-<span style="font-size:400%;vertical-align:middle;">}</span> <span>←</span> <em>contenu (2038 octets)</em>
-</code>
-</li>
-      </ul>
-    </div>
-
-    <div class="sws-slide">
-      <h1>Retour sur le protocole HTTP (2)</h1>
-      <ul><li><em>Client : </em>
-<code>GET <em>/~kn/fichier.pdf</em> HTTP/1.1
-Host: www.lri.fr
-</code>        </li>
-<li><em>Serveur : </em><br/>
-  <code >HTTP/1.1 200 OK
-Server: nginx/1.4.1 (Ubuntu)
-Date: Sun, 17 Nov 2013 16:44:48 GMT
-Content-Type: <em>application/pdf</em>
-Content-Length: 103449
-<![CDATA[
-%PDF-1.2
-%
-8 0 obj
-<</Length 9 0 R/Filter /FlateDecode>>
-stream
-………
- ]]>
-  </code>
-
-</li>
-      </ul>
-    </div>
-<div class="sws-slide">
-<h1>Modifier le <em>content-type</em> en PHP</h1>
-<p>Fichier <tt>notes_csv.php</tt>:</p>
-<code>  &lt;?php<em>
-    header('Content-type: application/csv');
-    header('Content-Disposition: attachement; filename="notes.csv"');</em>
-    echo "Nom, Note\n";
-    foreach ($NOTES as $nom => $note)
-       echo $nom . ", " . $note . "\n";
-
-  ?&gt;</code>
-<p class="sws-pause"><b style="color:red">&#9888; Attention!</b></p>
-<ul>
-  <li>Les appels à la fonction <em><tt>header()</tt></em> doivent se
-  trouver <s>avant</s> le premier <tt>echo()</tt> du code PHP</li>
-  <li>
-    Le code PHP doit générer (avec <tt>echo()</tt>) du contenu
-    compatible avec le type annoncé (et pas du HTML)
-  </li>
-</ul>
-</div>
-
-<div class="sws-slide">
-<h1>Quelques en-tête utiles</h1>
-<p>En tête utilisés par le serveur dans ses réponses</p>
-<dl>
-  <dt><tt>Content-type</tt></dt><dd>type MIME du contenu envoyé par le
-  serveur</dd>
-  <dt><tt>Content-Disposition</tt></dt><dd>permet de mentionner un nom de
-  fichier : <em><tt>attachment; filname="foobar.baz"</tt></em></dd>
-  <dt><tt>Cache-Control</tt></dt><dd>permet de forcer le client à
-  retélécharger la page: <em><tt>no-cache, must-revalidate</tt></em>
-  </dd>
-  <dt><tt>Last-Modified</tt></dt><dd>date de dernière modification du
-  contenu demandé</dd>
-</dl>
-<p>En tête utilisés par le client dans ses requêtes</p>
-<dl>
-  <dt><tt>Range</tt></dt><dd>permet de ne récupérer qu'un intervale
-  d'octets donné dans un fichier: <em><tt>bytes=500-999</tt></em>
-  </dd>
-  …
-</dl>
-
-</div>
-<div class="sws-slide">
-  <h1>Retour sur le protocole HTTP (3)</h1>
-  <p>On rappelle que HTTP est un protocole <em><i>stateless</i></em>
-  (sans état, <i>i.e.</i> le serveur Web ne conserve pas d'information
-  entre les connexions). Quel problème cela pose-t-il ?</p>
-  <ul >
-    <li class="sws-pause">Pas de partage d'information entre plusieur
-    pages</li>
-    <li class="sws-pause">Pas de mécanisme de reprise sur panne
-    </li>
-    <li class="sws-pause">Pas de persistance de l'information</li>
-    <li class="sws-pause">Pas d'authentification (impossible de savoir
-    que deux connexions successives ont été faites par le même
-    client)</li>
-  </ul>
-  <p class="sws-pause">⇒ difficle de réaliser une « application »
-    moderne répartie sur plusieurs pages</p>
-</div>
-
-<h1>Cookies</h1>
-<div class="sws-slide">
-<h1>Cookies</h1>
-<p>Un <em><i>cookie</i></em> est un paquet de données envoyé par le
-  serveur, stocké par le client (navigateur Web) et renvoyé au serveur
-  lors d'une nouvelle connexion. Les propriétés d'un cookie sont:
-</p>
-<dl>
-  <dt>Son nom</dt><dd>une chaîne de caractères</dd>
-  <dt>Sa valeur</dt><dd>une chaîne de caraceres</dd>
-  <dt>Sa durée de vie</dt><dd>jusqu'à la fin de la « session » ou pour
-  une période donnée</dd>
-  <dt>Son domaine</dt><dd>Le nom du site web émetteur du cookie</dd>
-  <dt>Son chemin</dt><dd>Le sous-répertoire (par rapport à la racine
-  du site) pour lequel le cookie est valide</dd>
-</dl>
-<p><b style="color:red">&#9888; Attention!</b> seul le domaine qui a
-  déposé le cookie est capable de le relire</p>
-</div>
-<div class="sws-slide">
-<h1>Cookies en PHP</h1>
-<p>Créer ou mettre à jour un cookie sur le client:</p>
-<code style="text-justify:center">
-                     setcookie(<em>$nom</em>, <em>$val</em>, <em>$date</em>);
-</code>
-<dl>
-  <dt><tt>$nom</tt></dt><dd>nom du cookie</dd>
-  <dt><tt>$val</tt></dt><dd>valeur du cookie</dd>
-  <dt><tt>$date</tt></dt><dd>date d'expiration en secondes
-  depuis <i>epoch</i> (1<sup>er</sup> janvier 1970 00:00:00)
-  ou <tt>NULL</tt> pour une expiration automatique.</dd>
-</dl>
-<p>(on peut récupérer le nombre de secondes depuis <i>epoch</i> avec
-  la fonction <tt>time()</tt>).<br/>
-  Exemple:
-</p>
-<code>  setcookie("mon_cookie", "42", time() + 3600 * 24 * 30);</code>
-</div>
-<div class="sws-slide">
-<h1>Petite digression sur «<i>epoch</i>» </h1>
-<p>Représenter le temps (une date) dans un programme informatique est
-  quelque chose de compliqué. Quels problèmes cela pose-t-il ?
-</p>
-<ul>
-  <li class="sws-pause">Fuseaux horaires</li>
-  <li class="sws-pause">Conversion de temps (de fuseau)</li>
-  <li class="sws-pause">Taille des entiers (Bug de l'an 2000, de l'an
-  2038, de l'an 292 277 026 596)</li>
-  <li class="sws-pause">Secondes intercalaires (« <i>leap second</i> »)</li>
-</ul>
-<p>Ce n'est pas encore quelque chose de bien maîtrisé !</p>
-</div>
-<div class="sws-slide">
-  <h1>Cookies en PHP</h1>
-  <p>On peut récupérer la valeur d'un cookie depuis PHP:
-  </p>
-  <code>                   <em>$_COOKIE["mon_cookie"]</em></code>
-  <p>Un cookie <tt>"foo"</tt> existe (<i>i.e.</i> a été défini
-  auparavant) si une entrée correspondante existe dans le tableau
-  global <em><tt>$_COOKIE</tt></em>. On peut tester qu'une entrée
-  existe dans un tableau avec <em><tt>isset()</tt></em>.
-  </p>
-  <p><b style="color:red">&#9888; Attention!</b> </p>
-  <ul>
-    <li>On ne peut pas écrire dans <em>$_COOKIE</em> (par
-    exemple <tt>$_COOKIE["foo"] = 42</tt>), il faut
-    utiliser <em><tt>setcookie()</tt></em>.
-    </li>
-    <li><em><tt>setcookie()</tt></em>
-    utilise <em><tt>header()</tt></em> et doit donc être appelé avant
-    le premier <em><tt>echo()</tt></em> du fichier.
-    </li>
-    <li>Pour effacer un cookie, on peut lui donner une date
-    d'expiration antérieure à l'instant présent (<tt>0</tt> par exemple)</li>
-  </ul>
-</div>
-
-<div class="sws-slide">
-  <h1>Avantages et inconvénients des cookies</h1>
-<ul style="list-style-type:none;">
-  <li class="sws-pause"><b>+</b> stockage persistant</li>
-  <li class="sws-pause"><b>+</b> interface simple d'utilisation (une
-  variable pour la lecture et <tt>setcookie</tt> pour l'écriture)</li>
-  <li class="sws-pause"><b>-</b> limité en taille </li>
-  <li class="sws-pause"><b>-</b> limité en nombre par domaine</li>
-  <li class="sws-pause"><b>-</b> type de donnée limité à des chaînes
-  (on ne peut pas stocker un tableau PHP par exemple)</li>
-<li class="sws-pause"><b>+/-</b> stocké sur le client</li>
-</ul>
-</div>
-<h1>Sessions</h1>
-<div class="sws-slide">
-<h1>Sessions</h1>
-  <p>Une <em>session HTTP</em> est un ensemble de requêtes/réponses HTTP
-    entre un serveur et un <em>même</em> client.<br/>
-    Exemple d'un sondage en ligne:
-  </p>
-  <ol> <li>Le visiteur arrive sur la page <tt>q1.php</tt> en cliquant sur
-    le lien « commencer le sondage » (<em>Début de session</em>)
-    </li>
-    <li> Sur <tt>q1.php</tt>, l'utilisateur coche des choix dans un formulaire et appuie
-    sur un boutton de soumission qui l'envoie sur <tt>q2.php</tt>
-    </li>
-    <li>…</li>
-    <li> Sur <tt>q10.php</tt>, l'utilisateur coche des choix dans un
-    formulaire et appuie sur un bouton de soumission qui l'envoie
-    sur <tt>resultat.php</tt></li>
-    <li> Sur <tt>resultat.php</tt>, le résultat global du sondage (%
-      par question, nombre de participants jusqu'à présent etc...) est
-      affiché (<em>Fin de session</em>)
-    </li>
-  </ol>
-</div>
-<div class="sws-slide">
-  <h1>Variables de session</h1>
-  <p>Pour programmer une application Web, on souhaîte avoir accès à
-  des <em>variables de session</em> c'est à dire des variables qui
-  sont:
-  </p>
-  <ul><li>Globale au serveur, et accessibles depuis plusieurs pages
-  PHP différentes</li>
-    <li>Spécifiques à un « utilisateur » (c'est à dire à une session
-    particulière)
-    </li>
-  </ul>
-  <p>Les variables de sessions sont donc propres à chaque client et
-  persistent le temp de la session (le temps de session est décidé par
-  le serveur)</p>
-</div>
-<div class="sws-slide">
-  <h1>Variables de session en PHP</h1>
-  <p>On initie une session avec la fonction:</p>
-  <code>                         <em>session_start();</em> </code>
-  <p>Une fois appelée, la variable <em><tt>$_SESSION</tt></em>
-    contient un tableau que l'on peut utiliser entre plusieurs
-    pages. Les valeurs contenues dans le tableau persistent jusqu'à la
-    fin de la session. Une session se termine:
-  </p>
-  <ul><li>Quand le client se déconnecte</li>
-    <li>Après un certain temps (« votre session a expiré, veuillez
-    vous reconnecter»)</li>
-    <li>Quand le code PHP
-    appelle <em><tt>session_end();</tt></em></li>
-  </ul>
-<p><b style="color:red">&#9888;
-    Attention!</b> <em><tt>session_start()</tt></em> doit être appelé
-    avant le premier <tt>echo</tt> du fichier.</p>
-</div>
-<div class="sws-slide">
-  <h1>Variables de session en PHP (2)</h1>
-<code style="border:  2pt dashed gray;margin:5pt;">
-  &lt;?php /* Fichier page1.php */
-    <em>session_start();
-    $_SESSION["Valeur"] = 42;</em>
-  ?&gt;
-  <![CDATA[<html>
-    <body>
-      Veuillez cliquer sur le <a href=]]><em>"page2.php"</em><![CDATA[>lien</a>
-    </body>
-  </html>
-]]></code>
-<code style="border:  2pt dashed gray;margin:5pt;">  <![CDATA[<html>
-    <body>
-      La valeur est <?php]]> <em>echo $_SESSION["Valeur"];</em> <![CDATA[?>
-      <!-- affiche 42 -->
-    </body>
-  </html>
-]]></code>
-</div>
-<div class="sws-slide">
-  <h1>Avantages et inconvénients des session</h1>
-<ul style="list-style-type:none;">
-  <li class="sws-pause"><b>+</b> Informations stockées sur le serveur</li>
-  <li class="sws-pause"><b>+</b> Pas de limite de taille</li>
-  <li class="sws-pause"><b>+</b> Pas limité à des chaînes de caractères</li>
-  <li class="sws-pause"><b>-</b> Valeurs perdues en fin de session</li>
-  <li class="sws-pause"><b>-</b> <s>Nécessite des cookies</s></li>
-</ul>
-</div>
-<div class="sws-slide">
-  <h1>Sessions PHP: détails d'implantation</h1>
-  <div class="twocol">
-    <div><em>Coté client</em><br/>
-<br/>
-<br/>
-<br/>
-<br/>
-<br/>
-<br/>
-<br/>
-<br/>
-<br/>
-Connexion à une page PHP (envoie du cookie ("php_ssid", "12345"))
-
-
-    </div>
-    <div><em>Coté serveur (PHP)</em><br/>
-      <tt>session_start();</tt><br/>
-      - génération d'un ID unique "12345"<br/>
-      - dépot d'un cookie "php_ssid", valeur "12345", durée 10 minutes
-      - création dans un tableau global d'une entrée:<br/>
-        <tt>$_GLOBAL["12345"] = Array();</tt><br/>
-       <br/>
-       <tt>$_SESSION = $_GLOBAL[$_COOKIE["php_ssid"]]</tt>
-    </div>
-  </div>
-</div>
-
-<div class="sws-slide">
-  <h1>Dans la vraie Vie<sup>TM</sup></h1>
-  <p>Mélange de variables de sessions, cookies et bases de données.<br/>
-    Scénario réaliste: site de commerce en ligne
-  </p>
-  <ul>
-    <li>Login/mot de passe stocké dans
-      une <em style="color:blue;">BD</em> </li>
-    <li>Panier courant stocké dans une <em>variable de
-       session</em></li>
-    <li>Login, date de dernière visite, dernière page visitée stockés
-      dans un <em style="color:orange">en cookie</em></li>
-    </ul>
-  <p class="sws-pause">Pourquoi ?</p>
-  <ul>
-    <li><em style="color:blue;">BD</em>: information persistante,
-      côté serveur (mais la mise à jour, récupération de l'info est
-      coûteuse (en temps))
-    </li>
-    <li><em>Variables de sessions</em> : le panier n'a pas forcément
-      besoin d'être conservé entre deux sessions, mais on ne veut pas
-      que le client puisse fabriquer un panier frauduleux
-    </li>
-    <li><em style="color:orange">Cookie</em> : persistante à faible
-    coût (stocké sur le client), ce n'est pas grave si les
-    informations sont perdues ou corrompues
-    </li>
-  </ul>
-
-  </div>
-  </body>
-
-</html>
diff --git a/unix_prog_web/unix_prog_web_08.xhtml b/unix_prog_web/unix_prog_web_08.xhtml
deleted file mode 100644 (file)
index 76dda71..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>Formulaires</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-2.0.3.min.js" type="text/javascript" ></script>
-    <script src="../libs/raphael-min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-         a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-  </head>
-  <body>
-    <a href="unix_prog_web_07.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>Unix et Programmation Web</h1>
-      <h1>Cours 8</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>
-
-    <h1>Formulaires (utilisation avancée)</h1>
-    <div class="sws-slide">
-      <h1>Champs de texte</h1>
-      <p>On peut placer un champ de texte dans un formulaire au moyen
-      de la balise <em><tt>&lt;input type="text"
-      /&gt;</tt></em>.
-      </p>
-      <code><![CDATA[   <input size="10" name="montexte" type="text" value="abc" />]]></code>
-      <p>Apperçu: <input size="10" name="montexte" type="text"
-      value="abc"/><br/><br/>
-       Attributs:
-      </p>
-      <ul>
-       <li>size: donne la largeur en caractères</li>
-       <li>name: le nom de l'élément (pour y accéder depuis PHP)</li>
-       <li>value: la valeur initiale du champ (si on veut le pré-remplir)</li>
-      </ul>
-      <p>Accès à la valeur depuis PHP se fait
-      via <tt>$_GET["montexte"]</tt> ou <tt>$_POST["montexte"]</tt>
-      selon la valeur de l'attribut <tt>method</tt> de
-      l'élément <tt>form</tt> englobant.</p>
-
-    </div>
-
-    <div class="sws-slide">
-      <h1>Champs de texte long</h1>
-      <p>Pour des textes multilignes, on utilise la
-      balise <em><tt>&lt;textarea /&gt;</tt></em>.
-      </p>
-      <code><![CDATA[   <textarea name="montexte" rows="3" cols="10">du texte!</textarea>
-]]></code>
-      <p>Apperçu:  <textarea name="montexte" rows="3" cols="10">du texte!</textarea>
-       Attributs:
-      </p>
-      <ul>
-       <li>rows: donne le nombre de lignes</li>
-       <li>cols: donne le nombre de colonnes (largeur en nombre de caractères)</li>
-       <li>name: le nom de l'élément (pour y accéder depuis PHP)</li>
-      </ul>
-      <p>On peut pré-remplir la zone en mettant du texte entre la
-      balise ouvrante et fermante.
-       Accès à la valeur depuis PHP se fait
-      via <tt>$_GET["montexte"]</tt> ou <tt>$_POST["montexte"]</tt>
-      selon la valeur de l'attribut <tt>method</tt> de
-      l'élément <tt>form</tt> englobant.</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Listes déroulantes</h1>
-      <p>On peut définir une liste déroulante avec les
-      balises <tt>&lt;select&gt;</tt> et <tt>&lt;option&gt;</tt></p>
-<code><![CDATA[
- <select name="maliste">
-   <option value="bleu"  >Bleu</option>
-   <option value="vert"  >Vert</option>
-   <option value="rouge"  >Rouge</option>
-   <option value="jaune" selected="selected" >Jaune</option>
- </select>
-]]></code>
-<p> Apperçu:  <select name="maliste">
-   <option value="bleu"  >Bleu</option>
-   <option value="vert"  >Vert</option>
-   <option value="rouge"  >Rouge</option>
-   <option value="jaune" selected="selected" >Jaune</option>
- </select>
-       Attributs:
-      </p>
-      <ul>
-       <li>name (dans select): le nom de l'élément (pour y accéder
-       depuis PHP)</li>
-       <li>value (dans option): donne la valeur du choix</li>
-       <li>checked (dans option): pré-selectionne cette option</li>
-      </ul>
-      <p>Le contenu de chaque élément option est celui affiché dans la
-      liste.
-       Accès à la valeur depuis PHP se fait
-      via <tt>$_GET["maliste"]</tt> ou <tt>$_POST["maliste"]</tt>
-      selon la valeur de l'attribut <tt>method</tt> de
-      l'élément <tt>form</tt> englobant.</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Boutons à choix unique</h1>
-      <p>On peut définir un choix avec la balise
- <tt>&lt;input type="radio"&gt;</tt></p>
-<code><![CDATA[
-   8h<input type="radio" name="h" value="matin"/>
-   12h<input type="radio" name="h" value="midi"/>
-   20h<input type="radio" name="h" value="soir"/>
-]]>
-</code>
-<p>Apperçu : 8h<input type="radio" name="h" value="matin"/>
-12h<input type="radio" name="h" value="midi"/>
-20h<input type="radio" name="h" value="soir"/>
-</p>
-      <p>
-       Accès à la valeur depuis PHP se fait
-      via <tt>$_GET["h"]</tt> ou <tt>$_POST["h"]</tt>
-      selon la valeur de l'attribut <tt>method</tt> de
-      l'élément <tt>form</tt> englobant.<br/>
-       <s>Attention</s> il faut réutiliser la même valeur de
-       l'attribut <tt>name</tt> pour les boutons du même groupe.
-
-</p>
-</div>
-    <div class="sws-slide">
-      <h1>Cases à choix multiples</h1>
-      <p>On peut définir des cases à cocher à choix multiple avec la balise
- <tt>&lt;input type="radio"&gt;</tt></p>
-<code><![CDATA[
-   8h<input type="checkbox" name="tab[]" value="matin"/>
-   12h<input type="checkbox" name="tab[]" value="midi"/>
-   20h<input type="checkbox" name="tab[]" value="soir"/>
-]]>
-</code>
-<p>Apperçu:
-  8h<input type="checkbox" name="tab[]" value="matin"/>
-  12h<input type="checkbox" name="tab[]" value="midi"/>
-  20h<input type="checkbox" name="tab[]" value="soir"/>
-</p>
-      <p>
-       Accès à la valeur depuis PHP se fait
-      via <tt>$_GET["tab"]</tt> ou <tt>$_POST["tab"]</tt>
-      selon la valeur de l'attribut <tt>method</tt> de
-      l'élément <tt>form</tt> englobant.<br/>
-       <s>Attention</s> il faut rajouter <tt>[]</tt> dans l'attribut <tt>name</tt> pour
-       que PHP crée un tableau. <tt>tab[<i>i</i>]</tt> contient la
-       valeur de la <i>i<sup>ème</sup></i> cases cochée (à partir de 0).
-
-</p>
-</div>
-<h1>Variables super-globales (rappels)</h1>
-<div class="sws-slide">
-  <h1>Variables super-globales</h1>
-  <p>PHP définit un certain nombre de variables dites
-  «&nbsp;super-globales&nbsp;». Ce sont des variables accessible
-  depuis n'importe où dans un programme PHP, y compris depuis des
-  fonctions, sans adjonction du mot clé <tt>global</tt>.</p>
-  <code>
-   $TOTO = 42;
-   function f() {
-   global $TOTO;   // obligatoire, sinon $TOTO n'est pas visible
-
-   echo $TOTO;
-   echo $_GET["champ"];  //fonctionne toujours, même sans 'global'
-                         //au début de la fonction.
-
-   }
-
-  </code>
-</div>
-<div class="sws-slide">
-<h1>Variable <tt>$_GET</tt> et <tt>$_POST</tt></h1>
-<p>
-  Ces variables contiennent les valeurs des champs d'un formulaire.
-  Si l'attribut <tt>method</tt> de l'élément <tt>form</tt>
-  vaut <tt>get</tt> la variable <tt>$_GET</tt> contient les valeurs.
-  S'il vaut <tt>post</tt> la variable <tt>$_POST</tt> est à utiliser.
-</p>
-</div>
-<div class="sws-slide">
-<h1>Variable <tt>$_FILES</tt></h1>
-<p>
-  Cette variable contient les informations relatives aux fichiers
-  envoyés par le client.<br/>Si le nom du champ est <tt>fichier</tt>,
-  alors:
-
-</p>
-<dl>
-    <dt><tt>$_FILES["fichier"]["error"]</tt></dt> <dd>Code d'erreur
-    (0 si tout c'est bien passé, <tt>></tt> 0 si une erreur s'est produite. Les
-    autres champs ne sont définis que si "error" vaut 0).
-    </dd>
-    <dt><tt>$_FILES["fichier"]["tmp_name"]</tt></dt><dd>Nom du fichier
-    temporaire sur le serveur où a été sauvegardé le contenu du
-    fichier envoyé</dd>
-    <dt><tt>$_FILES["fichier"]["name"]</tt></dt><dd>Nom original du fichier</dd>
-    <dt><tt>$_FILES["fichier"]["size"]</tt></dt><dd>Taille du
-    fichier</dd>
-    <dt><tt>$_FILES["fichier"]["type"]</tt></dt><dd>Le type MIME du fichier</dd>
-  </dl>
-</div>
-<div class="sws-slide">
-<h1>Variable <tt>$_SESSION</tt></h1>
-<p>Contient les <em>variables de sessions</em>. La variable n'est
-  accessible qu'après un appel à <tt>session_start()</tt>. Ces
-  le contenu de cette variable persiste durant toute la durée de la
-  session même sur des pages différentes. La
-  variable <tt>$_SESSION</tt> est un tableau.
-</p>
-</div>
-
-<div class="sws-slide">
-<h1>Variable <tt>$_COOKIE</tt></h1>
-<p>Contient les <em>cookies</em> que le client à envoyé au serveur.
-  La
-  variable <tt>$_COOKIE</tt> est un tableau.
-</p>
-</div>
-<h1>Conception d'une application simple (étude de cas)</h1>
-<div class="sws-slide">
-  <h1>Cahier des charges</h1>
-  <p>On souhaite créer une application Web simple de gestion de QCM.
-    L'application doit répondre au contraintes suivantes :
-  </p>
-  <ul>
-    <li>Un QCM est un ensemble de questions, suivies d'une liste de
-    choix. Il peut y avoir plusieurs choix possible. La réponse à la
-    question est correcte si uniquement les bons choix sont
-    sélectionnés.</li>
-    <li>Un QCM doit être facilement modifiable/éditable</li>
-    <li>Après la réponse à la dernière question, le score de
-      l'utilisateur est affiché, ainsi que les bonnes réponses</li>
-    <li>Il y a un temps limite par question</li>
-  </ul>
-</div>
-<div class="sws-slide">
-<h1>But du jeu</h1>
-<p>Nous allons concevoir, le plus précisément possible l'application
-  (prenez des notes) :
-</p>
-
-  <ul>
-    <li>Rafiner le cahier des charges</li>
-    <li>Prévoir plusieurs scénarios d'utilisation</li>
-    <li>Concevoir l'application (données, interface grapique,
-    code)</li>
-    <li>Tester/vérifier la robustesse</li>
-  </ul>
-<p>Vous devrez écrire le code correspondant en TP</p>
-</div>
-  </body>
-
-
-
-</html>
diff --git a/unix_prog_web/unix_prog_web_09.xhtml b/unix_prog_web/unix_prog_web_09.xhtml
deleted file mode 100644 (file)
index c5267ae..0000000
+++ /dev/null
@@ -1,564 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>Notions de sécurité sur le Web</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-2.0.3.min.js" type="text/javascript" ></script>
-    <script src="../libs/raphael-min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-         a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-  </head>
-  <body>
-    <a href="unix_prog_web_08.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>Unix et Programmation Web</h1>
-      <h1>Cours 9</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>
-
-    <h1>Faiblesses d'HTTP</h1>
-
-    <div class="sws-slide">
-      <h1><i>Disclaimer</i></h1>
-      <ul>
-       <li>Aborde juste quelques aspects de sécurité</li>
-       <li>Essaye de montrer quelques principes fondamentaux</li>
-       <li>Uniquement axé sur le Web</li>
-      </ul>
-      <p><b>&#8658;</b> Ça ne va pas faire de vous des <i>hackers</i>,
-      juste vous sensibiliser aux problèmes de sécurité…
-      </p>
-    </div>
-
-    <div class="sws-slide">
-      <h1>Élements de cryptographie (1)</h1>
-      <p>Alice et Bob veulent échanger des données
-      confidentielles.</p>
-      <ol style="list-style-type:none;">
-       <li>1.&nbsp;Chiffrement <s>symétrique</s>:
-         <ul>
-           <li>
-             Ils se mettent d'accord sur une <em>clé commune</em>
-           </li>
-           <li> Alice <em>chiffre</em> son message avec la clé et
-             l'envoie à Bob</li>
-           <li> Bob déchiffre le message avec <em>la clé</em>
-           </li>
-         </ul>
-         <p class="sws-pause">
-         <s>Non sûr</s> (Alice et Bob doivent se mettre d'accord sur une clé en
-         « clair », par email par exemple) ou <s>non pratique</s>
-         (ils doivent se rencontrer physiquement pour échanger la
-         clé).<br/>
-         <em>Efficace</em>: on peut implanter plusieurs algorithmes
-         de chiffrements en utilisant uniquement des opérations
-         logiques de bases
-         (<tt>AND</tt>, <tt>OR</tt>, <tt>XOR</tt>). Il est facile de
-         les implanter sur des puces dédiées (cartes de crédit,
-         processeurs mobiles). Ils sont « sûrs » tant que la clé
-         reste secrète.
-         </p>
-       </li>
-      </ol>
-    </div>
-    <div class="sws-slide">
-      <h1>Élements de cryptographie (2)</h1>
-      <p>Alice et Bob veulent échanger des données
-      confidentielles.</p>
-      <ol style="list-style-type:none;">
-       <li>2.&nbsp; Chiffrement <em>assymétrique</em>:
-         <ul>
-           <li>Bob crée une <em>clé
-           publique</em> <i>K<sup>B</sup><sub>pub</sub></i>
-             et une <em style="color:orange;">clé
-           secrète</em> <i>K<sup>B</sup><sub>priv</sub></i>, telle
-           que<div style="text-align:center">
-               &#8704;<i>msg</i>, <i>K<sup>B</sup><sub>priv</sub></i>(<i>K<sup>B</sup><sub>pub</sub></i>(<i>msg</i>))
-           = <i>K<sup>B</sup><sub>pub</sub></i>(<i>K<sup>B</sup><sub>priv</sub></i>(<i>msg</i>))
-           = <i>msg</i>
-             </div>
-             Bob <em>diffuse</em> sa clé publique (sur sa page Web
-             par exemple, ou dans un annuaire de clé) et garde sa clé
-             privée <em style="color:orange;">secrète</em>.
-           </li>
-           <li> Alice <em>chiffre</em> son message <i><s>m</s></i> avec la <em>clé
-             publique</em> de Bob
-             (<i>K<sup>B</sup><sub>pub</sub></i>(<i>m</i>)) et l'envoie à Bob
-           </li>
-           <li> Bob
-           déchiffre le message avec sa clé
-           privée: <i>K<sup>B</sup><sub>priv</sub>(K<sup>B</sup><sub>pub</sub></i>(<i>m</i>))=<s><i>m</i></s>
-           </li>
-         </ul>
-         <p class="sws-pause">
-         <s>Sûr et pratique</s> (Bob a généré une paire de clé, et a
-         déposé la clé publique sur une page Web)<br/>
-         <em>Peu efficace</em>: repose sur des problèmes
-         mathématiques difficiles (factorisation de grands entiers,
-         courbes eliptiques sur les corps finis). Chiffrer et
-         déchiffrer un message n'est pas réaliste pour des grands
-         messages (vidéo en streaming, requêtes Web, …).
-         </p>
-       </li>
-      </ol>
-    </div>
-    <div class="sws-slide">
-      <h1>Élements de cryptographie (3)</h1>
-      <p>On combine les deux méthodes. (Alice envoie un message à Bob)</p>
-      <ul>
-       <li>Alice choisit une <s>clé symétrique secrète <i>s</i></s></li>
-       <li>Elle l'envoie à Bob en utilisant la clé publique de ce
-       dernier (<i>K<sup>B</sup><sub>pub</sub></i>(<i>s</i>))
-       </li>
-       <li>Bob décrypte le message et
-         obtient <s><i>s</i></s>=<i>K<sup>B</sup><sub>priv</sub>(K<sup>B</sup><sub>pub</sub></i>(<i>s</i>))
-       </li>
-       <li>Bob et Alice se sont mis d'accord <em>de manière sûre</em>
-         sur une clé commune <s>s</s>! Ils peuvent utiliser un
-         algorithme de chiffrement symétrique pour le reste de la
-         conversation
-       </li>
-      </ul>
-      <p><b>&#8658;</b> Ceci est à la base de protocoles tels que HTTPS</p>
-    </div>
-
-    <div class="sws-slide">
-      <h1>Éléments de cryptographie (4)</h1>
-      <p>Le chiffrement assymétrique permet aussi d'avoir <em>la
-         preuve</em> que quelqu'un est bien Bob!</p>
-      <ul>
-       <li>Alice choisit un message secret aléatoire <i><s>m</s></i>,
-         sans le divulguer (appelé <i>challenge</i>)
-       </li>
-       <li>Alice
-         calcule <i>K<sup>B</sup><sub>pub</sub>(<i>s</i>)</i> et
-         l'envoie à la personne qui prétend être Bob
-       </li>
-       <li>Seule la personne qui possède la clé privée de Bob (donc
-         Bob …) peut déchiffrer le message et renvoyer l'original à
-         Alice.
-       </li>
-      </ul>
-      <p> <b>&#8658;</b> Comment garantir que la personne qui a généré
-       les clés <s>au départ</s> est bien Bob ?
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>Une analogie</h1>
-      <p>La cryptographie assymétrique fonctionne exactement comme
-      l'analogie de la boîte aux
-      lettres. Pourquoi ?
-      </p>
-      <ul class="sws-pause">
-       <li>La clé publique est la boîte aux lettres</li>
-       <li>La clé privée est la clé de la boîte aux lettres</li>
-       <li>Tout le monde peut «crypter» un message en le glissant
-       dans ma boîte aux lettres</li>
-       <li>Une fois le message crypté (<i>i.e.</i> dans la boîte) il
-       est difficile de le récupérer sans avoir la clé</li>
-       <li>Il est facile pour moi d'ouvrir la boîte avec ma clé</li>
-      </ul>
-
-    </div>
-    <div class="sws-slide">
-      <h1>HTTP: protocole texte « en clair »</h1>
-      <p>HTTP est un protocole <em>texte</em>, les données ne sont
-      pas chiffrées (cf. TP3) et <em>sans identification</em></p>
-    <ul>
-      <li><em>Confidentialité</em> : n'importe qui (avec les
-       privilèges nécessaires) peut lire ce qui transite entre un client
-       et un serveur Web</li>
-      <li><em>Authenticité</em> : n'importe qui peut se faire passer
-       pour un serveur Web (attaque <i>man in the middle</i>)
-      </li>
-    </ul>
-  </div>
-    <div class="sws-slide">
-     <h1>Espionnage de connexion</h1>
-     <p>Alice représente le client, Bob le serveur et Eve (<i>Eavesdropper</i>)
-     l'attaquante</p>
-     <p>On suppose que <s>Eve</s> est <s>root</s> sur la
-     machine. Il suffit de lire les paquets qui transitent par la
-     carte réseau (<tt>tcpdump</tt> sous Linux).
-     </p>
-     <ul><li>Eve et Alice sont sur la même machine (démo):
-        <div style="text-align:center;vertical-align:middle;"><br/>
-          <span style="border:1pt solid gray;border-radius:
-          5pt;padding:5pt;font-size:larger;">A &nbsp;
-          &nbsp; <s>E</s></span><span style="display:inline-block;height:1ex;width:5em;border-width:1pt
-          0 0 0;border-style:solid; border-color:gray"> </span><span style="border:1pt solid gray;border-radius:
-          5pt;padding:5pt;font-size:larger;">B</span>
-
-        </div>
-       </li>
-       <li>Fonctionne aussi si Eve est sur une machine se trouvant
-       sur la route entre Alice et Bob:
-        <div style="text-align:center;vertical-align:middle;"><br/>
-          <span style="border:1pt solid gray;border-radius:
-          5pt;padding:5pt;font-size:larger;">A</span><span style="display:inline-block;height:1ex;width:5em;border-width:1pt
-          0 0 0;border-style:solid; border-color:gray"> </span><span style="border:1pt solid gray;border-radius:
-          5pt;padding:5pt;font-size:larger;"><s>E</s></span><span style="display:inline-block;height:1ex;width:5em;border-width:1pt
-          0 0 0;border-style:solid; border-color:gray"> </span><span style="border:1pt solid gray;border-radius:
-          5pt;padding:5pt;font-size:larger;">B</span>
-
-        </div>
-       </li>
-     </ul>
-     <p>Ce problème touche tous les protocoles en clair: HTTP, POP,
-     IMAP, FTP, …. Il peut être résolu grace au <em>chiffrement</em>
-     de toute la connexion.</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Attaque <i>Man in the middle</i></h1>
-      <p><s>Mallory</s> se place entre Alice (cliente) et Bob (banque), par exemple au
-       moyen d'un <em>e-mail</em> frauduleux en HTML:</p>
-       <ol> <li> L'émail contient:
-         <code><![CDATA[  <html>
-   <body>
-       Bonjour,
-          veuillez vous connecter à votre banque en cliquant ici:
-           <a href=']]><s>mallory.com</s>' &gt;<em>www.bob.com</em><![CDATA[</a>
-    </body>
-</html>]]></code>
-         </li>
-         <li>Alice, insouciante, clique sur le lien
-                <div style="text-align:center;vertical-align:middle;"><br/>
-          <span style="border:1pt solid gray;border-radius:
-          5pt;padding:5pt;font-size:larger;">A</span><span style="display:inline-block;height:1ex;width:5em;border-width:1pt
-          0 0 0;border-style:dashed; border-color:gray"> </span><span style="border:1pt solid gray;border-radius:
-          5pt;padding:5pt;font-size:larger;"><s>M</s></span><span style="display:inline-block;height:1ex;width:5em;border-width:1pt
-          0 0 0;border-style:dashed; border-color:gray"> </span><span style="border:1pt solid gray;border-radius:
-          5pt;padding:5pt;font-size:larger;">B</span>
-        </div>
-         </li>
-         <li>Mallory peut retransmettre les requêtes entre Bob et
-           Alice, en les modifiant au passage. Le problème est causé
-           par un manque d'authentification (Mallory n'a pas a
-           <em>prouver</em> à Alice qu'il est Bob)
-         </li>
-</ol>
-    </div>
-    <div class="sws-slide">
-      <h1>Solution: HTTPS</h1>
-      <p>HTTP <em>Secure</em></p>
-      <ol> <li>Respose sur de la cryptographie assymétrique (pour
-      l'authentification et le partage de clé) et symétrique (pour le
-      chiffrement de connexion)</li>
-       <li>Permet d'authentifier les correspondants et de protéger
-       les données
-       </li>
-       <li>Suppose l'existence de <em>tiers de confiance</em> Alice
-       et Bob font confiance à Trent (<i>Trusted Third
-       Party</i>)</li>
-      </ol>
-      <p>Bob possède des clés publiques et privées
-      (<i>K<sup>B</sup><sub>pub</sub></i>
-      et <i>K<sup>B</sup><sub>priv</sub></i>), Trent possède des clés
-      publiques et privées (<i>K<sup>T</sup><sub>pub</sub></i>
-      et <i>K<sup>T</sup><sub>priv</sub></i>)
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>HTTPS (détail du protocole)</h1>
-      <p>Bob et Trent <em>se rencontrent</em>. Trent <em>signe</em>
-       la clé publique de Bob en calculant
-       <div style="text-align:center">
-          <i>S<sup>B</sup></i>=<i>K<sup>T</sup><sub>priv</sub></i>(<i>K<sup>B</sup><sub>pub</sub></i>)
-       </div>
-       Comme Trent utilise sa clé <em>privée</em> on sait que seul
-       Trent a pu générer cette signature. De plus, Trent
-       a <em>rencontré</em> Bob donc il <em>certifie</em> que la
-       clé <i>K<sup>B</sup><sub>pub</sub></i> appartient bien à
-       quelqu'un nommé Bob.
-      </p>
-      <ol>
-       <li>Alice (client) veut se connecter à Bob. Bob fournit  sa
-       clé publique <i>K<sup>B</sup><sub>pub</sub></i> et la
-       signature <i>S<sup>B</sup></i></li>
-       <li> Alice contacte Trent (en qui elle a confiance) et récupère sa clé
-         publique <i>K<sup>T</sup><sub>pub</sub></i>. Elle déchiffre la
-         signature: <i>K<sup>T</sup><sub>pub</sub></i>(<i>S<sup>B</sup></i>)
-         et vérifie qu'elle retombe bien sur la clé publique de Bob.
-       </li>
-       <li>Elle peut alors choisir une clé symétrique, la chiffrer
-       avec <i>K<sup>B</sup><sub>pub</sub></i> et entammer une
-       communication <em>chiffrée</em> et <em>authentifiée</em> avec
-       Bob.</li>
-      </ol>
-</div>
-    <div class="sws-slide">
-      <h1>Tiers de confiance</h1>
-      <p>Les tiers de confiance sont des entités (états, associations,
-      compagnies privées) qui se chargent de vérifier les clés
-       publiques d'autres entitées. C'est une
-      vérification <em>physique</em> (documents administratifs, …).
-      </p>
-      <div style="text-align:center"><img style="width:70%" src="ssl-cert.png" alt="ssl"/>
-      </div>
-      <p style="background:white">Cette erreur s'affiche quand une signature n'est pas conforme
-      ou n'a pas pu être vérifiée</p>
-    </div>
-
-    <div class="sws-slide">
-      <h1>Tiers de confiance</h1>
-      <p>Attaques contre les <em>authorités de certifications</em>
-       (tiers de confiance): difficiles, mais pas impossible. Certains
-       tiers de confiance sont douteux (états voyous, compagnie
-       piratées dont les clées <s>privées</s> sont compromises,…)<br/>
-       <s>Attaques d'implémentation</s> (plus probables) : on
-       exploite un <s>bug</s> dans le code des serveurs web ou des
-       navigateurs<br/>
-       <s>Autres faiblesses</s>: HTTPS est en « haut » dans la pile
-       IP (application). On peut donc avoir connaissance du nombre de
-       paquet échangés, des adresses IP des participants, la taille
-       et la fréquence des paquets… (même si on n'en connait pas le
-       contenu). Cela permet certaines attaques statistiques ou de deni
-       de service (DoS).
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>Bug dans HTTPS: <i>Heartblead</i></h1>
-      <p><i>Heartblead</i> est un bug découvert en 2014 dans la
-       bibliothèque OpenSSL (Bibliothèque qui implémente toutes les
-       primitives cryptographiques de bas niveau nécessaire à HTTPS,
-       entre-autres, et utilisée par tout le monde). Cette attaque
-       touche la partie <i>heartbeat</i> du
-       protocole. Le <i>heartbeat</i> est un message périodique
-       envoyé par le client au serveur pour lui demander si la
-       connexion/session est toujours active (ou pour lui signaler de
-       ne pas la fermer).
-      </p>
-      <ul>
-       <li class="sws-pause">Serveur, es-tu vivant ? si oui répond 'Bonjour' (6
-       lettres)</li>
-       <li class="sws-pause">Bonjour</li>
-       <li class="sws-pause">Serveur, es-tu vivant ? si oui répond
-       'Je suis là' (10 lettres)</li>
-       <li class="sws-pause">Je suis là</li>
-       <li class="sws-pause">Serveur, es-tu vivant ? si oui répond
-       'Oui' (1024 lettres)</li>
-       <li class="sws-pause">Oui<span class="sws-pause"
-       style="color:gray;"><tt>....Serveur, je suis l'admin, modifie le
-       mot de passe à '1023hasd834!' ... Tiens, autre client, je
-       t'envoie la page que tu m'as demandée ... &lt;html&gt;&lt;body ....</tt></span></li>
-      </ul>
-    </div>
-    <h1>Confidentialité, traîtement des <i>cookies</i></h1>
-    <div class="sws-slide">
-      <h1>Traçage par cookies</h1>
-      <p><i>Normalement</i>, un <em>cookie</em> ne peut être
-      lu <em>que</em> que par le site émetteur (cf. cours 8). But:</p>
-      <ol class="sws-pause">
-       <li>Empêcher un tiers de lire des données personnelles
-       (<em>ok</em>)</li>
-       <li>Empêcher un tiers de savoir quels sites ont été visités
-       (<em>pas ok</em>)</li>
-      </ol>
-      <ol>
-       <li class="sws-pause">Un site B utilise des publicités pour se rémunérer. Le
-       site marchand <s>M</s> fournit du code HTML:
-         <code>   &lt;script src="http://marchand.com/pub.js"/&gt; </code>
-       </li>
-       <li class="sws-pause">A visite le site B. Le
-         code <tt>pub.js</tt> peut alors faire les choses suivantes:
-         <ol>
-           <li>Scanner le contenu de la page de B. Possible car le
-             script est « inclus »  dans une page fournie par B</li>
-           <li>Se connecter
-             à<s><tt>http://marchand.com/collecte.php</tt></s> et
-             passer en paramètre <tt>post</tt> ou <tt>get</tt> le
-             contenu de la récolte</li>
-           <li><tt>http://marchand.com</tt> peut alors stocker un
-             cookie valide <em>pour son domaine</em> avec le contenu de
-             la récolte d'information
-           </li>
-         </ol>
-       </li>
-       <li class="sws-pause">
-         Lorsque A visite le site marchand <s>M</s>, ce dernier
-         relit son cookie et fait des propositions ciblées.
-       </li>
-
-      </ol>
-    </div>
-    <div class="sws-slide">
-      <h1>Solutions</h1>
-      <ul>
-       <li>Désactiver les cookies de « tierce partie » (cookie dont
-         l'origine n'est pas celle de la page visitée)
-       </li>
-       <li> Effacer par défaut tous les cookies quand on quite le
-         navigateur</li>
-       <li>Rajouter des exceptions pour certains sites au cas par cas
-       </li>
-      </ul>
-      <p>Nouveau standard du W3C en préparation pour signifier à un
-       site qu'on ne souhaite pas être suivi (méthode « volontariste
-       » qui suppose que les sites commerciaux sont gentils et
-       respectent le protocole)</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Sécurité des cookies de session</h1>
-      <p>On a vu que les sessions PHP (vrai aussi pour les autres
-      langages côté serveur) stockent dans un cookie un identifiant
-      unique. Que se passe-t-il si on vole ce cookie ? (démo)
-      </p>
-      <p class="sws-pause">Pas d'autre solution que de faire confiance
-      au <s>root</s> (solutions partielles basées sur le chiffrement
-      des disques dur)
-      </p>
-    </div>
-    <h1>Attaques par injection de code</h1>
-    <div class="sws-slide">
-      <h1>Injection de code Javascript/HTML</h1>
-      <p>Vulnérabilité: on exploite le fait qu'un site <s>utilise
-         directement</s> les entrées fournies par l'utilisateur.<br/>
-       Exemple: commentaires sur un blog.
-      </p>
-      <ol>
-       <li>Une page Web utilise un formulaire pour permettre de
-       poster des commentaires sur un blog:
-         <code><![CDATA[
-   <form action="comment.php" method="post">
-     Commentaire: <br/>
-     ]]><em>&lt;textarea rows="20" cols="60"  name="zonetexte"/&gt;</em><![CDATA[
-    <br/>
-    <button type="submit">Envoyer</button>
-</form>]]></code>
-         </li>
-       <li>Un bout de code PHP écrit le commentaire sur la page:
-         <code>    echo "Commentaire #$i: &lt;p&gt;";
-     <s>echo $_POST["zonetexte"];</s>
-     echo "&lt;/p&gt;";
-</code>
-</li>
-
-
-      </ol>
-    </div>
-    <div class="sws-slide">
-      <h1>Injection de code Javascript/HTML</h1>
-      <s>Problème</s> tout ce qui est dans la zone de texte est copié
-      dans la page HTML de chaque client qui consulte la page
-      et <s>interprété</s> par son navigateur:
-      <code>Debut du commentaire
-       <s>&lt;script type="text/javascript"&gt;</s>
-         ... //code javascript malicieux
-       <s>&lt;/script&gt;</s>
-       Fin du commentaire
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>Injection de code PHP</h1>
-      <p><s>Problème</s> lié à l'utilisation de la fonction
-       <code>                    <s>eval</s>($code)</code>
-       <tt><em>$code</em></tt> est une chaîne de caractères
-       considérée comme étant du code PHP et <tt>eval</tt> exécute
-       cette chaîne:
-      </p>
-      <code>
-       echo eval ("1 + 2 * 3");  // affiche 7
-       echo eval ('$x = 4;');    // définit la variable $x
-       echo $x;                  // affiche 4
-      </code>
-      <p>Il ne faut <s>jamais donner une chaine de caractère de
-      l'utilisateur comme argument à <tt>eval</tt></s> (sauf durant le
-       TP 9)</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Solutions</h1>
-      <ul>
-       <li>Ne jamais <s>utiliser <tt>eval</tt></s></li>
-       <li>Utiliser la fonction <tt>htmlspecialchars</tt> qui
-       échappe les
-       caractères <tt>&lt;</tt>,  <tt>&gt;</tt>,  <tt>&amp;</tt>, <tt>&apos;</tt>,  <tt>&quot;</tt></li>
-       <li>Utiliser la fonction <tt>striptags</tt> qui supprime tout
-       ce qui est une balise</li>
-       <li>Toujours valider les entrées d'un utilisateur</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Injection de code SHELL (en PHP)</h1>
-      <p><s>Problème</s> lié à l'utilisation de la fonction
-       <code>                    <s>exec</s>($command, &amp;$output)</code>
-       Cette fonction exécute dans un SHELL la
-       commande <tt>$command</tt>. Les lignes de la sortie standard
-       de la commande sont placées dans le table <tt>$output</tt>
-       passé en référence. (Démo avec <tt>unzip -l</tt>).<br/>
-       Solutions:
-      </p>
-      <ul>
-       <li>Ne jamais passer à exec directement une chaîne crée par
-       l'utilisateur</li>
-       <li>Recréer sois-même la chaîne de caractères, échapper les
-       caractères spéciaux et remettre le tout dans une chaîne pour
-       éviter les expansions du SHELL</li>
-       <li>Utiliser des fonctions de la bibliothèque standar quand
-       elle existes (par exemple <tt>rename</tt> plutot
-       que <tt>exec('mv ...')</tt>).</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Injection de code SQL</h1>
-      <p>SQL: language de requête permettant d'interroger des bases de
-       données. Utilisation classique depuis PHP (on suppose un
-       formulaire qui met dans le champ <tt>"nom"</tt> le nom d'un
-       étudiant):
-      </p>
-      <code>
-       $Q = <em>"SELECT * FROM STUDENTS WHERE "</em>;
-       $Q = $Q . <em>"(NAME = '"</em> . $_POST["nom"] . <em>"');"</em>;
-       mysql_query($Q);
-       </code>
-      <p>Si l'utilisateur donne comme nom « Toto », la requête envoyée
-      à la base est: </p>
-      <code>     SELECT * FROM STUDENTS WHERE (NAME = 'Toto');</code>
-      <p>Affiche toutes les lignes de la table <tt>STUDENTS</tt> pour
-      lesquel le nom est <tt>Toto</tt></p>
-    </div>
-    <div class="sws-slide">
-      <h1>Jusqu'au jour où …</h1>
-      <p>©xkcd<br/>
-       <img style="width:90%" src="xkcd.png" alt=""/>
-      </p>
-      <code>          <em>SELECT * FROM STUDENTS WHERE (NAME ='</em><s>Robert');</s>
-          <s>DROP TABLE STUDENTS; --</s><em>');'</em>
-
-    </code>
-    </div>
-    <div class="sws-slide">
-      <h1>Ou bien…</h1>
-      <div style="text-align:center;">
-      <img style="width:70%" src="radar.jpg" />
-      </div>
-    </div>
-  </body>
-</html>
diff --git a/unix_prog_web/xkcd.png b/unix_prog_web/xkcd.png
deleted file mode 100644 (file)
index 530ddc0..0000000
Binary files a/unix_prog_web/xkcd.png and /dev/null differ
diff --git a/xpi/factory_pattern_uml_diagram.jpg b/xpi/factory_pattern_uml_diagram.jpg
deleted file mode 100644 (file)
index 5a7602d..0000000
Binary files a/xpi/factory_pattern_uml_diagram.jpg and /dev/null differ
diff --git a/xpi/pdf/xpi_01.pdf b/xpi/pdf/xpi_01.pdf
deleted file mode 100644 (file)
index fb5b7b1..0000000
Binary files a/xpi/pdf/xpi_01.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_01_print.pdf b/xpi/pdf/xpi_01_print.pdf
deleted file mode 100644 (file)
index ed95e89..0000000
Binary files a/xpi/pdf/xpi_01_print.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_02.pdf b/xpi/pdf/xpi_02.pdf
deleted file mode 100644 (file)
index 70fd9da..0000000
Binary files a/xpi/pdf/xpi_02.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_02_print.pdf b/xpi/pdf/xpi_02_print.pdf
deleted file mode 100644 (file)
index f7d6679..0000000
Binary files a/xpi/pdf/xpi_02_print.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_03.pdf b/xpi/pdf/xpi_03.pdf
deleted file mode 100644 (file)
index 5584f20..0000000
Binary files a/xpi/pdf/xpi_03.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_03_print.pdf b/xpi/pdf/xpi_03_print.pdf
deleted file mode 100644 (file)
index 8886900..0000000
Binary files a/xpi/pdf/xpi_03_print.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_04.pdf b/xpi/pdf/xpi_04.pdf
deleted file mode 100644 (file)
index e9ee460..0000000
Binary files a/xpi/pdf/xpi_04.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_04_print.pdf b/xpi/pdf/xpi_04_print.pdf
deleted file mode 100644 (file)
index 3f23392..0000000
Binary files a/xpi/pdf/xpi_04_print.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_05.pdf b/xpi/pdf/xpi_05.pdf
deleted file mode 100644 (file)
index 1465aea..0000000
Binary files a/xpi/pdf/xpi_05.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_05_print.pdf b/xpi/pdf/xpi_05_print.pdf
deleted file mode 100644 (file)
index 3763801..0000000
Binary files a/xpi/pdf/xpi_05_print.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_06.pdf b/xpi/pdf/xpi_06.pdf
deleted file mode 100644 (file)
index b53af97..0000000
Binary files a/xpi/pdf/xpi_06.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_06_print.pdf b/xpi/pdf/xpi_06_print.pdf
deleted file mode 100644 (file)
index f8530db..0000000
Binary files a/xpi/pdf/xpi_06_print.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_07.pdf b/xpi/pdf/xpi_07.pdf
deleted file mode 100644 (file)
index dfb5ea8..0000000
Binary files a/xpi/pdf/xpi_07.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_07_print.pdf b/xpi/pdf/xpi_07_print.pdf
deleted file mode 100644 (file)
index 444a427..0000000
Binary files a/xpi/pdf/xpi_07_print.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_08.pdf b/xpi/pdf/xpi_08.pdf
deleted file mode 100644 (file)
index 9b2289c..0000000
Binary files a/xpi/pdf/xpi_08.pdf and /dev/null differ
diff --git a/xpi/pdf/xpi_08_print.pdf b/xpi/pdf/xpi_08_print.pdf
deleted file mode 100644 (file)
index 071f142..0000000
Binary files a/xpi/pdf/xpi_08_print.pdf and /dev/null differ
diff --git a/xpi/recette.xml b/xpi/recette.xml
deleted file mode 100644 (file)
index ed5590f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<recette difficulte="facile">
-<title>Tiramisú</title>
-<ingredients>
-  <ingredient>mascarpone</ingredient>
-  <ingredient>oeufs</ingredient>
-  <ingredient>sucre</ingredient>
-  <ingredient>café</ingredient>
-  <ingredient>biscuits</ingredient>
-</ingredients>
-<duree>2h</duree>
-<etapes>
-  <e num="1">Séparer les blancs des jaunes</e>
-  <e num="2">…</e>
-  …
-</etapes>
-</recette>
diff --git a/xpi/test.xsl b/xpi/test.xsl
deleted file mode 100644 (file)
index 33f0db0..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<xsl:stylesheet version="1.0"
-   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-   <xsl:template match="/">
-     <html>
-       <head>
-        <title>Foo</title>
-       </head>
-       <body>
-        <xsl:variable name="nombalise">
-          <xsl:choose>
-            <xsl:when test="count(descendant::ingredient) mod 2 = 0">b</xsl:when>
-            <xsl:otherwise>i</xsl:otherwise>
-          </xsl:choose>
-        </xsl:variable>
-         <xsl:element name="{$nombalise}">
-          Gras
-        </xsl:element>
-       </body>
-     </html>
-   </xsl:template>
-</xsl:stylesheet>
diff --git a/xpi/tree.svg b/xpi/tree.svg
deleted file mode 100644 (file)
index 2a22beb..0000000
+++ /dev/null
@@ -1,468 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.1"
-   viewBox="-10 -10 934.30447 1320.5428"
-   id="svg2"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="tree.svg"
-   width="1044cm"
-   height="1330cm">
-  <metadata
-     id="metadata40">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1317"
-     inkscape:window-height="744"
-     id="namedview38"
-     showgrid="true"
-     inkscape:zoom="0.70710678"
-     inkscape:cx="475.31215"
-     inkscape:cy="445.37894"
-     inkscape:window-x="49"
-     inkscape:window-y="24"
-     inkscape:window-maximized="1"
-     inkscape:current-layer="svg2"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     units="cm">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3052"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="true"
-       originx="-15.123041px"
-       originy="1285.6658px" />
-  </sodipodi:namedview>
-  <defs
-     id="defs4" />
-  <g
-     id="g3054"
-     transform="matrix(3.776905,0,0,3.776905,27.769048,27.769503)">
-    <path
-       sodipodi:nodetypes="cc"
-       d="m 129.87695,39.876949 -80,15"
-       id="p1"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       inkscape:connector-curvature="0" />
-    <path
-       sodipodi:nodetypes="cc"
-       d="m 129.87695,39.876949 75,15"
-       id="p2"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       inkscape:connector-curvature="0" />
-    <path
-       d="M -0.12304184,94.876944 49.876959,54.876952 l -30,39.999992"
-       id="path3007"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       inkscape:connector-curvature="0" />
-    <path
-       d="m 39.876959,94.876944 10,-39.999992 10,39.999992"
-       id="path3009"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       inkscape:connector-curvature="0" />
-    <path
-       d="m 79.876959,94.876944 -30,-39.999992 49.999998,39.999992"
-       id="path3011"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       inkscape:connector-curvature="0" />
-    <path
-       d="m 174.87695,94.876944 30,-39.999995 -10,39.999995"
-       id="path3013"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       inkscape:connector-curvature="0" />
-    <path
-       d="m 214.87695,94.876944 -10,-39.999995 30,39.999995"
-       id="path3015"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       inkscape:connector-curvature="0" />
-    <text
-       class="bibliography"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="166.55959"
-       y="34.876949"
-       id="text3017"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="129.87697"
-         y="34.876949"
-         id="tspan3019">bibliography</tspan></text>
-    <text
-       class="book"
-       style="font-size:12px;text-align:end;text-anchor:end"
-       x="72.990227"
-       y="54.876957"
-       id="text3017-6"
-       xml:space="preserve"><tspan
-         style="text-align:end;text-anchor:end"
-         x="44.876949"
-         y="54.876957"
-         id="tspan3019-6">book</tspan></text>
-    <text
-       style="font-size:12px"
-       class="book"
-       x="204.87695"
-       y="54.876957"
-       id="text3017-7"
-       xml:space="preserve"><tspan
-         x="204.87695"
-         y="54.876957"
-         id="tspan3019-8">book</tspan></text>
-    <text
-       class="title"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-98.626953"
-       y="-0.12304688"
-       transform="matrix(0,-1,1,0,0,0)"
-       id="text3017-6-5"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-109.87695"
-         y="-0.12304688"
-         id="tspan3019-6-2">title</tspan></text>
-    <text
-       class="author"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-95.450188"
-       y="19.876953"
-       transform="matrix(0,-1,1,0,0,0)"
-       id="text3072"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-114.87695"
-         y="19.876953"
-         id="tspan3074">author</tspan></text>
-    <text
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-95.450188"
-       y="59.876949"
-       transform="matrix(0,-1,1,0,0,0)"
-       class="author"
-       id="text3072-2"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-114.87695"
-         y="59.876949"
-         id="tspan3074-8">author</tspan></text>
-    <text
-       class="year"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-96.667"
-       y="99.876945"
-       transform="matrix(0,-1,1,0,0,0)"
-       id="text3072-2-8"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-109.87695"
-         y="99.876945"
-         id="tspan3074-8-2">year</tspan></text>
-    <text
-       class="publisher"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-92.572273"
-       y="79.876945"
-       transform="matrix(0,-1,1,0,0,0)"
-       id="text3072-2-5"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-119.87695"
-         y="79.876945"
-         id="tspan3074-8-5">publisher</tspan></text>
-    <text
-       class="title"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-98.626953"
-       y="174.87695"
-       transform="matrix(0,-1,1,0,0,0)"
-       id="text3017-6-5-6"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-109.87695"
-         y="174.87695"
-         id="tspan3019-6-2-2">title</tspan></text>
-    <text
-       class="author"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-95.450188"
-       y="194.87695"
-       transform="matrix(0,-1,1,0,0,0)"
-       id="text3072-1"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-114.87695"
-         y="194.87695"
-         id="tspan3074-61">author</tspan></text>
-    <text
-       class="year"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-96.667"
-       y="234.87695"
-       transform="matrix(0,-1,1,0,0,0)"
-       id="text3072-2-8-1"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-109.87695"
-         y="234.87695"
-         id="tspan3074-8-2-6">year</tspan></text>
-    <text
-       class="publisher"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-97.572273"
-       y="214.87695"
-       transform="matrix(0,-1,1,0,0,0)"
-       id="text3072-2-5-9"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-124.87695"
-         y="214.87695"
-         id="tspan3074-8-5-9">publisher</tspan></text>
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3018"
-       y="-0.12304688"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="-0.12304688"
-         x="-159.87695"
-         id="tspan3020"
-         sodipodi:role="line">&quot;Foundations of Databases&quot;</tspan><tspan
-         id="tspan3022"
-         y="16.126953"
-         x="-159.87695"
-         sodipodi:role="line" /></text>
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3024"
-       y="19.876953"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="19.876953"
-         x="-159.87695"
-         id="tspan3026"
-         sodipodi:role="line">&quot;Abiteboul&quot;</tspan></text>
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3028"
-       y="39.876949"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="39.876949"
-         x="-159.87695"
-         id="tspan3030"
-         sodipodi:role="line">&quot;Hull&quot;</tspan></text>
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3032"
-       y="59.876949"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="59.876949"
-         x="-159.87695"
-         id="tspan3034"
-         sodipodi:role="line">&quot;Vianu&quot;</tspan></text>
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3036"
-       y="79.876945"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="79.876945"
-         x="-159.87695"
-         id="tspan3038"
-         sodipodi:role="line">&quot;Addison Wesley&quot;</tspan></text>
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3040"
-       y="99.876945"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="99.876945"
-         x="-159.87695"
-         id="tspan3042"
-         sodipodi:role="line">&quot;1995&quot;</tspan></text>
-    <flowRoot
-       transform="translate(-7.7098237,-16.029665)"
-       style="font-size:13px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       id="flowRoot3044"
-       xml:space="preserve"><flowRegion
-         id="flowRegion3046"><rect
-           y="198.9726"
-           x="-96.57534"
-           height="293.8356"
-           width="365.75342"
-           id="rect3048" /></flowRegion><flowPara
-         id="flowPara3050" /></flowRoot>    <path
-       inkscape:connector-curvature="0"
-       id="path3054"
-       d="m -2.7098242,128.97032 0,30"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path3056"
-       d="m 17.290177,138.97032 0,20"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path3058"
-       d="m 37.290177,138.97032 0,20"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       sodipodi:nodetypes="cc"
-       inkscape:connector-curvature="0"
-       id="path3060"
-       d="m 57.290177,138.97032 0,20"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path3062"
-       d="m 77.290177,153.97032 0,5"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path3064"
-       d="m 97.290177,128.97032 0,30"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3018-7"
-       y="174.87695"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="174.87695"
-         x="-159.87695"
-         id="tspan3020-5"
-         sodipodi:role="line">&quot;The Lord of the Rings&quot;</tspan><tspan
-         id="tspan3022-7"
-         y="191.12695"
-         x="-159.87695"
-         sodipodi:role="line" /></text>
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3024-9"
-       y="194.87695"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="194.87695"
-         x="-159.87695"
-         id="tspan3026-6"
-         sodipodi:role="line">&quot;J. R. R. Tolkien&quot;</tspan></text>
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3036-4"
-       y="214.87695"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="214.87695"
-         x="-159.87695"
-         id="tspan3038-0"
-         sodipodi:role="line">&quot;Houghton Mifflin&quot;</tspan></text>
-    <text
-       transform="matrix(0,-1,1,0,0,0)"
-       sodipodi:linespacing="125%"
-       id="text3040-1"
-       y="234.87695"
-       x="-159.87695"
-       style="font-size:13px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-       xml:space="preserve"><tspan
-         y="234.87695"
-         x="-159.87695"
-         id="tspan3042-2"
-         sodipodi:role="line">&quot;2001&quot;</tspan></text>
-    <path
-       inkscape:connector-curvature="0"
-       id="path3054-9"
-       d="m 172.29017,128.97032 0,30"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path3056-2"
-       d="m 192.29017,138.97032 0,20"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path3062-6"
-       d="m 212.29017,153.97032 0,5"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path3064-8"
-       d="m 232.29017,128.97032 0,30"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <text
-       class="document"
-       sodipodi:linespacing="125%"
-       id="text3199"
-       y="-0.1230491"
-       x="129.87697"
-       style="font-size:13px;font-style:normal;font-weight: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:Sans"
-       xml:space="preserve"><tspan
-         y="-0.1230491"
-         x="129.87697"
-         id="tspan3201"
-         sodipodi:role="line">#document</tspan></text>
-    <path
-       inkscape:connector-curvature="0"
-       id="path3203"
-       d="m 129.87695,4.8769496 0,20.0000004"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <text
-       class="author"
-       style="font-size:12px;text-align:center;text-anchor:middle"
-       x="-95.450188"
-       y="39.876949"
-       transform="matrix(0,-1,1,0,0,0)"
-       id="text3072-2-0"
-       xml:space="preserve"><tspan
-         style="text-align:center;text-anchor:middle"
-         x="-114.87695"
-         y="39.876949"
-         id="tspan3074-8-4">author</tspan></text>
-  </g>
-</svg>
diff --git a/xpi/xpi_01.xhtml b/xpi/xpi_01.xhtml
deleted file mode 100644 (file)
index 0ca0c8a..0000000
+++ /dev/null
@@ -1,506 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>Introduction, UTF-8 et XML</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-      a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-
-    <script type="text/javascript">
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(SWS.Presentation.init);
-    </script>
-
-  </head>
-  <body>
-    <a href="" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>XML et Programmation Internet</h1>
-      <h1>Cours 1</h1>
-      <a href="mailto:kn@lri.fr">kn@lri.fr</a>
-    </div>
-
-    <div class="sws-slide" >
-      <h1>Contenu du cours</h1>
-      <ol >
-        <li >XML pour la représentation des données
-          <ul>
-            <li>Motivation, présentation d'XML sérialisé (cours 1) </li>
-            <li>Notions de schémas et de validation (cours 1) </li>
-          </ul>
-        </li>
-        <li class="sws-pause" style="padding:20pt 0;" > Interroger des
-        documents XML
-        <ul>
-          <li>XPath (cours 2-3)</li>
-          <li>XSLT (cours 3-4)</li>
-        </ul>
-        </li>
-        <li class="sws-pause" style="padding:20pt 0;" > Programmer
-        avec XML
-        <ul>
-          <li>Les modèles DOM et SAX (cours 5)</li>
-          <li>XML Avancé: encodage relationnel (cours 6)</li>
-        </ul>
-        </li>
-
-      </ol>
-
-    </div>
-    <div class="sws-slide" >
-      <h1>Modalités de Contrôle des Connaissances (MCC)</h1>
-      <p>2 sessions:</p>
-      <ul >
-        <li > 1<sup>ère</sup> session
-          <ul>
-            <li> Contrôle continu (33%): Projet (soutenances fin janvier)
-            </li>
-            <li> Examen écrit (67%) </li>
-          </ul>
-        </li>
-        <li class="sws-pause" >
-          2<sup>ème</sup> session (examen 100%)</li>
-      </ul>
-      <p>Organisation:</p>
-      <ul>
-        <li> 8 séances de cours</li>
-       <li> 8 séances de TD (sur machine)</li>
-      </ul>
-    </div>
-    <h1>Introduction</h1>
-    <div class="sws-slide" >
-      <h1>Qu'est-ce qu'XML ?</h1>
-      <p>XML (eXtensible Markup Language) est un standard de
-      représentation de données</p>
-      <ul>
-       <li>Conçu pour être lisible par un humain, mais traîtable
-       simplement par les machines</li>
-       <li>Permet la représentation de données structurées</li>
-       <li>Est <em>normalisé</em> (par le W3C)</li>
-       <li>Typé (notion de schéma très fine)</li>
-      </ul>
-    </div>
-    <div class="sws-slide" >
-      <h1>En a-t-on besoin ?</h1>
-      <p>Quels sont les autres moyen de représenter les données ?</p>
-      <ul>
-       <li class="sws-pause">Table relationnelle</li>
-       <li class="sws-pause">Fichiers textes non structurés</li>
-       <li class="sws-pause">Format binaires <i>ad-hoc</i></li>
-      </ul>
-      <p class="sws-pause">Quels sont les désavantages des
-      représentations ci-dessus ?</p>
-      <ul>
-       <li class="sws-pause">Non échangeable (il faut faire
-       un <i>dump</i> de la base), contraintes simples</li>
-       <li class="sws-pause">Lisible, mais sans structure donc
-       difficilement utilisable par un programme, pas de schéma</li>
-       <li class="sws-pause">Lié à une utilisation particulière</li>
-      </ul>
-
-    </div>
-
-
-    <div class="sws-slide">
-      <h1>Historique</h1>
-      <ul>
-       <li>Fin des années 1980: SGML adopté pour la publication de
-       média</li>
-       <li>Milieu des années 1990: un groupe de travail commence à
-       étudier l'utilisation de SGML pour le Web (qui débutait)
-         </li>
-       <li>1998 : XML 1.0 devient une recommandation du W3C</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Exemples d'utilisation</h1>
-      <ul>
-       <li>Page Web (XHTML)</li>
-       <li>Flux RSS (atom)</li>
-       <li>Voix sur IP/Messagerie instantanée (SMIL/Jabber)</li>
-       <li>Images vectorielles (SVG)</li>
-       <li>Données biologiques (séquençages)</li>
-       <li>Données financières et bancaires (XBRL)</li>
-       <li>Document bureautiques (OpenDocument Format, Office
-       2010)</li>
-       <li>Données linguistiques (TreeBank)</li>
-      </ul>
-
-    </div>
-    <h1>Le standard UTF-8</h1>
-    <div class="sws-slide">
-      <h1>Représentation des textes</h1>
-      <p>Avant de représenter des documents complexes, on s'intéresse
-      aux textes (sans structure particulière)</p>
-      <p class="sws-pause">Problématique: comment représenter du texte
-      réaliste ?</p>
-      <p>Exemple de texte réaliste:<br/>
-       <tt>&quot;</tt> و عليكم السلام,Здравей,¡Hola!, 你好,Góðan daginn,…
-       <tt>&quot;</tt>
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>Historiquement…</h1>
-      <p>Encodage 1 caractère = 1 octet (8 bits) : </p>
-      <ul><li>Encodage ASCII sur 7 bits (128 caractères)</li>
-       <li>ASCII étendu 8 bits (256 caractères, dont 128 de «
-       symboles »</li>
-       <li>Latin 1 : ASCII 7 bits + 128 caractères « ouest-européens »
-       (lettres accentuées française, italienne, …)</li>
-       <li>Latin 2 : ASCII 7 bits + 128 caractères « est-européens »
-       (Serbe, Hongrois, Croate, Tchèque, …)</li>
-       <li>Latin 3 : ASCII 7 bits + 128 caractères turques, maltais,
-       esperanto, </li>
-       <li>Latin 4 : ASCII 7 bits + 128 caractères islandais,
-       lituanien, …</li>
-       <li class="sws-pause"> … </li>
-       <li >Latin 15 : Latin 1 avec 4 caractères « inutiles »
-       remplacés (par exemple pour « € » à la place de « ¤ »)</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>… et pendant ce temps là, ailleur dans le monde </h1>
-      <p>Encodage multi-octets:</p>
-      <ul>
-       <li>Encodages spécifiques pour le Chinois (Big5, GB, …)</li>
-       <li>Encodages spécifiques pour le Japonais (Shift-JIS, EUC, …)</li>
-      </ul>
-      <p>Impossibilité de mettre plusieurs « alphabets » dans un même
-      texte</p>
-      <p>Chaque logiciel « interprétait » les séquences d'octet de
-      manière prédéfinie</p>
-    </div>
-    <div class="sws-slide">
-      <h1>UTF-8</h1>
-      <p>Universal (Character Set) Transformation Format 8 bit</p>
-      <ul><li>Encodage à taille variable « universel » (contient tous
-      les alphabets connus)</li>
-       <li>Un organisme (ISO) donne un code à chaque symbole</li>
-       <li>Compatible avec ASCII 7 bits</li>
-      </ul>
-      <p>Encodage</p>
-      <table class="withborder" style="position:relative;left:8%;">
-       <tr ><td>Nombre d'octets</td><td>Octet 1</td><td>Octet
-       2</td><td>Octet 3</td><td>Octet 4</td><td>Octet 5</td><td>Octet 6</td></tr>
-       <tr ><td>1</td><td><tt>0xxxxxxx</tt></td><td></td><td></td><td></td><td></td><td></td></tr>
-
-       <tr ><td>2</td><td><tt>110xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td></td><td></td><td></td><td></td></tr>
-       <tr ><td>3</td><td><tt>1110xxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td></td><td></td><td></td></tr>
-       <tr ><td>4</td><td><tt>11110xxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td></td><td></td></tr>
-
-       <tr ><td>5</td><td><tt>111110xxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td></td></tr>
-       <tr ><td>6</td><td><tt>1111110xx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td><td><tt>10xxxxxx</tt></td></tr>
-
-      </table>
-    </div>
-    <div class="sws-slide">
-      <h1>Exemples</h1>
-      <p><tt style="font-size:200%">A</tt> &nbsp;&#10230;&nbsp; 65<sub>10</sub>
-      &nbsp;&#10230;&nbsp; 0100 1010<sub>2</sub> (représenté sur un
-      seul octet)</p>
-
-      <p><tt style="font-size:200%">ễ</tt> &nbsp;&#10230;&nbsp; 7877<sub>10</sub>
-      &nbsp;&#10230;&nbsp; 0001 1110 1100 0101<sub>2</sub> (représenté
-       3 octets) : <br/>
-       <s>1110</s><em>0001</em>&nbsp;<s>10</s><em>11 10
-       11</em>&nbsp;<s>10</s><em>00 0101</em>≡ 225 187 133
-</p>
-      <p><tt style="font-size:200%">&#x1f435;</tt>
-      &nbsp;&#10230;&nbsp; 128053<sub>10</sub> &nbsp;&#10230;&nbsp; …
-      ≡ 240 237 220 181</p>
-      <p>Avantages</p>
-      <ul><li>compatible ASCII 7 bits (d'anciens documents texte en
-      anglais sont toujours lisibles)</li>
-       <li>pas d'espace gaspillé (à l'inverse d'UTF-32 ou tous les
-       caractères font 32 bits)</li>
-      </ul>
-      <p>Inconvénients</p>
-      <ul>
-       <li>Caractères à taille variable: il faut parcourir le texte
-       pour trouver le n<sup>ème</sup> caractère</li>
-       <li>Les vieux logiciels doivent être adaptés</li>
-      </ul>
-    </div>
-    <h1>XML</h1>
-    <div class="sws-slide">
-    <h1>Qu'est-ce qu'un document XML ? (1)</h1>
-    <ul>
-      <li>C'est un fichier texte, encodé par défaut en UTF-8</li>
-      <li>Le texte peut être <em>structuré</em> au moyen
-      de <em>balises</em></li>
-      <li>Une balise est de la forme <tt>&lt;foo&gt;</tt> (ouvrante)
-      ou <tt>&lt;/foo&gt;</tt> (fermante)</li>
-      <li>Les balises doivent être bien parenthésées</li>
-      <li>Il doit y avoir une racine « englobant » tout le contenu du
-      document (texte et autres balises). On appelle cette balise la
-      <em>racine</em></li>
-      <li>Les balises sont <em>sensibles à la casse</em></li>
-      <li><tt>&lt;foo/&gt;</tt> est un raccourcis pour <tt>&lt;foo&gt;</tt><tt>&lt;/foo&gt;</tt></li>
-    </ul>
-    <p>Exemple</p>
-    <code style="position:relative;left:10%;color:black;"><![CDATA[<exemple>
-   ceci est la racine <balise>on peut</balise> y mettre des
-   balises <level><level>imbriquées</level> </level> comme
-   on veut si
-   elles sont <FOO>bien</FOO> parenthésées
-</exemple>]]>
-    </code>
-      </div>
-    <div class="sws-slide">
-    <h1>Qu'est-ce qu'un document XML ? (2)</h1>
-    <ul>
-      <li>On peut mettre des espaces et des commentaires en dehors de
-      la racine</li>
-      <li>Les commentaires sont délimités par <s><tt style="">&lt;!--</tt></s> et <s><tt>--&gt;</tt></s></li>
-      <li>On peut annoter les balises ouvrantes avec
-      des <em>attributs</em> de la forme <tt>att</tt>=<tt>&quot;v&quot;</tt> (on
-      peut aussi utiliser « &apos; » pour délimiter les chaînes)</li>
-      <li>Au sein d'un même élément (ou balise) on ne peut pas avoir
-      deux fois un attribut <em>avec le même nom</em></li>
-      <li>On dispose de <em>séquences d'échappement</em>: &amp;lt; pour &lt;,
-      &amp;gt; pour &gt;, &amp;apos; pour &apos;,  &amp;quot; pour
-      &quot;,  &amp;amp; pour &amp; et &amp;<tt>nnnn</tt>; pour un caractère
-      UTF-8 dont le code décimal est <tt>nnnn</tt>.</li>
-      </ul>
-    <p>Exemple</p>
-    <code style="position:relative;left:10%;color:black;">&lt;<![CDATA[-- commentaire en début de fichier-->
-<exemple id="1">
-     Un autre <balise id="2" type="texte">exemple</balise>
-</exemple>]]>
-    </code>
-
-</div>
-    <div class="sws-slide">
-      <h1>Exemple complet (trouver toutes les erreurs)</h1>
-<code style="position:relative;left:10%;color:black;"><![CDATA[
-<exemple id="1">
-
-  On se donne cette fois un <FOO>exemple</Foo> complet, mais
-
-  <balise>incorrect. En effet, il y a
-
-    <note id="32" val='32'>plusieurs</note> erreurs dans
-
-    <note id="42" id="51">dans ce document</note>.
-
-    Il n'est pas simple de toutes les trouver
-
-</exemple>
-<exemple>En plus cet exemple est en deux parties</exemple>
-]]></code>
-    </div>
-    <div class="sws-slide">
-      <h1>Utilisations d'XML (1)</h1>
-      <ul>
-       <li>Les noms de balise sont <em>libres</em>. La personne qui
-       conçoit le document choisit les balises</li>
-       <li>Un document XML est une manière de représenter
-       un <em>arbre</em> (l'élement racine est la racine de
-       l'arbre)</li>
-      </ul>
-      <p>Un bon exemple est XHTML (XML pour les pages Web)</p>
-      <ul>
-       <li>La structure des documents (titres, sections, paragraphes,
-       tableaux) est donnée par les balises
-       </li>
-       <li>Le rendu graphique ne fait pas partie de la structure du
-       document et est donné par un moyen annexe (feuille de style
-       CSS par exemple)</li>
-      </ul>
-      <p>Autre exemple: les flux RSS de mises à jour d'un blog</p>
-      <ul>
-       <li><a href="https://blog.wikimedia.org/feed/">Lien vers le
-       blog wikimedia</a></li>
-       <li>XML est un exellent format <em> d'échange </em></li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Utilisation d'XML (2)</h1>
-      <ul>
-       <li>Le format texte est un mauvais format pour
-       l'interrogation</li>
-       <li>Il encode un arbre mais ne permet pas de le manipuler
-       directement</li>
-      </ul>
-      <p>En réalité, on ne manipule pratiquement jamais de XML tel que stocké
-      sur le disque </p>
-      <ul>
-       <li>On peut charger un document XML sous la forme d'un arbre
-       (Objet Java par exemple) dans lequel on peut naviguer</li>
-       <li>Certaines bases de données permettent de stocker des
-       fichiers XML dans des colones (comme un VARCHAR)</li>
-      </ul>
-      <p>Une application moderne mélange BD relationnelle et XML (et
-      aussi d'autres choses si besoin: JSON, YAML, …)</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Étude de cas: journal en ligne</h1>
-      <p>On se pose dans le cas du site internet d'un journal en
-      ligne</p>
-      <ul>
-       <li>Le site a des utilisateurs enregistrés (ainsi qu'un accès
-       invité)</li>
-       <li>Le site propose des articles en lecture sur le site</li>
-       <li>Le site permet d'exporter des articles en PDF pour
-       impression</li>
-       <li>Le site permet la lecture sur smartphone/tablette</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Une solution possible</h1>
-      <ul><li>On stocke les articles comme des fichiers XML avec une
-      syntaxe particulière:
-<code style="font-size:80%;position:relative;left:10%;color:black;"><![CDATA[<article>
-  <category>Science</category>
-  <title>A new planet discovered</title>
-  <date>2014/09/09</date>
-  <authors>
-    <name><first>Jonh</first><last>Doe</last></name>
-    <name><first>Someone</first><last>Else</last></name>
-  </authors>
-  <content>
-    <bold>A new plange</bold> has been discovered …
-  </content>
-</article>]]>
-</code>
-       </li>
-<li>Une <em>BD relationelle</em> stocke les données dynamiques (utilisateurs, …)</li>
-<li>Un <em>programme</em> (Java ou PHP) applique une transformation (XSLT) pour
-  transformer les articles XML en pages XHTML</li>
-<li>Le programme utilise la BD pour  personaliser l'affichage</li>
-<li style="background:white;">Le programme applique une autre transformation pour transformer
-  les articles en PDF plutot que XHTML</li>
-<li style="background:white;">Le programme transforme l'article en un
-  XML RSS pour affichage dans un lecteur de blog</li>
-</ul>
-    </div>
-    <h1>Validation de documents</h1>
-    <div class="sws-slide">
-      <h1>Schéma d'un document</h1>
-      <p>Comme tout le monde peut définir son propre format XML, on
-      veut pouvoir être sûr que des <em>données en entrées</em> d'un
-      programme ont un certain
-      format (par exemple, c'est du XHTML valide, sans balise inconnue
-      des navigateurs)
-      </p>
-      <p>Il existe plusieurs manières de contraindre les balises d'un
-      document XML. On s'intéresse dans le cours à la plus simple.
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>DTD</h1>
-      <p>Document Type Definitions. Permet de définir le contenu d'un
-      document par des expressions régulières</p>
-      <p>Syntaxe particulière qui n'est pas du XML</p>
-      <p>Permet de définir:</p>
-      <ul><li>les <em>balises autorisées dans un document</em></li>
-       <li>le contenu des balises au moyen d'expressions
-       régulières</li>
-       <li>les <em>attributs d'un élément</em></li>
-       <li>le type des <em>valeurs </em> que peut prendre un
-       attribut</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Syntaxe des DTD</h1>
-      <p>Un fichier contenant une suite de directives de la forme suivantes:</p>
-      <ul><li><tt>&lt;!ELEMENT <em>nom_elem</em> <em>regexp_elem</em>&gt;</tt>
-      dit qu'un élement de nom <tt><em>nom_elem</em></tt> contient
-      des éléments décrits par l'expression
-      régulière <tt><em>regexp_elem</em></tt></li>
-      <li><tt>&lt;!ATTLIST <em>nom_elem</em> <em>nom_att</em> <em>type_att</em> <em>val_att</em>&gt;</tt><br/>
-signifie que l'élément (balise) <tt><em>nom_elem</em></tt>
-       a un attribut <em>nom_att</em>, dont le type
-       est <tt><em>type_att</em></tt> et la valeur
-       est <tt><em>val_att</em></tt></li>
-       <li>Les <em>expressions régulières</em> sont formées
-       de <tt>*</tt>, <tt>+</tt>,<tt>?</tt>, mise en séquence
-       (<tt>,</tt>), <tt>EMPTY</tt> (contenu vide), <tt>ANY</tt>
-       (n'importe quel contenu), <tt>#PCDATA</tt> (du texte)</li>
-       <li>Les <em>types d'attributs</em> sont <tt>ID</tt> (attribut unique
-       dans tous le document ≡ clé primaire), <tt>IDREF</tt> (fait
-       référence à un ID unique ≡ clé étrangère), <tt>CDATA</tt>(du
-       texte simple), <tt>v1|v2|…|vn</tt> (une liste de valeurs fixées)
-       </li>
-       <li>Les <em>valeurs d'attributs</em> sont: <tt>v</tt> (une valeur par
-       défaut si l'attribut est absent), <tt>#REQUIRED</tt>
-       (l'attribut est obligatoire), <tt>#IMPLIED</tt> (l'attribut
-       est optionnel), <tt>#FIXED v</tt> (valeur constante v)</li>
-</ul>
-
-    </div>
-    <div class="sws-slide">
-      <h1>Exemple de DTD</h1>
-<code style="color:black;position:relative;left:10%;"><![CDATA[<!ELEMENT recette (title,ingredients,duree,etapes)>
-<!ATTLIST recette difficulte (facile|normal|difficile) #REQUIRED>
-<!ELEMENT title #PCDATA >
-<!ELEMENT ingredients (ingredient+) >
-<!ELEMENT duree #PCDATA >
-<!ELEMENT etapes (e*) >
-<!ELEMENT ingredient #PCDATA>
-<!ELEMENT e #PCDATA>
-<!ATTLIST e num CDATA>
-]]></code>
-<p>Question: quel est la taille minimale d'un document valide ?</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Utilisation d'une DTD (1)</h1>
-      <p>Il suffit de référencer la DTD dans un élément
-      spécial <br/><tt>&lt;!DOCTYPE racine SYSTEM "fichier.dtd" &gt;</tt><br/> avant la racine du
-      document</p>
-<code style="color:black;position:relative;left:10%;"><![CDATA[
-<!DOCTYPE recette SYSTEM "recette.dtd">
-<recette difficulte="facile">
-<title>Tiramisú</title>
-<ingredients>
-  <ingredient>mascarpone</ingredient>
-  <ingredient>oeufs</ingredient>
-  …
-</ingredients>
-<duree>2h</duree>
-<etapes>
-  <e num="1">Séparer les blancs des jaunes</e>
-  <e num="2">…</e>
-  …
-</etapes>
-</recette>
-]]></code>
-    </div>
-    <div class="sws-slide">
-      <h1>Utilisation d'une DTD (2)</h1>
-      <ul>
-       <li>Les bibliothèques permettant de charger des fichiers XML
-       vérifient qu'il est bien formé (parenthésages, attributs, …)
-       </li>
-       <li>Elles peuvent aussi <em>valider</em> le document par
-       rapport à une DTD</li>
-       <li>Si le fichier est invalide, elles lèvent une erreur</li>
-       <li>C'est une forme de vérification de contraintes
-       d'intégrité</li>
-      </ul>
-    </div>
-  </body>
-</html>
diff --git a/xpi/xpi_02.xhtml b/xpi/xpi_02.xhtml
deleted file mode 100644 (file)
index ce4fa3d..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>XPath</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-      a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-    <style type="text/css">
-      .xml-tag { color: #00486c; }
-      
-    </style>
-    <script type="text/javascript">
-      <![CDATA[
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(function () {
-       $(".inline-xml").each(function(i, elem)
-      {
-      var jelem = $(elem);
-      var code = jelem.html();
-      code = code.replace ("<![CDATA" + "[", "").replace ("]" + "]>", "");
-      code = code.replace (/>/g, ">>>");
-      code = code.replace (/</g, "<span class='xml-tag'>&lt;");
-      code = code.replace (/>>>/g,"&gt;</span>");
-
-      jelem.html(code);
-      });
-  });
-
-      var checkSVG = function (o, i)
-      {
-            if (i >= 10 || SWS.Utils.isUndefined(o) || o == null) return;
-            var svg = o.getSVGDocument();
-            if (svg == null) {
-              setTimeout(function() { checkSVG(o, i+1); }, 200);
-            } else {
-         var alltext = $(svg).find("text");
-         alltext.css("font-family", "DIN");
-         alltext.css("font-size", "70%");
-
-            };
-      };
-      $(window).load(function() {
-      $("embed").ready(function() {
-         setTimeout(function() { 
-         $("embed").each(function(i, o) { checkSVG(this,0);   });
-}, 1000);
-        });
-     });
-      $(window).load(SWS.Presentation.init);
-
-       ]]>
-
-    </script>
-
-  </head>
-  <body>
-    <a href="xpi_01.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>XML et Programmation Internet</h1>
-      <h1>Cours 2</h1>
-      <a href="mailto:kn@lri.fr">kn@lri.fr</a>
-    </div>
-
-    <h1>Modèle d'arbre</h1>
-<div class="sws-slide">
-
-<h1>XML vu comme un arbre (1/2)</h1>
-<ul>
-<li>Tout ce qui apparait dans le document correspond à un nœud de
-  l'arbre (texte, balises, commentaires, blanc, …)</li>
-<li>Il existe en plus, un nœud fictif se trouvant au dessus de
-  l'élément racine, le <a>nœud document</a></li>
-<li>Un couple balise ouvrante/balise fermante correspond à <a>un seul
-    nœud</a>
-<li>Les principaux types de nœuds sont: élément, attribut, texte,
-  commentaire, document</li>
-</li>
-</ul>
-
-</div>
-    <div class="sws-slide">
-      <h1>XML vu comme un arbre (2/2)</h1>
-      <p>Un document XML peut être vu comme un arbre:</p>
-      <code class="inline-xml" style="font-size:80%;width:50%;position:relative;float:left;"><![CDATA[<bibliography>
-
-  <book>
-    <title>Foundations of Databases</title>
-    <author>Abiteboul</author>
-    <author>Hull</author>
-    <author>Vianu</author>
-    <publisher>Addison Wesley</publisher>
-    <year>1995</year>
-  </book>
-
-  <book>
-    <title>The Lord of the Rings</title>
-    <author>J. R. R. Tolkien</author>
-    <publisher>Houghton Mifflin</publisher>
-    <year>2001</year>
-  </book>
-
-</bibliography>]]></code>
-      <embed src="tree.svg" style="width: 10cm; height: 13cm;" />
-    </div>
-<div class="sws-slide">
-  <h1>Sérialisation d'un arbre sous forme de document</h1>
-  <p class="sws-pause">Étant donné un arbre, comment peut ont produire
-  le document XML correspondant ?</p>
-  <code>       //pseudo-code
-      void print(Node n)
-      {
-         if (n is text or comment) { output_text(n) }
-         else {
-                output_text ("&lt;" + tag(n) + "&gt;");
-                for k in children(n)
-                    print(k);
-                output_text ("&lt;/" + tag(n) + "&gt;");
-         }
- </code>
- <ul style="background:white;">
-   <li>On effectue un parcours en profondeur d'abord </li>
-   <li>Si le nœud courant est une feuille, on l'affiche</li>
-   <li>Sinon on affiche la balise ouvrante, puis récursivement tous
-   les fils, puis la balise fermante</li>
- </ul>
-</div>
-<div class="sws-slide">
-<h1>Ordre du document, parcours préfixe</h1>
-<p>On appelle <a>ordre du document</a> un ordre <a>total</a> sur les
-  nœuds d'un document qui correspond à leur ordre dans un fichier
-  sérialisé. Il correspond aussi à la numérotation lors du parcours
-  préfixe</p>
-<ol style="float:left; width:50%">
-<li>#document</li>
-<li>bibliography</li>
-<li>book</li>
-<li>title</li>
-<li>"Foundations of Databases"</li>
-<li>author</li>
-<li>"Abiteboul"</li>
-<li>author</li>
-<li>"Hull"</li>
-<li>author</li>
-<li>"Vianu"</li>
-</ol>
-      <embed src="tree.svg" style="width: 10cm; height: 13cm;" />
-
-</div>
-<div class="sws-slide">
-<h1>Construction d'un arbre à partir d'un fichier XML ?</h1>
-<p class="sws-slide">Pour simplifier on suppose un fichier sans texte, uniquement avec
-  des balises ouvrantes/fermantes</p>
-<code>
- type Node = { label : string; children : List&lt;Node&gt; }
- Stack&lt;Node&gt; stack;
- stack.push (new Node("#document"), []));
- while (true) {
-
-  tag = read ();
-  if end_of_file () break;
-  if tag is opening {
-               parent = stack.peek();
-               node = new Node(tag, []);
-               parent.addChild(node);
-               stack.push(node);
-  }
-  if tag is closing {
-      stack.pop();
-  }
- }
-</code>
-<p class="sws-pause">En pratique, on utilise des bibliothèques toutes faites pour
-  lire/écrire des fichiers!</p>
-</div>
-<h1>XPath, introduction</h1>
-<div class="sws-slide">
-<h1>Intérogation de documents XML</h1>
-<p>Les documents représentant des données (semi-) structurées, on
-  souhaite en extraire de l'information</p>
-<p>On va pouvoir écrire des requêtes sur des <a>critères scalaires</a>
-  (
-«&nbsp;renvoyer tous les livres publiés après 2000&nbsp;»), mais aussi sur des
-  critères de <a>structure</a> («&nbsp;renvoyer tous les éléments qui ont
-  un fils <tt>author</tt>&nbsp;»)</p>
-</div>
-<div class="sws-slide">
-<h1>XPath</h1>
-<p>XPath est un langage de <a>selection de nœud</a> dans un document
-  XML. Il ne permet <a>que</a> de sélectionner des nœuds, pas d'en
-  construire de nouveaux. C'est un langage restreint qui ne contient
-  pas de fonctions, variables, … On peut le voir comme un équivalent
-  du <tt>SELECT</tt> de SQL</p>
-</div>
-
-<div class="sws-slide">
-<h1>XPath (exemple)</h1>
-<p>Sélectionner tous les titres du document (de manière compliquée)</p>
-<code>    <span style="color:#00f">/</span>descendant::<s>author</s>/parent::<a>book</a>/child::<span style="color:#880088">title</span></code>
-<embed src="tree.svg" style="position:relative;left:20%;width: 10cm; height: 13cm;"/>
-<script type="text/javascript">
-var color = function (o,e, c) {
-   $(o).find("*[class='" + e + "']").css("fill", c);
-}
-SWS.Presentation.registerCallback(0, function (canvas) {
-  var svg = canvas.find("embed")[0].getSVGDocument();
-  $(svg).find("text").css({ "font-family":"DIN", "font-size":"70%"});
-  color(svg, "author", "#ff0000");
-  color(svg, "document", "#0000ff");
-  color(svg, "book", "#92b938");
-  color(svg, "title", "#880088");
-});
-</script>
-</div>
-<div class="sws-slide">
-<h1>XPath : syntaxe</h1>
-<p>La syntaxe d'une requête XPath est:</p>
-<code>       /axe<sub>1</sub>::test<sub>1</sub>[ pred<sub>1</sub> ]/ … /axe<sub>n</sub>::test<sub>n</sub>[ pred<sub>n</sub> ]</code>
-<ul>
-<li><a>axe</a>
-  : <tt>self</tt>, <tt>child</tt>, <tt>descendant</tt>, <tt>parent</tt>,
-  …
-</li>
-<li><a>test</a> : <tt>node()</tt>, <tt>text()</tt>, <tt>*</tt>, ou un
-  nom d'élément </li>
-<li> <a>pred(icat)</a> : chemin XPath, expression arithmétique,
-  comparaison, …
-</li>
-<p>exemple:</p>
-<code> /descendant::book[ child::year > 2000] / child::title </code>
-</ul>
-
-</div>
-<div class="sws-slide">
-<h1>XPath : sémantique</h1>
-<p>Étant donné la requête: </p>
-<code>       /axe<sub>1</sub>::test<sub>1</sub>[ pred<sub>1</sub> ]/ … /axe<sub>n</sub>::test<sub>n</sub>[ pred<sub>n</sub> ]</code>
-<ol>
-  <li>le <a>nœud contexte</a> au nœud <a>document</a></li>
-  <li>on sélectionne l'ensemble A<sub>1</sub> <a>tous les nœuds</a> qui sont dans
-  l'<tt>axe<sub>1</sub></tt> par rapport au nœud contexte</li>
-  <li>on sélectionne l'ensemble T<sub>1</sub> des nœud de
-  A<sub>1</sub> qui vérifient le test <tt>test<sub>1</sub></tt></li>
-  <li>on sélectionne l'ensemble P<sub>1</sub> des nœud de
-  T<sub>1</sub> qui vérifient <tt>pred<sub>1</sub></tt></li>
-  <li>On réapplique le pas 2 sur <tt>P<sub>1</sub></tt></li> 
-  <li> … </li>
-</ol>
-</div>
-<div class="sws-slide">
-<h1>XPath : sémantique (exemple)</h1>
-<div style="width:50%;float:left;">
-<code> <span style="color:#00f">/</span>descendant::<s>author</s>/parent::<a>book</a>/child::<span style="color:#880088">title</span></code>
-<ol><li >On séléctionne le nœud document</li>
-<li >On séléctionne tous les descendants</li>
-<li>On filtre en ne gardant que les nœuds <s>author</s>
-  (T<sub>1</sub> ≡ P<sub>1</sub>)</li>
-<li>Sur chacun des <s>author</s> on prend le parent (on n'obtient que
-  2 parents car on garde des ensembles de noeuds)</li>
-<li>On filtre les parents pour ne garder que ceux qui
-  sont <a>book</a></li>
-<li>On sélectionne tous les fils de chacun des <a>book</a></li>
-<li>On ne garde que les fils qui ont le
-  tag <span style="color:#880088">title</span></li>
-</ol>
-</div>
-<embed src="tree.svg" style="width: 10cm; height: 13cm;"/>
-<script type="text/javascript">
-SWS.Presentation.registerCallback(0, function (canvas) {
-  var svg = canvas.find("embed")[0].getSVGDocument();
-  $(svg).find("text").css({ "font-family":"DIN", "font-size":"70%"});
-  color(svg, "author", "#ff0000");
-  color(svg, "document", "#0000ff");
-  color(svg, "book", "#92b938");
-  color(svg, "title", "#880088");
-});
-</script>
-</div>
-<div class="sws-slide">
-<h1>XPath : axes</h1>
-<p>Le standard XPath définit un grand nombre d'axes</p>
-<ul>
-<li><a>self</a> : on reste sur le nœud courant</li>
-<li><a>child</a> : tous les fils du nœud courant</li>
-<li><a>parent</a> : le parent du nœud courant. Seul le nœud document
-  n'a pas de parent</li>
-<li><a>descendant</a> : les fils, les fils des fils, etc. du nœud courant</li>
-<li><a>ancestor</a> : le parent, et le parent du parent, etc. du nœud
-  courant</li>
-<li> <a>descendant-or-self</a>, <a>ancestor-or-seld</a> : comme les
-  précédents mais inclus le nœud courant</li>
-<li><a>following-sibling</a>: le frères se trouvant après</li>
-<li><a>preceding-sibling</a>: les frères se trouvant avant</li>
-<li><a>following, preceding, attributes </a> : usage avancé</li>
-</ul>
-</div>
-<div class="sws-slide">
-<h1>XPath : les tests</h1>
-<p>On peut sélectionner des nœuds selon les critères suivants</p>
-<ul>
-  <li> <a>node()</a> : n'importe quel nœud</li>
-  <li> <a>text()</a> : un nœud texte (<tt>"The Lord of the
-  Rings"</tt>)</li>
-  <li> <a>*</a> : n'importe quel élément
-  (<tt>author</tt>, <tt>title</tt>, …)</li>
-  <li> <a><i>nom_d_element</i></a> tous les éléments ayant ce nom</li>
-</ul>
-</div>
-<div class="sws-slide">
-<h1>XPath : prédicats (syntaxe)</h1>
-<code>
-      p ::=   p or p
-         |    p and p
-         |    not (p)
-         |    count(…), contains(…), position(), …
-         |    chemin XPath
-         |    e<sub>1</sub> op e<sub>2</sub>
-</code>
-<p><tt>e<sub>1</sub></tt> et <tt>e<sub>2</sub></tt> sont des
-  expressions arithmétiques, <tt>op</tt> peut être <tt>&lt;</tt>, <tt>&gt;</tt>, =, !=,
-  +, -, *, /, mod, …</p>
-</div>
-<div class="sws-slide">
-<h1>XPath : prédicats (sémantique)</h1>
-<p>On évalue le prédicat et on converti son résultat en valeur de
-  vérité. Si la valeur vaut vrai, on garde le nœud courant, si elle
-  vaut faux, on ne le garde pas
-</p>
-<p>XPath connait <a>4 types de données</a> pour les prédicats : </p>
-<ul>
-<li>Les booléens, valeur de vérité : vrai ou faux</li>
-<li>Les nombres (flottants), valeur de vérité compliquée… </li>
-<li>Les chaînes de caractères, chaîne vide = faux, sinon vrai</li>
-<li>Les ensembles de nœuds, ensemble vide = faux, sinon vrai </li>
-</ul>
-
-</div>
-<div class="sws-slide">
-<h1>XPath : prédicats (exemples)</h1>
-
-<ul><li> <tt>/descendant::book [ child::title ]</tt> : sélectionne chaque
-    élément book pour lequel l'ensemble des fils de nom title n'est
-    pas vide </li>
-<li> <tt>/descendant::book [ count(child::author) &gt; 2 ]</tt> : séléctionne
-  chaque book qui a plus de deux fils author</li>
-<li> <tt>/descendant::book [ contains(child::title, "Ring") ]</tt></li>
-<li> <code>/descendant::book [ count(child::author) &gt; 2
-                    or contains(child::author, "Tolk") 
-                  ]/child::title</code></li>
-</ul>
-</div>
-<div class="sws-slide">
-<h1>Caractéristiques d'XPath</h1>
-<ul>
-  <li>XPath est un langage standardisé par le W3C</li>
-  <li>Assez verbeux</li>
-  <li>Langage de requêtes <a>monadique</a> (on ne peut renvoyer que
-  des ensembles de nœuds. Par exemple il est impossible de renvoyer
-  des ensembles de paires auteur/titre de livre)</li>
-  <li>Il est assez compliqué à implémenter efficacement</li>
-</ul>
-</div>
-  </body>
-</html>
diff --git a/xpi/xpi_03.xhtml b/xpi/xpi_03.xhtml
deleted file mode 100644 (file)
index 2e5d601..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>XPath (suite)</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-      a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-    <style type="text/css">
-      .xml-tag { color: #00486c; }
-    </style>
-    <script type="text/javascript">
-      <![CDATA[
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(function () {
-       $(".inline-xml").each(function(i, elem)
-      {
-      var jelem = $(elem);
-      var code = jelem.html();
-      code = code.replace ("<![CDATA" + "[", "").replace ("]" + "]>", "");
-      code = code.replace (/>/g, ">>>");
-      code = code.replace (/</g, "<span class='xml-tag'>&lt;");
-      code = code.replace (/>>>/g,"&gt;</span>");
-
-      jelem.html(code);
-      });
-  });
-
-      var checkSVG = function (o, i)
-      {
-            if (i >= 10 || SWS.Utils.isUndefined(o) || o == null) return;
-            var svg = o.getSVGDocument();
-            if (svg == null) {
-              setTimeout(function() { checkSVG(o, i+1); }, 200);
-            } else {
-         var alltext = $(svg).find("text");
-         alltext.css("font-family", "DIN");
-         alltext.css("font-size", "70%");
-
-            };
-      };
-      $(window).load(function() {
-      $("embed").ready(function() {
-         setTimeout(function() { 
-         $("embed").each(function(i, o) { checkSVG(this,0);   });
-}, 1000);
-        });
-     });
-      $(window).load(SWS.Presentation.init);
-
-       ]]>
-
-    </script>
-
-  </head>
-  <body>
-    <a href="xpi_02.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>XML et Programmation Internet</h1>
-      <h1>Cours 3</h1>
-      <a href="mailto:kn@lri.fr">kn@lri.fr</a>
-    </div>
-    <h1>Évaluation des prédicats</h1>
-    <div class="sws-slide">
-      <h1>Rappels de syntaxe</h1>
-<code>
-      p ::=   p or p
-         |    p and p
-         |    not (p)
-         |    count(…), contains(…), position(), …
-         |    chemin XPath
-         |    e<sub>1</sub> op e<sub>2</sub>
-</code>
-<p>On évalue le prédicat et on converti son résultat en valeur de
-  vérité. Si la valeur vaut vrai, on garde le nœud courant, si elle
-  vaut faux, on ne le garde pas
-</p>
-<p>XPath connait <a>4 types de données</a> pour les prédicats : </p>
-<ul>
-<li>Les booléens, valeur de vérité : vrai ou faux</li>
-<li>Les nombres (flottants), valeur de vérité compliquée… </li>
-<li>Les chaînes de caractères, chaîne vide = faux, sinon vrai</li>
-<li>Les ensembles de nœuds, ensemble vide = faux, sinon vrai </li>
-</ul>
-    </div>
-<div class="sws-slide">
-<h1>Comparaisons (e<sub>1</sub> op e<sub>2</sub>)</h1>
-<p> Les opérateurs de comparaisons sont : <tt>=, !=, &lt;, &lt;=,
-    &gt;, &gt;= </tt>.<br/>
-  La manière de calculer de vérité de <tt>e<sub>1</sub> op
-    e<sub>2</sub></tt> dépend du typed de <tt>e<sub>1</sub></tt>
-    et  <tt>e<sub>2</sub></tt> :
-</p>
-<ul>
-  <li>Si  <tt>e<sub>1</sub></tt> et  <tt>e<sub>2</sub></tt> représente
-    <a>des ensembles de nœuds</a>, alors la comparaison est vraie ssi
-    il existe un élément <tt>x</tt> dans <tt>e<sub>1</sub></tt> et un
-    élément <tt>y</tt> dans <tt>e<sub>2</sub></tt> tels que <tt>x&nbsp;op&nbsp;y</tt>
-  </li>
-
-  <li>Si  <tt>e<sub>1</sub></tt> représente
-    <a>un ensembles de nœuds</a> et <tt>e<sub>2</sub></tt> une valeur
-    scalaire <tt>y</tt>, alors la comparaison est vraie ssi
-    il existe un élément <tt>x</tt> dans <tt>e<sub>1</sub></tt> tel que <tt>x&nbsp;op&nbsp;y</tt>
-  </li>
-  <li>Si <tt>e<sub>1</sub></tt> et  <tt>e<sub>2</sub></tt> sont des
-  valeurs scalaires, alors ont les compare en utilisant les règles de
-  comparaison des valeurs scalaires (voir page suivante).
-  </li>
-</ul>
-</div>
-<div class="sws-slide">
-<h1>Comparaisons des valeurs scalaires</h1>
-<code>                                  v<sub>1</sub> op v<sub>2</sub> </code>
-<p>Si op est <tt>!=</tt> ou <tt>=</tt>, on applique les règles dans cet ordre:</p>
-<ol>
-<li> Si <tt>v<sub>1</sub></tt> (resp. <tt>v<sub>2</sub></tt>) est
-  un <a>booléen</a>, alors <tt>v<sub>2</sub></tt>
-  (resp. <tt>v<sub>1</sub></tt>) est converti en booléen et les deux
-  booléens sont comparés </li>
-<li> Sinon si <tt>v<sub>1</sub></tt> (resp. <tt>v<sub>2</sub></tt>) est
-  un <a>nombre</a>, alors <tt>v<sub>2</sub></tt>
-  (resp. <tt>v<sub>1</sub></tt>) est converti en nombre et les deux
-  nombres sont comparés </li>
-<li> Sinon, <tt>v<sub>1</sub></tt> et <tt>v<sub>2</sub></tt> sont des
-  <a>chaines de caractères</a>, on les compares</li>
-</ol>
-<p>Si op est <tt> &lt;</tt>,  <tt> &lt;=</tt>,  <tt> &gt;</tt> ou <tt>
-    &gt;=</tt>, on convertit <tt>v<sub>1</sub></tt>
-    et <tt>v<sub>2</sub></tt> en <a>nombres</a> et on les compare.
-</p>
-</div>
-<div class="sws-slide">
-<h1>Conversions</h1>
-<p>Conversion en booléen</p>
-<ul>
-  <li>0 et NaN sont converti en <tt>false</tt>, le reste
-  en <tt>true</tt> </li>
-  <li>Un ensemble de nœud vaut <tt>true</tt> ssi il est non vide</li>
-  <li>Une chaine vaut <tt>true</tt> ssi elle est non vide</li>
-</ul>
-<p>Conversion en nombre</p>
-<ul>
-  <li>Une chaine de caractère représentant un flottant au format
-  IEEE-754 est convertie en ce nombre, sinon elle est convertie en NaN
-  </li>
-  <li>Booléen: <tt>true</tt> est converti à 1, <tt>false</tt> est
-  converti à 0</li>
-  <li>Un ensemble de nœud est d'abord converti en chaine de caractères
-  puis la chaine est convertie en nombre</li>
-</ul>
-</div>
-<div class="sws-slide">
-<h1>Conversions (suite)</h1>
-<p>Conversion en chaine de caractères</p>
-<ul>
-  <li>Un booléen est traduit en <tt>"true"</tt> ou <tt>"false"</tt>
-  selon sa valeur</li>
-  <li>Nombres:
-    <ul><li>NaN est converti en la chaine <tt>"NaN"</tt></li>
-      <li>Si le nombre n'a pas de partie décimale, sa
-      représentation <i>entière</i> est convertie en chaine (ex:
-      1.000e10 ≡ <tt>"10"</tt>)</li>
-      <li>Sinon une représentation IEE-754 du nombre est utilisé
-      (ex: <tt>"123.10e-34"</tt>)
-       </li>
-    </ul>
-  </li>
-  <li>Ensemble de noœud : <ul>
-      <li>L'ensemble vide est converti en la chaine vide
-      </li>
-      <li>Sinon le premier élément dans l'ordre du document est
-      converti en chaine en concatenant tous les nœuds textes dans ces
-      descendants (y compris lui-même)</li>
-    </ul>
-  </li>
-</ul>
-</div>
-
-<div class="sws-slide">
-<h1>Appels de fonction</h1>
-<p>Il existe des fonctions prédéfinies (voir la spec XPath)</p>
-<ul>
-  <li><tt>contains(str<sub>1</sub>,str<sub>2</sub>)</tt></li>
-  <li><tt>starts-with(str<sub>1</sub>,str<sub>2</sub>)</tt></li>
-  <li><tt>count(node_set<sub>1</sub>)</tt></li>
-  <li><tt>last()</tt></li>
-  <li><tt>position()</tt></li>
-  <li>…</li>
-</ul>
-<p>Si les arguments ne sont pas du bon type, ils sont convertis en
-  utilisant les règles de conversion</p>
-</div>
-<div class="sws-slide">
-<h1>Exemples</h1>
-<p>Dans la suite, on se donne un document de test ayant une
-  racine <tt><![CDATA[<a> ... </a>]]></tt> et une expression XPath qui
-  sélectionne la racine si et seulement si le prédicat vaut vrai
-</p>
-</div>
-<div class="sws-slide">
-  <h1>Exemples</h1>
-  <code>        <![CDATA[ <a>
-           <b>1</b>
-           <c>2</c>
-         </a> ]]></code>
-<ol> <li class="sws-pause">
-    <tt>/child::a[ child::*/child::text() ]</tt>
-    <span class="sws-pause">sélectionne la racine (l'ensemble de nœud
-    renvoyé par <tt>child::*/cild::text()</tt> est non vide, donc il est converti
-    en <tt>true</tt>)</span><br/><br/></li>
- <li class="sws-pause">
-    <tt>/child::a[ child::*/child::text() = "2" ]</tt>
-    <span class="sws-pause">sélectionne la racine (l'ensemble de nœud texte
-    renvoyé par <tt>child::*/child::text()</tt> est comparé à "2", et
-    il existe un élément dans cet ensemble pour lequel le test réussi
-    )</span><br/><br/></li>
-  <li class="sws-pause"><tt>/child::a[ child::*/child::text() != "2" ]</tt>
-    <span class="sws-pause"><s>sélectionne la racine</s> (l'ensemble de nœud texte
-      renvoyé par <tt>child::*/child::text()</tt> est comparé à "2", et
-      il existe un élément dans cet ensemble pour lequel le test réussi
-      )</span><br/><br/></li>
-  <li class="sws-pause" style="background:white;"><tt>/child::a[ not(child::*/child::text() = "2") ]</tt>
-    <span class="sws-pause"><s>ne sélectionne pas la racine</s> (on
-      prend la négation du deuxième cas ci-dessus)
-    </span><br/><br/></li>
-
-</ol>
-</div>
-<div class="sws-slide">
-  <h1>Exemples</h1>
-  <code>        <![CDATA[ <a>
-           <b>1</b><b>2</b>
-           <c>2</c><c>3</c>
-         </a> ]]></code>
-<ol>
- <li class="sws-pause">
-    <tt>/child::a[ child::*/child::text() &gt; 1.5 ]</tt>
-    <span class="sws-pause">sélectionne la racine (l'ensemble de nœud texte
-    renvoyé par <tt>child::*/child::text()</tt> est comparé à 1.5, et
-    il existe un élément dans cet ensemble pour lequel le test réussi
-    )</span><br/><br/></li>
-  <li class="sws-pause"><tt>/child::a[ child::b/child::text() &gt;= child::c/child::text() ]</tt>
-    <span class="sws-pause"><s>sélectionne la racine</s> (les deux
-      ensembles de nœuds sont convertis en ensmbles de nombres, car on
-      utilise <tt>&gt;=</tt> et on a bien que <tt>2 &gt;= 2</tt>
-      )</span><br/><br/></li>
-  <li class="sws-pause"><tt>/child::a[ child::b/child::text() = child::c/child::text() ]</tt>
-    <span class="sws-pause"><s>sélectionne la racine</s> (les deux
-      ensembles de nœuds comportent un élément commun)</span><br/><br/></li>
-  <li class="sws-pause"><tt>/child::a[ child::b/child::text() != child::c/child::text() ]</tt>
-    <span class="sws-pause"><s>sélectionne la racine</s> (les deux
-      comportent des éléments différents)</span><br/><br/></li>
-</ol>
-</div>
-<div class="sws-slide">
-  <h1>Exemples</h1>
-  <code>                   <![CDATA[ <a><b>1</b><b>2</b><c>2</c><c>3</c></a> ]]></code>
-<ol>
- <li class="sws-pause">
-    <tt>/child::a[ contains(self::*, "22") ]</tt>
-    <span class="sws-pause"><s>sélectionne la racine</s>(l'ensemble de
-    nœud séléctionné par <tt>self::*</tt>, i.e. la racine est converti
-    en chaine. Pour ce faire, on colle toutes éléments textes
-    descendants et on obtient la chaine "1223" qui contient bien "22")
-    </span><br/><br/></li>
- <li class="sws-pause">
-    <tt>/child::a[ self::* > 442.38 ]</tt>
-    <span class="sws-pause"><s>sélectionne la racine</s>(l'ensemble de
-    nœud séléctionné par <tt>self::*</tt>, est converti en chaine puis
-    en nombre pour comparer 1223 à 442.38)
-    </span><br/><br/></li>
-
- <li class="sws-pause">
-    <tt>/child::a[ sum(child::*) &gt;= 7.5 ]</tt>
-    <span class="sws-pause"><s>sélectionne la racine</s>(la fonction
-    <tt>sum</tt> converti la liste de valeurs passée en argument en
-    liste de nombre et fait la somme de ces derniers)
-    </span><br/><br/></li>
-</ol>
-</div>
-
-<div class="sws-slide">
-  <h1>Exemples</h1>
-  <code>                   <![CDATA[ <a><b>1</b><b>toto</b><c>2</c><c>3</c></a> ]]></code>
-<ol>
-
- <li class="sws-pause">
-    <tt>/child::a[ sum(child::*) &gt;= 7.5 ]</tt>
-    <span class="sws-pause"><s>ne sélectionne pas la racine</s>(la fonction
-    <tt>sum</tt> converti la liste de valeurs passée en argument en
-    liste de nombres, toto n'étant pas un nombre valide, il est
-    remplacé par NaN. La somme totale fait donc NaN, et une
-    comparaison avec NaN renvoie toujours faux)
-    </span><br/><br/></li>
-</ol>
-</div>
-<div class="sws-slide">
-  <h1>Prédicat imbriqués</h1>
-  <p>On peut imbriquer des prédicats de manière arbitraire:</p>
-  <code>  Q<sub>1</sub> ≡ /child::a[ child::b[ count(descendant::c) &gt; 4 ] ] </code>
-  <p>Quelle différence avec :</p>
-  <code>  Q<sub>2</sub> ≡ /child::a[ count(child::b/descendant::c) &gt; 4 ] </code>
-  <p class="sws-pause">Il suffit de considérer le document :
-    <code> <![CDATA[ <a>
-      <b> <c/> <c/> <c/></b> 
-      <b> <c/> <c/> </b>
-  </a>
-      ]]></code>
-    <tt>Q<sub>1</sub></tt> <s>ne séléctionne rien</s> car il n'y a
-    aucun <tt>b</tt> ayant plus de 4
-    descendants <tt>c</tt>.<br/>     <tt>Q<sub>2</sub></tt> <s>séléctionne</s>
-    la racine car le nombre de descendants <tt>c</tt> de
-    nœuds <tt>b</tt> est plus grand que 4.
-</p>
-</div>
-<div class="sws-slide">
-  <h1><tt>position()</tt> et <tt>last()</tt> </h1>
-  <p>La fonction <tt>position()</tt> renvoie la position du nœud au
-  sein de <a>l'ensemble de résultats en cours de filtrage</a>. Last
-  renvoie le nombre d'éléments dans cet ensemble (ou l'indice du
-  dernier élément). Les indices commencent à 1 :</p>
-  <code><![CDATA[    <a>
-      <b>AA</b>
-      <b>BB</b>
-      <b>CC</b>
-    </a>]]>
-
-    /child::a/child::b[ position() = 2 ]          (renvoie <![CDATA[<b>BB</b>]]>)
-    /child::a/child::b[ position() = last() ]     (renvoie <![CDATA[<b>CC</b>]]>)
-    /child::a/child::b[ position() mod 2 = 1 ]    (renvoie <![CDATA[<b>AA</b>
-                                                           <b>CC</b>]]>)
-</code>
-</div>
-<h1>Axes complexes</h1>
-<div class="sws-slide">
-  <h1>L'axe <tt>attribute::</tt></h1>
-  <p>Permet d'accéder aux attributs d'un élément.<s>Attention</s>, les
-    attributs ne font pas partie des fils ni des descendants!</p>
-    <code><![CDATA[    <a>
-      <b id="a1" v="x" >AA</b>
-      <b id="b2" v="y" >BB</b>
-      <b id="b3" v="z" >CC</b>
-    </a>]]>
-
-    /descendant::b[ attribute::* = "y" ]          (renvoie <![CDATA[<b …>BB</b>]]>)
-    /descendant::b[ attribute::id = "y" ]         (ne renvoie rien)
-</code>
-</div>
-<div class="sws-slide">
-  <h1>Les axes <tt>preceding::</tt> et <tt>following::</tt></h1>
-  <p>L'axe <tt>preceding::</tt> selectionne tous les nœuds arrivant
-    avant le nœud courant et qui ne sont pas des ancetres de ce
-    dernier.</p>
-  <p>L'axe <tt>following::</tt> selectionne tous les nœuds arrivant
-    après le nœud courant et qui ne sont pas des descendants de ce dernier.</p>
-    <code style="background:white;"><![CDATA[    <a>
-      <b > <c/>
-          <d> <e/> </d>
-          <f ><g/></f>
-      </b>
-      <h/>
-      <i/>
-      <j> <k>
-         <l/> <m/> <n/>
-        </k>
-      </j>
-    </a>]]>
-
-    /descendant::m/preceding::* (séléctionne l, i, h, b, c, d, e, f, g)
-    /descendant::d/following::* (sélectionne h, i, j, k, l, m)
-</code>
-</div>
-<div class="sws-slide">
-<h1>Autres opérateurs</h1>
-<p>On peut donner plusieurs prédicats à un chemin :
-<code>
- <s>/descendant::a [ descendant::b ]</s><a>[ position () &gt; 4 ]</a><span style="color:orange;">[ child::c ]</span>
-</code>
-Sélectionne l'ensemble des nœuds <s>A<sub>1</sub> ayant un
-  tag <tt>a</tt> et ayant un descendant <tt>b</tt></s>. Filtre
-  A<sub>1</sub> pour ne garder que <a>A<sub>2</sub>, l'ensemble des
-  nœuds de A<sub>1</sub> étant en position supérieure à
-  4</a>. <span style="color:orange;">Filtre A<sub>2</sub> pour ne
-  garder que les nœuds ayant un fils <tt>c</tt></span>.
-</p>
-<p>On peut prendre <a>l'union</a> de plusieurs chemins :</p>
-<code>
-    /descendant::a/parent::b | /descendant::c/following-sibling::d
-</code>
-</div>
-<h1>Syntaxe abrégée</h1>
-<div class="sws-slide">
-<h1>Abréviations</h1>
-<p>XPath étant très <a>verbeux</a> il existe une syntaxe abrégée pour
-  les situations les plus courantes :</p>
-<ul>
-  <li> un nom de tag <tt>foo</tt> est l'abréviation
-  de <tt>child::foo</tt>. Exemple : <code> /a/b/c ≡ /child::a/child::b/child::c</code>
-    <br/></li>
-  <li> un <tt>//</tt> est l'abréviation
-  de <tt>/descendant-or-self::node()/</tt>. Exemple :
-    <code> //a ≡ /descendant-or-self::node()/child::a </code>
-    Prend tous les nœuds du document (y compris le
-    nœud fictif <tt>#document</tt> et exécute <tt>child::a</tt> sur
-    cet ensemble.<br/></li>
-  <li> <tt> .. </tt> est un synonyme
-  pour <tt>parent::node()</tt> </li>
-  <li> <tt> @foo </tt> est un synonyme pour <tt>attribute::foo</tt>
-  </li>
-</ul>
-  <p>Exemple :</p>
-  <code>    //book [ year &gt; 2005 ]/title
-  </code>
-
-</div>
-  </body>
-</html>
diff --git a/xpi/xpi_04.xhtml b/xpi/xpi_04.xhtml
deleted file mode 100644 (file)
index b436582..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>XSLT</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-      a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-    <style type="text/css">
-      .xml-tag { color: #00486c; }
-    </style>
-    <script type="text/javascript">
-      <![CDATA[
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(function () {
-       $(".inline-xml").each(function(i, elem)
-      {
-      var jelem = $(elem);
-      var code = jelem.html();
-      code = code.replace ("<![CDATA" + "[", "").replace ("]" + "]>", "");
-      code = code.replace (/>/g, ">>>");
-      code = code.replace (/</g, "<span class='xml-tag'>&lt;");
-      code = code.replace (/>>>/g,"&gt;</span>");
-
-      jelem.html(code);
-      });
-  });
-
-      var checkSVG = function (o, i)
-      {
-            if (i >= 10 || SWS.Utils.isUndefined(o) || o == null) return;
-            var svg = o.getSVGDocument();
-            if (svg == null) {
-              setTimeout(function() { checkSVG(o, i+1); }, 200);
-            } else {
-         var alltext = $(svg).find("text");
-         alltext.css("font-family", "DIN");
-         alltext.css("font-size", "70%");
-
-            };
-      };
-      $(window).load(function() {
-      $("embed").ready(function() {
-         setTimeout(function() { 
-         $("embed").each(function(i, o) { checkSVG(this,0);   });
-}, 1000);
-        });
-     });
-      $(window).load(SWS.Presentation.init);
-
-       ]]>
-
-    </script>
-
-  </head>
-  <body>
-    <a href="xpi_03.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>XML et Programmation Internet</h1>
-      <h1>Cours 4</h1>
-      <a href="mailto:kn@lri.fr">kn@lri.fr</a>
-    </div>
-    <h1>Namespaces</h1>
-    <div class="sws-slide">
-      <h1>Utilisation des <i>namespaces</i></h1>
-      <p><a>Problème</a> : comment mélanger au sein d'un même document des
-      balises venant de deux DTDs (ou schémas) <a>différentes</a>
-      ?<br/>Exemple : mettre du SVG (images vectorielles) dans
-      du XHTML (page web)</p>
-      <code style="font-size:80%;width:50%;float:left"><![CDATA[
-      <svg width="400" height="180">
-         <rect x="50"
-              y="20"
-              rx="20"
-              ry="20"
-              width="150" height="150"
-               style="fill:red;stroke:black;
-                      stroke-width:5;opacity:0.5" />
-      </svg> 
- ]]>
-      </code>
-      <code style="font-size:80%;width:50%;float:left"><![CDATA[
-      <html>
-       <head><title>Mon image</title></head>
-       <body>
-
-         <h1>Une image</h1>
-         <!-- contenu de l'image -->
-
-       </body>
-      </html>
- ]]>
-      </code>
-      <p>Comment spécifier que certains éléments doivent êtres
-      <a>interprétés</a> ? (par exemple par le navigateur web) et que
-      d'autres font parties des données ?</p>
-    </div>
-    <div class="sws-slide">
-      <h1>L'attribut <tt>xmlns</tt></h1>
-      <p>On peut utiliser un <a>attribut</a> spécial, <tt>xmlns</tt>
-      qui est autorisé dans <a>tous les documents XML</a>
-      sur <a>n'importe quel élément</a>. La valeur de ce dernier est
-      un lien identifiant la DTD et indique tous les descendants de
-      l'élément en question sont valides par rapport à la
-      DTD.<br/>Exemple:
-      </p>
-      <code style="font-size:80%;background:white;"><![CDATA[
-      <html ]]><s>xmlns="http://www.w3.org/1999/xhtml"</s><![CDATA[>
-       <head><title>Mon image</title></head>
-       <body>
-       <h1>Mon image</h1>
-           <svg width="400" height="180" ]]><s>xmlns="http://www.w3.org/2000/svg"</s><![CDATA[>
-             <rect x="50"
-                  y="20"
-                  rx="20"
-                  ry="20"
-                  width="150" height="150"
-                  style="fill:red;stroke:black;
-                         stroke-width:5;opacity:0.5" />
-          </svg>
-     </body>
-     </html>
- ]]>
-      </code>
-
-    </div>
-    <div class="sws-slide">
-      <h1>L'attribut <tt>xmlns</tt></h1>
-      <p>On peut aussi donner <a>un nom</a> à un namespace particulier
-      et réutiliser ce nom dans les balises:</p>
-      <code style="font-size:80%;background:white;"><![CDATA[
-      <html ]]><s>xmlns="http://www.w3.org/1999/xhtml"</s>
-            <a>xmlns:svg="http://www.w3.org/2000/svg"</a><![CDATA[>
-       <head><title>Mon image</title></head>
-       <body>
-       <h1>Mon image</h1>
-           <svg:svg width="400" height="180" 
-             <svg:rect x="50"
-                  y="20"
-                  rx="20"
-                  ry="20"
-                  width="150" height="150"
-                  style="fill:red;stroke:black;
-                         stroke-width:5;opacity:0.5" />
-          </svg:svg>
-     </body>
-     </html>]]> </code>
-<p style="background:white;">en utilisant l'attribut <tt>xmlns:toto="..."</tt> alors toutes la
-  balises de la forme <tt>&lt;toto:nombalise&gt;</tt> appartiennent au
-  namespace <tt>toto</tt>. Il ne faut pas oublier le namespace sur la
-  balise fermante !</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Digression</h1>
-      <p>L'exemple précédent ressemble à ça :</p>
-      <div style="border: 1pt solid gray;margin: 10pt">
-       <h1 style="font-family:Serif;color:black;text-align:left">Mon image</h1>
-             <svg width="400" height="180" xmlns="http://www.w3.org/2000/svg">
-         <rect x="50"
-              y="20"
-              rx="20"
-              ry="20"
-              width="150" height="150"
-               style="fill:red;stroke:black;
-                      stroke-width:5;opacity:0.5" />
-      </svg> 
-      </div>
-    </div>
-    <h1>XSLT, principes</h1>
-    <div class="sws-slide">
-      <h1>XSLT</h1>
-      <p><a>eXtensible Stylesheet Language Transformations</a> : est
-       un langage de transformation de documents XML. Il permet
-       d'extraire (au moyen d'XPath) des nœuds d'un <a>document d'entrée</a>
-       et de les ré-organiser et de les copier dans un <a>document de
-       sortie</a>.
-       Le document de sortie est souvent du XML lui-même mais peut
-       être aussi du texte, du PDF, …
-      </p>
-      <ul>
-       <li>XSLT est standardisé par le W3C</li>
-       <li>Les programmes XSLT sont écrit eux-même en XML</li>
-       <li>Il existe plusieurs versions du standard (1.0, 2.0,
-       3.0). Ce cours fait juste une introduction aux fonctionalités
-       les plus simples (1.0)</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Un exemple simple</h1>
-      <p>On réutilise un document de recette de cuisine
-      du <a href="xpi_01.xhtml">cours 01</a>. La DTD est:</p>
-<code style="color:black;position:relative;left:10%;"><![CDATA[<!ELEMENT recette (title,ingredients,duree,etapes)>
-<!ATTLIST recette difficulte (facile|normal|difficile) #REQUIRED>
-<!ELEMENT title #PCDATA >
-<!ELEMENT ingredients (ingredient+) >
-<!ELEMENT duree #PCDATA >
-<!ELEMENT etapes (e*) >
-<!ELEMENT ingredient #PCDATA>
-<!ELEMENT e #PCDATA>
-<!ATTLIST e num CDATA>
-]]></code>
-    </div>
-    <div class="sws-slide">
-      <h1>Un exemple simple (suite)</h1>
-      <p>Un document valide par rapport à la DTD est le suivant</p>
-    <code style="color:black;font-size:80%;position:relative;left:10%;"><![CDATA[
-<!DOCTYPE recette SYSTEM "recette.dtd">
-<recette difficulte="facile">
-<title>Tiramisú</title>
-<ingredients>
-  <ingredient>mascarpone</ingredient>
-  <ingredient>oeufs</ingredient>
-  <ingredient>sucre</ingredient>
-  <ingredient>café</ingredient>
-  <ingredient>biscuits</ingredient>
-</ingredients>
-<duree>2h</duree>
-<etapes>
-  <e num="1">Séparer les blancs des jaunes</e>
-  <e num="2">…</e>
-  …
-</etapes>
-</recette>
-]]></code>  
-    </div>
-<div class="sws-slide">
-      <h1>Un exemple simple (suite)</h1>
-      <p>On va extraire des informations du document et en faire une
-      page web :</p>
-<code style="color:black;font-size:80%;position:relative;"><![CDATA[  <xsl:stylesheet version="1.0"
-   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-   <xsl:template match="/">
-     <html>
-       <head>
-          <title>Ingrédients du ]]><u>&lt;xsl:value-of select="descendant::title" /&gt;</u><![CDATA[ </title>
-       </head>
-       <body>
-        <h1>Ingrédients du ]]><u>&lt;xsl:value-of select="descendant::title" /&gt;</u><![CDATA[ </h1>
-        <ul>
-          ]]><u>&lt;xsl:for-each select="descendant::ingredient"&gt;</u><![CDATA[
-            <li> ]]><u>&lt;xsl:value-of select="child::text()" /&gt;</u><![CDATA[ </li>
-          ]]><u>&lt;/xsl:for-each&gt;</u><![CDATA[
-        </ul>
-       </body>
-     </html>
-   </xsl:template>
-  </xsl:stylesheet>
-]]></code>
-</div>
-<div class="sws-slide">
-<h1>Comment exécuter un programme XSLT</h1>
-<ul>
-  <li>En utilisant un moteur XSLT comment le
-  programme <tt>xsltproc</tt> </li>
-  <li>En référençant la feuille de style et en ouvrant le document XML
-  avec Firefox :
-    <code>
-    <![CDATA[<!-- fichier recette.xml -->]]>
-    <u>&lt;?xml-stylesheet type="text/xsl" href="prog.xsl"?&gt;</u><![CDATA[
-    <recette difficulte="facile">
-       <title>Tiramisú</title>
-        <ingredients>
-        ...]]></code>
-  </li>
-  <li>En Java grace à la classe <tt>Transformer</tt> du package <tt>javax</tt></li>
-</ul>
-</div>
-<div class="sws-slide">
-<h1>Structure d'un programme XSLT</h1>
-<p>Un programme XSLT commence par la balise :<code><u><![CDATA[  <xsl:stylesheet version="1.0"
-   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">]]></u></code>
-et fini par la balise : <code><u><![CDATA[  </xsl:stylesheet>]]></u></code>
-Le texte ainsi que les éléments qui ne sont pas dans
-   le <i>namespace</i> « <tt><a>xsl:</a></tt> » sont copiés à
-   l'identique dans la sortie.<br/>
-   Dans la balise principale <tt>&lt;xsl:stylesheet&gt;</tt> on trouve
-   un certain nombre de balises <u><tt>&lt;xsl:template match="…"
-   &gt;</tt></u>.<br/>
-   Les <i>templates</i> vont jouer le rôle de fonctions et vont être
-   appelées pour transformer des nœuds du document en nœuds de sortie.
-</p>
-</div>
-<h1>Les templates XSLT</h1>
-<div class="sws-slide">
-  <h1>Templates</h1>
-<p>Un template est délimité par une balise <u><tt>&lt;xsl:template match="…"
-   &gt;</tt></u> où le «&nbsp;…&nbsp;» est une expression XPath. Il peut y avoir
-   plusieurs templates dans un fichier XSLT. <br/>
-   Un template est appliqué à un ensemble de nœuds. Parmi cet
-   ensemble, tous les nœuds qui vérifient l'expression XPath de
-   l'attribut <tt>match</tt> sont passés en argument au template.<br/>
-   Initialement, tous les templates existants sont appliqués au nœud
-   fictif document.
-  </p>
-</div>
-<div class="sws-slide">
-  <h1>Retour sur l'exemple</h1>
-  <code style="color:black;font-size:80%;position:relative;"><![CDATA[  <xsl:stylesheet version="1.0"
-   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-   <xsl:template match="/">
-     <html>
-       <head>
-          <title>Ingrédients du ]]><u>&lt;xsl:value-of select="descendant::title" /&gt;</u><![CDATA[ </title>
-       </head>
-       <body>
-        <h1>Ingrédients du ]]><u>&lt;xsl:value-of select="descendant::title" /&gt;</u><![CDATA[ </h1>
-        <ul>
-          ]]><u>&lt;xsl:for-each select="descendant::ingredient"&gt;</u><![CDATA[
-            <li> ]]><u>&lt;xsl:value-of select="child::text()" /&gt;</u><![CDATA[ </li>
-          ]]><u>&lt;/xsl:for-each&gt;</u><![CDATA[
-        </ul>
-       </body>
-     </html>
-   </xsl:template>
-  </xsl:stylesheet>
-]]></code>
-<ol><li>Initialement tous les templates (il n'y en a qu'un ici) sont
-    appliqués à la racine du document</li>
-<li>Pour chacun d'entre eux, l'expression XPath dans
-  le <tt>match</tt> est contrôlée. Si elle réussit, alors le template
-  est appliqué au nœud</li>
-</ol>
-</div>
-<div class="sws-slide">
-<h1>Deuxième exemple, 2 templates</h1>
-<p>
-  <code style="color:black;font-size:80%;position:relative;"><![CDATA[  <xsl:stylesheet version="1.0"
-   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-   <xsl:template match="/">
-     <html>
-       <head>
-          <title>Ingrédients du ]]><u>&lt;xsl:value-of select="descendant::title" /&gt;</u><![CDATA[ </title>
-       </head>
-       <body>
-        <h1>Ingrédients du ]]><u>&lt;xsl:value-of select="descendant::title" /&gt;</u><![CDATA[ </h1>
-        <ul>
-          ]]><u>&lt;xsl:apply-templates select="descendant::ingredient" /&gt;</u><![CDATA[
-        </ul>
-       </body>
-     </html>
-   </xsl:template>
-   <xsl:template match="ingredient">
-     <li> ]]><u>&lt;xsl:value-of select="child::text()" /&gt;</u><![CDATA[ </li>
-   </xsl:template>
-  </xsl:stylesheet>]]></code></p>
-<ol style="background:white;"><li>On applique tous les templates à la racine. Le
-    template <tt>match="/"</tt> réussit, le
-    template <tt>match="ingredient"</tt> échoue.</li>
-<li>L'expression
-  <tt><![CDATA[<xsl:apply-templates select="…" />]]></tt>
-  réapplique <a>tous</a> les templates à tous les nœuds sélectionnés
-  par l'expression XPath.</li>
-</ol></div>
-<div class="sws-slide">
-<h1>Priorité des templates</h1>
-<p>Que se passe-t-il si deux templates peuvent s'appliquer à un même
-  élément&nbsp;? On applique les règles de priorité suivantes
-  (simplifiées) :
-</p>
-<ol>
-<li>Si le <tt>match</tt> d'un template contient un <tt>|</tt> entre
-  plusieurs chemins, la priorité la plus élevée de ces chemins est choisie
-</li>
-<li>si le <tt>match</tt> est de la forme : <tt>child::foo</tt>
-  ou <tt>attribute:foo</tt>, sa priorité est 0 </li>
-<li>si le <tt>match</tt> est de la forme : <tt>child::*</tt> ou
-  ou <tt>attribute:*</tt>, sa priorité est -0.25 </li>
-<li>si le <tt>match</tt> est de la form : <tt>child::text()</tt>
-  ou <tt>child::node()</tt> (idem avec <tt>attribute</tt>), sa
-  priorité est -0.5</li>
-<li>sinon (test complexe, par exemple <tt>foo[ count(child::bar) &lt;
-    4]</tt>), la priorité est 0.5</li>
-</ol>
-<p>Le template ayant la priorité la plus élevée est choisi. On peut
-  donner explicitement à un template une priorité avec
-  l'attribut <tt>priority="…"</tt><br/>Le moteur XSLT <s>lève une
-  erreur</s> d'exécution si deux templates ont exactement la même
-  priorité.</p>
-</div>
-<div class="sws-slide">
-<h1>Templates par défaut</h1>
-<p>Il existe 3 templates <a>par défaut</a> qui sont toujours
-  définis :</p>
-<code><![CDATA[  <xsl:template match="*|/">
-     <xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="text()|@*">
-    <xsl:value-of select="."/>
-  </xsl:template>
-
-  <xsl:template match="processing-instruction()|comment()"/>
-]]>
-</code>
-<p>Ils ont des priorités inférieures aux templates présents dans le
- fichier donc ne sont appliqués
-  que si aucun templates ne fonctionne. Ils permettent de « descendre
-  dans l'arbre » (jusqu'aux textes), si aucun template ne s'applique à
-  la racine.
-</p>
-</div>
-  </body>
-</html>
diff --git a/xpi/xpi_05.xhtml b/xpi/xpi_05.xhtml
deleted file mode 100644 (file)
index aa49a92..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>XSLT (suite)</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-      a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-    <style type="text/css">
-      .xml-tag { color: #00486c; }
-    </style>
-    <script type="text/javascript">
-      <![CDATA[
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(function () {
-       $(".inline-xml").each(function(i, elem)
-      {
-      var jelem = $(elem);
-      var code = jelem.html();
-      code = code.replace ("<![CDATA" + "[", "").replace ("]" + "]>", "");
-      code = code.replace (/>/g, ">>>");
-      code = code.replace (/</g, "<span class='xml-tag'>&lt;");
-      code = code.replace (/>>>/g,"&gt;</span>");
-
-      jelem.html(code);
-      });
-  });
-
-      var checkSVG = function (o, i)
-      {
-            if (i >= 10 || SWS.Utils.isUndefined(o) || o == null) return;
-            var svg = o.getSVGDocument();
-            if (svg == null) {
-              setTimeout(function() { checkSVG(o, i+1); }, 200);
-            } else {
-         var alltext = $(svg).find("text");
-         alltext.css("font-family", "DIN");
-         alltext.css("font-size", "70%");
-
-            };
-      };
-      $(window).load(function() {
-      $("embed").ready(function() {
-         setTimeout(function() {
-         $("embed").each(function(i, o) { checkSVG(this,0);   });
-}, 1000);
-        });
-     });
-      $(window).load(SWS.Presentation.init);
-
-       ]]>
-
-    </script>
-
-  </head>
-  <body>
-    <a href="xpi_04.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>XML et Programmation Internet</h1>
-      <h1>Cours 5</h1>
-      <a href="mailto:kn@lri.fr">kn@lri.fr</a>
-    </div>
-    <h1>Structures de contrôle</h1>
-    <div class="sws-slide">
-      <h1><tt>xsl:value-of</tt> </h1>
-      <p>On peut récupérer des nœuds texte dans le document source au
-      moyen de la balise <tt>&lt;xsl:value-of select="<a>xpath
-      expr</a>"/&gt;</tt>. L'expression <tt><a>xpath expr</a></tt> est
-      évaluée et <a>convertie en chaîne de caractères</a> en suivant
-      les conversions d'XPath (voir cours 3).
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>Itération avec <tt>xsl:for-each</tt></h1>
-      <p>La balise <code>  &lt;xsl:for-each select="xpath expr"&gt;
-         <i>corp de boucle</i>
-  &lt;/xsl:for-each&gt;
-</code> évalue le corp de la boucle pour chaque nœud renvoyé par
-       l'expression <tt><a>xpath expr</a></tt>. À chaque itération
-       le nœud considéré devient le <a>nœud contexte</a> (i.e. celui
-       renvoyé par l'axe <tt>self::</tt>)</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Itération ordonnée <tt>xsl:sort</tt></h1>
-      <p>On peut modifier l'ordre dans lequel les éléments sont
-      parcourus par une boucle <tt>xsl:for-each</tt> en utilisant
-      l'élément <code>  <![CDATA[<xsl:sort select="expression"
-   lang="language-code"
-   data-type="text|number|qname"
-   order="ascending|descending"
-   case-order="upper-first|lower-first"/>
-]]></code> qui n'est valide que comme fils d'un <tt>xsl:for-each</tt>
-      ou <tt>xsl:apply-templates</tt></p>
-      <ul>
-       <li><tt>select</tt> : expression XPath selon laquelle
-       trier</li>
-       <li><tt>lang</tt> : code de la <a>locale</a> selon laquelle
-       trier (par exemple en français, <tt>é</tt> est
-       avant <tt>f</tt>)</li>
-       <li><tt>data-type</tt> : types des données triées (text
-       (defaut), nombre ou élément XML (ordre du document utilisé
-       dans ce cas)</li>
-       <li><tt>order</tt> : s'il faut trier en ordre croissant ou
-       décroissant</li>
-       <li><tt>case-order</tt> : lors d'un tri <a>text</a> si les
-       majuscules sont avant les minuscules (defaut) ou inversement</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Conditionnelle simple avec <tt>xsl:if</tt></h1>
-      <p>On peut évaluer conditionnellement une portion de code XSLT
-      en la plaçant dans une balise:<code><![CDATA[      <xsl:if test="expression">
-      ...
-      </xsl:if>]]> </code> Le résultat de l'expression est interprété
-      comme un booléen (selon les règles de conversion d'XPath). S'il
-      vaut vrai, le corp du <tt>xsl:if</tt> est exécuté.</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Conditionnelle complexe avec <tt>xsl:choose</tt></h1>
-      <p>On peut écrire plusieurs portions de code, gardées par des
-      conditions distinctes
-      en les plaçant dans une balise:<code><![CDATA[      <xsl:choose >
-       <xsl:when test="cond 1"> code 1</xsl:when>
-       <xsl:when test="cond 2"> code 2</xsl:when>
-       <xsl:when test="cond 3"> code 3</xsl:when>
-       ...
-       <xsl:otherwise> code sinon </xsl:otherwise>
-      </xsl:choose>]]> </code>
-       Les conditions <tt>xsl:when</tt> sont évaluées dans l'ordre et
-       le corp de la première valant vrai est exécuté. Si aucune
-       condition n'est vérifiée, le corp de
-       l'instruction <tt>xsl:otherwise</tt> est exécuté.
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>Exemple simple (génération d'une page Web)</h1>
-      <p>On réutilise (encore) le fichier de recette:</p>
-    <code style="color:black;font-size:80%;position:relative;left:10%;"><![CDATA[
-<!DOCTYPE recette SYSTEM "recette.dtd">
-<recette difficulte="facile">
-<title>Tiramisú</title>
-<ingredients>
-  <ingredient>mascarpone</ingredient>
-  <ingredient>oeufs</ingredient>
-  <ingredient>sucre</ingredient>
-  <ingredient>café</ingredient>
-  <ingredient>biscuits</ingredient>
-</ingredients>
-<duree>2h</duree>
-<etapes>
-  <e num="1">Séparer les blancs des jaunes</e>
-  <e num="2">…</e>
-  …
-</etapes>
-</recette>
-]]></code>
-    </div>
-    <div class="sws-slide">
-    <code style="color:black;font-size:80%;position:relative;left:10%;"><![CDATA[
- <xsl:stylesheet version="1.0"
-   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-   <xsl:template match="/">
-     <html>
-       <head>
-          <title>Ingrédients du ]]><u>&lt;xsl:value-of select="descendant::title" /&gt;</u><![CDATA[ </title>
-       </head>
-       <body>
-        <h1>Ingrédients du ]]><u>&lt;xsl:value-of select="descendant::title" /&gt;</u><![CDATA[ </h1>
-        <ul>
-          ]]><u>&lt;xsl:for-each select="descendant::ingredient"&gt;</u>
-              <u>&lt;xsl:sort select="child::text()" /&gt;</u><![CDATA[
-            <li> ]]><u>&lt;xsl:value-of select="child::text()" /&gt;</u><![CDATA[ </li>
-          ]]><u>&lt;/xsl:for-each&gt;</u><![CDATA[
-        </ul>
-         <p>Étape]]><u>&lt;xsl:if test="count(descendant::e) &amp;gt;1"&gt;s&lt;/xsl:if&gt;</u><![CDATA[</p>
-         <ol>
-          ]]><u>&lt;xsl:apply-templates select="descendant::e"&gt;</u>
-              <u>&lt;xsl:sort select="@num" data-type="number"/&gt;</u>
-           <u>&lt;/xsl:apply-templates&gt;</u><![CDATA[
-        </ol>
-       </body>
-     </html>
-   </xsl:template>
-   <xsl:template match="e">
-     <li><xsl:value-of select="."/></li>
-   </xsl:template>
-  </xsl:stylesheet>
-]]></code>
-    </div>
-<h1>Utilisation avancée</h1>
-<div class="sws-slide">
-  <h1>Nom d'attributs ou d'éléments dynamiques</h1>
-  <p>Il est fréquent de vouloir choisir <a>dynamiquement</a> les noms
-  des éléments. Par exemple :</p>
-<code><![CDATA[
-  <xsl:choose>
-    <xsl:when test="condition"> <b> </xsl:when>
-    <xsl:otherwise>  <i> </xsl:otherwise>
-  </xsl:choose>
-
-    .... code complexe pour calculer le texte ....
-
-   <xsl:choose>
-    <xsl:when test="condition"> </b> </xsl:when>
-    <xsl:otherwise>  </i> </xsl:otherwise>
-  </xsl:choose>]]>
-</code>
-<p class="sws-pause"><s>code incorrect </s>: les balises <tt>&lt;b&gt;</tt>
-et <tt>&lt;i&gt;</tt> ne sont pas bien parenthésées</p>
-</div>
-<div class="sws-slide">
-<h1>Solution naïve</h1>
-<p>On peut dupliquer le code de manière à respecter les balises
-  ouvrantes/fermantes : </p>
-<code><![CDATA[
-  <xsl:choose>
-    <xsl:when test="condition">
-      <b>
-           .... code complexe pour calculer le texte ....
-      </b>
-    </xsl:when>
-    <xsl:otherwise>
-      <i>
-           .... code complexe pour calculer le texte ....
-      </i>
-      </xsl:otherwise>
-  </xsl:choose>]]>
-</code>
-<p><s>Inélégant et non-maintenable</s> : si on a 10 cas, on copie cole
-  10 fois le code complexe.</p>
-</div>
-<div class="sws-slide">
-<h1>Nom d'attributs ou d'éléments dynamiques</h1>
-<p>On a besoin : </p>
-<ul>
-  <li>de pouvoir stocker dans des « variables » le résultat d'une
-  expression XSLT</li>
-  <li>de pouvoir créer des éléments ou des attributs dont le nom est
-  une expression</li>
-</ul>
-<p><s>Problème</s> : XPath ne permet pas de définir des variables</p>
-</div>
-<div class="sws-slide">
-  <h1>Variables en XSLT (<tt>xsl:variable</tt>)</h1>
-  <p>Comme dans tout langage, on veut pouvoir évaluer <a>une
-  expression</a> et donner un <a>nom</a> au <a>résultat</a> pour
-  pouvoir le réutiliser plusieurs fois. En XSLT, on utilise la
-  balise <tt>xsl:variable</tt> :</p>
-<code><![CDATA[
-  <xsl:variable name="result" select="count(descendant::foo)" />
-
-  Le document contient <xsl:value-of select="$result" /> éléments foo.
-]]></code>
-<ul>
-  <li>L'attribut <tt>name</tt> est obligatoire et permet de définir le
-  nom de la variable</li>
-  <li>L'attribut <tt>select</tt> s'il est présent permet de définir le
-  contenu</li>
-  <li>Au sein d'une expression XPath, on peut utiliser la
-  notation <tt>$x</tt> pour référencer le contenu de la
-  variable <tt>x</tt></li>
-</ul>
-</div>
-<div class="sws-slide">
-<h1>Définitions complexes de variables</h1>
-<p>On peut aussi donner du contenu à l'élément <tt>xsl:variable</tt>,
-  pour définir la valeur de la variable : </p>
-<code><![CDATA[
-  <xsl:variable name="result">
-    <xsl:choose>
-      <xsl:when test="…condition…">b</xsl:when>
-      <xsl:otherwise>i</xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>]]>
-</code>
-</div>
-<div class="sws-slide">
-<h1>Portée des variables</h1>
-<p>Les variables sont <s>non-modifiables</s> une fois définies. Elles
-  sont visibles par tous les éléments suivant la balise
-  fermante <tt>&lt;/xsl:variable&gt;</tt> se trouvant avant la
-  fermeture de l'élément contenant la variable. Exemple : </p>
-<code style="background:white;"><![CDATA[
-<xsl:template match="x">
-  <xsl:variable name="total" select="count(descendant::text())" />
-  <!-- la variable total est visible à partir d'ici et
-       jusqu'au </xsl:template> -->
-
-
-  <xsl:for-each select="descendant::text()">
-    <p>texte <xsl:value-of select="position()" /> sur
-      <xsl:value-of select="$total" /> :
-      <xsl:value-of select="." />
-    </p>
-  </xsl:for-each>
-
-</xsl:template>]]>
-</code>
-</div>
-<div class="sws-slide">
-<h1>Création dynamique d'éléments ou d'attributs</h1>
-<p>On peut utiliser les instructions <tt>xsl:element</tt>
-  et <tt>xsl:attribute</tt> pour créer des éléments et des attributs
-  dont le nom est calculé dynamiquement :
-</p>
-<code><![CDATA[
-  <xsl:element name="foo">
-    <xsl:attribute name="bar">baz</xsl:attribute>
-    ...
-  </xsl:element>
-]]></code>
-<p>produira dans le document de sortie :</p>
-<code><![CDATA[  <foo bar='baz'>
-   ...
-  </foo>
-]]></code>
-</div>
-<div class="sws-slide">
-  <h1>Échappement d'expressions XPath dans les chaînes</h1>
-  <p>À part les attributs <tt>select</tt> et <tt>test</tt> de
-  certaines balises XSLT, les autres attributs sont <s>des chaines de
-  caractères</s>. On peut cependant intégrer des expressions XPath au
-  moyen d'accolades <tt>{ }</tt>
-  </p>
-  <code><![CDATA[
-    <a href="descendant::url/child::text()">Le site!</a>]]>
-  </code>
-  <p>Dans le code ci-dessus, <tt>href</tt> étant un attribut non
-  interprété (ce n'est pas une balise XSLT), le chemin XPath
-  apparaîtra dans le résultat (ce qu'on ne veut pas). On peut écrire
-  :</p>
-  <code><![CDATA[
-    <a href="{descendant::url/child::text()}">Le site!</a>]]>
-  </code>
-</div>
-<div class="sws-slide">
-<h1>Retour sur notre exemple</h1>
-<code><![CDATA[
-  <xsl:variable name="nombalise">
-    <xsl:choose>
-     <xsl:when test="condition">b</xsl:when>
-     <xsl:otherwise>i</xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-
-  <xsl:element name="{$nombalise}">
-      .... code complexe pour calculer le texte ....
-  </xsl:element>
-]]></code>
-<p><s>Attention</s> : il faut écrire <tt>{$nombalise}</tt> sinon le
-  processeur XSLT essayera de créer un
-  élément <tt>&lt;$nombalise&gt;</tt> ce qui est illégal (et
-  provoquera une erreur)</p>
-</div>
-<h1>Autres fonctionalités</h1>
-<div class="sws-slide">
-<h1>Spécifier le type de sortie</h1>
-<p>On peut placer une balise <tt>xsl:output</tt> dans la balise racine
-  de la feuille de style (<tt>xsl:stylesheet</tt>)</p>
-<code ><![CDATA[   <xsl:output
-      method="xml|html|text"
-      cdata-section-elements="namelist"
-      indent="yes|no"
-   />
-]]></code>
-<ul><li><tt>method</tt> : décrit le type de fichier généré (XML
-    (defaut), HTML (plus permissif sur les balises non fermées),
-    texte)</li>
-  <li><tt>cdata-section-elements</tt> : liste de nom de balises
-  séparées par des espaces. Dans ces balises, le contenu du texte
-  n'est pas interprété (<tt>&gt;</tt>, <tt>&lt;</tt> peuvent êtres
-  écrits directement)</li>
-  <li><tt>indent</tt> : si la sortie est du XML, indenter les balises
-  de manière lisible</li>
-</ul>
-</div>
-<div class="sws-slide">
-  <h1>Copie de texte et de nœuds </h1>
-  <ul>
-    <li>La balise <tt>&lt;xsl:copy-of select='expression'&gt;</tt>
-    copie le résultat de l'expression XPath (qui peut être un nœud)
-    dans la sortie, avec ses attributs et son contenu</li>
-    <li>La balise <tt>&lt;xsl:text&gt; ... &lt;/xsl:text&gt;</tt>
-    copie le texte tel quel (sans toucher aux blancs) dans la sortie</li>
-  </ul>
-</div>
-  </body>
-</html>
diff --git a/xpi/xpi_06.xhtml b/xpi/xpi_06.xhtml
deleted file mode 100644 (file)
index 0b97200..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>DOM</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-      a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-    <style type="text/css">
-      .xml-tag { color: #00486c; }
-    </style>
-    <script type="text/javascript">
-      <![CDATA[
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(function () {
-       $(".inline-xml").each(function(i, elem)
-      {
-      var jelem = $(elem);
-      var code = jelem.html();
-      code = code.replace ("<![CDATA" + "[", "").replace ("]" + "]>", "");
-      code = code.replace (/>/g, ">>>");
-      code = code.replace (/</g, "<span class='xml-tag'>&lt;");
-      code = code.replace (/>>>/g,"&gt;</span>");
-
-      jelem.html(code);
-      });
-  });
-
-      var checkSVG = function (o, i)
-      {
-            if (i >= 10 || SWS.Utils.isUndefined(o) || o == null) return;
-            var svg = o.getSVGDocument();
-            if (svg == null) {
-              setTimeout(function() { checkSVG(o, i+1); }, 200);
-            } else {
-         var alltext = $(svg).find("text");
-         alltext.css("font-family", "DIN");
-         alltext.css("font-size", "70%");
-
-            };
-      };
-      $(window).load(function() {
-      $("embed").ready(function() {
-         setTimeout(function() {
-         $("embed").each(function(i, o) { checkSVG(this,0);   });
-}, 1000);
-        });
-     });
-      $(window).load(SWS.Presentation.init);
-
-       ]]>
-
-    </script>
-
-  </head>
-  <body>
-    <a href="xpi_05.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>XML et Programmation Internet</h1>
-      <h1>Cours 6</h1>
-      <a href="mailto:kn@lri.fr">kn@lri.fr</a>
-    </div>
-    <h1>Le modèle DOM</h1>
-    <div class="sws-slide">
-      <h1>Programmer avec XML</h1>
-<p>La représentation textuelles de documents XML n'est pas
-  adaptée à la manipulation des données par un programme : </p>
-<ul>
-  <li>On ne veut pas lire le fichier « caractère par caractère » </li>
-  <li>On veut s'assurer que le fichier est bien formé et valide </li>
-  <li>On veut pouvoir manipuler la structure d'arbre que représente le
-    fichier </li>
-</ul>
-
-    </div>
-    <div class="sws-slide">
-      <h1>Document Object Model</h1>
-      <p>DOM est une <a>spécification</a> du W3C qui
-       explique <a>comment</a> représenter un document dans un
-       langage <a>orienté objet</a>.<br/>Avantages :
-      </p>
-      <ul>
-       <li>N'est pas limité à un seul langage</li>
-       <li>Permet de spécifier une API unique : programmer en XML en
-         Java ou Python ne sera pas différent</li>
-      </ul>
-      <p>Inconvénivents :</p>
-      <ul>
-       <li>En pratique, orienté Java</li>
-       <li>Se focalise sur les lanages objets de manière arbitraire</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Que définit le DOM ?</h1>
-      <p>Le DOM définit des <a>interfaces</a> (c'est à dire, <a>des noms
-         de classes</a> auquels sont associés
-         des <a>propriétés</a>). Il définit aussi des types de bases
-         (chaînes de caractères, entiers, etc.) et des types
-         auxiliaires qui sont implantés par les types de bases du
-         langage.
-      </p>
-    </div>
-    <div class="sws-slide">
-      <h1>L'interface <tt>Node</tt> (1/4, constantes) </h1>
-      <code>
-       //attention ce n'est pas du Java
-       interface <a>Node</a> {
-
-       //constantes entières définissant les types de nœuds
-       const unsigned short      <a>ELEMENT_NODE</a>                   = 1;
-       const unsigned short      <a>ATTRIBUTE_NODE</a>                 = 2;
-       const unsigned short      <a>TEXT_NODE</a>                      = 3;
-       const unsigned short      <a>CDATA_SECTION_NODE</a>             = 4;
-       const unsigned short      <a>ENTITY_REFERENCE_NODE</a>          = 5;
-       const unsigned short      <a>ENTITY_NODE</a>                    = 6;
-       const unsigned short      <a>PROCESSING_INSTRUCTION_NODE</a>    = 7;
-       const unsigned short      <a>COMMENT_NODE</a>                   = 8;
-       const unsigned short      <a>DOCUMENT_NODE</a>                  = 9;
-       const unsigned short      <a>DOCUMENT_TYPE_NODE</a>             = 10;
-       const unsigned short      <a>DOCUMENT_FRAGMENT_NODE</a>         = 11;
-       const unsigned short      <a>NOTATION_NODE</a>                  = 12;
-
-
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>L'interface <tt>Node</tt> (2/4, valeur, nom et type) </h1>
-
-
-      <code>
-       //nom et valeur du nœud
-
-       readonly attribute DOMString       <a>nodeName</a>;
-        attribute DOMString                <a>nodeValue</a>;
-      </code>
-      <ul>
-       <li>Pour les éléments <tt>nodeValue</tt> vaut <tt>null</tt>
-         et <tt>nodeName</tt> est le nom de la balise
-       </li>
-       <li>Pour les nœuds texte <tt>nodeValue</tt> est le texte
-         et <tt>nodeName</tt> est la chaine fixe <tt>#text</tt>
-       </li>
-       <li>Pour les attributs <tt>nodeValue</tt> vaut la valeur de
-         l'attribut et <tt>nodeName</tt> est son nom
-       </li>
-       </ul>
-      <code>
-       //L'une des 12 constantes du slide précédent
-       readonly attribute unsigned short  <a>nodeType</a>;
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>L'interface <tt>Node</tt> (3/4, navigation) </h1>
-      <code>
-       readonly attribute Node            <a>parentNode</a>;
-       readonly attribute NodeList        <a>childNodes</a>;
-       readonly attribute Node            <a>firstChild</a>;
-       readonly attribute Node            <a>lastChild</a>;
-       readonly attribute Node            <a>previousSibling</a>;
-       readonly attribute Node            <a>nextSibling</a>;
-       readonly attribute NamedNodeMap    <a>attributes</a>;
-      </code>
-      <p>Utilise deux interfaces auxiliaires:</p>
-      <code>
-       interface NodeList {
-       Node               <a>item(in unsigned long index)</a>;
-       readonly attribute unsigned long   <a>length</a>;
-       };
-       interface NamedNodeMap {
-       Node               <a>getNamedItem(in DOMString name)</a>;
-       …
-       }
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>L'interface <tt>Node</tt> (4/4, mise à jour) </h1>
-      <code>
-       //Renvoie le document auquel appartient le nœud
-       readonly attribute Document        <a>ownerDocument</a>;
-
-       Node               <a>insertBefore(in Node newChild, 
-                                           in Node refChild)
-                                        raises(DOMException)</a>;
-
-       Node               <a>replaceChild(in Node newChild, 
-                                        in Node oldChild)
-                                        raises(DOMException)</a>;
-       Node               <a>removeChild(in Node oldChild)
-                                        raises(DOMException)</a>;
-       Node               <a>appendChild(in Node newChild)
-                                        raises(DOMException)</a>;
-       boolean            <a>hasChildNodes()</a>;
-
-       //Nécessaire pour copier un nœud d'un document dans un autre
-       Node               <a>cloneNode(in boolean deep)</a>;
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>Sous-interfaces de <tt>Node</tt></h1>
-      <p>L'interface <tt>Node</tt> est spécialisées en 12
-      sous-interfaces différents (les 12 types de nœuds
-      possibles). Les principales sont:
-      </p>
-      <ul>
-       <li><a><tt>Document</tt></a> : l'interface du nœud « racine » du
-       document </li>
-       <li><a><tt>Element</tt></a> : l'interface des nœuds
-       correspondant à des balises</li>
-       <li><a><tt>Attr</tt></a> : l'interface des nœuds
-       correspondant à des attributs</li>
-       <li><a><tt>Text</tt></a> : l'interface des nœuds
-       correspondants à des textes </li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>L'interface <tt>Text</tt></h1>
-      <code>
-       interface Text : Node {
-       //renvoie vrai si le nœud ne contient que des espaces
-       readonly attribute boolean         <a>isElementContentWhitespace</a>;
-       …
-       }
-      </code>
-      <p>(La spécification de DOM mentionne d'autres propriétés)</p>
-    </div>
-    <div class="sws-slide">
-      <h1>L'interface <tt>Attr</tt></h1>
-      <code>
-       interface Attr : Node {
-       readonly attribute DOMString       <a>name</a>;
-        readonly attribute DOMString       <a>value</a>;
-
-       readonly attribute Element         <a>ownerElement</a>;
-       …
-       };
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>L'interface <tt>Element</tt></h1>
-      <code>
-       interface Element : Node {
-       readonly attribute DOMString       <a>tagName</a>;
-       //manipulation par chaine :
-       DOMString          <a>getAttribute(in DOMString name)</a>;
-       void               <a>setAttribute(in DOMString name, 
-                                        in DOMString value)
-                                        raises(DOMException)</a>;
-
-       void               <a>removeAttribute(in DOMString name)
-                                        raises(DOMException)</a>;
-
-       //manipulation par nœud :
-       Attr               <a>getAttributeNode(in DOMString name)</a>;
-       Attr               <a>setAttributeNode(in Attr newAttr)
-                                        raises(DOMException)</a>;
-       Attr               <a>removeAttributeNode(in Attr oldAttr)
-                                       raises(DOMException)</a>;
-
-       //renvoie tous les descendants avec un certain tag
-       NodeList           <a>getElementsByTagName(in DOMString name)</a>;
-
-       }
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>L'interface <tt>Document</tt></h1>
-      <code>
-       inteface Document : Node {
-       //L'élément racine
-        readonly attribute Element         <a>documentElement</a>;
-
-       //Création de nœuds pour ce document :
-
-       Element            <a>createElement(in DOMString tagName)
-                                        raises(DOMException)</a>;
-       Text               <a>createTextNode(in DOMString data)</a>;
-       Attr               <a>createAttribute(in DOMString name)
-                                        raises(DOMException)</a>;
-
-       //Les descendants avec un tag particulier
-       NodeList           <a>getElementsByTagName(in DOMString tagname)</a>;
-
-
-       //Copie un nœud, éventuellement avec ses descendants et
-       //en fait un nœud ajoutable au document :
-       Node               <a>importNode(in Node importedNode, 
-                                in boolean deep)</a>;
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>Modèle mémoire</h1>
-      <p>Un <a>nœud</a> (objet implémentant l'interface <tt>Node</tt>)
-      ne peut pas appartenir à deux documents. Exemple : </p>
-      <code>
-       Node noeud_a = document1.getElementByTagName("a").item(0);
-
-       <s>document2.appendChild(noeud_a);</s>//Exception si document2 n'est
-                                      //pas le même objet que
-                                      document1
-       //par contre ceci est ok:
-       document2.appendChild(<a>document2.importNode</a>(noeud_a, true));
-      </code>
-    </div>
-    <h1>Java API for XML Processing</h1>
-    <div class="sws-slide">
-      <h1>Introduction à JAXP</h1>
-      <p>API de la bibliothèque standard Java qui permet de manipuler
-      du XML. Elle comprend (entre autres) :</p>
-      <ul>
-       <li>Lecture et écriture de documents <a>en streaming</a>
-       (cours 7)</li>
-       <li>Implémentation complète de la
-       spécification <a>DOM</a></li>
-       <li>Moteur XSLT (et donc XPath)</li>
-      </ul>
-      <p>Inconvénients : la bibliothèque essaye d'être très générique,
-      afin que n'importe qui puisse fournir son implémentation de DOM
-      en utilisant les interfaces fournies. Il faut donc parfois
-      passer par des grandes séquences d'incatations magiques pour
-      créer un objet</p>
-    </div>
-    <div class="sws-slide">
-      <h1>Structure de l'API</h1>
-      <ul>
-       <li>Les types et interfaces spécifiés par le w3C se trouvent
-       dans le packages <tt>org.w3c.*</tt> </li>
-       <li>Les types « usuels» pour XML sont
-       dans <tt>org.xml.*</tt></li>
-       <li>Les <a>classes</a> concrètes java implémentant les
-       interfaces sont dans <tt>javax.xml.*</tt></li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1><tt>Factory</tt> <i>design pattern</i></h1>
-      <p>Comme toutes les API complexes en Java (et dans les langages
-       objets en général), Jaxp utilise le <i>design pattern</i>
-       de <a>Factory</a>. </p>
-      <p>Pour créer un objet de type <tt>Foo</tt> on ne fait pas
-      simplement <tt>new Foo(…);</tt> mais on utilise une
-      classe <tt>FooFactory</tt> qui possède une
-      méthode <tt>.createFoo(…)</tt>
-      </p>
-      <p >Dans quel cas est-ce intéressant ?</p>
-      <p class="sws-pause">Quand <tt>Foo</tt> est une interface. On
-      ne peut pas faire <tt>new</tt> sur une interface. Il faut donc
-      une méthode pour appeler le constructeur de la classe
-      implémentant <tt>Foo</tt> puis qui le caste en <tt>Foo</tt> … </p>
-
-    </div>
-    <div class="sws-slide">
-      <h1><tt>Factory</tt> <i>design pattern</i> (exemple) </h1>
-      <img style="margin-left:10%;width:80%" src="factory_pattern_uml_diagram.jpg" />
-    </div>
-    <div class="sws-slide">
-      <h1>Création d'un document : <tt>DocumentBuilder</tt></h1>
-      <p>La classe <tt>DocumentBuilder</tt> permet de créer un
-      document XML : </p>
-      <ul><li>Soit en le lisant depuis un fichier (avec la
-         méthode <tt>parse()</tt></li>
-       <li>Soit vide, avec la méthode <tt>newDocument()</tt></li>
-      </ul>
-      <p>Pour obtenir un <tt>DocumentBuidler</tt>, il faut passer par
-       un <tt>DocumentBuilderFactory</tt> : </p>
-      <code>
-       //création de la Factory
-       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-
-       //On définit quelques options
-       dbf.setIgnoringElementContentWhitespace(true); // option
-        dbf.setValidating(false); // option
-
-       //On crée le documentBuilder
-       DocumentBuilder db = dbf.newDocumentBuilder();
-
-       //On charge le document
-       Document doc = db.parse("fichier.xml");
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>DOM dans JAXP</h1>
-      <p>Le <tt>DocumentBuilder</tt> permet d'obtenir
-      un <tt>Document</tt> (interface Java qui implémente l'interface DOM
-      du même nom)</p>
-      <p><a>Conventions de nommage :</a> les <i>propriétés</i> des
-      interfaces DOM sont préfixées par <tt>get</tt> ou <tt>set</tt>
-      en Java. Les méthodes ont le même nom. Exemple :</p>
-      <code>
-       Node n = …;
-       n.getNodeType(); //DOM défini nodeType;
-        n.getFirstChild(); //DOM défini firstChild;
-       n.appendChild(m);  //C'est une méthode en DOM donc même nom
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>Conversions</h1>
-      <p>On travaille la plupart du temps avec des objets ayant le
-       type <tt>Node</tt>. La manière correcte de les convertir est la
-       suivante :
-      </p>
-      <code>
-       switch (n.getNodeType()) {
-
-       case Node.DOCUMENT_NODE:
-          Document d = (Document) n;
-          …
-           break;
-        case Node.ELEMENT_NODE:
-          Element e = (Element) n;
-           …
-           break;
-        case Node.TEXT_NODE:
-          Text t = (Text) n;
-           …
-          break;
-       }
-      </code>
-    </div>
-    <div class="sws-slide">
-      <h1>Rappels : classes et interfaces utiles en Java</h1>
-      <p> Interface <tt>Map&lt;K,V&gt;</tt> permet d'associer des
-      clés de types <tt>K</tt> à des valeurs de type <tt>V</tt>
-      (<tt>K</tt> et <tt>V</tt> doivent être des <tt>Objects</tt> donc
-      pas <tt>int</tt>, <tt>bool</tt> , …)</p>
-      <p>Implémentations possibles
-      : <tt>TreeMap</tt>, <tt>HashMap</tt></p>
-      
-    </div>
-  </body>
-</html>
diff --git a/xpi/xpi_07.xhtml b/xpi/xpi_07.xhtml
deleted file mode 100644 (file)
index 6a523f3..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>XPath et XSLT en Java</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-      a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-    <style type="text/css">
-      .xml-tag { color: #00486c; }
-    </style>
-    <script type="text/javascript">
-      <![CDATA[
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(function () {
-       $(".inline-xml").each(function(i, elem)
-      {
-      var jelem = $(elem);
-      var code = jelem.html();
-      code = code.replace ("<![CDATA" + "[", "").replace ("]" + "]>", "");
-      code = code.replace (/>/g, ">>>");
-      code = code.replace (/</g, "<span class='xml-tag'>&lt;");
-      code = code.replace (/>>>/g,"&gt;</span>");
-
-      jelem.html(code);
-      });
-  });
-
-      var checkSVG = function (o, i)
-      {
-            if (i >= 10 || SWS.Utils.isUndefined(o) || o == null) return;
-            var svg = o.getSVGDocument();
-            if (svg == null) {
-              setTimeout(function() { checkSVG(o, i+1); }, 200);
-            } else {
-         var alltext = $(svg).find("text");
-         alltext.css("font-family", "DIN");
-         alltext.css("font-size", "70%");
-
-            };
-      };
-      $(window).load(function() {
-      $("embed").ready(function() {
-         setTimeout(function() {
-         $("embed").each(function(i, o) { checkSVG(this,0);   });
-}, 1000);
-        });
-     });
-      $(window).load(SWS.Presentation.init);
-
-       ]]>
-
-    </script>
-
-  </head>
-  <body>
-    <a href="xpi_06.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>XML et Programmation Internet</h1>
-      <h1>Cours 7</h1>
-      <a href="mailto:kn@lri.fr">kn@lri.fr</a>
-    </div>
-    <h1>Requêtes XPath en Java</h1>
-    <div class="sws-slide">
-      <h1>Moteur XPath en java</h1>
-      <p>L'API JAXP contient un moteur XPath 1.0 complet. Outre les
-      classes nécessaires au chargement de fichier et à la
-      manipulation du DOM (voir cours 6), il faut charger les éléments
-      du package <a><tt>javax.xml.xpath</tt></a>. Comme pour le reste
-      de JAXP, on passe par un <tt>XPathFactory</tt> pour créer une
-      nouvelle instance du moteur XPath.
-    </p>
-  </div>
-  <div class="sws-slide">
-    <h1>Exemple : packages</h1>
-    <code style="background:white;">  //Pour les documents et DOM
-  <kbd>import org.w3c.dom.*;
-  import javax.xml.namespace.QName;
-  import javax.xml.parsers.DocumentBuilder;
-  import javax.xml.parsers.DocumentBuilderFactory;</kbd>
-
-  //Pour le moteur XPath
-  <u>import javax.xml.xpath.XPathFactory;
-  import javax.xml.xpath.XPath;
-  import javax.xml.xpath.XPathConstants;</u>
-
-  <kbd>public class TestXPath {</kbd>
-  //Deux attributs pour contenir le moteur XPath et le document builder
-    <kbd>XPath xp_ = null;
-    DocumentBuilder db_ = null;</kbd>
-
-    </code>
-  </div>
-  <div class="sws-slide">
-    <h1>Exemple : constructeur</h1>
-    <code style="background:white;">  <kbd>public TestXPath () {
-    try {
-     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-     factory.setNamespaceAware(true);
-     db_ = factory.newDocumentBuilder();
-
-     <u>XPathFactory xf = XPathFactory.newInstance();
-     xp_ = xf.newXPath();</u>
-
-   } catch (Exception e) {</kbd>
-    //Peuvent être levées en cas d'erreur de création d'objet XPath
-    //DocumentBuilder, par exemple si des options passées sont
-    //non-supportées.
-<kbd>    }
-  }</kbd>
-
-    </code>
-  </div>
-<div class="sws-slide">
-    <h1>Exemple : méthode d'évaluation</h1>
-    <code style="background:white;">
-   <kbd>NodeList eval(String fichier, String chemin) throws Exception {
-
-   </kbd>//Création d'un DOM pour le fichier source<kbd>
-   Document doc = db_.parse(fichier);
-
-   <u>NodeList nl = (NodeList) xp_.evaluate(chemin,
-                                         doc,
-                                         XPathConstants.NODESET);</u>
-
-
-   }</kbd>
-
-</code>
-</div>
-<div class="sws-slide">
-    <h1>Méthode <tt>XPath.evaluate()</tt></h1>
-<p>La méthode <tt>XPath.evaluate(xpath, n, type)</tt> permet d'évaluer une
-  l'expression <a>xpath</a> (donnée sous-forme de chaîne de
-  caractères), à partir du nœud contexte <tt>n</tt> (qui doit
-  implémenter l'interface <a>Node</a>). Le résultat est de
-  type <a>typ</a>. La fonction renvoie un résultat de
-  type <s>Object</s>. L'argument <tt>typ</tt> peut avoir 5 valeurs
-  possibles, définies dans la class <tt>XPathConstants</tt> :
-</p>
-<ul>
-  <li><tt><u>XPathConstants.BOOLEAN</u></tt>: le résultat est de type java <tt>Boolean</tt></li>
-  <li><tt><u>XPathConstants.NUMBER</u></tt>: le résultat est de type java <tt>Double</tt></li>
-  <li><tt><u>XPathConstants.STRING</u></tt>: le résultat est de type java <tt>String</tt></li>
-  <li><tt><u>XPathConstants.NODE</u></tt>: le résultat est de type java <tt>Node</tt></li>
-  <li><tt><u>XPathConstants.NODESET</u></tt>: le résultat est de type java <tt>NodeList</tt></li>
-</ul>
-<p>En effet, une expression XPath peut avoir comme valeur un booléen,
-  un ensemble de noeuds ou une chaîne dépendant du <s>contexte</s> où
-  elle est utilisée. On peut demander à Jaxp d'évaluer la requête
-  XPath pour un certain contexte.
-</p>
-</div>
-  <div class="sws-slide">
-    <h1>Exemple </h1>
-    <code><kbd>  Document doc = ...
-  String chemin = <u>"//descendant::year[position () = 1]";</u>
-
-
-  </kbd>//Crée une NodeList à un élément<kbd>
-  <u>NodeList nl = (NodeList) xp_.evaluate(chemin, doc, XPathConstants.NODESET);</u>
-
-  </kbd>//Renvoie le nœud correspondant ou null<kbd>
-  <u>Node n = (Node) xp_.evaluate(chemin, doc, XPathConstants.NODE);</u>
-
-  </kbd>//Renvoie le double java correspondant à la valeur<kbd>
-  <u>Double d = (Double) xp_.evaluate(chemin, doc, XPathConstants.NUMBER);</u>
-
-  </kbd>//Renvoie la chaine java correspondant au texte<kbd>
-  <u>String s = (String) xp_.evaluate(chemin, doc, XPathConstants.STRING);</u>
-
-  </kbd>//Renvoie la valeur de vérité corresondant au chemin<kbd>
-  <u>Boolean b = (Boolean) xp_.evaluate(chemin, doc, XPathConstants.BOOLEAN);</u>
-</kbd></code>
-</div>
-<div class="sws-slide">
-<h1>La classe <tt>XPathExpression</tt></h1>
-<p>Cette classe est similaire à l'utilisation
-  de <a>PreparedStatements</a> en JDBC.<br/>
-<span class="sws-pause">Utilité ?</span>
-<span class="sws-pause">compiler la requête XPath une fois pour toute
-  et donc éviter de re-parser la chaîne de caractère à chaque
-  appel. <br/>Exemple : </span>
-</p>
-<code>
-<kbd>   <u>XPathExpression ex = xp_.compile("//movie/title");</u>
-
-   NodeList nl1 = (NodeList) ex.evaluate(doc1, XPathConstants.NODESET);
-   NodeList nl2 = (NodeList) ex.evaluate(doc2, XPathConstants.NODESET);
-   NodeList nl3 = (NodeList) ex.evaluate(doc3, XPathConstants.NODESET);
-   …
-</kbd></code>
-
-</div>
-<h1>XSLT</h1>
-<div class="sws-slide">
-<h1> Applications de transformations XSLT </h1>
-<p>Appliquer une transformation XSLT est une opération complexe à
-  cause des différentes combinaisons possibles :
-</p>
-<ul>
-<li>Le fichier source (ex: <tt>movie.xml</tt>) peut être soit déjà
-  chargé comme un <tt>DOM</tt>, soit sous forme de fichier, soit sous
-  forme de chaîne de caractères,…</li>
-<li>Le fichier destination (ex: <tt>resultat.xhtml</tt>) est
-  représenté par une <tt>DOM</tt> qui doit être
-  éventuellement <i>sérialisé</i> (i.e. retransformé en fichier XML).
-</li>
-<li>La transformation elle même (ex: <tt>style.xsl</tt>) peut être
-  sous forme diverse (fichier, URL, DOM, …)
-</li>
-<p>On a donc une série de classes d'encapsulation (<tt>Source</tt>,
-  …), de factory, …</p>
-</ul>
-
-
-</div>
-<div class="sws-slide">
-<h1>Création d'une transformation</h1>
-<p>Pour créer une transformation XSLT, il faut les classes suivantes,
-  du package: <tt>javax.xml.transform</tt></p>
-<code>
-  //La classe permettant d'appliquer une transformation XSLT
-  //ainsi que sa factory
-  <u>import javax.xml.transform.Transformer;
-  import javax.xml.transform.TransformerFactory;</u>
-
-  //La classe permettant de charger des transformations ou des
-  //arguments de transformation sous forme de fichiers
-  <u>import javax.xml.transform.stream.StreamSource;</u>
-
-  //La classe permettant de charger des documents ou transformations
-  //sous forme de nœuds DOM
-  <u>import javax.xml.transform.dom.DOMSource;</u>
-
-</code>
-</div>
-
-<div class="sws-slide">
-  <h1>Exemple</h1>
-
-<code>
-  <u>TransformerFactory tf = TransformerFactory.newInstance();</u>
-  //On crée un StreamSource à partir d'un nom de fichier contenant
-  //la feuille de style XSLT
-  <u>Transformer tr = tf.newTransformer(new StreamSource("style.xsl"));</u>
-</code>
-
-<p>Le code ci-dessus crée un objet de type <tt>Transformer</tt>
-  représentant la transformation XSLT se trouvant dans le fichier
-  <tt>style.xsl</tt>. <br/>
-  Si on avait chargé le fichier sous forme d'un
-  arbre DOM:
-</p>
-<code>  <kbd>Document style_xsl = … ;</kbd>//chargement de style.xsl
-
-  <u>TransformerFactory tf = TransformerFactory.newInstance();</u>
-  <u>Transformer tr = tf.newTransformer(new DOMSource(style_xsl));</u>
-
-</code>
-
-</div>
-<div class="sws-slide">
-<h1>La méthode <tt>Transformer.transform()</tt></h1>
-<code>            transform(<u>Source</u> xmlSource, <u>Result</u> outputTarget)
-</code>
-<p>Les interfaces <tt>Source</tt> et <tt>Result</tt> permettent
-  d'abstraire le type de l'entrée et de la sortie. Ces dernières
-  peuvent être :</p>
-<ul>
-  <li>Des objets DOM : <u>DOMSource</u> et <u>DOMResult</u> </li>
-  <li>Des objets d'entrée sortie de la bibliothèque java standard
-  (<tt>File</tt>, <tt>Input/OutputStream</tt>, <tt>Reader/Writer</tt>,
-  chaîne de caractère représentant un nom de fichier
-  : <u>StreamSource</u> et <u>StreamResult</u></li>
-</ul>
-
-</div>
-<div class="sws-slide">
-<h1>Exemple</h1>
-<code>
- //On applique le transformer associé à style.xsl
- //sur le fichier movie et on écrit le résultat sur
- //la sortie standard :
-
- <u>tr.transform(new StreamSource("movies.xml"), new StreamResult(System.out));</u>
-</code>
-</div>
-<div class="sws-slide">
-  <h1>Sérialisation</h1>
-  <p>La manière la plus simple de <i>sérialiser un document</i> est de
-  créer une transformation XSLT vide (i.e qui fait l'identité) et de
-  demander à ce que le résultat soit un fichier (ou la sortie
-  standard)</p>
-  <code>
-  <kbd>Document doc = …; </kbd>//l'objet DOM que l'on veut sauver dans un fichier
-  <u>Transformer tr = tf.newTransformer();</u>
-  <u>tr.transform(new DOMSource(doc),</u>
-                  <u>new StreamResult(new FileOutputStream("fichier.xml")));</u>
-  </code>
-</div>
-<h1><i>Streaming</i> avec SAX</h1>
-<div class="sws-slide">
-  <h1><i>Streaming</i> ?</h1>
-  <p>Charger un document avec DOM permet d'accéder à l'arbre « en
-    entier » mais peut être couteux en mémoire (chaque nœud possède au
-    moins 4 pointeurs, 2 chaines de caractères, …). On veut pouvoir
-    effectuer certains types d'opération à la volée :
-  </p>
-  <ul class="sws-pause">
-    <li  class="sws-pause">Faire des statistiques sur les documents (compter le nombre
-    d'éléments, d'attributs, …)</li>
-    <li  class="sws-pause">Faire des transformations simples qui
-    préservent la structure (par exemple mettre les balises en
-    majuscules)</li>
-    <li  class="sws-pause">Valider vis à vis d'une DTD</li>
-    </ul>
-</div>
-<div class="sws-slide">
-<h1>Programmation évènementielle</h1>
-<p>Les parseurs SAX (Simple API for XML) reposent sur la programmation
-  évènementielle. Ils lisent le fichier d'entrée et génèrent un
-  certain nombre d'évènements, auxquels on peut réagir avec du code.
-  Les évènements sont :
-</p>
-<ul>
-  <li>Début de document</li>
-  <li>Fin de document </li>
-  <li>Ouverture de balise (avec le nom et la liste des attributs)</li>
-  <li>Fermeture de balise (avec le nom)</li>
-  <li>Élément texte</li>
-  <li>Commentaire </li>
-  <li>…</li>
-</ul>
-</div>
-<div class="sws-slide">
-  <h1>L'API SAX</h1>
-<code>
-import javax.xml.parsers.*;
-import org.xml.sax.*;
-import org.xml.sax.helpers.*;
-</code>
-<p>On doit étendre la classe par <tt>DefaultHandler</tt></p>
-</div>
-<div class="sws-slide">
-<h1><tt>DefaultHandler</tt></h1>
-<code>
- //le parseur a lu length caractères qui se trouvent dans
- //ch à partir de la position start
- void  <u>characters</u>(char[] ch, int start, int length)
-
- //le parseur a détécté la fin de document
- void  <u>endDocument</u>()
-
- //le parseur a détecté la fin d'un élément
- void  <u>endElement</u>(String uri, String localName, String qName)
-
- //le parseur a détecté du texte « ignorable »
- void  <u>ignorableWhitespace</u>(char[] ch, int start, int length)
-
- //le parseur a détecté le début du document
- void  <u>startDocument</u>()
- //le parseur a detecté le début d'un élément
- void  <u>startElement</u>(String uri,String localName, String qName,
-                           Attributes attributes)
-</code>
-<p><tt><u>Attributes</u></tt> est une classe auxiliaire qui permet de
-  connaître le nom, le nombre et les valeurs des attributs pour cette
-  balise.</p>
-</div>
-
-<div class="sws-slide">
-<h1><tt>Handler</tt> personnalisé</h1>
-<p>On étend la classe <tt>DefaultHandler</tt> : </p>
-<code>
-<u>class MyHandler extends DefaultHandler</u> {
-   private int nb_elems;
-   MyHandler() {
-     nb_elems = 0;
-   }
-    void  <u>startElement</u>(String uri,String localName, String qName,
-                           Attributes attributes)
-    throws SAXException {
-    nb_elems++;
-
-    }
-   int getNbElems() { return nb_elems; };
-}
-
-</code>
-
-</div>
-<div class="sws-slide">
-<h1>Invocation du parseur</h1>
-<p>On utilise (encore) une factory : </p>
-<code>
- public static void main(String[] args) {
-    …
-    SAXParserFactory spf = <u>SAXParserFactory.newInstance</u>();
-    spf.setNamespaceAware(true);
-    SAXParser saxParser = <u>spf.newSAXParser</u>();
-
-    MyHandler my = <kbd>new MyHandler()</kbd>;
-    XMLReader xmlReader = <u>saxParser.getXMLReader</u>();
-    xmlReader.<u>setContentHandler(my)</u>;
-    xmlReader.parse(filename);
-}
-</code>
-
-</div>
-  </body>
-</html>
diff --git a/xpi/xpi_08.xhtml b/xpi/xpi_08.xhtml
deleted file mode 100644 (file)
index 6c4e24c..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!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" >
-  <head>
-    <title>JSP</title>
-
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=utf-8" />
-    <meta name="copyright"
-          content="Copyright &#169; 2013 Kim Nguyễn" />
-
-    <!-- Load jQuery -->
-    <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
-    <!-- Load the library -->
-    <script src="../simpleWebSlides.js" type="text/javascript" ></script>
-
-    <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"  media="all" />
-    <!-- Load a custom Theme, the class-element marks this style-sheet
-      a "theme" that can be swtiched dynamicaly -->
-    <link class="sws-theme" rel="stylesheet"  title="U-Psud style"  href="../themes/uPsud.css" type="text/css" />
-
-    <!-- Customize some templates and initialize -->
-    <style type="text/css">
-      .xml-tag { color: #00486c; }
-    </style>
-    <script type="text/javascript">
-      <![CDATA[
-      SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
-      SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
-      SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
-
-      //Ensures that we load SWS at the very end, after MathJax has
-      //been initialized
-
-      $(window).load(function () {
-       $(".inline-xml").each(function(i, elem)
-      {
-      var jelem = $(elem);
-      var code = jelem.html();
-      code = code.replace ("<![CDATA" + "[", "").replace ("]" + "]>", "");
-      code = code.replace (/>/g, ">>>");
-      code = code.replace (/</g, "<span class='xml-tag'>&lt;");
-      code = code.replace (/>>>/g,"&gt;</span>");
-
-      jelem.html(code);
-      });
-  });
-
-      var checkSVG = function (o, i)
-      {
-            if (i >= 10 || SWS.Utils.isUndefined(o) || o == null) return;
-            var svg = o.getSVGDocument();
-            if (svg == null) {
-              setTimeout(function() { checkSVG(o, i+1); }, 200);
-            } else {
-         var alltext = $(svg).find("text");
-         alltext.css("font-family", "DIN");
-         alltext.css("font-size", "70%");
-
-            };
-      };
-      $(window).load(function() {
-      $("embed").ready(function() {
-         setTimeout(function() {
-         $("embed").each(function(i, o) { checkSVG(this,0);   });
-}, 1000);
-        });
-     });
-      $(window).load(SWS.Presentation.init);
-
-       ]]>
-
-    </script>
-
-  </head>
-  <body>
-    <a href="xpi_07.xhtml" class="sws-previous"/>
-    <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>XML et Programmation Internet</h1>
-      <h1>Cours 8</h1>
-      <a href="mailto:kn@lri.fr">kn@lri.fr</a>
-    </div>
-    <h1>Principe</h1>
-    <div class="sws-slide">
-      <h1>Programmation Web coté serveur</h1>
-      <p>(rappel) génération de pages-web dynamiques (<i>i.e.</i> dont
-      le contenu est calculé en fonction de la requête
-      HTTP). Plusieurs choix de langage côté serveur.
-      </p>
-      <ul>
-       <li>PHP (déploiement de site très simple,
-         langage <span style="text-decoration:line-through">merdique</span>
-         particulier)
-       </li>
-       <li>Python, Ruby (manque de standardisation, plusieurs
-       framework concurrents, problèmes de performances)</li>
-       <li>ASP .NET (microsoft) </li>
-       <li><a>Java/JSP</a> (langage raisonnable, déploiement complexe)</li>
-      </ul>
-
-  </div>
-    <div class="sws-slide">
-      <h1>JSP</h1>
-      <p>JSP (Java Server Pages) est un <i>framework</i> permettant de
-       créer des pages Web dynamiques en Java. Il fait partie de la
-       suite Java EE (Entreprise Edition). Rappel :
-      </p>
-      <ul>
-       <li>Java Card (Java pour cartes de crédit, très peu de choses,
-       pas de GC)</li>
-       <li>Java ME (Micro Edition, pour les périphériques embarqués,
-       mobiles, etc.)</li>
-       <li>Java SE (Standard Edition, java « normal »)</li>
-       <li>Java EE (Entreprise Edition, SE + packages pour JSP, et autres)</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Architecture</h1>
-      <p>Nécessite un serveur Web particulier. Le standard est Apache Tomcat.</p>
-      <ul>
-       <li>Le programmeur écrit des fichiers <tt>.jsp</tt>, contenant
-         du HTML + du java dans des balises spéciales</li>
-       <li>(Le programmeur déploie les fichiers sur le serveur
-         Tomcat)</li>
-       <li>L'utilisateur navigue vers une page <tt>foo.jsp</tt></li>
-       <li>Le serveur Tomcat génère <tt>fooServlet.class</tt></li>
-       <li>La classe est chargée dans la JVM java et (sa métode
-         principale) est exécutée, produisant une page HTML</li>
-       <li>La page HTML est envoyée au navigateur</li>
-      </ul>
-    </div>
-    <div class="sws-slide">
-      <h1>Exemple</h1>
-      <code class="background:white;">
- <![CDATA[<%@ page contentType="text/html; charset=UTF-8" %>
-
- <!DOCTYPE html>
- <html>
- <head><title>test JSP</title>
-       <meta charset="UTF-8"/>
- </head>
- <body>
- Page created on
- <%]]>
-       java.util.Date d = new java.util.Date();
-       <s>out</s>.println(d.toString());
- <![CDATA[%>
- </body>
- </html>]]></code>
-    </div>
-<div class="sws-slide">
-<h1>balises spéciales JSP</h1>
-<p>JSP introduit 4 balises spéciales qui sont interprétée par le
-  serveur Tomcat.
-</p>
-<ul>
-  <li>Balise de configuration : <tt>&lt;%@ … %&gt;</tt> (options HTML,
-  import de packages, …)</li>
-  <li>Balise de déclarations : <tt>&lt;%! … %&gt;</tt> (déclarer des
-  attributs et des méthodes)</li>
-  <li>Balises d'instructions : <tt>&lt;% … %&gt;</tt> (permet de mettre
-  une suite d'instructions)</li>
-  <li>Balises d'expressions : <tt>&lt;%= … %&gt;</tt> (permet de mettre
-  une expression dont le résultat est converti en <tt>String</tt>)</li>
-</ul>
-</div>
-    <div class="sws-slide">
-      <h1>Exemple complet</h1>
-      <code style="background:white;">  <![CDATA[<%@ page contentType="text/html; charset=UTF-8" %>
-  <%@ page import="java.util.Date" %>
-  <!DOCTYPE html>
-  <html>
-  <head><title>test JSP</title>
-        <meta charset="UTF-8"/>
-  </head>
-  <%!
-         Date maDate;
-
-         Date maMethode() {
-             return new Date();
-         }
-  %>
-   <body>
-  <%
-     maDate = maMethode();
-  %>
-   Page created on <%= maDate %>
-  </body>
-  </html>]]></code>
-    </div>
-<div class="sws-slide">
-  <h1>Objets par défaut</h1>
-<p>Le code placé dans les balises spéciales a accès à certains objets
-  automatiquement déclarés. Parmi les principaux :
-</p>
-<ul>
-  <li><tt>out</tt> de type <tt>JspWrite</tt>
-  (comme <tt>System.out</tt> mais écrit dans la page Web générée
-  </li>
-  <li><tt>session</tt> de type <tt>HttpSession</tt> : permet de
-  définir et récupérer des variables de sessions (i.e. Objets que l'on
-  stocke « globalement » et que l'on peut récupérer d'une page à
-  l'autre)</li>
-  <li><tt>request</tt> de type <tt>HttpServletRequest</tt> : permet
-  de récupérer les paramètres passés dans une requête HTTP (par
-  exemple les valeurs d'un formulaire)</li>
-  <li><tt>response</tt> de type <tt>HttpServletResponse</tt> : permet
-    de spécialiser la réponse envoyée au client (en-têtes HTTP,
-    cookies, …)</li>
-</ul>
-</div>
-
-<div class="sws-slide">
-  <h1>Classe JspWriter</h1>
-  <p>Fonctionne comme <tt>System.out</tt> (on peut donc
-    appeler <tt>.print/.println</tt>) mais correspond a un endroit
-    particulier de la page HTML</p>
-</div>
-
-<div class="sws-slide">
-<h1>Classe HttpSession</h1>
-<p>Propose plusieurs méthodes : </p>
-<code style="background:white">  //Renvoie la valeur stockée sous le nom name
-  Object <u>getAttribute</u>(String name)
-
-  //Stocke l'objet value sous le nom name
-  void <u>setAttribute</u>(String name, Object value)
-
-  //Supprime l'association name value
-  void <u>removeAttribute</u>(String name)
-
-  //Définit la durée (en secondes) d'inactivité d'une session
-  void <u>setMaxInactiveInterval</u>(int interval)
-
-  //Renvoie la durée (en secondes) d'inactivité d'une session
-  int <u>getMaxInactiveInterval</u>()
-
-  //Renvoie la date (en mili-secondes depuis EPOCH) de dernière utilisation
-  long <u>getLastAccessedTime</u>()
-
-  //Détruit la session en cours
-  void <u>invalidate</u>()</code>
-</div>
-<div class="sws-slide">
-<h1>Classe HttpServletRequest</h1>
-<p>Propose plusieurs méthodes : </p>
-<code style="background:white">  //Récupère la valeur des cookies:
-  String[] <u>getCookies()</u>
-
-  //Récupère les paramètres passés par un formulaire :
-  Map&lt;String, String[]&gt;<u>getParameterMap</u>()
-
-  //Récupère un paramètre particulier
-  String[]<u>getParameter</u>(String name)
-</code>
-</div>
-<div class="sws-slide">
-<h1>Classe HttpServletResponse</h1>
-<p>Propose plusieurs méthodes : </p>
-<code style="background:white">  //Renvoie une erreur HTTP (404 par exemple)
-  void <u>sendError(int code)</u>
-
-  //Ajoute un cookie au site
-  void <u>addCookie</u>(Cookie c)
-
-  //Effectue une redirection temporaire
-  void <u>sendRedirect</u>(String url)
-</code>
-</div>
-<div class="sws-slide">
-<h1>Classe Cookie</h1>
-<p>Propose plusieurs méthodes : </p>
-<code style="background:white">  //Constructeur
-  <u>Cookie</u>(String name, String value)
-
-  //Expiration en secondes
-  void <u>setMaxAge</u>(int a)
-</code>
-</div>
-<h1>Spécificités de Tomcat</h1>
-<div class="sws-slide">
-  <h1>Chemins par défaut</h1>
-<p>Par défaut le serveur Tomcat tourne sur le port 8080 (configurable)</p>
-<ul>
-  <li><tt>/var/lib/tomcat/webapps/toto/</tt> correspond à l'URL
-    <tt>http://domaine:8080/toto</tt>
-</li>
-  <li><tt>/var/lib/tomcat/webapps/toto/WEB-INF/</tt> contient des
-  fichiers de configuration</li>
-  <li><tt>/var/lib/tomcat/webapps/toto/WEB-INF/classes/</tt> contient des
-  fichiers <tt>.class</tt> auxiliaires</li>
-</ul>
-<p>(ce sera configuré légèrement différement au PUIO)</p>
-</div>
-<h1>Accès aux classes JSP</h1>
-<div class="sws-slide">
-  <p>Il faut avoir le fichier <tt>jsp-api.jar</tt> dans le
-  classpath</p>
-  <code> javac -cp /chemin/vers/jsp-api.jar MaClasse.java </code>
-  <p>On peut ensuite copier le <tt>.class</tt>
-  dans <tt>WEB-INF/classes</tt></p>
-</div>
-</body>
-</html>