• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Format von gespeicherten Dateien einer Anwendung...

Zettt

Doppelter Melonenapfel
Registriert
16.10.05
Beiträge
3.374
Das nuetzt mir ja nichts. Weil die Pruefungsdatenbank die ich in Base geschrieben habe, nicht der meines Kollegen entspricht. Somit ist die Kompatibilitaet nicht gewaehrt...die Datenbank unbrauchbar.
Sie funktioniert fuer meine Pruefung aber fuer keine andere...
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Das nuetzt mir ja nichts. Weil die Pruefungsdatenbank die ich in Base geschrieben habe, nicht der meines Kollegen entspricht.
Um die Konversion kommst Du eh nicht herum. Ergo, einige Dich mit ihm auf ein gemeinsames Vorgehen und implementiere eine entsprechende Lösung.
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Sehe ich auch wie tjp. Am Besten ihr beide einigt Euch auf ein XML Format und jeder screibt für sein Tool den entsprechenden Ein- und Ausgabeteil. Vorschlag, nach dem, was ich Deinem Anhang entnommen habe (nicht als DTD/Schema sondern nur ein Beispiel, beliebig ausbaubar):
Code:
<Ergebnisse>
  <Studenten>
    <Student id="12345abcde">
      <Vorname></Vorname>
      <Nachname></Nachname>
      <Spitzname>Zett</Spitzname>
    </Student>
     :
  </Studenten>
  <Tests>
    <Test @name="testname">
      <Frage nummer="1">
        <Resultat student="12345abcde">99%</Resultat>
          :
      </Frage>
       :
    </Test>
      :
  </Tests>
</Ergebnisse>
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Property Lists sind nicht plattformunabhängig wie eingangs gefordert und scheiden damit aus.
Hmmmm, das Format ist sicherlich so allgemein, dass man es auf jeder Plattform lesen kann. Mutmaßlich meinst du, dass es nicht für jede Programmiersprache einen vorgefertigten Scanner gibt.

Ich habe mir jedenfalls als PHP-Neuling in kurzer Zeit einen Property-List-Reader geschrieben. Es gab aber auch eine fertige Lösung, irgendwo, finde es nicht mehr. Darüber hinaus kannst du Property-Listen als XML speichern, wie du es im OP schriebst. Du könntest sie also mit jedem XML-Reader lesen. Wirkich sinnvoll ist das aber nicht, da Property-Listen ja nur einen kleine Ausschnitt benutzen und zudem für ihre Anwendung spezialisiert sind.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Skeeve, an Deinem Beispiel sieht man auch sehr schön, welchen VORTEIL Plists (die auch iTunes benutzt) haben.

Du musst jetzt irgendwo festlegen, was "Vorname" etc für Datentypen sind, in der Plist ist diese Information immer enthalten.

Ich kann eine Plist auslesen und Anzeigen und sogar ändern, ohne anwendungsspezifische Informationen zu haben.

Alex
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Skeeve, an Deinem Beispiel sieht man auch sehr schön, welchen VORTEIL Plists (die auch iTunes benutzt) haben.

Du musst jetzt irgendwo festlegen, was "Vorname" etc für Datentypen sind, in der Plist ist diese Information immer enthalten.

Ich kann eine Plist auslesen und Anzeigen und sogar ändern, ohne anwendungsspezifische Informationen zu haben.

Alex

Leute! Ihr verwechselt da was.

Wie schon gesagt, sind plists ganz klasse, wenn man Daten im selben Programm lesen und schreiben will. Unschön wird es, wenn:
  1. Sich mal die Datenstruktur im Programm ändert
  2. Wenn man mit Standard Methoden (xslt z.B.) auf solche exportieren (ich rede gerade von iTunes) "XML" Dateien zugreifen will

Und ich muß nirgends festlegen, welchen Datentyp "Vorname" hat. Im XML ist das nur Text (PCDATA). Wenn ich Schma verwende und nicht DTD, dann kann ich hier natürlich festlegen was das für ein Datentyp ist, mit dem ungemeinen Vorteil, daß es bereits Standardlibraries zuhauf gibt, die mir gleich beim Einlesen die Gültigkeit sicherstellen.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Skeeve, an Deinem Beispiel sieht man auch sehr schön, welchen VORTEIL Plists (die auch iTunes benutzt) haben.

