Der richtige Ort für Daten und Einstellungen

...für und mit Amiga OS4

Moderator: OS4Welt-Team

ShawnBaxe
Beiträge: 38
Registriert: 8. Januar 2015 01:55

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von ShawnBaxe »

Also...Thema XML/IFF und Speicherort? Auch wenn ich immer dafür bin die Dinge so "Amiga-like", wie möglich zu halten, muss ich sagen, dass XML durchaus Vorteile (sowohl für den/die Programmierer und Anwendungsdesigner, als auch für den Endbenutzer!) hat. Wenn der Entwickler die XML-Tags, Parameter usw. gut strukturiert und sinnvoll benennt, kann im Grunde jeder "Aldi-User" ohne großen Aufwand Anpassungen vornehmen.

XML-Dateien brauchen vielleicht mehr Platz...aber mal ehrlich - selbst wenn man eine wirklich große XML-Konfigdatei hat, kommt man höchstens auf ein paar MB (und dann ist sie wirklich groß!). Das wäre vor 25 Jahren böse gewesen, aber wir haben inzwischen HDDs im Terrabytebereich. Platz ist da kein gutes Argument, wie ich finde.

Ich habe unter OS 3.1 auch IFF verwendet, bin aber sehr schnell dazu übergegangen Klartext-Dateien abzulegen (INI-Format). Cyborg hat ja bereits über die Vorteile von Klartextfiles gesprochen. Man ist ja auf anderen Systemen nicht von Binär- zu Klartextformaten gegangen, weil Binärformate besser sind oder Klartext große Nachteile hat. Der einzige "Nachteil" in meinen Augen ist dabei, dass Hugo von gegenüber einfach mal so die Dateien im Editor verändern und unbrauchbar machen kann. Das ist dann aber sein Problem. Wenn man nicht weiss, was man da tut, sollte man schlicht die Finger davonlassen oder sich vorher informieren.

Zum Thema Fehlermeldungen hat Cyborg ja bereits gesagt bei wem die Verantwortung da liegt: beim Entwickler der jeweiligen Anwendung. Wenn ich zu bequem bin Fehler per Requester o.ä. an den Benutzer weiterzureichen, ist das mein Fehler. Fehlermeldungen die "intern" auflaufen landen nur beim Benutzer, wenn ich dafür einen entsprechenden Mechanismus schaffe und diese Meldungen weitergebe. Ansonsten liegen sie im RAM und das war's ;) Libraries selber reichen nichts(!) direkt an den User weiter.

Thema Speicherort...grundsätzlich bin ich der Meinung, dass jede programmrelevante Datei (Ausnahme: AmigaOS-Bestandteile) im Programmverzeichnis (oder dessen Unterverzeichnissen) liegen sollte. Assigns kann man machen, muss man aber nicht immer. Die sind i.d.R. einfach nur "bequem" ;) Ohne Assigns und mit zentral abgelegten Files, kann man dann jedes Programm schlicht löschen - ohne groß im System rumzufummeln zu müssen. Das ist zumindest mein Standpunkt.
Benutzeravatar
Goos
Entwickler-X
Beiträge: 291
Registriert: 27. September 2009 13:27
Wohnort: Neustadt i. Sa.
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von Goos »

Cyborg hat geschrieben: 4) Ich weiß nicht, was AmiBoing und Cherry Darling tatsächlich machen. Sinnvoll wäre natürlich die Nutzung der application.library samt PrefsObjects-Interface und das Ablegen der Daten im PROGDIR:. Keine Frage.
Um das mal schnell klar zu stellen was Amiboing macht.
Zum speichern der config Prefs Z.B. Screenmode nutzen wir schon, wie oben beschrieben, die Systemeigene application.library mit dem PrefsObject-Interface und das speichert nunmal die Daten im XML Format,
welche man auch leicht mit dem System-Utility PrefsObjectEditor ansehen und bearbeiten kann, wenn man es denn will...
Falls diese Prefs datei nicht existiert werden default Werte genommen, auch das wir durch die application.library gehandelt zb durch
IPrefsObjects->DictGetIntegerForKey(prefs,"ScreenMode", INVALID_ID);
Diese Prefs Datei liegt dann in ENV/ENVARC, das macht die application.library, per default, hatte mir daher keine weiteren Gedanken gemacht.

Die Spielstände und Punkte werden dann aber in PROGDIR:, im eigenem Dateiformat gespeichert.
Programmierer der EntwicklerX
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von Cyborg »

