18 ottobre 2018

jQuantum: simulare gratis algoritmi quantistici!

Forse non molti sanno che i primi computer erano enormi, tanto che occupavano interi piani di un edificio, e svolgevano i loro compiti piuttosto lentamente. Grazie ai continui sviluppi nel campo della microelettronica hanno cominciato a ridurre le loro dimensioni aumentando allo stesso tempo le loro prestazioni. Questo ha fatto si che negli anni '80 fossero disponibili i primi personal computer.

Oggi hanno raggiunto capacità tali che possono stare tranquillamente in tasca: chi di noi non ha uno smartphone con sé?

Purtroppo però la capacità di miniaturizzazione dei circuiti elettronici sta arrivando al suo limite dal momento che si stanno di fatto raggiungendo dimensioni paragonabili a quelli degli atomi stessi, regno questo dove domina sovrana la meccanica quantistica.

Per superare le difficoltà legate a queste limitazioni si sta progettando una nuova generazione di computer che sfruttano per funzionare dei principi della meccanica quantistica.

Per approfondire come funziona un computer quantistico vi rimando ad un mio post dedicato.

Per il momento vi è sufficiente sapere che in un computer quantistico l'informazione viene codificata in quelli che vengono detti qubit (contrazione di quantum bit) che sfruttano una proprietà tipica della meccanica quantistica detta sovrapposizione degli stati. In pratica, a differenza dei bit, i qubit possono assumere non solo i valori 0 e 1 ma anche uno qualsiasi compreso tra di essi.

Per rendervi conto di quanto sia ritenuto importante lo sviluppo di questi nuovi computer basti sapere che colossi come IBM, Google, Intel vi hanno e vi stanno investendo ingenti risorse economiche e non solo. E' grazie a loro se oggi esistono delle prime realizzazioni di computer quantistici, anche se non sono ancora disponibili per il grande pubblico.

Queste prime versioni di computer quantistici sono in grado di gestire poche decine di qubit ma molto probabilmente potremo vederne di capaci di gestire alcune migliaia di qubit entro il prossimo decennio o poco più.

Ma ciò non vuol dire che nel frattempo non possiate già oggi avvicinarvi a questo fantastico mondo.

Infatti potete cominciare a capire come si programma un computer quantistico e testare i vostri algoritmi quantistici anche se non ne avete ancora a disposizione uno vero e proprio.

Per farlo vi basta usare un semplice software: jQuantum.

Si tratta di un programma open source scritto in java che in pratica è un simulatore di computer quantistico. Grazie ad esso potrete simulare l'implementazione di circuiti quantistici su un piccolo registro quantico fino a circa 15 qubit. Il suo obiettivo principale è quello di aiutare ad apprendere e comprendere i circuiti quantici che forse serviranno da elementi costitutivi per l'invenzione di nuovi algoritmi quantistici.

A differenza dei computer tradizionali i programmi per quelli quantistici si scrivono disegnando quelli che vengono appunto detti "circuiti quantistici". All'atto pratico si ha a disposizione una specie di spartito musicale in cui vengono posti, e collegati fra loro, i vari blocchi che rappresentato i vari tipi di compiti di base che è possibile eseguire e che vanno a costituire la logica del nostro algoritmo quantistico.

Sul sito di riferimento vengono messi a disposizione vari esempi di circuiti quantistici da usare come guida per crearne di propri.

Quindi se volete prepararvi sin da subito a prendere dimestichezza con i computer di nuova generazione ed essere pronti per quando saranno disponibili per tutti, allora jQuantum vi sarà di aiuto.

Se ti è piaciuto l'articolo, segui il feed per tenerti sempre aggiornato sui nuovi contenuti del blog!

9 ottobre 2018

I computer del futuro saranno quantistici!

Da quando hanno fatto la loro prima comparsa i computer sono diventati sempre più potenti e compatti, tanto che oggi è possibile averne sempre uno insieme a noi ovunque ci troviamo. Infatti chi di noi non ha almeno uno smartphone con sé?

