Mon nom est Dave Winer; j'ai conçu Radio Userland dont je suis le chef de projet. En d'autres lieux de ce site nous expliquons Radio aux utilisateurs, qui écrivent des carnets Web, générés par Radio, dans un navigateur Web, mais ne veulent pas particulièrement en connaitre plus sur le fonctionnement de la machine.
J'écris ici pour les développeurs, qui, eux, veulent en savoir plus, et désirent développer leurs propres programmes dans l'environnement Radio, construire leurs applications et services Web, leurs applications P2P, ou personnaliser celles que nous fournissons. Fondamentalement, c'est l'introduction principale au fonctionnement de la machine, avec des liens vers les autres documentations techniques.
Radio, c'est un serveur Web
Après avoir installé le logiciel Radio Userland, une page s'ouvre dans le navigateur, vous demandant de finir l'installation. A partir de là, tout votre travail avec Radio se passe dans le navigateur. A quel logiciel le navigateur s'adresse-t-il ? Au serveur HTTP qui se trouve dans Radio.
Le contenu auquel le serveur est dévolu se trouve dans le dossier www. Par défaut, le dossier www est un sous-dossier du dossier de l'application Radio Userland., mais il peut être à tout autre endroit que vous voulez. Nous avons initialisé ce dossier avec les pages qui vous permettent d'éditer un carnet web ou lire les nouvelles de format RSS, mais vous pouvez ajouter vos propres pages dans le dossier www, que Radio servira avec bonheur; ces pages peuvent être des scripts, peuvent ranger des informations dans la base de données des objets, faire des requêtes XML-RPC et SOAP, faire tout ce que les pages sont autorisées àfaire.
Hello Word
Pour votre première expérience, essayez d'installer un fichier HTML dans votre dossier www. Nommez le test.html.
Voici le texte que vous devrez mettre dans le fichier:
<html><body>Hello World</body></html>
Voici une copie d'écran qui en donne l'illustration.
Faites le test, puis revenez ici; je vais expliquer ce que signifie 127.0.0.1:5335
P: si Radio n'est pas en cours d'exécution lorsque vous lisez cette documentation, cela n'a pas grande importance, mais de nombreuses adresses URL de cette page ne pourront fonctionner.
A propos des adresses URL
Bon, quelques faits, rapidement. Radio fonctionne avec deux ports; vous spécifiez le premier lorsque vous démarrez le programme, qui peut être 80, 81, 8080, ou ce que vous voulez. Nous avons besoin ici de vous offrir un choix, parceque des personnes peuvent faire fonctionner un autre serveur sur le même ordinateur, et ce logiciel peut déjàutiliser le port HTTP considéré par défaut, qui est le port 80. Si vous choisissez de permettre des accès depuis l'extérieur àvotre serveur, c'est probablement ce port que vous aurez choisi.
Maintenant, en plus de ce port, dont le numéro peut être différent d'une machine àl'autre, nous fournissons aussi le port 5335, parceque c'est plus simple d'écrire la documentation. Nous savons que ce port fonctionne pour toutes installations de Radio. Nous l'avons choisi avec précaution, après avoir lu la documentation du site IETF, et vérifié les priorités des développeurs Internet. Nous déclarons donc le port 5335 comme étant le port de Radio.
Maintenant, qu'en est-il de 127.0.0.1? C'est l'adresse IP de la machine locale. Tout comme 5335, il est fixe et fonctionne sur toutes les machines (Si Murphy nous laisse tranquille). Une même machine peut aussi être accessible avec un nom de domaine, comme www.mancuso.com, ou un autre numéro IP, tel que 167.0.99.234, mais nous savons que 127.0.0.1 fonctionne sur votre machine, aussi est-ce la raison pour laquelle nous utilisons ces adresses URL dans la documentation.
Maintenant, c'est plus intéressant de laisser Radio ajouter au travail sa propre connaissance des URLs.
Vous pouvez vous référer au document de diverses manières. C'en est trop pour vous. Il est peut-être plus sage pour votre santé d'utiliser le nom complet, mais si vous oubliez l'extension, vous avez une facilité, ultérieurement, de travailllez confortablement, ce qui ne serait pas vrai si ces fonctionnalités n'existaient pas. Vous pouvez modifier l'exension en .txt, faisant transiter le fichier à travers le gestionnaire de contenu avant de l'envoyer au serveur, ou vous pouvez le changer en .opml, de telle manière que vous pouvez alors utiliser un éditeur de plan pour l'éditer (en le faisant transiter dans le gestionnaire de contenu CMS). En n'incluant pas d'extension dans les URLs, vous préservez vos options pour le futur, tout en économisant quelques caractères de votre contenu.
Le parti-pris de cette méthode est d'utiliser les extensions possibles dans Radio pour faire transiter les données dans le serveur de contenus, et pour permettre l'utilisation d'outils variés pour l'édition de votre site. Le monde extérieur n'a pas à connaitre l'extension, tant que Radio est seul concerné par les opérations.
La magie de la gestion de contenus
Maintenant, avec toutes les précautions requises, rentrons dans le Pays du Gestionnaire de Contenus. Si vous n'avez jamais utiliser un CMS (Content Management System) (Système de gestion de Contenu) auparavant, préparez votre cerveau. La première étape est facile.
Créez un nouveau fichier dans votre dossier www, nommé test2.txt; ouvrez-le dans un éditeur de texte quelconque, tel que Notepad ou BBEdit; entrez le texte suivant --et rien d'autre-- et enregistrez-le.
Ceci est une page de test.
C'est sympathique de tester Radio UserLand.
Il fonctionne vraiment bien.
Notez que nous avons utilisé la version courte, sans extension, de l'URL.
Que s'est-il passé ? D'abord, Radio a remarqué qu'il était question d'un fichier texte. Comme les fichiers de type texte sont rustres et inintéressants, il a décidé de le générer après l'avoir fait traverser un modèle. Ainsi, comme la [copie d'écran] le montre, votre petit document, ne contenant aucune balise html, se retrouve sous la forme d'une jolie page Web, sans que vous ayez eu quoique ce soit à faire. En fait, il y a moins de travail àrécupérer une jolie page ainsi générée que de créer une simple page écrite manuellement en HTML. Voilàce que l'on nomme la gestion de contenus.
A propos du signe #
Le signe # est un caractère très spécial dans l'environnement de gestion de contenus de UserLand.
Dans l'exemple sus-mentionné, en mettant le signe # devant la première ligne, nous signifions àRadio que cette ligne est une directive, ce qui signifie qu'elle doit être interprêtée d'une certaine manière. La procédure récupère le nom suivant immédiatement le signe # comme étant une instruction, puis la valeur qui la suit, séparée de l'instruction par un espace. Cette valeur est ensuite accessible pour tous scripts exécutés lorsque la page est générée.
Le modèle de ce site (nous vous en dirons plus dans quelques minutes) référence une valeur nommée <%title%>, faisant que la page peut communiquer avec le modèle en spécifiant, par exemple, #title "Hello World". Si le modèle désire connaitre l'auteur de la page, vous pouvez spécifier la directive #auteur "Bull Mancuso" au sommet du fichier, permettant ainsi au modèle de récupérer cette valeur.
Nous appellons ces consignes des #attributs (en anglais, #attributes). Lorsque vous entendrez dorénavant divers développeurs parler des #attributs, vous saurez de quoi il en retourne.
Quelques notes sur les #attributs.
En premier lieu, c'est une architecture totalement ouverte. Il n'y aucun #attribut spécial. Vous pouvez adopter vos propres conventions; si vous désirez nommer "geegaw" le titre de votre page et vous y référer sous la forme <%geegaw%> dans votre modèle, n'hésitez pas.
Ensuite, ce qui apparaît après l'espace peut être une expression complète de langage de programmation. Que ce soit une recherche dans une base de données ou un appel XML-RPC pour déterminer le titre de la page, il n'y a aucune limite donnée aux possibilités expressives des directives.
Ce concept n'apparaît pas seulement dans les fichiers, mais aussi dans le fichier système. Les fichiers dont les noms commencent par des signes # ont une signification particulière pour le système de gestion de contenus. Si vous regardez dans le dossier www, vous remarquerez plusieurs fichiers dont les noms commencent par ce signe #. Ce sont les modèles et les préférences guidant le comportement du gestionnaire de contenus.
Ajouter une macro à hello World
Bon, nous avons vu comment fonctionnait les #directives; aussi, pour complèter le tableau, ajoutons une macro l'exemple Hello World, après la directive #title, et voyons comment se comporte le gestionnaire de contenus avec çà. Pour faire le test, ajoutons la ligne suivante au fichier test2.txt:
La date courante et l'heure: <%clock.now ()%>.
Rafraichissez la page plusieurs fois; l'heure change, en accord avec la date et l'heure courante données par votre horloge de système.
Considérons maintenant que cette manière de faire vous ouvre une très grande porte, puisque l'environnement Radio Userland supporte tous les verbes de l'environnement de programmation de Frontier. Le site DocsDerver vous en donne la liste complète. Voici la page du verbe clock.now. Chacun de ces verbes peut être appelé depuis vos pages Web. En outre, c'est un langage de programmation complet, permettant à vos pages de faire des boucles, des alternatives booléennes, des accès au fichier système ou à une base de données, etc... La porte est facile d'accès, mais ce qui se trouve derrière la porte est riche et vaste.
Le signe # dans le fichier système
Varions les plaisirs et regardons à présent le fichier système et le dossier www, qui contient toutes les pages que Radio génère.
Une fois encore, vous voyez le signe # apparaître au début des noms de fichiers, tels que #prefs.txt, #template.txt, etc.
Voici une copie d'écran de votre dossier www dans le dossier système
Dans ce contexte, le signe # dit: "Ne pas générer ce fichier; il contient des informations pour guider le serveur dans sa manière de générer les contenus"; en fait, le serveur affirme que ces fichiers n'existent pas.
#template.txt
Lorsque Radio génère une page, il se renseigne auparavant sur l'existence d'un fichier #template.txt qui pourrait se trouver dans le même dossier que le fichier qu'il manipule. S'il ne le trouve pas, il regarde àun niveau supérieur. Il cherche ainsi jusqu'au dernier niveau de la hiérarchie, à savoir le dossier www, où il trouvera le modèle principal. Si vous regardez dans le fichier #template.txt qui se trouve à ce dernier niveau, vous remarquerez le code HTML caractérisant le carnet web par défaut de Radio.
Vous pouvez créer un modèle d'aspect complètement différent pour un sous-dossier de votre dossier www. Allez-y ! Créer un sous-dossier dans votre dossier www et nommez-le monPremierSite. Créez un fichier dans ce dossier et nommez-le #template.txt, puis, dans ce fichier, collez les lignes suivantes:
<html><head><title><%title%></title></head>
<body><%bodytext%></body></html>
Créez ensuite un fichier nommé index.txt, puis collez le texte suivant dans ce fichier:
C'est la page d'accueil de mon premier site.
Quelques commentaires. Nous n'avons pas à inclure "index" dans l'adresse URL parceque, comme la plupart des serveurs Web, Radio lira ce fichier si aucun fichier n'est désigné. Ensuite, le modèle est vraiment rustique, mais heureusement, il va sans dire que vous pouvez lui ajouter du code HTML, JavaScript, CSS, donnant à toutes les pages de votre sous-site une apparence commune qui les distingue de l'apparence définie par défaut dans le fichier #template.txt qui se trouve au plus haut niveau du dossier www. Vous pouvez ajouter des macros dans les modèles, affecter un modèle spécial àune page unique, telle que la page d'accueil, et même construire des hiérarchie de modèles.
#upstream.xml
Au sommet du dossier www, vous remarquerez aussi un fichier nommé #upstream.xml. En consultant ce fichier, vous y lirez quelques codes XML comme ceci. Ce fichier désigne à Radio le lieu d'exportation du contenu du dossier. Radio est toujours en consultation du dossier www, s'informant de l'existence de nouveaux fichiers, de modifications apportés aux fichiers et de suppressions de fichiers. Lorsqu'un évènement de cette nature arrive, Radio utilise l'information contenu dans le fichier #upstream.xml pour déterminer à quel serveur il se doit de communiquer et ce qu'il doit lui dire pour qu'il reçoive une version de votre contenu synchronisée avec le contenu du serveur distant.
Si vous avez seulement un fichier #upstream.xml dans votre dossier www, tout votre contenu sera transféré au serveur communautaire que UserLand gère pour les utilisateurs de Radio. Mais si vous regardez dans le sous-dossier système du dossier www, vous verrez que ce dossier contient aussi un fichier #upstream.xml. Celui-ci spécifie un type nommé "none" -- c'est un type spécial, indiquant que le contenu de ce dossier ne doit pas être exporté. Si vous désirez garder seulement en local un autre de vos dossiers, vous pouvez faire la même chose.
#upstream.xml fonctionne exactement comme #template.txt, avec le respect de la hiérarchie. Tout dossier peut avoir son propre fichier #upstream.xml qui prend priorité sur tout autre qui serait dans un dossier supérieur, vous permettant ainsi d'organiser votre dossier www en fonction de l'existence de multiples serveurs.
#prefs.txt
Un autre fichier spécial qui est vraiment important est le fichier #prefs.txt.
Vous vous souvenez des #directives dont nous avons parlé plus haut ? Bien, #prefs.txt est un fichier spécial ne contenant que des #directives. Lorsqu'une page est exportée, le fichier #prefs.txt du dossier www est chargé, lu et les directives qu'il contient sont exécutées. Ensuite la procédure traverse hiérarchiquement, d'amont en aval, les dossiers du chemin d'accès du fichier cible, chargeant au passage les fichiers #prefs.txt rencontrés, s'ils existent, et exécutent tour-à-tour les directives qu'ils contiennent. La boucle continue jusqu'à ce que le dossier contenant le fichier cible soit atteint. Ainsi, les directives du fichier #prefs.txt du dossier le plus profond prend la priorité sur tout autre dossier de moindre profondeur hiérarchique.
Tout comme pour les #directives contenues dans les fichiers, l'architecture des fichiers #prefs.txt est complètement ouverte. Vous pouvez inventer vos propres directives et les utiliser dans les modèles et les macros.
#flRender
Imaginez un rail de chemin de fer avec une intersection à un point donné. Il y a, à ce point, un levier d'intersection qui, baissé, ménera le train dans une direction et, levé, dans l'autre direction.
Voilà ce qu'est #flRender, un levier d'intersection. Lorsque Radio exporte un fichier, il demande "Dois-je générer ce fichier ou non ?". Généralement, la réponse est oui, parceque Radio est un système de gestion de contenu; aussi est-il bon de prendre avantage de ce pour quoi il est fait. Mais, parfois, vous pouvez désirer que le fichier soit exporté tel quel, sans aucune transformation. Dans ce cas, vous pouvez ajouter la directive #flRender false au fichier #prefs.txt.
Si vous regardez dans le dossier Gems qui se trouve au plus haut niveau du dossier www, vous remarquerez que la seule particularité de ce dossier est qu'il contient un fichier #prefs.txt possédant une directive #flRender false. Ainsi, tous les fichiers de ce dossier sont exportés sans aucune transformation.
note:
ce texte n'est pas une traduction littérale du texte original, mais une libre transposition.