Du musst jetzt irgendwo festlegen, was "Vorname" etc für Datentypen sind, in der Plist ist diese Information immer enthalten.
Exakt das dachte ich auch: Keine eigene DTD erforderlich

Ich kann eine Plist auslesen und Anzeigen und sogar ändern, ohne anwendungsspezifische Informationen zu haben.
Jepp. Einfach einen Property-List-Editor öffnen und drin rummalen. So unterschiedlich sind nämlich Anwendungsdaten in aller Regel nicht. Und aus der Datei instantiere ich mir die Property-List dann in zwei, drei Zeilen Code.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Leute! Ihr verwechselt da was.

Wie schon gesagt, sind plists ganz klasse, wenn man Daten im selben Programm lesen und schreiben will. Unschön wird es, wenn:
  1. Sich mal die Datenstruktur im Programm ändert
  2. Wenn man mit Standard Methoden (xslt z.B.) auf solche exportieren (ich rede gerade von iTunes) "XML" Dateien zugreifen will

Und ich muß nirgends festlegen, welchen Datentyp "Vorname" hat. Im XML ist das nur Text (PCDATA). Wenn ich Schma verwende und nicht DTD, dann kann ich hier natürlich festlegen was das für ein Datentyp ist, mit dem ungemeinen Vorteil, daß es bereits Standardlibraries zuhauf gibt, die mir gleich beim Einlesen die Gültigkeit sicherstellen.
Ich verstehe nicht, warum
a) der Aufwand bei einer Struktur-Änderung größer oder kleiner wird, wenn man Property-Lists verwendet,
b) wieso man nicht Standard-Parser verwenden können soll. (Bei dem extrem einfachen Aufbau einer Property-List würde ich das aber nicht machen, habe es nicht gemacht. Man schreibt sich den wirklich so herunter.)
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Ich verstehe nicht, warum
a) der Aufwand bei einer Struktur-Änderung größer oder kleiner wird, wenn man Property-Lists verwendet,
Nicht für Dich. WEITERDENKEN! Für denjenigen, der Programme für die alte Struktur geschrieben hat.

b) wieso man nicht Standard-Parser verwenden können soll. (Bei dem extrem einfachen Aufbau einer Property-List würde ich das aber nicht machen, habe es nicht gemacht. Man schreibt sich den wirklich so herunter.)
Die Aufforderung steht noch. Schreib mir mal ein XSLT, das sämtliche Tracks der Ärzte CD "Jazz ist anders" findet. Du wirst sehen, daß der Aufwand für Propertylisten ungleich höher ist, als der Aufwand, hätte man eine XML Struktur, die eine sinnvolle Hierarchie aufweist. Ich sage nicht, daß es unmöglich ist und ich habe sowas tatsächlich schon gemacht.
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Exakt das dachte ich auch: Keine eigene DTD erforderlich
Kleiner Nachtrag noch dazu: Wie "gut" ist es denn, daß man da stehen hat, daß ein Element ein String oder ein Integer ist. Ich behaupte einfach, daß einem Programm diese Information nahezu nichts bringt.

Wenn wir ehrlich sind, differieren die Meinungen darüber, was ein String und was ein Integer ist, doch ganz erheblich.

Für die einen ist ein String etwas, das Maximal 255/256 Zeichen lang sein darf, für andere wiederum sind's 32 oder 64KB oder es ist gar unbegrenzt

Für die einen ist ein Integer eine Zahl von -32768 bis 32767, wieder für andere eine von 0 bis 65535 und dann gibt es noch die Fraktion, die 4, 8 oder mehr Bit für Integer zur Verfügung stellt.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Kleiner Nachtrag noch dazu: Wie "gut" ist es denn, daß man da stehen hat, daß ein Element ein String oder ein Integer ist. Ich behaupte einfach, daß einem Programm diese Information nahezu nichts bringt.

Wenn wir ehrlich sind, differieren die Meinungen darüber, was ein String und was ein Integer ist, doch ganz erheblich.

