Welche Configuration File Formate benutzt Ihr in euren Projekten?
-
YAML muss man schon alleine dafuer hassen, dass es Spaces verwendet.
-
xml ist eine möglichkeit, aber ".ini" dateien sind bedeutend simpler aufgebaut,
man kann sich seinen eingenen parser in 20minuten (höchstens) schreiben.es richtiges dateiformat gibt es da nicht...
falls es dich interessiert:
Eine ini-datei ist aufgebaut in sections, in denen keys und values gespeichert werden:; Dies ist ein Kommentar, er wird mit einem ";" eingeleitet und gilt bis zum ; Ende der Zeile [EINSTELLUNGEN] ; Section "Einstellungen" key1 = hallo ; der key "key1" aus section "Einstellungen" hat den wert "Hallo [ZWEITE SECTION] key1 = trololo ; der key "key1" aus section "ZWEITE SECTION" hat den wert "trololo"
und das war eigentlich schon alles. zwischen groß- und kleinschreibung wird nicht unterschieden.
jeder keyname darf pro section nur einmal vorkommen.einen parser für sowas ist echt einfach (< 100 zeilen code, schätze ich).
zum nachlesen: http://de.wikipedia.org/wiki/Initialisierungsdatei
-
hallo,
was genau findet ihr eigentlich besser, JSON oder YAML?
beide scheinen ja eine "xml-lightversion" zu sein.
mich interessiert...
1. welche sprache ist einfacher zu parsen?
2. welche sprache ist "schneller" / "leichtgewichtiger"?
3. welche sprache ist leichter zu lesen?würde mich mal interessieren.
-
Danke an alle Antwortenden...
YAML schaue ich mir mal an, wobei ich wahrscheinlich nach den heutigen Diskussionen auf XML festgelegt bin.
Nichts desto trotz interessieren mich weitere Antworten...
Gruß
Tobi
-
@XML vs INI: Einen eigenen Parser für welches Format auch immer zu schreiben nur um Konfigurationsdateien zu lesen -> kommt sowieso nicht in Frage. Ist imho kein Argument.
MfG SideWinder
-
YAML oder GAMMEL schrieb:
was genau findet ihr eigentlich besser, JSON oder YAML?
Beide sind sich enorm ähnlich.
JSON ist zB gültiges yamlIm Prinzip hat Side aber schon das essentielle gesagt: einen eigenen Parser schreiben kommt nicht in Frage - also welche Parser hat man zur Verfügung?
Bei uns ist es eben so, dass ein größteil aller Config Sachen in yaml und ini Dateien vorliegt - weil das eben die guten Parser sind die wir haben.
JSON und XML bietet sich hier natürlich auch an, weil es dazu Parser wie Sand am Meer gibt...
PS:
Wegen den Spaces bei YAML: http://editorconfig.org/
Seit es EditorConfig gibt, sind solche Sachen wie Spaces/Tabs etc vollkommen uninteressant geworden. Man lädt die passende Config und schreibt den Code so wie man es gewohnt ist. Den Rest macht EditorConfig.
-
Und was verwendet EditorConfig als Konfigurationsformat? ... INI
-
also wer es nicht auf die reihe kriegt, so einen verschissenen (man verzeihe mir das wort) ini-parser zu programmieren, der darf sich nicht programmierer nennen.
xml ist da schon eine andere liga, aber einen ini parser...
verstehe ich jetzt auch nicht, warum man keine eigenen parser programmieren soll. irgendjemand programmiert parser, sonst hätte ja keiner einen (weil ja keiner einen programmiert).
ob diese leute das genausogut können wie du und ich ist hier die frage.
das gleiche gilt auch für irgendwelche crypto-libs... ständig hört man den spruch "bloß nicht selber implementieren, sondern eine fertige lib verwenden!".
find ich problematisch, immer zu sagen "Ein anderer macht's, und er machts wahrscheinlich auch noch besser als ich!".
-
das übliche blabla schrieb:
also wer es nicht auf die reihe kriegt, so einen verschissenen (man verzeihe mir das wort) ini-parser zu programmieren, der darf sich nicht programmierer nennen.
Es geht nicht ums koennen. Jeder Affe kannen einen validierenden XML Parser schreiben - er braucht halt dementsprechend.
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.
-
Shade Of Mine schrieb:
Es geht darum, dass nur dumme Leute alles selber machen. Config parser gibt es wie Sand am Meer.
ja, aber woher willst du wissen, dass die erhältlichen parser nicht auch von "dummen leuten" programmiert wurden?
ich hab schon quellcodes von kommerziellen spielen gesehen. alle haben ini-dateien benutzt, und ALLE hatten einen EIGENEN parser.
-
-.-'' schrieb:
Shade Of Mine schrieb:
Es geht darum, dass nur dumme Leute alles selber machen. Config parser gibt es wie Sand am Meer.
ja, aber woher willst du wissen, dass die erhältlichen parser nicht auch von "dummen leuten" programmiert wurden?
ich hab schon quellcodes von kommerziellen spielen gesehen. alle haben ini-dateien benutzt, und ALLE hatten einen EIGENEN parser.
Sie koennen von den groessten Idioten der Welt programmiert worden sein. Wichtig ist, dass sie Fehlerfrei sind. Und fehlerfrei ist nur Software die sehr sehr sehr sehr gut getestet wird. Und welche Software ist das? Nur Software die ueberall eingesetzt wird.
PS:
google mal nach "das rad neu erfinden"
-
also was jetzt?
ini oder yaml? oder doch json?
was ist jetzt am "leichtgewichtigsten" und resourcensparensten?
-
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