[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Grundsätzliche Fragen zum Scripting und Scripting-Strategien

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

mdomino
Beiträge gesamt: 76

14. Okt 2015, 01:55
Beitrag # 1 von 18
Bewertung:
(9156 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Mitforisten,
im Rahmen meines Grafikdesign-Studiums beschäftige ich mich mehr und mehr mit dem InDesign-Scripting und bin damit jetzt an einem Punkt gelangt, wo sich mir einige grundsätzliche Fragen zum Schreiben von Scripten in InDesign stellen. Da ich in diesem Forum in der Vergangenheit stets extrem kompetent und hilfsbereit beraten wurde, versuche ich mein Glück mal wieder hier.

Ich habe ein mehrere Fragen, ich stelle sie mal alle im Ausgangspost, wer antworte möchte kann aber natürlich gerne auch nur auf die Fragen antworten, zu denen er etwas beizutragen hat. Es können auch gerne von anderen Benutzern weitere Fragen hinzugefügt werden, wenn diese zum Post passen. Es würde mich freuen, wenn hier ein wenig Wissen zusammengetragen wird, das eventuell auch für andere Benutzer hilfreich ist.

1. Warum ist es wichtig den Großteil des Scripts in eine main()-Funktion einzuklammern? Liegt das nur an der Möglichkeit das Script dann rückgängig zu machen, oder hat es noch andere Vorteile? Würde es nicht genau so gut gehen, die Hauptbefehle einfach ohne Funktion linear ablaufen zu lassen und dann die einzelnen Unterfunktionen aufzurufen?

2. Warum benennen viele ihre Variablen nach Schemata wie _variable (also mit Unterstrich) oder myVariable (also mit vorgestelltem my)? Dient das der besseren Wiedererkennung? Würde man gut benannte Variablen nicht ohnehin wiedererkennen? Und warum benennt man dann nicht auch Funktionen _function oder myFunction?

3. Die Beispielscripte von Adobe sind so aufgebaut, dass die Funktionen meistens sehr viele Parameter haben, da jedes wichtige Element einzeln von Funktion zu Funktion weitergereicht wird. Ist das sinnvoll? Ich habe gehört, dass man keine globalen Variablen benutzen soll? Gilt das auch in InDesign, wenn ja, warum? Und würde man das Problem nicht eleganter mit einem Objekt mit entsprechenden Properties lösen? Oder gibt es andere elegante Lösungen?

4. Wann ist es sinnvoll Funktionen oder größere Code-Teile über #include einzufügen, anstatt sie direkt ins Script zu übernehmen? Dient das nur dazu, dass man diese externen Scripts besser updaten kann? Oder gibt es andere Vorteile? Gibt es Nachteile?

5. Welches Dateiformat ist sinnvoll, wenn man eine externe Datei anlegt (z.B. Log-Datei, Preference-Datei)? Habe hier schon verschiedene Varianten gesehen (.txt, .ini, .jsx). Soll man immer .txt nehmen, oder was ist sinnvoll? Oder ist es für einen Log z.B. sinnvoller ihn mit Script-Labels direkt im Dokument oder der App anzulegen?

6. Wie organisiert ihr eure fertigen Scripte? Gibt es einen besseren Weg als das unsägliche Skripte-Fenster in InDesign? Irgendetwas (am besten direkt aus InDesign) durchsuchbares?

7. Wie organisiert ihr Snippets, also z.B. einzelne Funktionen, die ihr schon geschrieben habt? Ich suche mir beim Schreiben eines neuen Scripts regelmäßig einen Wolf, in welchem Script jetzt genau die Funktion versteckt war, die ich schon mal geschrieben hatte, die ich jetzt wieder bräuchte. Benutzt ihr da spezielle Software für?

8. (sehr spezifisch) Kann ich sämtliche Script-Datei-Endungen ohne Probleme von .jsx in .js umbenennen? Mein Datei-Manager (Finder), sowie mein Archivierungs-/Dokumentverwaltungsprogramm kann eine .jsx-Datei nicht durchsuchen, eine .js-Datei allerdings schon. Oder birgt das irgendwelche Risiken?

9. Wie ist euer Debugging-Workflow? Habe irgendwo gelesen (finde leider die Stelle nicht mehr), dass manche so vorgehen, dass sie eine Art globale Debugging-Variable haben, die sie auf 0, 1 oder 2 stellen können und je nach Einstellung wird dann gar nicht, locker oder streng debuggt. Wie muss ich mir das vorstellen? Ist dann das ganze Script mit if-Abfragen gespickt oder wie baut man das dann konkret in den Code ein?

Hoffe, ich habe euch mit den Fragen jetzt nicht erschlagen und wie gesagt, freue mich auch über Antworten zu einzelnen Fragen.

Vielen Dank und viele Grüße,
MD
X

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

Kai Rübsamen
Beiträge gesamt: 4684

14. Okt 2015, 20:03
Beitrag # 2 von 18
Beitrag ID: #543665
Bewertung:
(9063 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo MD,

89 habens gelesen und keiner antwortet. Für mich ist das klar: Dein Post ist zu lang! Die Antworten auf deine Fragen würden ein halbes Buch füllen. Dann wäre aber vieles auch Ansichtssache.

Zwei Beispiele:
1.
Antwort auf: 1. Warum ist es wichtig den Großteil des Scripts in eine main()-Funktion einzuklammern?

Wenn du Hans fragst, wird der antworten, dass ist meist nicht notwendig. In seinen Skripten wirst du kein main() finden. Wenn du Werner fragst (der hat den Grant Gamble gelesen), antwortet der viell., dass man das unbedingt braucht. Hier geht es um lokale / globale Variablen. Wenn du mich fragst (ich hab von allem nur ein bisschen Ahnung): Ich nutze main(), wenn ich ein Skript in einem Schritt rückgängig machen will oder wenn ich mir den Inhalt von Variablen übersichtlich im ESTK anzeigen lasse.

2.
Antwort auf: Warum benennen viele ihre Variablen nach Schemata wie _variable (also mit Unterstrich) oder myVariable (also mit vorgestelltem my)?

Die erste haben den Fellenz gelesen, die zweiten übernehmen die Namensgebung von Adobe. Bei mir heißt alles curDoc, curPage, curRect (ich finde die Schreibweise von Hans H. gut). Anfangs hieß jedoch ein Textrahmen myRectangle oder die Auswahl nur 's'. Nach Wochen konnte ich dann meine eigenen Skripte nicht mehr lesen ;-)


als Antwort auf: [#543650]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

Gerald Singelmann
  
Beiträge gesamt: 6269

14. Okt 2015, 21:30
Beitrag # 3 von 18
Beitrag ID: #543666
Bewertung:
(9024 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
1. Hauptsächlich Debugging-Gründe. Der Datenbrowser zeigt nur die lokalen Variablen freiwillig an. Dass man nach dem Testen main mit einem app.doScript aufrufen kann, ist nur ein Bonuspunkt. Es gibt noch Kapselungsgründe, die in einem InDesign Script i.d.R nicht so wichtig sind.

2. Das mit dem Unterstrich ist eine Konvention aus objektorientierten Sprachen, wo ein Objekt/eine Funktion einerseits Variablen hat, die von außen zugänglich sind und anderer seits Variablen, die nur der internen Verarbeitung dienen. Letztere schreiben viele mit vorgestelltem Unterstrich.
Die für Anfänger wichtigste Überlegung ist meines Erachtens eine Benennung, die den Scriptleser leicht zwischen InDesign-Wörtern und Variablennamen unterscheiden lassen. Das vorangestellte my erfüllt den Zweck. Ich habe eine zeitlang immer deutsche Begriffe genommen, bin inzwischen aber dazu übergegangen, statt camelCase den unter_strich zu verwenden.
Letzten Endes reine Stilfrage.

3. Globale Variablen stellen dir schnell ein Bein, sobald die Scripte komplexer werden. Aber auch das ist nicht objektiv beantwortbar. Ein normales Script wird gestartet, läuft und wird danach wieder aus dem Speicher gelöscht. Das erledigt eine Menge der Probleme, die in komplexen Systemen gegen globale Variablen sprechen.
Auch wieder was ich mache: Ich schachtel gerne Funktionen:
Code
main(); 
function main() {
var doc = app.activeDocument;

function inner_function() {
var tf = doc.textFrames.add();
}
}

Das spart eine Menge Parameterübergaben, hält doc aber semi-lokal.

4. #include ist vor allem gut, wenn du Code-Teile in verschiedenen Scripten verwendest, also deine eigenen Bibliotheken baust.
Ansonsten jedenfalls auch, wenn das Script so komplex wird, dass du thematische Blöcke bilden kannst. Ab 500 Zeilen fängt ein Script an, unübersichtlich zu werden.

5. Gehupft wie geschlumpft. Kleinere Preferences schreibe ich i.d.R. als Label ins App oder Document. Das hat sehr geringen Verwaltungsoverhead.
Ansonsten ist es dein Geschmack, ob du txt, csv, xml, json oder sonstwas nimmst. Einzige Empfehlung: Leg dir einen Ordner in Folder.userData an.

6. Ich habe einen sehr umfangreichen Scripte-Ordner in der Dropbox und lege einen alias in den Script Panel Ordner der verschiedenen InDesign Versionen. Wie man das ab CC macht, steht hier
Wichtige Scripte kriegen entweder einen Menübefehl per Startup Script oder einen Shortcut. Meistens letzteres.
Als Versionierung bin ich dazu übergegangen, das Datum in Form von 151014 als Prefix zu nehmen. Neue Version, neues Datum.

7. Ich hab mal angefangen, Quiver zu verwenden, bin aber nicht diszipliniert genug. Stattdessen gibt es einen Ordner mit Snippets, in dem mir die Volltextsuche vom Mac gute Dienste leistet.

8. k.A.

9. Ich mag hier das KISS-Prinzip.
Sprich: Es gibt eine globale Variable
Code
const dbg = true; 

und viele Zeilen im Code
Code
if (dbg) $.writeln( „something“ ); 


Etwas eleganter wäre eine dbg() Funktion, die alternativ erlaubt, Meldungen z.B. in eine Datei zu schreiben oder einen zweiten Parameter für Gewichtung annimmt, wie du oben andeutest.

Fang klein an und schau, ob du mehr brauchst.


Sehr empfehlenswert ist meines Erachtens dieses Büchlein:
http://www.amazon.de/JavaScript-Parts-Working-Shallow-Grain/dp/0596517742
Gibts auch auf Deutsch.
Ziemlich hohes Niveau, aber die Auseinandersetzung lohnt sich.


als Antwort auf: [#543650]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

WernerPerplies
Beiträge gesamt: 2762

15. Okt 2015, 08:20
Beitrag # 4 von 18
Beitrag ID: #543668
Bewertung:
(8935 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag MD,

Kompliment, Du stelltst die richtigen Fragen und machst Dir offensichtlich Gedanken über das was Du tust.

Kai hat aber recht, um deine Fragen komplett zu beantworten, benötigt Frau|Mann sehr viel Zeit.

Außerdem sind die Darstellungsmöglichkeiten hier im Forum sehr eingeschränkt.

Ich werde daher versuchen, Deine Fragen aus meiner Sicht nach und nach in den nächsten Tagen in meinem Forum zu beantworten.

Einige Deiner Fragen werden auch hier beantwortet:
Bücher und weitere Infos

zu 1.:
Die Funktion main()

zu 2.:
Ich verwende ausschließlich die camelCase-Schreibweise:
Dabei gilt:
Varablen und Funktionen beginnen mit Kleinbuchstaben, Objekte mit Großbuchstaben und und private Eigenschaften für ein Objekt mit "_".
Das Prefix "my" ist m. E. nach völlig überflüssig, weil bei sorgfältiger Programmstrukturierung eine Verwechslung mit JavaScript-Schlüsselworten und InDesign-Schlüsselworten auszuschließen ist.
Funktionen aus Libraries sollten ein Prefix erhalten, die auf die Quell-Library hinweisen.

zu 3.:
später ausführlicher in meinem Forum, ich übergebe Parameter seit einiger Zeit als Objekte.

zu 4.:
später ausführlicher in meinem Forum, aber auch:
WpsIncludesInCludes

zu 5.:
später ausführlicher in meinem Forum, aber auch:
Settings-Objekt für InDesign-Skripte

zu 6.:
Teilweise in eigenen Fenstern, Beispiele:
Adobe InDesign Skripte

zu 7.:
Skriptentwicklung im ESTK, Sourceverwaltung über Visual Studio und Microsoft Team Foundation Server (TFS).

zu 8.:
Ja klar, wenn der Aufruf mit Extension erfolgt.

zu 9.:
globale Debug-Variable für bedingtem Aufruf einer eigenen Debug-Funktion.


als Antwort auf: [#543650]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

mdomino
Beiträge gesamt: 76

15. Okt 2015, 11:41
Beitrag # 5 von 18
Beitrag ID: #543674
Bewertung:
(8878 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai, Gerald und Werner,
vielen Dank für eure Antworten.

Mir ist (und war) bewusst, dass wahrscheinlich jeder zu jeder Frage etwas anderes beizutragen hat, aber in diesem Bereich gibt es oft kein Richtig und Falsch, deshalb bin ich einfach gespannt, wer wie vorgeht beim Scripten. Und ich weiß, das Antworten braucht Zeit, daher meine ausdrückliche Aufforderung auch gerne einfach auf einzelne Fragen zu antworten (oder zum Beispiel nach und nach), anstatt alles auf einmal. Die Antworten, die bis jetzt eingegangen sind haben mir jedenfalls schon mal gut weitergeholfen und mir zudem wieder neue Ressourcen vorgestellt.

zu 1. Hier war mir zum Beispiel neu, dass man sich die Variablen im Datenbrowser des ESTK übersichtlich anzeigen lassen kann. Nach einigem Rumprobieren komme ich damit jetzt zu folgendem Vorgehen: Ich Wähle im Fenster „Aufrufstack“ eine Funktion aus, und kann dann im Fenster „Datenbrowser“ mir schnell den Wert einer lokalen Variablen anzeigen lassen. Ist das so richtig?
@Werner: Dein Script demonstriert gut, dass lokale Variablen außerhalb einer Funktion unsichtbar sind. Was genau bedeutet es, dass die Variablen „vor Zugriff geschützt“ sind? Warum müssen Variablen auf der Hauptebene (also der Ebene, die in main() landen würde) vor Zugriff geschützt sein?

zu 2. Wenn es nur um die Unterscheidung zu InDesign-Wörtern geht, dann verstehe ich nicht ganz, warum man nicht auch Funktionen entsprechend myFunction() nennen würde. Oder tut man das? Gregor Fellenz nennt in seinem Buch schlicht alle Variablen _variable. Ich verstehe, dass man dadurch schnell sehen kann, dass es eine eigene Variable und kein InDesign-Wort ist, allerdings tendiere ich persönlich dann eher zu Werners Variante durch sorgfältiges Programmieren und Benennen eine Verwechslung auszuschließen. Aber es scheint dann ja tatsächlich eine Stilfrage zu sein. Ich werde mir noch mal anlesen, was eine private Eigenschaft eines Objekts ist, das sagt mir noch nichts. Der Hinweis mit dem Präfix aus der Quell-Library ist gut.

zu 3. Das mit dem Verschachteln der Funktionen leuchtet mir ein. Ich wunderte mich nur, weil Adobe in seinen Beispielscripts irgendwie krampfhaft zu vermeiden versucht, dass Funktionen ineinander verschachtelt sind und damit halt immer extrem viele Parameter rumreichen muss. Werner, du scheinst ja dann zur Objekt-Variante zu tendieren, bin auf den Post in deinem Forum gespannt.

zu. 4 Vorteile der Modularität und Übersichtlichkeit leuchten mir ein. Diese ca. 500 Zeilen als Übersichtlichkeitsgrenze ist mir auch schon aufgefallen. Werner, dein Script kannte ich noch nicht, werde ich aber in Zukunft bestimmt mal dafür verwenden, um dann im zusammengeführte Quellcode von basil.js rumzustöbern, da finde ich es nämlich immer äußerst mühselig eine bestimmte Funktion aufzufinden.

zu 5. Gerald, was genau meinst du mit „Leg dir einen Ordner in Folder.userData an“? Dass man neben dem Script einen Ordner anlegen soll in den diese Text- und Logdateien gehen? Werner, dein Script werde ich mir genauer anschauen, sobald ich in deinem Forum freigeschaltet bin. Grundsätzlich aber noch eine Frage zum Schreiben von Script-Tags in app. „Müllt“ man damit nicht dem Benutzer seine App zu? Ich weiß, von der Speichergröße macht das so gut wie nichts aus, aber gibt es sonst etwas, was man da beachten müsste (außer das Problem der Neuinstallation)? Oder kann man das bedenkenlos tun?

zu 6. Gerald, das mit der Dropbox ist ein sehr guter Hinweis, da einfacher zugänglich und überall synchronisiert. Da hätte ich auch selbst drauf kommen können. ;) Werner, dein Link führt zu deiner Script-Seite, ist das so gedacht?

zu 7. Gerald, diese Snippets im Ordner sind dann als .txt-Dateien abgespeichert? Weil es wäre natürlich schön, wenn man beim Suchergebnis dann direkt ein Syntax-Hightlighting hätte, das geht bei der Variante wahrscheinlich nicht, oder?
Werner, Visual Studio werde ich mir mal anschauen. TFS fällt für mich raus, da Windows, aber das scheint ja eh für Teamarbeit konzipiert zu sein.

zu 8. alles klar, dann werde ich die Scripte voraussichtlich umbenennen.

zu 9. Gut, dann scheint es wirklich einfach zahlreiche if-Abfragen zu geben. Hatte bis jetzt meinen debug-Konsolen-Output immer ohne if einfach dringelassen, ich wahrscheinlich auch kein Problem, solange man die Scripts nur für sich selbst schreibt.


Das O'Reilly-Büchlein ist bestellt, und Werners Forum behalte ich ab jetzt im Auge.
Ich danke euch noch mal für die Antworten, bin aber auch gespannt, ob es noch andere Beiträge und Lösungen gibt.


Viele Grüße,
MD


als Antwort auf: [#543650]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

WernerPerplies
Beiträge gesamt: 2762

15. Okt 2015, 12:41
Beitrag # 6 von 18
Beitrag ID: #543675
Bewertung:
(8841 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Hier war mir zum Beispiel neu, dass man sich die Variablen im Datenbrowser des ESTK übersichtlich anzeigen lassen kann. Nach einigem Rumprobieren komme ich damit jetzt zu folgendem Vorgehen: Ich Wähle im Fenster „Aufrufstack“ eine Funktion aus, und kann dann im Fenster „Datenbrowser“ mir schnell den Wert einer lokalen Variablen anzeigen lassen. Ist das so richtig?

Das ist wohl Geschmackssache, bei mir ist immer das Konsolenfenster offen, und ich tippe da den Namen der Variablen ein, deren Inhalt ich sehen will.
In der Konsole kann man auch Funktionen aufrufen.
Zitat Was genau bedeutet es, dass die Variablen „vor Zugriff geschützt“ sind? Warum müssen Variablen auf der Hauptebene (also der Ebene, die in main() landen würde) vor Zugriff geschützt sein?

Du kannst sie nicht auslesen und auch nicht versehentlich überschreiben.
Wenn Du z. B. mit eigenen Target-Machines arbeitest, werden Variablen auch nicht nach Ablauf eines Skriptes gelöscht, sondern existieren weiter, dann geschehen wundersame Sachen, wenn Deine Variablen global definiert sind.
Ab dieses Thema wäre wirklich abendfüllend.
Zitat Aber es scheint dann ja tatsächlich eine Stilfrage

Ja, ja, es war schon immer eine Frage des guten Stiles ;-)
Zum Thema Variablenbenennung findest Du im Netz ein Fülle von Informationen, und da wirst Du schnell feststellen, dass die übliche Benennung vielleicht von der verwendeten Sparache abhängig ist, aber durchaus feste Regeln kennt.
Zitat Diese ca. 500 Zeilen als Übersichtlichkeitsgrenze ist mir auch schon aufgefallen.

Ich lebe nach der Regel, dass keine Funktion mehr als 25 Zeilen und 80 Zeichen haben sollte, dass ist natürlich Oldstyle, ich programmiere seit Anfang der 80iger Jahre :-).
Zitat Gerald, was genau meinst du mit „Leg dir einen Ordner in Folder.userData an“?

Ich finde, das gehört sich so und man hat keine Probleme mit Zugriffsrechten.
Unter Windows sähe das zum Beispiel so aus:
C:\Users\Werner Perplies\AppData\Roaming\Werner Perplies, EDV-Anwendungsberatung\CS6WpsProjectHandler
Zitat Werner, dein Script werde ich mir genauer anschauen, sobald ich in deinem Forum freigeschaltet bin

Ich habe Dich direkt nach der Anmeldung freigeschaltet, sieh ggf. mal in Deinem Spam-Ordner nach.
Zitat Werner, dein Link führt zu deiner Script-Seite, ist das so gedacht?

Ja, viele meiner Skripte funktionieren als eigenständige Panels und bringen ein eigenes Menue mit.
Schau Dir z. B. mal meinen Projekthandler an, da ist fast alles drin, was Du hier angesprochen hast.
Zitat TFS fällt für mich raus, da Windows, aber das scheint ja eh für Teamarbeit konzipiert zu sein.

Teamarbeit ja, bringt aber auch eine komplette Versionsverwaltung mit, und darauf möchte ich nicht mehr verzichten.


als Antwort auf: [#543674]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

mdomino
Beiträge gesamt: 76

16. Okt 2015, 02:52
Beitrag # 7 von 18
Beitrag ID: #543686
Bewertung:
(8726 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,
danke für das schnelle Freischalten, da war ich mit dem Schreiben meines Beitrags noch nicht fertig. Werde mir deine Scripts jetzt näher ansehen.

Das mit der main()-Funktion ist jetzt verständlicher.

Das, was ich nach wie vor nicht verstehe ist das mit dem Folder.userData. Geht es darum, mit dem Script einen Ordner anzulegen, in dem Preferences etc. gespeichert werden? Oder soll ich mir selbst diesen Ordner anlegen? Und was kommt dann da rein?

Fragende und nächtliche Grüße,
MD


als Antwort auf: [#543675]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

WernerPerplies
Beiträge gesamt: 2762

16. Okt 2015, 08:06
Beitrag # 8 von 18
Beitrag ID: #543690
Bewertung:
(8673 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag MD
http://danke für das schnelle Freischalten, da war ich mit dem Schreiben meines Beitrags noch nicht fertig. Werde mir deine Scripts jetzt näher ansehen.
Gerne, da nich für!
Zitat Das mit der main()-Funktion ist jetzt verständlicher.

Schön. das war der Sinn meiner Ausführungen.
Zitat Das, was ich nach wie vor nicht verstehe ist das mit dem Folder.userData. Geht es darum, mit dem Script einen Ordner anzulegen, in dem Preferences etc. gespeichert werden?

Ja genau, das ist ein genau definierter Platz für beide Betriebssysteme, wo programmspezifische und/oder benutzerspezifische Informationen abgelegt werden sollen.
Zitat Oder soll ich mir selbst diesen Ordner anlegen?

Ja, mit Folder.userData als Root-Verzeichnis.

Zitat Und was kommt dann da rein?


Alles das, was Du für sinnvoll hältst.

Ich verweise noch einmal auf meinen Projecthandler, lade ihn herunter, starte ihn und schaue
1. direkt nach dem ersten Start in Folder.userData.
2. nachdem Du ein wenig mit dem Script gearbeitest hast ( ;-)! )

In der settings.dat findest Du dann Informationen, die mit meinem Settings-Objekt erzeugt wurden.

HTH


als Antwort auf: [#543686]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

mdomino
Beiträge gesamt: 76

16. Okt 2015, 09:28
Beitrag # 9 von 18
Beitrag ID: #543700
Bewertung:
(8654 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,
vielen Dank für deine Geduld mit mir, denn hier stand ich tatsächlich auf dem Schlauch. Ich hatte nicht gewusst, dass Folder.userData eine Systemvariable ist, die in den entsprechenden Ordner führt.

Jetzt nach Analyse deines Projecthandler-Scripts habe ich das Vorgehen verstanden und sehe auch, wie die entsprechenden Daten aufgebaut sein können.

Ich gehe also davon aus, dass wie ihr schon erwähnt habt, diese Variante eindeutig vorzuziehen ist (gegenüber einem Abspeichern der Preference- und Log-Dateien direkt neben dem Script). So kann der Nutzer schließlich nichts versehentlich kaputt machen.

Viele Grüße,
MD


als Antwort auf: [#543690]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

WernerPerplies
Beiträge gesamt: 2762

16. Okt 2015, 10:52
Beitrag # 10 von 18
Beitrag ID: #543705
Bewertung:
(8615 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo MD,

Zitat So kann der Nutzer schließlich nichts versehentlich kaputt machen.

Aber das ist sicherlich nicht der Hauptgrund.

Man kann ein Skript zur Nutzung für alle Anwender installieren, die Einstellungen und Daten müssen aber für jeden Anwender getrennt verwaltet werden.

Außerdem hat ein Nutzer in einem sauber konfiguriertem System keinerlei Schreibrechte auf ein gemeinsam genutztes Programm-(Skript-)verzeichnis und damit können dort gar keine Daten gepeichert werden.


als Antwort auf: [#543700]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

mdomino
Beiträge gesamt: 76

16. Okt 2015, 17:49
Beitrag # 11 von 18
Beitrag ID: #543736
Bewertung:
(8553 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,
und damit habe ich es jetzt auch komplett verstanden. Bin privat immer nur in einem Admin-Account unterwegs, da hat man diese Benutzerthematik nicht so auf dem Schirm. Wird für mich aber wichtig sein, wenn ich hier auf den neu aufgesetzten Uni-Rechnern arbeiten werde.

Viele Grüße,
MD


als Antwort auf: [#543705]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

WernerPerplies
Beiträge gesamt: 2762

18. Okt 2015, 07:33
Beitrag # 12 von 18
Beitrag ID: #543748
Bewertung:
(8392 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,

ich habe heute Morgen meinen Beitrag
Bücher und Infos zum Thema Indesign Automatisierung
aktualisiert:

Neu:
Zwei weitere Buchempfehlungen zum Thema JavaScript und eine Liste von JavaScript Style Guides.

Es ist halt alles eine Frage des richtigem Stils! :-)


als Antwort auf: [#543650]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

mdomino
Beiträge gesamt: 76

18. Okt 2015, 23:20
Beitrag # 13 von 18
Beitrag ID: #543752
Bewertung:
(8293 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,
danke schaue ich mir an. Wobei ich da beim schnellen Überfliegen der StyleGuides jetzt schon wieder ein wenig verunsichert bin, wie ich da jemals einen rauspicken soll, der richtig für mich ist.

Ich erstelle für ein Projekt gerade ein neues Script und da kam mir gleich noch eine neue Frage (ich füge sie auch in den Ausgangspost ein):

10. Wenn ich bei einem Script zwei „Magic Numbers“ habe, also zwei Konstanten, die ich als Nutzer am Anfang angeben muss, die aus Sicht des Scripts aber willkürlich festgelegt scheinen, wie gehe ich da am besten vor?
Kann ich diese Zahlen dann ausnahmsweise als globale Variablen (bzw. Konstanten) definieren, damit sie direkt am Scriptanfang stehen und leicht für spätere Änderungen zugänglich sind? Oder würdet ihr auch diese Zahlen in die main()-Funktion packen, bzw. in eine Unterfunktion, wo sie aber schwieriger zu finden wären.
Ich habe den Eindruck, dass sich das Auslagern in eine Settings-Datei bei zwei Zahlen nicht wirklich lohnt, weshalb ich sie lieber direkt ins Script einbauen würde. Ein Eingabedialog würde sich in dem Fall auch nicht lohnen, weil die Zahlen nur selten geändert werden müssten.
Wie geht ihr bei so etwas vor?

Viele Grüße, MD

P.S.: „Verfällt“ die Editieren-Funktion der Foren-Beiträge nach einiger Zeit? Kann den Ausgangspost nicht mehr editieren, nur noch bei diesem aktuellesten Post steht ein Ändern-Button zur Verfügung.


als Antwort auf: [#543748]
(Dieser Beitrag wurde von mdomino am 18. Okt 2015, 23:26 geändert)

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

WernerPerplies
Beiträge gesamt: 2762

19. Okt 2015, 07:18
Beitrag # 14 von 18
Beitrag ID: #543753
Bewertung:
(8208 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin MD,

Zitat danke schaue ich mir an. Wobei ich da beim schnellen Überfliegen der StyleGuides jetzt schon wieder ein wenig verunsichert bin, wie ich da jemals einen rauspicken soll, der richtig für mich ist.


Oh, ich wollte eigentlich das Gegenteil erreichen, denn wenn Du in diese Guides reinschaust, wirst Du feststellen, dass sie sich in weiten Bereichen ähneln.

Ich habe auch noch keinen Guide gefunden, der empfiehlt, Variablen und Funktionen mit "my" zu beginnen, oder gar "_" in Namen einzufügen (Ausnahme: lokale Properties von Objekten als erstes Zeichen).

Zitat 10. Wenn ich bei einem Script zwei „Magic Numbers“ habe, also zwei Konstanten, die ich als Nutzer am Anfang angeben muss, die aus Sicht des Scripts aber willkürlich festgelegt scheinen, wie gehe ich da am besten vor?


Wenn das Skript für einen anderen Anwender gedacht ist, ist für mich die Sache völlig klar.

Kein Profi würde von seinem Anwender verlangen, ein Skript zu ändern!

Wenn es sich um Einstellungen handelt, die normalerweise bei jedem Skriptstart gemacht werden müssen:
-> benutze einen Eingabe-Dialog

Wenn es sich um einmalige Einstellungen handelt:
-> benutze eine Textdatei, bedenke dabei aber, das viele Anwender überhaupt nicht wissen, was eine Textdatei ist!

Zitat Kann ich diese Zahlen dann ausnahmsweise als globale Variablen (bzw. Konstanten) definieren, damit sie direkt am Scriptanfang stehen und leicht für spätere Änderungen zugänglich sind?


Ausnahmen sind schlechter Programmierstil!

Außerdem verwendest Du als Profi Templates und Libs, damit machen Aussnahmen richtig Arbeit!

Meine Vorlage ist in der Regel mein Projekthandler, da ist dann schon alles drin, was ich normalerweise für ein Skript brauche.

Zitat P.S.: „Verfällt“ die Editieren-Funktion der Foren-Beiträge nach einiger Zeit?

Ja, und ich finde das blödsinnig.

Das ist in meinem Forum übrigens nicht so, außerdem gibt es da Syntax-Highlighting, Einbindung von Bilddateien und freien Upload von Dateien.

Das sind die Hauptgründe dafür, dass ich lieber dort antworte.


als Antwort auf: [#543752]

Grundsätzliche Fragen zum Scripting und Scripting-Strategien

peterhenrich
Beiträge gesamt: 139

21. Okt 2015, 10:15
Beitrag # 15 von 18
Beitrag ID: #543842
Bewertung:
(8022 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo MD,

zur Snippet-Verwaltung gibt es auch kostenlose Tools. Die Jungs hier sind neu:
http://rawcode.io/
Vielleicht hilft Dir so etwas. Ich habe mir das auch noch nicht komplett angesehen und weiß nicht, ob man alles auch schön exportieren kann (denn was, wenn die pleite gehen und meine Snippets mit ihnen verschwinden ?-)

Gruß

Peter


als Antwort auf: [#543650]
X