Für die einen ist ein String etwas, das Maximal 255/256 Zeichen lang sein darf, für andere wiederum sind's 32 oder 64KB oder es ist gar unbegrenzt

Für die einen ist ein Integer eine Zahl von -32768 bis 32767, wieder für andere eine von 0 bis 65535 und dann gibt es noch die Fraktion, die 4, 8 oder mehr Bit für Integer zur Verfügung stellt.
Das ist das Problem des Scanners. Ich glaube nicht, dass sich das Problem dadurch erledigt, dass man nicht angibt, ob es ein String oder ein Integer ist. Dadurch kann nämlich nicht der Scanner auf einmal mehr als 255 Zeichen.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Nicht für Dich. WEITERDENKEN! Für denjenigen, der Programme für die alte Struktur geschrieben hat.


Die Aufforderung steht noch. Schreib mir mal ein XSLT, das sämtliche Tracks der Ärzte CD "Jazz ist anders" findet. Du wirst sehen, daß der Aufwand für Propertylisten ungleich höher ist, als der Aufwand, hätte man eine XML Struktur, die eine sinnvolle Hierarchie aufweist. Ich sage nicht, daß es unmöglich ist und ich habe sowas tatsächlich schon gemacht.
Sorry, auf konkrete Nachfragen zu deinen Behauptungen höre ich nur, dass ich doch etwas machen soll. Das verstehe ich nicht.

Auch habe ich ohne "WEITERDENKEN" zu dem Schluss gekommen, dass eine Programmänderung die Änderung eines Programmes zum Aufwand hat. Aber was willst du damit sagen, insbesondere im Bezug auf diesen Thread? Programmänderungen machen Arbeit? Da stimme ich dir zu.
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
ARGH! Bist Du (m)eine Frau? ;) Oder drücke ich mich tatsächlich so undeutlich aus?

Es ging hier mal ursprünglich darum, wie man die Daten am geschicktesten speichert, damit mehrere verschiedene Programme sie lesen und verarbeiten können.

Als Vorschlag kamen Plists.

Wenn Du nun ein Programm schreibst, daß Plists erzeugen und lesen soll.

Und ich eines, das dies auch macht.

Dann müssen wir dieselbe Datenstruktur verwenden.

Wenn Du nun hingehst und Dein Programm änderst, weil Dir die Struktur nicht mehr gefällt, dann muß ich in Konsequenz auch ändern. Schließlich schreibst Du ja nur, zugegebenermaßen bequemerweise) Deine Struktur in eine Plist Datei.

Hätten wir uns hingegen auf eine sinnvolle XML Struktur geeinigt, dann müßte ich gar nichts ändern, sofern Du weiterhin dieselbe Struktur schreibst.

Man kann es auch s ausdrücken. Wenn der Aufwand, das Programm zu ändern bei jedem Programmierer O(1) ist, dann ist der Aufwand für n Programmierer n*O(1), wenn plisten verwendet werden. Wenn hingegen ein "Austauschformat" (die vernünftige XML Struktur) besteht, ist der Aufwand für Dich im Bereich 2*O(1) anzusiedeln, für alle anderen 0*O(1).
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Genau:
Wenn ich die Struktur der Property-List ändere, muss das Programm geändert werden. (Stimmt zwar auch nicht, aber gut, sei dem so.)
Wenn ich die Struktur der XML (Wieso ist eigentlich eine im XML-Format gespeicherte Property-List kein XML? Und wieso gelten dann nicht alle Aussagen für XML auch für Property-Lists im XML-Format?) nicht ändere, muss man auch nichts ändern.

Okay, habe verstanden …
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Die Kurve hab ich auch noch nicht bekommen.
Natürlich treffen alle Aussagen über XML im Prinzip auch auf Plisten zu. Aber plisten machen es für Anwendungsentwickler, die auf bestehende(!) plisten aufbauen wollen, unnötig schwer! Außerdem sind sie lediglich, so wie sie gehandhabt werden, ein probates(!) Mittel, interne Datenstrukturen persistent abzulegen. Nicht jedoch ein probates Mittel für einen Datenaustausch, aus den zuvor genannten Gründen, die ich Amin ja inzwischen wohl vermitteln konnte.

