Introduzione alla programmazione tramite scriptIntroduzione alla programmazione tramite script
1. Configurazione dell’ambiente di scripting1. Configurazione dell’ambiente di scripting
L’utilizzo di script offre un metodo più efficace per interagire con OghmaNano. Invece di utilizzare l’interfaccia grafica, è possibile utilizzare il linguaggio di programmazione preferito per interagire con OghmaNano. In questo modo, si ha la possibilità di gestire le simulazioni in modo molto più potente rispetto a quanto sarebbe possibile fare utilizzando solo l’interfaccia grafica. Di seguito, fornirò alcuni esempi di utilizzo di MATLAB e Python per gestire OghmaNano, ma è possibile utilizzare qualsiasi linguaggio che supporti la lettura e la scrittura di file JSON. Perl e Java sono due esempi di linguaggi che si possono utilizzare.L’utilizzo di script offre un metodo più efficace per interagire con OghmaNano. Invece di utilizzare l’interfaccia grafica, è possibile utilizzare il linguaggio di programmazione preferito per interagire con OghmaNano. In questo modo, si ha la possibilità di gestire le simulazioni in modo molto più potente rispetto a quanto sarebbe possibile fare utilizzando solo l’interfaccia grafica. Di seguito, fornirò alcuni esempi di utilizzo di MATLAB e Python per gestire OghmaNano, ma è possibile utilizzare qualsiasi linguaggio che supporti la lettura e la scrittura di file JSON. Perl e Java sono due esempi di linguaggi che si possono utilizzare.
Prima di iniziare a scrivere gli script per OghmaNano, è necessario indicare al sistema operativo la posizione in cui è installato OghmaNano. Per impostazione predefinita, OghmaNano viene installato in C:\Program files x86\OghmaNano. In questa directory, si trovano due file eseguibili: oghma.exe, che rappresenta l'interfaccia utente grafica, e un secondo file eseguibile, denominato oghma_core.exe. È possibile eseguire oghma_core.exe dalla riga di comando senza avviare oghma.exe. È sufficiente accedere a una directory che contiene una cartella denominata sim.oghma e avviare oghma_core.exe. Questa operazione può essere eseguita dalla riga di comando di Windows, da MATLAB, da Python o da qualsiasi altro linguaggio di scripting. Tuttavia, prima di poter eseguire questa operazione su Windows, è necessario aggiungere il percorso C:\Program files x86\OghmaNano alle variabili di ambiente di Windows, in modo che il sistema operativo sappia dove è installato OghmaNano. Un esempio di come eseguire questa operazione su una versione moderna di Windows è disponibile al seguente link: https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14)Prima di iniziare a scrivere gli script per OghmaNano, è necessario indicare al sistema operativo la posizione in cui è installato OghmaNano. Per impostazione predefinita, OghmaNano viene installato in C:\Program files x86\OghmaNano. In questa directory, si trovano due file eseguibili: oghma.exe, che rappresenta l'interfaccia utente grafica, e un secondo file eseguibile, denominato oghma_core.exe. È possibile eseguire oghma_core.exe dalla riga di comando senza avviare oghma.exe. È sufficiente accedere a una directory che contiene una cartella denominata sim.oghma e avviare oghma_core.exe. Questa operazione può essere eseguita dalla riga di comando di Windows, da MATLAB, da Python o da qualsiasi altro linguaggio di scripting. Tuttavia, prima di poter eseguire questa operazione su Windows, è necessario aggiungere il percorso C:\Program files x86\OghmaNano alle variabili di ambiente di Windows, in modo che il sistema operativo sappia dove è installato OghmaNano. Un esempio di come eseguire questa operazione su una versione moderna di Windows è disponibile al seguente link: https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14)
Sembra che ogni nuova versione di Windows modifichi la posizione delle opzioni di configurazione, quindi potrebbe essere necessario cercare le istruzioni specifiche per la versione di Windows in uso.Sembra che ogni nuova versione di Windows modifichi la posizione delle opzioni di configurazione, quindi potrebbe essere necessario cercare le istruzioni specifiche per la versione di Windows in uso.
2. Altri suggerimenti sulla creazione di script.2. Altri suggerimenti sulla creazione di script.
sim.json sotto forma di un albero navigabile.JSON Explorer visualizza la struttura dei dati sim.json sotto forma di un albero navigabile.Immaginate l’interfaccia grafica come un visualizzatore JSON strutturato.Immaginate l’interfaccia grafica come un visualizzatore JSON strutturato.
Un modello mentale utile quando si crea uno script per OghmaNano è considerare l’intera interfaccia grafica come un visualizzatore e un editor strutturato per il file sottostante sim.json. Ogni elemento dell’interfaccia, ogni cursore, ogni tabella e ogni finestra di dialogo, alla fine, legge e scrive su questo file. Non esiste uno “stato dell’interfaccia grafica” separato: il file JSON rappresenta lo stato. Nella barra degli strumenti Automazione, l’Esplora JSON (Figura ??) consente di visualizzare direttamente il file sim.json come una struttura ad albero gerarchica. Questo è spesso il modo più rapido per capire dove si trova un determinato parametro all’interno del file JSON e per verificare che un’azione dell’interfaccia grafica stia scrivendo nel campo desiderato.Un modello mentale utile quando si crea uno script per OghmaNano è considerare l’intera interfaccia grafica come un visualizzatore e un editor strutturato per il file sottostante sim.json. Ogni elemento dell’interfaccia, ogni cursore, ogni tabella e ogni finestra di dialogo, alla fine, legge e scrive su questo file. Non esiste uno “stato dell’interfaccia grafica” separato: il file JSON rappresenta lo stato. Nella barra degli strumenti Automazione, l’Esplora JSON (Figura ??) consente di visualizzare direttamente il file sim.json come una struttura ad albero gerarchica. Questo è spesso il modo più rapido per capire dove si trova un determinato parametro all’interno del file JSON e per verificare che un’azione dell’interfaccia grafica stia scrivendo nel campo desiderato.
Esaminare oggetti tramite la funzione copia e incollaEsaminare oggetti tramite la funzione copia e incolla
Un’altra tecnica utile consiste nell’ sfruttare il funzionamento della funzione di copia e incolla all’interno dell’interfaccia grafica. Quando si copia un oggetto – ad esempio, facendo clic con il pulsante destro del mouse e copiando un livello nell’editor dei livelli, oppure copiando un oggetto selezionato nella visualizzazione 3D – OghmaNano può inserire direttamente negli appunti la struttura JSON sottostante che si occupa di generare quell’oggetto.Un’altra tecnica utile consiste nell’ sfruttare il funzionamento della funzione di copia e incolla all’interno dell’interfaccia grafica. Quando si copia un oggetto – ad esempio, facendo clic con il pulsante destro del mouse e copiando un livello nell’editor dei livelli, oppure copiando un oggetto selezionato nella visualizzazione 3D – OghmaNano può inserire direttamente negli appunti la struttura JSON sottostante che si occupa di generare quell’oggetto.
Se si incolla il contenuto dell’area di copia e incolla in un editor di testo semplice (Blocco note, Notepad++, VS Code, ecc.), è possibile esaminare il blocco JSON esatto utilizzato per definire l’oggetto o la voce della tabella. In questo modo si ottiene una visione diretta e inequivocabile di come l’oggetto è rappresentato internamente, e spesso è il metodo più rapido per individuare le chiavi pertinenti per la programmazione.Se si incolla il contenuto dell’area di copia e incolla in un editor di testo semplice (Blocco note, Notepad++, VS Code, ecc.), è possibile esaminare il blocco JSON esatto utilizzato per definire l’oggetto o la voce della tabella. In questo modo si ottiene una visione diretta e inequivocabile di come l’oggetto è rappresentato internamente, e spesso è il metodo più rapido per individuare le chiavi pertinenti per la programmazione.
Molti menu contestuali offrono anche opzioni come «Copia JSON», «Copia percorso JSON» o «Copia percorso definito tramite script». Questi comandi indicano la posizione esatta di un oggetto all’interno della gerarchia JSON, facilitando notevolmente l’individuazione e la modifica della voce corrispondente negli script.Molti menu contestuali offrono anche opzioni come «Copia JSON», «Copia percorso JSON» o «Copia percorso definito tramite script». Questi comandi indicano la posizione esatta di un oggetto all’interno della gerarchia JSON, facilitando notevolmente l’individuazione e la modifica della voce corrispondente negli script.
Se siete davvero in difficoltà: utilizzate uno strumento di confronto differenziale.Se siete davvero in difficoltà: utilizzate uno strumento di confronto differenziale.
Se non siete sicuri di come un determinato elemento dell’interfaccia grafica utente sia associato al file sim.json, una tecnica di debug semplice ed efficace consiste nell’utilizzare uno strumento di confronto file.Se non siete sicuri di come un determinato elemento dell’interfaccia grafica utente sia associato al file sim.json, una tecnica di debug semplice ed efficace consiste nell’utilizzare uno strumento di confronto file.
- Crea una copia di backup del file di simulazione, ad esempio da
sim.jsonasim.back.Crea una copia di backup del file di simulazione, ad esempio dasim.jsonasim.back. - Modificare un singolo parametro nell’interfaccia grafica.Modificare un singolo parametro nell’interfaccia grafica.
- Confronta il file
sim.jsonmodificato con la copia di backup utilizzando uno strumento di confronto, come KDiff3.Confronta il filesim.jsonmodificato con la copia di backup utilizzando uno strumento di confronto, come KDiff3. - L’output del comando «diff» mostrerà esattamente quale riga (o blocco) del file JSON è stata modificata, rivelando come tale elemento dell’interfaccia grafica è rappresentato internamente.L’output del comando «diff» mostrerà esattamente quale riga (o blocco) del file JSON è stata modificata, rivelando come tale elemento dell’interfaccia grafica è rappresentato internamente.
Questo è spesso il metodo più rapido per associare un elemento dell’interfaccia utente a un campo JSON specifico, soprattutto in strutture di parametri complesse.Questo è spesso il metodo più rapido per associare un elemento dell’interfaccia utente a un campo JSON specifico, soprattutto in strutture di parametri complesse.
Utilizzo degli ID degli oggetti per individuare le voci in sim.json.Utilizzo degli ID degli oggetti per individuare le voci in sim.json.
La maggior parte degli oggetti strutturati in OghmaNano – come livelli, forme, sequenze di parametri e altre entità gerarchiche – sono dotati di un identificatore univoco (ID), solitamente una stringa esadecimale casuale di circa 16 caratteri.La maggior parte degli oggetti strutturati in OghmaNano – come livelli, forme, sequenze di parametri e altre entità gerarchiche – sono dotati di un identificatore univoco (ID), solitamente una stringa esadecimale casuale di circa 16 caratteri.
L’ID dell’oggetto viene spesso visualizzato direttamente nell’interfaccia grafica. Ad esempio, nella figura ??, l’ID è indicato nell’angolo in basso a sinistra della finestra dell’editor dell’oggetto. Lo stesso identificativo compare anche nella voce corrispondente all’interno del file sim.json.L’ID dell’oggetto viene spesso visualizzato direttamente nell’interfaccia grafica. Ad esempio, nella figura ??, l’ID è indicato nell’angolo in basso a sinistra della finestra dell’editor dell’oggetto. Lo stesso identificativo compare anche nella voce corrispondente all’interno del file sim.json.
Questi identificativi sono estremamente utili quando si devono gestire strutture JSON ampie o con molti livelli di nidificazione. Cercando la stringa dell’ID in sim.json, è possibile individuare immediatamente l’oggetto specifico associato a un determinato elemento dell’interfaccia utente, anche quando la gerarchia circostante è complessa.Questi identificativi sono estremamente utili quando si devono gestire strutture JSON ampie o con molti livelli di nidificazione. Cercando la stringa dell’ID in sim.json, è possibile individuare immediatamente l’oggetto specifico associato a un determinato elemento dell’interfaccia utente, anche quando la gerarchia circostante è complessa.