giovedì 31 ottobre 2013

REST client con Spring: un lavoro di tutto riposo.

Ho recentemente avuto la necessità di fare un client REST con Spring.
Niente di più facile!
La classe RestTemplate ha tutto quello che serve all'impresa! Basta implementare qualche metodo e il gioco è fatto!
Ricordate, RestTemplate, e non sarà più come prima.

martedì 15 ottobre 2013

Registrare musica con pochi spiccioli (e con una qualità decente)

Da poco tempo mi sto "baloccando" con la musica e, come avviene naturalmente, sto guardando cosa offre il mercato per la registrazione.
Essendo un dilettante, con un budget molto limitato, è ovvio che la mia ricerca si sia orientata più sui software open o comunque a basso prezzo che non sui grandi nomi affermati del mercato. Insomma, ho cercato di vedere se esisteva l'equivalente in ambito musicale di OpenOffice o LibreOffice rispetto al più blasonato Microsoft Office.
Devo fare una premessa: il "ferro" e cioè i microfoni e tutto quanto possa servire a riprendere il suono (schede audio incluse) è ovvio che devono essere di buona qualità, e quindi sono gli stessi sia che sul pc sia installato ProTools che non altri software: insomma, non si può prescindere da quella spesa. Sul resto si può fare una qualche economia.
I software di cui ho approfondito la conoscenza sono alla fine tre, tutti in un modo o nell'altro a pagamento, ma senza spendere cifre esose.
Ci tengo a precisare che sono ancora un nabbo, questo articolo è un primo approfondimento sulla materia e tante cose potrebbero non essere esatte.

Audacity
Il software più semplice per la registrazione è senza dubbio Audacity, e direi che è anche quello a minor costo, visto che è gratuito. Per quello che l'ho usato direi che è perfetto, semplice da usare, buona qualità. L'unico neo che gli posso trovare è che, per questioni di licenza, non gestisce i driver ASIO. Se però si segue la procedura, si può compilare una versione che supporta ASIO. Non ho ancora provato a farlo, la voglia però c'è.

Reaper
Reaper è un software closed-source, che viene venduto con una doppia licenza, pur essendo il prodotto lo stesso. Per uso personale o se comunque non si generano entrate per più di 20.000$ all'anno il costo è di 60$, altrimenti il costo della licenza è di 225$. In entrambi i casi non mi sembra particolarmente oneroso.
Ci ho giocato un po', direi che di base ha tutto, ma una cosa mi ha lasciato sconcertato di primo acchito: manca il gain sulle tracce. Dopo un po' di ricerca, ho visto che basta aggiungere un effetto, ma il gain mi sembra qualcosa talmente di base che potevano mettercelo punto e basta.
Intelligente mi sembra invece l'idea di "armare" le tracce che dovranno essere registrate, evitando quindi possibili errori.
Per quanto riguarda gli effetti vengono supportati anche i VST, non però i LADSPA.

Ardour
Probabilmente al top tra i software a basso costo si pone Ardour, di recente passato alla versione 3. Permette di registrare, editare e mixare in maniera professionale. Funziona soltanto sotto Linux o Mac, mentre non è proprio prevista una versione per Windows: per quel sistema operativo il sito invita a vedere Mixbus. La licenza è un po' "strana". I codici sorgenti possono essere scaricati gratuitamente, volendo con una donazione opzionale. Il compilato invece prevede un piccolo pagamento, che viene richiesto per il supporto più che per il prodotto. Non ho provato a compilarlo da solo, ma ritengo che non sia un'operazione immediata. Se però lo si installa ad esempio da ubuntu, poiché si sono occupati loro della compilazione, non è necessario pagare neanche un centesimo.
Ardour sfutta Jack come server audio, (lo sviluppatore che ha inventato Jack ha poi sviluppato Ardour), permettendo di acquisire suoni non solo da schede audio e files, ma da altri applicativi che usano Jack, come ad esempio la drum machine Hydrogen.
Dal punto di vista dell'utilizzo direi che è immediato, c'è tutto quello che serve e fa il suo lavoro egregiamente. C'è solo una piccola attenzione da fare, che non riguarda il programma in se, ma il sistema operativo Linux che lo ospita: bisogna essere certi che la scheda audio che si usa sia supportata.
Anche qui esiste il concetto dell'armare la traccia, che permette di concentrarsi solo sulle tracce che si stanno registrando, e magari suonare per monitoraggio altre tracce precedentemente registrate.
Ci sono un sacco di plugin a disposizione, che permettono di gestire una grande effettistica.
Insomma, direi che siamo già su un prodotto professionale.

Mixbus
Basato su Ardour, ma versione 2, è Mixbus, creato dalla Harrison Consoles per montare sulle proprie console e venduto anche come prodotto separato. La licenza è closed, e costa circa 200$, ma ci sono anche promozioni possibili (io l'ho acquistato per 39$+IVA, cioè 39€)
Fondamentalmente ricalca tante cose di Ardour, automatizzando e migliorando alcuni aspetti. Per esempio ogni traccia ha un equalizzatore ed un compressore di default. Inoltre per ogni progetto vengono creati 8 "bus" di default, a cui poter inviare le tracce prima di passare dal master. I bus sono pensati per gestire gruppi di tracce, ed applicare su queste gli effetti e le regolazioni necessari (l'esempio è quello della batteria). Ogni bus ha poi una regolazione del tono, una della saturazione ed un compressore. Stesso dicasi per i 2 main.
Anche per Mixbus posso essere usati i plugin di Ardour, oppure comprarne altri (Harrison ne mette in vendita 3 o 4 pacchetti diversi)

Che dire dunque? Buon Mix!

martedì 1 ottobre 2013

NuGet: verifica delle dipendenze

Finora abbiamo visto come usare NuGet per usare, creare e pubblicare pacchetti per .Net.
Supponiamo ora di avere la necessità di controllare le dipendenze del nostro progetto, e dare l'allarme se pacchetti diversi non abbiano dipendenze comuni ma con differenti versioni.
NuGet mette a disposizione il pacchetto nuget.core, con una serie di API per operare a basso livello sulle dipendenze.
Per installarlo basta il comando

install-package nuget.core

Tra le 1.000 funzioni contenute in questo assembly (che ancora non ho scoperto a pieno) c'è appunto la gestione dei pacchetti.
In questo esempio, partendo da una directory locale, si mettono a video le dipendenze per ogni pacchetto ivi contenuto.
Se guardiamo l'output vediamo che il pacchetto MyCompany.Castle usa Castle.Core v2.5.2 Lo stesso pacchetto è usato da MyCompany.Versioning, fortunatamente con la stessa versione.
Una piccola modifica al programma ci può far individuare eventuali dipendenze con versioni diverse dello stesso pacchetto, ed aiutarci a non avere conflitti di dipendenza quando impacchettiamo i nostri software (o, come è capitato a me, avvisi a runtime di funzioni mancanti perché l'assembly più vecchio sovrascriveva il nuovo).