Wenn iTunes z.B. als "XML Export" plisten anbietet, dann erinnert mich das schwer an die Geschichte, die ich mal bei den Perlmönchen gelesen habe. Sie ging in etwa so:

Ein Manager hatte ein wichtiges Kundengespräch. Eine Anwendung sollte dem Kunden verkauft werden. Frage des Kunden: "Haben Sie denn auch XML Unterstützung um die Daten mit anderen Programmen weiterverarbeiten zu können?". "Naja", meinte der Manager, "Wir haben einen CSV Export". Das reichte dem Kunden aber nicht und der Manager versprach, daß XML Support eingebaut wird. Die Entwickler sahen sich kurz an, was XML ist und implementierten das ratz fatz. Das Ergebnis sah dann in etwa so aus:
Code:
<XML-Export><![CDATA[Name,Telefon
Meier,15
Schultze,20
]]></XML-Export>
Man kann sagen, was man will, aber das ist wohlgeformtes XML ;)
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Nein, vermitteln konntet du eigentlich gar nichts. Auf Nachfragen nach deinen Behauptungen sagst du, dass es zu kompliziert sei. Dann, dann ich es doch selbst machen soll, dann, dass du es schon gesagt habest.

Das ist die Vermittlung des Vakuums.

Ach, das stimmt nicht. Du hast eindrucksvoll belegt, dass eine unveränderte XML wenige Arbeit macht als eine veränderte Plist (die allerdings auch XML ist).

