domenica 27 agosto 2017

Arduino: linguaggi e tool alternativi

Oltre che con Arduino IDE, è possibile scrivere programmi per Arduino con vari IDE.
Alla fine, è sempre C++ !

Dal sito, si ha una bella lista di Dev Tools, gratuiti e non, open o meno, con cui sbizzarrirsi.

Personalmente ne ho provati vari, ma quello che preferisco è Atmel Studio.
Atmel è il produttore dei chip che vengono montati su Arduino: questo già mi da la garanzia che il compilatore farà il suo dovere.
L'IDE è basato su Visual Studio 2015, e questo già da un'interfaccia conosciuta agli sviluppatori C++, e un buon debugger.

Ovviamente, per semplici progetti Arduino IDE è perfetto, facile, light, con un sacco di librerie pronte da usare, ma quando si passa a far cose più complicate per sfruttare a pieno la potenza della nostra board, penso che Atmel Studio sia quello che fa al caso.
E ci fa anche capire quello che Arduino IDE maschera, cioè il main loop!

giovedì 17 agosto 2017

Spring configuration e Spring Boot

Giocando con Spring Boot mi sono accorto che le configurazioni vengono fatte attraverso Spring Configuration.
Finora io, vecchio informatico, ho sempre configurato Spring tramite file Xml: questo approccio è sempre meno usato, proprio perché ormai, con l'avvento dei micro services, non si tende più a creare una singola applicazione monolitica dentro un web container (un file .war, tanto per capirsi).

Spring Configuration permette di esplicitare la configurazione via software: basta annotare le classi che costituiscono la nostra configurazione, ed automaticamente verranno caricati i beans corrispondenti. Qui il Javadoc

Una buona serie di esempi su come scrivere le varie configurazioni è disponibile qui. In particolare è interessante verificare come fare per iniettare le dipendenze.

Ora, quando si creano delle Controller, come si può fare a iniettare la dipendenza?
Le Controller in Spring Boot vengono automaticamente istanziate (qualsiasi classe che abbia l'annotation @Controller). In questo caso, come risolvere la dipendenza?
Si può usare l'annotation @Autowired in abbinamento con @Qualifier.
La annotazione @Autowired indica che la variabile verrà automaticamente valorizzata, e con @Qualifier si può esplicitare il nome del bean a cui associarla.
Se si omette il qualifier Spring cerca un bean con nome uguale a quello della variabile: qualora non lo trovi, o non sia del tipo corretto, lancia un'eccezione.
Per una panoramica su @Autowired e @Qaulifier si veda qui.