Le Dimanche 21 Août 2005 02:17, Jean-Michel BESSOT a écrit : > Salut tout le monde
Salut Jean-mi, > Je me posais une question, quel format de fichier est conseillé pour la > configuration des programmes nasgaiens, xml? > > Et pour ruby, fredix m'a conseillé d'utiliser yaml pour l'archivage et le > chargement de la configuration, vous en pensez quoi? > > ressources : > http://www.yaml.org/ > http://www.ruby-doc.org/stdlib/libdoc/yaml/rdoc/index.html > > Personnellement je trouve ça sympathique. Je ne crois pas qu'on ait déjà parlé de privilégier un format plutôt qu'un autre pour les fichiers de configuration des outils Nasgaïa. Pour moi, ça dépend de ce qu'on entend par « fichier de configuration ». Je m'explique : * Si c'est un fichier de configuration situé dans /etc, il vaut mieux utiliser un fichier texte "plat" avec une syntaxe la plus simple possible, et avec des _commentaires_. Le contenu du fichier doit être facilement abordable/modifiable, même pour un utilisateur novice. Xml ou Yaml ne me paraissent pas appropriés. Pour Ncooker, le langage Xml est utilisé pour le fichier infos des Nbuilds et la base de données, mais pas pour le fichier /etc/Ncooker/Ncooker.conf qui reste lui un fichier avec une syntaxe simple : VARIABLE = VALEUR. Toujours dans un soucis de simplicité, il vaut mieux éviter de hiérarchiser les informations dans ce type de fichier. Si c'est vraiment nécessaire, les fichiers de config à « sections » (ou *.ini) sont utilisées par de nombreuses applications telles que Samba, Qt, Kerberos ... : « [nom section1] var1=value1 var2=value2 var3=value3 [nom section2] var1=value1 var2=value2 » Python dispose du module ConfigParser pour exploiter ce format, et il existe un module IniFile pour Ruby. Ce format ne permet d'utiliser qu'un seul niveau hiérarchique, mais à l'avantage de rester simple et compréhensible. Si un niveau hiérarchique supplémentaire est nécessaire, on peut envisager d'avoir plusieurs fichiers de configuration regroupé dans /etc/<appli>/, chaque fichier de config représentant en soi un premier niveau hiérarchique. Mais ce serait étonnant qu'on ait besoin d'aller jusque là. je suis aussi pour utiliser un format « ouvert » qui garantisse l'interopérabilité entre les applications : un autre soft pourrait avoir besoin de lire la configuration de ton application. Il est donc préférable que le format retenu puisse être exploité facilement, quelque soit le langage de programmation avec lequel le dit soft a été développé. Il faut s'intéresser aux libs fournies avec les différents langages pour savoir quels sont les formats de fichier de config qu'ils sont capables d'exploiter... * Si c'est un fichier de configuration qui n'est pas dans /etc, mais dans /var/lib/<appli> (voir le FHS :-) ), on peut considérer que c'est un fichier de paramétrage interne à l'application. Il n'est pas destiné à être modifié par l'utilisateur. Par exemple, les commandes/modules de Ncooker ont un fichier params.conf dans leur répertoire pour indiquer quelles sont les options en ligne de commande qu'ils reconnaissent. Cela permet d'ajouter dynamiquement des modules à Ncooker. Dans ce cas, on peut théoriquement utiliser le format qu'on veut. Mais toujours dans un souci d'interopérabilité, il est préférable que ce format puisse être relu facilement par des applications tiers. S'il faut hiérarchiser les informations, le Xml me paraît plus connu que Yaml. De là à dire que c'est mieux, je ne sais pas, seul l'usage peut le dire :-) Mais d'après le site de Yaml, j'ai remarqué les choses suivantes : les fichiers Yaml sont très lisibles humainement, peut-être même plus que les fichiers XML, mais leur syntaxe est plus complexe malgré les apparences. Car là où la syntaxe de Xml se résume à trois notions (balise ouvrante/fermante, balise vide, attribut), celle de Yaml en comporte plus : séparateur de document (---), sequence ( - ...), mapping (key : value, avec nécessité de mettre key entre "" s'il comporte le caractère ':'), block (> ...), block litéral (| ...), pour ceux que j'ai relevé. La modification du fichier "à la main" est donc moins évidente. De plus, je n'ai vu nulle part la possibilité d'incorporer des commentaires dans le fichier, ce qui est un gros manque pour un fichier de configuration. Voilà pour mon avis :-) ++ Gontran