Tutto questo è oggi possibile grazie al continuo raffinarsi delle tecnologie di miniaturizzazione dell'elettronica che costituisce questi fantastici dispositivi, diventati ormai indispensabili sia a livello personale che professionale.

Purtroppo però la capacità di miniaturizzazione dei circuiti elettronici sta arrivando al suo limite dal momento che si stanno di fatto raggiungendo dimensioni paragonabili a quelli degli atomi stessi, regno questo dove domina sovrana la meccanica quantistica.

Ma proprio dalla meccanica quantistica potrebbe arrivare la soluzione per oltrepassare questa barriera di miniaturizzazione ed allo stesso tempo far nascere una nuova generazione di computer: i cosiddetti computer quantistici.

Ma come funziona un computer quantistico?

La potenza di calcolo dei computer tradizionali, che usiamo quotidianamente, è legata alla capacità di elaborare un grandissimo numero di unità di codifica delle informazioni cioè i bit (contrazione di binary digit) che possono assumere uno tra i valori 0 e 1.

In un computer quantistico l'informazione invece viene codificata in quelli che vengono detti qubit (contrazione di quantum bit) che sfruttano una proprietà tipica della meccanica quantistica detta sovrapposizione degli stati. In pratica, a differenza dei bit, i qubit possono assumere non solo i valori 0 e 1 ma anche uno qualsiasi compreso tra di essi.

Per avere un'immagine mentale di come rappresentare questo comportamento immaginate una sfera trasparente ai cui poli ci siano i valori 0 e 1. Supponiamo che una freccia che parte dal centro della sfera indichi i valori che è possibile assumere da un bit o un qubit. La freccia del bit potrà puntare solo verso uno dei poli a seconda che assuma il valore 0 oppure 1; invece la freccia del qubit potrà puntare in qualsiasi direzione. Questa sfera è quella che viene detta sfera di Bloch.

L'altra proprietà legata alla meccanica quantistica che permette ai computer quantistici di avere elevate velocità di calcolo è quella chiamata entanglement: due particelle quantistiche possono condividere lo stesso stato quantistico (cioè il valore del qubit) anche se sono enormemente distanti fra loro.

Una spiegazione semplice, seppur dettagliata, di come funzionano i computer quantistici è riportata nel video seguente.


Mentre un computer tradizionale risolve un problema assegnato in maniera sequenziale, un computer quantistico invece può risolvere molteplici problemi contemporaneamente. Ed è questa sua capacità che potrebbe rivoluzionare interi settori.

Un primo campo in cui si potrebbe pensare di utilizzare i computer quantistici è per esempio quello farmaceutico. Essi potrebbero analizzare allo stesso tempo le interazioni tra diverse molecole, proteine o altri composti e aiutare a capire quali di queste possono migliorare una data condizione o curare una malattia.

In biologia potrebbero esser usati per analizzare rapidamente la sequenza genetica delle persone aprendo così la strada verso la medicina personalizzata.

Nel campo delle previsioni meteorologiche, potendo analizzare più dati contemporaneamente, daranno ai meteorologi delle previsioni molto più accurate aiutandoli, per esempio, ad individuare in anticipo e con maggiore precisione quando e dove colpirà un uragano.

Potrebbero essere usati nel campo della logistica e del controllo del traffico terrestre o aereo. Essendo in grado di calcolare rapidamente i percorsi ottimali che consentiranno di ridurre la congestione permetteranno di ottimizzare il controllo del traffico.

Un'area in cui i computer quantistici sembra possano esprimersi al meglio è quella dell'intelligenza artificiale. Proprio grazie al fatto che possono analizzare un quantitativo enorme di dati in maniera più efficiente dei computer tradizionali potrebbero aiutare l’intelligenza artificiale ad espandersi a molti più business.

Anche se ad oggi non sono disponibili per il grande pubblico dei computer quantistici la loro tecnologia è in continua evoluzione ed è molto probabile che potremo vederne di capaci di gestire alcune migliaia di qubit entro il prossimo decennio o poco più.