Also, das letzte Mal: Worin liegt der Vorteil, die Bezeichnung der Parameter als Attribut zu speichern? (Mal abgesehen davon, dass dies logisch falsch wäre, aber gut, wenn's praktischer ist, würde ich das ja noch akzeptieren.)
___________________________

Danke!
 
Zuletzt bearbeitet:

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Also, das letzte Mal: Worin liegt der Vorteil, die Bezeichnung der Parameter als Attribut zu speichern? (Mal abgesehen davon, dass dies logisch falsch wäre, aber gut, wenn's praktischer ist, würde ich das ja noch akzeptieren.)
Das habe ich nie behauptet! Es war nur ein Beispiel für eine bessere Struktur als der Mist, den iTunes produziert. Zudem ist daran nichts "logisch falsch". iTunes knallt Dir, dank plist, einfach einen Haufen unstrukturierter Trackdaten um die Ohren.

Das ist ungefähr so, als würde man in einer relationalen Datenbank eine Tabelle anlegen, in die man einfach alle Trackinformationen reinhaut. Sinnvoller wäre es, und ich hoffe, wenigstens da stimmst Du mir zu, es über mehrere Tabellen aufzubauen:
Eine Tabelle für die Interpreten
Eine für die Alben
Eine für die Tracks
Dazwischen gibt es dann die Relationen, die alles in eine ordentliche Struktur bringen.

iTunes mischt außerdem Strukturinformationen ("Artist", "Album"...) mit Daten. Aber weißte was: Langsam habe ich keinen Bock mehr, hier den Don Quijote zu geben. Macht doch was ihr wollt.
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Ich kann eine Plist auslesen und Anzeigen und sogar ändern, ohne anwendungsspezifische Informationen zu haben.
Da bist Du aber arg optimistisch. Die DTD schweigt sich über die Größe der Datentypen aus. Einfach darin herumändern kann ganz schnell eine Plist ergeben, die nicht mehr kompatibel zu einem Programm ist.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Das habe ich nie behauptet! Es war nur ein Beispiel für eine bessere Struktur als der Mist, den iTunes produziert.
Ds ist das Problem. Du hast bereits in deinem ersten Beitrag ziemlich auf den Putz gehauen und nichts Alternatives genannt. Weil ich wenigstens etwas herausziehen wollte, habe ich dieses Beispiel genommen. Hier sehe ich nur keinen Vorteil.

Du kannst ihn immer noch konkret nennen:
_______________________

Aber nenne ihn doch einfach mal. Irgendwas, was über "ist mir jetzt zu kompliziert", "Das ist nur ein Beispiel, welches nichts belegen soll" oder "mach doch selbst" hinaus geht. Ich meine, dass wenn ich mir etwas anlese, was ich zunächst für blödsinnig halte (und bei Dictionarys ging es mir auch so, weil ich auch so etwas wie <item key="blablabla">wert</item> erwartet hätte), dann denke ich nach, ob ich wirklich so viel schlauer bin als eine Horde von Programmierern bei Apple. Und dann lese ich die Doku aufmerksam, mache mir meine Gedanken, spiele damit herum usw. Am Ende ist es fast immer so, dass ich weiß, warum es so ist, wie es ist und waru das so gut ist. Wenn ich nicht zu diesem Schluss komme, weiß ich wenigstens genau, was mich konkret stört und wie ich es konkret anders gemacht hätte.

Ehrliche Frage: Hast du jemals mit Property-Lists gearbeitet?

Zudem ist daran nichts "logisch falsch". iTunes knallt Dir, dank plist, einfach einen Haufen unstrukturierter Trackdaten um die Ohren.

Das ist ungefähr so, als würde man in einer relationalen Datenbank eine Tabelle anlegen, in die man einfach alle Trackinformationen reinhaut. Sinnvoller wäre es, und ich hoffe, wenigstens da stimmst Du mir zu, es über mehrere Tabellen aufzubauen:
Eine Tabelle für die Interpreten
Eine für die Alben
Eine für die Tracks
Dazwischen gibt es dann die Relationen, die alles in eine ordentliche Struktur bringen.

iTunes mischt außerdem Strukturinformationen ("Artist", "Album"...) mit Daten.
Wie du die Daten strukturierst und in Beziehung setzt, hat weder etwas mit Property-Lists noch etwas mit XML / Property Lists zu tun. Du kannst beides in beiden machen. Sogar mit CVS.

Ich habe mich darüber auch zunächst gewundert, zumal man das sogar in der UI von iTunes hat. Da kannst du nämlich einzelnen Titeln verschiedene Album-Covers geben, zumindest ging das früher. Mit etwas WEITERDENKEN kommt man allerdings darauf, warum das so ist (siehe auch oben): Lieder werden trackweise ausgeliefert. Dementsprechend befindet sich die Albuminformation in den einzelnen Liedern. Man könnte jetzt nur raten, welche Leider ein Album bilden. Das Ganze ließe sich nur dann vernünftig und sicher normalisieren, wenn man eine Album-UID hätte, ebenso eine Künstler-UID. Das würde aber eine internationale und offizielle Datenbank bedingen, die zentral gepflegt wird und vor allem von den Usern in den Tracks gepflegt wird. Spätestens hier ist zappenduster. Die meisten bekommen ja nicht einmal den Albumtitel richtig geschrieben, geschweige denn den Namen des Künstlers. Was willst du da normalisieren? NSKristallkugel als Subklasse von NSWünschelrute?

Mit anderen Worten: Die von dir erwarteten Beziehungen kann ein Musikverwaltungsprogramm gar nicht liefern, ohne den Hass von irgendwelchen Freaks zu bekommen, die wissen, dass es von dem gleichen Album mehrere Versionen gibt. Da hat man sich wohl einfach bei Apple gedacht: Geben wir die Originaldaten aus, wie sie in den Files sind. Und die sind nun einmal ohne Beziehung.

Ich halte das aus den vorgenannten Gründen für richtig. Alles andere wäre Rate mal mit Rosenthal und ei schreckliches Datengepansche. Das kannst du, wenigstens das hoffe ich doch sehr, nicht wirklich wollen.

Ich verstehe aber wie gesagt nicht, was das mit der Diskussion Property-Lists einerseits XML / Property List andererseits zu tun hat. Das eine Betrifft die Formatierung der Daten, das andere die Struktur der Daten. Dein "dank plist" ist daher sicherlich nicht zutreffend.

Aber weißte was: Langsam habe ich keinen Bock mehr, hier den Don Quijote zu geben. Macht doch was ihr wollt.
Das ohnehin.
 
Zuletzt bearbeitet: