Con AutoHotkey hai un assistente personale, una sorta di copilota nello sviluppo.
Ma non solo: il tuo "collega" si occuperà dei task più noiosi, lasciando a te solo la parte divertente e creativa dello sviluppo.
I 10 strumenti essenziali se lavori con Angular e il front-end 0
Parte 2: AutoHotkey per eliminare i task noiosi e ripetitivi 0
Gli altri tool che andremo a conoscere nelle prossime puntate 5
Un semplice script per iniziare 9
Come eseguire un comando da un hotkey 12
Come rimappare un hotkey in un altro hotkey 13
Come inserire snippet veloci con le hotstring 16
Portare una finestra in primo piano e inviare un testo alla finestra 18
Menu contestuale nel prompt 20
Copia dell’indirizzo della cartella corrente nella clipboard 23
Questo articolo fa parte di una serie di articoli dedicati ai migliori strumenti per velocizzare il processo di sviluppo front-end.
Nello scorsa “puntata” abbiamo visto come usare postman per testare, debuggare, documentare e gestire in generale tutte le richieste e le risposte da un backend. In questa puntata ci occuperemo di un tool potentissimo, probabilmente il più potente in assoluto che uso ormai ogni giorno quotidianamente in più contesti. Ho anche un legame affettivo con questo strumento perché è stato il mio primo linguaggio di programmazione :-)
Vedremo una panoramica di AutoHotkey, un linguaggio di scripting per automatizzare task noiosi e ripetitivi con poche righe di codice. Condividerò inoltre alcuni degli script creati da me per automatizzare il processo di sviluppo front-end.
Visto che alcuni dei miei lettori sviluppano sotto Mac o Linux, preciso subito che AutoHotkey funziona esclusivamente su Windows. E’ un vero peccato che non ci sia una versione anche per gli altri sistemi operativi, ma tra poco vedremo che ci sono programmi simili. Tuttavia, AutoHotkey può comunque essere utile se si ha necessità di creare uno script di automazione per Windows per un amico o un cliente.
AutoHoteky è il motivo principale per cui preferisco programmare sotto Windows anche se spesso devo comunque usare linux nelle aziende.
Esistono alcune alternative per linux e Mac, come IronAHK (https://github.com/Paris/IronAHK) e AutoKey ( https://github.com/autokey/autokey), ma AutoHotkey è probabilmente il più potente e completo strumento per automatizzare qualsiasi cosa sotto Windows e gli altri sistemi elencati non hanno tutte le sue funzionalità.
I tool che andremo a vedere nelle varie puntate sono:
In generale AutoHoteky copre tante esigenze:
Di seguito ne vedremo alcune, come personalizzarle con script anche complessi e come sfruttarle per il processo di sviluppo.
Ecco qualche caso d’uso che che ho implementato con uno script AutoHotkey di poche righe:
AutoHotkey è uno strumento nato per fare macro, ma poi si è evoluto in un sistema di automazione molto più sofisticato che permette anche di creare interfacce grafiche e di usare librerie DLL per espandere le sue funzioni.
Qui vedremo come sfruttarlo per le funzioni più utili, che sono anche molto facili da implementare per via del linguaggio di scripting semplice ed intuitivo.
Per installare il sistema basta andare sul sito web ufficiale (https://autohotkey.com/) e premeri il pulsante Download.
Consiglio all'inizio di usare la versione installabile, ma esiste anche una versione portable che si scarica con il link al pacchetto zip
Dopo averlo installato, il pacchetto ha i seguenti file:
Al momento non possiamo ancora eseguire nessun comando. AutoHotkey è infatti un linguaggio di programmazione o meglio un linguaggio di scripting. Tuttavia si tratta di un linguaggio semplicissimo. Lo impareremo presentando vari esempi.
Per creare uno script, iniziamo con il creare un file con estensione .ahk. Creiamo ad esempio il file hello.ahk e scriviamo:
MsgBox, ciao
(ignoriamo la riga lang:autohotkey, che viene aggiunto dal mio editor per indicare che si tratta di codice in linguaggio AutoHoteky appunto)
Trasciniamo quindi il file hello.ahk sul programma AutoHotkeyU64.exe e vedremo quanto segue:
Come primo script non c’è male, ma ora facciamo sul serio.
Per eseguire un comando in AutoHotkey basta richiamare una specifica API su una riga con i rispettivi parametri. Ogni riga rappresenta un comando.
Msgbox è una delle tante API di scripting utili per mostrare informazioni. Tutte le API si possono esplorare sul sito
https://autohotkey.com/docs/AutoHotkey.htm.
Altre API utili sono:
o inviare caratteri particolari e combinazioni di tasti ad un programma
Send, {SPACE}{TAB}{LEFT}{CTRL DOWN}v{CTRL UP}
Tutti i caratteri sono qui: https://autohotkey.com/docs/KeyList.htm
Direi che per ora può bastare. Creiamo qualche script utile.
Spesso voglio associare ad una combinazione di tasti un comando particolare, come ad esempio eseguire il mio programma preferito, oppure inviare un hotkey premendo semplicemente F12 (che altrimenti non uso come tasto).
Un hoteky si definisce con il nome dell’hotkey seguito dai doppi due punti :: . Lo script va inserito subito sotto e termina con un return, come se fosse una funzione.
Creiamo uno script hotkeys.ahk e incolliamo il seguente codice:
F12::
Run, notepad.exe
return
PS: notepad non è il mio programma preferito, ma è presente su tutti i PC :-)
Di tutti i programmi che uso, non c’è una volta che gli hotkey definiti dai programmatori per eseguire un comando facciano al caso mio. Preferisco usare i miei.
AutoHotkey permette di rimappare un qualsiasi hotkey con uno alternativo per eseguire lo stesso comando in un particolare programma.
Proviamo a mappare l’Hotkey CTRL+1 con CTRL+N solo per il programma Chrome.
Nel linguaggio, CTRL va scritto con il simbolo ^, SHIFT con + e ALT con ! .
L’Hotkey CTRL+1 si scrive quindi ^1.
Modifichiamo il file precedente e aggiungiamo il seguente codice:
#IfWinExist ahk_class Chrome_WidgetWin_1
^1::^n
La seconda istruzione dello script mappa l'hotkey. La mappatura di un hotkey (CTRL+1 in questo caso) si può fare in una sola linea di codice usando due volte il carattere : seguito dal secondo hotkey (CTRL+N in questo caso).
L’istruzione #IfWinExist specifica che gli hotkey di seguito sono validi solo per il programma indicato con l’ID specificato.
L’ID è una stringa; ahk_class Chrome_WidgetWin_1 identifica Chrome.
L’ID di explorer, ad esempio, è ahk_class CabinetWClass.
In generale per trovare l’ID di un programma si usa au3_spy.exe, sempre disponibile, dopo aver installato AutoHotkey, nella cartella ella di installazione.
Possiamo in generale usare ahk_class IDPROGRAMMA con le API che lavorano sulle finestre.
Autohotkey permette di definire delle stringhe brevi che, quando scritte in qualunque editor, si espandono in snippet. Si chiamano hotstring. La sintassi è simile agli hotkey, ma una hotstring si definisce facendo precedere con i :: la stringa in fase di definizione.
Proviamo a fare in modo che quando scriviamo la stringa clog e premiamo lo spazio, automaticamente venga scritto console.log(). Niente di più semplice:
::clog:: console.log(“”)
Proviamo quindi a scrivere clog e premere lo spazio… e vualà!! clog è stato trasformato in console.log.
Possiamo anche sofisticare lo script per eseguire istruzioni più complesse, come ad esempio inviare console.log(“”) e poi la freccia a sinistra due volte, che è generalmente quello che si fa quando si scrive console.log. In questo modo si ha il cursore in mezzo agli apici pronti per scrivere il messaggio:
::clog2::
Send,console.log(""){left}{left}
return
Eseguiamo lo script e proviamo a scrivere clog2 e spazio in qualunque editor. Molto utile :-)
Proviamo ora a portare Chrome in primo piano e aprire un URL in una nuova scheda. Per mettere a fuoco la barra degli indirizzi Chrome prevede di usare l'Hotkey CTRL+L. Possiamo sfruttare un hotkey esistente per creare macro più utili.
Creiamo quindi un nuovo script col codice:
^1::
WinActivate, ahk_class Chrome_WidgetWin_1
WinWaitActive, ahk_class Chrome_WidgetWin_1
Send, ^t
Send,^l
Send,https://devexp.io{Enter}
return
I comandi WinActivate e WinWaitActive permettono di attivare una specifica finestra, che si richiama tramite il suo ID. Le istruzioni successive mettono a fuoco la barra degli indirizzi, inviano il sito http://devexp.io e infine viene simulata la pressione del tasto INVIO.
Come vi avevo promesso, ho sviluppato molti script che mi aiutano nello sviluppo software. Ve ne allego alcuni di seguito.
Avete un mouse con un quarto tasto vicino al pollice? Io uso questo tasto per tornare indietro nel browser, ma se è aperto un altro programma che non è il browser, allora uso questo tasto per premere ALT+TAB.
Trovate lo script qui:
https://github.com/devexp-io/codici-articoli/blob/master/autohotkey/logitech.ahk
Con questo script avrete un vostro menu contestuale da personalizzare per eseguire i vostri comandi più comuni nel prompt. Per richiamarlo uso il tasto centrale del mouse, che nel prompt non ha alcuna funzione:
Premendo Desktop ad esempio mi sposterò sul desktop inviando il comando
cd C:\Users\Sa\Desktop
Se aprite lo script, le prime linee sono le seguenti:
c=cd c:\
Desktop=cd C:\Users\Sa\Desktop
start=npm start
build=ng build --prod
che corrispondono proprio alle voci di menu (a sinistra) e ai comandi da lanciare per quella specifica voce (a destra dopo il simbolo =). Potete modificarle con i vostri comandi preferiti. Questo script è particolare perché oltre alla logica contiene anche le informazioni per creare il menu, tutto in un unico file.
Analogamente qui trovate uno script per eseguire i programmi preferiti sempre personalizzando le prime righe dello script.
NotepadPP=..\apps\Notepad++Portable\Notepad.exe
Eclipse=P:\dev\eclipse\eclipse.exe
Inkscape=..\apps\InkscapePortable\InkscapePortable.exe
ScreenCapture=..\apps\screen-capture\FSCapture.exe
PortableApps=..\apps\PortableApps\Start.exe
VLC=..\apps\VLCPortable\VLCPortable.exe
Skype=P:\Dropbox\apps\SkypePortable\SkypePortabe.exe
FileZilla=P:\Dropbox\apps\FileZillaPortable\FileZilla.exe
#NoTrayIcon
SetWorkingDir, %A_ScriptDir%
return
^q::
...
Si tratta sempre di un menu che include anche l’icona del programma. Dovete personalizzare i percorsi con i vostri programmi ovviamente, ma vi assicuro che è molto meglio di molti launcher.
Io lo richiamo con l’hotkey CTRL+Q ( ^q:: alla riga 17), ma potete personalizzare anche questo hotkey.
Trovate gli script rispettivamente ai link:
https://github.com/devexp-io/codici-articoli/blob/master/autohotkey/cmd-menu.ahk
https://github.com/devexp-io/codici-articoli/blob/master/autohotkey/programs.ahk
Infine uno scriptino utilissimo: cliccando col tasto sinistro nel titolo di una cartella vi ritroverete l’indirizzo della cartella nella clipboard:
Trovate lo script qui:
https://github.com/devexp-io/codici-articoli/blob/master/autohotkey/current-dir.ahk
Quello che cerco di trasmettere sempre con i miei articoli è un po’ della mia esperienza. Spesso si tratta di tecniche che migliorano l’esperienza del processo di sviluppo.
Anche per sviluppare script Autohotkey è utile non perdere tempo nel processo salva-trascina-riesegui. Vi allego perciò un codice semplice semplice da aggiungere ad ogni vostro script. Questo codice vi permetterà di auto-aggiornare e auto-avviare lo script ogni volta che lo salvate:
SetTimer, UPDATEDSCRIPT, 1000
UPDATEDSCRIPT:
FileGetAttrib,attribs,%A_ScriptFullPath%
IfInString,attribs,A
{
FileSetAttrib,-A,%A_ScriptFullPath%
SplashTextOn,,,Updated script,
Sleep,300
Reload
}
Return
Come abbiamo visto AutoHotkey è un tool potentissimo per automatizzare ogni aspetto di Windows. E’ un vero peccato che non sia presente un tool altrettanto potente per altri sistemi operativi, ma se si usa Windows o si deve creare uno script per un amico, AutoHoteky può sicuramente esserci d’aiuto.
Qui abbiamo visto solo alcuni script base molto semplici, utili per iniziare ed esplorare le potenzialità, ma questo tool può davvero diventare una sorta di co-pilota nella programmazione di ogni giorno.
Buono scripting e se hai suggerimenti, commenti o feedback in generale non esitare a scrivermi.
Il libro definitivo per imparare Angular, con esempi, codici e l'esperienza che serve per essere efficaci nello sviluppare siti, dashboard CRUD o web-app mobile (Raccomandato con un punteggio di 4.7/5 su Amazon)
Info sul libro + Codici e demo delle esercitazioniLibro stampatoKindleC'è una differenza tra programmare e progettare un software: il design. In questo libro viene mostrato il processo per arrivare ad un design semplice e manutenibile attraverso i design pattern
Info sul libro + Codici delle esercitazioniLibro stampatoKindleQuesto sito utilizza i cookie per migliorare l'usabilità.
In particolare usiamo Google Analytics.
Maggiori informazioni sono disponibili nella sezione sullaprivacy.
Il workshop è pensato per chi vuole imparare Angular e dura 3 giorni. Consiste nell'imparare e comprendere il framework con spiegazioni complete, esempi ed esercitazioni.
Se hai già letto il libro ti consigliamo un workshop avanzato che sarà disponibile a breve.
Il workshop si terrà a Roma il 7-8-9 settembre presso una SPA che sarà comunicata via e-mail. Comprende tutte le spese di vitto e alloggio.
Il pagamento avviene contestualmente all'arrivo.
Per ulteriori informazioni non esitare a chiedere:
Benvenuto indevexp.io, il sito italiano dedicato ad Angular e al front-end.
A breve verrai contattato daSalvatore del teamdevexp.io per il benvenuto
A breve riceverai una risposta daSalvatore del teamdevexp.io.
Il formato XL è in lavorazione e sarà pubblicato a breve. Grazie.
Grazie e a presto su devexp.io