whose hat geschrieben: In vielen Fällen tun´s Tooltypes auch, die sind nebenbei auch noch Klartext und man kann Snoopy beauftragen, die Tooltypes beim Programmstart zu verraten. DAS ist ne feine Sache. Wird eigentlich viel zu selten genutzt.
Ich stimme natürlich zu. Tooltypes sind wunderbar, solange es nicht zu viele werden und zu kompliziert oder gar andere Daten als reiner Text benötigt werden. Dann ist es wieder sinnvoll, diese extern auszulagern, in welchem Format auch immer.

Und gleich eine Bitte an alle, die sich angesprochen fühlen: KEINE verdammte, doppelte Verneinung! Weder in Tooltypes (wo sie leider häufig vorkommt), noch in anderen Konfigs oder Oberflächen. Sowas wie NOBLABLA=(YES|NO) geht gar nicht! Ein BLABLA=(YES|NO) mit ordentlichem Standardwert ist einfacher zu lesen, zu verstehen und schont obendrein den Blutdruck.
IFF ist ebenfalls sehr flexibel und erweiterbar. Es bietet die Möglichkeit, Unbekanntes zu ignorieren und nur Bekanntes zu lesen.
Du hältst es also tatsächlich für eine gute Idee, Programmstrukturen 1 zu 1 in eine Datei zu schreiben, so daß es für neuere Versionen mit geänderten Strukturen ohne aufwendige Migrationsroutinen praktisch unmöglich ist, damit etwas sinnvolles anzufangen?

IFF hat seine Daseinsberechtigung. Durchaus. Man kann sehr viel damit machen und manche Dinge sollte man auch damit machen, aber Konfigurationsdateien gehören m.E. definitiv nicht dazu. Diese sollten immer in einem strukturieren Klartextformat vorliegen. Ob XML, JSON oder sonstwas ist mir dabei echt piepegal..
Ich habe schon verstanden, daß Du XML zugetan bist, ...
Nein, hast Du nicht. Ich bin nicht XML zugetan, sondern einem strukturierten Klartextformat. Welches genau, ist mir schnuppe. Stefan Robl hat sich damals mit der application.library für XML entschieden und daher haben wir nun halt das. Eine Änderung wäre natürlich möglich, aber, ganz ehrlich, wir haben dringendere Baustellen als das :)
...und es ist nicht so, daß ich die Vorteile für Entwickler nicht erkenne. Für den User ist es aber keiner. Da will niemand rumeditieren, weder in ASCII/UTF noch Hex noch Klingonisch. Der Kram soll funktionieren, nicht einen Extra-Kurs in XML erfodern ;-)
Das ist doch wieder ein völlig anderes Thema... natürlich funktioniert der Kram im Idealfall sofort und immer. Sollte er es aber einmal nicht oder braucht man Daten aus der Konfig oder was weiß ich, dann ist ein strukturiertes Klartextformat immer im klaren Vorteil und wenn auch nur für den versierteren User.
Und bei MUI-OWB wurde kein Fehler gemacht. Da wurde auf Benutzerfreundlichkeit geachtet und der Start nicht abgebrochen.
Und wieder hängst Du Dein Fähnchen nach dem Wind... vorher krakelst Du lauthals, wie bescheuert XML doch wäre, weil man keine ordentlichen Fehlermeldungen wie bei IFF bekommt und zitierst MUI-OWB als Paradebeispiel. Diese Aussage ist natürlich absoluter Unfug, weil IMMER der "anwendende Programmierer" für Fehlermeldungen verantwortlich ist und nicht das von ihm benutzte Werkzeug. Ob XML, IFF oder Luftschlangen ist hierbei völlig irrelevant.

Und jetzt hat der MUI-OWB Programmiere keinen Fehler gemacht, weil er keine hilfreiche Fehlermeldung ausgegeben hat, sondern sang- und klanglos mit einer fehlerhaften Konfig weitergemacht hat?! Nicht Dein Ernst, oder? Man kann auch wunderbar hilfreiche Fehlermeldungen ausgeben und dann trotzdem mit Defaults weiterlaufen.. das würde ich benutzerfreundlich nennen.
Nur, bei einer Binär-Konfig wäre der Fehler nie passiert. Da verschludert man im allgemein nicht mal eben n Bytchen, was bei viel Text schnell passieren kann.
Ist das Dein Ernst?

Wie ich jetzt schon mehrfach gesagt habe: Der XML-Parser hat mit absoluter Sicherheit einen Fehler gemeldet beim Einlesen dieser fehlerhaften XML, den der Programmierer einfach ignoriert hat. Da liegt der eigentliche Fehler und nicht im Datenformat.

