Welche Configuration File Formate benutzt Ihr in euren Projekten?



  • 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.


  • Administrator

    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


  • Administrator

    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 du eval 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/YAML

    Ist 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.


  • Administrator

    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.


Anmelden zum Antworten