Welche Configuration File Formate benutzt Ihr in euren Projekten?
-
ini
Lediglich für simple Configs ist das am einfachsten, sowohl für den Schreiber, als auch für den Parser.
-
Nathan schrieb:
ini
Lediglich für simple Configs ist das am einfachsten, sowohl für den Schreiber, als auch für den Parser.ok, und für etwas komplexeres?
yaml oder json?
-
Entweder ganz einfache Konfigs mittels Key=Value-Paare (also ini). Oder wenn es komplexe Konfigs sind, benutze ich gleich eine Scriptsprache, z.B. Lua.
Sowas wie XML ist irgendwie witzlos. Zu viel Overhead für ein wenig Struktur, und trotzdem nicht leistungsfähig wie Lua.
-
Shade Of Mine schrieb:
Es geht darum, dass nur dumme Leute alles selber machen. Config parser gibt es wie Sand am Meer. Wer einen selber schreibt, der hat was grundlegendes an der Programmierung nicht verstanden.
Nur dumme Leute bezeichnen andere Leute als dumme Leute
.
-
Artchi schrieb:
Entweder ganz einfache Konfigs mittels Key=Value-Paare (also ini). Oder wenn es komplexe Konfigs sind, benutze ich gleich eine Scriptsprache, z.B. Lua.
Sowas wie XML ist irgendwie witzlos. Zu viel Overhead für ein wenig Struktur, und trotzdem nicht leistungsfähig wie Lua.
eine skriptsprache als config-file? eine interessante idee. aber wie schaut dass dann aus?
z.b.:
; "userdata.ini" -- http://commons.wikimedia.org/wiki/File:Mustermann_nPA.jpg [USER] username=Erika Mustermann birth_day=12 birth_month=08 birth_year=1964
wie würde dann sowas in lua oder python aussehen? erschliest sich mir nicht ganz
-
Für solche Sachen nutzt er ini, hat er ja auch geschrieben.
-
max mustermann schrieb:
wie würde dann sowas in lua oder python aussehen? erschliest sich mir nicht ganz
$user = array( 'name' => 'Erika Mustermann', 'birth' => new Date(12, 8, 1964) );
Ich mag yaml fuer sowas (yaml und json sind hier prinzipiell deckungsgleich)
user: name: Erika Mustermann birth: year: 1964 moth: 8 day: 12
Aber ganz ehrlich:
Es gibt genau 2 arten von Config Dateien:
Flache Config Schen wie zB ini
Oder strukturierte Formate wie JSON, YAML, XML,...Man muss sich nur entscheiden welche Art man will und dann nimmt man dort das Format dass in der Domain in der man sich bewegt am gaengigsten ist. Denn in der Praxis unterscheiden sich YAML und Lua fuer die configdatei nicht.
-
Aus Anwendersicht empfinde ich YAML als benutzungsfreundlicher. Aus Programmierersicht gefällt mir JSON wegen der eher strikteren Regeln besser. JSON ist ja auch, wie bereits erwähnt, gültiges YAML 1.2.
Meistens setze ich JSON ein, vor allem weil meine Konfigurationsdateien nicht von jedermann bearbeitet werden müssen, heisst nicht wirklich hochgradig benutzungsfreundlich sein müssen, und weil JSON, zumindest meiner persönlichen Erfahrung nach, eine deutlich bessere Unterstützung hat. YAML sehe ich eher selten im Einsatz. Zudem hatte ich schon Einsatzorte, wo ich zumindest damals, weder YAML noch JSON Parser mit den richtigen Feature-Unterstützung zur Verfügung hatte und man ein JSON Parser schneller schreibt als einen YAML Parser. Die strikteren Regeln sind da sehr hilfreich.
XML kommt bei mir eigentlich so gut wie nie mehr zum Einsatz, wenn ich nicht aus externen Gründen dazu gezwungen bin (z.B. bestehende Schnittstellen).
Grüssli
-
"JSON" ausgeschrieben heißt "JavaScript Object Notation"... es mag jetzt dumm klingen, aber ich benutze es nicht, weil es "JavaScript" im namen hat (und ja, ich weiß, dass javascript != java [ich habe mit beiden keine guten erfahrungen gemacht] ist).
yaml (spricht man das eigentlich "y - a - m - l" oder "jammel" aus?) sieht auf den ersten blick recht gut aus.
xml bietet bestimmt mehr features, aber dafür ist es überladen... keine ahnung, wer das heute noch einsetzt? im grunde könnten doch json oder yaml xml ersetzen?
ich lehne mich jetzt mal weit aus dem fenster und sage: yaml ist in den meisten fällen die beste lösung.
-
Whitespace-sensitive *wuerg*
-
xml wird afaik nur von java programmierern benutzt
-
sequel schrieb:
xml wird afaik nur von java programmierern benutzt
Hin und wieder ist es schon etwas peinlich hier im Forum zu sein
Kleiner Edit:
http://programmers.stackexchange.com/questions/61198/if-xml-is-so-bad-why-do-so-many-people-use-it
(aber da gibt's sicher bessere Artikel, nur freut's mich jetzt nicht lange googlen)MfG SideWinder
-
HTML... ne scherz ^^ schrieb:
"JSON" ausgeschrieben heißt "JavaScript Object Notation"... es mag jetzt dumm klingen, aber ich benutze es nicht, weil es "JavaScript" im namen hat (und ja, ich weiß, dass javascript != java [ich habe mit beiden keine guten erfahrungen gemacht] ist).
Dann bist du dumm
JSON ist grundsätzlich gültiges Javascript. Aber was solls? Wieso darf man das nicht auch für etwas anderes verwenden? Zudem ist es wirklich eine sehr gute Syntax. Man braucht auch gar keinen Javascript Parser dafür. Ich kenne niemanden, der für JSON einen Javascript Parser verwendet. Nicht mal in Javascript verwendest dueval
für das Lesen von JSON Daten, da dies ein Sicherheitsrisiko darstellen würde. Es gibt somit extra JSON Parser in Javascript selbst.JSON und Javascript sind somit schlussendlich in ihrer Anwendung komplett unterschiedliche Dinge.
HTML... ne scherz ^^ schrieb:
yaml (spricht man das eigentlich "y - a - m - l" oder "jammel" aus?)
Man spricht es "jammel" aus. Siehe englische Wikipedia:
http://en.wikipedia.org/wiki/YAMLIst ja ursprünglich auch die Abkürzung für "Yet Another Markup Language". Inzwischen heisst es "YAML Ain't Markup Language".
HTML... ne scherz ^^ schrieb:
xml bietet bestimmt mehr features, aber dafür ist es überladen... keine ahnung, wer das heute noch einsetzt? im grunde könnten doch json oder yaml xml ersetzen?
Mir ist nicht bekannt, was man in XML machen könnte, was z.B. in JSON nicht geht. XML ist vielleicht höchstens etwas mehr standardisiert mit Zusatzstandards. Heisst XPath, XSL, XSLT, XML-RPC, etc. Es gibt aber durchaus auch JPath, JSONPath, JsonT, JSON-RPC, JSON-Schema, etc. Zum Teil gibt es aber auch mehrere davon und das Zeug ist noch nicht so vollständig standardisiert. Gibt halt noch ein paar Konkurrenzformate und es benötigt wohl noch etwas Zeit, bis sich hier klare Standards etablieren.
Für binäre Format gibt es übrigens noch BSON.
Grüssli
-
SideWinder schrieb:
sequel schrieb:
xml wird afaik nur von java programmierern benutzt
Hin und wieder ist es schon etwas peinlich hier im Forum zu sein
Naja, man muss zugeben, dass XML während des Hypes verdammt oft benutzt wurde, auch wo es völlig unpassend gewesen wäre. Zum Beispiel als Speicherformat der eigenen Anwendung (insbesondere des eigenen Spiels), die sicher nur auf x86 bleibt, und das überhaupt nie von Fremden gelesen werden soll und darf. Das gipfelte in XML-Formaten, die nur ein Element haben, das eine verschlüsselte Zip-Datei als DATA hat. Helau. Chef hat XML gefordert; wir haben es erfüllt.
SideWinder schrieb:
Kleiner Edit:
http://programmers.stackexchange.com/questions/61198/if-xml-is-so-bad-why-do-so-many-people-use-it
(aber da gibt's sicher bessere Artikel, nur freut's mich jetzt nicht lange googlen)Eben. "Xml is great for what it was designed to be -- a platform neutral, human readable data transfer protocol with some capabilities to enforce data validation at low levels."
Passt.Human-Writable Config-Dateien würde ich zum Beispiel anders machen. Hängt aber vavon ab, wie oft der Human writen soll. Ganz wenig -> XML zum, Beispiel. Ist der Human der Chef, kriegt er einen Klicki-Bunti-Dialog und das Format ist völlig egal. Als Open-Source-Webserver wäre XML für Config-Dateien das sofortige und abschließende Argument, den Server zu löschen und einen anderen zu probieren.
Je nachdem halt.
-
Also ich empfinde XML nicht mal als lesbar. Ein JSON oder YAML File kannst du deutlich einfacher lesen. Vor allem unterstützt XML eigentlich nicht mal ein Pretty Print. Weil die Whitespaces, welche du für das Pretty Print verwendest, als Daten des Dokumentes interpretiert werden. Zum Glück geht glaub ich niemand so streng nach dem Standard. Aber es kann zum Teil zu Problemen beim Austausch von XML Dokumenten kommen:
<node> <node> Dies ist ein Text, der über mehrere Zeilen geht. </node> </node>
<node> <node> Dies ist ein Text, der über mehrere Zeilen geht. </node> </node>
<node> <node>Dies ist ein Text, der über mehrere Zeilen geht. </node> </node>
<node> <node>Dies ist ein Text, der über mehrere Zeilen geht.</node> </node>
Korrekt nach Standard:
<node><node>Dies ist ein Text, der über mehrere Zeilen geht.</node></node>
Juche!
Grüssli
-
@Dravere
Korrekt nach Standard sind die alle, nur hat der DOM-Tree der laut Standard daraus entstehen muss eben bei allen nen anderen Inhalt.
-
max mustermann schrieb:
wie würde dann sowas in lua oder python aussehen? erschliest sich mir nicht ganz
In einfachen Fällen auch nicht großartig anders. Beispiel (Lua):
terminal = "xterm" editor = os.getenv("EDITOR") or "vi"
Man kann problemlos einfachere Key-Value-Paare machen, aber hat ebenso die Möglichkeit mehr einzubauen, wenn man möchte.
sequel schrieb:
xml wird afaik nur von java programmierern benutzt
Genau. Wie war das doch gleich? Java ist eine DSL zur Konvertierung von (ganz viel) XML in lange Stacktraces? Irgendwie so jedenfalls.
-
Diesen Whitespace-Kram kriegt man übrigens gebacken indem man ein ordentliches Schema schreibt, etwas was man auf jeden Fall getan haben soll.
MfG SideWinder
-
hustbaer schrieb:
@Dravere
Korrekt nach Standard sind die alle, nur hat der DOM-Tree der laut Standard daraus entstehen muss eben bei allen nen anderen Inhalt.Ja, hast recht, war etwas unsauber formuliert. Mich stört darin aber eben, dass diese Whitespaces zu den Daten des Dokumentes gehören. Und wenn du nun ein Dokument erstellen willst, welches wirklich nur aus den Daten besteht, dann kannst du diese Whitespaces nicht verwenden, wodurch nur das letzte Beispiel gültig ist. Dieses Problem hast du dagegen mit JSON oder YAML nicht.
SideWinder schrieb:
Diesen Whitespace-Kram kriegt man übrigens gebacken indem man ein ordentliches Schema schreibt, etwas was man auf jeden Fall getan haben soll.
Wäre wünschenswert. Das Problem was du hier aber hast: Es werden Fehler gemacht. Dadurch hast du einfach zusätzliche Fehlerquellen. Auch hast du zusätzliche Komplexität. Mit JSON oder YAML ist das einfach von Haus aus schon korrekt. Whitespaces für Pretty-Printing werden ignoriert.
Ich persönlich sehe ehrlich gesagt keinen Grund mehr XML einzusetzen, ausser wegen irgendwelchen Kompatibilitätsgeschichten. Mir sind bis heute von niemandem Vorteile von XML (als Technologie selbst, also nicht wegen Unterstützung und solchem Kram) gegenüber JSON oder YAML genannt worden.
Grüssli
-
JSON hat übrigens den Nachteil, dass es keine Kommentare gibt. Damit wird das ganze sehr unbequem für den User, der die Konfigurations-Datei vielleicht direkt bearbeiten möchte.