Se ti è piaciuto l'articolo, segui il feed per tenerti sempre aggiornato sui nuovi contenuti del blog!

25 settembre 2018

BaasBox: creare gratis servizi di backend per app web e mobili!

Chi si occupa di sviluppo di applicazioni, siano esse web o mobili, sa bene che l'architettura tipica è quella detta client-server. Questo vuol dire che c'è una parte di front-end, ossia di interfaccia, che è quella che tipicamente vede ed usa l'utente e poi c'è una parte di back-end che svolge il lavoro collegato alle azioni svolte dall'utente.

Tra le azioni tipiche del back-end ci sono per esempio l'autenticazione per accedere ad un servizio, l'invio di notifiche, il memorizzare dei dati e via discorrendo.

Di solito i servizi offerti da un back-end sono spesso disponibili online, a seguito di un’iscrizione (gratuita o meno). Basti pensare ad uno tanti servizi cloud. Realizzare un back-end "in proprio" con tutte le funzionalità necessarie può essere proibitivo.

Ma se non volete appoggiarvi ad uno dei vari servizi di back-end disponibili on-line, il mondo dell'open source ve ne mette a disposizione uno veramente completo e facile da usare: BaasBox.

Per far girare BaasBox sul vostro computer o sul vostro server vi occorre solo avere a disposizione una Java Virtual Machine (il jre per capirci, non il jdk) non inferiore alla versione 8.

Le principali funzionalità offerte da BaasBox sono le seguenti:

  • Gestione utenti
  • Content e File Management
  • Data storage
  • Friendship (in pratica un meccanismo di "amicizia" che si ispira al modello dei follower di Twitter)
  • Push notifications
  • Server Side Scripting (per personalizzare il funzionamento della piattaforma tramite script ad-hoc)

Il vantaggio principale di avere un BaaS (Back-end as a Service) installato su una propria macchina è di avere accesso illimitato alla piattaforma con l’unica limitazione delle capacità del vostro computer.

Se invece di metterlo su un server installate BaasBox sul computer su cui state sviluppando la vostra applicazione non dovrete dipendere dalla connessione ad Internet e potete perfino pianificare alcuni complessi scenari di integrazione automatizzati.

Dal momento che BaasBox per funzionare ha bisogno solo della presenza di una Java Virtual Machine potete usarlo su un computer con qualsiasi sistema operativo: windows, linux o mac.

Oltre alla piattaforma stessa vengono messi a disposizione degli sdk specifici per Android, iOS e JavaScript. Questi sdk servono per poter far interagire le applicazioni che stiamo sviluppando con BaasBox: i primi due servono per le applicazioni mobili mentre l'ultimo per quelle web.

Dal momento che tutte le funzionalità offerte da BaasBox sono esposte tramite delle HTTP REST API è molto semplice far parlare le nostre applicazioni con la piattaforma. Il che vuol dire ridurre di molto i tempi di sviluppo.

Certamente se paragoniamo BaasBox ad altre piattaforme commerciali la troveremo un po' cruda ed essenziale, ma le funzionalità che offre permettono di coprire il 99% dei requisiti di una tipica applicazione.

Quindi se vi occupate dello sviluppo di applicazioni web e/o mobili e volete avere a vostra disposizione un back-end con tutte le principali funzionalità richieste da una tipica applicazione e che sia semplice da utilizzare allora dovete assolutamente provare BaasBox.

Se ti è piaciuto l'articolo, segui il feed per tenerti sempre aggiornato sui nuovi contenuti del blog!

6 settembre 2018

Zabbix: monitorare gratis i propri dispositivi nella rete!

Negli ultimi anni il numero dei dispositivi connessi alla rete è cresciuto esponenzialmente variando sia in dimensioni che in tipologia. Che ci si trovi a gestire una rete aziendale, delle macchine aziendali oppure un impianto di energia fotovoltaica, è diventato quindi molto importante poter monitorare in modo continuativo i loro parametri prestazionali.

