Scrivere atti telematici avanzati su iOS (con un piccolo trucco)
L'articolo di oggi è qualcosa di complesso da spiegare (preparatevi ad un articolo lungo 😜) ed è solo una prova di concetto. Come vi ho già anticipato sto predisponendo una puntata del podcast Avvocati e Mac Compendium per spiegare esattamente su cosa mi sto focalizzando in questo periodo, qui basti anticipare che con il comando rapido che vi presenterò ho risolto il problema di scrivere atti telematici avanzati su iPad. Vi ho già parlato di cosa intendo per atti telematici avanzati, di come ho deciso di scrivere i miei atti, oltre che questi articoli, in Markdown e di come ho creato su macOS questi atti attraverso VIM. Il problema di quanto vi ho raccontato nei suddetti articoli è che il mio sistema (non per tutti, lo so!) funzionava esclusivamente su macOS; su iOS non esistono strumenti come Pandoc o LaTeX e non credo esisteranno per molto tempo a venire.
Nella mia recente vacanza in montagna mi sono arrovellato su come risolvere il problema su iOS e mi è venuto in mente di approfondire una particolare azione di Comandi Rapidi in particolare “Esegui script su SSH”. Quello che vi mostrerò nell'articolo non è ancora un comando operativo al 100% ma una prova di concetto che dimostra le possibilità del sistema che ho implementato e dei concetti di base per comprendere come fare ad utilizzarlo anche voi.
Segnalo da ultimo che nell'articolo parlerò di come implementare il sistema su macOS ma essendo SSH un sistema implementato anche su Windows e Linux è possibile fare altrettanto anche su questi sistemi operativi.
1. Collegarsi via SSH al proprio Mac
SSH è l'acronimo di Secure SHell “è un protocollo che permette di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un altro host di una rete informatica” (fonte - Wikipedia).
Se avete letto interfacci a riga di comando e vi siete spaventati non siatelo; come vedremo più avanti vi ho già preparato la pappa pronta e non dovrete inserire mille comandi astrusi via riga di comando (solo alcuni 😝).
È possibile accedere in remoto ad un Mac utilizzando SSH. Vediamo come fare ad attivare il protocollo SSH.
1.1 Attivare la Secure Shell su macOS
Per attivare il login remoto al nostro Mac con interfaccia a riga di comando andiamo nelle Preferenze di Sistema alla voce Condivisione (immagine sottostante).
All'interno della finestra “Condivisione” sul lato sinistro troverete una serie di servizi che potrete attivare cliccando sul riquadro ed apporvi una spunta. Nel nostro caso abilitiamo il servizio “Login remoto” come mostrato nell'immagine.
Se avete attivato il servizio vedrete il pallino verde vicino alla voce Login remoto nella parte principale del pannello.
Ci sono altre impostazioni a cui potete mettere mano ma per ora non toccate niente. Il riquadro destro inferiore mostra le opzioni per ridurre l'accesso al login remoto a solo alcuni utenti, ma non è importante per il nostri scopi.
1.2 Collegarsi in remoto al vostro Mac
Fatto questo dobbiamo avere la possibilità di accedere dall'esterno (ovvero da internet) alla nostra rete dell'ufficio (o di casa poco importa).
Qui non mi dilungherò perché non ne ho le competenze specifiche per spiegarvi nel dettaglio cosa e soprattutto come fare. Il mio suggerimento è quello di chiamare un tecnico (informatico) specializzato al fine di farvi attivare una opportuna configurazione della reta per accedere al vostro Mac.
Qui vi voglio segnalare solo due cose da tenere presente.
Ci son di fatto due opzioni per accedere, in modo sicuro, al vostro Mac da remoto:
- VPN, acronimo di Virtual Private Network ovvero di Rete Virtuale Privata; è lo strumento che utilizzo io per collegarmi all'ufficio da remoto; di fatto crea un tunnel cifrato (e quindi sicuro) in cui i dati circolano dal device all'esterno al vostro computer in ufficio; volendo semplificare molto è come se tiraste un cavo virtuale tra il vostro computer al di fuori della rete dell'ufficio a quello in ufficio; la VPN è sicura ma richiede un buon collegamento internet al vostro ufficio; per i nostri scopi odierni il collegamento SSH ha il vantaggio di non richiedere molta banda non dovendo trasportare immagini ma solo comandi testuali;
- Autenticazione via chiave pubblica: un'altra opzione molto sicura è quella di aprire una porta specifica del firewall che dovrebbe proteggere l'accesso da internet alla vostra rete interna ed aprire una connessione bidirezionale dal vostro Mac ad internet; siccome la cosa è pericolosa (di fatto è come se lasciaste spalancata la porta di casa o dell'ufficio permettendo l'accesso a chiunque) l'accesso via SSH avviene attraverso la creazione di una coppia di chiavi (pubblica e privata che deve essere installata sul dispositivo esterno) per garantire l'accesso da remoto; questa opzione, oltre richiedere notevoli competenze tecniche, non è compatibile l'azione di Comandi Rapidi. Allo stato (novembre 2018) infatti questo tipo di collegamento non è supportato dall'applicazione ed occorre utilizzare altri software come ad esempio Pythonista 3.
Se non avete la VPN configurata potete comunque testare il tutto se siete all'interno della medesima rete (come ho fatto io per il debug del comando).
1.3 Avere un Mac accesso: configurazione accensione e spegnimento automatico
Seppure ovvio, lo segnalo: è necessario per l'accesso remoto via SSH che il vostro mac sia accesso.
I dispositivi Apple tendono a consumare poca energia (se non utilizzati) e possono stare accesi senza grossi problemi per lunghi periodi di tempo (un riavvio comunque è consigliato ogni tanto, tipo ogni settimana) ma se non volete o potete avere un mac accesso in una località remota (ufficio o casa) tutto quanto vi sto spiegando è inutile.
Non entrerò troppo nel dettaglio ma segnalo che è possibile dare dei comandi di accensione e spegnimento programmato del mac.
Andate nelle“ Preferenze di Sistema” alla voce “Risparmio Energia” come mostrato nell'immagine sottostante.
Premete quindi sul pulsante “Programma…” come mostrato nell'immagine sottostante.
A questo punto comparirà una finestra a tendina dove è possibile configurare il comportamento del vostro Mac. Nell'immagine sottostante vedete la mia configurazione per l'iMac 27" che ho in ufficio.
2. I poteri della riga di comando uniti ai Comandi Rapidi
Bene, fatte tutte le dovute premesse su come attivare il collegamento remoto, vediamo come implementare l'azione di Comandi Rapidi.
2.1 L'idea di base per aggirare le limitazioni di iOS
Una delle mie convinzioni personali è che per utilizzare iOS come utilizzo macOS, tra le tante cose, devo poter anche creare atti telematici avanzati. Su iOS, come dicevo nell’introduzione, non esistono strumenti come Pandoc o LaTeX. L’idea che mi è venuta, quindi, di creare un escamotage per unire le potenzialità di macOS con quelle di iOS.
Per fare ciò ho approfondito l’azione “Esegui Script su SSH” di Comandi Rapidi. La mia idea originale era quella di passare un testo scritto in Markdown evoluto (con parti di LaTeX) via SSH al mio Mac e, lì, far eseguire le operazioni di creazione del PDF che poi sarebbe stato restituito al flusso di lavoro di Comandi Rapidi.
Per fare questo, tuttavia, ho dovuto approfondire il funzionamento del Terminale di macOS ed il funzionamento della riga di comando.
Non vi spaventate in questo articolo useremo comandi molto semplici.
Qui, se siete interessati ad approfondire, potete scaricare il manuale in italiano di Olivio Mariano sui comandi a terminale di macOS.
2.2 La potenza della linea di comando di macOS
Prima di vedere i comandi che useremo nella shell vi voglio parlare un attimo della riga di comando.
Abituati all'utilizzo di un'interfaccia a finestra la riga di comando appare come qualcosa di abbastanza arcano ed astruso. Tuttavia se si approfondisce un po' di più questa “esoterica” conoscenza si scopre come, in epoche precedenti e tutt'ora per una nicchia molto ristretta di utenti, fosse e sia possibile fare tantissimo attraverso file di testo e comandi testuali.
2.2.1 Workflow ante litteram
La cosa più interessante della riga di comando è che si può concatenare, in modo simile a come si fa con Workflow o Comandi Rapidi, una serie di istruzioni e comandi di modo che il risultato del primo comando sia elaborato ulteriormente dal secondo comando.
Il simbolo “|” viene denominato barra verticale o anche pipe e permette di passare i risultati di comando che lo precede al comando che lo succede; così come un'azione di Comandi Rapidi (o Automator su macOS) passa il proprio risultato a quella successiva.
Per quel che qui mi interessava creare, tuttavia, ho utilizzato il simbolo “;”, il punto e virgola, che passa i tre distinti comandi che adesso vedremo al Mac remoto.
2.3 Salvare un file di testo con echo
Il comando echo svolge varie funzioni, anzitutto quella di stampare a video del testo racchiuso tra virgolette ad apice.
Nel nostro caso aggiungendo il simbolo (o l’operatore) “>” il testo contenuto tra le virgolette viene salvato all’interno di un documento il cui nome e collocazione all’interno del sistema a cartelle corrisponderà a quanto da noi indicato dopo il “>”.
Il comando sarà quindi così composto:
echo ‘testo passato da Comandi Rapidi’ > ~/Desktop/test.md
Così facendo verrà creato un file dal nome “test.md” sulla Scrivania (Desktop) del Mac remoto. Ovviamente sarebbe possibile creare questo documento in qualsiasi altra cartella del Mac remoto.
Da notare che, grazie a Comandi Rapidi, al posto di dover scrivere il testo da salvare dentro il documento creato con il comando echo è possibile inserire una variabile. In questo modo passeremo il contenuto di un programma di scrittura in MarkDown su iOS al nostro mac remoto. Io ho utilizzato Drafts 5 per le sue capacità di automazione e perché credo che lo utilizzerò come editor testo predefinito per scrivere atti telematici avanzati oltre che gli articoli che state leggendo.
2.4 Creare il pdf con Pandoc
Far eseguire Pandoc via SSH è stata la cosa più complicata per creare il comando finale. Come vedete nell’immagine sottostante, infatti, l’originale azione che avevo creato non riconosceva pandoc come comando.
Mi sono poi reso conto, dopo tanto scartabellare su internet, che l’azione “Esegui Script su SSH” non conosce tutte le cartelle in cui sono contenuti i comandi come Pandoc e LaTeX (che ho installato via Homebrew).
Ho, quindi, risolto il problema prima recuperando il percorso in cui sono salvati gli eseguibili di Pandoc e pdflatex (il motore di conversione di pdf di LaTeX) usando il comando:
type pandoc
type pdflatex
Fatto ciò ho dichiarato esplicitamente la path (il percorso) in cui la shell deve ricercare i comandi.
PATH=~/bin:/usr/local/bin:/bin:/usr/bin:/Library/TeX/texbin/
I vari (e differenti) percorsi sono separati dai due punti “:”.
2.5 Recuperare il pdf con cat
Con il comando cat è possibile fare molte cose. Nel nostro caso lo utilizzeremo per recuperare il pdf creato da Pandoc che, a questo punto, verrà restituito all'azione “Esegui Script su SSH” di Comandi Rapidi come risultato (o output).
3. Testare il comando di Comandi Rapidi
Come vi ho anticipato all'inizio dell'articolo il comando che vi presenterò è solo una prova di concetto. Più avanti ho intenzione di finalizzare il tutto per qualcosa di più operativo.
Nell'immagine sottostante potete vedere tuttavia il comando, nella sua semplicità, eseguito correttamente.
Come potete vedere infatti l'ultimo riquadro è il risultato dell'azione eseguita via SSH, ovvero la generazione di un PDF con il testo contenuto nella variabile “Messaggio” con anteposta la data dell'esecuzione del comando (pescata sempre come variabile attraverso Comandi Rapidi).
Se andata a guardare il contenuto dell'azione Messaggio vedrete che questo è un semplice testo in markdown (l'originale concetto dei quel che volevo fare) che è stato convertito correttamente in PDF da Pandoc.
3.1 I comandi dati a Pandoc
Mi sono accorto di non avervi ancora spiegato come funziona Pandoc.
Non è mia intenzione entrare nel dettaglio in questo articolo ma voglio approfondire un attimo il suo funzionamento così da farvi capire quanto è semplice utilizzarlo (e soprattutto automatizzarlo) quando si conoscono alcune basi. Se siete curiosi trovate qui (in lingua inglese) maggiori informazioni su tutti i comandi che Pandoc supporta.
Il comando completo che ho dato è:
pandoc ~/Desktop/test.md -V lang=it -N -o ~/Desktop/test.pdf
Vediamo di scomporlo nelle sue parti fondamentali:
- pandoc invoca il comando vero e proprio a cui devono essere passati degli attributi, ovvero le informazioni perché Pandoc esegua le trasformazioni da (nel nostro caso) markdown a PDF;
- ~/Desktop/test.md è il documento di testo in markdown (creato con il precedente comando echo) che vogliamo trasformare in PDF; il simbolo “~” è la tilde e va a sostituire il percorso della cartella utente in cui si trova la mia scrivania, altrimenti avrei dovuto scrivere “/Users/filippostrozzi/Desktop/test.md” ed avrebbe funzionato solo su uno specifico Mac e con uno specifico utente;
- -V lang=it specifica a Pandoc una variabile (invocata con “-V”) nel caso specifico la lingua che LaTeX dovrà utilizzare per elaborare il testo in markdown; ho ovviamente scelto la lingua italiana (usando “lang=it”) in questo modo LaTeX userà la sillabazione della lingua italiana e vari altri parametri (come quelli per la creazione dell'indice o dei riferimenti alle immagini in lingua italiana);
- -o ~/Desktop/test.pdf specifica il tipo di risultato (ovvero conversione o output) che vogliamo avere da Pandoc; il parametro “-o” sta per output ed invece “~/Desktop/test.pdf” specifica la tipologia di documento da creare (pdf) il nome da dare al documento (test) e dove salvarlo (sul Desktop o Scrivania dell'utente).
3.2 Automatizzare il salvataggio del documento sul Mac remoto con delle variabili
Per il futuro penso che automatizzerò con delle variabili l'inserimento della cartella e del nome del file da salvare sul Mac remoto.
Come infatti avrete potuto notare ho ripetuto (inutilmente) varie volte:
~/Desktop/test.
Tra l'altro, creando una variabile per questo testo da passare a Pandoc è possibile anche creare delle opzioni multiple di salvataggio … ma sto mettendo troppa carne al fuoco e mi fermo qui. Voglio solo sottolinearvi come questo comando possa essere ulteriormente personalizzato ed automatizzato.
In conclusione
Questa è una prima interazione e prova di concetto; più avanti cercherò di ottimizzare il processo. La cosa che mi entusiasma di più è che l'utilizzo di questo “sistema” può portare ad implementare svariate possibilità di condivisione di dati e risorse da iOS a macOS. È, infatti, possibile accede in remoto al proprio Mac da iOS e ricevere i documenti direttamente dentro Comandi Rapidi per poi “distribuirli” ad altre applicazioni per il loro utilizzo. Più oltre proverò a testare il sistema inverso, ovvero inviare documenti da iOS a macOS. Secondariamente non a livello di importanza, conoscendo un po' di comandi della shell o riga di comando, è possibile utilizzare da iOS il software specifico di macOS (ma anche di Window o Linux) .
Mi rendo conto che non è la cosa più semplice o che un utente medio possa utilizzare quotidianamente. Tuttavia è uno strumento molto sicuro ed a costo zero (salvo la configurazione della VPN) per evitare sistemi di Cloud quando si deve accedere da remoto ai propri documenti.
Da ultimo segnalo che conoscere un po' dei comandi a Terminale di macOS può risultare un vantaggio competitivo non indifferente. Nella comunità opensource sono stati sviluppato software veramente potenti per Linux (di cui Pandoc è uno dei tanti esempi) e, tendenzialmente, presenti per macOS via Homebrew o altri gestori simili.