Cf. Support (Rezo.pdf)
Pb: obtenir la ressource http://www710.univ-lyon1.fr/~dclot.
Développement des réseaux informatiques
Modèle préexistant : maître-esclave
Positionnement du modèle client/serveur relativement au modèle maître-esclave
Positionnement du modèle «peer2peer» relativement au modèle client/serveur
Un serveur est une machine puissante, dédiée à certains services…
La conception d'un service conduit à divers choix parmi lesquels:
Deux modes de communication
Conception d'un client
Elle consiste en général en l'implémentation d'une interface pour l'utilisateur et du protocole d'échange avec le serveur.
Conception d'un serveur
La conception d'un serveur passe par l'implémentation du service, mais aussi la gestion des différents clients
Côté programmation, divers objets existent pour permettre la réalisation d'un service via le réseau
Les sockets
Les sockets sont utiles pour matérialiser le support d'échange d'information entre deux processus.
Les RPC
Les appels de procedure distants (Remote Procedure Call) sont utilisées pour la mise au point d'applications distribuées, i.e. dont l'ensemble est éclaté en morceaux répartis sur différents hôtes. Le service rendu est alors l'exécution de la procédure et la transmission du résultat de cette procédure au client, i.e. au programme qui a appelé cette procédure.
Les Java RMI
A la manière des RPC, Java permet l'invocation de méthodes distantes (Remote Method Invocation), i.e. les méthodes d'un objet exécuté par une autre machine virtuelle Java.
CORBA
CORBA (Common Object Request Broker Architecture) est une implémentation du modèle des composants répartis. Ici, ce sont les objets qui peuvent être répartis sur différents hôtes, mais corba réalise un enrobage des objets, permettant ainsi une indépendance relative au langage d'implémentation de l'objet, relative à la plateforme et à l'hôte. Cet enrobage d'un objet (dénommé ORB - Object Request Broker, pour intermédiaire d'accès à l'objet) et l'objet lui même constituent un composant.
SGML - Standard Generalised Markup Language
HTML - HyperText Markup Language
<h1 id="Berners" class="forme1">
XHTML - Extensible HyperText Markup Language
CSS - Cascading Style Sheet
table
est souvent détourné pour positionner des élements dans l'espace d'affichage, ce qui a divers effets indésirables :
Et les navigateurs?
Squelette d'un document HTML
Cas classique
<!DOCTYPE HTML PUBLIC "-..."> <html> <head> <title>Titre de la page</title> <meta .... /> … </head> <body> … </body> </html>
1 - Déclaration de DTD 2 - ouverture du code html 3 - ouverture de l'entête 4 - titre de la page 5 - balise meta 6 - fin de l'entête 7 - ouverture du corps 8 - fermeture du corps 9 - fermeture du code html
Cas reposant sur les frames (cadres)
<!DOCTYPE HTML PUBLIC "-..."> <html> <head> <title> Titre de la page</title> <meta .... /> … </head> <frameset rows="…" > <frame id="…" src="…"/> … </frameset> <noframe> <body> … </body> </noframe> </html>
1 - Déclaration de DTD 2 - ouverture du code html 3 - ouverture de l'entête 4 - titre de la page 5 - balise meta 6 - fin de l'entête 7 - déclaration de la disposition des cadres 8 - premier cadre 9 - fin de la déclaration des cadres 10 - ouverture de noframe 11 - ouverture de body 12 - fermeture du body 13 - fermeture du noframe 14 - fermeture du code html
Entête
Les informations placées dans l'entête sont des méta-informations par rapport à la page web.
title
permet de spécifier un titre pour la page.meta
comporte obligatoirement un attribut content
associé à un second attribut, http-equiv
ou name
.
http-equiv
permet de construire un morceau d'entête HTTP. La valeur de http-equiv
précède celle de content
.
<meta http-equiv="refresh" content="20; url=http://www.w3.org" /> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
name
permet d'indiquer le nom d'une méta-information dont la valeur est fournie par content
. name
peut prendre des valeurs arbitraires, tout comme content
.
<meta name="author" content="bob tomic"/> <meta name="keywords" lang="fr" content="vin, saussison, camembert"/> <meta name="keywords" lang="en" content="wine, sausage, camembert"/>
link
permet de préciser les relations de la page avec d'autres documents :
<link href="mystyle.css" rel="stylesheet" type="text/css" />
<link rel="next" href="annee3.html" type="text/html" /> <link rel="next" href="annee1.html" type="text/html" />
style
permet de donner des règles de mise en forme à appliquer pour la page. Nous verrons plus tard l'importance relative de règles apparaissant ici et dans une feuille de style externe.
type
est obligatoire media
permet de préciser le support de restitution de la page.
<style type="text/css" media="projection" > H1 { color: blue;} </style > <style type="text/css" media="print" > H1 { text-align: center;} </style >
Premiers éléments de structuration
Ci-dessous, les balises les plus courantes pour la conception de code HTML :
h1
à h6
(pour heading) : permettent de définir différents niveaux de titrep
et pre
(p
pour paragraph, pre
pour preformatted text)br
(pour break)hr
(pour horizontal rule)ul
(pour unordered list) + li
(list item)ol
(pour ordered list) + li
(list item)dl
(pour definition list) + dt
+ dd
(resp definition term et definition description)img
(pour image)object
(pour objet)a
(pour anchor i.e. ancre) table
(i.e. tableau) + tr
+ td
/th
(resp. table row, table data, table header)frameset
(i.e. ensemble de cadres) + frame
div
et span
un paragraphe suivi d'un trait horizontal
un paragraphe
coupé en deux
repeter faire un code valide mettre en evidence la structure a l'aide d'indentation fin
il existe différents types de liste:
Un tableau | ||
---|---|---|
images et liens | exemple | |
image | ||
lien | ||
lien |
<h2>Titre2</h2> <h3>Titre3</h3> <p>un paragraphe suivi d'un trait horizontal</p> <hr/> <p>un paragraphe <br/> coupé en deux</p> <pre>repeter faire un code valide mettre en evidence la structure a l'aide d'indentation fin</pre> <p> il existe différents types de liste:</p> <ul> <li>ordonnées</li> <li>non-ordonnées</li> <li>emboitement <ol> <li>un martien <img alt="space invader" title="martiens" src="images/martien.jpg" style="width : 30px;height: 30px;" /> </li> <li>deux couleurs <img alt="space invader" title="martiens" src="images/bicouleur.jpg" style="width : 60px;height: 30px;" usemap="#MaCarte"/> </li> </ol> </li> </ul> <map id="MaCarte"> <area href="http://images.google.fr/images?um=1&hl=fr&q=couleur+rouge&btnG=Recherche+d'images" shape="poly" coords="0, 0,30,0,15,15,45,15,30,30, 0,30, 0,0" alt="rouge"/> <area href="http://images.google.fr/images?um=1&hl=fr&q=couleur+orange&btnG=Recherche+d'images" shape="poly" coords="60,0,30,0,15,15,45,15,30,30,60,30,60,0" alt="orange"/> </map> <table border="1" summary="exemple d'image, de liens et de mélange des deux"> <tr> <th colspan="3">Un tableau</th></tr> <tr> <th colspan="2">images et liens</th><th>exemple</th> </tr> <tr> <td rowspan="2">image</td><td></td><td><img alt="space invader" title="martiens" src="images/martien.jpg" style="width : 30px;height: 30px;" /></td> </tr> <tr> <td rowspan="2">lien</td><td><a href="images/martien.jpg"><img alt="space invader" title="martiens" src="images/martien.jpg" style="width : 30px;height: 30px;" /></a></td></tr> <tr><td></td><td><a href="images/martien.jpg">lien</a></td></tr> </table>
Frames
Ci dessous, deux inserts : l'insert de gauche donne le code html permettant de produire l'exemple de réalisation de frames de l'insert de droite.
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Frames example</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="copyright" content="Copyright © 2008 CLOT Denis - clot@univ-lyon1.fr" /> <meta name="font-size-adjustment" content="-1" /> <!--link rel="stylesheet" href="../Slidy/w3c-blue2.css" type="text/css" media="screen, projection, print" /> <script src="../Slidy/slidy.js" type="text/javascript"> </script--> </head> <frameset cols="20%,80%"> <frameset rows="20%,80%"> <frame id="menu" src="menu.html"/> <frame id="sous-menu" src="sous-menu-init.html"/> </frameset> <frame id="main" src="images/martien.jpg"/> <noframes> <body> <p>ICI IL FAUDRAIT LE CODE POUR GERER UN NAVIGATEUR NE SACHANT PAS AFFICHER DES FRAMES</p> </body> </noframes> </frameset> </html>
Pour finir, la présente page utilise l'élément générique object
pour réaliser l'insertion de la page contenant les frames ci-dessus. Enfin de multiples div
permettent de structurer les éléments affichés pour cette présentation, cette structuration étant associée à des règles de mise en forme qui seront décrites plus loin. N'oubliez pas de consulter le code source de cette présentation.
Les i-frames
Une i-frame permet d'insérer une frame (i.e. liée à une ressource comme une frame classique) en dehors du contexte d'un frameset, e.g. un bloc de texte.
<iframe src="Presentation_ComTechnoInt.html" width="50" height="40" scrolling="auto" frameborder="1" >Missing IFrame</iframe> <iframe src="Presentation_ComTechnoInt.html" width="250" height="200" scrolling="auto" frameborder="1" >Missing IFrame</iframe> <iframe src="Presentation_ComTechnoInt.html" width="500" height="400" scrolling="auto" frameborder="1" >Missing IFrame</iframe>
Les formulaires
…
Attributs supplémentaires
Les éléments présentés ici disposent de nombreux attributs dont l'objet est de définir une propriété de mise en forme. Tout ce qui concerne la mise en forme d'une page devrait être relégué à un langage de mise en forme tel que CSS. Avec ce dernier, il est possible de définir des règles de mise en forme qui peuvent être liées aux éléments d'une page. Pour cela, deux attributs peuvent être utiles :
id
permet d'associer à un élément un identifiant, unique dans la page. Dans ce cas, si des règles sont associées à cet identifiant, elles sont appliquées à l'élément. class
permet d'associer un élément à une ou plusieurs classes. Dans ce cas, les règles de mise en forme définies pour ces classes sont appliquées à l'élément.Règles de base
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
html
.xmlns
pour l'espace de nom de XHTML.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
Passer de HTML4.01 à XHTML1.0 pour la rédaction de pages web
Le passage du HTML 4.01 vers XHTML 1.0 se fait par le respect d'un petit nombre de règles lors de l'écriture de code HTML. Ci-dessous, quelques-unes de ces règles :
<p>…<em>MOT</p></em>
<p>…<em>MOT</em></p>
<LI ID="Toto">MOT</Li>
<li id="Toto">MOT</li>
<p>un paragraphe<p>un autre…
<p>un paragraphe</p><p>un autre…</p>
<td colspan=3>
<td colspan="3">
/>
<br>
<br/> … <br></br>
id
et pour d'autres un attribut name
. Ces attributs différents servent à définir un identifiant. XHTML préfère un recours systématique à l'attribut id
pour jouer le rôle d'identifiant. L'attribut name
est voué à disparaitre des prochaines versions d'XHTML.Selon la note du W3C: HTML5 Differences from HTML4
La nouvelle recommandation HTML définit une nouvelle syntaxe, des évolutions du langage, un nouveau modele de construciton de page et des évolutions fonctionnelles à travers des API. Cf http://www.w3.org/TR/html5-diff/ pour l'ensemble des détails.
<meta charset="UTF-8">
. La déclaration de la DTD se limite à <!DOCTYPE html>
. Le langage CSS permet la spécification de règles de mise en forme pour les éléments d'un document en fonction du support de présentation de ce document. Les spécifications dont ce langage est l'objet décrivent également le mécanisme par lequel ces règles sont utilisées pour permettre la détermination des valeurs associées aux propriétés.
L'arborescence du document et les valeurs des propriétés
Un document HTML est composé d'éléments organisés en arborescence. Ce concept d'arborescence s'accompagne des concepts de parent, enfant, descendant, ancêtre, frère… Une fois cette arborescence analysée, il faut assigner à chaque propriété de chaque élément sa valeur (correspondant au type du médium). La valeur associée à une propriété est obtenue par un processus comportant quatre étapes :
Et la cascade?
Le terme CSS fait référence à une partie du mécanisme employé pour l'application des règles : le mécanisme baptisé de cascade. Les règles (on parle plus volontier de feuille de style) peuvent avoir trois origines :
Les règles ainsi définies peuvent se chevaucher, se contredire ou se compléter. Le processus de cascade définit le calcul d'un poids, ce poids étant utilisé pour départager des règles contradictoires (la règle de plus grand poids est retenue pour définir la valeur associée à la propriété concernée). Le mécanisme de cascade comporte quatre étapes :
Place du code CSS
Le code CSS peut être isolé dans un fichier ou placé dans l'entête d'un document (X)HTML ou disséminé dans les élements concernés par le biais de l'attribut style
, ce qui appelle quelques remarques:
style
des éléments HTML devrait être réservé à des besoins ponctuels…<head> … <link rel="stylesheet" href="../Slidy/w3c-blue2.css" type="text/css" media="screen, projection, print" /> … </head>
<head> … <style type="text/css"> body { color: black; background: white } h1 { color: red; background: white } </style> … </head>
<body style="color: black; background: white"> … <h1 style="color: red; background: white" >Introduction </h1> … <h1 style="color: red; background: white" >Conclusion </h1> …
La localisation d'une règle sera déterminante pour son application à un élément par rapport à des règles concurrentes comme expliqué plus haut.
Syntaxe
Le code CSS est formé de différents éléments :
Commentaires
Il est possible d'insérer des commentaires entre les éléments déclaratifs d'une feuille CSS. Un commentaire est délimité à gauche par /*
et à droite par */
.
Règles
Le principe global de CSS est de définir des règles qui permettent d'ajuster des propriétés de mise en forme en indiquant les éléments concernés avec un certain niveau de généralité et en précisant éventuellement un contexte d'application dépendant de la nature du support de restitution de l'information.
propriété : valeur;
selecteur { prop1 : valeur1; prop2 : valeur2 }
@media print {body { font-size: 10pt }}
Après une présentation des différents sélecteurs, un aperçu des propriétés et des valeurs possibles sera proposé.
Sélecteurs
Un sélecteur permet d'identifier les éléments pour lesquels les propriétés seront ajustées.
Sélecteur | Signification |
---|---|
* | selecteur universel, permettant de désigner tout élément du document |
type d'élément e.g. h1 , p , span | tout élément du type indiqué |
.Nom2Classe | tout élément appartenant à la classe Nom2Classe . L'appartenance d'un élément à une classe est spécifiée à l'aide de l'attribut class . |
type.Nom2Classe | tout élément du type indiqué et appartenant à la classe |
#Id | l'élément dont l'attribut id a pour valeur Id |
:first-letter :first-line :first-child type:first-child | pseudo-éléments correspondant respectivement à la première lettre, à la première ligne et au premier enfant puis au premier enfant d'un élément de type donné |
:hover , :active , :focus , :link , :visited , :lang | pseudo-classes correspondant à trois types de propriétés : les trois premières concernent respectivement l'élément survolé par le pointeur de la souris, celui activé et celui sélectionné (i.e. sensible aux interactions via le clavier, comme un champ de saisie), les deux suivantes distinguent les liens non encore visités de ceux déjà visités (d'après l'historique maintenu par le navigateur) et enfin les éléments pour lesquels un attribut lang a reçu une valeur particulière. |
sel1 sel2 | désigne tout élément désigné par sel2 qui est en même temps descendant d'un élément désigné par sel1 |
sel1 > sel2 | restriction aux éléments désignés par sel2 qui sont descendants directs d'un élément désigné par sel1 |
sel1 +sel2 | désigne tout élément désigné par sel2 qui est le premier voisin suivant un élement désigné par sel1 |
[Attr] [Attr="val"] [Attr~="val"] [Attr|="val"] | désigne respectivement les éléments pour lesquels l'attribut Attr est défini, pour lesquels l'attribut a la valeur val , pour lesquels la valeur de l'attribut contient la valeur val et enfin ceux pour lesquels la valeur de l'attribut commence par val . |
sel1, sel2 | applique les ajustements aux éléments désignés par sel1 ou sel2 |
Propriétés et valeurs
color
qui désigne la couleur de premier plan, background
qui concerne l'arrière-plan, border
qui définit la bordure d'un élément…red
, gray
, green
), ou des valeurs de la forme rgb(0,0,255)
ou rgb(0%,0%,100%)
ou #0000ff
ou encore #00f
.width
/height
pour la largeur/hauteur d'un élément, border
pour l'épaisseur de la bordure d'un élément, margin
pour l'espace reservé pour la marge… 80%
en référence à une certaine mesure (en fonction de l'élément concerné, il peut s'agir d'une valeur calculée ou d'une valeur héritée) 10in
(10 pouces) ou 25.4cm
ou 254mm
ou 720pt
(720 points) ou 8640pc
(8640 picas)100px
pour 100 pixels1em
correspond à la taille de la police en cours et 1ex
correspond à la hauteur de la lettre x de la police en cours.inherit
est acceptée par toutes les propriétés. Certaines admettent cette valeur comme implicite, ce qui conduit à l'adoption de la valeur de l'élément parent lorsqu'aucune règle plus spécifique n'est donnée.Propriétés et valeurs
font-family : fonte1, fonte2, "nom de fonte", fonte4
où la propriété font-family
est suivie d'une liste de noms de famille de polices, la première existant sur le système étant retenue et la dernière devant être par précaution un nom de famille générique (serif
, sans-serif
, monospace
, cursive
ou fantasy
);font-size
accepte des valeurs absolues ou relatives ainsi que les valeurs xx-small
, x-small
, small
, medium
, large
, x-large
, xx-large
, larger
, smaller
;font-style
accepte comme valeur italic
, oblique
, roman
, normal
;font-weight
accepte comme valeur normal
, lighter
, bold
, bolder
ou une valeur arrondie à la centaine et comprise entre 100 et 900;font-variant
accepte comme valeur normal
et small-caps
; font
accepte une liste constituée des valeurs des différentes propriétés précédentes, ces valeurs étant séparées par des espaces - c'est un raccourci en quelque sorte.text-align
accepte comme valeur left
, center
, right
et justify
pour l'alignement des éléments organisés en lignes d'un bloc - en particulier les mots d'un paragraphe;text-decoration
accepte une liste formée des valeurs underline
, overline
, line-through
, blink
, ou la valeur none
(ou inherit
); text-indent
accepte comme valeur des mesures pour l'indentation de la première ligne d'un bloc - une valeur positive conduit à un recul du debut de ligne vers l'intérieur du bloc;text-transform
accepte comme valeur none
, capitalized
, uppercase
, lowercase
. line-height
accepte comme valeur normal
et des longueurs;letter-spacing
et word-spacing
acceptent comme valeur normal
et des longueurs;white-space
accepte comme valeur normal
, pre
, nowrap
, pre-wrap
, pre-line
, permettant de définir le traitement des séquences de caractères d'espace et des coupures de ligne. La première valeur est le cas usuel dans lequel plusieurs espaces sont remplacés par un seul et les lignes sont coupées afin de ne pas déborder de leur conteneur. La seconde permet de préserver les séquences d'espaces et d'empecher les coupures de lignes. La troisième permet de résumer une suite d'espace par un seul mais empèche les coupure de lignes. La quatrième permet de préserver les espaces et autorise les coupures de lignes…Propriétés et valeurs
list-style-type
accepte les valeurs disc
, circle
, square
, decimal
, decimal-leading-zero
, lower-roman
, upper-roman
, lower-greek
, lower-latin
, upper-latin
, armenian
, georgian
, lower-alpha
, upper-alpha
, none
afin de préciser la nature de la puce utilisée pour marquer le début d'un item;list-style-image
accepte comme valeur none
ou une valeur de la forme url("http://../puce.jpg")
lorsqu'une image est utilisée comme puce; list-style-position
accepte comme valeur inside
, outside
, correspondant à un positionnement des lignes suivantes sous la puce, resp en retrait par rapport à la puce;list-style
accepte une liste constituée des valeurs des propriétés précédentes. Introduction au positionnement des éléments
border
) séparée du contenu par un espace nommé «padding
» (remplissage) et entourée d'un espace nommé «margin
» (marge).border-left-width
, border-left-color
, border-left-style
correspondent aux propriétés de la bordure gauche d'un objet. border-left
est un raccourci acceptant comme valeur une liste des valeurs des propriétés précédentes séparées par des espaces. Le left
se remplace par right
, top
, bottom
ou rien en fonction de la région de la bordure concernée.border-left-style
sont none
, hidden
, dotted
, dashed
, solid
, double
, groove
, ridge
, inset
et outset
. border-left-color
sont la valeur transparent
ou une couleur.position
a alors pour valeur static
. position
:relative
par rapport à la position qu'il aurait occupé dans le flot normal - dans ce cas, et les deux suivants, les propriétés top
, bottom
, left
et right
permettent de préciser ce décalage;absolute
par rapport à son premier ancètre qui n'a pas pour valeur static
pour position
;fixed
par rapport à la fenêtre de visualisation (i.e. la fenêtre du navigateur).Régles @
Il existe différents types de at-rules :
@import
permet d'importer les feuilles de style présentes dans d'autres fichiers. Ces imports doivent être déclarés avant tout ensemble de règles. Le premier argument indique la source et un second argument optionnel peut indiquer à quel type de média les règles seront associées.
@import url("/css/main.css"); @import "local.css"; @import url(/css/screen.css) screen, projection;
@media
permet d'indiquer la nature du média concerné par un ensemble de règles. @media
est suivi d'une liste de type dont les valeurs sont séparées par des virgules, puis les règles associées sont rassemblées entre accolades après cette liste.
@media screen, projection { html { background: #fffef0; color: #300; } } @media print { html { background: #fff; color: #000; } }La définition de règles spécifiques pour l'impression est souvent utilisée pour minimiser les mises en formes couteuses en encre et assurer une meilleure lisibilité. Les types de média sont définis par CSS sont les suivants:
all
désigne tout type de média;braille
, embossed
, désignent respectivement les dispositifs braille de feed-back et les imprimantes braille;handheld
désigne les terminaux mobiles (dont les téléphones);print
désigne les impressions;projection
screen
speech
désigne les synthétiseurs vocaux;tty
désigne les terminaux formés de grilles de caractères de taille fixe (dont les terminaux de commande);tv
@charset
, @font-face
, @page
,
@namespace
.Exemples
Ci-dessous, quelques extraits des fichiers comportant des règles de mise en forme CSS:
<head> <title>AFIR/ERM - PBSS - LIFE 2013 Lyon</title> <meta charset="utf-8" > <link rel="stylesheet" href="css/jquery.mobile-1.3.1.min.css"> <link rel="stylesheet" href="css/add2home.css"> <style> #diag-link { background-image: -webkit-linear-gradient( rgb(236, 82, 96),rgb(172, 3, 19) ); } #pub_isfa, p { hyphens: auto; -webkit-hyphens: auto; -moz-hyphens: auto; } div#plan div[data-role="content"] span.ui-btn-inner.ui-btn-corner-all { padding-left:6px; padding-right:6px; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; } div#plan a.noborder.noshadow.ui-btn.ui-btn-inline.ui-shadow.ui-btn-corner-all.ui-mini.ui-btn-up-d, div#plan a.noborder.noshadow.ui-btn.ui-btn-inline.ui-shadow.ui-btn-corner-all.ui-mini.ui-btn-hover-d, div#plan a.noborder.noshadow.ui-btn.ui-btn-inline.ui-shadow.ui-btn-corner-all.ui-mini.ui-btn-down-d { margin-right:2px; -moz-border-radius:8px; -webkit-border-radius:8px; border-radius:8px; } li.atel.ui-li.ui-li-static.ui-li-has-thumb.ui-corner-bottom { padding-left:0px; } li.atel .ui-btn-icon-left > .ui-btn-inner > .ui-icon, #atel_1 .ui-btn-icon-right > .ui-btn-inner > .ui-icon, #atel_2 .ui-btn-icon-right > .ui-btn-inner > .ui-icon, #atel_3 .ui-btn-icon-right > .ui-btn-inner > .ui-icon { top:2.6em; } div.atel_desc br + i, div#form br + i, #conf_1 br + i, #conf_2 br + i, #conf_3 br + i, #conf_4 br + i, #conf_5 br + i { color: #aaa; } div.atel_desc > p:first-child { font-size: normal; font-variant: small-caps; } div#conf_1 div[data-role="content"] > *, div#conf_2 div[data-role="content"] > * , div#conf_3 div[data-role="content"] > * , div#conf_4 div[data-role="content"] > *, div#conf_5 div[data-role="content"] > *{ color:#000; }
/*! jQuery Mobile 1.3.1 | Git HEAD hash: 74b4bec <> 2013-04-08T19:41:28Z | (c) 2010, 2013 jQuery Fou ndation, Inc. | jquery.org/license */ .ui-bar-a{border:1px solid #333;background:#111;color:#fff;font-weight:700;text-shadow:0 -1px 0 #000 ;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-im age:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);backgr ound-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);backg round-image:linear-gradient(#3c3c3c,#111)}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a texta rea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.u i-bar-a a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-a a.ui-link:visited{color:#2489ce}.ui-bar-a a.ui-link:hover{color:#2489ce}.ui-bar-a a.ui-link:active{color:#2489ce}.ui-body-a,.ui-overlay-a{bord er:1px solid #444;background:#222;color:#fff;text-shadow:0 1px 0 #111;font-weight:400;background-ima ge:-webkit-gradient(linear,left top,left bottom,from(#444),to(#222));background-image:-webkit-linear -gradient(#444,#222);background-image:-moz-linear-gradient(#444,#222);background-image:-ms-linear-gr adient(#444,#222);background-image:-o-linear-gradient(#444,#222);background-image:linear-gradient(#4 44,#222)}.ui-overlay-a{background-image:none;border-width:0}.ui-body-a,.ui-body-a input,.ui-body-a s elect,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-li nk-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:700}.ui-body-a .ui-link:visited{ color:#2489ce}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-b tn-up-a{border:1px solid #111;background:#333;font-weight:700;color:#fff;text-shadow:0 1px 0 #111;ba ckground-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#2d2d2d));background-image :-webkit-linear-gradient(#444,#2d2d2d);background-image:-moz-linear-gradient(#444,#2d2d2d);backgroun d-image:-ms-linear-gradient(#444,#2d2d2d);background-image:-o-linear-gradient(#444,#2d2d2d);backgrou
Pour tester rapidement un code… http://jsfiddle.net
Contrôle de la validité d'un code (X)HTML ou CSS
Il existe des outils de validation (et de correction pour HTML) pour les documents XHTML et CSS. Les outils indiqués ci-dessous peuvent être utilisés pour contrôler le code d'un document déjà en ligne ou d'un fichier local. Des références à ces outils peuvent également être insérées dans la page web pour fournir un accès plus immédiat à ces outils.
Entités HTML
Pour les curieux
Le livre Web Design for Developers: A Programmer's Guide to Design Tools and Techniques édité par The Pragmatic Programmers est un ouvrage intéressant pour l'ensemble des considérations qu'il aborde.
Keep in touch!
Au fil du temps, il est important de garder un œil sur l'actualité de ces technologies, le statut des spécifications, la préparation de nouveautés (e.g. webfonts en draft au 2010-09)… Consultez par exemple par ici..
La sortie de HTML5 serait imminente est en cours…du côté des implémentations. Pour le standard, il faudra encore attendre «un peu». dépassé!!
Le HTML5 est une recommandation du W3C depuis le 28 octobre 2014! Check it out here.
frameset
, frame
et noframe
)Les évolutions autour de CCS3 prennent forme!
Notez bien que le support par les différents navigateurs pour ces divers éléments est extrêmement variable. De nombreuses propriétés existent à travers leurs déclinaisons propres à un navigateur particulier. Cf http://www.colorzilla.com/gradient-editor/ pour un aperçu concernant les gradients. Il faut toujours prévoir la mise en forme en cas d'absence de support sur un navigateur pour la propriété souhaitée - i.e. une mise en forme reposant sur des propriétés standards.
Cherchez des exemples… il existe de nombreux sites proposant des solutions clés en main intéressantes avec un rendu remarquable (http://tympanus.net/codrops/category/tutorials/).
… et si vous cherchez à mesurer votre créativité, regardez:
Les VCS (Version Control Systems) sont des outils permettant de suivre dans le temps un ensemble de fichiers. Ils sont construits autour de programmes simples dont l'objet est la gestion des différences entre versions d'un fichier. Tout est parti de diff
…
diff
diff
= intérêt a priori (économie de place) + contexte (unix i.e. lien avec d'autres commandes…)colordiff
<html> <body> <h1>Page de Bob</h1> <p>Ceci est un paragraphe.</p> <br/> <p>Ceci est un paragraphe</p> </body> </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.../...dtd"> <html> <head> <title>Page de Bob</title> </head> <body> <h1>Page de Bob</h1> <p>Ceci est un paragraphe.</p> <br/> <p>Ceci est un paragraphe.</p> </body> </html>
diff
indique les opérations à réaliser (avec une syntaxe proche de celle de ed
) pour passer du fichier indiqué en premier argument au fichier passé en second argument:
bob@minisfa:~ > diff F1 F2 0a1 > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 1a3,5 > <head> > <title>Page de Bob</title> > </head> 6c10 < <p>Ceci est un paragraphe</p> --- > <p>Ceci est un paragraphe.</p>
colordiff
.
bob@minisfa:~ > diff -u F1 F2 | colordiff ... ou ... bob@minisafa:~ > colordiff F1 F2 --- F1 2010-11-11 21:12:48.000000000 +0100 +++ F2 2010-11-11 21:13:16.000000000 +0100 @@ -1,8 +1,12 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> + <head> + <title>Page de Bob</title> + </head> <body> <h1>Page de Bob</h1> <p>Ceci est un paragraphe.</p> <br/> - <p>Ceci est un paragraphe</p> + <p>Ceci est un paragraphe.</p> </body> </html>
diff
sait produire des scripts pour ed
bob@minisfa:~ > diff -e F1 F2 6c <p>Ceci est un paragraphe.</p> . 1a <head> <title>Page de Bob</title> </head> . 0a <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> .
bob@minisfa:~ > { diff -e F1 F2 echo w;} | ed - F1 bob@minisfa:~ > diff -e F1 F2
patch
permet d'appliquer le patch...
bob@minisfa:~ > diff -u F1 F2 > LePatch bob@minisfa:~ > patch < LePatch patching file F1 bob@minisfa:~ > diff F1 F2
bob@minisfa:~ > patch -R < LePatch patching file F1 bob@minisfa:~ > diff F1 F2 0a1 > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 1a3,5 > <head> > <title>Page de Bob</title> > </head> 6c10 < <p>Ceci est un paragraphe</p> --- > <p>Ceci est un paragraphe.</p>
patch
permet beaucoup, mais ce n'est pas l'objet ici (par ici les curieux. ou Cf. le manuel).
bsdiff
et bspatch
)bzdiff
, zdiff
pour travailler sur du texte compresséLes outils diff
et patch
ne suffisent pas en général pas à gérer toute la descendance d'un fichier, car assez naturellement, une descendance prend souvent une forme d'arborescence:
Une équipe peut être amenée à corriger les bugs rencontrés par des tiers dans une version particulière d'un fichier (ce fichier pouvant être une application informatique, mais aussi le texte d'un contrat…) alors que dans le même temps, plusieurs pistes de développement, éventuellement instables ou expérimentales, sont poursuivies et qu'une version stable (au moins une) est également maintenue.
Les VCS (Version Control Systems) permettent de réaliser ce saut, en introduisant notamment la possibilité d'introduire des branchements dans l'évolution suivie par un fichier. Au fil du temps, la reflexion sous-tendant les VCS a absorbé diverses considérations dérivant de l'extension du suivi d'un fichier au contexte de la gestion de projet (plusieurs fichiers, plusieurs acteurs…):
Outils
Un VCS n'est pas un système de backup (même si cela peut y ressembler) et ne peut s'y substituer!
Vous n'appelez plus vos fichiers projet.pdf
…
TER-2012_13-CBonLCasADio_v0.8.2.pdf
. Vous êtes sur la bonne voie. Un VCS permet d'introduire des méta-données sur les versions des fichiers - la valeur ajoutée de l'ajout quasi-systématique de commentaires à vos fichiers est enorme. Adoptez un VCS!!
Boîte à outil logicielle construite comme solution à un problème assez général et souvent basée sur des design patterns. Il est ainsi possible de reposer sur les éléments du framework ce qui est un gain de développement pour construire une solution pout un projet. La définition devrait être appronfondie! Ces frameworks sont souvent le résultat d'un travail prenant en compte une large expérience des solutions testées pour répondre à un besoin. Il est fréquent que la communauté d'utilisateurs fournissent un support important.
Ne ré-inventez pas la roue dans le langage que vous devez utiliser: Cherchez s'il existe un framework proposant une grande partie des fonctionnalités que vous cherchez, et étudiez sérieusement son intégration à votre développement.
Principe
Savez-vous qu'il existe de nombreux outils permettant de concevoir des tests dans le langage de programmation de votre application?
Divers objectfs