Di soluzioni commerciali che consentono di tenere costantemente sotto controllo apparati e dispositivi nella rete ce ne sono diversi ma il loro costo non è decisamente contenuto e sono soprattutto rivolte ad aziende di certe dimensioni. Ma dal mondo open source viene messa a disposizione una soluzione decisamente più economica (è gratis) e adatta a realtà di qualsiasi dimensione: Zabbix.

Si tratta di un software di monitoraggio che permette di controllare la disponibilità e le prestazioni di migliaia di dispositivi connessi in rete. E' possibile infatti raccogliere informazioni da qualsiasi dispositivo (server, macchina industriale, dispositivo IoT, etc.) andando così ad alimentare un prezioso storico di informazioni. Zabbix è dotato inoltre di potenti strumenti di visualizzazione dei dati (mappe, grafici, overview e dashboard) e di un'alta flessibilità nell'analizzare i dati per generare alert oppure eseguire azioni automatiche.

I controlli più semplici possono essere eseguiti senza installare nulla sui sistemi da controllare. Per disporre delle funzionalità più complete Zabbix richiede l'installazione di agenti e l'apertura di porte specifiche. Con l'installazione di un agente è possibile utilizzare due tipi di controlli: Active o Passive. I controlli di tipo Passive sono guidati dal server Zabbix. Quello di tipo Active viene utilizzato quando, ad esempio per ragioni di sicurezza, i sistemi da controllare non possono essere raggiunti dall'esterno e sono quindi loro a farsi carico della trasmissione dei dati.

Oltre agli agenti, Zabbix è in grado di effettuare il monitoraggio tramite molti altri protocolli, per esempio via SSH, SNMP o tramite ODBC verso i Database (appoggiandosi a Linux ODBC). E' anche in grado di acquisire metriche di monitoraggio tramite External Check.

Il fatto che Zabbix possa raccogliere dati da qualsiasi sorgente, elaborarli e visualizzarli secondo logiche personalizzate lo rende applicabile nei settori e nelle applicazioni più disparate.

Ad esempio lo staff di Zabbix stesso lo usa per monitoriare lo stato di avanzamento della traduzione della sua interfaccia utente nelle varie lingue. Ma può essere usato nel controllo industriale non solo per il monitoraggio dei parametri di funzionamento ma anche per l'attuazione di processi automatici a fronte di condizioni predeterminate. Oppure può essere impiegato per recuperare dalla rete, in tempo reale, i valori dei cambi o dei titoli di borsa su cui eseguire analisi finanziarie e studiare i trend storici. Sfruttando poi il suo motore di alert è possibile avvisare tempestivamente gli utenti al verificarsi di determinate condizioni favorevoli o sfavorevoli.

Quindi se anche voi avete dei dispositivi connessi in rete da gestire e tenere sempre sotto controllo e per farlo state cercando una soluzione che sia dai costi contenuti ma con prestazioni e funzionalità di livello enterprise, allora Zabbix è la soluzione che fa al caso vostro.

Se ti è piaciuto l'articolo, segui il feed per tenerti sempre aggiornato sui nuovi contenuti del blog!

10 luglio 2018

Shotcut: creare gratis video professionali!

Oggi è diventato molto facile girare dei video ovunque ci si trovi. Ciò grazie alla sempre crescente qualità delle videocamere presenti su smartphone ed alla compattezza di camere professionali.

La grande quantità di video pubblicati su Youtube, Facebook o altri social dimostra quanto ormai sia diffusa l'abitudine di riprendere quanto succede intorno a noi: concerti, flash mob, incidenti, compleanni e tanto altro ancora.

Con la crescente semplicità con cui è possibile riprendere il mondo intorno a noi sta diventando importante per questi neo-registi poter editare i loro video per dargli un tocco ancora più professionale aggiungendovi musiche, effetti e combinandoli tra di loro.

Di solito i software per il video editing ad alto livello sono tendenzialmente professionali e dal costo elevato. Ma non disperate, oggi non occorre più spendere cifre astronomiche per poter elaborare i propri video col nostro pc. Il mondo dell'open source ha reso alla portata di tutti anche questo genere di attività. Come? Grazie ad un software molto simile a quello usato da veri professionisti: Shotcut.

