• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

index.xml

Kappler

Geowizard
Das dürfte ein reines Performance-Problem sein:
XML parsen dauert mit Sicherheit wesentlich länger als ein stures Herunterlesen der Daten bei bekannter Datenstruktur.
Problematisch wird es eben nur, wenn, wie hier, die tatsächlich vorhandene Datenstruktur von der erwarteten abweicht.
Daher wäre das Einbauen einer Versionsinformation in die index.xml sinnvoll: Vor dem Einlesen wird geprüft, ob die Version der erwarteten entspricht, und wenn nicht, dann wird im Hintergrund konvertiert.
Diese Versionsprüfung muss nur einmal zu Beginn des Einlesens durchgeführt werden, während das XML parsen für jeden Datensatz im Profil nötig wäre...
 

MiK

Geoguru
Eine separate Konvertierfunktion halte ich für zu umständlich. Man sollte beim Erweitern darauf achten, dass die alten Daten auch richtig eingelesen werden können. Das sollte eigentlich nicht zu kompliziert sein. Ich habe mir den Code jetzt nicht noch einmal angeschaut. Aber wahrscheinlich genügt es, wenn man neue Eigenschaften immer hinten anhängt.
Eine Versionsnummer kann man trotzdem mal einführen. Aber eine Konvertierungsroutine halte ich im Moment nicht für angebracht.

Bisher ist nur "lastSyncOC" betroffen, oder? Leider führt das schon dazu, dass man entsprechende OC-Caches nicht mehr aktualisieren kann. Diese Caches müssen dann eben gelöscht und neu geladen werden.

Wenn man es ganz streng nimmt, ist das das erste richtige Release. Wer Vorabversionen nutzt, muss damit rechnen, dass solche Probleme beim Umstieg auf die Finale Version passieren. Das ist natürlich nicht besonders schön. Aber für jede Änderung, die wir vornehmen Konvertierungsroutinen in den Code einzubauen, halte ich für noch schlechter.
 

Kappler

Geowizard
Die Konvertierung würde in diesem Fall lediglich darin bestehen, dass Variablen, die nicht im Profil entahleten sind, auch nicht gelesen werden...
Man könnte natürlich beim Einlesen jeden Datensatzes bei jeder Variable darauf prüfen, ob sie vorhanden ist, was aber mit Sicherheit einiges an Performance beim Einlesen kosten würde...

Das könnte man sich dadurch sparen, dass als Konvertierungsfunktion eine Funktion mit der selben Funktionalität wie beim Einlesen verwendet wird, nur eben mit dieser Prüfung. Diese wird nur aufgerufen, wenn die Profilversion in der index.xml abweicht von der als aktuell im Programm hinterlegten.
Stimmen die Profilversionen überein, wird die "schnelle" Ausleseroutine ohne Prüfungen verwendet.
 

MiK

Geoguru
Die Frage ist, ob das bei zukünftigen Erweiterungen denn nötig ist. Bei den meisten anderen neuen Variablen gab es ja dieses Problem nicht. Woran liegt das? Was ist an dieser einen Erweiterung anders?
 
OP
G

greiol

Geoguru
MiK schrieb:
Wenn man es ganz streng nimmt, ist das das erste richtige Release. Wer Vorabversionen nutzt, muss damit rechnen, dass solche Probleme beim Umstieg auf die Finale Version passieren. Das ist natürlich nicht besonders schön.
sorry, aber der spruch mag aus entwicklickersicht in ordnung gehen, aus anwendersicht ist das eine katastrophe. wenn mir etwas als stable angeboten wird gehe ich davon aus, dass es ein release ist. versionsnummern mit 0. sind im OS bereich ja nun keine seltenheit. wenn mir dann jemand hinterher "april, april!" zuruft, könnte ich mir etwas verschaukelt vorkommen. was passiert nach nach der nächsten umstellung?

ein wenig lesestoff.
 

MiK

Geoguru
Es ist ja nicht so, dass wirklich direkt Daten verloren gehen. Das einzige Problem, dass mir bisher bekannt ist, ist dass man OC-Caches nicht mehr aktualisieren kann. In dem Fall muss man sie eben löschen und neu laden.

