<?xml version="1.0" encoding="ISO-8859-1"?><!-- OPML generated by Radio UserLand v8.1 on Sun, 26 Jun 2005 14:29:26 GMT -->
<opml version="1.1">	<head>		<title>raDdeveloppers.opml</title>		<dateCreated>Mon, 08 Mar 2004 14:42:27 GMT</dateCreated>		<dateModified>Sun, 26 Jun 2005 14:29:26 GMT</dateModified>		<ownerName>Le Drean Gwenael</ownerName>		<ownerEmail>gwenael.ledrean@chello.fr</ownerEmail>		<expansionState></expansionState>		<vertScrollState>1</vertScrollState>		<windowTop>226</windowTop>		<windowLeft>138</windowLeft>		<windowBottom>688</windowBottom>		<windowRight>875</windowRight>		</head>	<body>		<outline text="#title &quot;Radio UserLand pour les d&amp;eacute;veloppeurs&quot;"/>		<outline text="#collapseTitle &quot;replier&quot;"/>		<outline text="#expandTitle &quot;d&amp;eacute;ployer&quot;"/>		<outline text="Mon nom est Dave Winer; j'ai conçu &lt;b&gt;Radio Userland&lt;/b&gt; 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."/>		<outline text="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."/>		<outline text="&lt;b&gt;Radio, c'est un serveur Web&lt;/b&gt;">			<outline text="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&amp;agrave;, 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."/>			<outline text="Le contenu auquel le serveur est dévolu se trouve dans le dossier &lt;i&gt;www&lt;/i&gt;. Par défaut, le dossier &lt;i&gt;www&lt;/i&gt; 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 &lt;i&gt;www&lt;/i&gt;, que Radio servira avec bonheur; ces pages peuvent &amp;ecirc;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."/>			</outline>		<outline text="&lt;b&gt;Hello Word&lt;/b&gt;">			<outline text="Pour votre première expérience, essayez d'installer un fichier HTML dans votre dossier &lt;i&gt;www&lt;/i&gt;. Nommez le test.html."/>			<outline text="Voici le texte que vous devrez mettre dans le fichier:">				<outline text="&amp;#060html&amp;#062&amp;#060body&amp;#062Hello World&amp;#060/body&amp;#062&amp;#060/html&amp;#062"/>				</outline>			<outline text="L'adresse URL de ce fichier est: http://127.0.0.1:5335/test.html."/>			<outline text="Voici une copie d'écran qui en donne l'illustration." type="link" url="http://radio.weblogs.com/0100306/images/radio/helloWorldScreen.gif"/>			<outline text="Faites le test, puis revenez ici; je vais expliquer ce que signifie 127.0.0.1:5335"/>			<outline text="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."/>			</outline>		<outline text="&lt;b&gt;A propos des adresses URL&lt;/b&gt;">			<outline text="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."/>			<outline text="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."/>			<outline text="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 &lt;i&gt;savons&lt;/i&gt; que 127.0.0.1 fonctionne sur votre machine, aussi est-ce la raison pour laquelle nous utilisons ces adresses URL dans la documentation."/>			<outline text="Maintenant, c'est plus intéressant de laisser Radio ajouter au travail sa propre connaissance des URLs."/>			<outline text="Considérez l'adresse URL du document Hello World: http://127.0.0.1:5335/test.html."/>			<outline text="Vous pouvez aussi vous référer à ce document sous la forme: http://127.0.0.1:5335/test. Notez l'omission du suffixe .html."/>			<outline text="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."/>			<outline text="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."/>			</outline>		<outline text="&lt;b&gt;La magie de la gestion de contenus&lt;/b&gt;">			<outline text="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."/>			<outline text="Créez un nouveau fichier dans votre dossier &lt;i&gt;www&lt;/i&gt;, 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.">				<outline text="\#title &quot;Hello World&quot;"/>				<outline text="Ceci est une page de test."/>				<outline text="C'est sympathique de tester Radio UserLand."/>				<outline text="Il fonctionne vraiment bien."/>				</outline>			<outline text="A présent, consultez le document dans votre navigateur: http://127.0.0.1:5335/test2."/>			<outline text="Notez que nous avons utilisé la version courte, sans extension, de l'URL."/>			<outline text="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."/>			</outline>		<outline text="&lt;b&gt;A propos du signe #&lt;/b&gt;">			<outline text="Le signe # est un caractère très spécial dans l'environnement de gestion de contenus de UserLand."/>			<outline text="Dans l'exemple sus-mentionné, en mettant le signe # devant la première ligne, nous signifions àRadio que cette ligne est une &lt;i&gt;directive&lt;/i&gt;, 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."/>			<outline text="Le modèle de ce site (nous vous en dirons plus dans quelques minutes) référence une valeur nommée &amp;#060%title%&amp;#062, faisant que la page peut communiquer avec le mod&amp;egrave;le en spécifiant, par exemple, #title &quot;Hello World&quot;. Si le modèle désire connaitre l'auteur de la page, vous pouvez spécifier la directive #auteur &quot;Bull Mancuso&quot; au sommet du fichier, permettant ainsi au modèle de récupérer cette valeur."/>			<outline text="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."/>			<outline text="Quelques notes sur les #attributs.">				<outline text=" 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 &quot;geegaw&quot; le titre de votre page et vous y référer sous la forme &amp;#060%geegaw%&amp;#062 dans votre modèle, n'hésitez pas."/>				<outline text="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."/>				</outline>			<outline text="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 &lt;i&gt;www&lt;/i&gt;, 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."/>			</outline>		<outline text="&lt;b&gt;Ajouter une macro à hello World&lt;/b&gt;">			<outline text="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 &amp;ccedil;&amp;agrave;. Pour faire le test, ajoutons la ligne suivante au fichier test2.txt:">				<outline text="La date courante et l'heure: &amp;#060%clock.now ()%&amp;#062."/>				</outline>			<outline text="Ensuite, consultez le document dans votre navigateur:  http://127.0.0.1:5335/test2."/>			<outline text="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."/>			<outline text="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 &lt;a href=&quot;http://docserver.userland.com/&quot; target=&quot;new&quot;&gt;site&lt;/a&gt; DocsDerver vous en donne la liste complète. Voici la &lt;a href=&quot;http://docserver.userland.com/clock/now&quot; target=&quot;new&quot;&gt;page&lt;/a&gt; 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."/>			</outline>		<outline text="&lt;b&gt;Le signe # dans le fichier système&lt;/b&gt;">			<outline text="Varions les plaisirs et regardons à présent le fichier système et le dossier &lt;i&gt;www&lt;/i&gt;, qui contient toutes les pages que Radio génère."/>			<outline text="Une fois encore, vous voyez le signe # apparaître au début des noms de fichiers, tels que &lt;i&gt;#prefs.txt&lt;/i&gt;, &lt;i&gt;#template.txt&lt;/i&gt;, etc. ">				<outline text="Voici une copie d'écran de votre dossier &lt;i&gt;www&lt;/i&gt; dans le dossier système" type="link" url="http://www.scripting.com/images/2001/12/13/wwwFolderContents.gif"/>				</outline>			<outline text="Dans ce contexte, le signe # dit: &quot;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&quot;; en fait, le serveur affirme que ces fichiers n'existent pas."/>			</outline>		<outline text="&lt;b&gt;#template.txt&lt;/b&gt;">			<outline text="Lorsque Radio génère une page, il se renseigne auparavant sur l'existence d'un fichier &lt;i&gt;#template.txt&lt;/i&gt; 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 &lt;i&gt;www&lt;/i&gt;, où il trouvera le modèle principal. Si vous regardez dans le fichier &lt;i&gt;#template.txt&lt;/i&gt; qui se trouve à ce dernier niveau, vous remarquerez le code HTML caractérisant le carnet web par défaut de Radio."/>			<outline text="Vous pouvez créer un modèle d'aspect complètement différent pour un sous-dossier de votre dossier &lt;i&gt;www&lt;/i&gt;. Allez-y ! Créer un sous-dossier dans votre dossier &lt;i&gt;www&lt;/i&gt; et nommez-le &lt;i&gt;monPremierSite&lt;/i&gt;. Créez un fichier dans ce dossier et nommez-le #template.txt, puis, dans ce fichier, collez les lignes suivantes:">				<outline text="&amp;#060html&amp;#062&amp;#060head&amp;#062&amp;#060title&amp;#062\&lt;%title%&gt;&amp;#060/title&amp;#062&amp;#060/head&amp;#062"/>				<outline text="&amp;#060body&amp;#062\&lt;%bodytext%&gt;&amp;#060/body&amp;#062&amp;#060/html&amp;#062"/>				</outline>			<outline text="Créez ensuite un fichier nommé index.txt, puis collez le texte suivant dans ce fichier:">				<outline text="\#title &quot;Page d'accueil&quot;"/>				<outline text="C'est la page d'accueil de mon premier site."/>				</outline>			<outline text="Ensuite consultez index.txt dans votre navigateur: http://127.0.0.1:5335/monPremierSite/."/>			<outline text="Quelques commentaires. Nous n'avons pas &amp;agrave; inclure &quot;index&quot; 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 &amp;agrave; toutes les pages de votre sous-site une apparence commune qui les distingue de l'apparence définie par défaut dans le fichier &lt;i&gt;#template.txt&lt;/i&gt; qui se trouve au plus haut niveau du dossier &lt;i&gt;www&lt;/i&gt;. 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."/>			</outline>		<outline text="&lt;b&gt;#upstream.xml&lt;/b&gt;">			<outline text="Au sommet du dossier &lt;i&gt;www&lt;/i&gt;, vous remarquerez aussi un fichier nommé &lt;i&gt;#upstream.xml&lt;/i&gt;. En &lt;a href=&quot;http://127.0.0.1:5335/%23upstream.xml?folderView=1&quot; target=&quot;new&quot;&gt;consultant&lt;/a&gt; ce fichier, vous y lirez quelques codes XML &lt;a href=&quot;http://www.scripting.com/images/2001/12/13/upstreamExample.gif&quot; target=&quot;new&quot;&gt;comme ceci&lt;/a&gt;. Ce fichier désigne à Radio le lieu d'exportation du contenu du dossier. Radio est toujours en consultation du dossier &lt;i&gt;www&lt;/i&gt;, 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 &lt;i&gt;#upstream.xml&lt;/i&gt; pour déterminer à quel serveur il se doit de communiquer et ce qu'il doit lui dire pour qu'il re&amp;ccedil;oive une version de votre contenu synchronisée avec le contenu du serveur distant."/>			<outline text="Si vous avez seulement un fichier &lt;i&gt;#upstream.xml&lt;/i&gt; dans votre dossier &lt;i&gt;www&lt;/i&gt;, 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 &lt;i&gt;www&lt;/i&gt;, vous &lt;a href=&quot;http://127.0.0.1:5335/system/%23upstream.xml?folderView=1&quot; target=&quot;new&quot;&gt;verrez&lt;/a&gt; que ce dossier contient aussi un fichier &lt;i&gt;#upstream.xml&lt;/i&gt;. Celui-ci spécifie un type nommé &quot;none&quot; -- 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."/>			<outline text="&lt;i&gt;#upstream.xml&lt;/i&gt; fonctionne exactement comme &lt;i&gt;#template.txt&lt;/i&gt;, avec le respect de la hiérarchie. Tout dossier peut avoir son propre fichier &lt;i&gt;#upstream.xml&lt;/i&gt; qui prend priorité sur tout autre qui serait dans un dossier supérieur, vous permettant ainsi d'organiser votre dossier &lt;i&gt;www&lt;/i&gt; en fonction de l'existence de multiples serveurs."/>			</outline>		<outline text="&lt;b&gt;#prefs.txt&lt;/b&gt;">			<outline text="Un autre fichier spécial qui est vraiment important est le fichier &lt;i&gt;#prefs.txt&lt;/i&gt;."/>			<outline text="Vous vous souvenez des #directives dont nous avons parlé plus haut ? Bien, &lt;i&gt;#prefs.txt&lt;/i&gt; est un fichier spécial ne contenant que des #directives. Lorsqu'une page est exportée, le fichier &lt;i&gt;#prefs.txt&lt;/i&gt; du dossier &lt;i&gt;www&lt;/i&gt; 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 &lt;i&gt;#prefs.txt&lt;/i&gt; rencontrés, s'ils existent, et exécutent tour-&amp;agrave;-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 &lt;i&gt;#prefs.txt&lt;/i&gt; du dossier le plus profond prend la priorité sur tout autre dossier de moindre profondeur hiérarchique."/>			<outline text="Tout comme pour les #directives contenues dans les fichiers, l'architecture des fichiers &lt;i&gt;#prefs.txt&lt;/i&gt; est complètement ouverte. Vous pouvez inventer vos propres directives et les utiliser dans les modèles et les macros."/>			</outline>		<outline text="&lt;b&gt;#flRender&lt;/b&gt;">			<outline text="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."/>			<outline text="Voilà ce qu'est &lt;i&gt;#flRender&lt;/i&gt;, un levier d'intersection. Lorsque Radio exporte un fichier, il demande &quot;Dois-je générer ce fichier ou non ?&quot;. 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 &lt;i&gt;#prefs.txt&lt;/i&gt;."/>			<outline text="Si vous regardez &lt;a href=&quot;http://127.0.0.1:5335/gems/?folderView=1&quot; target=&quot;new&quot;&gt;dans&lt;/a&gt; le dossier &lt;i&gt;Gems&lt;/i&gt; qui se trouve au plus haut niveau du dossier &lt;i&gt;www&lt;/i&gt;, vous remarquerez que la seule particularité de ce dossier est qu'il contient un fichier &lt;a href=&quot;http://127.0.0.1:5335/gems/%23prefs.txt?folderView=1&quot; target=&quot;new&quot;&gt;&lt;i&gt;#prefs.txt&lt;/i&gt;&lt;/a&gt; possédant une directive #flRender false. Ainsi, tous les fichiers de ce dossier sont exportés sans aucune transformation."/>			</outline>		<outline text="note:">			<outline text="ce texte n'est pas une traduction littérale du texte original, mais une libre transposition."/>			<outline text="auteur original: &lt;a href=&quot;http://radio.userland.com/developer/intro&quot; target=&quot;new&quot;&gt;Radio pour les développeurs&lt;/a&gt;"/>			<outline text="adaptation: &lt;a href=&quot;mailto:gwen@scripteur.com&quot;&gt;Le Dréan Gwénaël&lt;/a&gt; (ceci pour les commentaires ;-))"/>			</outline>		</body>	</opml>