Si tratta di un programma gratuito dedicato alla modifica e all’encoding dei file video che mette a disposizione gli strumenti indispensabili per effettuare montaggi video. E' disponibile per tutti i principali sistemi operativi sia in versione 32-bit che 64-bit. In questo modo l'utilizzo del programma è praticamente lo stesso su tutti i pc.

Grazie alla sua interfaccia grafica molto semplice ed intuitiva anche gli utenti meno esperti avranno modo di effettuare bellissimi lavori. Inoltre è disponibile in tante lingue tra cui anche l'italiano.

Una delle principali caratteristiche di Shotcut è che supporta l'editing video nativo, cioè con la possibilità di intervenire direttamente sugli originali. Grazie all'impiego di FFmpeg, Shotcut può gestire un vastissimo numero di formati audio/video e di codec.

Mette a disposizione tutti gli strumenti essenziali all'editing come taglia, copia, modifica dei colori, filtri, bitrate, anteprima delle modifiche, ecc.

Una volta completate le modifiche e si è soddisfatti del risultato si può salvare il lavoro sfruttando le varie estensioni disponibili oppure effettuare lo streaming video online nei formati più comuni come HTTP, HLS, RTMP, RTSP, MMS e UDP.

Naturalmente la fase di elaborazione (rendering) può durare anche diverso tempo, dipende tutto dalle dimensioni delle clip video, dalle dimensioni del progetto e dalle prestazioni del computer.

Per chi fosse a digiuno delle nozioni di video editing e con i concetti di timeline, tracce video ed audio, anteprima e simili, sul sito di Shotcut sono disponibili diversi tutorial per consentire anche ai meno esperti di realizzare video molto accattivanti.

Quindi se anche voi volete realizzare dei video dall'aspetto professionale e state cercando delle alternative economiche a soluzioni commerciali, allora Shotcut è senza dubbio un'ottima scelta.

Se ti è piaciuto l'articolo, segui il feed per tenerti sempre aggiornato sui nuovi contenuti del blog!

19 giugno 2018

PWGen: generare gratis password inattaccabili!

Quando ci si iscrive a social network, si accede a caselle di posta elettronica, si sottoscrivono dei servizi online o si accede al proprio computer è necessario fornire tra le credenziali anche una password.

Ma per evitare che le password che utilizziamo possano essere scoperte da malintenzionati occorre inventarne una che non sia facilmente scopribile. Quindi meglio evitare date di nascita o di ricorrenze particolari, nomi di figli o parenti e amici o il nome del nostro amico a quattro zampe. E soprattutto più è lunga e meglio è.

Questo esercizio di creatività non è banale da fare, anche se importantissimo, e non sarebbe male se ci fosse un qualche software che ci aiuti a creare delle password robuste e non facilmente individuabili.

Ancora una volta ci viene in aiuto il mondo open source con un generatore di password: PWGen.

Grazie a questo semplice software gratuito e che non richiede di essere installato, potremo creare delle chiavi di sicurezza in base ad alcuni parametri preimpostati. Potremo ad esempio creare delle password composte da numeri, lettere e caratteri speciali specificando anche quanto vogliamo che sia lunga.

Ma con PWGen potremo anche creare delle password che siano pronunciabili (quindi anche più facili da ricordare) oppure basate su uno specifico pattern. Inoltre si ha la possibilità di cifrare del testo o di creare random data files che possono essere utilizzati come file chiave per applicazioni di crittografia.

Il software è disponibile solo per Windows ma è compatibile con tutte le versioni a partire addirittura da Windows 95 ed è multilingua, tra cui l'italiano. Non richiedendo installazione potremo metterlo su una chiavetta USB così da averlo a portata di mano ovunque ci troviamo.

Insomma se avete necessità di creare delle password robuste e magari (come sarebbe buona norma) cambiarle di frequente e cercate un software gratuito e semplice da usare allora dovete provare PWGen.