Außerdem habe ich geschrieben "Wenn man es ganz streng nimmt". Damit wollte ich andeuten, dass ich das selbst nicht genau so sehe. Aber im konkreten Fall sehe ich bisher keinen dringenden Handlungsbedarf.
 

MiK

Geoguru
Ich habe mir jetzt doch mal den Code zum einlesen der Cachedaten in der index.xml angeschaut. Dort werden ja wirklich einfach nur die Werte hinereinander eingelesen ohne irgendwo auf die Namen zu achten. Das ist natürlich sehr krude.
 

Kappler

Geowizard
MiK schrieb:
Das ist natürlich sehr krude.
Aber schnell...

Jede Abfrage dürfte hier die Profil-Ladezeit deutlich erhöhen.

Wenn man über eine Profilversion sicherstellen könnte, dass nur gültige Daten im bekannten Format im Profil stehen, dann könnte man das so lassen und sogar noch die Abfragen am Ende weglassen...
 

MiK

Geoguru
Ich weiß im Moment noch gar nicht, wie der Code aussieht, den skg auf EVE umgestellt und dabei einiges aufgeräumt hat. Deswegen sollten wir uns über Details, wie wir das in Zukunft machen vielleicht erst genauer unterhalten, wenn wir zusammen mit skg diese Umstellung vollzogen haben.

Wie ist denn Eure Meinung zum Release? Sollten wir es einfach so lassen und wir weisen darauf hin, dass es evtl. notwendig ist OC-Caches neu zu laden? Oder machen wir eine 1.01 in der es abgefangen wird? Im zweiten Fall müssten wir noch klären, ob wir die index.xml generell säubern oder es nur korrekt beim OC-Aktualisieren handhaben wollen.
 

Kappler

Geowizard
Ich wäre dafür, so schnell wie möglich eine 1.01 nachzuschieben (bevor diese 1.0 allzu oft eingesetzt wird) und in dieser eine vollständige Bereinigung vorzunehmen.
Das muss nur einmal beim Ersten Laden eines Profils durchgeführt werden und danach ist erstmal Ruhe...

Das Problem ist, dass niemand weiß (unterstelle ich jetzt mal), wie alt die Profile sind, die jetzt erstmals mit der 1.0 gelesen werden.

Bei Greiol war es ein 0.9er Profil, hier gab es Probleme mit den OC-Caches...

Ein anderer hat vielleicht ein noch älteres Profil, in dem irgendeine Variable noch vor den OC-Variablen die letzte war und bekommt jetzt damit Probleme...
Vor LastSyncOC kommen beispielsweise die Variablen für die Addi-WPs, und soweit ich weiß, sind die auch nicht schon immer drin...
Mit einem alten Profil aus einer Version, bei der noch keine Addi-WPs berücksichtigt wurden, würde beim Einlesen schon in die WP-Verwaltung ein Fehler eingebaut werden...
 

MiK

Geoguru
Und wie stellst Du Dir diese vollständige Bereinigung vor, ohne dass wir dabei das Einlesen verlangsamen?
 

Kappler

Geowizard
Diese vollständige Bereinigung muss nur beim Ersten Öffnen des Profils stattfinden. Anschließend wird ja im korrekten Format abgespeichert.
Und jetzt noch ein Flag oder eine Versionsnummer mit in die INDEX.XML, dann kann sie bei allen anschließenden Ladevorgängen wieder mit der schnellen Routine gelesen werden.
Das wäre auch zukunftssicher, da bei späteren Erweiterungen nur die Versionsnummer hochgezählt werden müsste und somit im Bedarfsfall die (einmalige) "sichere" Leseroutine aufgerufen würde.
 

Engywuck

Geowizard
MiK schrieb:
Wie ist denn Eure Meinung zum Release? Sollten wir es einfach so lassen und wir weisen darauf hin, dass es evtl. notwendig ist OC-Caches neu zu laden? Oder machen wir eine 1.01 in der es abgefangen wird?
Jetzt kann ich mir ja ein Grinsen nicht verkneifen:
Engywuck schrieb:
Und ich kann Euch versprechen: Spätestens 1 bis 2 Wochen, nach dem Version 1.0 draussen ist, taucht der erste Fehler auf, wo man sich denkt "Mist, den hätte ich ja auch noch gerne vor 1.0 ausgebaut, wenn ich ihn gekannt hätte...".
Ok, dass es nur wenige Stunden dauert, hätte ich jetzt auch nicht gedacht ;-)

