MEMO date / date écrit par / recorded by objet / subject destinataires / recipients dimanche 16 avril 2017 Emmanuel BOCQUET Culture Générale Technique Tout Duke Culture générale technique Ceci est une liste de points en vrac qui ont pour but de clarifier quelques points qui pourraient être obscurs pour les personnes qui travaillent chez Duke sans avoir de background technique. 1 La base de la base Un ordinateur est globalement un cerveau (un processeur avec de la mémoire vive, ou RAM) qui a une psychologie donnée par son système d’exploitation (Windows, Unix, Mac OS) et qui comprend des langues diverses. Processeurs : intel pour les compatibles PC AMD et Cyrix également RS6000 et d’autres trucs bizarres pour les autres Systèmes d’exploitations (ou OS pour Operating System) : Windows : 3.11 (disparu), 95 et 98 (courants), NT et 2000 (serveurs) MacOS : System 6, 7, 8… (pour les graphistes, la PAO, Arne…) Unix (gros serveurs) : Linux (pour PC), Solaris (Sun), AIX (IBM), HP-UX (HP) Langages : Anciens : Logo, Basic, Pascal, Ada, Cobol Moins anciens : C, C++, Objective C Orientés web (light) : Perl, Python, PHP, ASP Orientés web (lourds) : Java On appelle parfois le type de processeurs utilisés sur un projet la plate forme physique, l’OS est parfois appelé la plate-forme (tout- Page 1 court), et les langages utilisés sont appelés plate-forme logicielle. Chez Duke, les développeurs utilisent Linux sur PC, les graphistes utilisent des Mac, et les autres des PC sous windows (sauf Arne) Les serveurs de nos clients sont selon les cas : des PC sous Linux avec PHP des Serveurs Sun sous Solaris avec java des serveurs intel sous Windows NT avec ASP (mais on veut arrêter) 2 Un serveur internet Un serveur internet reçoit des demandes de clients et leur envoit des données en réponse. Les serveurs prennent très rarement l’initiative d’envoyer des infos sans qu’on leur demande rien. Sur ces serveurs plusieurs logiciels serveurs peuvent être actifs, et chacun comprend un langage de requêtes spécifique (le format de ces questions-réponses est appelé protocole) A la base, les serveurs internet dialoguent sur le protocole TCP/IP. Sur ce protocole de base (qui explique comment ammener des données d’un point à un autre), les logiciels serveurs utilisent des protocoles plus évolués, spécialisés selon leurs besoins. A chaque logiciel serveur correspond un logiciel client qui permet à vous et moi d’avoir accès aux services associés Logiciels serveurs Serveur de mail (protocole = SMTP, client = Outlook, Netscape, Notes…) Serveur de noms (c’est lui qui sait que www.yahoo.fr est à l’adresse 234.233.0.12) Serveur de news (protocole = NNTP, client = Outlook Express, Netscape, … indisponible chez Louis XIV) Serveur de fichiers (protocole = FTP, client = WSFTP, Leech FTP…) Serveur web (protocole = http, client = Netscape, IE, Lynx, …). Les 3 plus connus sont Netscape Enterprise Server, Apache (monde Unix), et IIS (monde Microsoft). Serveur web sécurisé (protocole = HTTPS) Serveurs ICQ (messagerie instantannée), Serveur Backweb (push)… Ainsi, lorsque je tape www.yahoo.fr dans IE, une requête http est envoyée à un serveur de nom, qui me donne son adresse ; suite à ça, la requête Page 2 repart vers la bonne adresse, traverse le firewall de Louis XIV (sur lequel on a autorisé le protocole HTTP mais pas NNTP par exemple). La requête est transmise de serveur en serveur (grâce à TCP/IP) jusqu’à Yahoo. A ce moment-là, le serveur web de yahoo regarde sur son disque dur si la page est disponible (page statique). Si c’est le cas, il l’envoie et elle arrive chez le client dans son navigateur par le même chemin qu’à l’aller. Manque de pot, la page contient dans la partie droite des news fraîches, donc elle n’est pas statique. Elle est donc codée en deux parties : du HTML normal pour la mise en page et la partie gauche, et du PHP pour la partie droite. (En pratique, ces deux langages sont mélangés dans le même fichier. De fait, au lieu du PHP, ça pourrait être de l’ASP, du Java, du Perl… le client n’en sait jamais rien). Donc le serveur web « interprète » le PHP (c’està-dire qu’il exécute les instructions de la page, comme par exemple lire des données dans une base de données, écrire des données, modifier le HTML en fonction de variables diverses,…). Une fois le PHP interprété, la page est devenue 100% HTML, et elle est envoyée au client (qui est bien content car aucun navigateur ne sait parler le PHP) 3 Une base de données Une base de données est un logiciel capable de stocker, retrouver, trier et manipuler de grands volumes de données structurées. Par données structurées, on entend que l’on peut les afficher dans un tableau Excel par exemple. Excel est l’outil de base de données le plus simple. Les SGBD (ou Systèmes de Gestion de Bases de Données) sont des logiciels qui ont pour nom : Access (microsoft, pas cher, simple, pas fiable) SQL Server (microsoft, pas cher) MySQL (gratuit, assez simple, assez fiable) (on l’aime bien) Sybase (pas trop cher, fiable) Informix (cher, lourd, très fiable) Oracle (super cher, super lourd, super fiable) (nos clients l’aiment bien) On distingue des sous-espèces, comme le SGBD-R (R pour Relationnel) qui est le cas de tous les SGBD récents, et les SGBB-O (O pour Objet), qui sont assez ésotériques. On parle également de fichiers Page 3 plats (genre enregistrer sous -> *.csv sou Excel) pour les formats d’imports – exports usuels entre bases de données. Enfin, on parle de plus en plus de XML qui est une façon de structurer les données qui permet de les décrire au même endroit qu’on les stocke. Cette ruse subtile permet aux partenaires externes de les réutiliser sans se casser la tête sur leur conversion. 4 Une page web Une page web est un fichier de texte qui décrit le contenu d’un affichage pour un navigateur. Des « tags » entre crochets sont des mots-clés qui décrivent les contenus et les affichages. Exemple de fichier html (en colonne, à gauche) : Début de fichier html <html> Début du corps de la page <body> Centrage du texte <center> Texte Hello Mise en italique <i> Texte World Image <img src=’http://eur.yimg.com/i/fr/g/new3.gif’/> Fin de l’italique </i> Fin du centrage </center> Fin du corps de la page </body> Fin du fichier html </html> Le résultat est : Hello World Une page web peut contenir du texte et des images (exemple précédent), mais aussi des actions (instructions javascript, à ne pas confondre avec java tout court), des formulaires de saisie de données, des applets java (qui dans une surface rectangulaire peuvent faire tout ce qui est imaginable), du flash, du shockwave, des trucs bizarres qui bougent en DHTML (Dynamic HTML). Le code html d’une page doit être clair pour être lisible (espacements, retours à la ligne, commentaires). Il doit être rigoureux pour passer sur tous les navigateurs (on n’utilise pas toutes les instructions disponibles, mais seulement celles qui sont stables sur IE et Netscape par exemple). Enfin, il doit être compatible avec les normes en vigueur (par exemple la norme XHTML, de plus en plus demandée par nos clients, qui est très rigoureuse) Page 4 5 Langages informatiques Un langage est une somme d’instructions et de structures de données qui sont interprétées par un « interpréteur » ou « compilateur ». Certains langages orientés web ont un compilateur intégré à un serveur web (par exemple PHP). Cela signifie que le serveur web est capable de parler le PHP, et donc qu’on peut mélanger HTML et PHP dans une même page. Vieux langages à oublier : Fortran, Ada, Pascal, Basic, Cobol Langages « récents » non web : Ces langages permettent de fabriquer des programmes comme Word, Internet Explorer ou Quake III. C, C++, Objective C, Visual Langages serveurs orientés web : Ces langages permettent de rendre des pages HTML dynamiques, c’est-à-dire de modifier le contenu d’une page HTML en fonction du contexte (heure, réglages administrateur, contenu de base de données, action utilisateur). De ce fait, la présentation de contenus similaires (par exemple les dossiers du journal l’équipe) peut se faire par une seule page « dossier.html ». Cette page contiendra du code « serveur » (PHP, java ou autre) capable d’aller chercher le bon dossier dans la base de données éditoriale de l’Equipe et de le mettre en forme à l’intérieur de la page dossier.html. Le code PHP est ainsi transformé en HTML et envoyé à l’internaute. Et ce à chaque requête faite par un internaute qui veut voir un dossier (donc plusieurs fois par secondes). PHP : sur Unix (ou Linux), couplé à Apache Python : sur Unix Perl : sur toutes plate-formes Active Server Pages (ASP) : sur Windows NT, couplé à IIS Javascript serveur : couplé à Netscape Enterprise Server Java Server Pages (JSP) : sur toutes plateformes Servlets Java : sur toutes plate-formes, nécessite un serveur d’application java (plus ou moins cher et complexe) et permet le développement de grosses applications. Les principaux serveurs d’application sont Weblogic (par BEA, puissant, fonctionnel et cher), WebSphere (par IBM, utilisé sur le Crédit Agricole), WebObjects (par Apple, puissant et pas cher), JServe (gratuit, utilisé sur l’Equipe). Page 5 Langages web orientés clients : Ces langages sont compréhensibles par un navigateur. Ils ne sont donc pas interpétés par le serveur web. Le code est envoyé au navigateur de l’internaute qui exécutera tout seul les instructions codées. HTML : ce n’est pas un langage de programmation (actions et données) mais un langage de mise en page. HTML en est à sa version 4, mais un grand nombre d’instructions n’est reconnu qu’à moitié par les principaux navigateurs. XHTML : c’est une forme plus rigoureuse de HTML qui a en plus la propriété de devoir respecter une liste d’instructions autorisées définies au départ par le monteur appelée DTD. Duke va bientôt se mettre sérieusement au XHTML. DHTML : c’est une extention du HTML qui permet de faire des choses impossibles en HTML classique, comme de gérer plusieurs couches sur une page (menus qui passent par dessus du texte, gadget qui se balade dans toute la page,…) et bien d’autres choses. Le DHTML fonctionne de manière souvent un peu aléatoire sur certains navigateurs. On essaie d’éviter le DHTML en général. Javascript : c’est le langage de programmation associé à HTML. Il permet d’ouvrir de nouvelles fenêtres, de faire des roll-overs, des contrôles de validité de champs de formulaires. Comme pour le HTML, certaines instructions ne fonctionnent que sur certains navigateurs. On fait du Javascript sur tous nos sites. Java : il permet de fabriquer des « applets » (par oppositions aux servlets) qui font des trucs merveilleux. Le problème des applets est leur lourdeur à télécharger, leur lourdeur pour les petits PC, et leur instabilité un peu aléatoire sur certaines machines. On ne fait pas d’applets chez Duke Flash et Shockwave : langage de mise en page animée capable de faire des choses terribles dans une surface donnée. L’intérêt de ces technologies est la légèreté du code à envoyer au navigateur. L’inconvénient est que 30% du parc de navigateurs n’ont pas le plug-in flash. Duke fait beaucoup de flash. 6 Production Page 6 La chaîne de production normale pour une page web est une successions d’étapes séparées par des validations client : Spécifications générales : qu’est ce que ça doit faire (Directeur conseil) Spécifications techniques : sur quelle base technique on part, et quelles en sont les contraintes fonctionnelles s’il y en a (Arne ou Emmanuel) Spécifications détaillées : scénarisation (contenu fonctionnel de la page) (Directeur conseil et chef de projet) Proposition graphique et rédactionnelle sur la base de la charte (Graphistes et rédacteurs) Montage de la page en HTML statique (Monteurs) Intégration de développements dans le HTML (PHP, java…) (Développeurs) Attention de ne pas confondre les Monteurs (comme Constant, Yann, Quang Haï, Jonathan, Sophie qui font du HTML, DHTML et javascript) avec les Développeurs (comme Alex et Stéphane). La frontière est étroite et perméable, mais les activités sont différentes en théorie. Page 7