Se ti è piaciuto l'articolo, segui il feed per tenerti sempre aggiornato sui nuovi contenuti del blog!

4 giugno 2018

Contact Contacts: gestire gratis ed in sicurezza i propri contatti!

Il 25 Maggio scorso è entrato ufficialmente in vigore il GDPR, ossia il nuovo regolamento europeo dedicato alla protezione dei dati personali. In pratica con l'introduzione del GDPR tutti i titolari di partita IVA che raccolgono dati personali, ad esempio quelli dei clienti, sono anche incaricati di mettere in atto tutta una serie di azioni volte a metterli al sicuro. Il mancato rispetto delle norme previste da questo nuovo regolamento comporta delle sanzioni molto salate.

Mentre per le imprese un po' più strutturate adottare delle misure di sicurezza può essere relativamente facile, questo compito può diventare molto difficile per un libero professionista quale può essere un barbiere, un avvocato o un consulente. Infatti, mentre prima usare un foglio elettronico poteva andare bene oggi non è più così.

Questo però non vuol dire che il libero professionista deve necessariamente dotarsi di strumenti costosi e anche difficili da usare, magari pensati guardando ad un utilizzo da parte di imprese più strutturate.

Ecco perché voglio presentarvi uno strumento che vi permetterà di archiviare e proteggere tutte le informazioni dei vostri contatti e che allo stesso tempo sia semplice da usare e gratuito. Scommetto che volete sapere come si chiama: Contact Contacts.

Si tratta di un programma freeware (quindi gratuito da usare) che non richiede alcuna installazione. Il che vuol dire che non va toccare il registro di Windows e che può essere messo anche su una chiavetta USB per averlo sempre a disposizione. Benché sia nato per Windows può comunque essere usato su Linux e Mac a patto di farlo girare dentro Wine.

Ma cosa fa questo programma? In pratica vi permette di raccogliere in maniera centralizzata tutte le informazioni dei vostri contatti compilando una semplice scheda con tutti i campi pre-impostati (nome, cognome, email, indirizzo, telefono, etc.). Naturalmente in qualsiasi momento potrete modificare e/o cancellare i dati di un contatto in qualsiasi momento.

Se facesse solo questo non ci sarebbe grande differenza rispetto all'uso di un foglio elettronico. Infatti c'è di più!

Anzi tutto potete assegnare ciascun contatto ad una o più categorie che potete creare e gestire in molto semplice. Ad esempio potete creare una categoria in cui inserire tutti i contatti che vi hanno dato il consenso a ricevere comunicazioni di tipo marketing, come previsto dal GDPR. Non ci sono limiti al numero di categorie che potete creare.

Ma la funzionalità veramente utile e interessante ai sensi del GDPR è la seguente: per poter accedere al programma potete impostare una password. Impostando questa password l'intero archivio verrà criptato, ossia reso in un formato illeggibile da qualsiasi persona o programma esterno che non conosca questa password. Attenzione a non scordarla altrimenti anche voi non potrete più accedere ai dati. Questo perché la password non viene memorizzata all'interno del programma stesso.

Altra funzionalità molto comoda è che potete esportare i dati di un singolo contatto o di un gruppo di contatti con un semplice clic ed in un formato che permette di importarli poi facilmente in altri programmi. Anche questa funzionalità permette di rispettare un'altra indicazione imposta dal GDPR: fornire, su sua richiesta, i dati di un contatto in un formato portabile su altre piattaforme.

Infine è da segnalare che Contact Contacts vi permette di contattare i vostri contatti via email oppure tramite SMS, basta impostare opportunamente il programma. Magari questa è una funzionalità che può non interessarvi ma può comunque essere utile sapere che c'è.

Quindi se siete liberi professionisti e cercate uno strumento che vi permetta di archiviare e gestire i dati dei vostri contatti secondo quanto previsto dal GDPR e che sia anche gratuito e semplice da usare, allora Contact Contacts è la soluzione giusta.

Se ti è piaciuto l'articolo, segui il feed per tenerti sempre aggiornato sui nuovi contenuti del blog!