Problem
Also hier ist der Deal: Ich halte viele Präsentationen zu vielen JMP-Themen für allgemeine und spezifische Zielgruppen. Nicht nur unterschiedliche Zielgruppen, sondern ich verwende auch einen Mac und eine virtuelle PC-Maschine auf demselben Laptop.
Mein großes Problem sind Links zu Dateien in JMP Journals.Wenn das Journal für den PC ist, dann könnte mein Pfad wie „y:\Byron\Example\..“ aussehen, aber wenn es auf dem Mac ist, würde es eher wie „/Users/Byron/Examples/..“ aussehen. Das bedeutet, dass ich entweder jeden Dateilink betriebssystemspezifisch codiere oder zwei Versionen des Journals für PC und Mac erstelle.
Lösung
Ich schreibe seit Jahren JSL und das hat erst bei einem Gespräch beim Mittagessen mit Joseph Morgan und Jeff Polzin funktioniert. (Eigentlich war es ihre Unterhaltung, ich habe nur zugehört, an einem guten Tag spielt JMP nur ein bisschen außerhalb meiner Liga.)
In JSL können wir eine Pfadvariable setzen. Ich verwende "$Sample_Data\Big Class.jmp" seit Ewigkeiten, und der Teil "$Sample_Data" davon ist eine Pfadvariable, die JMP anweist, die Datei aus dem Beispieldatenverzeichnis abzurufen. Das Festlegen einer Pfadvariablen ist wirklich einfach, geben Sie einfach den Namen und den Pfad wie folgt an:
Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" )
Jetzt kann ich also den Dateinamen "$Examples\eraseme.jmp" oder so ähnlich verwenden:
open("$Examples\eraseme.jmp")
um an diese Datei zu kommen.
Dies ist sehr praktisch, wenn ich ein allgemeines Journal in einen kundenspezifischen Ordner verschiebe. Da sich das Journal und die kundenspezifischen Datendateien im selben Verzeichnis befinden, muss ich keinen Pfad verwenden, um diese zu erhalten, und wenn ich "$Examples\..." verwende, um auf die allgemeinen Dateien zu verlinken, funktioniert der Link. Aber das ist nur eine kleine Lösung. Das größere Problem ist das Umschalten zwischen PC und Mac.
Um mit verschiedenen Betriebssystemen umzugehen, verwende ich JSL, um den Beispielpfad je nach Betriebssystem wie folgt zu definieren: (Das ist der wirklich großartige Teil!)
If( Host is( Mac ), Set Path Variable( "Examples", "/Users/bywing/Byron Wingerd/Examples" ));
If( Host is( Windows ), Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" ));
Wenn ich zu Beginn meiner JMP-Sitzung (oder über eine Schaltfläche in meinem Journal) das kleine bisschen JSL ausführe, wird "$Example" im Host-Betriebssystem korrekt ausgewertet. Das heißt, der Dateilink "$Examples\eraseme.jmp" öffnet "eraseme.jmp", unabhängig davon, auf welchem Betriebssystem das Journal geöffnet wird.
Diskussion
Das Schnelle und Einfache für vorhandene Skripte besteht darin, diese JSL in einer Skriptschaltfläche hinzuzufügen, um die Dinge zu regeln.
Names Default To Here( 1 );
If( Host is( Mac ), Set Path Variable( "Examples", "/Users/bywing/Byron Wingerd/Examples" ));
If( Host is( Windows ), Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" ));
pvex = Get Path Variable( "Examples" );
Dialog(
Title( "PATH VARIABLE SET!" ),
vlist(pvextb1 = Text Box( "Path variable $Examples set to:" ),
pvextb2 = Text Box( pvex ),
Button( "OK" ))
);
Dadurch erhalte ich eine kurze Textfeldnachricht, die mich darüber informiert, dass der Pfad festgelegt ist.
Ich bin mir sicher, dass es mindestens ein Dutzend Möglichkeiten gibt, mit diesem Problem umzugehen. Dieser Ansatz ist einfach für bestehende Zeitschriften mit Links zu verwenden, die von verschiedenen Personen geteilt werden. Wenn Sie ähnliche oder bessere Methoden haben, posten Sie sie bitte. Ich bin gespannt, wie andere Leute dieses Problem lösen.