Eine Binärkonfig kann man genauso fehlerhaft abspeichern (typische off-by-1 Fehler sind sehr beliebt). Und wenn man dann keinerlei Rückmeldung an den User gibt, weil man es vielleicht beim zurücklesen gar nicht bemerkt, dann stürzt das Programm halt im Extremfall ab, weil Du vielleicht auch nicht alle Werte ordentlich begrenzt hast.. off-by-1 Beispiel: Du hast statt "12345" eben "2345x" in die Konfig geschrieben, wobei "x" ein beliebiges Byte aus dem Speicher ist. Beim Zurücklesen bemerkst Du ohne weitere, aufwendige Sicherungsmaßnamen, wie Prüfsummen usw., keinerlei Unterschied, denn es wurden ja 5 Bytes gelesen.. Ergebnis im Extremfall: Absturz.


Naja, ich sehe schon, wir werden hierbei wohl auf keinen grünen Zweig kommen :)
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von Cyborg »

Goos hat geschrieben: Diese Prefs Datei liegt dann in ENV/ENVARC, das macht die application.library, per default, hatte mir daher keine weiteren Gedanken gemacht.
Stimmt... das kommt wohl daher, weil sich Stefan sehr stark an Apple und der Vergangenheit orientiert hat.. die legen auch alle Konfigurationen in ein Verzeichnis (gut, userabhängig, trifft bei uns nicht zu) mit umgekehrter URL-Notation (z.B. com.amiga.bla). Unter AmigaOS wurde traditionell ja schon immer ENV: für sowas mißbraucht, das hat er wohl einfach übernommen.
Oder vielleicht hat er dabei auch einfach nur an die Systembestandteile gedacht (Prefs), die ja bisher auch schon immer im ENV liegen.
Oder er wollte alles auf einen Haufen haben, um es später ggf. einfacher sichern zu können.

Ich weiß es nicht.. da müßte man Stefan fragen, was er sich vor 10 Jahren dabei gedacht haben könnte.


Es wäre aber wirklich zu überlegen, ob man die application.library nicht standardmäßig das Zeug in PROGDIR: ablegen lassen sollte. Wäre m.E. sinnvoll. Nur leider würde das auch wieder zig Software plötzlich nicht mehr die Einstellungen finden lassen und manche Software hat vielleicht nicht mal ein eigenes PROGDIR: in dem Sinne.. (wo legt eine Library ihre Einstellungen ab? Oder ein Gadget? Netzwerktreiber? etc. pp.)

Eventuell können wir gefahrlos nur einen dicken Hinweis im Autodoc unterbringen, daß PROGDIR: wenn möglich zu bevorzugen ist... :|
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
Daytona675x
Beiträge: 150
Registriert: 4. April 2014 08:38
Wohnort: Köln
Kontaktdaten:

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von Daytona675x »

Wir (Cherry-Darling) stopfen unseren Settings-Kram etc. alles in eine eigene Ordnerstruktur in ENV. Ich bin mir zwar ziemlich sicher, in irgendeinem AmigaWiki mal gelesen zu haben, dass das der aktuelle "standard" sei, weswegen ich das bislang eben auch so mache. Ob jetzt konzeptionell PROGDIR: wirklich die bessere Wahl ist, da bin ich mir nicht sooo sicher. Ich denke beides hat Vor- und Nachteile. Im unserem konkreten Fall beim Thema "Game" ist vermutlich PROGDIR: tatsächlich sinnvoller.
Ich habe jetzt nicht alles hier gelesen. Kann man sagen, dass PROGDIR die systemkonformere Wahl ist? Oder ist das nur die persönliche Meinung einer Gruppe X und es gibt genau so viele Befürworter von ENV?
Ich kann das freilich flott ändern.
AOS 4.1 FE, MOS 3.9, AROS, A1200, A600, CDTV, A500, X5000, A1222, sam460ex, sam440ep
[Home] [YouTube] [Facebook]
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von Cyborg »

@ Daytona

Ich hatte das Thema "Jeder müllt ENV zu" gerade vor einigen Tagen (noch vor dieser Diskussion) mit anderen Kernentwicklern und die einhellige Meinung war, daß ENV tatsächlich - wie es der Name schon sagt - nur für Umgebungsvariablen gedacht war/ist und nicht für komplette Einstellungsdateien oder noch schlimmer für Binärdateien, wie die Standardicons.