Ach ja: Bloß keine neue Version. Sonst machen wir morgen wieder eine. Und übermorgen... Und...

Grüße,
Engywuck
 
OP
G

greiol

Geoguru
ich würde einen hinweis in die beschreibung aufnehmen und es mit dem nächsten release fixen. wer weiß ob außer mir überhaupt noch jemand auf 0.9 war. zumindest für die oc profile sollte eine kurze info dabei sein wie sie es fixen können (löschen und neuer download oder was auch immer). für das nächste release einfach noch zwei weitere bugs die in den nächten tagen kommen oder ein feature mit aufnehmen und dann passt es.

alternativ halt "mal schnell" (*hüstel*) ein migrationstool hinlegen.
 

Kappler

Geowizard
Schon klar, nur:

Je länger wir warten, desto mehr laden sich die aktuelle Version und "versauen" sich damit ihre Profile.

Solange es nur das Laden der OC-Caches betrifft... (ich persönlich nutze es gar nicht). Aber früher oder später kommt der Erste, bei dem eine wichtige Variable zerschossen wird, und dann kommen wir in Erklärungsnot.

Oder ist sicher auszuschließen, dass noch andere Profildateien unterwegs sind, bei denen eine andere Variable "die letzte" war?
 

Engywuck

Geowizard
Kappler schrieb:
Je länger wir warten, desto mehr laden sich die aktuelle Version und "versauen" sich damit ihre Profile.
Moment mal. Dieses Verhalten ist ja nicht nur seit Version 1.0 drin, sondern schon ein ganzes Weilchen. Ich vermute, seid die neuen Sachen reingekommen sind. Die Beschwerden hatten also schon genügend Zeit, sich anzusammeln.

E.
 

MiK

Geoguru
Ich halte die neue Version auch nicht für sehr drängend. Das Problem tritt ja nur bei externer Verwertung (wie greiol) oder bei OC auf. Und die OC-Nutzer sind wahrscheinlich in der Minderheit, sonst wäre es wohl schon früher aufgefallen. (So jetzt dürft ihr mich für das Herunterspielen von OC-Nutzer-Problemen steinigen.)

An welchen Stellen sollten wir denn den Hinweis überall veröffentlichen. "Die Beschreibung" gibt es ja nicht.
 

MiK

Geoguru
Ich glaube die Zahl der User, die jetzt von einer sehr alten Version auf 1.0 updaten ist eher gering. Der Leidensdruck war zwischenzeitlich doch schon sehr hoch, so dass die meisten schon neuere Profile haben. Diese sind entweder sauber oder sind schon "versaut".
 

Kappler

Geowizard
MiK schrieb:
Ich glaube die Zahl der User, die jetzt von einer sehr alten Version auf 1.0 updaten ist eher gering. Der Leidensdruck war zwischenzeitlich doch schon sehr hoch, so dass die meisten schon neuere Profile haben. Diese sind entweder sauber oder sind schon "versaut".

Das schon, allerdings vermute ich mal, dass jetzt mit dem Erscheinen der ersten "offiziellen" Version etliche, die eine ältere Version verwendet haben, zum Ersten mal seit einiger Zeit updaten.

Der Leidensdruck war ja speziell für die "Spiderer" hoch, aber wer ausschließlich über PQs seine Profile aktualisiert (soll es geben...) und den Wolf nur zur Verwaltung/Offline-Anzeige verwendet, für den dürften auch die Vorversionen ausgereicht haben.
Wobei ich jetzt nicht abschättzen kann, ob dies viele sind oder eher eine Minderheit...

Die meisten anderen haben wohl sowieso regelmäßig ihre Programmversuion aktualisiert, und zumindest derzeit ist es so, dass die zuletzt hinzugekommenen Variablen (AttributesYes / AttributesNo) geprüft werden...

Wenn auch zuvor immer die jeweils zuletzt hinzugekommenen Variablen geprüft wurden, dann passiert bei einem schrittweisen Update nichts.
 
Oben