Quelques conseils pour débuter et développer en connaissance de cause
Internet ou World Wide Web, est un réseau de type "maillage". Les paquets d'informations peuvent passer par différents circuits ; il était le réseau de communication de l'armée américaine, qui l'a fait tomber dans le domaine public, une fois devenu obsolète pour elle. Comme la plupart des inventions humaines, il a des aspects positifs et négatifs. L'information est délivrée par des serveurs à des clients... L'ordinateur qui vous permet de lire cette page est un poste client. Le serveur a un identificateur spécifique, son IP, numéro de machine serveuse, adresse sur laquelle pointe votre navigateur, pour y chercher du contenu.
Une page internet est un fichier texte particulier, placé sur un serveur, délivré aux clients à travers un ou des navigateurs, logiciels installés sur votre machine, qui sollicitent ce serveur en lui demandant d'afficher telle ou telle page. Ce fichier texte constitue du code, un script, qui donne forme à ce qui s'affiche dans votre navigateur. Ce type de texte est de l'html, de l'xhtml, des langages de balises*, dits statiques ; ils donnent les instructions à votre navigateur pour que celui-ci construise la page que vous voulez voir, pour qu'il affiche le texte, les images, les animations, et qu'il joue le son que vous entendez, le tout contenu dans les pages.
La programmation dynamique permet de délivrer des contenus différents dans la même page internet, dépendant du contexte d'appel ; selon l'heure, le site et la page dont vous venez, le type de navigateur que vous utilisez, votre langue etc. Il existe de nombreux langages de programmation dynamique pour internet, les plus employés sont Php, Java, JavaScript, Perl, Python, Asp et toute la suite .Net, Visual basic (VB), VBScripts, C sharp (C#), et, moins répandus, Ruby et Rebol, entre autres. Les langages dynamiques écrivent "physiquement" le langage de balises* dans les fichiers texte (en les ouvrant, y écrivant et les refermant), selon les variables qui lui sont passées, d'après les critères du contexte d'appel. Le concept de variables est central en programmation. Une variable est un conteneur de valeur(s) ; cette valeur peut varier selon le contexte, et en général elle varie. Le nom de la variable peut être fixe (exemple en php, où; une variable est précédée du symbole $ : "$nom_de_la_variable", pour être identifiée en tant que variable), mais son nom peut également varier, gasp, et cela donne tout logiquement : "$$nom_de_la_variable", toujours en php. Les différents contenus qui peuvent s'afficher selon les variables passées sont en général issus de bases de données, de type Oracle, MySql, PostgreSQL, Msql, Sql Server, Sybase, Informix etc., soit de fichiers texte ; dans ce dernier cas il s'agit de base de données dite "à plat".
C++, le roi de la jungle, et d'autres langages, permettent aussi de programmer pour le web, mais ils ne sont pas conçus pour. Php, Java et C# (prononcer 'ci sharp') sont des dérivés de C et de C++, adaptés à la programmation internet. Là où il faut 20 lignes de C++ pour obtenir un résultat web donné, une seule ligne de Php suffit. C++ est bien plus orienté vers la réalisation d'application autonomes, dites "standalone", des logiciels exécutables. La majorité des logiciels tournant sur votre machine sont écrits en C++.
Les moteurs qui activent ces langages pour le web, hébergés sur les serveurs internet, sont utilisés en modules internes ou en programmes externes (CGI).
Les serveurs peuvent tourner sous un langage ou un autre eux aussi (un serveur est un ordinateur), les langages les plus fréquents étant Unix (et ses proches variantes comme Linux) ; et Windows Server. Ce sont, à peu de choses près, les mêmes systèmes opérationnels que vous pouvez avoir sur votre machine. Linux est gratuit, Windows payant. Ces systèmes opérationnels permettent aux serveurs de fonctionner et de délivrer du contenu statique et dynamique. Ce contenu s'affiche sur votre machine grâce à des navigateurs. Il en existe de nombreux ; les plus connus étant Internet Explorer, Firefox, qui est en train de grignoter du terrain au premier, mais aussi Opera, Netscape, Lynx, Safari pour Mac, etc. Si vous êtes sous Windows, vous pouvez, grâce à des solutions comme Cygwin, un émulateur Unix, travailler en lignes de commandes dans une console (Shell en anglais), comme si vous étiez sous Unix. Un excellent moyen de vous entraîner à manipuler Unix, tout en étant sous windows. De plus en plus de serveurs tournent sous Unix, une solution gratuite et soit disant plus facilement sécurisable. C'est également un environnement plus propice au développement, surtout en C, mais qui demande plus de connaissances que Windows pour démarrer. Certaines marques d'ordinateurs, même portables, sortent des versions de base sous Unix ; Windows reste le système opérationnel (OS) le plus vendu. Il faut aussi noter le fait qu'il existe beaucoup plus de logiciels tournant sous windows que sous Unix. Il est conseillé, un jour ou l'autre, de se familiariser avec la technologie Linux, qui dépasse certes l'informatique de base.
Lorsque vous développez pour internet, il est important de tester vos réalisations dans plusieurs de ces navigateurs, car les normes qu'ils suivent sont malheureusement différentes en certains points. Une belle oeuvre, qui fonctionne parfaitement dans Firefox par-exemple, peut donner un résultat différent dans IExplorer. Il y a des tentatives de normalisation de ces standards des navigateurs, mais nous n'y sommes pas encore ; les jeux de pouvoir et les enjeux financiers étant à l'oeuvre derrière tout ceci.
Firefox, qui grimpe en flèche mondialement, permet la navigation par onglets, mais surtout propose gratuitement de très nombreuses extensions, fort utiles tant pour les développeurs (comme tidy, un validateur XHTML etc.), que pour les internautes, comme un aspirateur de pages internet, afin de les consulter dans leur machine (en local), même hors connexion. Les liens entre les pages étant transformés à cet effet de conserver la navigation entre les pages téléchargées. Microsoft planche sur la nouvelle version d'IExplorer, la 7, qui offrira des fonctionnalités rappelant celles de Firefox.
Partez du principe que si vous savez chercher sur le net, vous pouvez trouver gratuites la plupart des ressources, dont vous avez besoin pour développer. Ainsi que pléthore de petits logiciels fort utiles. Savoir chercher veut tout d'abord dire savoir formuler vos requêtes dans les moteurs de recherche. Les mots-clef que vous choisissez, leur orthographe, leur ordre etc. Ne vous encombrez pas d'adverbes. Si vous voulez télécharger 'truc-bidule.exe', tapez 'télécharger truc-bidule.exe' dans le champ de saisie du moteur. Une requête concise est plus efficace. Beaucoup de moteurs de recherche peuvent être interrogés avec une séquence de mots-clef exacte, il suffit d'entourer de guillemets le libellé de votre requête. Les résultats concerneront exactement cette séquence de mots et elle seule.
Savoir chercher certes, mais SAVOIR REGARDER tout autant. Il est impossible de programmer sans cultiver attention et concentration. Lorsque vous programmez, le moindre point-virgule manquant ou mal placé suffit à tout bloquer.
Regardez ce qui se passe dans la barre d'adresse de vos navigateurs, elle doit impérativement être présente dans vos navigateurs ; dans la barre de statut, sous le curseur de votre souris, les info-bulles ; ce qui se cache derrière le clic droit de votre souris, pour les PCistes. Lorsque vous êtes sur un site, avec un peu d'habitude, un coup d'oeil bien appliqué, vous permet de trouver de nombreuses ressources. Lorsque le cadenas en bas à droite de votre navigateur s'affiche, cela signifie que votre machine a établi une relation cryptée avec le serveur hébergeant la page sur laquelle vous vous trouvez.
Servez-vous de vos favoris pour archiver des liens, créez des rubriques pertinentes, classez clairement vos favoris selon une nomenclature personnelle, i.e. selon votre logique personnelle.
Pour en revenir aux navigateurs, il est important de savoir qu'ils ne sont jamais complètement sûrs, des failles de sécurité sont découvertes en permanence, d'où l'importance de faire vos mises à jour régulièrement. * Mises à jour de votre système opérationnel, de vos navigateurs, de vos lecteurs, de votre ou de vos antivirus, antiespions, et mur de feu. Il faut comprendre que la sécurité totale n'existe pas ni sur les serveurs ni sur les clients. Le simple fait de vous connecter à internet, sans même ouvrir de navigateur, expose votre machine à des attaques multiples ! Il ne s'agit pas ici de générer des peurs, notre civilisation en génère déjà assez comme cela ; mais d'alerter sur les dangers, qui ne sont pas négligeables. Votre machine peut être squattée, sans que vous ne vous en rendiez compte (PC zombies) et être manipulée à distance pour lancer des attaques de masse synchrones sur des serveurs ; des logiciels espions peuvent piller votre machine, et vos informations personnelles peuvent être dérobées. Les implications juridiques existent. Protéger votre ordi est donc important *. Vous pouvez aussi utiliser 2 machines ; votre ancien ordi (protégé de toutes façons) à l'unique fin d'aller sur internet et garder le nouveau pour votre travail, sans connexion réseau externe. Il existe aussi des ordis cloisonnés, une partie du hardware (la machinerie physique) servant à aller sur internet, l'autre à vos travaux personnels. Etc. Mais ici encore chacune et chacun fait comme bon lui semble, il n'y a pas de règle. Celle et celui qui va sur le net pour jouer aura besoin d'un maximum de ressources et trouvera ridicule d'utiliser son ancien ordinateur pour le faire. A la finale, un seul ordinateur bien sécurisé et zou...
Quant au choix des technologies pour vos développements, il est assez vaste ; plusieurs facteurs entrent en ligne de compte : ce que vous voulez obtenir comme fonctionnalités sur le serveur de production (càd sur votre site internet) où vous allez héberger vos sites et leurs services, et, d'autre part, ce dont vous allez avoir besoin sur votre machine en tant que serveur de développement, pour réaliser vos solutions logicielles. La 1ère alternative que vous rencontrez est la suivante : soit vous voulez posséder physiquement votre serveur de production, placé chez vous (les modèles simples ne sont pas volumineux du tout ni cher), soit vous choisissez de louer de l'espace sur un serveur externe. Dans le 1er cas, il vous faut connaître les technologies serveur : installation du système et des logiciels, connexions réseau et aussi la sécurisation, tout ceci n'est pas une mince affaire ; mais pourquoi pas ? Il faut bien commencer un jour. Dans le second cas, soit vous optez pour une formule mutualisée, càd que d'autres sites que le (ou les) vôtre sont sur le même disque dur chez l'hébergeur ; soit pour le dédié, et, dans ce cas, vous disposez du disque entier chez l'hébergeur ; vous contrôlez alors mieux l'ensemble du paramétrage et avez, en général, beaucoup plus d'options qu'en mutualisé, nombre de comptes mail, de sous-domaines, de bases de données etc. Le dédié (environ 50 Eur/mois) est à peu près cinq fois plus onéreux que le mutualisé, et, en général, vous permet de placer un minimum de 50 sites différents sur le serveur, i.e. noms de domaines. Ce qui n'est pas le cas en mutualisé.
Les langages dynamiques les plus rencontrés sur internet sont Php, qui progresse chaque année, Asp qui est bien placé aussi et Java, qui régresse un peu ces temps-ci. Il y a moyen de développer gratuitement dans ces 3 langages, surtout maintenant que microsoft vient de sortir la suite "Express" gratuite, c'est du nouveau, Microsoft faisant en général tout payer. Cette suite permet de développer en Visual Java (J#), C sharp (C#) et en Asp; le server de base de donnée SqlExpress faisant partie de cette suite gratuite. Cette suite possède moins d'options que la version "Studio" payante, mais elle permet déjà de faire beaucoup.
Le plus pratique de ces langages est certainement le Php, pour plusieurs raisons : La plupart des hébergeurs proposent le moteur Php installé par défaut sur les packs d'hébergement, dès les plus basiques, sous Apache et avec au moins une base de donnée MySql. Ce n'est pas le cas d'Asp, qui n'est pas proposé par tous les hébergeurs dans les formules de base, idem en ce qui concerne Java. La quantité de morceaux de code Php prêts à l'emploi et gratuits, disponible sur internet, est bien supérieure à celle des deux autres langages. De vraies usines à gaz toutes prêtes, souvent gratuites, également. Asp et Php sont plus compacts que Java, qui est plus alambiqué que les deux autres. En revanche, en ce qui concerne les web-services, Java et Asp proposent plus de solutions, mais payantes en général. Ces web-services sont importants au niveau des grandes entreprises, mais, pour développer des sites de PME, les fonctionnalités de Php sont, en règle très générale, suffisantes. Les équipes qui étendent ces services de Php travaillent actuellement dans ce sens. Java reste une solution élégante, mais recule chaque année face à Php et DotNet. Java demande beaucoup de ressources côté client.
Ces trois langages sont orientés objet, càd modulaires, des éléments de code, les classes, sont réutilisables dans d'autres contextes, d'autres développements. Php avait un certain retard sur ce plan, mais avec la version 5 et bientôt 6, ce retard peut être considéré comme comblé. Il est aussi possible de programmer en Php sur un mode procédural, càd linéaire, moins facilement réutilisable ailleurs. A ce propos, il est assez important de savoir sur lequel de ces deux modes vous allez vous lancer dans la programmation Php. Cela dépend de votre forme de logique. Il est communément admis que la programmation orientée objet, la poo (oop en anglais), retranscrit au mieux en informatique la "réalité", les relations entre les objets qui nous entourent et nous. Les derniers tests de comparaison entre la programmation procédurale php et la poo montrent que la poo Php consomme plus de ressources serveur, donc que l'affichage est plus lent avec elle; ce n'est pas une raison pour la laisser de côté. Même si vous commencez par le procédural, vous aurez intérêt à en venir à la poo de toutes façons (voir les paragraphes suivants). Php 5 passant toutes les valeurs par référence, consomme moins de ressources serveur que Php 4 objet. Java, quant à lui, est pur objet. Même s'il est possible d'en faire un faux semblant de procédural, l'intérêt de cette démarche n'est pas majeur.
Ici entre en jeu un élément fondamental de l'informatique et de l'entreprenariat contemporains : la modélisation. Il est difficile aujourd'hui d'imaginer une entreprise où l'informatique n'intervient pas, à de rares exceptions près. Lorsqu'une nouvelle entreprise est créée ou qu'une entreprise déjà existante est mise à niveau, modernisée, tous les cas de figure administratifs et fonctionnels-opérationnels doivent pouvoir être cartifiés, rationalisés, quali et quantifiés ; tous les tenants, aboutissants et intervenants doivent pouvoir être représentés en tant qu'acteurs identifiés d'un scénario entièrement prévisible et contrôlable, ceci incluant la gestion, la prospective, le développement et l'expansion. L'outil qui permet ce tour de force anxyolitique est la modélisation. Elle a ses langages, elle est en amont des projets. Php a ses outils de modélisation, Java et d'autres langages aussi, certains gratuits. Il y en a beaucoup, Uml et Merise sont parmi les plus connus, à considérer comme complémentaires ; vite dit, ils permettent de dessiner tant le logiciel, que le système de base(s) de données et leur relation. Des outils logiciels font passer les diagrammes de modélisation à l'état de classes, quasi prêtes à l'emploi dans des programmes. Les classes de la poo sont les "plans" selon lesquels sont créés les objets, unités constitutives des programmes ; les diagrammes de modélisation sont les plans de ces plans... Uml concerne la modélisation logicielle, Merise concerne plus les bases de données. En Uml les intervenants d'une modélisation sont appelés des "acteurs", conception Objet, qui se retrouve dans Director, où les éléments assemblés par le logiciel sont des "acteurs" également.
Un autre avantage de la poo est sa lisibilité ; une classe, lorsque bien conçue, est un ensemble structuré et compact ; les déclarations et initialisations des variables sont clairement posées, donc facilement repérables à la lecture et relecture ; les méthodes sont écrites avec un nexus, la logique de leur enchaînement est plus simple à suivre qu'en procédural. La nécessité de clarté du code est évoquée dans de nombreux ouvrages et tutoriels. Il faut maintenir la clarté des développements pour soi-même, à l'intérieur d'une équipe synchrone; et laisser un code clair à celles et ceux qui le reprendront en main par la suite. Sur ce plan, l'utilisation des commentaires est nécessaire dès que l'application a de l'ampleur. Ce sont des instructions qui figurent dans les fichiers, mais n'apparaissent pas en ligne, les caractères les plus universels de mise en commentaires sont : /* Ici vos commentaires */.
Un aspect majeur de la programmation pour internet est la sécurité. Tous les producteurs de logiciels et d'applications, écrits dans tous les langages possibles, travaillent en permanence sur la sécurité. Php 5 et MySql 5 ont apporté de nombreuses options de sécurisation. Java 5 également. Microsoft blinde aussi en permanence ses applications DotNet et Server entre autres. Les types d'attaques sont variés ; l'élément de développement demandant particulièrement à être blindé est l'accès aux bases de données, pour des raisons facilement imaginables ; les API de payement en ligne également bien-sûr. Un des modes de cryptage-hachage des données les plus sûrs est le protocole SSL. Les API de payement menant directement à des serveurs de production sécurisés assurent également de bonnes protection des échanges de données sensibles, N° de cartes de crédit, données bancaires et boursières, etc. De récentes études montrent que trop nombreux sont les développeurs qui négligent l'aspect sécurité du code, et que le résultat pourrait en être une désaffection des entreprises pour les solutions comme Php et MySql, ce qui serait dommage étant donné tout le travail des développeurs de ces langages pour les blinder. Disons qu'en ce qui concerne Php-MySql l'application de 5 règles de base suffit à protéger raisonnablement le code. Voir les pages de ressources :
koodcoeur-php-fr.php, koodcoeur-java-fr.php, koodcoeur-ressources-internet.php.
Un site internet peut être construit de multiples façons, le choix des techniques dépend de sa finalité : si vous avez l'intention de devenir pro., si le site est amené à évoluer, s'il est à but commercial, s'il peut le devenir un jour. Etant donné l'évolution d'internet vers les technologies XML et connexes, qui existent depuis longtemps, mais ne sont pas assez appliquées, il est vivement conseillé de démarrer internet aujourd'hui avec Xhtml et Css, pour de multiples raisons. Les moteurs de recherche donnent de l'importance à l'aspect technique de construction du site dans leur évaluation et le positionneront d'autant mieux qu'il est aux normes actuelles ; un site est bien plus facilement actualisable si les feuilles de style, les CSS, sont utilisées. Une seule feuille de style peut régir le look de nombreuses pages ; si elle est modifiée, toutes les pages qui l'utilisent comme classe seront transformées. Mieux encore si, dans le cas de site dynamiques, le graphisme est séparé du code dynamique, Php, Java, DotNet etc. Cela permet aux graphistes de travailler indépendamment des développeurs, sans risquer que les uns n'altèrent le travail des autres. Il existe de très nombreux "moteurs de templates", le plus connu pour Php est certainement Smarty : Smarty. Template peut être traduit par modèle. Un moteur de template permet donc de séparer ce qui régit l'apparence du site de ce qui le rend dynamique. Smarty est un langage différent de Php, qui ne demande pas trop de temps à apprendre, mais demande la connaissance de la programmation orientée objet ; ce sont en effet des classes qui sont à l'oeuvre ici. Ceci demande déjà un certain niveau. Pour débuter, comme dit plus haut, il faut éviter d'utiliser l'Html et recourir à l'Xhtml d'emblée. Cela va demander du temps, mais cet investissement est vite gratifié en retour. Il existe de nombreux logiciels gratuits et payant permettant de construire des sites, sans avoir à en écrire tout le code. Deux des meilleurs gratuits sont maguma studio et Nvu : NVU, Maguma. Un des meilleurs payants est Dreamweaver Dreamweaver qui est également un environnement de développement avancé.
Existent également des éditeurs de Xhtml et/ou de Css payants et gratuits. Les plus connus des gratuits sont : Juststyle, Amaya, XStyle, GreenEclipse, XStandard.
Pour celles et ceux qui veulent construire des sites simples, statiques, de petits logiciels gratuits ou payants permettent de travailler sans se soucier du code ; avec quelques clics et quelques glissé-déposés vous avez un site de base, il suffit juste de comprendre la mécanique des liens. Dans les gratuits il y a : Bluevoda, Coffee, Ma page web, Arachnophilia, Crimson, FrontPageExpress. L'option Wysiwyg ("WhatYouSeeIsWhatYouGet" traduisible par "ce que vous voyez est ce que vous obtenez") signifie que vous pouvez travailler en mode visuel, vous obtenez ce que vous avez à l'écran.
Tout comme existent ces éditeurs de code, d'autres logiciels permettent de créer du contenu pour sites. Ce sont les authorings. Les plus connus, permettant de faire des animations, mais aussi de développer des sites entiers, sont Flash et Director, tous deux sur Macromedia.com. Pour être vus les sites ou animations en flash demandent d'avoir le lecteur Flash (Flash player Plugin) installé sur votre machine. Il y a de fortes chances qu'il soit installé par défaut sur votre ordinateur, sinon vous pouvez le télécharger sur le site de macromedia. Pour les animations Director, il vous faut également un lecteur, qui est rarement installé par défaut, c'est Shockwave, sur ce même site. Director permet aussi de faire des présentations autonomes, à placer sur CD, pouvant démarrer automatiquement (autorun), ce sont des projections, des exécutables (*.exe). Flash et Director ont leurs propres langages : Actionscipts et Lingo ; langages puissants qui permettent d'obtenir à peu près tous les effets désirés, importation de 3D et conception de jeux assez sophistiqués. Ces logiciels ont aussi des librairies d'effets et d'événements tout prêts, facilement utilisables dans vos créations, sans avoir forcément à coder.
Dans un registre proche, vous avez beaucoup de logiciels gratuits offrant mille options de paramétrage de votre ordinateur, de sécurité, d'organisation et de nettoyage de votre machine : en français, en anglais. D'autres gratuits permettent de faire de la 3D, en images fixes ou en animation. Ils proposent assez d'options pour apprendre les bases de la 3D, et aller ensuite éventuellement vers des versions payantes, très complètes. Les plus connus des gratuits sont : FR, EN.
En ce qui concerne Php, certains outils vous sont absolument nécessaires, ce sont les moteurs Php et Mysql et l'administrateur de base de données PhpMyAdmin, afin de les installer en local sur votre machine. Le moteur php de prédilection de Koodcoeur est : Zazouminiwebserver ; vous pouvez l'embarquer sur une clef USB ou un DVD, et ainsi faire des présentations en clientèle à partir de ces outils hyper-simples. Il faut signaler une autre solution du genre Movamp, qui peut aussi être embarqué sur clef USB. Ces deux logiciels sont en avance sur les versions de Php, MySql et PhpMyadmin des serveurs de production, vous pouvez ainsi développer avec la dernière version de ces 3 logiciels. A signaler également : EasyPhp, qui est stable, mais dont la version de Php est moins en avance que les deux premiers, puis Xampp et Wamp. Xampp a l'avantage d'exister pour Windows, Linux et MacOs ; il installe également le moteur Perl ; il est donc aussi très intéressant, bien que véhiculant en général une version peu avancée de Php et MySql. Un autre outil valable est PhpInside, un navigateur spécial Php bridable, il peut être placé en intranet par-exemple, les utilisateurs peuvent ainsi naviguer sur vos logiciels en toute neutralité. A son démarrage, Il lance automatiquement EasyPhp si vous le paramétrez pour ce faire. Un dernier outil vous est nécessaire si vous travaillez sous linux, c'est WinScp, il vous permet de vous connecter avec tous les droits à un serveur Linux et d'échanger avec ce serveur en ligne de commandes, à partir de la console (shell) de Putty. Il vous faut aussi peut-être un bon client FTP, un des meilleurs gratuits est Filezilla.
En ce qui concerne Java, de nombreux outils gratuits existent comme : Jcreator. Et bien-sûr toute la suite logicielle gratuite de Sun : J2EE, J2SE, J2ME, etc. Ne pas oublier de visiter aussi le Club des développeurs java, pour la distribution de la suite "Creators", et le Labo Sun. Il faut aussi signaler les outils gratuits de Borland dont JBuilder. Le projet Eclipse est lui aussi fort intéressant, d'autant qu'il renferme un plugin Php, permettant de développer dans ce langage. Vous trouvez de nombreuses ressources Java sur JavaDeveloppez.com. Ces packages installent tout ce dont vous avez besoin pour travailler, le serveur local, les moteurs et bases de données. Simplissime, il suffit juste de savoir que l'adresse d'un serveur local est : http://127.0.0.1/ Et que ces logiciels font toujours apparaître une icône dans le plateau système (en bas à droite de votre écran sur un PC) et qu'un clic droit sur celle-ci vous donne accès au paramétrage, et, pour certains, à votre web local.
Il faut aussi dire quelques mots sur l'Open Source (source libre) : c'est un mode de diffusion de logiciels qui permet l'accès à leur code pour le modifier, le développer plus avant. Même si l'open source est le plus souvent gratuit, ce n'est pas toujours le cas.
Des librairies (classes prêtes) sont sans cesse développées en Open Source comme Pear, le plus important de tous.
Notes : Il est vivement recommandé de considérer votre ordinateur comme un opérateur et d'en séparer vos données ainsi que d'effectuer des sauvegardes permanentes de celles-ci sur des supports externes, disques durs externes, clef USB, DVD... : Sauvegardes de vos favoris, carnet d'adresses, fichiers de vos fils d'infos etc. Si vous n'avez qu'un disque dur, vous pouvez aussi créer des partitions de ce disque avec le système sur une partition et vos données sur d'autres partitions ; ainsi si vous devez réinstaller votre système pour une raison ou une autre, vous ne perdez pas vos données.
Un must en termes de tutoriel HTML, CSS : SelfHtml