Sofern möglich und sinnvoll sollten Programme ihre Einstellungen immer bei sich im PROGDIR: halten. Dadurch wird das System weniger vermüllt und außerdem steigert es die Nutzerfreundlichkeit, weil eben diese Programme dann auch nach einer Neuinstallation des Systems sofort wieder funktionieren, mit einem einfachen Kopieren der Schublade auch komplett gesichert oder mit einem einfachen Löschen der Schublade auch ohne Rückstände "deinstalliert" werden können.

Ausnahmen gibt es natürlich, wie oben geschrieben: Libraries, Gadgets, Datatypes, Devices, Dateisysteme, C: Kommandos, etc. haben sogesehen kein PROGDIR:, weil sie sich ja in der Regel ein großes Verzeichnis (LIBS:, DEVS:, etc.) teilen. Aber die haben dann normalerweise auch nicht so viele Einstellungen.
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
Daytona675x
Beiträge: 150
Registriert: 4. April 2014 08:38
Wohnort: Köln
Kontaktdaten:

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von Daytona675x »

@Cyborg
Alles klar, macht Sinn. Dann änder ich das direk mal bei uns, so dass unser ganzer Krempel in PRODDIR (oder einem Unterordner dort?) landet.
AOS 4.1 FE, MOS 3.9, AROS, A1200, A600, CDTV, A500, X5000, A1222, sam460ex, sam440ep
[Home] [YouTube] [Facebook]
Benutzeravatar
imagodespira
Entwickler-X
Beiträge: 2728
Registriert: 27. September 2009 09:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 91 Mal
Kontaktdaten:

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von imagodespira »

Das mit PROGDIR finde ich ansich sehr gut, nur was ist wenn irgendwann AmigaOS ein MultiUser System werden sollte? Was wenn jeder User eigene Einstellungen für ein Programm haben? Dann sollten meiner Meinung nach in PROGDIR nur die default Einstellungen sein, dann irgendwo anders die geänderten User Daten.

ENV ist dann natürlich auch nicht der richtige Ort. Auch wenn es wohl weit in Zukunft liegt oder Fiktion ist, sollte man sich trotzdem darüber Gedanken machen ;)

Zu XML: Ich LIEBE XML ;)
http://www.entwickler-x.de

AmigaOne X1000 @ 1800 Mhz , 2GB RAM, 128GB SSD, Grafikkarte Club3D HD 7750 inkl. RadeonHD Warp3D SI, Warp3D Nova, DVD Brenner, PCI-NETZWERKKARTE ;)
Benutzeravatar
Daytona675x
Beiträge: 150
Registriert: 4. April 2014 08:38
Wohnort: Köln
Kontaktdaten:

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von Daytona675x »

@imagodespira
In der Tat, die MultUser-Geschichte ist ein guter Punkt.
Und XML-Liebe: dito :-)
AOS 4.1 FE, MOS 3.9, AROS, A1200, A600, CDTV, A500, X5000, A1222, sam460ex, sam440ep
[Home] [YouTube] [Facebook]
Benutzeravatar
Goos
Entwickler-X
Beiträge: 291
Registriert: 27. September 2009 13:27
Wohnort: Neustadt i. Sa.
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Der richtige Ort für Daten und Einstellungen

Beitrag von Goos »

imagodespira hat geschrieben:Das mit PROGDIR finde ich ansich sehr gut, nur was ist wenn irgendwann AmigaOS ein MultiUser System werden sollte? Was wenn jeder User eigene Einstellungen für ein Programm haben? Dann sollten meiner Meinung nach in PROGDIR nur die default Einstellungen sein, dann irgendwo anders die geänderten User Daten.

ENV ist dann natürlich auch nicht der richtige Ort. Auch wenn es wohl weit in Zukunft liegt oder Fiktion ist, sollte man sich trotzdem darüber Gedanken machen ;)

Ja, da hat Imagodespira einen guten Punkt angesprochen. Um den korrekten Prefs Speicherpfad eines Programmes sollte sich idealerweise das System kümmern, wie es das ja schon mit der applications.library macht (nur eben in ENV was augenscheinlich nicht so die Idee ist, besser wäre evtl. PROGDIR:prefs/ o.ä.).
Somit kann im System, Sachen geändert werden, wie das Angesprochene Multiuser System.
In diesem Fall braucht die applications.library, entsprechend des Angemeldeten Users, nur den default Prefs Speicherpfad ändern und jedes Programm, was die applications.library nutzt ist fortan Multiuser fähig, ohne Änderung an jedem Programm selbst vorzunehmen.
Weswegen ich schon finde, dass der Applications Programmierer,sich auf die Default Einstellungen, der applications.library verlassen können sollte.
Programmierer der EntwicklerX
Antworten